~第4讲 MATLAB的符号运算.ppt_第1页
~第4讲 MATLAB的符号运算.ppt_第2页
~第4讲 MATLAB的符号运算.ppt_第3页
~第4讲 MATLAB的符号运算.ppt_第4页
~第4讲 MATLAB的符号运算.ppt_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

第4讲符号数学基础,matlab不仅具有数值运算功能,还开发了在matlab环境下实现符号计算的工具包SymbolicMathToolbox,符号运算的功能,符号表达式、符号矩阵的创建符号微积分符号代数方程求解符号微分方程求解因式分解、展开和简化,一、符号运算的基本操作,什么是符号运算与数值运算的区别数值运算中必须先对变量赋值,然后才能参与运算。符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。,特点:1)符号计算是精确计算2)符号计算的计算速度较慢SymbolicMathToolbox符号运算工具包通过调用Maple软件实现符号计算的Maple软件主要功能是符号运算,它占据符号软件的主导地位,1sym函数:用来建立单个符号变量符号变量名=sym(符号字符串)其中符号字符串可以是常量、变量、函数或表达式,并注意加上单引号,例:a=sym(x)%创建符号变量b=sym(pi)%创建符号常量c=sym(1+sqrt(3)/2)%创建符号表达式d=2*a+b%创建符号表达式,2.符号变量与符号表达式,还可以用直接定义符号变量或表达式,其中里的内容还可以是符号方程例:f=a变量f1=ax2+bx+c二次三项式f2=ax2+bx+c=0方程f3=Dy+y2=1微分方程符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算,2.syms函数syms函数一次可定义多个符号变量,调用格式为:syms符号变量名1符号变量名2符号变量名n注意:此时不要在变量名上加字符串分界符()变量间用空格而不要用逗号分隔。,例:symsabcd%创建多个符号变量,数值矩阵A=1,2;3,4A=a,b;c,d不识别用matlab函数sym创建矩阵命令格式:A=sym()符号矩阵内容同数值矩阵需用sym进行定义需用标识,3.符号矩阵的创建,例:符号矩阵的创建A=sym(a,2*b;3*a,0)A=a,2*b3*a,0注意:符号矩阵的每一行的两端都有方括号,这是与matlab数值矩阵的一个重要区别,用字符串直接创建矩阵,模仿matlab数值矩阵的创建方法,例:A=a,2*b;3*a,0A=a,2*b3*a,0,符号矩阵的修改,a.直接修改b.指令修改用A1=sym(A,new)来修改用A1=subs(A,new,old)来修改,例如:A=a,2*b3*a,0A1=sym(A,2,2,4*b)A1=a,2*b3*a,4*b,A2=subs(A1,c,b)A2=a,2*c3*a,4*c,将数值矩阵转化为符号矩阵:sym(A)A=1/3,2.5;1/0.7,2/5A=0.33332.50001.42860.4000sym(A)ans=1/3,5/210/7,2/5,符号矩阵与数值矩阵的转换,将符号矩阵转化为数值矩阵调用格式:numeric(A)A=1/3,5/210/7,2/5numeric(A)ans=0.33332.50001.42860.4000,确定符号表达式中默认变量的原则:1)小写字母i和j不能作为自变量。2)符号表达式中如果有多个字符变量,则按照以下顺序选择自变量:首先选择x作为自由变量;如果没有x,则选择在字母顺序中最接近x的字符变量;如果与x相同距离,则在x后面的优先。3)大写字母比所有的小写字母都靠后。,默认符号变量的确定,查询默认自变量的函数为findsym:findsym(EXPR,n)确定EXPR中的自变量。其中EXPR可以是符号表达式或符号矩阵;n为按顺序得出符号变量的个数,当n省略时,则不按顺序给出EXPR中所有的符号变量。,例:f1=sym(a*x2+B*x+c)findsym(f1)%确定B,a,c,x为符号变量findsym(f1,1)%确定x为符号变量findsym(f1,2)%确定x,c为符号变量findsym(f1,3)%确定x,c,a为符号变量findsym(f1,4)%确定x,c,a,B为符号变量,有一些专用函数来进行符号矩阵运算:symadd(a,d)符号矩阵的加symsub(a,b)符号矩阵的减symmul(a,b)符号矩阵的乘symdiv(a,b)符号矩阵的除sympow(a,b)符号矩阵的幂运算symop(a,b)符号矩阵的综合运算,二、符号运算,例1:f=2*x2+3*x-5;g=x2+x-7;h=symadd(f,g)h=3*x2+4*x-12例2:f=cos(x);g=sin(2*x);symop(f,/,g,+,f,*,g)ans=cos(x)/sin(2*x)+cos(x)*sin(2*x),例1:f=2*x2+3*x-5;g=x2+x-7;symsxf=2*x2+3*x-5;g=x2+x-7;h=f+gh=3*x2+4*x-12例2:f=cos(x);g=sin(2*x);symsxf=cos(x);g=sin(2*x);f/g+f*gans=cos(x)/sin(x)+cos(x)*sin(x),符号运算函数:symsize求符号矩阵维数charploy特征多项式determ符号矩阵行列式的值eigensys特征值和特征向量inverse逆矩阵transpose矩阵的转置jordan约当标准型simple符号矩阵简化,符号数值精度控制,三种不同的算术运算:1)数值型MATLAB的浮点运算。2)有理数型Maple的精确符号运算。3)VPA型Maple的任意精度运算。,第3种运算的精度可以任意设置,由digits和vpa函数实现。digits(n)功能:设定计算精度和改变默认的有效位数函数。其中n为所期望的有效位数,默认值为32位。Vpa的格式为:S=vpa(s,n)功能:将s表示为n位有效位数的符号对象。,例4-应用digits和vpa函数设置运算精度。,a=sym(2*sqrt(5)+pi)%创建符号对象digits%显示默认的有效位数vpa(a)%用默认的位数计算并显示vpa(a,20)%按指定的精度计算并显示digits(15)%改变默认的有效位数vpa(a)%按digits指定的精度计算并显示,浮点算术运算1/2+1/3(定义输出格式formatlong)ans=0.83333333333333符号运算sym(1/2)+(1/3)ans=5/6精确解,3.符号表达式的化简和替换,(1)符号表达式的因式分解与展开有以下几个函数:factor(s):对符号表达式s分解因式expand(s):对符号表达式s进行展开collect(s):对符号表达式s按默认自变量合并同类项collect(s,v):对符号表达式s按变量v合并同类项也可将符号表达式改变成嵌套形式horner(s):将符号多项式s转换为嵌套形式表示,即用多层括号的形式表示。,例4-11.分解因式,2.对矩阵每个元素进行分解,3.分解整数1025,eg4-1,例4-2将展开,例4-3将多项式表示为嵌套形式,eg4-2-3,例4-4合并多项式的同类项,eg4-4,(2)符号表达式的化简符号表达式化简函数有:simplify(s):应用函数规则对s进行化简r,how=simple(s):调用其他函数对表达式进行综合化简,并显示化简过程(3)符号表达式的提取分子和分母运算如果符号表达式是一个有理分式或可以展开为有理分式,可利用numden函数来提取符号表达式中的分子或分母n,d=numden(s)符号表达式s的分子和分母分别存放在n与d中,例4-5化简,例4-6计算下面两式的值,eg4-5-6,例4-71.求出的分子、分母,2.求出符号矩阵各元素的分子、分母,eg4-7,(4)符号表达式的替换Y,SIGMA=subexpr(S,SIGMA):用SIGMA的值代替符号表达式S中重复出现的字符串subs(S):用MATLAB工作空间中的变量替换S符号表达式中的所有变量subs(S,NEW):用变量NEW替换符号表达式S中的自由变量subs(S,OLD,NEW):用变量NEW替换符号表达式S中的变量OLD,例4-8:symsabx;f=a*sin(x)+b;f1=subs(f,a,sym(2)%以符号常量2替换符号变量af2=subs(f,a,b,sym(2),sym(3)%分别以符号常量2、3替换符号变量a、bf3=subs(f,a,b,3,2)%分别以标量3、2替换符号变量a、bf4=subs(f,sin(x),sym(y)%以符号变量y替换符号表达式sin(x),eg4-8,4.符号微积分与积分变换,符号极限函数limit的调用格式为:limit(f,x,a):计算当变量x趋近于a时,f(x)函数的极限值(2)limit(f,a):求f(x)的极限值,此时自变量为默认自变量(3)limit(f):求f(x)的极限值,此时默认变量趋近于0(4)limit(f,x,a,right):求f的极限值,right表示变量x从右边趋近于a(5)limit(f,x,a,left):求f的极限值,left表示变量x从左边趋近于a,例4-9:求下列极限,eg4-9,diff(f)对缺省变量求微分diff(f,v)对指定变量v求微分diff(f,v,n)对指定变量v求n阶微分int(f)对f表达式的缺省变量求积分int(f,v)对f表达式的v变量求积分int(f,v,a,b)对f表达式的v变量在(a,b)区间求定积分,5.符号微分和积分,例4-10计算二重不定积分,symsxyF=int(int(x*exp(-x*y),x),y)F=1/y*exp(-x*y),级数求和运算函数:symsum(s,x,a,b)功能:计算符号表达式s的级数和其中s为通项式,x自变量,x省略则默认为对自由变量求和;a,b为参数x的取值范围,级数求和,eg4-11,taylor(f,n)泰勒级数展开ztrans(f)Z变换iztrans(f)反Z变换laplace(f)拉氏变换ilaplace(f)反拉氏变换fourier(f)傅里叶变换ifourier(f)反傅里叶变换,积分变换,例4-12计算指数函数eAt利用拉氏反变换法计算eAt的公式为:eAt=L-1(SI-A)-1系统矩阵A=,结果:,a=01;-2-3;symssB=(s*eye(2)-a)B=s,-12,s+3b=inv(B)b=(s+3)/(s2+3*s+2),1/(s2+3*s+2)-2/(s2+3*s+2),s/(s2+3*s+2),b11=ilaplace(sym(b,1,1);b(1,1)=b11;b12=ilaplace(sym(b,1,2);b(1,2)=b12;b21=ilaplace(sym(b,2,1);b(2,1)=b21;b22=ilaplace(sym(b,2,2);b(2,2)=b22;bb=-exp(-2*t)+2*exp(-t),exp(-t)-exp(-2*t)-2*exp(-t)+2*exp(-2*t),2*exp(-2*t)-exp(-t),6.符号代数方程求解,matlab符号运算能够解一般的线性方程、非线性方程及一般的代数方程、代数方程组。当方程组不存在符号解时,又无其他自由参数,则给出数值解。命令格式:solve(f)求一个方程的解solve(f1,f2,fn)求n个方程的解,例4-13.求解方程ax2+bx+c0f=a*x2+b*x+c;solve(f)%对缺省变量x求解ans=1/2/a*(-b+(b2-4*a*c)(1/2)1/2/a*(-b-(b2-4*a*c)(1/2),solve(f,b)%对指定变量b求解ans=-(a*x2+c)/x,例4-14.求解方程cos(x)=sin(x),tan(2*x)=sin(x)f1=solve(cos(x)=sin(x)f1=1/4*pi,symsx;f2=solve(tan(2*x)=sin(x)f2=0piatan(1/2*(-2*3(1/2)(1/2),1/2+1/2*3(1/2)atan(-1/2*(-2*3(1/2)(1/2),1/2+1/2*3(1/2)atan(1/2*2(1/2)*3(1/4)/(1/2-1/2*3(1/2)+pi-atan(1/2*2(1/2)*3(1/4)/(1/2-1/2*3(1/2)-pi,numeric(f2)ans=03.14160+0.8314i0-0.8314i1.9455-1.9455,例4-15.解方程组x+y+z=1x-y+z=22x-y-z=1g1=x+y+z=1,g2=x-y+z=2,g3=2*x-y-z=1f=solve(g1,g2,g3)或f=solve(x+y+z=1,x-y+z=2,2*x-y-z=1),f=x:1x1symy:1x1symz:1x1symf.x,f.y,f.zans=2/3,-1/2,5/6,或直接x,y,z=solve(x+y+z=1,x-y+z=2,2*x-y-z=1)x=2/3y=-1/2z=5/6,7.符号微分方程求解用一个函数可以方便地得到微分方程的符号解符号微分方程求解指令:dsolve(f,g)f微分方程(可求多至12个微分方程的解);g为初始条件默认自变量为x,可任意指定自变量t,u等微分方程的各阶导数项以大写字母D表示,一阶微分方程dsolve(Dx=y,Dy=x,x(0)=0,y(0)=1)ans=x(t)=sin(t),y(t)=cos(t)二阶微分方程dsolve(D2y=-a2*y,y(0)=1,Dy(pi/a)=0)ans=cos(a*x),例4-16,求该方程的解。,eg4-16,8.符号数学的简易绘图函数,A.二维绘图函数1.ezplotezplot(f,a,b):在区间a,b绘制f(x)=0的图形,如不指定区间,则默认区间为-2,2,ezplot(x,y):在默认区间t0,2绘制参数方程x=x(t)和y=y(t)的图形ezplot(x,y,tmin,tmax):在区间ttmin,tmax绘制x=x(t)和y=y(t)的图形,例4-17绘制下列函数的图形(1)(2)(3)(4),eg4-17,A.二维绘图函数,2.ezpolar在极坐标系中绘制图形ezpolar(f):绘制极坐标曲线r=f(theta),缺省值范围为0,2ezpolar(f,a,b):绘制极坐标曲线r=f(theta),范围为a,b例4-18绘制下列函数的图形,eg4-18,3.等高线绘图函数,ezcontour,ezcontourf(填充等高线)ezcontour(f):绘制由f(x,y)确定的等高线,缺省值范围为-2,2ezcontour(f,domain):绘制由f(x,y)确定的等高线,范围由domain确定ezcontour(,n):绘制时等高线密度按n*n,缺省值为60ezcontourf函数的用法类似,B.三维绘图函数,1.ezplot3ezplot3(x,y,z,tmin,tmax)功能:绘制区间tmin,tmax范围内x=x(t),y=y(t)和z=z(t)的三维曲线,参数tmin,tmax的默认值为0,2例4-19绘制三维曲线,eg4-19,2.表面图绘制函数ezsurfezsurf(f,xmin,xmax,ymin,ymax)绘制符号表达式f代表的x、y二元函数的在xmin,xmax,ymin,ymax范围内的三维曲面。ezsurf(x,y,z,smin,smax,tmin,tmax)绘制在smin,smax,tmin,tmax范围内x=x(s,t),y=y(s,t)和z=z(s,t)的三维曲面。例4-20绘制函数的图形,B.三维绘图函数,eg4-20,3.三维网格图的函数ezmeshezmesh(f,xmin,xmax,ymin,ymax)绘制符号表达式f代表的x和y二元函数的在xmin,xmax,ymin,ymax范围内的三维网格图。ezmesh(x,y,z,smin,smax,tmin,tmax)绘制在smin,smax,tmin,tmax范围内x=x(s,t),y=y(s,t)和z=z(s,t)的三维网格图。例4-21绘制函数的图形,B.三维绘图函数,eg4-21,9图形化符号函数计算器,funtool:打开单变量函数分析的交互界面的图形窗口,10Taylor级数计算器,Taylortool:打开泰勒级数分析界面的图形窗口,小结本节介绍了matlab语言的符号运算功能,通过学习应该掌握:掌握如何创建、修改符号矩阵掌握符号运算功能符号表达式的化简和替换符号微积分简易绘图函数的使用,作业,P924.44.64.10,三、maple函数符号运算的扩展,maple是专门进行数学运算的软件工具,具有超强的符号运算能力,提供了几乎包括所有数学领域的专用函数matlab依赖于maple的内核与函数库,扩展了自己的符号运算功能。matlab还设计了对maple库函数的调用功能使得已有的maple数学功能,可以扩充matlab中,作为自身符号运算能力的扩展。,1.maple内核访问函数,可以访问maple内核的matlab函数:maple访问maple内核函数mapleinitmaple函数初始化mpamaple函数定义mhelpmaple函数帮助命令procreadmaple函数程序安装,.maple的调用格式,maple(表达式)将表达式送至maple内核,返回符号表达式结果。maple(函数,变量1,变量2)调用maple函数,传递给定变量。,例1.展开5阶bernoulli多项式,计算x=3时bernoulli数。a=maple(bernoulli(5,x)a=-1/6*x+5/3*x3+x5-5/2*x4a=maple(bernoulli(5,3)a=85,例2.化简三角函数式sin2x+cos2xa=maple(simplify(sin(x)2+cos(x)2);)a=1例4.求f(t)=e-3tsint的拉式变换f=maple(laplace(exp(-3*t)*sin(t),t,s);)f=1/(s+3)2+1),例4.寻找二次多项式的完全平方f(x)=x2+2x+2a=maple(completesquare(x2+2*x+2)a=completesquare(x2+2*x+2),将工具包装入内存,maple(with(student);)a=maple(completesquare(x2+2*x+2)a=(x+1)2+1,maple软件中的所有函数,在初始化时并没有完全装入内存,可用readlib指令把库函数读入内存,或用with指令将应用工具包装入内存。调用格式maple(readlib(函数名);)maple(with(工具包名);),例5.求sin(x2+y2)在x=0,y=0处泰勒级数展开式,8阶截断。maple(mtaylor(sin(x2+y2),x=0,y=0,8)ans=mtaylor(sin(x2+y2),x=0,y=0,8)maple(readlib(mtaylor);)maple(mtaylor(sin(x2+y2),x=0,y=0,8)ans=x2+y2-1/6*x6-1/2*y2*x4-1/2*y4*x2-1/6*y6,2.mpamaple变量定义,任何一个matlab定义的函数f,可使用mpa语句直接调用,还可把f定义成maple变量v。maple的工作空间与matlab工作空间是相互独立的,所以f与v是属于不同工作空间中的变量mpa的调用格式:mpa(v,f)mpavf,f为matlab工作空间中已存在的变量,例.电磁力计算公式为试I=0.5,x=0.1邻域展开泰勒级数,3阶截断,令常数,1.直接调用maple(readlib(mtaylor);)maple(mtaylor(k*I2/x2,I=0.5,x=0.1,3);),2.定义符号函数f(matlab6.1无map函数)f=k*I2/x2;maple(mtaylor(f,I=0.5,x=0.1,3);)ans=mtaylor(f,I=.5,x=.1,3)mpa(u,f)maple(mtaylor(u,I=0.5,x=0.1,3);)ans=25.*

温馨提示

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

最新文档

评论

0/150

提交评论