MATLAB符号计算4.ppt

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第7章MATLAB符号计算7.1符号计算基础7.2符号导数及其应用7.3符号积分7.4级数7.5符号方程的求解7.1符号计算基础7.1.1符号对象1.建立符号变量和符号常数(1)sym函数sym函数用来建立单个符号量,例如,a=sym('a')建立符号变量a,此后,用户可以在表达式中使用变量a进行各种运算。可以将式a=sym('a')运用到表达式中,如:a=2*sin(sym('a'))例7.1考察符号变量和数值变量的差别。在MATLAB命令窗口,输入命令:a=sym('a');b=sym('b');c=sym('c');d=sym('d');%定义4个符号变量w=10;x=5;y=-8;z=11;%定义4个数值变量A=[a,b;c,d]%建立符号矩阵AB=[w,x;y,z]%建立数值矩阵Bdet(A)%计算符号矩阵A的行列式det(B)%计算数值矩阵B的行列式A=[a,b][c,d]B=105-811ans=a*d-b*cans=150例7.2比较符号常数与数值在代数运算时的差别。在MATLAB命令窗口,输入命令:pi1=sym('pi');k1=sym('8');k2=sym('2');k3=sym('3');%定义符号变量pi2=pi;r1=8;r2=2;r3=3;%定义数值变量sin(pi1/3)%计算符号表达式值sin(pi2/3)%计算数值表达式值sqrt(k1)%计算符号表达式值sqrt(r1)%计算数值表达式值sqrt(k3+sqrt(k2))%计算符号表达式值sqrt(r3+sqrt(r2))%计算数值表达式值ans=1/2*3^(1/2)ans=0.8660ans=2*2^(1/2)ans=1/2*3^(1/2)ans=0.8660ans=2*2^(1/2)(2)syms函数syms函数的一般调用格式为:symsvar1var2…varn函数定义符号变量var1,var2,…,varn等。用这种格式定义符号变量时,不要在变量名上加字符分界符(‘),变量间用空格而不要用逗号分隔。2.建立符号表达式含有符号量的表达式,如:一般代数式,符号方程,符号矩阵,抽象函数等。(1)代数式建立例7.3用两种方法建立符号表达式。在MATLAB窗口,输入命令:U=sym('3*x^2+5*y+2*x*y+6')%定义符号表达式Usymsxy;%建立符号变量x、yV=3*x^2+5*y+2*x*y+6%定义符号表达式V2*U-V+6%求符号表达式的值U=3*x^2+5*y+2*x*y+6V=3*x^2+5*y+2*x*y+6ans=3*x^2+5*y+2*x*y+12(2)符号方程建立利用sym直接建立,如:y=sym('a*x^2+b*x+c=0');不能用赋值的方法建立符号方程。(3)符号矩阵建立使用直接输入法。transpose(S)返回S矩阵的转置矩阵。determ(S)返回S矩阵的行列式值。例7.4计算3阶范得蒙矩阵行列式的值。设A是一个由符号变量a,b,c确定的范得蒙矩阵。命令如下:symsabc;U=[a,b,c];A=[[1,1,1];U;U.^2]%建立范得蒙符号矩阵determ(A)%计算A的行列式值A=[1,1,1][a,b,c][a^2,b^2,c^2]ans=b*c^2-c*b^2-a*c^2+a*b^2+a^2*c-a^2*b(4)抽象函数建立关于抽象函数:函数关系未确定的函数。比如:函数f(x),这里只知道f与变量x之间有一定的依赖关系,但并未确定具体是什么样的关系。例7.5建立x,y的一般二元函数。在MATLAB命令窗口,输入命令:symsxy;f=sym('f(x,y)');7.1.2基本的符号运算1.符号表达式运算(1)符号表达式的四则运算符号表达式的四则运算和其他表达式的运算并无不同,但要注意,其运算结果依然是一个符号表达式。符号表达式的加、减、乘、除运算可分别由函数symadd、symsub、symmul和symdiv来实现,幂运算可以由sympow来实现。例7.6符号表达式的四则运算示例。在MATLAB命令窗口,输入命令:symsxyz;f=2*x+x^2*x-5*x+x^3%符号表达式的结果为最简形式f=2*x/(5*x)%符号表达式的结果为最简形式f=(x+y)*(x-y)%符号表达式的结果不是x^2-y^2,而是(x+y)*(x-y)f=-3*x+2*x^3f=2/5f=(x+y)*(x-y)(2)符号表达式的提取分子和分母运算如果符号表达式是一个有理分式或可以展开为有理分式,可利用numden函数来提取符号表达式中的分子或分母。其一般调用格式为:[n,d]=numden(s)该函数提取符号表达式s的分子和分母,分别将它们存放在n与d中。例7.7符号表达式提取分子分母示例g=sym('(x^2+3)/(2*x-1)+3*x/(x-1)');[n,d]=numden(g)n=x^3+5*x^2-3d=(2*x-1)*(x-1)(3)因式分解与展开factor(S)对S分解因式,S是符号表达式或符号矩阵。expand(S)对S进行展开,S是符号表达式或符号矩阵。collect(S)对S合并同类项,S是符号表达式或符号矩阵。collect(S,v)对S按变量v合并同类项,S是符号表达式或符号矩阵。例7.8对符号矩阵A的每个元素分解因式。命令如下:symsabxy;A=[2*a^2*b^3*x^2-4*a*b^4*x^3+10*a*b^6*x^4,3*x*y-5*x^2;4,a^3-b^3];factor(A)%对A的每个元素分解因式ans=[2*x^2*a*b^3*(5*x^2*b^3-2*x*b+a),-x*(-3*y+5*x)][4,(a-b)*(a^2+a*b+b^2)]例7.9计算表达式S的值。命令如下:symsxy;s=(-7*x^2-8*y^2)*(-x^2+3*y^2);expand(s)%对s展开collect(s,x)%对s按变量x合并同类项(无同类项)factor(ans)%对ans分解因式执行结果:ans=7*x^4-13*x^2*y^2-24*y^4ans=7*x^4-13*x^2*y^2-24*y^4ans=(8*y^2+7*x^2)*(x^2-3*y^2)(4)表达式化简MATLAB提供的对符号表达式化简的函数有:simplify(S)应用函数规则对S进行化简。simple(S)调用MATLAB的其他函数对表达式进行综合化简,并显示化简过程。例7.10化简命令如下:symsxy;s=(x^2+y^2)^2+(x^2-y^2)^2;simple(s)%MATLAB自动调用多种函数对s进行化简,并显示每步结果(5)符号表达式与数值表达式之间的转换利用函数sym可以将数值表达式变换成它的符号表达式。sym(1.5)ans=3/2函数eval可以将符号表达式变换成数值表达式。phi='(1+sqrt(5))/2'eval(phi)ans=1.61802.符号矩阵运算transpose(S)返回S矩阵的转置矩阵。determ(S)返回S矩阵的行列式值。colspace(S)返回S矩阵列空间的基。[Q,D]=eigensys(S)Q返回S矩阵的特征向量,D返回S矩阵的特征值。注意:应用于数值矩阵的函数(diag,triu,tril,det,rank,eig等)均可用于符号矩阵的运算。7.1.3符号表达式中变量的确定MATLAB中的符号可以表示符号变量和符号常数。findsym可以帮助用户查找一个符号表达式中的符号变量。该函数的调用格式为:findsym(S,n)函数返回符号表达式S中的n个符号变量,若没有指定n,则返回S中的全部符号变量。在求函数的极限、导数和积分时,如果用户没有明确指定自变量,MATLAB将按缺省原则确定主变量并对其进行相应微积分运算。可用findsym(S,1)查找系统的缺省变量,事实上,MATLAB按离字符'x'最近原则确定缺省变量。7.2符号导数及其应用7.2.1函数的极限limit函数的调用格式为:limit(f,x,a)格式中的参数x,a可以省略。省略x,MATLAB按缺省规则确定求极限的变量;a缺省为0。limit函数的另一种功能是求单边极限,其调用格式为:limit(f,x,a,'right')或limit(f,x,a,'left')例7.11求极限。在MATLAB命令窗口,输入命令:symsamx;f=(x^(1/m)-a^(1/m))/(x-a);limit(f,x,a)%求极限(1)f=(sin(a+x)-sin(a-x))/x;limit(f)%求极限(2)f=x*(sqrt(x^2+1)-x);limit(f,inf)%求f函数在x→∞(包括+∞和-∞)处的极限limit(f,x,inf,'left')%求极限(3)f=(sqrt(x)-sqrt(a)-sqrt(x-a))/sqrt(x*x-a*a);limit(f,x,a,'right')%求极限(4)limmmxaxaxaxaxaxx)sin()sin(lim0)1(lim2xxxx22limaxaxaxax7.2.2符号函数求导及其应用MATLAB中的求导的函数为:diff(f,x,n)diff函数求函数f对变量x的n阶导数。参数x的用法同求极限函数limit,可以缺省,缺省值与limit相同,n的缺省值是1。例7.12求函数的导数。命令如下:symsabtxyz;f=sqrt(1+exp(x));diff(f)%求(1)。未指定求导变量和阶数,按缺省规则处理f=x*cos(x);diff(f,x,2)%求(2)。求f对x的二阶导数diff(f,x,3)%求(2)。求f对x的三阶导数f1=a*cos(t);f2=b*sin(t);diff(f2)/diff(f1)%求(3)。按参数方程求导公式求y对x的导数(diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2))/(diff(f1))^3%求(3)。求y对x的二阶导数f=x*exp(y)/y^2;diff(f,x)%求(4)。z对x的偏导数diff(f,y)%求(4)。z对y的偏导数f=x^2+y^2+z^2-a^2;zx=-diff(f,x)/diff(f,z)%求(5)。按隐函数求导公式求z对x的偏导数zy=-diff(f,y)/diff(f,z)%求(5)。按隐函数求导公式求z对y的偏导数xey1y=xcos(x)taytaxsincos2yxezy例7.13在曲线y=x3+3x-2上哪一点的切线与直线y=4x-1平行。命令如下:x=sym('x');y=x^3+3*x-2;%定义曲线函数f=diff(y);%对曲线求导数g=f-4;solve(g)%求方程f-4=0的根,即求曲线何处的导数为47.3符号积分7.3.1不定积分在MATLAB中,求不定积分的函数是int,其调用格式为:int(f,x)int函数求函数f对变量x的不定积分。参数x可以缺省,缺省原则与diff函数相同。例7.14求不定积分。命令如下:f=(3-x^2)^3;int(f)%求(1)f=sin(x)^2;int(f)%求(2)symsalphat;f=exp(alpha*t);int(f)%求(3)f=5*x*t/(1+x^2);int(f,t)%求(4)dxx32)3(xdx2sindtetdtxxt2157.3.2符号函数的定积分定积分在实际工作中有广泛的应用。在MATLAB中,定积分的计算使用函数:int(f,x,a,b)例7.15求定积分。命令如下:x=sym('x');t=sym('t');int(abs(1-x),1,2)%求定积分(1)f=1/(1+x^2);int(f,-inf,inf)%求定积分(2)int(4*t*x,x,2,sin(t))%求定积分(3)f=x^3/(x-1)^100;I=int(f,2,3)%

1 / 46
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功