matlab计算方法实验报告5(数值积分)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算方法实验报告(5)

学生姓名杨贤邦学号指导教师吴明芬实验时间2014.4.16地点综合实验大楼203

实验题目数值积分方法

实验目的●利用复化梯形、辛普森公式和龙贝格数值积分公式计算定积分的

近似植。

实验内容●梯形、辛普森、柯特斯法及其Matlab实现;

●变步长的梯形、辛普森、柯特斯法及其Matlab实现。

●题目由同学从学习材料中任意选两题

算法分析梯形:function y=jifeng_tixing(a,b,n,fun)

fa=feval(fun,a);

fb=feval(fun,b);

s=0;

h=(b-a)/n;

for k=1:n-1

xk=a+k*h;

s=feval(fun,xk)+s;

end

y=(h/2)*(fa+fb+2*s);

辛普生:function y=jifeng_xingpu(a,b,n,fun) fa=feval(fun,a);

fb=feval(fun,b);

h=(b-a)/n;

s=0;

s2=feval(fun,a+0.5*h);

for k=1:n-1

xk=a+k*h;

s=feval(fun,xk)+s;

s2=feval(fun,xk+(h/2))+s2;

end

与源程序y=(h/6)*(fa+fb+2*s+4*s2);

龙贝格:function r2=jifeng_long(fun,a,b,e) h=b-a;

t1=(h/2)*(feval(fun,a)+feval(fun,b));

k=1;

r1=10;

r2=0;

c2=0;

while abs(r2-r1)>e;

s=0;

x=a+h/2;

while x

s=s+feval(fun,x);x=x+h;

end

t2=t1/2+h*s/2;

s2=t2+(1/3)*(t2-t1);

if k==1

k=k+1;h=h/2;

t1=t2;s1=s2;

elseif k==2

c1=c2;

c2=s2+(1/15)*(s2-s1);

k=k+1;h=h/2;

t1=t2;s1=s2;

elseif k>=3

r1=r2;

c2=s2+(1/15)*(s2-s1);

r2=c2+(1/63)*(c2-c1);

k=k+1;h=h/2;

t1=t2;s1=s2;

c1=c2;

end

end

实验结果与分析函数xe x在区间[1,2]对x进行积分求值,要求误差为0.5*10-7,并与精确值进行比较。(精确值:7.38905609893065)

梯形:>>jifeng_tixing(1,2,7019,fun)

ans=7.38905612723022

辛普生:>>jifeng_xingpu(1,2,24,fun)

ans=7.38905612621471

龙贝格:>>jifeng_long(fun,1,2,10e-7)

ans=7.38905609893079

有上述结果易知,在同样0.5*10-7精度下,梯形复合公式需要7019等分,而辛普生只需要24等分即可达到要求的精度,而龙贝格算法的精度则更高

其它按照书本龙贝格外推公式写龙贝格算法时,发现了一个问题,就是龙贝格外推算法假设无限外推下去,外推出来的结果并不是无限接近真实值的,而是当接近真实值的小数点后17位左右时,将不会再逼近真实值,而总体数值是在此处徘徊。不知道是我写的算法出现了问题,还是龙贝格外推的极限精度就是10-17。

算法分析与源程序(50%),实验结果及分析(30%),实验报告(20%)

指导老师签名:

相关文档
最新文档