资源描述:
《matlab求解积分问题探讨》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Matlab求解积分问题探讨一.相关函数:%符号积分int(f,v)int(f,v,a,b)%数值积分trapz(x,y) %梯形法沿列方向求函数Y关于自变量X的积分cumtrapz(x,y) %梯形法沿列方向求函数Y关于自变量X的累计积分quad(fun,a,b,tol) %采用递推自适应Simpson法计算积分quad1(fun,a,b,tol) %采用递推自适应Lobatto法求数值积分 dbquad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol) %二重(闭型)数值积分指令triplequad(fun,xmin,xmax,ymin
2、,ymax,zmin,zmax,tol) %三重(闭型)数值积分指令二.示例:例1:计算f(t)=exp(-t^2)在[0,1]上的定积分本例演示:计算定积分常用方法>> syms xint(exp(-x^2),0,1) ans = 1/2*erf(1)*pi^(1/2) %erf为误差函数>> vpa(int(exp(-x^2),0,1)) ans = .7468241328124270>> d=0.001;x=0:d:1;d*trapz(exp(-x.^2))ans = 0.7468>> quad('exp(-x.^2)',0,1,1e-8)ans =
3、 0.7468例2:计算f(t)=1/log(t)在[0,x],01^-处为负无穷本例演示:用特殊函数表示的积分结果,如何用mfun指令(1)syms t xft=1/log(t);sx=int(ft,t,0,x) sx =-Ei(1,-log(x)) %完全椭圆函数(2)x=0.5:0.1:0.9sx_n=-mfun('Ei',1,-log(x)) x = 0.5000 0.6000 0.7000 0.8000 0.9000sx_n = -0.3
4、787 -0.5469 -0.7809 -1.1340 -1.7758 (3)%图示被函数和积分函数clfezplot('1/log(t)',[0.1,0.9]) grid onhold onplot(x,sx_n,'LineWidth',3) Char1='1/ln(t)';Char2='{int_0^x} 1/ln(t) dt'; title([Char1,' and ',Char2]) legend(Char1,Char2,'Location','SouthWe
5、st') 例3:计算f(t)=exp(-sin(t))在[0,4]上的定积分注意:本题被函数之原函数无"封闭解析表达式",符号计算无法解题!本例演示:符号计算有限性(1)符号计算解法syms t xft=exp(-sin(t))sx=int(ft,t,0,4) ft =exp(-sin(t))Warning: Explicit integral could not be found.> In sym.int at 58sx =int(exp(-sin(t)),t = 0 .. 4) (2)数值计算解法dt=0.05; %采样
6、间隔 t=0:dt:4; %数值计算适合于有限区间上,取有限个采样点 Ft=exp(-sin(t)); Sx=dt*cumtrapz(Ft); %计算区间内曲线下图形面积,为小矩形面积累加得Sx(end) %所求定积分值 %图示plot(t,Ft,'*r','MarkerSize',4)hold onplot(t,Sx,'.k','MarkerSiz
7、e',15)hold offxlabel('x')legend('Ft','Sx') >>ans = 3.0632例4:绘制积分图形,y=2/3*exp(-t/2)*cos(sqrt(3)/2*t);积分s(x)=int(y,t,0,x)于[0,4*pi]上syms t taoy=2/3*exp(-t/2)*cos(sqrt(3)/2*t); s=subs(int(y,t,0,tao),tao,t); %获得积分函数 subplot(2,1,1)