您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > MATLAB符号工具箱使用简介
1第1页MATLABMATLAB符号工具箱使用简介符号工具箱使用简介一、符号对象的创建二、微积分基本运算三、解方程四、符号表达式的化简和代换五、符号函数曲线的绘制第2页一、符号对象的创建在数学应用中,常常需要做极限、微分、求导数等运算,MATLAB称这些运算为符号运算。MATLAB的符号运算是通过调用符号运算工具箱(SymbolicMathToolbox)内的工具实现,其内核是借用Maple数学软件的。MATLAB的符号运算工具箱包括微积分运算、解方程、线性代数、化简和代换等几个方面的工具。符号运算工具箱处理的主要对象是符号对象,包括符号、符号变量和符号表达式。第3页用单引号界定的字符序列称为字符串。字符串是一种特殊的符号对象,在数据处理、造表和函数求值中,字符串具有重要的应用1.字符串变量的创建例1s='hello's=hello【注】①字符串中的字符可以是数字、英文字母、汉字、横线、括号、表达式等。②用赋值符号“=”把字符串赋给某个标识符,例如s,这个标识符称为字符串变量名,简称字符名。第4页2.符号变量、表达式的创建MATLAB中有两个函数定义符号变量、表达式(1)sym函数调用格式:f=sym(‘表达式’)功能:用于生成单个的符号对象。例2:sym(‘x’)ans=xy=sym(‘2+cos(x)’)y=2+cos(x)符号变量符号表达式第5页(2)syms函数调用格式:symsvar1var2var3…[flag]功能:用于生成多个符号对象,注意空格。其中flag指定符号变量的类型:real,unreal例3:symsyup=exp(-y/u)p=exp(-y/u)q=y^2+u^3+u*yq=y^2+u^3+u*y两个符号变量符号表达式符号表达式第6页调用格式:findsym(‘表达式’)功能:用于确定一个表达式中的符号变量3.符号表达式中的符号变量的确认例4:symsabcktyrealg=q+a*(2*p-1)^3-b*sin(4*y)g=y^2+u^3+u*y+a*(2*exp(-y/u)-1)^3-b*sin(4*y)findsym(g)%找出所有的符号变量ans=a,b,u,yfindsym(g,2)%找出距x最近的2个符号变量ans=y,u2第7页sqrt(2)ans=1.4142x=sqrt(sym(2))x=2^(1/2)double(x)ans=1.4142返回数值结果返回符号结果例5考察符号对象和普通数据对象之间的差别:4.将符号表达式结果转化为数值调用格式:double(‘表达式’)功能:将符号常数转化为双精度数值符号常数转化数值第8页二、微积分基本运算调用格式:limit(f,x,a[,’right/left’])功能:求f表达式在x-a时的极限(单侧极限)设a,b,t,x,y是已定义的符号变量.1.求极限例1求极限symsxaf=(x-a)/(x^2-a^2);limit(f,x,2)%求x-2时的极限ans=1/(2+a)222limxxaxa第9页limit(f,a,2)%求a-2时的极限ans=1/(x+2)limit(f)%默认x-0ans=1/alimit(1/x)%求x-0时极限不存在ans=NaNlimit(1/x,x,0,‘left’)%左极限ans=-inflimit(1/x,x,0,‘right%右极限ans=inf第10页调用格式:diff(f,v,n)功能:对指定变量v求n阶导数2.求导数例2求导数symsxat;f=sin(a*x)-cos(a*t);g1=diff(f)%默认对x求导g1=cos(a*x)*ag2=diff(f,a)%对a求导g2=cos(a*x)*x+sin(a*t)*tg3=diff(f,x,2)%对x求二阶导数g4=-sin(a*x)*a^2第11页例3对符号矩阵求导,是作用于矩阵的每个元素.symsxat;A=[sin(a*x),cos(t*x);a^2-x*t,t^2+t*x]A=[sin(a*x),cos(t*x)][a^2-x*t,t^2+t*x]dy=diff(A)%默认对x求导dy=[cos(a*x)*a,-sin(t*x)*t][-t,t]dy=diff(A,t)%对t求导dy=[0,-sin(t*x)*x][-x,2*t+x]第12页3.求积分调用格式:int(f,v[,a,b])功能:对f表达式的v变量求定积分(在区间[a,b]求定积分)例4求不定积分symsxat;f=sin(a*x);g=int(f)%默认对x求积分g=-1/a*cos(a*x)g=int(f,a)%对a求积分g=-1/x*cos(a*x)3第13页例5求定积分symsxat;f=sin(a*x);g=int(f,0,pi)%对x求定积分g=-(cos(pi*a)-1)/af=sin(a*x);g=int(f,a,0,pi)%对a求定积分g=-(cos(pi*x)-1)/xf=exp(-x^2);g=int(f,0,1)%结果无解析表达式g=1/2*erf(1)*pi^(1/2)a=double(g)a=0.7468%求定积分数值21/202(1)xerfedx第14页4.级数求和例6.计算级数调用格式:symsum(f,t,a,b)功能:对f表达式的符号变量t从a到b求级数和symsxnsymsum(1/x,1,3)ans=11/6S1=symsum(1/x^2,1,inf)S1=1/6*pi^2S2=symsum(x^n,n,0,inf)S2=-1/(x-1)3211011,,nxxnxxx第15页5.泰勒级数展开调用格式:taylor(f,n,x,a)功能:函数f自变量x在a点展开n-1次泰勒多项式例7.计算级数symsx;f=sin(x);taylor(f)%f在x=0点的5次泰勒多项式ans=x-1/6*x^3+1/120*x^5taylor(f,4,[],2)%f在x=2点的3次泰勒多项式ans=sin(2)+cos(2)*(x-2)-1/2*sin(2)*(x-2)^2-1/6*cos(2)*(x-2)^310)()(!)()(nkkkaxkafxf第16页三、解方程1.非线性方程(组)调用格式:S=solve(f1,f2,…,fn,x1,x2,…,xn)功能:求方程组f1,…,fn关于指定变量x1,…,xn的解例1.解方程(组)symsabcx;f=a*x^2+b*x+c;%f中无等号s=solve(f)%解方程f=0s=[1/2/a*(-b+(b^2-4*a*c)^(1/2))][1/2/a*(-b-(b^2-4*a*c)^(1/2))]第17页例2.解非线性方程组symsxy;f1=‘x^2+x*y+y=3’;%方程用单引号括起f2='x^2-4*x+3=0';[x,y]=solve(f1,f2,x,y)x=[1][3]y=[1][-3/2]方程组的解为:(1,1)和(1,-3/2)第18页2.微分方程(组)调用格式:dsolve(‘S’,’s1’,’s2’,…,’x’)功能:解微分方程组S,初始条件为s1,s2,…,自变量x【注】①默认的自变量为t.②方程中用D表示微分,如Dy表示;如果在D后面带有数字,则表示多阶导数,如D2y表示;③如果不指定初始值,或者初始值方程的个数少于因变量的个数,则最后得到的结果中会包含常数项,表示为C1,C2等.④dsolve函数最多接受12个输入参数.4第19页例3.解微分方程symsxydsolve('Dy=1+y^2')ans=tan(t+C1)%默认自变量为t,包含常数C1y=dsolve('Dy=1+y^2','y(0)=1','x')%指定初值y=tan(x+1/4*pi)x=dsolve('D2x+2*D1x+2*x=exp(t)','x(0)=1','Dx(0)=0')%二阶微分方程,指定初值x=1/5*exp(t)+4/5*exp(-t)*cos(t)+3/5*exp(-t)*sin(t)第20页例4.解微分方程组symsfgS=dsolve('Df=3*f+4*g','Dg=-4*f+3*g')S=f:[1x1sym]%返回结构数组Sg:[1x1sym]f=S.f,g=S.g%查看S中f,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)第21页11112211211222221122nnnnsssnnsaxaxaxbaxaxaxbaxaxaxb给定线性方程组1122,,nsxbxbxbxb1112112122212,nnnsssnaaaaaaaAaaa设按矩阵乘法,线性方程组(1)可表示为Axb3.线性代数(1)第22页①求非齐线性方程组Ax=b的(特)解:x=A\b②求齐次线性方程组Ax=0的基础解系:X=null(A)③求矩阵A的特征值:[V,L]=eig(A)④求方阵A的行列式:D=det(A)Axb基本命令:例5.解线性方程组symsabc;A=[abc;bca;cab];B=[111]';X=A\BX=[1/(a+c+b)][1/(a+c+b)][1/(a+c+b)]第23页例6.解线性方程组A=sym([11-3-1;3-1-34;15-9-8]);%符号化矩阵b=sym([140]');X1=A\b,X=null(A)X1=[5/4][-1/4][0][0]symsk1k2k=[k1;k2];XX=X1+X*kX=[-3/4,3/2][7/4,3/2][0,1][1,0]XX=[5/4-3/4*k1+3/2*k2][-1/4+7/4*k1+3/2*k2][k2][k1]特解基础解系通解第24页四、符号表达式的化简和代换1.化简符号表达式MATLAB提供了许多化简符号表达式的函数:①合并同类项(降幂排列):collect(P,x)②将乘积展开为和式:expand(P)③把多项式转换为嵌套形式:horner(P)④多项式因式分解:factor(P)⑤利用各种恒等式化简:simplify(P)⑥用习惯书写方式显示:pretty(f)5第25页例1.合并同类项,将乘积展开symsxytcollect(x^3+2*x^2-5*x^2+4*x-3*x+12-3)%合并同类项ans=x^3-3*x^2+x+9g=collect((1+x)*t+t*x)%合并同类项g=2*t*x+texpand((x-1)*(x-2)*(x-3))%乘积展开ans=x^3-6*x^2+11*x-6expand(cos(x+y))%乘积展开ans=cos(x)*cos(y)-sin(x)*sin(y)第26页例2.转换为嵌套形式,因式分解horner(x^3-6*x^2+11*x-6)%转换为嵌套ans=-6+(11+(-6+x)*x)*xP=horner(1.1+2.2*x+3.3*x^2)%转换为嵌套P=11/10+(11/5+33/10*x)*xfactor(x^3-6*x^2+11*x-6)%因式分解ans=(x-1)*(x-2)*(x-3)n=1:5;X=[x,x,x,x,x];P=x.^n+1P=[1+x,x^2+1,x^3+1,x^4+1,x^5+1]f=factor(P)%因式分解f=[1+x,x^2+1,(1+x)*(x^2-x+1),x^4+1,
本文标题:MATLAB符号工具箱使用简介
链接地址:https://www.777doc.com/doc-7415363 .html