第4章MATLAB符号计算.ppt
第4章 MATLAB符号计算第4章MATLAB符号计算 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望第4章 MATLAB符号计算4.1 符号函数的计算符号函数的计算一、符号变量和符号矩阵一、符号变量和符号矩阵 函数:符号变量名=sym(表达式)说明:创建一个符号变量。表达式可以是变量、字符、字符串、数学表达式或字符表达式等。函数:syms 变量名1 变量名2 变量名3 说明:一次创建多个符号变量。第4章 MATLAB符号计算使用使用sym函数定义符号变量函数定义符号变量n sqrt(2)nans=n 1.4142n a=sqrt(sym(2)n a=n 2(1/2)n sym(2)/sym(5)nans=n 2/5第4章 MATLAB符号计算使用使用sym函数定义符号表达式函数定义符号表达式n a=sym(a);n b=sym(b);n c=sym(c);n x=sym(x);n f=a*x2+b*x+cnf=na*x2+b*x+c f=sym(a*x2+b*x+c)f=a*x2+b*x+c g=f2+4*f-2g=(a*x2+b*x+c)2+4*a*x2+4*b*x+4*c-2第4章 MATLAB符号计算注意:注意:将表达式整体定义为符号表达式时,其中的变量将表达式整体定义为符号表达式时,其中的变量并未被定义为符号变量。并未被定义为符号变量。n f=sym(m*y2+n*y)nf=nm*y2+n*y n f1=2*mn?Undefined function or variable m.第4章 MATLAB符号计算使用使用syms函数定义符号变量和符号表达式函数定义符号变量和符号表达式syms函数函数:一次可定义多个符号函数,一次可定义多个符号函数,clear syms a b c x%不能用逗号不能用逗号 f=a*x2+b*x+c f=a*x2+b*x+csyms 3?Error using=symsNot a valid variable name.第4章 MATLAB符号计算使用使用syms函数生成符号方程函数生成符号方程使用sym函数生成符号方程 equation1=sym(sin(x)+cos(x)=1)equation1=sin(x)+cos(x)=1不能采用直接法生成方程 syms x y y=x2+sin(x)%函数y=x2+sin(x)1=x2+sin(x)%方程?1=x2+sin(x)|Error:The expression to the left of the equals sign is not a valid target for an assignment.第4章 MATLAB符号计算符号变量的基本操作符号变量的基本操作1、用findsym函数寻找表达式中的符号变量 2、定义任意精确度的符号表达式 3、数值型变量与符号型变量的转换形式 第4章 MATLAB符号计算(1)findsym函数用于寻找符号变量函数用于寻找符号变量 syms a alpha b x1 y findsym(alpha+a+b)ans=a,alpha,b findsym(cos(alpha)*b*x1+14*y,2)ans=x1,y findsym(y*(4+3*i)+6*j)ans=y第4章 MATLAB符号计算(2)digits设定所用数值的精度设定所用数值的精度单独使用单独使用digits函数返回当前的数值精度函数返回当前的数值精度ndidits(D)函数将数值精度设为)函数将数值精度设为D位。位。ndigitsndigits=32n digits(60)n digitsdigits=60第4章 MATLAB符号计算任意精确度的符号表达式任意精确度的符号表达式vpa(s):显示符号表达式:显示符号表达式S在当前精在当前精度度D下的值下的值vpa(s,D):临时控制符号表达式):临时控制符号表达式S的的运算精度为运算精度为D digits Digits=60 vpa(pi)ans=3.14159265358979323846264338327950288419716939937510582097494 vpa(pi,10)ans=3.141592654第4章 MATLAB符号计算(3)数值型变量与符号型变量的转换数值型变量与符号型变量的转换 对于任意数字型变量,使用对于任意数字型变量,使用sym函数函数可以将其转换为可以将其转换为4种形式的符号变量:种形式的符号变量:有理数形式:有理数形式:sym(t)或或 sym(t,r)浮点数形式:浮点数形式:sym(t,f)指数形式:指数形式:sym(t,e)数字精度形式:数字精度形式:sym(t,d)第4章 MATLAB符号计算n t=0.75;n sym(t)%有理数形式有理数形式nans=n3/4 n sym(t,f)%浮点数形式浮点数形式nans=n1.8000000000000*2(-1)n sym(t,d)nans=n.75000000000000000000000000000000第4章 MATLAB符号计算n syms xn s1=x3-1;n s2=x-1;n s3=s1+s2 ns3=nx3-2+x n s4=s1-s2 ns4=nx3-x s5=s1*s2 s5=(x3-1)*(x-1)s7=s1/s2 s7=(x3-1)/(x-1)s6=s1s2 s6=(x3-1)(x-1)符号表达式的运算符号表达式的运算第4章 MATLAB符号计算化简函数化简函数 函数格式函数格式说说明明函数格式函数格式说说明明collect(s,x)合并自合并自变变量量x的同的同幂幂系数系数simple(s)寻寻找表达式的最找表达式的最简简型型expand(s)符号表达式符号表达式s的展开的展开simplify(s)符号表达式的化符号表达式的化简简factor(s)因式分解因式分解radsimp(s)对对含根式的表达式含根式的表达式s化化简简numden(s)符号表达式符号表达式s的分式通分的分式通分horner(s)符号表达式符号表达式s的嵌套形式的嵌套形式二、常用函数二、常用函数第4章 MATLAB符号计算n syms x tn f=x*(x*(x-8)+6)*t;n collect(f)nans=nt*x3-8*t*x2+6*t*x n collect(f,t)nans=nx*(x*(x-8)+6)*t第4章 MATLAB符号计算n syms xn f=factor(x3-1)n f=n(x-1)*(x2+x+1)n s=sym(sin(a+b);n expand(s)nans=nsin(a)*cos(b)+cos(a)*sin(b)第4章 MATLAB符号计算n syms x yn f=x/y-y/x;n m,n=numden(f)nm=nx2-y2 nn=ny*x第4章 MATLAB符号计算n syms xn f=sin(x)2+cos(x)2n f=n sin(x)2+cos(x)2 n simplify(f)nans=n1 n simple(f)第4章 MATLAB符号计算3替换函数替换函数 函数:函数:R,SYM=subexpr(S,SYM)说明:说明:用变量SYM(字符或字符串)的值代替符号表达式S中重复出现的字符串,R是返回替换后的结果。函数函数subs的调用格式的调用格式:R=subs(S,old,new)说明:说明:该函数是用新的符号变量new替换原来符号表达式S中的变量old,R是替换后的符号表达式。需要注意的,当变量new是数值形式时,显示的结果虽然是数值,但事实上还是符号变量,可以用vpa函数强制求值。第4章 MATLAB符号计算n syms a bn t=solve(a+b)3+(a+b)2+6)nt=n-1/3*(82+9*83(1/2)(1/3)-1/3/(82+9*83(1/2)(1/3)-1/3-an 1/6*(82+9*83(1/2)(1/3)+1/6/(82+9*83(1/2)(1/3)-1/3+1/2*i*3(1/2)*(-1/3*(82+9*83(1/2)(1/3)+1/3/(82+9*83(1/2)(1/3)-an 1/6*(82+9*83(1/2)(1/3)+1/6/(82+9*83(1/2)(1/3)-1/3-1/2*i*3(1/2)*(-1/3*(82+9*83(1/2)(1/3)+1/3/(82+9*83(1/2)(1/3)-a n r,s=subexpr(t,s);第4章 MATLAB符号计算n用用subs函数求值函数求值n y=subs(t,a,2)ny=n -4.2188 n -1.3906-1.5274in -1.3906+1.5274in vpa(y,2)nans=n -4.2n-1.4-1.5*in-1.4+1.5*i第4章 MATLAB符号计算n syms xn s=(3*x3+x2-1)/(x2+1);n r=subs(s,x,1)nr=n(3*(1)3+(1)2-1)/(1)2+1)n r=subs(s,x,1)nr=n 1.5000第4章 MATLAB符号计算三、可视化符号函数计算器三、可视化符号函数计算器 在在MATLAB的命令窗口输入的命令窗口输入funtool,即可启,即可启动可视化符号函数计算器动可视化符号函数计算器。第4章 MATLAB符号计算4.2 符号微积分符号微积分一、符号极限一、符号极限 函数格式函数格式说说明明limit(s)s为为符号表达式。在默符号表达式。在默认认表达式中的自表达式中的自变变量量趋趋向于向于0时时的的极限。极限。limit(s,a)a为为常数。表达式常数。表达式s中由默中由默认认自自变变量量趋趋向于向于a条件下的极条件下的极限。限。limit(s,x,a)计计算符号表达式算符号表达式s在在x趋趋向于向于a条件下的极限。条件下的极限。limit(s,x,a,right)计计算符号表达式算符号表达式s在在x趋趋向于向于a条件下的右极限条件下的右极限limit(s,x,a,left)计计算符号表达式算符号表达式s在在x趋趋向于向于a条件下的左极限条件下的左极限第4章 MATLAB符号计算例子:n syms x an limit(1/x,x,0,right)nans=nInf n limit(1/x,x,0,left)nans=n-Inf第4章 MATLAB符号计算二、符号求导二、符号求导函数:函数:diff(s,x,n)说明:其中s为符号表达式,x为自变量,n为求导的阶数。三、符号积分三、符号积分 函数格式函数格式说说明明函数格式函数格式说说明明int(s)符号表达式符号表达式s对对于默于默认认自自变变量的不定量的不定积积分分int(s,x)符号表达式符号表达式s对对于自于自变变量量x的不定的不定积积分分int(s,a,b)符号表达式符号表达式s对对于默于默认认自自变变量从量从a到到b的定的定积积分分int(s,x,a,b)符号表达式符号表达式s对对于自于自变变量量x从从a到到b的定的定积积分分第4章 MATLAB符号计算例子:n syms xn diff(x6)nans=n6*x5 n diff(x6,3)nans=n120*x3第4章 MATLAB符号计算n syms x yn int(x/(x+y),x)n ans=nx-y*log(x+y)n int(x/(x+y),y)nans=nx*log(x+y)n int(x2/(x+2),x,1,3)nans=n4*log(5)-4*log(3)n double(ans)nans=n 2.0433第4章 MATLAB符号计算四、积分变换四、积分变换 函数名称函数名称函数格式函数格式说说明明傅立叶傅立叶变换变换fourier(fx,x,t)fx为为函数函数f(x)的符号表达式、的符号表达式、x为为自自变变量、量、t像函像函数数F(t)的自的自变变量。量。结结果果为为函数函数f(x)的傅立叶像函的傅立叶像函数数F(t)ifourier(Fw,t,x)Fw为为函数函数F(t)的符号表达式、的符号表达式、t为为自自变变量、量、x为为原函数原函数f(x)的自的自变变量。量。结结果果为为函数函数F(t)的傅立叶的傅立叶原函数原函数f(x)拉普拉斯拉普拉斯变换变换laplace(fx,x,t)结结果果为为函数函数f(x)的拉普拉斯像函数的拉普拉斯像函数F(t)ilaplace(Fw,t,x)结结果果为为函数函数F(t)的拉普拉斯原函数的拉普拉斯原函数f(x)Z变换变换ztrans(fx,x,t)结结果果为为函数函数f(x)的的Z变换变换像函数像函数F(t)iztrans(Fw,t,x)结结果果为为函数函数F(t)的的Z变换变换原函数原函数f(x)第4章 MATLAB符号计算n syms x tn y=exp(-x2);n Ft=fourier(y,x,t)nFt=npi(1/2)*exp(-1/4*t2)n fx=ifourier(Ft,t,x)nfx=nexp(-x2)第4章 MATLAB符号计算n Lt=laplace(y,x,t)nLt=n1/2*pi(1/2)*exp(1/4*t2)*erfc(1/2*t)n Lx=ilaplace(Lt,t,x)nLx=nexp(-x2)n Zt=ztrans(y,x,t)nZt=nztrans(exp(-x2),x,t)n Zx=iztrans(Zt,t,x)nZx=nexp(-x2)第4章 MATLAB符号计算4.3 符号方程求解符号方程求解一、代数方程一、代数方程 函数格式函数格式说说明明solve(s)求解符号表达式求解符号表达式s=0的代数方程,自的代数方程,自变变量量为为默默认认自自变变量量solve(s,x)求解符号表达式求解符号表达式s=0的代数方程,自的代数方程,自变变量量为为xsolve(s1,s2,sn,x1,x2,.xn)求解由符号表达式求解由符号表达式s1,s2,sn组组成的代数方程成的代数方程组组,自,自变变量分量分别为别为x1,x2,.xn 第4章 MATLAB符号计算n syms x y zn s1=2*x2+y2-3*z-4;n s2=y+z-3;n s3=x-2*y-3*z;n x,y,z=solve(s1,s2,s3)nx=n 7/2+1/6*i*699(1/2)n 7/2-1/6*i*699(1/2)ny=n 11/2-1/6*i*699(1/2)n 11/2+1/6*i*699(1/2)nz=n-5/2+1/6*i*699(1/2)n-5/2-1/6*i*699(1/2)第4章 MATLAB符号计算二、微分方程二、微分方程 函数:r=dsolve(eq,cond,var)说明:式中eq代表常微分方程,cond代表常微分方程的边界条件或初始条件,var代表自变量,缺省取系统默认的自变量。该函数可求解微分方程的特解。函数:r=dsolve(eq1,eq2eqN,cond1,cond2condN,var1varN)说明:该函数求解由eq1,eq2,指定的常微分方程组在条件cond1,cond2,,condN下的符号解,若不给出初始条件,则求方程组的通解。var1,varN为求解变量,缺省取系统默认的自变量。第4章 MATLAB符号计算例子:例子:n y=dsolve(Dy=2*x*y2,x)n%Dy=y;D2y=y;Dy(0)=1表示表示y(0)=3ny=n-1/(x2-C1)n y=dsolve(Dy=2*x*y2,y(0)=1,x)ny=n-1/(x2-1)第4章 MATLAB符号计算n x,y=dsolve(Dx=4*x-2*y,Dy=2*x-y,t)nx=n2*C2*exp(3*t)+1/2*C1 ny=nC1+C2*exp(3*t)第4章 MATLAB符号计算4.4 级数级数一、级数的符号求和一、级数的符号求和 函数格式函数格式说说明明函数格式函数格式说说明明symsum(S)计计算符号表达式算符号表达式S(表示(表示级级数的通数的通项项)对对于默于默认认自自变变量的不定和。量的不定和。symsum(S,a,b)计计算符号表达式算符号表达式S对对于默于默认认自自变变量从量从a到到b的有限的有限和。和。symsum(S,x)计计算符号表达式算符号表达式S对对于自于自变变量量x的不定和。的不定和。symsum(S,x,a,b)计计算符号表达式算符号表达式S对对于自于自变变量量x从从a到到b的有限和。的有限和。第4章 MATLAB符号计算n syms x kn symsum(k)nans=n1/2*k2-1/2*k n symsum(k2-3,0,10)nans=n352 n symsum(xk/k,k,1,inf)nans=n-log(1-x)第4章 MATLAB符号计算二、函数的泰勒级数 函数格式函数格式说说明明函数格式函数格式说说明明taylor(s)计计算符号表达式算符号表达式s在在默默认认自自变变量等于量等于0处处的的5阶阶Taylor级级数展数展开式。开式。taylor(f,n,a)计计算符号表达式算符号表达式s在在默默认认自自变变量等于量等于a处处的的n-1阶阶Taylor级级数数展开式展开式taylor(s,n)计计算符号表达式算符号表达式s在在默默认认自自变变量等于量等于0处处的的n-1阶阶Taylor级级数数展开式。展开式。taylor(f,x,n,a)计计算符号表达式算符号表达式s在在自自变变量量x等于等于a处处的的n-1阶阶Taylor级级数展开数展开式式第4章 MATLAB符号计算n syms xn s=(1-x+x2)/(1+x+x2);n taylor(s)nans=n1-2*x+2*x2-2*x4+2*x5 n taylor(s,3)nans=n1-2*x+2*x2第4章 MATLAB符号计算符号表达式绘图符号表达式绘图nsyms x ynezplot(x2-y4)第4章 MATLAB符号计算