龙贝格积分
来源:互联网 发布:mac怎么下载ps破解版 编辑:程序博客网 时间:2024/05/13 10:53
算法原理和程序框图
龙贝格积分法是在复化梯形求积公式、复化辛普森求积公式和复化科茨求积公式关系的基础上,构造出的一种精度更高的数值积分方法。龙贝格积分为:
(1)
其截断误差为,已具有很高精度。龙贝格积分法是将区间[a, b]逐次分半进行计算。计算顺序为:计算T1,逐次计算T2k+1逐次计算S2k,C2k和R2k直到满足精度为止。因此,对已知函数f(x)在区间[a, b]上的龙贝格积分法的计算程序如下:
3.2程序使用说明
被积函数f(x),积分区间[a,b]和误差界都可根据需要在程序中直接修改,最大递推次数也可自己设定。给定好初值后直接运行就好。
3.3计算实例结果
选取第 211 页 计算实习 6.2为例。通过设置断点逐个求解。被积函数为f(x)=1/(1+x)时,递推到5次后满足要求精度,所求积分I=0.6931472;被积函数为f(x)=ln(1+x)/(1+x^2)时,递推到4次后满足要求精度,所求积分I=0.2721983;被积函数为f(x)=ln(1+x)/x时,递推到5次后满足要求精度,所求积分I=0.8224670;被积函数为f(x)=sin(x)/x时,递推到4次后满足要求精度,所求积分I=0.9460831。
% ** 文件名:Romberg.m% % ** 创建人:**% % ** 日 期:2016.12.14% % ** 描 述:Romberg积分法计算定积分% % ** 函数:第 211 页 计算实习 6.2 % % ** 参考教材:《数值分析》李乃成,梅立泉,科学出版社%%%clear;clc% %被积函数为f(x)=1/(1+x);积分区间为[0,1]; 保留7位有效数字%误差界eps=10^(-8)b=1;a=0;h=b-a;eps=10^(-8);kmax=30;%最大递推次数T1=h/2*(1/(a+1)+1/(b+1));S1=0;C1=0;C2=0;R1=0;R2=0;for k=1:kmax h=(b-a)/2^k; i=1:2^(k-1); x=a+(2*i-1)*h; fx=sum(1./(1+x)); T2=T1/2+fx*h ; S2=T2+(T2-T1)/3; if(k<3) if k==2 C2=S2+(S2-S1)/15; end else C2=S2+(S2-S1)/15; R2=C2+(C2-C1)/63; if abs(R2-R1)<eps R2 R1 break; end R1=R2; end T1=T2;S1=S2;C1=C2;endfprintf('递推到%d次后满足要求精度\n',k);fprintf('所求积分I=%8.7f\n',R2);% 递推到5次后满足要求精度% 所求积分I=0.6931472%%clear;clc% %被积函数为f(x)=ln(1+x)/(1+x^2);积分区间为[0,1]; 保留7位有效数字%误差界eps=10^(-8)b=1;a=0;h=b-a;eps=10^(-8);kmax=10;%最大递推次数T1=h/2*(log(1+a)/(1+a^2)+log(1+b)/(1+b^2));S1=0;C1=0;C2=0;R1=0;R2=0;for k=1:kmax h=(b-a)/2^k; i=1:2^(k-1); x=a+(2*i-1)*h; fx=sum(log(1+x)./(1+x.^2)); T2=T1/2+fx*h ; S2=T2+(T2-T1)/3; if(k<3) if k==2 C2=S2+(S2-S1)/15; end else C2=S2+(S2-S1)/15; R2=C2+(C2-C1)/63; if abs(R2-R1)<eps R2 R1 break; end R1=R2; end T1=T2;S1=S2;C1=C2;endfprintf('递推到%d次后满足要求精度\n',k);fprintf('所求积分I=%8.7f\n',R2);% 递推到4次后满足要求精度% 所求积分I=0.2721983%%clear;clc% %被积函数为f(x)=ln(1+x)/x;积分区间为[0,1]; 保留7位有效数字%误差界eps=10^(-8)b=1;a=0;h=b-a;eps=10^(-8);kmax=10;%最大递推次数T1=h/2*(1+(log(1+b))/b);%因为a不能取到0,在这里吧ln(1+x)/x在0处的极限值1放到里面S1=0;C1=0;C2=0;R1=0;R2=0;for k=1:kmax h=(b-a)/2^k; i=1:2^(k-1); x=a+(2*i-1)*h; fx=sum(log(1+x)./x); T2=T1/2+fx*h ; S2=T2+(T2-T1)/3; if(k<3) if k==2 C2=S2+(S2-S1)/15; end else C2=S2+(S2-S1)/15; R2=C2+(C2-C1)/63; if abs(R2-R1)<eps R2 R1 break; end R1=R2; end T1=T2;S1=S2;C1=C2;endfprintf('递推到%d次后满足要求精度\n',k);fprintf('所求积分I=%8.7f\n',R2);% % 递推到5次后满足要求精度% 所求积分I=0.8224670%%clear;clc% %被积函数为f(x)=sin(x)/x;积分区间为[0,pi/2]; 保留7位有效数字%误差界eps=10^(-8)b=1;a=0;h=b-a;eps=10^(-8);kmax=10;%最大递推次数T1=h/2*(1+sin(b)/b);%因为a不能取到0,在这里吧sin(x)/x在0处的极限值1放到里面S1=0;C1=0;C2=0;R1=0;R2=0;for k=1:kmax h=(b-a)/2^k; i=1:2^(k-1); x=a+(2*i-1)*h; fx=sum(sin(x)./x); T2=T1/2+fx*h ; S2=T2+(T2-T1)/3; if(k<3) if k==2 C2=S2+(S2-S1)/15; end else C2=S2+(S2-S1)/15; R2=C2+(C2-C1)/63; if abs(R2-R1)<eps R2 R1 break; end R1=R2; end T1=T2;S1=S2;C1=C2;endfprintf('递推到%d次后满足要求精度\n',k);fprintf('所求积分I=%8.7f\n',R2);% 递推到4次后满足要求精度% 所求积分I=0.9460831
1 0
- 龙贝格积分
- 龙贝格积分
- 龙贝格积分
- 数值积分-龙贝格(Romberg)积分
- 数值积分之龙贝格积分
- 龙贝格求解数值积分
- 积分
- 积分
- 积分
- 积分
- 积分
- 积分
- 积分
- 积分
- 积分?
- 积分
- 积分
- 积分?
- IBM cognos项目进程实录
- C++ 牛客网做题笔记【400题总结】
- L1-030. 一帮一--pat-Java-天梯赛
- max-points-on-a-line(求最多点数的一条线)
- 【封装】异步HttpURLConnection网络访问
- 龙贝格积分
- LuCI架构原理(一)
- react环境搭建(基于dva)
- 启动Tomcat出现“Bad version number in .class file (unable to load class XXX)”解决
- django_auth.authenticate() 返回none
- 平常水题
- Android屏幕尺寸单位/屏幕适配
- Tar Jar War Ear
- 计算机编码基础