您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 其它文档 > 第3章 Matlab的符号运算功能
第三章MATLAB的符号运算除了数值运算以外,在数学、工程和其他应用科学中还经常用到符号运算。MATLAB和著名的符号运算语言MAPLE相结合,为用户提供了集符号运算与符号可视化为一体的符号运算功能.符号运算的内容•符号线性代数•微分、积分、泰勒展开•符号代数方程求解•符号微分方程1.符号运算与数值运算的区别※数值运算中必须先对变量赋值,然后才能参与运算.※符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达.特点:运算对象可以是没赋值的符号变量可以获得任意精度的解2.符号变量与符号表达式在使用符号变量之前,要声明哪些是符号变量,定义方法如下:x=sym(‘x’);%symbolic的缩写y=sym(‘y’);或:symsxy%以空格间隔,不能用“,”符号表达式f=x*y+2*x3.符号矩阵的定义及代数运算符号矩阵定义,与普通矩阵类似。symsabcdxA=[ab;cd];=sym(‘[ab;cd]’)B=[2*a+b,3*b;5*c+d,2*d]=sym(‘[2*a+b,3*b;5*c+d,2*d]’)符号矩阵的加、减、乘、除运算•A+B;symadd(A,B)sym(A)+sym(B)•A-B;symsub(A,B)sym(A)-sym(B)•A*B;symmul(A,B)sym(A)*sym(B)•A/B;symdiv(A,B)sym(A)/sym(B)显然:•参与加减运算的符号矩阵必须具有相同的维数.•参与乘除运算的矩阵符合矩阵乘法定义.4.符号变量替换当得到一个符号解或者在一个符号表达式中,需要将一些符号变量替换成数字或其他符号.•subs(s,new):用新变量new替换s中的默认变量。•subs(s,new,old):用新变量new替换s中的指定变量old。•diff(f)—对缺省变量求微分•diff(f,v)—对指定变量v求微分•diff(f,v,n)—对指定变量v求n阶微分•int(f)—对f表达式的缺省变量求积分•int(f,v)—对f表达式的v变量求积分•int(f,v,a,b)—对f表达式的v变量在(a,b)区间求定积分5.符号微积分与积分变换例3-1symsxtf1=sin(x^2);f2=t^6;r1=diff(f1,x);r2=diff(f2,t,6);结果r1=2*x*cos(x^2)r2=720•int(-2*x/(1+x^2)^2)returns1/(1+x^2)•int(x/(1+z^2),z)returnsx*atan(z)•int(x*log(1+x),0,1)returns1/4•int(2*x,sin(t),1)returns1-sin(t)^2int(‘被积表达式’,‘积分变量’,‘积分下限’,‘积分上限')——定积分——缺省时为不定积分taylor(f,n)——泰勒级数展开laplace(f)——拉氏变换ilaplace(f)——反拉氏变换ztrans(f)——Z变换iztrans(f)——反Z变换fourier(f)——傅里叶变换ifourier(f)——反傅里叶变换6.符号代数方程求解matlab符号运算能够解一般的线性方程、非线性方程及一般的代数方程、代数方程组。当方程组不存在符号解时,又无其他自由参数,则给出数值解。命令格式:solve(f)——求一个方程的解Solve(f1,f2,…fn)——求n个方程的解例3-2.f=ax2+bx+c求解symsabcx;f=a*x^2+b*x+c;•solve(f)——对缺省变量x求解ans=[1/2/a*(-b+(b^2-4*a*c)^(1/2))][1/2/a*(-b-(b^2-4*a*c)^(1/2))]计算机格式aacbb242一般格式例3-3.符号方程cos(x)=sin(x)求解f1=solve('cos(x)=sin(x)'),f1=1/4*pi•numeric(f1)ans=0.7854•solve(f,b)——对指定变量b求解ans=-(a*x^2+c)/x例3-4.解方程组x+y+z=1x-y+z=22x-y-z=1g1='x+y+z=1',g2='x-y+z=2',g3='2*x-y-z=1'f=solve(g1,g2,g3)f=solve('x+y+z=1','x-y+z=2','2*x-y-z=1')f=x:[1x1sym]f.xans=2/3y:[1x1sym]f.yans=-1/2z:[1x1sym]f.zans=5/6[x,y,z]=solve('x+y+z=1','x-y+z=2','2*x-y-z=1')x=2/3y=-1/2z=5/6•或者clc;clear;symsxyz;g1=x+y+z-1;g2=x-y+z-2;g3=2*x-y-z-1f=solve(g1,g2,g3)7.符号微分方程求解——用一个函数可以方便地得到微分方程的符号解符号微分方程求解指令:dsolve命令格式:dsolve(f,g)•f——微分方程,可多至12个微分方程的求解;g为初始条件•默认自变量为'x',可任意指定自变量't','u'等•微分方程的各阶导数项以大写字母D表示dtdydxdy22dtydnndtyd22dxydnndxyd或或或y的一阶导数——Dyy的二阶导数——D2yy的n阶导数——Dny[y1,y2…]=dsolve(x1,x2,…xn)——返回微分方程的解例子3-5一阶微分方程dsolve('Dy=a*y')ans=C1*exp(a*t)例子3-6二阶微分方程dsolve('D2y=-a^2*y','y(0)=1','Dy(pi/a)=0')ans=cos(a*x)例3-7y=dsolve('D2y+2*Dy+2*y=0','y(0)=1','Dy(0)=0')y=exp(-x)*cos(x)+exp(-x)*sin(x)ezplot(y)——方程解y(t)的时间曲线图22dxyddxdy202y00)(dxdy,1)0(y求该方程的解-6-4-2024050100150200250300xexp(-x)*cos(x)+exp(-x)*sin(x)-6-4-2024050100150200250texp(-t)sin(t)+exp(-t)cos(t)matlab语言把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的。f(x)=anxn+an-1xn-1+……+a0可用行向量p=[anan-1……a1a0]表示(1)poly——产生特征多项式系数向量•特征多项式一定是n+1维的•特征多项式第一个元素一定是18、多项式运算例:a=[123;456;780];p=poly(a)%lamda*I-ap=1.00-6.00-72.00-27.00p是多项式p(x)=x3-6x2-72x-27的matlab描述方法,我们可用:p1=poly2str(p,‘x’)—函数文件,显示数学多项式的形式p1=x^3-6x^2-72x-27(2).roots——求多项式的根a=[123;456;780];p=poly(a)p=1.00-6.00-72.00-27.00r=roots(p)r=12.12-5.73——显然r是矩阵a的特征值-0.39当然我们可用poly令其返回多项式形式p2=poly(r)p2=1.00-6.00-72.00-27.00•matlab规定多项式系数向量用行向量表示,一组根用列向量表示。(3).conv多项式乘运算例:a(x)=x2+2x+3;b(x)=4x2+5x+6;c=(x2+2x+3)(4x2+5x+6)a=[123];b=[456];c=conv(a,b)=conv([123],[456])c=4.0013.0028.0027.0018.00p=poly2str(c,'x')p=4x^4+13x^3+28x^2+27x+18(4).deconv多项式除运算a=[123];c=[4.0013.0028.0027.0018.00]d=deconv(c,a)d=4.005.006.00[d,r]=deconv(c,a)余数c除a后的整数(5).多项式微分matlab提供了polyder函数多项式的微分。命令格式:polyder(p):求p的微分polyder(a,b):求多项式a,b乘积的微分[p,q]=polyder(a,b):求多项式a,b商的微分例:a=[12345];poly2str(a,'x')ans=x^4+2x^3+3x^2+4x+5b=polyder(a)b=4664poly2str(b,'x')ans=4x^3+6x^2+6x+4在微积分中,求极限是非常普遍的.symshnxdc=limit((sin(x+h)-sin(x))/h,h,0)dc=cos(x)limit(f,x,a)%f函数中x趋向于a的极限.limit(f,x,a,’left’)%左极限.limit(f,x,a,’right’)%右极限.9、求极限有时MATLAB返回的符号表达式难以理解,有必要使表达式更易读懂.•collect()%合并同类项•factor()%因式或因子分解•numden()%提取公因式•simple()%最简化表达式,最常用•pretty()%习惯方式显示10、符号表达式化简
本文标题:第3章 Matlab的符号运算功能
链接地址:https://www.777doc.com/doc-3611716 .html