第三讲MATLAB的符号运算.ppt
第三讲第三讲 MATLAB的的符号运算符号运算 matlab 不仅具有数值运算功能,还开发了在matlab环境下实现符号计算的工具包SymbolicMath Toolbox 符号运算的功能n 符号表达式、符号矩阵的创建符号表达式、符号矩阵的创建符号表达式、符号矩阵的创建符号表达式、符号矩阵的创建n 符号线性代数符号线性代数符号线性代数符号线性代数n 因式分解、展开和简化因式分解、展开和简化因式分解、展开和简化因式分解、展开和简化n 符号代数方程求解符号代数方程求解符号代数方程求解符号代数方程求解n 符号微积分符号微积分符号微积分符号微积分n 符号微分方程符号微分方程符号微分方程符号微分方程一、符号运算的基本操作1.什么是符号运算什么是符号运算v与数值运算的区别与数值运算的区别与数值运算的区别与数值运算的区别 数值运算中必须先对变量赋值数值运算中必须先对变量赋值数值运算中必须先对变量赋值数值运算中必须先对变量赋值,然后才能然后才能然后才能然后才能参与运算。参与运算。参与运算。参与运算。符号运算无须事先对独立变量赋值符号运算无须事先对独立变量赋值符号运算无须事先对独立变量赋值符号运算无须事先对独立变量赋值,运算,运算,运算,运算结果以标准的符号形式表达。结果以标准的符号形式表达。结果以标准的符号形式表达。结果以标准的符号形式表达。2.符号变量与符号表达式符号变量与符号表达式MATLABMATLAB提供了两个建立符号对象的函数:提供了两个建立符号对象的函数:提供了两个建立符号对象的函数:提供了两个建立符号对象的函数:symsym和和和和symssyms,两个函数的用法不同。两个函数的用法不同。两个函数的用法不同。两个函数的用法不同。symsym函数函数函数函数symsym函数用来建立函数用来建立函数用来建立函数用来建立单个单个单个单个符号量,一般符号量,一般符号量,一般符号量,一般调用格式调用格式调用格式调用格式为:为:为:为:符号量名符号量名符号量名符号量名=sym(=sym(符号字符串符号字符串符号字符串符号字符串)该函数可以建立一个符号量,该函数可以建立一个符号量,该函数可以建立一个符号量,该函数可以建立一个符号量,符号字符串可以是常符号字符串可以是常符号字符串可以是常符号字符串可以是常量、变量、函数或表达式。量、变量、函数或表达式。量、变量、函数或表达式。量、变量、函数或表达式。v 建立符号变量建立符号变量 syms 函数函数MATLAB提供了另一个函数提供了另一个函数syms,一次可以定义一次可以定义多个多个符号变量。符号变量。syms函数的一般函数的一般调用格式调用格式为:为:syms 符号变量名符号变量名1 符号变量名符号变量名2 符号变量名符号变量名nNote:用这种格式定义符号变量时不要在变量名用这种格式定义符号变量时不要在变量名上加字符串分界符上加字符串分界符(),变量间用空格而不要用,变量间用空格而不要用逗号分隔。逗号分隔。v 建立符号表达式建立符号表达式 含有符号对象的表达式称为符号表达式。含有符号对象的表达式称为符号表达式。建立符号表达式有以下建立符号表达式有以下3种方法:种方法:利用单引号来生成符号表达式。利用单引号来生成符号表达式。用用sym函数建立符号表达式。函数建立符号表达式。使用已经定义的符号变量组成符号表达式。使用已经定义的符号变量组成符号表达式。y=sym(2*sin(x)*cos(x)y=2*sin(x)*cos(x)z=2*sin(x)*cos(x)z=2*sin(x)*cos(x)例、例、例例1:把字符表达式转化为符号变量。把字符表达式转化为符号变量。y=sym(2*sin(x)*cos(x)把字符表达式转化为符号变量把字符表达式转化为符号变量 y=2*sin(x)*cos(x)y=simple(y)把把y符号表达式化成最简形式符号表达式化成最简形式 y=sin(2*x)例例2:求矩阵求矩阵 的行列式值、逆和特征根。的行列式值、逆和特征根。syms a11 a12 a21 a22;A=a11,a12;a21,a22 A=a11,a12 a21,a22 DA=det(A),IA=inv(A),EA=eig(A)DA=a11*a22-a12*a21IA=a22/(a11*a22-a12*a21),-a12/(a11*a22-a12*a21)-a21/(a11*a22-a12*a21),a11/(a11*a22-a12*a21)EA=1/2*a11+1/2*a22+1/2*(a112-2*a11*a22+a222+4*a12*a21)(1/2)1/2*a11+1/2*a22-1/2*(a112-2*a11*a22+a222+4*a12*a21)(1/2)Note:采用采用syms a11 a12 a21 a21定义符号变量定义符号变量时,变量名之间只能用时,变量名之间只能用“空格符空格符”隔离,不能采用隔离,不能采用逗号或分号。逗号或分号。例例3:验证积分:验证积分:。syms A t tao w;f=int(A*exp(-i*w*t),t,-tao/2,tao/2);f=i*A*(exp(-1/2*i*tao*w)-exp(1/2*i*tao*w)/w F=simple(f)F=2*A*sin(1/2*tao*w)/w数值矩阵数值矩阵数值矩阵数值矩阵A=1,2;3,4A=1,2;3,4 A=a,b;c,d A=a,b;c,d 不识别不识别不识别不识别1 1)用用用用matlabmatlab函数函数函数函数symsym创建矩阵命令格式:创建矩阵命令格式:创建矩阵命令格式:创建矩阵命令格式:A=sym()A=sym()符号矩阵内容同数值矩阵符号矩阵内容同数值矩阵符号矩阵内容同数值矩阵符号矩阵内容同数值矩阵 需用需用需用需用symsym指令定义指令定义指令定义指令定义 需用需用需用需用 标识标识标识标识3.符号矩阵的创建符号矩阵的创建例:例:例:例:A=sym(a,2*b;3*a,0)A=sym(a,2*b;3*a,0)A=A=a,2*b a,2*b 3*a,0 3*a,0 这就完成了一个符号矩阵的创建。这就完成了一个符号矩阵的创建。这就完成了一个符号矩阵的创建。这就完成了一个符号矩阵的创建。Note:符号矩阵的每一行的两端都有方括号,这是符号矩阵的每一行的两端都有方括号,这是与与 matlab数值矩阵的一个重要区别。数值矩阵的一个重要区别。2 2)用字符串直接创建矩阵用字符串直接创建矩阵用字符串直接创建矩阵用字符串直接创建矩阵 A=a,2*b;3*a,0 A=a,2*b3*a,0 B=a,2*b;3*a,0?Undefined function or variable a.数值运算中,所有矩阵运算操作指令都比数值运算中,所有矩阵运算操作指令都比数值运算中,所有矩阵运算操作指令都比数值运算中,所有矩阵运算操作指令都比较直观、简单。例如:较直观、简单。例如:较直观、简单。例如:较直观、简单。例如:a=b+c;a=a*b a=b+c;a=a*b;A=2*a2+3*a-5A=2*a2+3*a-5等。等。等。等。而符号运算就不同了,所有涉及符号运算而符号运算就不同了,所有涉及符号运算而符号运算就不同了,所有涉及符号运算而符号运算就不同了,所有涉及符号运算的操作都可以用的操作都可以用的操作都可以用的操作都可以用专用函数专用函数专用函数专用函数来进行。这些函数作用于来进行。这些函数作用于来进行。这些函数作用于来进行。这些函数作用于符号矩阵时,是分别作用于矩阵的每一个元素。符号矩阵时,是分别作用于矩阵的每一个元素。符号矩阵时,是分别作用于矩阵的每一个元素。符号矩阵时,是分别作用于矩阵的每一个元素。二、符号运算二、符号运算1.符号矩阵运算符号矩阵运算符号矩阵运算的函数:符号矩阵运算的函数:符号矩阵运算的函数:符号矩阵运算的函数:symadd(a,b)symadd(a,b)符号矩阵的加符号矩阵的加符号矩阵的加符号矩阵的加symsub(a,b)symsub(a,b)符号矩阵的减符号矩阵的减符号矩阵的减符号矩阵的减symmul(a,b)symmul(a,b)符号矩阵的乘符号矩阵的乘符号矩阵的乘符号矩阵的乘symdiv(a,b)symdiv(a,b)符号矩阵的除符号矩阵的除符号矩阵的除符号矩阵的除sympow(a,b)sympow(a,b)符号矩阵的幂运算符号矩阵的幂运算符号矩阵的幂运算符号矩阵的幂运算symop(a,b)symop(a,b)符号矩阵的综合运算符号矩阵的综合运算符号矩阵的综合运算符号矩阵的综合运算例例例例1 1:f=f=2*x2+3*x-52*x2+3*x-5;g=;g=x2+x-7x2+x-7;法法法法:h=h=symaddsymadd(f,g)(f,g)%符号矩阵的加法运算符号矩阵的加法运算符号矩阵的加法运算符号矩阵的加法运算h=h=3*x2+4*x-12 3*x2+4*x-12法法法法:symssyms x x f=2*x2+3*x-5;g=x2+x-7;f=2*x2+3*x-5;g=x2+x-7;h=h=f+gf+gh=3*x2+4*x-12h=3*x2+4*x-12例例2:f=cos(x);g=sin(2*x);法法:symop(f,/,g,+,f,*,g)%符号矩阵的综合运算符号矩阵的综合运算ans=cos(x)/sin(2*x)+cos(x)*sin(2*x)法法:syms x f=cos(x);g=sin(2*x);f/g+f*gans=cos(x)/sin(x)+cos(x)*sin(x)符号一些特殊运算函数:符号一些特殊运算函数:符号一些特殊运算函数:符号一些特殊运算函数:symsize symsize 求符号矩阵维数求符号矩阵维数求符号矩阵维数求符号矩阵维数charploy charploy 特征多项式特征多项式特征多项式特征多项式determ determ 符号矩阵行列式的值符号矩阵行列式的值符号矩阵行列式的值符号矩阵行列式的值eigensys eigensys 特征值和特征向量特征值和特征向量特征值和特征向量特征值和特征向量inverse inverse 逆矩阵逆矩阵逆矩阵逆矩阵transpose transpose 矩阵的转置矩阵的转置矩阵的转置矩阵的转置jordan jordan 约当标准型约当标准型约当标准型约当标准型simple simple 符号矩阵简化符号矩阵简化符号矩阵简化符号矩阵简化vvdiff(f)diff(f)对对对对f f表达式的缺省变量求微分表达式的缺省变量求微分表达式的缺省变量求微分表达式的缺省变量求微分vvdiff(f,v)diff(f,v)对对对对f f表达式的指定变量表达式的指定变量表达式的指定变量表达式的指定变量v v求微分求微分求微分求微分vvdiff(f,v,n)diff(f,v,n)对对对对f f表达式的指定变量表达式的指定变量表达式的指定变量表达式的指定变量v v求求求求n n阶微分阶微分阶微分阶微分vvint(f)int(f)对对对对f f表达式的缺省变量求积分表达式的缺省变量求积分表达式的缺省变量求积分表达式的缺省变量求积分vvint(f,v)int(f,v)对对对对f f表达式的表达式的表达式的表达式的v v变量求积分变量求积分变量求积分变量求积分vvint(f,v,a,b)int(f,v,a,b)对对对对f f表达式的表达式的表达式的表达式的v v变量在(变量在(变量在(变量在(a,ba,b)区间求定积分区间求定积分区间求定积分区间求定积分2.2.符号微积分与积分变换符号微积分与积分变换符号微积分与积分变换符号微积分与积分变换微积分:微积分:intint(被积表达式被积表达式被积表达式被积表达式,积分变量积分变量积分变量积分变量,积分上限积分上限积分上限积分上限,积分下限积分下限积分下限积分下限)定积分定积分定积分定积分缺省时为不定积分缺省时为不定积分积分变换:积分变换:fourier(f)付氏变换付氏变换ifourier(f)反付氏变换反付氏变换ztrans(f)Z变换变换iztrans(f)反反Z变换变换laplace(f)拉氏变换拉氏变换ilaplace(f)反拉氏变换反拉氏变换例:例:syms a t x;f=a,t3;t*cos(x),log(x);df=diff(f)df=0,0-t*sin(x),1/x dfdt2=diff(f,t,2)dfdt2=0,6*t 0,0 dfdxdt=diff(diff(f,x),t)dfdxdt=0,0 -sin(x),0 例例例例2 2、计算二重不定积分、计算二重不定积分、计算二重不定积分、计算二重不定积分 F=int(int(x*exp(-x*y),x),y)F=1/y*exp(-x*y)例例例例3 3、1)求求fourier变换变换 syms t w;ut=sym(Heaviside(t);uw=fourier(ut)uw=pi*Dirac(w)-i/w2)求求fourier反变换验证反变换验证 Ut=ifourier(uw,w,t)Ut=1/2+1/2*Heaviside(t)-1/2*Heaviside(-t)0时刻起跳的单位时刻起跳的单位阶跃函数阶跃函数单位脉冲函数单位脉冲函数例例例例4 4、syms t s;syms a b positive;%对常数进行限定性设置对常数进行限定性设置 Dt=sym(Dirac(t-a);Ut=sym(Heaviside(t-b);Ft=Dt,Ut;exp(-a*t)*sin(b*t),t2*exp(-t);Fs=laplace(Ft,t,s)Fs=exp(-a*s),exp(-b*s)/s b/(s+a)2+b2),2/(s+1)33.3.符号代数方程求解符号代数方程求解符号代数方程求解符号代数方程求解 Matlab符号运算能够解一般的线性方程、非线符号运算能够解一般的线性方程、非线性方程及一般的性方程及一般的代数方程、代数方程组代数方程、代数方程组。命令格式:命令格式:solve(f)求一个方程的解求一个方程的解solve(f1,f2,fn)求求n个方程的解个方程的解 f=a*x2+b*x+c;f=a*x2+b*x+c;利用单引号来生成符号表达式。利用单引号来生成符号表达式。利用单引号来生成符号表达式。利用单引号来生成符号表达式。solvesolve(f)(f)对缺省变量对缺省变量对缺省变量对缺省变量x x求解求解求解求解 ansans=1/2/a*(-b+(b2-4*a*c)(1/2)1/2/a*(-b+(b2-4*a*c)(1/2)1/2/a*(-b-(b2-4*a*c)(1/2)1/2/a*(-b-(b2-4*a*c)(1/2)solvesolve(f,b)(f,b)%对指定变量对指定变量对指定变量对指定变量b b求解求解求解求解ansans=-(a*x2+c)/x-(a*x2+c)/x计算机计算机格式格式一般格式例例1、f=ax2+bx+c 求解。求解。f1=f1=solvesolve(cos(x(cos(x)=sin(x),)=sin(x),f1=f1=1/4*pi 1/4*pi f2=f2=solvesolve(tan(2*x)=sin(x)(tan(2*x)=sin(x)f2=f2=0 0 pi pi atan(1/2*(-2*3(1/2)(1/2),1/2+1/2*3(1/2)atan(1/2*(-2*3(1/2)(1/2),1/2+1/2*3(1/2)atan(-1/2*(-2*3(1/2)(1/2),1/2+1/2*3(1/2)atan(-1/2*(-2*3(1/2)(1/2),1/2+1/2*3(1/2)atan(1/2*2(1/2)*3(1/4)/(1/2-1/2*3(1/2)+pi atan(1/2*2(1/2)*3(1/4)/(1/2-1/2*3(1/2)+pi-atan(1/2*2(1/2)*3(1/4)/(1/2-1/2*3(1/2)-pi-atan(1/2*2(1/2)*3(1/4)/(1/2-1/2*3(1/2)-pi例例2、符号方程、符号方程cos(x)=sin(x),tan(2*x)=sin(x)求解求解法法法法1 1)f=f=solvesolve(x+y+z=1,x-y+z=2,2*x-y-z=1)(x+y+z=1,x-y+z=2,2*x-y-z=1)f=f=x:1x1 sym x:1x1 sym y:1x1 sym y:1x1 sym z:1x1 sym z:1x1 sym%f%f是一个构架数组,若要显示结果,必须采用是一个构架数组,若要显示结果,必须采用是一个构架数组,若要显示结果,必须采用是一个构架数组,若要显示结果,必须采用f.x,f.y,f.zf.x,f.y,f.z的援引的援引的援引的援引方式。方式。方式。方式。f.x f.x ansans=2/3 2/3例例3、解方程组、解方程组 x+y+z=1 x-y+z=2 2x-y-z=1 f.y ans=-1/2 f.z ans=5/6法法法法2 2)x,y,z=x,y,z=solvesolve(x+y+z=1,x-y+z=2,2*x-y-z=1)(x+y+z=1,x-y+z=2,2*x-y-z=1)x=x=2/3 2/3 y=y=-1/2 -1/2 z=z=5/6 5/6符号微分方程求解函数:符号微分方程求解函数:dsolve命令格式:命令格式:dsolve(f,g)vf 微分方程,可多至微分方程,可多至12个微分方程的求个微分方程的求解;解;g为初始条件为初始条件v默认自变量默认自变量为为 x,可任意指定自变量可任意指定自变量t,u等等v微分方程的各阶导数项以大写字母微分方程的各阶导数项以大写字母D表示表示 4、符号微分方程求解、符号微分方程求解 用一个函数可以方便用一个函数可以方便地得到微分方程的符号解地得到微分方程的符号解或或或y的一阶导数 Dyy的二阶导数 D2yy的 n 阶导数 Dnyy1,y2=dsolve(x1,x2,xn)返回微分方程的解返回微分方程的解例例1.S=dsolve(Dx=y,Dy=-x)输出输出S是结构对象是结构对象S=x:1x1 sym y:1x1 sym S.x ans=cos(t)*C1+sin(t)*C2 通解通解 S.y ans=-sin(t)*C1+cos(t)*C2例例例例2 2.y=dsolve(D2y+2*Dy+2*y=0,y(0)=1,Dy(0)=0)y=exp(-t)*sin(t)+exp(-t)*cos(t)ezplot(y),grid 方程解方程解y(t)的时间曲线图,的时间曲线图,y是符号对象是符号对象ezplot:一元函数绘图指令一元函数绘图指令ezplot(F)在在-2pi,2pi自变量范围中,绘制自变量范围中,绘制F曲线曲线ezplot(F,xmin,xmax)在指定自变量范围绘制在指定自变量范围绘制F曲线曲线注:注:ezplot指令,对线没有色彩、线型控制力,不允许同指令,对线没有色彩、线型控制力,不允许同时绘制多条曲线。时绘制多条曲线。例:绘制例:绘制 和其积分和其积分 在在0,4pi区间的图形。区间的图形。