《第3章--MATLAB符号计算-MATLAB实用教程(第2版)[郑阿奇主编][电子教案]课件.ppt》由会员分享,可在线阅读,更多相关《第3章--MATLAB符号计算-MATLAB实用教程(第2版)[郑阿奇主编][电子教案]课件.ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、MATLAB MATLAB 实用教程实用教程第第3 3章章 MATLAB MATLAB符号计算符号计算UsingSymbolicMathToolbox3.1符号表达式的建立符号表达式的建立3.2符号表达式的代数运算符号表达式的代数运算3.3符号表达式的操作和转换符号表达式的操作和转换3.4符号极限、微积分和级数求和符号极限、微积分和级数求和3.5符号积分变换符号积分变换3.6符号方程的求解符号方程的求解MATLAB MATLAB 实用教程实用教程MATLAB具有符号数学工具箱具有符号数学工具箱(SymbolicMathToolbox)。符号计算是可以对未赋值的符号对象符号计算是可以对未赋值的符
2、号对象(可以可以是常数、变量、表达式是常数、变量、表达式)进行运算和处理。进行运算和处理。与数值运算的区别与数值运算的区别:数值运算中必须先对变量赋值,然后才能参数值运算中必须先对变量赋值,然后才能参与运算。与运算。符号运算无须事先对独立变量赋值,运算结符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。果以标准的符号形式表达。MATLAB MATLAB 实用教程实用教程符号运算的功能符号运算的功能符号线性代数符号线性代数(linearalgebra)因式分解、展开和简化因式分解、展开和简化(simplificationandsubstitution)符号代数方程求解符号代数方程求解
3、(solvingequations)符号微积分符号微积分(Calculus)符号微分方程符号微分方程MATLAB MATLAB 实用教程实用教程3.1符号表达式的建立符号表达式的建立3.1.1创建符号常量创建符号常量符号常量是不含变量的符号表达式。符号常量是不含变量的符号表达式。sym(常量常量)%创建符号常量创建符号常量sym(常量常量,参数参数)%按某种格式转换为符号常量按某种格式转换为符号常量说说明明:参参数数可可以以选选择择为为d、f、e或或r四种格式,也可省略。四种格式,也可省略。EX:a=sym(sin(2)a=sym(sin(2),r)MATLAB MATLAB 实用教程实用教程
4、MATLAB MATLAB 实用教程实用教程例如:例如:f1=sym(a*x2+b*x+c)%创建表达式创建表达式symsabcx%创建变量创建变量f2=a*x2+b*x+c%创建表达式创建表达式syms(a,b,c,x)f3=a*x2+b*x+c符号表达式()中的参数一定要用符号表达式()中的参数一定要用单单引号括起来。引号括起来。MATLAB MATLAB 实用教程实用教程3.1.3符号矩阵符号矩阵例如,使用例如,使用sym命令创建的符号矩阵:命令创建的符号矩阵:A=sym(a,b;c,d)A=sym(a,b;c,d)例如,使用例如,使用syms命令创建相同的符号矩阵:命令创建相同的符号矩
5、阵:syms a b c d syms a b c d A=a b;c d A=a b;c d比较符号矩阵与字符串矩阵比较符号矩阵与字符串矩阵:B=a,b;c,d B=a,b;c,d%创建字符串矩阵创建字符串矩阵 C=a,b;c,d C=a,b;c,d%创建数值矩阵创建数值矩阵?Undefined function or variable a.?Undefined function or variable a.MATLAB MATLAB 实用教程实用教程3.2符号表达式的代数运算符号表达式的代数运算3.2.1符号表达式的代数运算符号表达式的代数运算由于由于MATLABMATLAB采用了重载技术
6、,使得符号表达采用了重载技术,使得符号表达式的运算符和基本函数都与数值计算中的几乎式的运算符和基本函数都与数值计算中的几乎完全相同完全相同 。例如:例如:A+2 A+2 A.A.det(A)det(A)A2 A2 例如:例如:f=sym(2*x2+3*x+4)g=sym(5*x+6)f+gf*gMATLAB MATLAB 实用教程实用教程MATLAB MATLAB 实用教程实用教程2.函数运算函数运算(1)三角函数和双曲函数三角函数和双曲函数(2)(2)指数和对数函数指数和对数函数(3)(3)复数函数复数函数(4)(4)矩阵代数命令矩阵代数命令MATLAB MATLAB 实用教程实用教程3.2
7、.2符号数值任意精度控制和运算符号数值任意精度控制和运算在在SymbolicMathToolbox中中有有三三种种不不同同的的算算术术运运算:算:数值型:数值型:MATLAB的浮点运算。的浮点运算。有理数型:有理数型:Maple的精确符号运算。的精确符号运算。VPA型:型:Maple的任意精度运算。的任意精度运算。任任意意精精度度的的VPA型型运运算算可可以以使使用用digits和和vpa命命令令来来实现。实现。digits(n)%设定默认的精度设定默认的精度S=vpa(s,n)%将将s表示为表示为n位有效位数的符号对象位有效位数的符号对象MATLAB MATLAB 实用教程实用教程MATLA
8、B MATLAB 实用教程实用教程3.3符号表达式的操作和转换符号表达式的操作和转换3.3.1符号表达式中自由变量的确定符号表达式中自由变量的确定符号表达式符号表达式“f=ax2+bx+c”“f=ax2+bx+c”中只有一个变量是独立变量:中只有一个变量是独立变量:小写字母小写字母i i和和j j不能作为自由变量。不能作为自由变量。符符号号表表达达式式中中如如果果有有多多个个符符号号变变量量,则则按按照照以以下下顺顺序序选选择择自自由由变变量量:首首先先选选择择x x作作为为自自由由变变量量;如如果果没没有有x x,则则选选择择在在字字母母顺顺序中最接近序中最接近x x的字符变量;如果与的字符
9、变量;如果与x x相同距离,则在相同距离,则在x x后面的优先。后面的优先。大写字母比所有的小写字母都靠后。大写字母比所有的小写字母都靠后。也可以也可以用用findsymfindsym函数函数来自动确定。来自动确定。自由变量的确定原则(自由变量的确定原则(The Default Symbolic The Default Symbolic Variables)Variables)MATLAB MATLAB 实用教程实用教程MATLAB MATLAB 实用教程实用教程horner:将:将多项式多项式形式写成形式写成嵌套形式嵌套形式factor:将表达式写成:将表达式写成因式形式因式形式expand
10、:将表达式写成:将表达式写成多项式多项式形式形式simplify:对表达式进行化简:对表达式进行化简例如:例如:k=sym(cos(x)2-sin(x)2)simplify(k)simple:寻寻求求表表达达式式的的多多种种简简化化形形式式,使使之之包包含含最少数目的字符最少数目的字符-6+(11+(6+x)*x)*x2*cos(x)2-1(x-1)*(x-2)*(x-3)MATLAB MATLAB 实用教程实用教程3.3.3符号表达式的替换(符号表达式的替换(Substitutions)subssubs函数:对符号表达式中符号变量的替换。函数:对符号表达式中符号变量的替换。subs(s)%用
11、给定值替换符号表达式用给定值替换符号表达式s中的所有变量中的所有变量subs(s,new)%用用new替换符号表达式替换符号表达式s中的自由变量中的自由变量subs(s,old,new)%用用new替换符号表达式替换符号表达式s中的中的old变量变量例:f=sym(x3-6*x2+11*x-6)x=5 subs(f)subs(f,5)subs(f,x,5)可以用来计算多项式的值,以及化简。可以用来计算多项式的值,以及化简。MATLAB MATLAB 实用教程实用教程MATLAB MATLAB 实用教程实用教程3.3.5符号表达式的转换符号表达式的转换1.1.符号表达式与多项式的转换符号表达式与
12、多项式的转换构构成成多多项项式式的的符符号号表表达达式式f(x)f(x)可可以以与与多多项项式式系系数数构构成成的的行行向向量量进进行行相相互互转转换换,MATLABMATLAB提提供供了了函函数数sym2polysym2poly和和poly2sympoly2sym实现相互转换。实现相互转换。2.2.提取分子和分母提取分子和分母如如果果符符号号表表达达式式是是一一个个有有理理分分式式(两两个个多多项项式式之之比比),可可以以利利用用numdennumden函函数数来来提提取取分分子子或或分分母母,还还可可以以进进行通分。行通分。n,d=numden(f)n,d=numden(f)MATLAB
13、MATLAB 实用教程实用教程EX:提取分子和分母系数。提取分子和分母系数。f=sym(1+2*s)/(s2+2*s+1)pretty(f)1+2 s -2 s +2 s+1 n,d=numden(f)n1=sym2poly(n)d1=sym2poly(d)MATLAB MATLAB 实用教程实用教程3.4 3.4 符号极限、微积分和级数求和符号极限、微积分和级数求和3.4.13.4.1符号极限(符号极限(Limits)【例例3.143.14】分分别别求求1/x1/x在在0 0处处从从两两边边趋趋近近、从从左左边边趋趋近和从右边趋近的三个极限值。近和从右边趋近的三个极限值。f=sym(1/x)
14、f=sym(1/x)limit(f)limit(f)%对对x x求趋近于求趋近于0 0的极限的极限 limit(f,x,0)limit(f,x,0)%对对x x求趋近于求趋近于0 0的极限的极限 limit(f,x,0,left)limit(f,x,0,left)%左趋近于左趋近于0 0 limit(f,x,0,right)limit(f,x,0,right)%右趋近于右趋近于0 0MATLAB MATLAB 实用教程实用教程3.4.2符号微分符号微分(Differentiation)函数函数diffdiff是用来求符号表达式的微分。是用来求符号表达式的微分。diff(f)diff(f)%求求
15、f f对自由变量的一阶微分对自由变量的一阶微分diff(f,t)%diff(f,t)%求求f f对符号变量对符号变量t t的一阶微分的一阶微分diff(f,n)%diff(f,n)%求求f f对自由变量的对自由变量的n n阶微分阶微分diff(f,t,n)%diff(f,t,n)%求求f f对符号变量对符号变量t t的的n n阶微分阶微分MATLAB MATLAB 实用教程实用教程3.4.3符号积分符号积分(Integration)积积分分有有定定积积分分和和不不定定积积分分,运运用用函函数数intint可可以以求求得得符符号号表表达达式式的的积积分分,即即找找出出一一个个符符号号表表达达式式
16、F F使使得得diff(F)=fdiff(F)=f,也也可可以以说说是是求求微微分分的的逆逆运算。运算。int(f,t)int(f,t)%求求符符号号变变量量t t的的不不定定积分积分int(f,t,a,b)int(f,t,a,b)%求求符符号号变变量量t t的的定定积积分分int(f,t,m,n)int(f,t,m,n)%求求符符号号变变量量t t的定积分的定积分MATLAB MATLAB 实用教程实用教程MATLAB MATLAB 实用教程实用教程3.5符号积分变换符号积分变换3.5.13.5.1傅里叶变换及其反变换傅里叶变换及其反变换1.fourier1.fourier变换变换F Ffo
17、urier(f,t,w)%fourier(f,t,w)%求时域函数求时域函数f(t)f(t)的的fourierfourier变换变换F F说明:返回结果说明:返回结果F F是符号变量是符号变量w w的函数,的函数,f f为为t t的函数。的函数。2.fourier2.fourier反变换反变换f=ifourier(F,w,t)f=ifourier(F,w,t)说明:说明:ifourierifourier函数的用法与函数的用法与fourierfourier函数相同。函数相同。syms t w F=fourier(1/t,t,w)%fourier变换F=i*pi*(Heaviside(-w)-He
18、aviside(w)MATLAB MATLAB 实用教程实用教程3.5.2拉普拉斯变换及其反变换拉普拉斯变换及其反变换1.Laplace1.Laplace变换变换F=laplace(f,t,s)%F=laplace(f,t,s)%求时域函数求时域函数f f的的LaplaceLaplace变换变换F F说说明明:返返回回结结果果F F为为s s的的函函数数,当当参参数数s s省省略略,返返回回结结果果F F默默认认为为ss的的函函数数;f f为为t t的的函函数数,当当参参数数t t省省略略,默认自由变量为默认自由变量为tt。2.Laplace2.Laplace反变换反变换f filaplace
19、(F,s,t)ilaplace(F,s,t)%求求F F的的LaplaceLaplace反变换反变换f f syms a t s F1=laplace(sin(a*t),t,s)%sinat的Laplace变换F1=a/(s2+a2)MATLAB MATLAB 实用教程实用教程3.5.3 Z3.5.3 Z变换及其反变换变换及其反变换1.ztrans1.ztrans函数函数F Fztrans(f,n,z)%ztrans(f,n,z)%求时域序列求时域序列f f的的Z Z变换变换F F说说明明:返返回回结结果果F F是是以以符符号号变变量量z z为为自自变变量量;当当参参数数n n省省略略,默默认
20、认自自变变量量为为nn;当当参参数数z z省省略,返回结果默认为略,返回结果默认为zz的函数。的函数。2.iztrans2.iztrans函数函数f fiztrans(F,z,n)%iztrans(F,z,n)%求求F F的的z z反变换反变换f f syms a n z t Fz3=ztrans(exp(-a*t),n,z)%e-at的Z变换Fz3=exp(-a*t)*z/(z-1)MATLAB MATLAB 实用教程实用教程MATLAB MATLAB 实用教程实用教程【例【例3.22】求三元非线性方程组的解。】求三元非线性方程组的解。eq1=sym(x2+2*x+1);eq2=sym(x+
21、3*z=4);eq3=sym(y*z=-1);x,y,z=solve(eq1,eq2,eq3)%解方程组并赋值给x,y,zx=-1y=-3/5z=5/3 MATLAB MATLAB 实用教程实用教程3.6.2 3.6.2 符号常微分方程符号常微分方程MATLABMATLAB提提供供了了dsolvedsolve命命令令可可以以用用于于对对符符号号常常微分方程进行求解。微分方程进行求解。dsolve(eq,con,v)dsolve(eq,con,v)%求求解微分方程解微分方程dsolve(eq1,eq2,con1,con2,dsolve(eq1,eq2,con1,con2,v1,v2)v1,v2)
22、%求解微分方程组求解微分方程组说说明明:concon是是微微分分初初始始条条件件,可可省省略略;vv为为指指定定自自由由变变量量,省省略略时时则则默默认认为为x x或或t t为自由变量。为自由变量。y的一阶导数为的一阶导数为Dy;y的的n阶导数表示为阶导数表示为Dny。MATLAB MATLAB 实用教程实用教程MATLAB MATLAB 实用教程实用教程3.7 3.7 符号函数的可视化符号函数的可视化3.7.2 3.7.2 图形化的符号函数计算器图形化的符号函数计算器在在MATLAB命令窗口输入命令命令窗口输入命令“funtool”,就会出现该图形化函数计算器。,就会出现该图形化函数计算器。
23、MATLAB MATLAB 实用教程实用教程3.8Maple函数的使用函数的使用3.8.1访问Maple函数函数1.maple函数函数maple函数用于函数用于进行符号运算,并将行符号运算,并将计算算结果返回果返回到到MATLAB的工作空的工作空间。maple(MapleStatement)%运行Maple格式的语句MapleStatementmaple(fun,arg1,arg2)%运行以arg1,arg2为参数的Maple的fun函数2.mfun函数函数mfun函数用于函数用于对Maple中的中的经典函数典函数进行数行数值运算。运算。mfun(fun,p1,p2,)MATLAB MATLA
24、B 实用教程实用教程3.8.2获得得Maple的帮助的帮助1.mfunlist命令命令mfunlist命令用来列出能被命令用来列出能被“mfun”命令命令计算的算的经典典特殊特殊Maple函数。函数。2.mhelp命令命令mhelp命令用来命令用来寻求关于求关于Maple库函数及其函数及其调用方用方法的帮助:法的帮助:(1)使用使用“mhelpindex”可以可以查看看Maple的索引目的索引目录。(2)使用使用“mhelpindex分分类名名”可以可以进一步深入一步深入查看看Maple的某个具体的某个具体类别。MATLAB MATLAB 实用教程实用教程练习:练习:确定下面各符号表达式的自由符号变量:确定下面各符号表达式的自由符号变量:1/(sin(t)+cos(w*t)2*a+theta2*i+a*j答案:答案:wthetaaMATLAB MATLAB 实用教程实用教程练习:练习:计算计算1*2+2*3+n*(n+1)的前的前3项的和项的和symsum(k*(k+1),1,3)