数值积分及其MATLAB实现Word文档下载推荐.doc
《数值积分及其MATLAB实现Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《数值积分及其MATLAB实现Word文档下载推荐.doc(41页珍藏版)》请在冰豆网上搜索。
![数值积分及其MATLAB实现Word文档下载推荐.doc](https://file1.bdocx.com/fileroot1/2022-10/19/34fc79a3-6fa9-44c2-8b67-60101605f861/34fc79a3-6fa9-44c2-8b67-60101605f8611.gif)
title('
y=sinx,y=cosx和x=-0.5及x=1.5所围成的平面区域的图形'
)
运行后屏幕显示图形.
求平面区域D的面积S.输入计算面积S的程序
symsx
f1=cos(x)-sin(x);
f2=-f1;
S1=int(f1,x,-0.5,pi/4);
S2=int(f2,x,pi/4,1.5);
S=S1+S2,Sj=double(S)
运行后屏幕显示计算面积的值S及其近似值Sj如下
S=
2*2^(1/2)+sin(1/2)-cos(1/2)-sin(3/2)-cos(3/2)
Sj=
1.36203791318826
9.1.2变限积分的MATLAB符号计算
例9.1.7已知ed,求.
解输入程序:
symsxt
F1=int(exp(t)*sin(2+sqrt(t^3)),x,0);
F2=int(exp(t)*sin(2+sqrt(t^3)),0,x^2);
Fi=F1+F2;
dF=diff(Fi)
运行后屏幕显示计算变限积分的导数.
9.2数值积分的思想及其MATLAB程序
9.2.3矩形公式的MATLAB程序
(一)函数sum的调用格式
调用格式一:
sum(X)
调用格式二:
sum(X,DIM)
例9.2.2用MATLAB和矩形公式(9.3)、(9.4)计算ed,并与精确值比较.
解将分成20等份,步长为,输入程序
h=pi/40;
x=0:
h:
pi/2;
y=exp(sin(x));
z1=sum(y(1:
20))*h,z2=sum(y(2:
21))*h,
运行后屏幕显示矩形公式计算结果分别如下
z1=z2=
3.03643.1713
求定积分的精确值,输入程序
F=int(exp(sin(x)),x,0,pi/2),Fs=double(F),
wz1=abs(Fs-z1),wz2=abs(Fs-z2)
运行后屏幕显示定积分的精确值Fs和与用矩形公式(9.3),(9.4)计算结果的绝对误差wz1、wz2.
(二)函数cumsum的调用格式
cumsum(X)
调用格式二:
cumsum(X,DIM)
例9.2.4用MATLAB的函数sum和cumsum及矩形公式(9.3)、(9.4)计算ed,并与精确值比较.
解将分成20等份,步长为,输入程序如下(注意sum和cumsum的用法)
y=exp(-x).*sin(x);
z1=sum(y(1:
20))*h,z2=sum(y(2:
z=cumsum(y);
z11=z(20)*h,z12=(z(21)-z
(1))*h,
运行后屏幕显示计算结果分别如下
z1=z2=z11=z12=
0.38730.40360.38730.4036
F=int(exp(-x)*sin(x),x,0,pi/2)
Fs=double(F),wz1=abs(Fs-z1),wz2=abs(Fs-z2)
运行后屏幕显示定积分的精确值Fs和用矩形公式(9.3),(9.4)计算结果的绝对误差wz1、wz2分别如下
F=Fs=
1/2*(-1+exp(pi)^(1/2))/exp(pi)^(1/2)0.3961
wz1=wz2=
0.00880.0075
9.3插值型数值积分及其MATLAB程序
9.3.2梯形公式的MATLAB程序
(一)根据梯形公式和估计误差公式自己编写MATLAB程序计算定积分
例9.3.2分别取,用梯形公式计算定积分ed,并与精确值比较.然后观察对计算结果的有效数字和绝对误差的影响.
解编写并输入如下程序
h=pi/8000;
a=0;
b=pi/2;
x=a:
b;
n=length(x),y=exp(sin(x));
z1=(y
(1)+y(n))*h/2;
z2=sum(y(2:
n-1))*h;
z8000=z1+z2,
symst
f=exp(sin(t));
intf=int(f,t,a,b),Fs=double(intf),
Juewucha8000=abs(z8000-Fs)
运行后屏幕显示取时,积分区间上等距节点的个数,用梯形公式计算定积分的值z8000和精确值intf的近似值Fs及其绝对误差Juewucha8000.
(二)用函数trapz计算定积分
Z=trapz(Y)
Z=trapz(X,Y)
调用格式三:
Z=trapz(X,Y,DIM)或trapz(Y,DIM)
(三)用函数cumtrapz计算定积分
Z=cumtrapz(Y)
Z=cumtrapz(X,Y)
Z=cumtrapz(X,Y,DIM)或cumtrapz(Y,DIM)
例9.3.4用MATLAB的函数trapz和cumtrapz分别计算ed,精确到,并与矩形公式(9.3),(9.4)比较.
解将分成20等份,步长为,输入程序如下(注意trapz(y)是单位步长,trapz(y)*h=trapz(x,y)):
21))*h,z=(z1+z2)/2
z3=trapz(y)*h,z3h=trapz(x,y),z3c=cumtrapz(y)*h,
运行后屏幕显示用矩形公式(9.3),(9.4)计算结果z1、z2和二者的平均数z、函数trapz和cumtrapz分别计算结果z3、z3c.
(四)梯形数值积分的MATLAB主程序
梯形数值积分的MATLAB主程序
functionT=rctrap(fun,a,b,m)
n=1;
h=b-a;
T=zeros(1,m+1);
x=a;
T
(1)=h*(feval(fun,a)+feval(fun,b))/2;
fori=1:
m
h=h/2;
n=2*n;
s=0;
fork=1:
n/2
x=a+h*(2*k-1);
s=s+feval(fun,x);
end
T(i+1)=T(i)/2+h*s;
T=T(1:
m);
例9.3.6用rctrap计算ed,递归14次,并将计算结果与精确值比较.
解输入程序
T=rctrap(@fun,0,pi/2,14),symst
fi=int(exp((-t^2)/2)/(sqrt(2*pi)),t,0,pi/2);
Fs=double(fi),wT=double(abs(fi-T))
运行后屏幕显示精确值Fs,用rctrap计算的递归值T和T与精确值Fs的绝对误差wT
9.3.3辛普森公式及其误差分析
例9.3.7用辛普森公式计算ed,取个等距节点,并将计算结果与精确值比较,然后再取计算,观察对误差的影响.
解由,得.根据辛普森(Simpson)公式编写并输入下面的程序
a=0;
b=1;
m=10000;
h=(b-a)/(2*m);
x=a:
y=exp((-x.^2)./2)./(sqrt(2*pi));
z1=y
(1)+y(2*m+1);
z2=2*sum(y(2:
2:
2*m));
z3=4*sum(y(3:
z=(z1+z2+z3)*h/3,symst,f=exp((-t^2)/2)/(sqrt(2*pi));
intf=int(f,t,a,b),Fs=double(intf);
Juewucha=abs(z-Fs)
运行后屏幕显示用辛普森公式(9.11)计算定积分的近似值z和精确值intf及其绝对误差Juewucha(取个等距节点).
例9.3.8估计用辛普森公式计算定积分ed时的误差,取.
解根据估计误差公式,先输入求的程序
symsx,y=exp(sin(x));
yx4=diff(y,x,4)
运行后输出被积函数的四阶导函数.然后在输入误差估计程序
h=pi/40;
0.00001:
yx4=sin(x).*exp(sin(x))-4*cos(x).^2.*exp(sin(x))+3*sin(x).^2.*exp(sin(x))-6*sin(x).*cos(x).^2.*exp(sin(x))+cos(x).^4.*exp(sin(x));
juyx4=abs(yx4);
RS=(h^4)*(pi/2)*max(juyx4)/180
运行后屏幕显示误差估计值
RS=
3.610450295892220e-006
9.3.4辛普森(Simpson)数值积分的MATLAB程序
quad(‘fun’,a,b)
quad(‘fun’,a,b,tol)
[Q,FCNT]=quad(...)
调用格式四:
quad(‘fun’,a,b,tol,TRACE)
调用格式五:
quad(‘fun’,a,b,tol,TRACE,P1,P2,…)
复合辛普森(Simpson)数值积分的MATLAB主程序
functiony=comsimpson(fun,a,b,n)
z1=feval(fun,a)+feval(fun,b);
m=n/2;
h=(b-a)/(2*m);
z2=0;
z3=0;
x2=0;
x3=0;
fork=2:
2*m
x2=x+k*h;
z2=z2+2*feval(fun,x2);
fork=3:
x3=x+k*h;
z3=z3+4*feval(fun,x3);
y=(z1+z2+z3)*h/3;
例9.3.9用comsimpson.m和quad.m分别计算定积分ed,取精度为,并与精确值比较.
[Q1,FCNT14]=quad(@fun,0,1,1.e-4,3),
Q