资源描述:
《数值积分matlab程序.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第二章数值积分2.1.复化Simpson公式功能:利用复化Simpson公式计算被积函数f(x)在给定区间上的积分值-----------------------------------------functionS=FSimpson(f,a,b,n)%f:被积函数句柄%a,b:积分区间的两个端点%n:子区间个数%S:用复化Simpson法求得的积分值h=(b-a)/n;fa=feval(f,a);fb=feval(f,b);S=fa+fb;x=a;fori=1:Nx=x+h/2;fx=feval(f,x);S=S+4*f
2、x;x=x+h/2;fx=feval(f,x);S=S+2*fx;endS=h*S/6;----------------------------------------------------------------------------------------------------------------------附:函数值为向量形式的simpson求积法functionI=simpson_h(f,h)%调用格式I=simpson(f,h)%f为一向量,指定已知节点处的函数值%h为步长n=length(f)-1;i
3、fn==1fprintf('Datahasonlyoneinterval'),return;end;ifn==2I=(h/3)*(f(1)+4*f(2)+f(3));return;end;ifn==3I=(3*h/8)*(f(1)+3*f(2)+3*f(3)+f(4));return;end;I=0;if2*floor(n)~=n%floorisafunctionroundtowards-infI=3*(h/8)*(f(n-2)+3*f(n-1)+3*f(n)+f(n+1));m=n-3;elsem=n;end;I=I+(
4、h/3)*(f(1)+4*sum(f(2:2:m))+f(m+1));ifm>2I=I+(h/3)*2*sum(f(3:2:m));end;----------------------------------------------------------------------------------------------------------------------附:函数值为向量形式的复合simpson求积法functionI=simpson_n(fname,a,b,n)%调用格式:I=simpson_n('fn
5、ame',a,b,n)%其中a,b为积分区间两个端点,n为子区间数目h=(b-a)/n;x=a+(0:n)*h;f=feval(fname,x);I=simpson_h(f,h)%调用上面编译好的simpson_h函数----------------------------------------------------------------------------------------------------------------------2.2.变步长梯形法功能:利用变步长梯形法计算函数f(x)在给定区间的积分
6、值-----------------------------------------------------------function[T,n]=bbct(f,a,b,eps)%f:被积函数句柄%a,b:积分区间的两个端点%eps:精度%n:二分区间的次数%T:用变步长梯形法求得的积分值h=b-a;fa=feval(f,a);fb=feval(f,b);T1=h*(fa+fb)/2;T2=T1/2+h*feval(f,a+h/2)/2;n=1;%按变步长梯形法求积分值whileabs(T2-T1)>=epsh=h/2;T
7、1=T2;S=0;x=x+h/2;whilex8、--------------------------------------------------------附:函数值为向量形式的复合梯形求积法functionI=trapez_n(fname,a,b,n)%调用格式trapez_n('fname',a,b,n)%a,b为区间的两个端点,n为子区间个