您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 第五讲--MATLAB的符号计算功能
MATLAB第五讲MATLAB的符号计算功能一、符号表达式和符号矩阵的创建•1、符号变量的赋值•2、符号常量•3、符号矩阵的创建•4、符号方程的创建•5、将数字矩阵转化为符号矩阵•6、符号表达式的升幂•7、符号表达式的合并•8、变量代换二、符号函数的微积分•1、求导数•2、求积分•3、求泰勒级数taylortool(f)三、求符号方程的精确解和近似解•1、求解单个符号方程•2、对代数方程组求解四、符号矩阵的基本运算•1、加、减、乘•2、求逆运算•3、求符号矩阵的除法•4、求矩阵的特征值和特征向量•5、求符号矩阵的行列式•6、求符号矩阵的约当矩阵•7、求符号矩阵的奇异值五、符号函数画图六、求符号函数的零点七、求微分方程的解一、入门Symbolic工具包•MATLAB有一个符号计算工具包叫作SymbolicMathToolbox其中有60多个专用函数。包括微积分、线性代数、方程求解、多项式的简约与展开、特殊数学函数等。•sym的指令在C:\MATLAB6p1\toolbox\symbolic,如果在搜索路境中没有设定则要添加。符号表达式和符号矩阵的创建•符号表达式是数字、函数、变量的MATLAB字符串,或字符串数组。•符号运算是指使用已知的规则和给定的符号恆等式求解符号方程。•生成符号表达式用引号或sym函数•例M=[a,b;c,d]???Undefinedfunctionorvariable'a'.M=sym(‘[a,b;c,d]’)M=sym('[a,b;c,d]')M=[a,b][c,d]1、符号变量的赋值f1='sin(x)^2’;f2='exp(-x^2/2)’;f3='1/(1+x^2)’;f1=sin(x)^2f2=exp(-x^2/2)f3=1/(1+x^2)符号常量•没有变量的符号表达式叫作符号常量a2='3'a2=3a2+1ans=52a2是一个符号常量,它是用ASCII码来存储的,‘3’的ASCII码是51因此a2+1得到的是52而不是4(1)sym命令M1=sym('[sin(x),cos(x);-cos(x),sin(x)]')M1=[sin(x),cos(x)][-cos(x),sin(x)](2)直接输入法M2=['[1+x+x^2,sin(x)]';'[cos(x),x^2]']M2=[1+x+x^2,sin(x)][cos(x),x^2]2、符号矩阵的创建3、符号方程的创建EQF='a*x^2+b*x+c=0'EQF=a*x^2+b*x+c=0M=[2/3,sqrt(3)/3,0.333;2.5,1/0.7,log(3)]M=0.66670.57740.33302.50001.42861.0986fuhaoM=sym(M)fuhaoM=[2/3,sqrt(1/3),333/1000][5/2,10/7,4947709893870346*2^(-52)]4、将数字矩阵转化为符号矩阵5、isstr()用来检测变量是否符号变量•例a2='3'a2=3isstr(a2)ans=1a3=3a3=3isstr(a3)ans=0用引号定义的a2是符号变量用普通的赋值定义的变量不是符号变量6、符号表达式的升幂f='2*x^2+3*x-5';sympow(f,'3')ans=(2*x^2+3*x-5)^37、符号表达式的合并f1='sin(x)';f2='sin(2*x)';f3=symop(f1,'/',f2,'+',3)f3=sin(x)/sin(2*x)+38、变量代换f1='1/(1+x^2)';f2='sin(x)';subs(f1,'s','x')ans=1/(1+(s)^2)subs(f2,'alpha','x')ans=sin((alpha))例1计算符号函数的导数f=‘sin(x)^2’%定义函数的符号表达式f=sin(x)^2diff(f)ans=2*sin(x)*cos(x)diff(f,2)ans=2*cos(x)^2-2*sin(x)^2二、符号函数的微积分1、求导diff(f)f=‘sin(x)^2’;int(f,'x')ans=-1/2*sin(x)*cos(x)+1/2*xint('1/(1+x^2)')ans=atan(x)2、符号函数求积分inf(f)例f='sin(x)^2';taylortool(f)3、求泰勒级数taylortool(f)在框中可以交互作用,给出所需的阶数,立即返回表达式和图形。•几个常用命令•Solve(‘方程’)%求精确解•vpa(S,n)%求n位有效数字的近似解•numeric(S)%将不含自由自变量的近似解转•化为数值解•digits(n)%设定近似解的有效位数•subs(S,Dsym,Fsym)%将数值Fsym带入自变•量Dsym三、求符号方程的精确解和近似解R1=solve('x^2-x-1=0')R1=[1/2*5^(1/2)+1/2][1/2-1/2*5^(1/2)]RV=vpa(R1)RV=[1.6180339887498948482045868343657][-.61803398874989484820458683436570]RV4=vpa(R1,4)RV4=[1.618][-.6180]例对符号方程求解RV30=vpa(R1,16)RV30=[1.618033988749895][-.6180339887498950]numeric(R1)ans=1.6180-0.61801、求解单个符号方程solve(‘a*x^2+b*x+c=0’)%默认对缺省变量x求解ans=[1/2/a*(-b+(b^2-4*a*c)^(1/2))][1/2/a*(-b-(b^2-4*a*c)^(1/2))]solve(‘a*x^2+b*x+c’,‘b’)%对b求解ans=-(a*x^2+c)/x2、对代数方程组求解equ1='d+(n+p)/2=q';equ2='p=n+d+q-10';equ3='q+d=p+n/4';equ4='q+p=n+8*d-1';[r1,r2,r3,r3]=solve(equ1,equ2,equ3,equ4,'p,n,d,q')r1=3r2=8r3=15r3=151、加、减、乘symadd(A,B)%符号加symsub(A,B)%符号减symmul(A,B)%符号乘四、符号矩阵的基本运算例formatcompactA=sym('[a11,a12;a21,a22]')B=sym('[b11,b12;b21,b22]')C=symadd(A,B)C=[a11+b11,a12+b12][a21+b21,a22+b22]D=symsub(A,B)D=[a11-b11,a12-b12][a21-b21,a22-b22]E=symmul(A,B)E=[a11*b11+a12*b21,a11*b12+a12*b22][a21*b11+a22*b21,a21*b12+a22*b22]例求二阶符号矩阵的逆M=sym('[a,b;c,d]')M=[a,b][c,d]inv(M)ans=[d/(a*d-b*c),-b/(a*d-b*c)][-c/(a*d-b*c),a/(a*d-b*c)]2、求逆运算3、求符号矩阵的除法symdiv(A,B)ans=[-1/(-b11*b22+b12*b21)*(b22*a11-b21*a12),(-b11*a12+a11*b12)/(-b11*b22+b12*b21)][-1/(-b11*b22+b12*b21)*(-b21*a22+b22*a21),(-b11*a22+a21*b12)/(-b11*b22+b12*b21)]4、求矩阵的特征值和特征向量•[V,a]=eigensys(A)V=[-(1/2*a22-1/2*a11-1/2*(a22^2-2*a11*a22+a11^2+4*a12*a21)^(1/2))/a21,-(1/2*a22-1/2*a11+1/2*(a22^2-2*a11*a22+a11^2+4*a12*a21)^(1/2))/a21][1,1]a=[1/2*a11+1/2*a22+1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2),0][0,1/2*a11+1/2*a22-1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)]5、求符号矩阵的行列式例A=sym(‘[a11,a12;a21,a22]’)%定义符号矩阵A=[a11,a12][a21,a22]detA=determ(A)detA=a11*a22-a12*a21f=sym('[1/2,1/4;1/4,1/2]')f=[1/2,1/4][1/4,1/2][V,J]=jordan(f)V=[1/2,1/2][-1/2,1/2]J=[1/4,0][0,3/4]6、求符号矩阵的约当矩阵inv(V)AV7、求符号矩阵的奇异值M=sym(magic(3))%构造3阶魔方阵M=[8,1,6][3,5,7][4,9,2]singvals(M)%求奇异值ans=[15][2*3^(1/2)][4*3^(1/2)]fplot('function',[a,b])%画出函数f(x)在[a,b]上的图形例画出函数在[0,8]上的图形f='2*exp(-x)*sin(x)';%定义函数fplot(f,[0,8])五、符号函数画图•fzero(fun,[a,b],[],options)•在求零点之前先要确定一个根的隔离区间,也就是说,[a,b]区间内有且仅有函数的一个零点,这里采用的是对分法求零点。•fzero(fun,x0)%用牛顿法求零点。•例求函数的零点•fx='x^3-x+1';•a=fzero(fx,-1)六、求符号函数的零点七、求微分方程的解dsolve(‘Dy=1+y^2’)%求通解ans=tan(t+C1)dsolve(‘Dy=1+y^2’,‘y(0)=1’)%求特解ans=tan(t+1/4*pi)求二阶微分方程的解y=dsolve('D2y-2*Dy-3*y=0')y=C1*exp(3*t)+C2*exp(-t)y=dsolve('D2y-2*Dy-3*y=0','y(0)=0,y(1)=1')y=1/(exp(3)-exp(-1))*exp(3*t)-1/(exp(3)-exp(-1))*exp(-t)y=simple(y)%化简表达式y=(exp(3*t)-exp(-t))/(exp(3)-exp(-1))ezplot(y,[-6,2])画出二阶微分方程的解的图形求微分方程组的解[f,g]=dsolve('Df=3*f+4*g','Dg=-4*f+3*g')f=exp(3*t)*(cos(4*t)*C1+sin(4*t)*C2)g=-exp(3*t)*(sin(4*t)*C1-cos(4*t)*C2)练习1、求下列符号函数的零点(1)(2)建议先画出函数的图形,观察根的范围。2、求微分方程的符号解(1)(2)(3)2)(2xxf18662)(23xxxxf
本文标题:第五讲--MATLAB的符号计算功能
链接地址:https://www.777doc.com/doc-4552851 .html