《【教学课件】第14章符号计算.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第14章符号计算.ppt(29页珍藏版)》请在三一办公上搜索。
1、第14章 符号计算,同一般的数值计算不同,MATLAB的符号计算是对字符串进行符号分析和运算。在进行符号计算时,MATLAB负责将计算请求提交给其内置的MAPLE组件,并返回MAPLE的计算结果。MATLAB的符号计算历经多次的改进和完善,其功能已经非常强大。本章介绍的内容包括符合表达式、符号表达式的复合和化简、符号矩阵的运算、符号微积分、符号代数方程求解、符号微分方程解等。,14.1 符号对象和一般数值类型比较,符号对象(Symbolic Objet)是MATLAB符号工具箱中定义的一种新的数据类型。一般的MATLAB数值类型,如logical、int、float、double等,都是简单的
2、数据类型,而符号对象是一种保存了符号字符串表示的复杂数据结构。例如,对double型数值2求自然对数。log(2)ans=0.6931返回结果为double型数值。下面首先将double型数值2转换成符号类型,再求其自然对数。log(sym(2)ans=log(2),14.2 符号对象的创建,MATLAB符号工具箱定义的数据类型符号对象(Symbolic Object),是一种存储了符号的字符串表示的复杂数据结构。MATLAB利用符号对象表示符号变量、符号表达式、符号函数、符号矩阵。本节介绍符号变量、符号表达式和符号函数的创建,至于符号矩阵,将在第14.4节进行详细介绍。,14.2.1 创建符
3、号变量,14.2.2 创建符号表达式,14.2.3 符号函数,14.3 符号对象的转换,本节介绍符号表达式的显示、符号表达式的各种表达形式及其相互转换、符号常量与一般数值类型的相互转换、符号表达式的替换。本节中的符号表达式是广义的符号表达式,包括了符号变量和符号常量。,14.3.1 符号表达式的显示,在显示符号表达式时,默认的方式是MATLAB式的显示,例如,f=a*x2+b*x+cf=a*x2+b*x+c另外,MATLAB符号工具箱中的函数pretty,允许用户将符号表达式显示为符合一般数学表达习惯的数学表达式,对上述的f,其pretty显示为 pretty(f)2 a x+b x+c,14
4、.3.2 符号表达式间的相互转换,对数学表达式的展开、化简、因式分解等是在数学学习和应用中经常要做的工作,MATLAB符号工具箱同样也具备这些功能。MATLAB符号工具箱为符号表达式的展开、化简等提供了强大的支持,下面列出了一些相关的函数及其使用方法。函数collect的调用格式为collect(f,s)collect(f)函数expand对符号表达式进行展开,调用格式为R=expand(S)函数factor对符号表达式进行因式分解,调用格式为R=factor(X)函数simple和simplify都用于对符号表达式进行化简,但simple函数会尝试多种方法,直到找到认为“最简”的表达式。函数
5、numden将有理分式形式的符号表达式表示为简单分式之和。,14.3.3 符号表达式的替换,符号表达式的替换有两种,一是利用符号变量或符号表达式替换目标符号表达式中的符号变量(包括符号常量),利用函数subs实现;二是用符号变量替代目标符号表达式中的某个子符号表达式,利用函数subexpr实现。函数subs的一般调用格式为:R=subs(S)R=subs(S,new)R=subs(S,old,new)R=subs(S)替换S中与调用函数空间或基本工作空间同名的符号变量。,14.3.4 符号常量与数值类型的转换,在符号常量与数值类型的相互转换中,数值向符号常量的转换即是符号常量的创建,由函数sy
6、m实现,如有疑问请参考第14.2.1节。这里主要介绍符号常量向数值类型的转换。MATLAB中的函数vpa用于符号常量向一般数值类型的转换,vpa的调用格式为v=vpa(s,d)或v=vpa(s)其中,s为符号常量,d为转换结果v的小数位个数,未设定时,d是函数digits(关于digits的使用,不是本节所要讨论的内容,如有疑问请参考帮助)设定的值。,14.4 符号矩阵,符号矩阵是数值矩阵的扩展,符号矩阵的每个元素都是符号表达式。同一般的数值矩阵一样,符号矩阵也有四则运算,可以求符号矩阵的奇异值,对符号进行奇异值分解。对于符号方阵,有符号矩阵的行列式、特征值,符号方阵可逆时,还可以求符号方阵的
7、逆。本节涉及到的符号矩阵运算大多与数值矩阵相同,读者在学习本节内容时可以参考第5章的内容。,14.4.1 符号矩阵的创建,MATLAB的符号工具箱中没有专门用于创建符号矩阵的函数,用户可以通过下面的几种方式创建符号矩阵。直接输入符号矩阵的各个元素符号表达式。利用sym函数将数值矩阵转化为符号矩阵,这种方法只能符号常量矩阵。简单符号矩阵的组合创建复杂符号矩阵。,14.4.2 符号矩阵的基本代数运算,同数值矩阵一样,符号矩阵也能进行加、减、乘、除四则运算,并且具有与数值矩阵几乎相同的运算规则,只是矩阵元素由数值变成了符号表达式。表列出了符号矩阵支持的代数运算符。,14.4.3 符号矩阵的关系运算,
8、MATLAB符号工具箱对关系运算符的支持很有限,仅支持=和=。例如,对与相等关系的判断。syms a b;(a+b)2=a2+2*a*b+b2ans=0虽然两式在数学上是相等的,但很明显,在MATLAB符号工具箱中并没有发现这一事实。另外用户不能对两个符号表达式作大于或小于关系运算,否则MATLAB会报出错误。(a+b)2 a2+2*a*b+b2?Function gt is not defined for values of class sym.Error in=gt at 16 builtin(gt,varargin:);,14.4.4 符号矩阵的行列式,符号矩阵的行列式与数值矩阵的行列式
9、具有相同的定义,只是符号矩阵的行列式为符号函数。当然,行列式仅对符号方阵才有意义。在MATLAB中,利用同名函数det计算符号矩阵的行列式,该函数在符号工具箱中被重载。,14.4.5 符号矩阵的逆,对M阶符号方阵A,满足AB=BA=E的符号方阵B称为A的逆,记为A-1,其中,E为单位符号方阵,对角线上的元素为符号常量,其余为0。MATLAB符号工具箱提供了同名函数inv计算符号方阵的逆,这里的inv在符号工具箱中被重载。下面是符号矩阵求逆应用的例子。,14.4.6 符号矩阵的特征值,14.4.7 符号矩阵的SVD分解,14.5 符号微积分,第5章已经介绍了数值积分,数值积分的适用范围广泛,但对
10、问题的描述一般是近似的,而符号微积分可能得到问题的精确描述。本节内容包括符号的极限、微分、积分、Taylor级数以及级数求和。,14.5.1 极限,14.5.2 微分,14.5.3 积分,14.5.4 Taylor级数,多项式具有很多良好的性质,函数的Taylor展开是利用了多项式对作近似。为在处的阶Taylor级数,。当时,称为马克劳林级数。MATLAB利用函数taylor求函数的Taylor级数,其一般的调用格式为taylor(f,n,a)taylor(f,n,a)为在处的次Taylor展开。其中,为符号表达式,默认。例如,求的4次马克劳林级数。taylor(exp(x),4)ans=1+x+1/2*x2+1/6*x3,14.5.5 级数求和,14.6 符号方程求解,14.6.1 一般的代数方程求解14.6.2 线性方程求解 14.6.3 微分方程求解,14.6.1 一般的代数方程求解,14.6.2 线性方程求解,14.6.3 微分方程求解,