1、第第6讲讲 符号计算符号计算 符号计算是数字运算的自然扩展,其特点包括:不受计算误差的困扰;计算可以给出完全正确的封闭解或任意精度的数值解;计算的指令比较简单,所需要的时间较长。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 自然科学理论分析中的公式、关系式及其推导是符号计算要解决的问题。MATLAB数值计算的对象是数值,而符号计算的对象则是非数值的符号字符串。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 6.2.1 创建符号对象和表达式 6.2.2
2、 符号对象的基本运算 第第6讲讲 符号计算符号计算 在符号计算中,需定义一种新的数据类型sym类。sym类的实例就是符号对象,符号对象是一种数据结构,用来存储代表符号变量、表达式和矩阵的字符串。第第6讲讲 符号计算符号计算 1符号常量2符号变量 3符号表达式4符号矩阵第第6讲讲 符号计算符号计算 函数sym()和命令syms创建符号常量、变量、函数以及表达式,函数class()检验符号对象类型。(1)函数sym()函数sym()的具体使用方法如下:ssym(A,flag);ssym(A,flag)。第第6讲讲 符号计算符号计算(2)命令syms 命令syms的具体使用方法如下:syms s1,
3、sn flag。(3)函数class()函数class()的具体使用方法如下:strclass(object)。第第6讲讲 符号计算符号计算 符号常量是一种符号对象。数值常量如果作为函数命令sym()的输入参量,就建立了一个符号对象符号常量。第第6讲讲 符号计算符号计算 符号变量通常是由一个或几个特定的字符表示。符号变量的命名规则如下所示:变量名可以由英文字母、数字和下划线组成;变量名应以英语字母开头;第第6讲讲 符号计算符号计算 组成变量名的字母长度不大于31个;区分大小写。在MATLAB中,用函数sym()和命令syms来创建符号变量。第第6讲讲 符号计算符号计算 符号表达式是由以下部分组
4、成的符号对象:符号常量;符号变量;符号运算符;专用函数。第第6讲讲 符号计算符号计算 元素是符号对象的矩阵叫做符号矩阵。第第6讲讲 符号计算符号计算 1基本运算符 2关系运算符 3三角函数、双曲函数以 及它们的反函数 第第6讲讲 符号计算符号计算 4指数、对数函数 5复数函数 6矩阵函数第第6讲讲 符号计算符号计算 运算符“”、“”、“*”、“”、“/”、“”分别实现矩阵的加、减、乘、左除、右除和求幂运算。运算符“*”、“/”、“”、“”分别实现“元素对元素”的数组乘、左除、右除和求幂运算。运算符“”、“”分别实现矩阵的共轭转置和非共轭转置。第第6讲讲 符号计算符号计算 运算符“”和“”分别对
5、运算符两边的对象进行“相等”、“不等”的比较。当事实为“真”时,返回结果1;当事实为“假”时,返回结果0。第第6讲讲 符号计算符号计算 除函数atan2()仅能用于数值计算外,其余的三角函数、双曲函数及它们的反函数都能用于符号计算。第第6讲讲 符号计算符号计算 函数sqrt()、exp()、expm()、log()、log2()和log10()都能用于符号计算。第第6讲讲 符号计算符号计算 函数conj()、real()、imag()和abs()都能用于符号计算,但相角函数没有提供。第第6讲讲 符号计算符号计算 函数diag()、triu()、tril()、inv()、det()、rank()
6、、rref()、null()、colspace()、poly()、expm()和eig()都能用于符号计算。第第6讲讲 符号计算符号计算 1digits(d)2vpa(A,d)3double(A)第第6讲讲 符号计算符号计算 符号计算的显著特点是计算过程中不会出现舍入误差,从而可以得到任意精度的数值解。MATLAB提供以下函数实现将符号计算得到的精确值转换成任意精度。第第6讲讲 符号计算符号计算 设定精度为d位有效数字,默认值是32。第第6讲讲 符号计算符号计算 对符号计算得到的精确值进行近似,有效位数为d位,若不指定d,则按当前有效位数输出。第第6讲讲 符号计算符号计算 对符号计算得到的精确
7、值转换为双精度。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 6.4.1 符号表达式的化简6.4.2 符号表达式的替换第第6讲讲 符号计算符号计算 MATLAB提供函数实现对符号计算的结果进行化简和替换,如:因式分解;同类项合并;符号表达式展开、化简;通分、符号替换。第第6讲讲 符号计算符号计算 1函数collect()2函数expand()3函数horner()4函数factor()5函数simplify()6函数simple()第第6讲讲 符号计算符号计算 函数collect()将符号表达式中同类项合并,其具体使用方法如下:R=collect(S):将表达式S中的相同次幂的项
8、合并;R=collect(S,v):将表达式S中变量v的相同次幂的项合并。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 函数expand()将符号表达式进行展开,其具体使用方法如下:R=expand(S):将表达式S中的各项进行展开。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 函数horner()将符号表达式转换成嵌套形式,其具体使用方法如下:R=horner(S):将符号多项式矩阵S中的每个多项式转换成它们的嵌套形式。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 函数factor()对符号多项式进行因式分解,其具体使用方法如下:R=factor(X
9、):如果X是一个多项式或多项式矩阵,该函数将X表示成低阶多项式相乘的形式;如果X不能分解成有理多项式乘积的形式,则返回X本身。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 函数simplify()将符号表达式按一定规则简化,其具体使用方法如下:R=simplify(S):该函数可应用于包含和式、方根、分数的乘方、等符号表达式矩阵S。第第6讲讲 符号计算符号计算 该函数是将符号表达式表示成最简形式,其具体使用方法如下:r=simple(S):用几种不同的算术简化规则对符号表达式进行简化,并显示中间过程;r,how=simple(S):不显示中间过程,并附加返回最简形式对应的简化方法
10、。第第6讲讲 符号计算符号计算 1函数subexpr()2函数subs()第第6讲讲 符号计算符号计算 在MATLAB中,用函数subexpr()和subs()来实现符号替换,从而简化符号表达式。第第6讲讲 符号计算符号计算 函数subexpr()将符号表达式中重复出现的字符串用符号变量代替,其具体使用方法如下:Y,SIGMA=subexpr(S,SIGMA):指定用符号变量SIGMA来代替符号表达式中重复出现的字符串;第第6讲讲 符号计算符号计算 Y,SIGMA=subexpr(S,SIGMA):这种形式和上一种形式的不同在于第2个输入参数是字符或字符串。第第6讲讲 符号计算符号计算 函数s
11、ubs()用指定符号替换符号表达式中的某一特定符号,其具体使用方法如下:R=subs(S,Old,New):用新符号变量New替代原来符号表达式S中的变量Old。第第6讲讲 符号计算符号计算 1基本代数运算 2线性代数运算 3特征值分解 4约当标准型 5奇异值分解第第6讲讲 符号计算符号计算 两符号矩阵进行加减运算时必须满足数值矩阵加减的规则。第第6讲讲 符号计算符号计算 符号矩阵进行线性代数运算时和数值矩阵的一样。第第6讲讲 符号计算符号计算 函数eig()求符号方阵的特征值和特征向量,其具体用法如下:E=eig(A):求符号方阵A的符号特征值E;v,E=eig(A):求符号方阵A的符号特征
12、值E和相应的特征向量v。第第6讲讲 符号计算符号计算 函数jordan()求矩阵的约当标准形,其具体用法如下:J=jordan(A):计算矩阵A的约当标准型;V,J=jordan(A):附加返回相应的变换矩阵V。第第6讲讲 符号计算符号计算 函数svd()求矩阵的奇异值分解,其具体用法如下:S=svd(A):给出符号矩阵的奇异值对角矩阵,其计算精度由函数digits()来指定;U,S,V=svd(A):附加给出U和V两个正交矩阵且满足A=U*S*V。第第6讲讲 符号计算符号计算 1符号表达式的极限 2符号表达式的微分 3符号表达式的积分 4级数求和 5泰勒级数第第6讲讲 符号计算符号计算 函数
13、limit()求表达式的极限,其具体用法如下:limit(F,x,a):求当xa时,符号表达式F的极限;limit(F,a):求符号表达式F的默认自变量趋近于a时的极限;第第6讲讲 符号计算符号计算 limit(F):求符号表达式F的默认自变量趋近于0时的极限;limit(F,x,a,right)或limit(F,x,a,left):分别求取符号表达式F的右极限和左极限。第第6讲讲 符号计算符号计算 函数diff()来求表达式的微分,其具体用法如下:diff(S,v):将符号“v”视作变量,对符号表达式或矩阵S求微分;第第6讲讲 符号计算符号计算 diff(S,n):将S中的默认变量求n阶微分
14、;diff(S,v,n):将符号“v”视作变量,对符号表达式或矩阵S求n阶微分。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 函数int()求表达式的积分,其具体用法如下:R=int(S):用默认变量求符号表达式S的不定积分;第第6讲讲 符号计算符号计算 R=int(S,v):用符号标量v作为变量求符号表达式S的不定积分值;R=int(S,a,b):符号表达式采用默认变量;R=int(S,v,a,b):符号表达式采用符号标量v作为标量,求当v从a到b时,符号表达式S的定积分值。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 函数symsum()来对符号表达式进行求和,
15、其具体用法如下:r=symsum(s,a,b):求符号表达式s中默认变量从a到b的有限和;r=symsum(s,v,a,b):求符号表达式s中变量v从a到b的有限和。第第6讲讲 符号计算符号计算 函数taylor()对符号表达式进行泰勒级数展开,其具体用法如下:r=taylor(f):返回f在变量等于0处的5阶泰勒展开式;第第6讲讲 符号计算符号计算 r=taylor(f,n,v):符号表达式f以符号标量v作为自变量,返回f的n-1阶泰勒展开式。r=taylor(f,n,v,a):返回符号表达式f在v=a处的n-1阶泰勒展开式。第第6讲讲 符号计算符号计算 1Fourier变换 2Laplac
16、e变换 3Z变换第第6讲讲 符号计算符号计算 在数学中经常采用变换的方法,将复杂的运算转化为简单的运算,如数量的乘除可以通过对数变换成加减。积分变换就是通过积分运算实现变换。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 Fw=fourier(ft,t,w):求时域函数ft的Fourier变换Fw;ft=ifourier(Fw,w,t):求频域函数Fw的Fourier反变换。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 函数laplace()和ilaplace()实现f(t)到F(s)和F(s)到f(t)的变换,其具体用法如下:Fs=la
17、place(ft,t,s):求时域函数ft的Laplace变换Fs;ft=ilaplace(Fs,s,t):求频域函数Fs的Laplace反变换ft。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 函数ztrans()和iztrans()来实现f(n)到F(z)和F(z)到f(n)的变换,其具体用法如下:FZ=ztrans(fn,n,z):求采样点fn的Z变换FZ;fn=iztrans(FZ,z,n):求FZ的Z反变换fn。第第6讲讲 符号计算符号计算 1代数方程2微分方程第第6讲讲 符号计算符号计算 符号方程可以分为代数方程和微分方程。代数方程可以细
18、分为线性方程和非线性方程两类;微分方程可以细分为常微分方程和偏微分方程。第第6讲讲 符号计算符号计算 函数solve()求解代数方程,其具体用法如下:g=solve(eq):其中eq可以是符号表达式或不带符号的字符串,该函数求解方程eq=0;g=solve(eq,var):求解方程eq=0,其自变量由参数var指定;第第6讲讲 符号计算符号计算 g=solve(eq1,eq2,eqn):求解由符号表达式或不带符号的字符串eq1,eq2,eqn组成的方程组;g=solve(eq1,eq2,eqn,var1,var2,varn):求解由符号表达式或不带等号的字符串eq1,eq2,eqn组成的方程组
19、。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 函数dsolve()求解微分方程,其具体用法如下。r=dsolve(eq1,eq2,cond1,cond2,v):求由eq1,eq2指定的常微分方程组的符号解;第第6讲讲 符号计算符号计算 r=dsolve(eq1,eq2,cond1,cond2,v):求由eq1,eq2指定的常微分方程组的符号解。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 1图示化符号函数计算器 2泰勒级数逼近分析器第第6讲讲 符号计算符号计算 在MATLAB中,为符号函数可视化提供图示化符号函数计算器(由命令funtool启动)和泰勒级数逼近分析
20、器(由命令taylortool启动)。第第6讲讲 符号计算符号计算 运行命令funtool后,可看到如下图所示的图示化符号函数计算器界面。两个图形窗口只有一个能处于激活状态,函数运算控制窗口上的任何操作都只能对被激活的图形窗口起作用。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算(1)第1排按键只对函数f起作用,如计算导数、积分、简化、提取分子和分母、1/f以及反函数。(2)第2排按键处理函数f和常数a之间的加、减、乘、除等运算。第第6讲讲 符号计算符号计算(3)第3排的前4个按键对函数f和g进行算术运算。第5个按键求复合
21、函数,第6个按键把f函数传递给g,最后一个按键实现f和g的互换。(4)第4排按键对计算器自身进行操作,该计算器包含一个函数列表fxlist,这7个按键的功能依次如下。第第6讲讲 符号计算符号计算 Insert:把当前激活窗的函数写入列表;Cycle:依次循环显示fxlist中的函数;Delete:从fxlist列表中删除激活窗的函数;第第6讲讲 符号计算符号计算 Reset:使计算器恢复到初始调用状态;Help:获得关于界面的在线提示说明;Demo:自动演示。第第6讲讲 符号计算符号计算 运行命令taylortool后,可看到如下图所示的泰勒级数逼近分析器界面。第第6讲讲 符号计算符号计算 第第6讲讲 符号计算符号计算 该界面用于观察函数f(x)在给定区间上被N阶泰勒多项式TN(x)逼近的情况;函数f(x)在界面的f(x)栏中直接键入并回车即可;第第6讲讲 符号计算符号计算 界面中N被缺省为7,可以用右侧的按键增减阶数,也可以直接写入阶数;界面上的a是级数的展开点,缺省为0;函 数 的 观 察 区 可 被 设 置,缺 省 为(2,2)。