您好,欢迎访问三七文档
符号计算符号计算的特点运算以推理解析的方式进行,因此不受计算误差积累问题困扰;符号计算,或给出完全正确的封闭解,或给出任意精度的数值解(当封闭解不存在时);符号计算指令的调用比较简单,经典教科书公式相近;计算所需时间较长,有时难以忍受。Matlab符号计算1符号对象2符号微积分3级数4符号方程求解建立符号对象MATLAB提供了两个建立符号对象的函数:sym和syms,两个函数的用法不同。(1)sym函数sym函数用来建立单个符号量,一般调用格式为:符号量名=sym(‘符号字符串’)该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。应用sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。Sym语法S=sym(A)x=sym('x')x=sym('x','real')k=sym('k','positive')x=sym('x','clear')S=sym(A,flag)flagisoneof'r','d','e',or'f'符号常数形成中的差异a1=[1/3,pi/7,sqrt(5),pi+sqrt(5)]a2=sym([1/3,pi/7,sqrt(5),pi+sqrt(5)])a3=sym([1/3,pi/7,sqrt(5),pi+sqrt(5)],'e')a4=sym('[1/3,pi/7,sqrt(5),pi+sqrt(5)]')a24=a2-a4a1=0.33330.44882.23615.3777a2=[1/3,pi/7,sqrt(5),6054707603575008*2^(-50)]a3=[1/3-eps/12,pi/7-13*eps/165,sqrt(5)+137*eps/280,6054707603575008*2^(-50)]a4=[1/3,pi/7,sqrt(5),pi+sqrt(5)]a24=[0,0,0,189209612611719/35184372088832-pi-5^(1/2)]fh01.m建立符号对象(2)syms函数sym一次只能定义一个符号变量,使用不方便。syms一次可以定义多个符号变量。syms函数的一般调用格式为:syms符号变量名1符号变量名2…符号变量名n用这种格式定义符号变量时不要在变量名上加字符串分界符(‘),变量间用空格而不要用逗号分隔。例如:symsaxy建立符号表达式含有符号对象的表达式称为符号表达式。建立符号表达式有以下3种方法:(1)利用单引号来生成符号表达式。f='x^2+2*x'(2)用sym函数建立符号表达式。y=sym('2*sin(x)*cos(x)')(3)使用已经定义的符号变量组成符号表达式。symsaxyf=a*x^2+y符号表达式运算符号表达式的四则运算symadd(a,b)返回符号表达式a和b的和,也可直接用a+bsymsub(a,b)返回符号表达式a和b的差,也可直接用a-bsymmul(a,b)返回符号表达式a和b的积,也可直接用a*bsymdiv(a,b)返回符号表达式a和b的商,也可直接用a/bsympow(a,b)返回符号表达式a的b次幂,也可直接用a^b符号表达式运算提取分子和分母运算如果符号表达式是一个有理分式或可以展开为有理分式,可利用numden函数来提取符号表达式中的分子或分母。其一般调用格式为:[n,d]=numden(s)s的分子和分母分别存放在n与d中。符号表达式运算例题写出矩阵各元素的分子、分母多项式程序:symsx;A=[3/2,(x^2+3)/(2*x-1)+3*x/(x-1);4/x^2,3*x+4];[n,d]=numden(A)pretty(simplify(A))%pretty(f)将符号表达式化简成%与高等数学课本上显示符号表达式形式类似434131232322xxxxxxfh02.m符号表达式运算符号表达式的因式分解与展开factor(s):对符号表达式s分解因式expand(s):对符号表达式s进行展开collect(s):对符号表达式s合并同类项collect(s,v):对符号表达式s按变量v合并同类项符号表达式运算符号表达式的化简simplify(s):应用函数规则对s进行化简。simple(s):调用MATLAB的其他函数对表达式进行综合化简,并显示化简过程。符号表达式运算符号表达式与数值表达式之间的转换sym:将数值表达式变换成符号表达式numeric或eval:将符号表达式变换成数值表达式符号表达式中变量的确定findsym(s,n)函数返回符号表达式s中的n个符号变量,若没有指定n,则返回s中的全部符号变量。例:symsabxXY;k=sym('3');z=sym('c*sqrt(delta)+y*theta');EXPR=a*z*X+(b*x^2+k)*Y;findsym(EXPR)ans=X,Y,a,b,c,delta,x,yfh03.m符号矩阵符号矩阵也是一种符号表达式,所以前面介绍的符号表达式运算都可以在矩阵意义下进行。但应注意这些函数作用于符号矩阵时,是分别作用于矩阵的每一个元素。transpose(s):返回s矩阵的转置矩阵。determ(s):返回s矩阵的行列式值。其实,曾介绍过的许多应用于数值矩阵的函数,如diag、triu、tril、inv、det、rank、eig等,也可直接应用于符号矩阵。置换subs(f,old,new):f为符号表达式,new与old是字符、字符串或其他的符号表达式,new字符串将替换符号表达式f中的old字符串置换——例题symsax;f=a*sin(x)+5;f1=subs(f,'sin(x)',sym('y'))f1=a*y+5f2=subs(f,{a,x},{2,sym(pi/3)})f2=3^(1/2)+5f3=subs(f,{a,x},{2,pi/3})f3=6.7321f4=subs(subs(f,a,2),x,0:pi/6:pi)f4=5.00006.00006.73217.00006.73216.00005.0000f5=subs(f,{a,x},{0:6,0:pi/6:pi})f5=5.00005.50006.73218.00008.46417.50005.0000fh04.m符号微积分符号极限limit函数的调用格式为:limit(f,x,a):求符号函数f(x)的极限值。即计算当变量x趋近于常数a时,f(x)函数的极限值。limit(f,a):求符号函数f(x)的极限值。由于没有指定符号函数f(x)的自变量,则使用该格式时,符号函数f(x)的变量为函数findsym(f)确定的默认自变量,即变量x趋近于a。。符号微积分符号极限limit函数的调用格式为:limit(f):求符号函数f(x)的极限值。符号函数f(x)的变量为函数findsym(f)确定的默认变量;没有指定变量的目标值时,系统默认变量趋近于0,即a=0的情况。limit(f,x,a,‘right’):求符号函数f的极限值。‘right’表示变量x从右边趋近于a。limit(f,x,a,‘left’):求符号函数f的极限值。‘left’表示变量x从左边趋近于a。符号微积分符号导数diff函数用于对符号表达式求导数。该函数的一般调用格式为:diff(s):没有指定变量和导数阶数,则系统按findsym函数指示的默认变量对符号表达式s求一阶导数。diff(s,‘v’):以v为自变量,对符号表达式s求一阶导数。diff(s,n):按findsym函数指示的默认变量对符号表达式s求n阶导数,n为正整数。diff(s,'v',n):以v为自变量,对符号表达式s求n阶导数。符号微积分符号积分符号积分由函数int来实现。该函数的一般调用格式为:int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表达式s求不定积分。int(s,v):以v为自变量,对被积函数或符号表达式s求不定积分。int(s,v,a,b):求定积分运算。a,b分别表示定积分的下限和上限。该函数求被积函数在区间[a,b]上的定积分。a和b可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf)。当函数f关于变量x在闭区间[a,b]上可积时,函数返回一个定积分结果。当a,b中有一个是inf时,函数返回一个广义积分。当a,b中有一个符号表达式时,函数返回一个符号函数。符号微积分积分变换常见的积分变换有傅立叶变换、拉普拉斯变换和Z变换。傅立叶(Fourier)变换fourier(f,x,t):求函数f(x)的傅立叶像函数F(t)。ifourier(F,t,x):求傅立叶像函数F(t)的原函数f(x)。拉普拉斯(Laplace)变换laplace(fx,x,t):求函数f(x)的拉普拉斯像函数F(t)。ilaplace(Fw,t,x):求拉普拉斯像函数F(t)的原函数f(x)。Z变换当函数f(x)呈现为一个离散的数列f(n)时,对数列f(n)进行z变换的MATLAB函数是:ztrans(fn,n,z):求fn的Z变换像函数F(z)。iztrans(Fz,z,n):求Fz的z变换原函数f(n)。级数求无穷级数的和需要符号表达式求和函数symsum,其调用格式为:symsum(s,v,n,m)其中s表示一个级数的通项,是一个符号表达式。v是求和变量,v省略时使用系统的默认变量。n和m是求和的开始项和末项。taylor(f,v,n,a)该函数将函数f按变量v展开为泰勒级数,展开到第n项(即变量v的n-1次幂)为止,n的缺省值为6。v的缺省值与diff函数相同。参数a指定将函数f在自变量v=a处展开,a的缺省值是0。符号方程求解符号代数方程求解:solve(s):求解符号表达式s的代数方程,求解变量为默认变量。solve(s,v):求解符号表达式s的代数方程,求解变量为v。solve(s1,s2,…,sn,v1,v2,…,vn):求解符号表达式s1,s2,…,sn组成的代数方程组,求解变量分别v1,v2,…,vn。符号方程求解符号常微分方程求解:在MATLAB中,用大写字母D表示导数。例如,Dy表示y',D2y表示y'',Dy(0)=5表示y'(0)=5。D3y+D2y+Dy-x+5=0表示微分方程y'''+y''+y'-x+5=0。符号常微分方程求解可以通过函数dsolve来实现,其调用格式为:dsolve(e,c,v)该函数求解常微分方程e在初值条件c下的特解。参数v描述方程中的自变量,省略时按缺省原则处理,若没有给出初值条件c,则求方程的通解。dsolve在求常微分方程组时的调用格式为:dsolve(e1,e2,…,en,c1,…,cn,v1,…,vn)该函数求解常微分方程组e1,…,en在初值条件c1,…,cn下的特解,若不给出初值条件,则求方程组的通解,v1,…,vn给出求解变量。
本文标题:符号计算
链接地址:https://www.777doc.com/doc-3474592 .html