第8章符号计算64.ppt
《第8章符号计算64.ppt》由会员分享,可在线阅读,更多相关《第8章符号计算64.ppt(76页珍藏版)》请在三一办公上搜索。
1、第八章,符号计算,荆华,MATLAB使用详解2012学年选修课,第八章 符号计算,与一般的数值计算不同,符号计算是对字符串符号进行分析和运算,为了便于理解,可以将符号计算看作“由计算机实现的数学公式推导”。进行符号计算时,MATLAB负责将计算请求提交给其内置的MAPLE组件并返回MAPLE的计算结果MATLAB的符号计算历经多次的改进和完善,其功能已经非常强大,尤其是在大规模的简单公式推导、逻辑推导等应用中有重要应用。,本章介绍的内容如下:符合对象的创建 符号函数符号对象的复合和化简 符号对象的运算符号矩阵符号微积分符号方程求解,第八讲 符号计算,8.1 符号类型与数值类型,符号对象(Sym
2、bolic Objet)是MATLAB符号工具箱中定义的一种新的数据类型。与一般的简单数值类型(如logical、int、float、double等)不同,符号对象是一种保存了符号字符串表示的复杂数据结构。首先,讨论符号类型与普通数值类型的差别。,例:对double型数值2求自然对数在Matlab命令窗口输入以下代码:log(2)ans=0.6931 log(sym(2)%2被定义为符号常量ans=log(2)符号计算在计算过程中没有采用近似,也没有字长限制引起的截断效应等。即符号计算能够得到问题的解析解,而不是数值近似解。,8.1 符号类型与数值类型,8.2 符号对象及其创建,MATLAB符
3、号工具箱定义的数据类型符号对象(Symbolic Object),是一种存储了符号字符串表示的复杂数据结构。MATLAB利用符号对象表示符号变量、符号表达式、符号函数、符号矩阵。,8.2.1 创建符号变量,sym函数可用于创建符号常量和变量,其调用格式为:sym_variable=sym(sym_expression)该指令创建符号变量(或常量)sym_variable,其中sym_expression为符号变量的字符串表示。如果sym_expression为常数(例如pi、1、2.01等),则函数返回符号常量;如果sym_expression是符合命名规则的字符串(即该字符串只能包含数字、英
4、文字母和下画线,且不能以数字开头),则函数返回符号变量。,另外,对符号变量的创建,Matlab提供了syms指令,syms可以一次创建多个符号变量。syms调用格式为:syms var1 var2 var3注意:变量之间只能以空格分开,不能是“,”或“;”。例:创建符号变量 syms a b c 不能是syms a,b,c,8.2.1 创建符号变量,8.2.2 创建符号表达式,符号表达式是符号变量或常量的组合,也可以将符号变量和符号常量认为是符号表达式。符号表达式的创建,依然使用函数sym,其调用格式为:sym_variable=sym(sym_expression)这里的输入字符串参数sym
5、_expression是由多个子字符串通过数值运算符组合而成的。,例:创建符号表达式ax2+bx+c。有两种创建符号表达式的方法,第一种是直接输入法:f=sym(a*x2+x*x+c)f=a*x2+x*x+c第二种是先创建符号变量a、b、c、x,然后用数值运算符组合这些符号变量得到符号表达式。syms a b c x;f=a*x2+b*x+c f=a*x2+b*x+c,应用举例:,8.2.3 符号对象与数值的转换,MATLAB符号计算工具箱提供如下三类运算操作:Numberic,即MATLAB浮点运算;Rational,即Maple符号运算;VPA,即Maple精度可变运算。浮点运算:运算速度
6、最快、内存使用最少,但其结果的精度也较低。符号运算:运算速度慢、内存使用最多、但结果是精确、无近似的。VPA是浮点运算与符号运算的折中,用户可以通过函数digits控制计算结果的精度,默认情况下digits=32。,求一元二次方程x2+x-1=0的数值解和解析解。在Matlab命令窗口中输入以下代码:sym x;%定义符号变量x s=solve(x2+x-1)%求解析解s=1/2*5(1/2)-1/2-1/2-1/2*5(1/2)%精确解,符号计算在计算过程中没 有采用近似 vpa(s,4)%将解析解转换为数值解,小数位个数是4ans=.6180-1.618,应用举例:,应用举例*:,例:分别
7、用浮点运算、符号运算和VPA计算1/2+1/3得值,format long 1/2+1/3ans=0.83333333333333 sym(1/2)+sym(1/3)ans=5/6 digits(32);vpa(1/2+1/3)ans=.83333333333333333333333333333333,8.3 创建符号函数,可以通过下面两种方法创建符号函数:符号表达式;M文件。利用符号表达式创建符号函数的方法已经介绍,这种方法适合于创建一些比较简单的函数,对于比较复杂的符号函数的创建,应该利用M文件。注意:符号运算不支持函数句柄作为输入参数。,8.3.1 复合函数,已知函数f(x)、g(x),
8、复合函数f.g定义为(f.g)(z)=f(g(z)。MATLAB符号计算工具箱提供函数compose用于符号函数复合,其调用格式为:compose(f,g)compose(f,g,z)compose(f,g,x,z),compose(f,g,x,y,z)其中f、g为符号表达式,compose(f,g,x,y,z)首先将g中的y替换为z得到g(z),然后将f中的x替换为g(z)。如果x、y未指定,则xfindsym(f,1)、yfindsym(g,1);如果z未指定,则zy。,8.3.1 复合函数,应用举例:,已知f=(1+x)2、g=tan(y)、hx*t、pe-y/u1)创建符号变量及符号函
9、数;2)分别求compose(f、g)、compose(f、g、t);3)分别求compose(h、g、x、z)、compose(h、g、t、z)在Matlab中输入如下代码:,syms x y z t u;%创建符号变量及符号函数 f=(1+x)2;g=tan(y);h=x*t;p=exp(-y/u);compose(f,g)%将f中的x用g(y)代替ans=(1+tan(y)2 compose(f,g,t)%将f中的x用g(t)代替ans=(1+tan(t)2,compose(h,g,x,z)%将h中的x替换为g(z)ans=tan(z)*t compose(h,g,t,z)%将h中的t替
10、换为g(z)ans=x*tan(z),函数findsym,findsym用于查询符号表达式中的变量,其使用方法如下:findsym(S)返回S中所有的符号变量。findsym(S,n)依Ascll码表顺序返回S中n个距x最近的符号变量。例:已知S=ax+b,利用findsym查询S的符号变量 syms a b x;s=a*x2+b;findsym(s)ans=a,b,x,8.3.2 反函数,MATLAB符号工具箱的函数finverse用于计算函数的反函数,其调用格式为:g=finverse(f)g=finverse(f,v)其中f为符号表达式,该函数求f关于v的反函数,如果未指定v,那么v=f
11、indsym(f)。,应用举例:,例:求函数f(x)=e-x、g(x)=x+e-x的反函数在Matlab命令窗口中输入以下代码:syms x;f=exp(-x);g=x+exp(-x);finverse(f)%f为符号表达式ans=-log(x)finverse(g)ans=lambertw(-1/exp(x)+x,8.4 符号表达式的复合和化简,符号表达式的显示、展开、分解、化简等是符号运算的重要内容,MATLAB符号工具箱对这些内容提供了强大的支持。本节将详细介绍MATLAB符号工具箱中符号表达式的显示、展开、分解、替换、化简等操作。,8.4.1 显示符号表达式,MATLAB显示符号表达式
12、时,默认的方式是MATLAB式的显示,例如在MATLAB命令窗口输入以下代码。f=a*x2+b*x+c运行结果如下。f=a*x2+b*x+c,8.4.2 展开、分解及化简符号表达式,对数学表达式的展开、分解、化简是学习数学和应用数学中经常要做的工作,下面列出了一些相关的函数及其使用方法。函数collect用于同类项合并,其调用格式为:collect(f,s)collect(f)collect(f,s)将符号表达式f看作符号变量s的多项式(如果未指定s,则默认s为findsym(f,1)),对具有相同阶数的项进行合并。,函数expand对符号表达式进行展开,其调用格式为R=expand(S)函数
13、factor对符号表达式进行因式分解,其调用格式为:Rfactor(X),其中X可以为符号表达式或正整数符号常量。,8.4.2 展开、分解及化简符号表达式,应用举例:,例1:对符号表达式f(x)=x2-x-3x+3合并同类项在Matlab命令窗口中输入:syms x;f=x2-x-3*x+3 collect(f)ans=x2-4*x+3,应用举例:,例:展开符号表达式:f(x)=(x-1)(x-3)syms x;f=(x-1)*(x-3)expand(f)ans=x2-4*x+3,应用举例,对符号表达式3+x24x作因式分解 syms x;factor(3+x2-4*x)ans=(x-1)*(
14、x-3),应用举例*:,例:合并符号表达式 1)x2y+yx-x2-2x 2)4xe(-2x)+3e(-2x);,syms x y collect(x2*y+y*x-x2-2*x)ans=(y-1)*x2+(y-2)*x f=4*x*exp(-2*x)+3*exp(-2*x);collect(f)ans=4*x*exp(-2*x)+3*exp(-2*x),8.4.3 符号表达式替换,符号表达式的替换有两种,一是利用符号变量或符号表达式替换目标符号表达式中的符号变量(包括符号常量),利用函数subs实现;二是用符号变量替代目标符号表达式中的某个子符号表达式,利用函数subexpr实现。函数sub
15、s的一般调用格式为:R=subs(S)R=subs(S,new)R=subs(S,old,new),应用举例:,例:已知f(x)=ex,a=logb,A=1 2,求f(a)、f(A)syms x b a;f=exp(x);a=log(b)a=log(b)subs(f,a)ans=b A=1,2;3,1,subs(f,A)ans=2.7183 7.3891 20.0855 2.7183,应用举例*:,例:求符号表达式x2+5*x*sqrt(x)当x=3的值,syms x f=x2+5*x*sqrt(x)subs(f,x,3)ans=34.98076211353316,8.5 符号矩阵,符号矩阵是
16、数值矩阵的扩展,符号矩阵的每个元素为符号表达式。与数值矩阵一样,符号矩阵也有代数运算、逻辑运算等。对于符号方阵,可以求行列式、特征值;符号方阵可逆时,还可以求符号方阵的逆。本节涉及的许多符号矩阵运算与数值矩阵相同。,8.5.1 创建符号矩阵,MATLAB符号工具箱中没有提供专门用于创建符号矩阵的函数,用户可以通过以下三种方式创建符号矩阵:直接输入符号矩阵的各个元素符号表达式;利用sym函数将数值矩阵转化为符号矩阵,这种方法只能创建符号常量矩阵;简单符号矩阵的组合创建复杂符号矩阵。,例:利用sym函数将数值矩阵转化为符号矩阵 V=vander(1,2);V=sym(V)V=1,1 2,1例:直接
17、输入法创建符号矩阵 syms x;s=sin(x),cos(x);-cos(x),sin(x)s=sin(x),cos(x)-cos(x),sin(x),8.5.1 创建符号矩阵,9.5.2 符号矩阵的代数运算,同数值矩阵一样,符号矩阵也能进行加、减、乘、除四则运算,并且具有与数值矩阵几乎相同的运算规则,只是矩阵元素由数值变成了符号表达式。,应用举例:,已知A=a,b;c,d,x=u,v,求A*x、Ax、A/x syms a b c d u v;A=a,b;c,d;x=u;v;A*x ans=a*u+b*v c*u+d*v Ax ans=(d*u-b*v)/(-c*b+a*d)-(c*u-a*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 符号 计算 64
链接地址:https://www.31ppt.com/p-4883136.html