Matlab积分函数.docx
- 文档编号:9003640
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:13
- 大小:21.16KB
Matlab积分函数.docx
《Matlab积分函数.docx》由会员分享,可在线阅读,更多相关《Matlab积分函数.docx(13页珍藏版)》请在冰豆网上搜索。
Matlab积分函数
符号积分
int(f,v)
int(f,v,a,b)
数值积分
trapz(x,y)%梯形xx沿列方向求函数丫关于自变量X的积分cumtrapz(x,y)%梯形xx沿列方向求函数丫关于自变量X的累计积分quad(fun,a,b,tol)%采用递推自适应Simpsonxx计算积分
quad1(fun,a,b,tol)%采用递推自适应Lobattoxx求数值积分dbquad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)%二重(闭型)数
值积分指令
triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)%三重(闭型)数值积分指令
二.示例:
例1:
计算f(t)=exp(-tA2)在[0,1]上的定积分
本例演示:
计算定积分常用方法
>>symsx
int(exp(-xA2),0,1)
ans=
1/2*erf
(1)*piA(1/2)%erf为误差函数
>>vpa(int(exp(-xA2),0,1))
ans=
.7468241328124270
>>d=0.001;x=0:
d:
1;d*trapz(exp(-x42))
ans=
0.7468
>>quad('exp(-x.A2)',0,1,1e-8)
ans=
0.7468
例2:
计算f(t)=1/log(t)在[0,x],0vx<1上的积分
注意:
被积函数于x=0无义,在x-->1A-处为负无穷
本例演示:
用特殊函数表示的积分结果,如何用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.50000.60000.70000.80000.9000sx_n=
-0.3787-0.5469-0.7809-1.1340-1.7758(3)%图示被函数和积分函数
clf
ezplot('1/log(t)',[0.1,0.9])gridon
holdonplot(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)
holdoffxlabel('x')legend('Ft','Sx')
>>ans=
3.0632
例4:
绘制积分图形,y=2/3*exp(-t/2)*cos(sqrt(3)/2*t);积分
s(x)=int(y,t,O,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
gridonsubplot(2,1,2)ezplot(s,[0,4*pi])
gridon
title('s=inty(t)dt')
int的积分可以是定积分,也可以是不定积分(即有没有积分上
下限都可以积)可以得到解析的解,比如你对XT积分,得到的结果是1/3*xA3,这是通过解析的方法来解的。
如果int(xA2,x,1,2)得到的结果是7/3
quad是数值积分,它只能是定积分(就是有积分上下限的积分),它是通过simpson数值积分来求得的(并不是通过解析的方法得到解析解,再将上下限代入,而是用小梯形的面积求和得到的)。
如果f=inline('x.A2');quad(f,1,2)得到的结果是2.333333,这个数并
不是7/3
%%符号变量与符号表达式%%%%%%%%%%%%%%%%%%%%%%%%%%%%1.符号变量与符号表达式
%%%%%%%%%%%%%%%%%%%%%%%%%%%clearall;
clc;
closeall;
%f=sym('sin(x)+5x')
%f——符号变量名
%sin(x)+5x——符号表达式
%''——符号标识
%符号表达式一定要用''单引号括起来matlab才能识别
%''的内容可以是符号表达式,也可以是符号方程。
%例:
%f1=sym('a*xA2+b*x+c')二次三项式
%f2二sym('a*xA2+b*x+c=0')方程
%f3=sym('Dy+yA2=1')——微分方程
%符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算
%syms命令用来建立多个符号量,一般调用格式为:
%syms变量1变量2...变量n%%符号矩阵的创建
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%2.符号矩阵的创建
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%数值矩阵A=[1,2;3,4]
%A=[a,b;c,d]——不识别
%@1用matlab函数sym创建矩阵(symbolic的缩写)
%命令格式:
A=sym('[]')
%※符号矩阵内容同数值矩阵
%探需用sym指令定义
%※需用''标识
%例如:
A=sym('[a,2*b;3*a,0]')
%A=
%[a,2*b]
%[3*a,0]
%这就完成了一个符号矩阵的创建。
%注意:
符号矩阵的每一行的两端都有方括号,这是与matlab数值矩阵的一个重要区别。
%@2用.字符串直接创建矩阵(这种方法创建的没有什么用处)
%※模仿matlab数值矩阵的创建方法
%※需保证同一列中各元素字符串有相同的xx。
%例:
A=['[a,2*b]';'[3*a,0]']
%A=
%[a,2*b]
%[3*a,0]
%@3符.号矩阵的修改
%a.直接修改
%可用光标键找到所要修改的矩阵,直接修改
%b.指令修改
%※用A1=sym(A,*,*,'new')来修改。
这个经过测试,不能运行
%※用A1=subs(A,'new','old')来修改
%%例如:
A=[a,2*b]
%[3*a,0]
A=sym('[a,2*b;3*a,0]')
%A1=sym(A,2,2,'4*b')%%等效于A(2,2)='4*b';
%A1=[a,2*b]
%[3*a,4*b]
A1=subs(A,'0','4*b')
A2=subs(A1,'c','b')
%A2=[a,2*c]
%[3*a,4*c]
%@4符.号矩阵与数值矩阵的转换
%※将数值矩阵转化为符号矩阵
%函数调用格式:
sym(A)
A=[1/3,2.5;1/0.7,2/5]
%A=
%0.33332.5000
%1.42860.4000
B=sym(A)
%ans=
%[1/3,5/2]
%[10/7,2/5]
%※将符号矩阵转化为数值矩阵
%函数调用格式:
numeric(A)
%B=
%[1/3,5/2]
%[10/7,2/5]
%numeric(B)这个函数不存在了
VPA(B,4)%发现这个函数可用
%R=VPA(S)numericallyevaluateseachelementofthedoublematrix
%SusingvariableprecisionfloatingpointarithmeticwithDdecimal
%digitaccuracy,whereDisthecurrentsettingofDIGITS.
%TheresultingRisaSYM.
%%VPA(S,D)usesDdigits,insteadofthecurrentsettingofDIGITS.
%DisanintegerortheSYMrepresentationofanumber.
%ans=
%[.3333,2.500]
%[1.429,.4000]
%%符号运算
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3.符号运算
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%例1:
f=sym('2*x^2+3*x-5');g=sym(W2+x-7');
h=f+g
%h=
%3*xA2+4*x-12
%例2:
f=sym('cos(x)');g=sym('sin(2*x)');
f/g+f*g
%ans=
%cos(x)/sin(2*x)+cos(x)*sin(2*x)
%%查找符号变量
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%4查.找符号变量
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%findsym(expr)按字母顺序列出符号表达式expr中的所有符号变量
%%findsym(expr,N)列出expr中离x最近的N个符号变量
%若表达式中有两个符号变量与x的距离相等,则ASCII码大者优先。
%※xx量pi,i,j不作为符号变量
%例:
f=sym('2*w-3*y+zA2+5*a');
findsym(f)
%ans=
%a,w,y,z
findsym(f,3)
%ans=
%y,w,zfindsym(f,1)
%ans=
%y
%%计算极限
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5计.算极限
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%limit(f,x,a):
计算f(x)当x趋向于a的极限
%limit(f,a):
当默认变量趋向于a时的极限
%limit(f):
计算a=0时的极限
计算右极限
%limit(f,x,a,'right'):
%limit(f,x,a,'left'):
计算左极限
%例:
计算symsxhn;
L=limit((log(x+h)-log(x))/h,h,0)
%L=
%1/x
M=limit((1-x/n)5,n,inf)
%M=
%exp(-x)
%%计算导数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6计.算导数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%g=diff(f,v):
求符号表达式f关于v的导数
%g=diff(f):
求符号表达式f关于默认变量的导数
%g=diff(f,v,n):
求f关于v的n阶导数symsx;
f=sin(x)+3*xT;g=diff(f,x)
%cos(x)+6*x
%%计算积分
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%7计.算积分
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%int(f,v,a,b):
计算定积分f(v)从a到b
%int(f,a,b):
计算关于默认变量的定积分
%int(f,v):
计算不定积分f(v)
%int(f):
计算关于默认变量的不定积分f=(xA2+1)/(xA2-2*x+2)A2;
I=int(f,x)
%I=
%3/2*atan(x-1)+1/4*(2*x-6)/(xA2-2*x+2)
K=int(exp(-xA2),x,0,inf)
%K=
%1/2*piA(1/2)
%%函数运算
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%8函.数运算
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%1.合并、化简、展开等函数
%collect函数:
将表达式中相同幂次的项合并;
%factor函数:
将表达式因式分解;
%simplify函数:
利用代数中的函数规则对表达式进行化简;
%numden函数:
将表示式从有理数形式转变成分子与分母形式。
%2.反函数
%finverse(f,v)对指定自变量为v的函数f(v)求反函数
%3.复合函数
%compose(f,g)求f=f(x)和g=g(y)的复合函数f(g(y))
%compose(f,g,z)求f=f(x)和g=g(y)的复合函数f(g(z))
%4.表达式替换函数(前面讲到了)
%subs(s)用赋值语句中给定值替换表达式中所有同名变量%subs
(s,old,new)用符号或数值变量new替换s中的符号变量old
%%
%mtaylor(f,n)——xx级数展开
%ztrans(f)——Z变换
%Invztrans(f)——反Z变换
%Laplace(f)——xx变换
%Invlaplace(f)——反xx变换
%fourier(f)——xx变换
%Invfourier(f)——反xx变换
%%
clear
f1=sym('(exp(x)+x)*(x+2)');
f2=sym('aA3-1');
f3=sym('1/aA4+2/aA3+3/aA2+4/a+5');
f4=sym('sin(x)A2+cos(x)A2');
collect(f1)
%ans=
%xA2+(exp(x)+2)*x+2*exp(x)
expand(f1)
%ans=
%exp(x)*x+2*exp(x)+xA2+2*x
factor(f2)
%ans=
%(a-1)*(aA2+a+1)
[m,n]=numden(f3)
分子,n为分母
%m=
%1+2*a+3*aA2+4*aA3+5*aA4
%n=
%aA4
simplify(f4)
%ans=
%1
clear
symsxy
finverse(1/tan(x))%求反函数,自变量为x
%ans=
%atan(1/x)
f=xA2+y;
finverse(f,y)%求反函数,自变量为y%ans=
%-xA2+y
clear
symsxyztu;
f=1/(1+xA2);g=sin(y);h=xAt;p=exp(-y/u);
compose(f,g)%求f=f(x)和g=g(y)的复合函数f(g(y))%ans=
%1/(1+sin(y)A2)
clear
symsab
subs(a+b,a,4)%用4替代a+b中的a
%ans=
多重替换
%4+bsubs(cos(a)+sin(b),{a,b},{sym('alpha'),2})%
%ans=
%cos(alpha)+sin
(2)
f=sym(W2+3*x+2')
%f=
%xA2+3*x+2
subs(f,'x',2)%求解f当x=2时的值
%ans=
%12
%%方程求解
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%9方.程求解
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%1代数方程
%代数方程的求解由函数solve实现:
%solve(f)求解符号方程式f
%solve(f1,…,fn)求解由fl,…,fn组成的代数方程组
%
%2xx微分方程
%使用函数dsolve来求解xx微分方程:
%dsolve('eq1,eq2,...','cond1,cond2,...','v')clearsymsabcx
f=sym('a*x*x+b*x+c=0')
solve(f)
%ans=
%[1/2/a*(-b+(bH-4*c*aF(1/2))]
%[1/2/a*(-b-(bA2-4*c*a)A(1/2))]
solve('1+x=sin(x)')%ans=
%-1.9345632107520242675632614537689
dsolve('Dy=x','x')%求微分方程y'=x的通解,指定x为自变量。
%ans=
%1/2*xA2+C1
dsolve('D2y=1+Dy','y(0)=1','Dy(0)=0')%求微分方程y''=1+y'的解,加初始条件
%ans=
%-t+exp(t)
[x,y]=dsolve('Dx=y+x,Dy=2*x')%微分方程组的通解
%x=
%-1/2*C1*exp(-t)+C2*exp(2*t)
%y=
%C1*exp(-t)+C2*exp(2*t)
%ezplot(y)方程解y(t)的时间曲线图
%%funtool
funtool%该命令将生成三个图形窗口,FigureNo.1用于显示函数f的图形,
%FigureNo.2用于显示函数g的图形,
%FigureNo.3为一可视化的、可操作与显示一元函数的计算器界面。
%在该界面上由许多按钮,可以显示两个由用户输入的函数的计算结果:
%加、乘、微分等。
funtool还有一函数存储器,允许用户将函数存入,
%以便后面调用。
在开始时,
%funtool显示两个函数f(x)=x与g(x)=1在区间[-2*pi,2*pi]上的图形。
%Funtool同时在下面显示一控制面板,
%允许用户对函数f、g进行保存、更正、重新输入、联合与转换等操作。
%%taylortool%该命令生成一图形用户界面,显示缺省函数f=x*cos(x)
%在区间[-2*pi,2*pi]内的图形,同时显示函数f
%的前N=7项的Taylor多项式级数和(在a=0附近的)图形,
%通过更改f(x)项可得不同的函数图形。
%taylortool('f')%对指定的函数f,用图形用户界面显示出
Taylorxx
%%maple内核访问函数
%
%可以访问maple内核的matlab函数:
%maple———访问maple内核函数
%mapleinit——maple函数初始化
%mpa————maple函数定义
%mhelp———maple函数帮助命令
%procread——maple函数程序安装
%具体的操作参看相关说明
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 积分 函数