资源描述:
《积分方程的数值计算方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验七积分方程的数值计算方法实验七积分方程的数值计算方法1.实验描述计算定积分的近似值,起始容差1.用组合梯形公式M=10计算。2.用组合辛普生公式M=5计算。3.用龙贝格积分计算。4.用自适应积分方法计算。2.实验内容1.用组合梯形公式M=10计算。YN子区间宽度输入区间开始结束图1.组合梯形算法流程图实验七积分方程的数值计算方法将积分区间划分为宽度为的M个子区间,再将各区间的面积求和即可得到近似面积。2.用组合辛普生公式M=5计算。输出SYN结束子区间宽度输入区间开始图2.组合辛普森算法流程图将积分区间划分为宽度为的2M个子区间,再由辛普森公式将各
2、区间的面积求和即可得到近似面积。3.用龙贝格积分计算。实验七积分方程的数值计算方法结束开始输出面积近似值输入区间图3.龙贝格积分算法流程图①.由递归梯形公式序列得到递归辛普森序列序列。②.由递归辛普森序列序列得到递归布尔公式序列。实验七积分方程的数值计算方法③.通过理查森改进提高误差项的阶数。4.用自适应积分方法计算结束将辛普森公式中的区间划分为两个相等的子区间开始图4.自适应积分算法流程图在辛普森公式基础上,将区间再进行划分,即为自适应积分。3.实验结果及分析真实值S=0.199714662161441.用组合梯形公式M=10计算。面积近似值S1=0
3、.16965032127666。误差error1=0.03006434088479。2.用组合辛普森公式M=5计算面积近似值S2=0.19966805529718。误差error2=。3.用龙贝格积分计算。表1.龙贝格积分表J梯形公式辛普森公式布尔公式实验七积分方程的数值计算方法0-0.00199504693265000001-0.02186444123413-0.02848757266796000020.016117544001270.028778205746400.0325959243073600030.152657188447420.198170
4、403262800.209463216430560.212270633765850040.188002801390540.199784672371580.199892290312170.199740370849970.19969123256403050.196791377983860.199720903514970.199716652257860.199713864352240.199713760405190.19971378242654面积近似值S3=0.19971378242654。误差error3=。4.用自适应积分方法计算面积近似值S4=0.1
5、9971391278871。误差error4=。4.结论自适应计分方法和龙贝格积分法都可以得到较高的精确度。组合梯形和组合辛普森可以增大M值,得到较高的精确度。附件(代码)1.f=inline('sin(4*x)*exp(-2*x)','x');%定义函数A=0;t=0;S=0;fork=1:9t=k*0.3;A=A+0.3*feval(f,t);endS=A+0.15*(feval(f,0)+feval(f,3))%组合梯形的近似值RS=int(sin(4*x)*exp(-2*x),0,3)%真实值error=RS-S%真实值与近似值的误差2.f=i
6、nline('sin(4*x)*exp(-2*x)','x');%定义函数S=0;X=zeros(1,11);h=0.3;forj=1:11X(j)=(j-1)*h;endfork=1:5S=S+h/3*(feval(f,X(2*k-1))+4*feval(f,X(2*k))+feval(f,X(2*k+1)));endRS=int(sin(4*x)*exp(-2*x),0,3);%真实值实验七积分方程的数值计算方法Serror=RS-S%真实值与近似值的误差3.function[R,quad,err,h]=romber(f,a,b,n,tol)%IN
7、PUT-fistheintergrandinputasastring'f'%-aandbareupperandlowerlimitsofinteration%-nisthemaxiumnumberofrowsinthetable%-tolisthetolerance%OUTPT-RistheRombergtable%-quadisthequadraturevalue%-erristheerrorestimate%-histhesmalleststepsizeuesdM=1;h=b-a;err=1;J=0;R=zeros(4,4);R(1,1)=h*(f
8、eval(f,a)+feval(f,b))/2;while((err>tol)&(J9、