第8章符号计算ppt课件

上传人:沈*** 文档编号:189599942 上传时间:2023-02-23 格式:PPT 页数:76 大小:298.50KB
收藏 版权申诉 举报 下载
第8章符号计算ppt课件_第1页
第1页 / 共76页
第8章符号计算ppt课件_第2页
第2页 / 共76页
第8章符号计算ppt课件_第3页
第3页 / 共76页
资源描述:

《第8章符号计算ppt课件》由会员分享,可在线阅读,更多相关《第8章符号计算ppt课件(76页珍藏版)》请在装配图网上搜索。

1、 第八章第八章 2019学年选修课学年选修课第八章 符号计算 与普通的数值计算不同,符号计算是对字符串符号进展分析和运算,为了便于了解,可以将符号计算看作“由计算机实现的数学公式推导。进展符号计算时,MATLAB担任将计算恳求提交给其内置的MAPLE组件并前往MAPLE的计算结果 MATLAB的符号计算历经多次的改良和完善,其功能曾经非常强大,尤其是在大规模的简单公式推导、逻辑推导等运用中有重要运用。本章引见的内容如下:符合对象的创建 符号函数符号对象的复合和化简 符号对象的运算符号矩阵符号微积分符号方程求解第八讲 符号计算8.1 符号类型与数值类型 符号对象Symbolic Objet是MA

2、TLAB符号工具箱中定义的一种新的数据类型。与普通的简单数值类型如logical、int、float、double等不同,符号对象是一种保管了符号字符串表示的复杂数据构造。首先,讨论符号类型与普通数值类型的差别。例:对double型数值2求自然对数 在Matlab命令窗口输入以下代码:log(2)ans=0.6931 log(sym(2)%2被定义为符号常量 ans=log(2)符号计算在计算过程中没有采用近似,也没有字长限制引起的截断效应等。即符号计算可以得到问题的解析解,而不是数值近似解。8.1 符号类型与数值类型8.2 符号对象及其创建 MATLAB符号工具箱定义的数据类型符号对象Sym

3、bolic 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,c8.2.1 创建符号变量8.2.2 创建符号表达式 符号表达式是符号变量或常量的组合,也可以将符号变量和符号常量以为是符号表达式。符号表达式的创建,依然运用函数sym,其调用格式为:sym_variable=sym(sym_expression)这里的输入字符串参数sym_expression是由多个子字符串经过数值运算符组合

5、而成的。例:创建符号表达式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)%将解析解转换为数值解,小数位个数是4 ans=.6180 -1.618运用举例:运用举例*:例:分别用浮点运算、符号运算和VPA计算1/2+1/3得值 form

7、at long 1/2+1/3ans=0.83333333333333 sym(1/2)+sym(1/3)ans=5/6 digits(32);vpa(1/2+1/3)ans=.833333333333333333333333333333338.3 创建符号函数可以经过下面两种方法创建符号函数:符号表达式;M文件。利用符号表达式创建符号函数的方法曾经引见,这种方法适宜于创建一些比较简单的函数,对于比较复杂的符号函数的创建,应该利用M文件。留意:符号运算不支持函数句柄作为输入参数。8.3.1 复合函数 知函数f(x)、g(x),复合函数f.g定义为(f.g)(z)=f(g(z)。MATLAB符号

8、计算工具箱提供函数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/u 1)创建符号变量及符号函数;2分别求compose(f、g)、compose(f、g、t);3分

9、别求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用gy替代ans=(1+tan(y)2 compose(f,g,t)%将f中的x用gt替代ans=(1+tan(t)2 compose(h,g,x,z)%将h中的x交换为gzans=tan(z)*t compose(h,g,t,z)%将h中的t交换为gzans=x*tan(z)函数findsym findsym用于查询符号表达式中的变

10、量,其运用方法如下: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,x8.3.2 反函数 MATLAB符号工具箱的函数finverse用于计算函数的反函数,其调用格式为:g=finverse(f)g=finverse(f,v)其中f为符号表达式,该函数求f关于v的反函数,假设未指定v,那么v=findsym(f)。运用举例:例:求函数f(x)=e-x、g(x)=x+e-x的反函数在Matlab

11、命令窗口中输入以下代码:syms x;f=exp(-x);g=x+exp(-x);finverse(f)%f为符号表达式ans=-log(x)finverse(g)ans=lambertw(-1/exp(x)+x8.4 符号表达式的复合和化简 符号表达式的显示、展开、分解、化简等是符号运算的重要内容,MATLAB符号工具箱对这些内容提供了强大的支持。本节将详细引见MATLAB符号工具箱中符号表达式的显示、展开、分解、交换、化简等操作。8.4.1 显示符号表达式 MATLAB显示符号表达式时,默许的方式是MATLAB式的显示,例如在MATLAB命令窗口输入以下代码。f=a*x2+b*x+c 运转

12、结果如下。f=a*x2+b*x+c8.4.2 展开、分解及化简符号表达式 对数学表达式的展开、分解、化简是学习数学和运用数学中经常要做的任务,下面列出了一些相关的函数及其运用方法。函数collect用于同类项合并,其调用格式为:collect(f,s)collect(f)collect(f,s)将符号表达式f看作符号变量s的多项式假设未指定s,那么默许s为findsym(f,1),对具有一样阶数的项进展合并。函数expand对符号表达式进展展开,其调用格式为R=expandS 函数factor对符号表达式进展因式分解,其调用格式为:Rfactor(X),其中X可以为符号表达式或正整数符号常量。

13、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)*(x-3)运用举例*:例:合并符号表达式 1)x2y+yx-x2-2x 2)4xe(-2x)+3e(-2x);syms x y

14、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实现。函数subs的普通调用格式为:R=subs(S)R=subs(S,new)R=subs(S,old,new)运用举例:例:知f(x)=ex,a=lo

15、gb,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.980762133168.5 符号矩阵 符号矩阵是数值矩阵的扩展,符号矩阵的每个元素为符号表达式。与数值矩阵一样,符号矩阵也有代数运算、逻辑运算等。对于符号方阵,可以求行列式、特征值;符号方阵可逆时,还可以

16、求符号方阵的逆。本节涉及的许多符号矩阵运算与数值矩阵一样。8.5.1 创建符号矩阵 MATLAB符号工具箱中没有提供专门用于创建符号矩阵的函数,用户可以经过以下三种方式创建符号矩阵:直接输入符号矩阵的各个元素符号表达式;利用sym函数将数值矩阵转化为符号矩阵,这种方法只能创建符号常量矩阵;简单符号矩阵的组合创建复杂符号矩阵。例:利用sym函数将数值矩阵转化为符号矩阵 V=vander(1,2);V=sym(V)V=1,1 2,1 例:直接输入法创建符号矩阵 syms x;s=sin(x),cos(x);-cos(x),sin(x)s=sin(x),cos(x)-cos(x),sin(x)8.5

17、.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*v)/(-c*b+a*d)A/x?Error using=sym.mrdivide Second dimensions must agree.矩阵右除要求x的列数与

18、A的行数相等。9.5.3 符号矩阵的逻辑运算 MATLAB符号工具箱对符号的逻辑运算支持很有限,仅支持=和=。不能对两个符号表达式作大于或小于关系运算,否那么Matlab会给出错误信息。例:syms a b;(a+b)2a2+2*a*b+b2 运转结果如下。?Function gt is not defined for values of class sym.Error in=gt at 16 builtin(gt,varargin:);9.5.4 符号矩阵的行列式 符号矩阵的行列式与数值矩阵的行列式具有一样的定义,只是符号矩阵的行列式为符号函数。同样,行列式仅对符号方阵才有意义。MATLAB

19、利用同名函数det计算符号矩阵的行列式,该函数在符号工具箱中被重载。运用举例:例:矩阵 被称为单位旋转矩阵,求该矩阵的行列式。syms x;det(sin(x),cos(x);-cos(x),sin(x)ans=sin(x)2+cos(x)2 sincoscossinxxxx9.5.5 符号矩阵的逆 对阶符号方阵,满足的符号方阵称为的逆,记为。其中为单位符号方阵,对角线上元素为符号常量,其他为0。MATLAB符号工具箱提供同名函数inv用于计算符号方阵的逆,这里的inv在符号工具箱中被重载。下面是符号矩阵求逆运用的例子。例:知符号矩阵Q=sin(x)cos(x);-cos(x)sin(x)B=

20、a;b 求X。运用举例:syms x a b;Q=sin(x)cos(x);-cos(x)sin(x);B=a;b;inv(Q)ans=sin(x)/(sin(x)2+cos(x)2),-cos(x)/(sin(x)2+cos(x)2)cos(x)/(sin(x)2+cos(x)2),sin(x)/(sin(x)2+cos(x)2)X=ans*B X=sin(x)/(sin(x)2+cos(x)2)*a-cos(x)/(sin(x)2+cos(x)2)*b cos(x)/(sin(x)2+cos(x)2)*a+sin(x)/(sin(x)2+cos(x)2)*b simplify(X)ans=

21、sin(x)*a-cos(x)*b cos(x)*a+sin(x)*b9.5.6 符号矩阵的秩 符号矩阵秩的含义与数值矩阵类似,对符号矩阵A,取其恣意 r 行 r 列得到 A 的 r 阶子式M,A的秩定义为使“至少有一个阶子式的行列式不为0的最大 r,即一切的 r+1 阶子式行列式为0,且至少有一个 r 阶子式行列式不为0。MATLAB提供同名函数rank计算符号矩阵的秩,这里的rank在符号工具箱中被重载。运用举例:例:求符号矩阵A=a,b;c,d和B=a,b;c,d;e,f的秩。syms a b c d e f;A=a,b;c,d;B=a,b;c,d;e,f;rank(A)ans=2 ra

22、nk(B)ans=29.5.7 符号矩阵的特征分解 特征值反映了符号矩阵的一些重要的性质,对符号矩阵特征值的分析在信号处置、自动控制中有重要的运用。符号方阵A的特征值是满足的|E-A|=0的,其中E为单位符号矩阵。由于|E-A|=0即为A的特征多项式,所以A的特征值即为特征多项式的根。利用poly(A)可以得到符号方阵的特征多项式,对特征多项式求根:solve(poly(A)即可得到符号方阵A的特征值。另外,可利用函数eig计算符号矩阵的特征值。其调用格式为:eig(A),前往结果为N*1阶向量,向量元素为A的特征值运用举例:知A=a,b,0;c,d,0;0,0,e,求A的特征值。syms a

23、 b c d;A=a,b,0;c,d,0;0,0,e;solve(poly(A)ans=e 1/2*d+1/2*a+1/2*(d2-2*d*a+a2+4*b*c)(1/2)1/2*d+1/2*a-1/2*(d2-2*d*a+a2+4*b*c)(1/2)eig(A)ans=e 1/2*d+1/2*a+1/2*(d2-2*d*a+a2+4*b*c)(1/2)1/2*d+1/2*a-1/2*(d2-2*d*a+a2+4*b*c)(1/2)9.6 符号微积分 前面几讲曾经引见了数值微积分,数值微积分的适用范围广泛,但对问题的描画普通是近似的,而符号微积分能够得到问题的准确描画,因此在条件允许的情况下利

24、用符号微积分处理实际和实践问题是一个很好的选择。本小节内容包括符号的极限、微分、积分以及级数求和等内容。9.6.1 极限 极限是当变量无限接近特定值时函数的值,例如,一元函数的导数的定义为下面的极限:。MATLAB符号工具箱利用函数limit计算符号极限,运用举例:知函数f(x)=(sin(x)-x)/x求以下极限limf(x)、Limf(x)、limf(x)syms x;f=(sin(x)-x)/x;limit(f,x,inf)ans=-1 limit(f,x,0,right)ans=0 xx0+x0-limit(f,x,0,leftans=09.6.2 微分 照片第256页9.6.2 微分

25、运用举例:知f(x)=eax+b,F(x,y)=ax+by;by,求df/dx、df/da、df/db、d2f/dx2和Jocabian矩阵J=F/(x,y)diff(f,x)ans=a*exp(a*x)diff(f,a)ans=x*exp(a*x)diff(f,b)ans=1 J=jacobian(F,x,y)J=a,b 0,b J=jacobian(F)J=x,y,a,b 0,y,0,b syms x y a b f=exp(a*x)+b f=exp(a*x)+b F=a*x+b*y;b*y F=a*x+b*y b*y9.6.3 积分 函数积分是微分的反运算,对符号函数f,f的积分是使di

26、ff(F)=f的F,用F=int(f)表示。同diff类似,假设f为多变量符号表达式,用户应该指定对某个自变量求积分,即F=int(f,v);假设v未指定,那么v设定为由函数fingsym(f,1)决议的默许符号变量。运用举例:例:求以下积分 1/xdx、cos(ax+b)dx、cosx2dx syms x a b n;int(1/x)ans=log(x)int(cos(a*x+b),x)ans=1/a*sin(a*x+b)int(cos(x2)ans=1/2*2(1/2)*pi(1/2)*FresnelC(2(1/2)/pi(1/2)*x)9.6.5 级数求和运用举例:例:symsum求级数

27、:k2 syms k;symsum(k2,k,0,k-1)ans=1/3*k3-1/2*k2+1/6*kk=0n-19.7 符号方程求解 方程求解在数学实际研讨、实践运用中都是一类非常重要的问题,也是符号运算关注的一个主要内容。MATLAB符号工具箱对符号方程求解提供了强大的支持。本节主要引见普通代数方程、线性代数方程组、常微分方程的符号求解。9.7.1 普通代数方程运用举例:例:求一元二次方程的ax2+bx+c=0符号解 solve(a*x2+b*x+c=0,x)ans=1/2/a*(-b+(b2-4*a*c)(1/2)1/2/a*(-b-(b2-4*a*c)(1/2)运用举例:例:求代数方

28、程组 的解 x,y=solve(x2+y2=a2,x*y=b,x,y)x=b/(1/2*(a2+2*b)(1/2)+1/2*(a2-2*b)(1/2)b/(1/2*(a2+2*b)(1/2)-1/2*(a2-2*b)(1/2)b/(-1/2*(a2+2*b)(1/2)+1/2*(a2-2*b)(1/2)b/(-1/2*(a2+2*b)(1/2)-1/2*(a2-2*b)(1/2)y=1/2*(a2+2*b)(1/2)+1/2*(a2-2*b)(1/2)1/2*(a2+2*b)(1/2)-1/2*(a2-2*b)(1/2)-1/2*(a2+2*b)(1/2)+1/2*(a2-2*b)(1/2)-

29、1/2*(a2+2*b)(1/2)-1/2*(a2-2*b)(1/2)运用举例:并不是一切的代数方程都存在解,当解不存在时,solve前往空的符号,并且Matlab会给出警告信息。例:对ex0求解 solve(exp(x)Warning:Explicit solution could not be found.In solve at 140 ans=empty sym 9.7.2 线性代数方程组运用举例:例:265页令A=a,-b,b;b,a,a,B=c;d,x=x1;x2;x3,上面的线性方程组简化为AxB,对该方程的求解要分别求通解和特解。syms a b c d;A=a,-b,b;b,a

30、,a;B=c;d;rank(A,B),rank(A)ans=ans=%所以rank(A,B)=rank(A)2 2 x_s=AB%求特解x_s=(b*d+c*a)/(a2+b2)(d*a-c*b)/(a2+b2)0运用举例:x_g=null(A)%利用null函数求通解x_g=-2*b*a/(a2+b2)-(a2-b2)/(a2+b2)1 syms r;x=r*x_g+x_s%解为通解+特解x=-2*r*b*a/(a2+b2)+(b*d+c*a)/(a2+b2)-r*(a2-b2)/(a2+b2)+(d*a-c*b)/(a2+b2)r A*x-B%验证解xans=a*(-2*r*b*a/(a2

31、+b2)+(b*d+c*a)/(a2+b2)-b*(-r*(a2-b2)/(a2+b2)+(d*a-c*b)/(a2+b2)+b*r-c b*(-2*r*b*a/(a2+b2)+(b*d+c*a)/(a2+b2)+a*(-r*(a2-b2)/(a2+b2)+(d*a-c*b)/(a2+b2)+a*r-d simplify(ans)%化简ans=0 09.7.3 符号常微分方程留意:微分方程eqn不能是符号函数运用举例:例:267 在Matlab命令窗口中输入如下代码:dsolve(Dy+a*y=0,y(0)=1,x)ans=exp(-a*x)dsolve(Dy+a*y=0,y(0)=1)ans

32、=%假设不声明,默许自变量为t exp(-a*t)与solve函数不同的是函数dsolve不支持调用格式dsolve(Dy+a*y)。在Matlab命令窗口输入以下代码:dsolve(Dy+a*y)?Undefined function or variable Dy.运用举例:留意:上面得到的微分方程符号解虽然是t或其它指定的自变量v的函数,但是由于t和v未被声明符号变量,对其求关于t或v的微分时会出错。在Matlab命令窗口输入以下代码:diff(ans,t)?Input argument“t is undefined.syms t;%定义t为符号变量 dy=diff(ans,t)dy=-a

33、*exp(-a*t)留意:微分方程eqn不能是符号函数9.8 小结符号计算的目的是实现数学推导的自动化,这对某些规模较大的问题非常有用,可以大大减少任务量;不同于数值计算,符号计算能够得到问题的准确解,可以运用于某些计算精度要求很高的场所。本节着重从运用的角度引见MATLAB的符号计算,内容由浅入深,经过本节学习应掌握以下的内容。符号计算与数值计算的差别符号对象包括符号变量、符号表达式、符号函数、符号矩阵的创建符号表达式的复合、化简符号函数符号矩阵运算符号微积分符号方程求解11.3.4 特殊符号函数 MATLAB符号工具箱对一些重要的数学函数提供了支持,9.5.8 符号矩阵的SVD分解关于符号矩阵SVD分解的相关概念,可以参考第7章数值矩阵SVD分解,这里不再赘述。需求强调的是,MATLAB符号工具箱仅支持常量符号矩阵元素为符号常量的符号矩阵的SVD分解,这其中的缘由能够是对普通的符号矩阵来说,SVD分解过于复杂而变得不可用。MATLAB中利用同名函数svd对符号矩阵进展SVD分解,其普通的调用格式为:U,S,V=svd(A)11.6.4 Taylor展开

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!