MATLAB符号运算功能ppt课件_第1页
MATLAB符号运算功能ppt课件_第2页
MATLAB符号运算功能ppt课件_第3页
MATLAB符号运算功能ppt课件_第4页
MATLAB符号运算功能ppt课件_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.,第四次课,第三章符号运算功能,.,上次课内容回顾:,矩阵及其运算主要介绍了特殊矩阵的生成如空阵、全零阵、全1阵等的生成,矩阵的一些特殊操作如变维、变向、抽取、扩展.数组及其运算主要介绍了基本数组运算数、组函数运算和数组逻辑运算.多项式运算主要介绍了多项式的表示方法、多项式运算.,.,3.1符号表达式的生成,目录,3.2符号和数值之间的转换,3.3符号函数的运算,3.5符号矩阵的运算,3.4符号矩阵的创立,3.6符号微积分,3.7符号代数、微分方程求解,3.8符号函数的二维图,.,概述,MATLAB自产生之日起就在数值计算功能上独占鳌头,广受各专业人员的欢迎。但是在数学、物理、力学等各种科研、工程应用中还经常遇到符号运算的问题,因此一部分MATLAB用户不得不掌握另一种符号计算语言,如Maple、Mathematic、MathCAD等等,这就带来了一些不便。为了解决这个问题,Mathworks公司于1993年从加拿大滑铁卢大学购入了Maple的使用权,并在此基础上,利用Maple的函数库,开发了MATLAB语言的又一重要工具箱符号计算工具箱(SymbolicToolbox)。从此MATLAB便集数值计算、符号计算和图形处理三大基本功能于一体,成为数学计算各语言中功能最强、操作最简单和最受用户喜爱的语言。,.,3.1符号表达式的生成,符号运算的特点:在符号运算过程中,变量都是以字符形式保存和运算,即使是数字也被当做字符来处理。符号表达式的形式:符号函数不包括等号符号方程必须带等号创建方法:符号函数和符号方程创建方法相同,最简单的方法和MATLAB中字符串变量的生成方法相同。创建符号函数f=log(x)f=log(x),.,创建符号方程equation=a*x2+b*x+c=0equation=a*x2+b*x+c=0创建符号微分方程diffeq=Dy-y=xdiffeq=Dy-y=x注意:1)由这种方法创建的符号表达式对空格是很敏感的。因此,不要在字符间乱加空格符,否则在其它地方调用此表达式的时候会出错。2)由于符号表达式在MATLAB中被看成是1*1阶的符号矩阵,因此,它也可用sym和syms命令来创建。如:f=sym(sin(x)f=sin(x)f=sym(sin(x)2=0)f=sin(x)2=0,.,symsxt;f=sin(x)+cos(t)f=sin(x)+cos(t)此方法不能用来创建符号方程,symsx;f=sin(x)+cos(x)f=sin(x)+cos(x),.,3.2符号和数值之间的转换,目的:有时符号运算的目的是得到精确的数值解,这样就需要对得到的解析解进行数值转换。在MATLAB中转换主要由两个函数digits和vpa完成。而这两个函数在实际中经常同变量替换函数subs配合使用,其调用格式为:digits(D)函数设置有效数字个数为D的近似解精度;R=vpa(S)符号表达式S在digits函数设置下的精确的数值解;vpa(S,D)符号表达式S在digits(D)精度下的数值解;例题:求方程3x2-ex=0的精确解和各种精度的近似解。s=solve(3*x2-exp(x)=0),s=-2*lambertw(-1/6*3(1/2)-2*lambertw(-1,-1/6*3(1/2)-2*lambertw(1/6*3(1/2),.,vpa(s)ans=.910007572488709060657338295759443.7330790286328142006199540298434-.45896226753694851459857243243408vpa(s,6)ans=.9100083.73308-.458962,例题:设函数为f(x)=x-cos(x),求此函数在x=点的值。x=sym(x),f=x-cos(x),f1=subs(f,pi,x)f1=pi+1,.,numeric(f1)ans=4.1416double(f1)ans=4.1416,digits(25);vpa(f1),ans=4.141592653589793238462643,.,3.3符号函数的运算,一、复合函数运算若函数z=z(y)的自变量y又是x的函数y=y(x),则求z对x的函数的过程称为复合函数运算。在MATLAB中,此过程可由功能函数compose来实现。调用格式:compose(f,g)返回当f=f(x)和g=g(y)时的复合函数f(g(y),这里x为findsym定义的f的符号变量,y为findsym定义的g的符号变量.compose(f,g,z)返回的复合函数以z为自变量。compose(f,g,x,z)返回复合函数f(g(z),且使得x为f的独立变量,即如果f=cos(x/t),则compose(f,g,x,z)返回cos(g(z)/t),而compose(f,g,t,z)返回cos(x/g(z)。,.,compose(f,g,x,y,z)返回的复合函数f(g(z),并使得x为f的独立变量,y为g的独立变量。,复合函数运算示例:symsxyztu;f=1/(1+x2);g=sin(y);h=xt;p=exp(-y/u);compose(f,g);,ans=1/(1+sin(y)2),compose(f,g,t);,ans=1/(1+sin(t)2),compose(h,g,x,z);,.,compose(h,g,t,z);ans=xsin(z)compose(h,p,x,y,z);ans=exp(-z/u)tcompose(h,p,t,u,z);ans=xexp(-y/z),ans=sin(z)t,.,3.4符号矩阵的创立,在MATLAB中创建符号矩阵的方法和创建数值矩阵的形式很相似,只不过要用到符号定义函数sym。一、使用sym函数直接创建符号矩阵矩阵元素是任何不带等号的符号表达式,各符号表达式的长度可以不同如:a=sym(1/s+x,sin(x)cos(x)2/(b+x);9,exp(x2+y2),log(tanh(y),a=1/s+x,sin(x),cos(x)2/(b+x)9,exp(x2+y2),log(tanh(y),.,二、用创建子阵的方法创建符号矩阵ms=1/s,sin(x);1,exp(x)ms=1/s,sin(x)1,exp(x)注意:要保证同一列的各元素字符串具有相同的长度,为此在较短字符串的前后可用空格符补充。b=a;exp(-i),3,x3+y9,b=1/s+x,sin(x),cos(x)2/(b+x)9,exp(x2+y2),log(tanh(y)exp(-i),3,x3+y9,三、将数值矩阵转化为符号矩阵在MATLAB中,数值矩阵不能直接参与符号运算,必须先转化为符号矩阵。,.,如:a=2/3,sqrt(2),0.222;1.4,1/0.23,log(3)b=sym(a)四、符号矩阵的索引和修改用矩阵的坐标括号表达式实现。如:对上例中的矩阵b的索引和修改。b(2,3)%矩阵的索引b(2,3)=log(3)%矩阵的修改,b=2/3,sqrt(2),111/5007/5,100/23,4947709893870346*2(-52),b=2/3,sqrt(2),111/5007/5,100/23,log(3),.,3.5符号矩阵的运算,一、基本运算1.符号矩阵的四则运算矩阵的加(+)、减(-)法例如:a=sym(1/x,1/(x+1);1/(x+2),1/(x+3);b=sym(x,1;x+2,0);b+a矩阵的乘(*)、除(/、)法如:ab,ans=1/x+x,1/(x+1)+11/(x+2)+x+2,1/(x+3),.,矩阵的转置()如:a,ans=-6*x-2*x3-7*x2,3/2*x2+x+1/2*x36+2*x3+10*x2+14*x,-1/2*x3-2*x2-3/2*x,simple(ans),ans=-x*(x+2)*(2*x+3),1/2*x*(x+2)*(x+1)2*(x+3)*(x+1)2,-1/2*x*(x+3)*(x+1),ans=1/conj(x),1/(2+conj(x)1/(1+conj(x),1/(3+conj(x),.,2.符号矩阵的行列式运算如:det(a)ans=2/x/(x+3)/(x+1)/(x+2)3.符号矩阵的逆如:inv(b)4.符号矩阵的秩如;rank(a)ans=25.符号矩阵的幂运算如:a2,ans=0,1/(x+2)1,-x/(x+2),ans=1/x2+1/(x+1)/(x+2),1/x/(x+1)+1/(x+1)/(x+3)1/(x+2)/x+1/(x+3)/(x+2),1/(x+1)/(x+2)+1/(x+3)2,.,6.符号矩阵的指数运算符号矩阵的“数组指数”运算由函数exp实现,如:exp(b);符号矩阵的“矩阵指数”运算由函数expm实现;如:expm(b),exp(b)ans=exp(x),exp(1)exp(x+2),1,expm(b)a=01;32symstexpm(a*t),ans=1/4*exp(3*t)+3/4*exp(-t),-1/4*exp(-t)+1/4*exp(3*t)-3/4*exp(-t)+3/4*exp(3*t),3/4*exp(3*t)+1/4*exp(-t),.,二、矩阵分解1.符号矩阵的特征值分解函数eig如:x,y=eig(b);x=simple(x),x=1,1-1/2*x+1/2*(x2+8+4*x)(1/2),-1/2*x-1/2*(x2+8+4*x)(1/2),y=1/2*x+1/2*(x2+8+4*x)(1/2),00,1/2*x-1/2*(x2+8+4*x)(1/2),2.符号矩阵的约当标准形函数jordan如:a=sym(112;013;002)x,y=jordan(a),.,3.符号矩阵的三角抽取函数diagtriltriu如:z=sym(x*yxasin(y);talog(y)b;yexp(t)x),x=5,-5,-53,0,-51,0,0,y=2,0,00,1,10,0,1,z=x*y,xa,sin(y)ta,log(y),by,exp(t),x,triu(z);diag(z);tril(z),ans=x*y,xa,sin(y)0,log(y),b0,0,x,ans=x*ylog(y)x,ans=x*y,0,0ta,log(y),0y,exp(t),x,.,四、符号矩阵的简化1.因式分解函数factor调用格式:factor(S)输入变量为一符号矩阵,此函数将分解矩阵的各个元素;S包含的所有元素为整数,则计算最佳因式分解式。如:符号表达式的分解symsxfactor(x9-1)分解大整数(factor(sym(N)factor(sym(12345678901234567890),ans=(x-1)*(x2+x+1)*(x6+x3+1),ans=(2)*(3)2*(5)*(101)*(3803)*(3607)*(27961)*(3541),.,2.符号矩阵的展开函数expand调用格式:expand(s)对符号矩阵的各元素的符号表达式进行展开,也常用于三角函数、指数函数和对数函数的展开中。,如:symsxyexpand(x+1)3)多项式展开expand(sin(x+y)三角函数展开,ans=x3+3*x2+3*x+1,ans=sin(x)*cos(y)+cos(x)*sin(y),3.同类式合并函数collect调用格式:collect(S,v)将符号矩阵S中的各元素的v的同幂项系数合并;collect(S)对由findsym函数返回的默认变量进行同类项合并。,.,如:symsxycollect(x2*y+y*x-x2-2*x)ans=(y-1)*x2+(y-2)*xcollect(x2*y+y*x-x2-2*x,y)ans=(x2+x)*y-x2-2*x4.符号简化函数simple和simplifysimple用于寻找符号矩阵或符号表达式的最简型。调用格式:simple(S)对表达式S尝试多种不同的算法简化,以显示S的长度最短的简化形式,若S为一矩阵,则结果是全矩阵的最短形,而非每个元素的最短形。,simplify符号简化函数调用格式:simplify(S)简化符号矩阵的每一个元素。,.,如:symsxcalphabetasimplify(sin(x)2+cos(x)2)ans=1simplify(exp(c*log(sqrt(alpha+beta)ans=(alpha+beta)(1/2*c)5.分式通分numden求解符号表达式的分子和分母。调用格式:N,D=numden(A)把A的各元素转换为分子和分母都是整系数的最佳多项式型。如:n,d=numden(x/y+y/x),n=x2+y2,d=x*y,.,3.6符号微积分,一、符号极限极限的求解可由limit函数来实现,调用格式:limit(F,x,a)计算符号表达式F在xa条件下的极限值;limit(F,a)计算符号表达式中由findsym(F)返回的独立变量趋向于a的极限值;limit(F)计算a=0时的极限;limit(F,x,a,right)或limit(F,x,a,left)rigft,left用来指定取极限的方向。如:symsxath;limit(sin(x)/x)ans=1limit(1+2*t/x)(3*x),x,inf)ans=exp(6*t)limit(1/x,x,0,right)ans=inf,.,二、符号积分1.符号积分函数int,调用格式:int(S)计算符号表达式S对由findsym返回的符号自变量的不定积分,S为符号矩阵或符号数量,若S为常数,则积分针对(S,v)计算符号表达式S对符号自变量v的不定积分,v是一数量符号量。int(S,a,b)计算符号表达式S对默认符号变量从a到b的定积分,a和b为双精度或符号数量。int(S,v,a,b)计算符号表达式对变量v从a到b的定积分。如:symsxx1alphaut;A=cos(x*t),sin(x*t);-sin(x*t),cos(x*t),A=cos(x*t),sin(x*t)-sin(x*t),cos(x*t),.,int(A,t),ans=1/x*sin(x*t),-cos(x*t)/xcos(x*t)/x,1/x*sin(x*t),int(x1*log(1+x1),0,1)ans=1/4,.,三、符号微分和差分微分和差分函数diff调用格式:diff(S)对由findsym返回的自变量,求符号表达式S的微分。diff(S,v)或diff(S,sym(v)对自变量v,求表达式S的微分diff(S,n)对于正整数n,对表达式S微分n次。如:x=sym(x);t=sym(t);diff(sin(x2)ans=2*cos(x2)*xdiff(t6,6)ans=720,.,3.7符号代数、微分方程求解,一、线性方程组的符号解法线性方程的符号求解函数linsolvesolve此方法可得到方程组的精确解,所得的解析解可由函数vpa转换在浮点近似数值。例:试对数值方程组用符号求解函数来求解。a=sym(10,1,0;-1,10,2;0,2,10)b=(9;7;6)linsolve(a,b)vpa(ans,5),ans=473/47591/95376/475,ans=.99579.95789.79158,.,二、非线性方程的符号解法非线性方程的符号求解由函数fsolve实现,调用格式为:X=fsolve(fun,x0)fun为所要求解的函数名,通常以M文件的形式给出,返回函数值F=fun(x),x0为求解方程的初始值。,例:用fsolve函数求解下面非线性方程。,解:首先编制函数文件fc.m如下fc.mfunctiony=fc(x)y(1)=x(1)-0.7*sin(x(1)-0.2*cos(x(2)y(2)=x(2)-0.7*cos(x(1)+0.2*sin(x(2)y=y(1)y(2);,.,在MATLAB命令窗口输入:x0=0.5,0.5fsolve(fc,x0),ans=0.52650.5079,三、常微分方程的符号解常微分方程的符号解由函数dsolve来计算,主要调用格式为:dsolve(equ1,equ2,),以代表微分方程及初始条件的符号方程为输入参数,多个方程或初始条件可在一个输入变量内联立输入,且以逗号分隔。默认的独立变量为t,也可把t变为其它的符号变量。字符D代表对独立变量的微分,通常指d/dt。紧跟D的数字代表高阶微分如D2为d2/dt2。紧跟此操作符的任何符号都可作被微变量,如D3y代表对y(t)的3阶微分。,.,例:dsolve(Dx=-a*x)ans=C1*exp(-a*t)S=dsolve(Du=v,Dv=w,Dw=-u,u(0)=0,v(0)=0,w(0)=1)S=u:1x1symv:1x1symw:1x1symS.uans=1/3*3(1/2)*exp(1/2*t)*sin(1/2*t*3(1/2)-1/3*exp(1/2*t)*cos(1/2*t*3(1/2)+1/3*exp(-t)注意:用户定义的符号变量不能再包括字符D,初始条件以方程形式给出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论