设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1475|回复: 0

MATLAB积分方法

[复制链接]

36

主题

201

金钱

340

积分

入门用户

发表于 2019-9-26 16:00:33 | 显示全部楼层 |阅读模式

一 相关函数
1.符号积分
int(f,v)
int(f,v,a,b)

2.数值积分
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,ymax,zmin,zmax,tol)%三重(闭型)数值积分指令

3.利用int命令进行二重积分、三重积分计算
格式:int(int(f,y,y1(x),y2(x)),x,a,b)
int(int(int(f,z,z1(x,y),z2(x,y)),y,y1(x),y2(x)),x,a,b)

二.示例:
例1:计算f(t)=exp(-t^2)在[0,1]上的定积分
  本例演示:计算定积分常用方法
>>symsx
int(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=
  0.7468

例2:计算f(t)=1/log(t)在[0,x],0<x<1上的积分
  注意:被积函数于x=0无义,在x-->1^-处为负无穷
  本例演示:用特殊函数表示的积分结果,如何用mfun指令
  (1)
symstx
ft=1/log(t);
sx=int(ft,t,0,x) 
sx=
-Ei(1,-log(x)) %完全椭圆函数

  (2)
x=0.5:0.1:0.9
sx_n=-mfun('Ei',1,-log(x))       
x=
  0.5000  0.6000  0.7000  0.8000  0.9000
sx_n=
 -0.3787 -0.5469 -0.7809 -1.1340 -1.7758 

  (3)%图示被函数和积分函数
clf
ezplot('1/log(t)',[0.1,0.9])      
gridon
holdon
plot(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','SouthWest') 


例3:计算f(t)=exp(-sin(t))在[0,4]上的定积分
  注意:本题被函数之原函数无"封闭解析表达式",符号计算无法解题!
  本例演示:符号计算有限性
  (1)符号计算解法
symstx
ft=exp(-sin(t))
sx=int(ft,t,0,4) 
ft=exp(-sin(t))
Warning:Explicitintegralcouldnotbefound.
>Insym.intat58
sx=
int(exp(-sin(t)),t=0..4) 

  (2)数值计算解法
dt=0.05;          %采样间隔      
t=0:dt:4;           %数值计算适合于有限区间上,取有限个采样点       
Ft=exp(-sin(t));    
Sx=dt*cumtrapz(Ft);      %计算区间内曲线下图形面积,为小矩形面积累加得
Sx(end)        %所求定积分值
                %图示
plot(t,Ft,'*r','MarkerSize',4)
holdon
plot(t,Sx,'.k','MarkerSize',15)
holdoff
xlabel('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]上
symsttao
y=2/3*exp(-t/2)*cos(sqrt(3)/2*t);  
s=subs(int(y,t,0,tao),tao,t);  %获得积分函数      
subplot(2,1,1)              
                      %
ezplot(y,[0,4*pi]),ylim([-0.2,0.7]) %单变量符号函数可视化,多变量用ezsurf
gridon                  
subplot(2,1,2)              
ezplot(s,[0,4*pi])
gridon
title('s=inty(t)dt')


注意!:最前面应该加上
syms  x y;
否则会报错为:Undefined function or variable 'x'.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表