资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第七讲 符号计算,符号计算是数字运算的自然扩展,其特点包括:,不受计算误差的困扰;,计算可以给出完全正确的封闭解或任意精度的数值解;,计算的指令比较简单,所需要的时间较长。,目录,7.1,符号计算入门,7.2,符号对象的创建和使用,7.3,符号表达式的化简,7.4,符号微积分,7.5,符号方程求解,7.1,符号计算入门,1,求解代数方程,2,求解微分方程,3,计算导数,4,计算定积分,自然科学理论分析中的公式、关系式及其推导是符号计算要解决的问题。,MATLAB,数值计算的对象是数值,而符号计算的对象则是非数值的符号字符串。,1,求解代数方程,2,求解微分方程,3,计算导数,4,计算定积分,7.2,符号对象的创建和使用,7.2.1,创建符号对象和表达式,7.2.2,符号和数值之间的转换,在符号计算中,需定义一种新的数据类型,sym,类。,sym,类的实例就是符号对象,符号对象是一种数据结构,用来存储代表符号变量、表达式和矩阵的字符串。,7.2.1,创建符号对象和表达式,1,符号常量,2,符号变量,3,符号表达式,4,符号矩阵,函数,sym(),和命令,syms,创建符号常量、变量、函数以及表达式,(,1,)函数,sym(),函数,sym(),的具体使用方法如下:,s,sym(A,),;,s,sym(A,),(,2,)命令,syms,命令,syms,的具体使用方法如下:,syms,s1 s2,sn,注,:,各变量间用空格分隔,不用逗号,1,符号常量,符号常量是一种符号对象。数值常量如,果作为函数命令,sym(),的输入参量,就建立,了一个符号对象,符号常量。,2,符号变量,符号变量通常是由一个或几个特定的字符表示。符号变量的命名规则如下所示:,变量名可以由英文字母、数字和下划线组成;,变量名应以英语字母开头;,组成变量名的字母长度不大于,31,个;,区分大小写。,3,符号表达式,符号表达式是由以下部分组成的符号对象:,符号常量;,符号变量;,符号运算符;,专用函数。,Matlab,中,大部分运算符和函数支持符号运算。,4,符号矩阵,元素是符号对象的矩阵叫做符号矩阵。,7.2.2,符号和数值之间的转换,1.Subs,函数:,subs(S,),subs(S,new),S,是符号表达式,,new,是新代入的变量或值,2.,Vpa,函数:,vpa(S,),vpa(S,D,),S,是符号表达式,,D,是有效数字个数,例:,syms x,y=x+x2,y=,x2+x,subs(y,3),ans=,12,subs(y,pi),ans=,pi2+pi,vpa(ans),ans=,13.011197054679151857,vpa(ans,7),ans=,13.0112,7.3,符号表达式的化简,MATLAB,提供函数实现对符号计算的结果进行化简和替换,如:,因式分解;,同类项合并;,符号表达式展开、化简;,通分、符号替换。,工具:,1,函数,collect(),2,函数,expand(),3,函数,horner,(),4,函数,factor(),5,函数,simplify(),6,函数,simple(),1,函数,collect(),函数,collect(),将符号表达式中同类项合并,其具体使用方法如下:,R=,collect(,S,),:将表达式,S,中的相同次幂的项合并;,R=,collect(,S,v,),:将表达式,S,中变量,v,的相同次幂的项合并。,例:,z=sym(2*x2+3*x2+9*x),z=,2*x2+3*x2+9*x,collect(z),ans=,5*x2+9*x,2,函数,expand(),函数,expand(),将符号表达式进行展开,其具体使用方法如下:,R=,expand(,S,),:将表达式,S,中的各项进行展开。,例:,u=sin(2*x),u=,sin(2*x),expand(u),ans=,2*cos(x)*sin(x),3,函数,horner,(),函数,horner,(),将符号表达式转换成嵌套形式,其具体使用方法如下:,R=,horner(S,),:将符号多项式矩阵,S,中的每个多项式转换成它们的嵌套形式。,4,函数,factor(),函数,factor(),对符号多项式进行因式分解,其具体使用方法如下:,R=,factor(,X,),如果,X,是一个多项式或多项式矩阵,该函数将,X,表示成低阶多项式相乘的形式;如果,X,不能分解成有理多项式乘积的形式,则返回,X,本身。,例:,t=x4-1,t=,x4-1,factor(t),ans=,(x-1)*(x+1)*(x2+1),5,函数,simplify(),函数,simplify(),将符号表达式按一定规则简化,其具体使用方法如下:,R=,simplify(,S,),:该函数可应用于包含和式、方根、分数的乘方、等符号表达式矩阵,S,。,例:,r=sin(x)*cos(x),r=,cos(x)*sin(x),simplify(r),ans=,sin(2*x)/2,6,函数,simple(),该函数是将符号表达式表示成最简形式,其具体使用方法如下:,r=,simple(S,),用几种不同的算术简化规则对符号表达式进行简化,并显示中间过程;,7.4,符号微积分,1,符号表达式的极限,2,符号表达式的微分,3,符号表达式的积分,4,级数求和,5,泰勒级数,1,符号表达式的极限,函数,limit(),求表达式的极限,其具体用法如下:,limit(,F,x,a,),:求当,xa,时,符号表达式,F,的极限;,limit(,F,a,),:求符号表达式,F,的默认自变量趋近于,a,时的极限;,limit(,F,),:求符号表达式,F,的默认自变量趋近于,0,时的极限;,limit(,F,x,a,right,),或,limit(,F,x,a,left,),:分别求取符号表达式,F,的右极限和左极限。,例:,y=2*sin(x)/x,y=,(2*sin(x)/x,limit(y,x,0),ans=,2,函数,diff(),求表达式的微分,其具体用法如下:,diff(,S,v,),:将符号“,v,”,视作变量,对符号表达式或矩阵,S,求微分;,diff(,S,n,),:将,S,中的默认变量求,n,阶微分;,diff(,S,v,n,),:将符号“,v,”,视作变量,对符号表达式或矩阵,S,求,n,阶微分。,2,符号表达式的微分,函数,int,(),求表达式的积分,其具体用法如下:,R=,int(,S,),:用默认变量求符号表达式,S,的不定积分;,3,符号表达式的积分,R=,int(S,v,),:用符号标量,v,作为变量求符号表达式,S,的不定积分值;,R=,int(,S,a,b,),:符号表达式采用默认变量;,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,的有限和。,4,级数求和,例:,y=1/n2,y=,1/n2,symsum(y,1,inf),ans,=,pi2/6,函数,taylor,(),对符号表达式进行泰勒级数展开,其具体用法如下:,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,阶泰勒展开式。,5,泰勒级数,例:,y=,cos(x,);,taylor(y,5),ans=,x4/24-x2/2+1,7.5,符号方程求解,1,代数方程,2,微分方程,符号方程可以分为代数方程和微分方程。,代数方程可以细分为线性方程和非线性方程两类;,微分方程可以细分为常微分方程和偏微分方程。,1,代数方程,函数,solve(),求解代数方程,其具体用法如下:,g=,solve(,eq,),:其中,eq,可以是符号表达式或不带等号的字符串,该函数求解方程,eq,=0,;,g=,solve(,eq,var,),:求解方程,eq,=0,,其自变量由参数,var,指定;,g=solve(,eq1,eq2,eq,n,),:求解由符号表达式或不带等号的字符串,eq,1,,,eq,2,,,,,eqn,组成的方程组;,g=solve(,eq1,eq2,eq,n,var1,var2,var,n,),:求解由符号表达式或不带等号的字符串,eq,1,,,eq,2,,,,,eqn,组成的方程组。,2,微分方程,函数,dsolve,(),求解微分方程,其具体用法如下。,r=dsolve(,eq1,eq2,cond1,cond2,v,),:求由,eq,1,,,eq,2,指定的常微分方程组的符号解;,r=,dsolve(,eq1,eq2,cond1,cond2,v,),:求由,eq,1,,,eq,2,指定的常微分方程组的符号解。,END,
展开阅读全文