实验二数值方法计算积分
学号:姓名:指导教师:实验目的
1、了解并掌握matlab软件的基本编程、操作方法;
2、初步了解matlab中的部分函数,熟悉循环语句的使用;
3、通过上机进一步领悟用复合梯形、复合辛普森公式,以及用龙贝格求积
方法计算积分的原理。
一、用不同数值方法计算积分 10x ln xdx=-94.
(1)取不同的步长h.分别用复合梯形及辛普森求积计算积分,给出误差中关
于h的函数,并与积分精确值比较两个公式的精度,是否存在一个最小
的h,使得精度不能再被改善?
(2)用龙贝格求积计算完成问题(1)。
二、实现实验
1、流程图:
下图是龙贝格算法框图:
2、 算法:
(1) 复合梯形公式:Tn=++)()([2b f a f h
2∑-=1
1
)](n k xk f ;
(2) 复合辛普森公式:Sn=6h
[f(a)+f(b)+2∑-=11)](n k xk f +4∑-=+1
)2/1(n k x f ];
以上两种算法都是将a-b 之间分成多个小区间(n ),则h=(b-a)/n,x k =a+kh, x k+1/2=a+(k+1/2)h,利用梯形求积根据两公式便可。
(3) 龙贝格算法:在指定区间内将步长依次二分的过程中运用如下公式
1、Sn=
34T2n-31
Tn 2、 Cn=1516S2n-151
Sn
3、 Rn=6364C2n-631
Cn 从而实现算法。
3、 程序设计
(1)、复合梯形法:
function t=natrapz(fname,a,b,n) h=(b-a)/n;
fa=feval(fname,a);fb=feval(fname,b);f=feval(fname,a+h:h:b-h+0.
001*h);
t=h*(0.5*(fa+fb)+sum(f));
(2)、复合辛普森法:
function t=natrapz(fname,a,b,n)
h=(b-a)/n;
fa=feval(fname,a);fb=feval(fname,b);f1=feval(fname,a+h:h:b-h+0
.001*h);
f2=feval(fname,a+h/2:h:b-h+0.001*h); t=h/6*(fa+fb+2*sum(f1)+4*sum(f2));
(3)龙贝格法:
function [I,step]=Roberg(f,a,b,eps)
if(nargin==3) eps=1.0e-4;
end; M=1; tol=10; k=0;
T=zeros(1,1); h=b-a;
T(1,1)=(h/2)*(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),
b));
while tol>eps
k=k+1;
h=h/2;
Q=0;
for i=1:M
x=a+h*(2*i-1);
Q=Q+subs(sym(f),findsym(sym(f)),x);
end
T(k+1,1)=T(k,1)/2+h*Q;
M=2*M;
for j=1:k
T(k+1,j+1)=T(k+1,j)+(T(k+1,j)-T(k,j))/(4^j-1); end
tol=abs(T(k+1,j+1)-T(k,j));
end
I=T(k+1,k+1);
step=k;
4、实验结果;(1)复合梯形法
(2)、复合辛普森法结果:
(3)龙贝格法结果
四.总结由结果(1)、(2)可知复合辛普森法求积分精度明显比复合梯形法求积的精度要高,且当步长取不同值时即n 越大、h 越小时,积分精度越高。
实验结果说明不存在一个最小的h,使得精度不能再被改善。
又两个相应的关于h 的误
差(余项)Rn(f)=-12a b -h 2f ’’(η);Rn(f)=-180
a
b -(h/2)4f (4)( η),其中η属于
a 到
b 。
可知h 愈小,余项愈小,从而积分精度越高。
(注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。
可复制、编制,期待你的好评与关注)。