Matlab积分函数.docx
- 文档编号:8271518
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:10
- 大小:20.56KB
Matlab积分函数.docx
《Matlab积分函数.docx》由会员分享,可在线阅读,更多相关《Matlab积分函数.docx(10页珍藏版)》请在冰豆网上搜索。
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,ymax,zmin,zmax,tol)%三重(闭型)数值积分指令
二.示例:
例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=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') int的积分可以是定积分,也可以是不定积分(即有没有积分上下限都可以积)可以得到解析的解,比如你对x^2积分,得到的结果是1/3*x^3,这是通过解析的方法来解的。 如果int(x^2,x,1,2)得到的结果是7/3 quad是数值积分,它只能是定积分(就是有积分上下限的积分),它是通过simpson数值积分来求得的(并不是通过解析的方法得到解析解,再将上下限代入,而是用小梯形的面积求和得到的)。 如果f=inline('x.^2');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*x^2+b*x+c')——二次三项式 %f2=sym('a*x^2+b*x+c=0')——方程 %f3=sym('Dy+y^2=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数值矩阵的创建方法 %※需保证同一列中各元素字符串有相同的长度。 %例: 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('x^2+x-7'); h=f+g %h= %3*x^2+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码大者优先。 %※常量pi,i,j不作为符号变量 %例: f=sym('2*w-3*y+z^2+5*a'); findsym(f) %ans= %a,w,y,z findsym(f,3) %ans= %y,w,z findsym(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)^n,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*x^2; g=diff(f,x) %g= %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=(x^2+1)/(x^2-2*x+2)^2; I=int(f,x) %I= %3/2*atan(x-1)+1/4*(2*x-6)/(x^2-2*x+2) K=int(exp(-x^2),x,0,inf) %K= %1/2*pi^(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)——泰勒级数展开 %ztrans(f)——Z变换 %Invztrans(f)——反Z变换 %Laplace(f)——拉氏变换 %Invlaplace(f)——反拉氏变换 %fourier(f)——付氏变换 %Invfourier(f)——反付氏变换 %% clear f1=sym('(exp(x)+x)*(x+2)'); f2=sym('a^3-1'); f3=sym('1/a^4+2/a^3+3/a^2+4/a+5'); f4=sym('sin(x)^2+cos(x)^2'); collect(f1) %ans= %x^2+(exp(x)+2)*x+2*exp(x) expand(f1) %ans= %exp(x)*x+2*exp(x)+x^2+2*x factor(f2) %ans= %(a-1)*(a^2+a+1) [m,n]=numden(f3) %m为分子,n为分母 %m= %1+2*a+3*a^2+4*a^3+5*a^4 %n= %a^4 simplify(f4) %ans= %1 clear symsxy finverse(1/tan(x))%求反函数,自变量为x %ans= %atan(1/x) f=x^2+y; finverse(f,y)%求反函数,自变量为y %ans= %-x^2+y clear symsxyztu; f=1/(1+x^2);g=sin(y);h=x^t;p=exp(-y/u); compose(f,g)%求f=f(x)和g=g(y)的复合函数f(g(y)) %ans= %1/(1+sin(y)^2) clear symsab subs(a+b,a,4)%用4替代a+b中的a %ans= %4+b subs(cos(a)+sin(b),{a,b},{sym('alpha'),2})%多重替换 %ans= %cos(alpha)+sin (2) f=sym('x^2+3*x+2') %f= %x^2+3*x+2 subs(f,'x',2)%求解f当x=2时的值 %ans= %12 %%方程求解 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%9.方程求解 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %1代数方程 %代数方程的求解由函数solve实现: %solve(f)求解符号方程式f %solve(f1,…,fn)求解由f1,…,fn组成的代数方程组 % %2常微分方程 %使用函数dsolve来求解常微分方程: %dsolve('eq1,eq2,...','cond1,cond2,...','v') clear symsabcx f=sym('a*x*x+b*x+c=0') solve(f) %ans= %[1/2/a*(-b+(b^2-4*c*a)^(1/2))] %[1/2/a*(-b-(b^2-4*c*a)^(1/2))] solve('1+x=sin(x)') %ans= %-1.9345632107520242675632614537689 dsolve('Dy=x','x')%求微分方程y'=x的通解,指定x为自变量。 %ans= %1/2*x^2+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,用图形用户界面显示出Taylor展开式 %%maple内核访问函数 % %可以访问maple内核的matlab函数: %maple———访问maple内核函数 %mapleinit——maple函数初始化 %mpa————maple函数定义 %mhelp———maple函数帮助命令 %procread——maple函数程序安装 %具体的操作参看相关说明
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 积分 函数