matlab计算方法实验报告5(数值积分)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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%)
指导老师签名: