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