MATLAB第5章MATLAB符号运算.ppt
《MATLAB第5章MATLAB符号运算.ppt》由会员分享,可在线阅读,更多相关《MATLAB第5章MATLAB符号运算.ppt(81页珍藏版)》请在三一办公上搜索。
1、第5章 MATLAB符号运算,5.1 符号对象及其表达方式 MATLAB符号运算以符号数学工具箱提供的一系列符号运算函数为依据。符号对象是对参与符号运算的各种形式量,包括符号常量、符号变量、符号表达式和符号矩阵或数组。,5.1.1 符号常量和变量符号常量和变量数值常量和变量符号常量和符号变量在被当做符号对象引用时必须有符号(symbolic)对象的说明:函数sym()命令syms,1.定义符号常量:函数sym()sym(A)或sym(A,flag)flag 为可选参数,有4 种形式,它们将数值量转换成符号量并以各自不同的格式表达其结果。r:用有理数格式表达符号量(默认的表达格式,其具体形式又有
2、多种,如分式,指数式,开方式等。)d:用十进制数格式表达符号量(默认显示精度可达32 位)。e:用带有机器浮点误差的有理数格式表达符号量。f:用浮点数格式表达符号量。,log(2)ans=0.6931(3*4-2)/5+1ans=3 f1=sym(log(2)f1=log(2)f2=sym(3*4-2)/5+1)f2=(3*4-2)/5+1,whos f*Name Size Bytes Class f1 1x1 136 sym object f2 1x1 146 sym objectGrand total is 19 elements using 282 bytes,num=log(2)num
3、=0.6931 a=sym(log(2)a=b=sym(log(2),r)b=指数形式的有理数格式 c=sym(log(2),d)c=十进制数格式,长达32位,d=sym(log(2),e)d=带有机器浮点误差的有理数格式 e=sym(log(2),f)e=1.62e42fefa39ef*2(-1)浮点数格式,whos Name Size Bytes Class a 1x1 172 sym object b 1x1 172 sym object c 1x1 190 sym object d 1x1 172 sym object e 1x1 172 sym objectnum 1x1 8 dou
4、ble array,2.定义符号变量(1)使用函数sym()sym(x)sym(x,real)sym(x,unreal)(2)使用命令symssyms arg1 arg2.syms arg1 arg2.realsyms arg1 arg2.unreal参数real定义为实型符号量,unreal定义为非实型符号量。,sym()sym(x)ans=x sym(y,real)ans=y sym(z,unreal)ans=z,syms syms a b c syms m n real syms x y z unreal 命令 syms 可以同时定义多个符号变量,只能用空格分隔各个变量,不能在各变量之间
5、加逗号,5.1.2 符号表达式 符号表达式是由符号对象参与运算的表达式即是符号表达式。与数值表达式不同,符号表达式中的变量不要求有预先确定的值。符号方程式是含有等号的符号表达式。,syms x y z r s t r2+sin(x)+cos(y)+log(s)+exp(t)ans=r2+sin(x)+cos(y)+log(s)+exp(t)f1=r2+sin(x)+cos(y)+log(s)+exp(t)f1=r2+sin(x)+cos(y)+log(s)+exp(t)f2=sym(r2+sin(x)+cos(y)+log(s)+exp(t)f2=r2+sin(x)+cos(y)+log(s)
6、+exp(t)f3=sym(r2+sin(x)+cos(y)+log(s)+exp(t)f3=r2+sin(x)+cos(y)+log(s)+exp(t)f4=r2+sin(x)+cos(y)+log(s)+exp(t)f4=r2+sin(x)+cos(y)+log(s)+exp(t),whos f*Name Size Bytes Class f1 1x1 186 sym object f2 1x1 186 sym object f3 1x1 186 sym object f4 1x31 62 char arrayGrand total is 127 elements using 620 by
7、tes,5.1.3 符号矩阵符号矩阵的元素可以是符号常量、符号变量和符号表达式,创建符号矩阵的方法有:函数sym;类似创建普通数值矩阵的方法创建符号矩阵;由数值矩阵转换为符号矩阵;以矩阵元素的通式来创建符号矩阵。,S=sym(l,x,y,z;n,u,v,w;a,b,c,d;g,h,j,p)S=l,x,y,z n,u,v,w a,b,c,d g,h,j,p,B=sym(a b c;d e f;g h k)B=a,b,c d,e,f g,h,k,syms l x y z n u v w a b c d g h j p S=l,x,y,z;n,u,v,w;a,b,c,d;g,h,j,p,H=sym(
8、cos(t),-sin(t);sin(t),cos(t)H=cos(t),-sin(t)sin(t),cos(t),syms t H=cos(t),-sin(t);sin(t),cos(t),用函数 sym()将数值矩阵转换成符号矩阵。数值矩阵的元素可以指定为小的整数之比,则函数sym()将采用有理分式表示。M=1.1,1.2,1.3;2.1,2.2,2.3;3.1,3.2,3.3M=1.1000 1.2000 1.3000 2.1000 2.2000 2.3000 3.1000 3.2000 3.3000 S=sym(M)S=11/10,6/5,13/10 21/10,11/5,23/10
9、31/10,16/5,33/10,如果元素是无理数,则符号形式中命令sym 将用符号浮点数表示元素。A=sin(1)cos(2)A=0.8415-0.4161 sym(A)ans=7579296827247854*2(-53),-7496634952020485*2(-54),size()可以得到符号矩阵的大小(即行、列数)。函数返回数值或向量:A=sin(1)cos(2);s=size(A)s=1 2 s_r,s_c=size(A)s_r=1s_c=2,抽取符号矩阵中的元素:B=sym(a,b,c;d,e,f;g,h,k)B=a,b,c d,e,f g,h,k B(2,3)ans=f B(3
10、)ans=g,5.2 符号算术运算运算法则和运算符号同数值运算相同,只是参与运算的对象和运算所得结果是符号的而非数值的。5.2.1 符号对象的加减A+B、A-B 若A 与B 为同型数组时,A+B、A-B 分别对对应元素进行加减;若A 与B 中至少有一个为标量,则把标量扩大为数组,其大小与相加的另一数组同型,再按对应的元素进行加减。,求两个符号表达式的和与差。syms x fx gx fx=2*x2+3*x-5fx=2*x2+3*x-5 gx=x2-x+7gx=x2-x+7 fx+gxans=3*x2+2*x+2 fx-gxans=x2+4*x-12,求两个符号矩阵的加减运算。syms a b
11、c d e f g h;A=a b;c d;B=e f;g h;A+Bans=a+e,b+f c+g,d+h A-Bans=a-e,b-f c-g,d-h,5.2.2 符号对象的乘除A*B、A/B:求A 和B 两个符号矩阵的乘法与除法。矩阵除法也可用来求解符号线性方程组的解。A.*B、A./B:实现两个符号数组的乘法。,A=a b;c d;B=e f;g h;C1=A.*BC1=a*e,b*f c*g,d*h C2=A./BC2=a/e,b/f c/g,d/h,C3=A*BC3=a*e+b*g,a*f+b*h c*e+d*g,c*f+d*h C4=A/BC4=(-b*g+a*h)/(e*h-f
12、*g),(-a*f+e*b)/(e*h-f*g)-(d*g-c*h)/(e*h-f*g),(e*d-c*f)/(e*h-f*g),syms a11 a12 a21 a22 b1 b2;A=a11 a12;a21 a22;B=b1 b2;X=B/AX=-(-a22*b1+b2*a21)/(-a12*a21+a11*a22),(-12*b1+a11*b2)/(-a12*a21+a11*a22)x1=X(1)x1=-(-a22*b1+b2*a21)/(-a12*a21+a11*a22)x2=X(2)x2=(-a12*b1+a11*b2)/(-a12*a21+a11*a22),求两个多项式的积和商。s
13、yms x fx gx fx=3*x5-x4+2*x3+x2+3;gx=1/3*x3+x2-3*x-1;fx*gxans=(3*x5-x4+2*x3+x2+3)*(1/3*x3+x2-3*x-1)expand(fx*gx)ans=x8+8/3*x7-28/3*x6+7/3*x5-4*x4-4*x3+2*x2-9*x-3 fx/gxans=(3*x5-x4+2*x3+x2+3)/(1/3*x3+x2-3*x-1),5.3 独立变量与表达式化简5.3.1 表达式中的独立变量当符号表达式中含有多个变量时,只有一个变量是独立变量。选择独立变量规则:因为i 和j 是虚单位,它们不能作为独立变量。表达式中
14、有x 作为符号变量时,x 就是独立变量。表达式中没有x 作为符号变量时,就从表达式中挑选打头字母最靠近x 的符号变量作为独立变量。如果表达式中有与x 前后等距的两个字母符号变量时,选择排序在x 后面的那一个。3w+y2,查找独立变量:函数findsym()(1)r=findsym(S):以字母表的顺序返回表达式S中的所有符号变量(注:符号变量由除了i与j的字母与数字构成的、字母打头的字符串)。若表达式S中没有任何的符号变量,则函数findsym()返回一空字符串。(2)r=findsym(S,n):返回表达式S 中依接近x的顺序而排列的n个符号变量。,syms a x y z t alpha
15、betaS1=findsym(sin(pi*t*alpha+beta),1)S1=t S2=findsym(x+i*y-j*z+eps-nan)S2=NaN,x,y,z S3=findsym(a+y,2)S3=y,a,5.3.2 表达式化简合并同类项(collect)多项式展开(expand)因式分解(factor)一般化简(simplify)不定化简(simple)通分(numden)书写格式美化(pretty),1.合并同类项(collect)(1)R=collect(S):对于多项式S 按默认独立变量的幂次降幂排列。(2)R=collect(S,v):对指定的对象v 计算。,已知表达式
16、f=x2y+xyx22x,y=xe2x/4+3e2x/16,将f 按变量x进行降幂排列,g按e2x 进行降幂排列。syms x y a b c f=x2*y+y*x-x2-2*x;g=-1/4*x*exp(-2*x)+3/16*exp(-2*x);fx=collect(f)fx=(y-1)*x2+(y-2)*x gepx=collect(g,exp(-2*x)gepx=(-1/4*x+3/16)*exp(-2*x),2.多项式展开:R=expand(S)syms x y a b c tE1=expand(x-2)*(x-4)*(y-t)E1=x2*y-x2*t-6*y*x+6*x*t+8*y-
17、8*t E2=expand(cos(x+y)E2=cos(x)*cos(y)-sin(x)*sin(y)E3=expand(exp(a+b)3)E3=exp(a3)*exp(a2*b)3*exp(a*b2)3*exp(b3),E4=expand(log(a*b/sqrt(c)E4=log(a*b/c(1/2)E5=expand(sin(2*t),cos(2*t)E5=2*sin(t)*cos(t),2*cos(t)2-1 E6=expand(x+1)3)E6=x3+3*x2+3*x+1,3.因式分解:factor(X)参量X可以是正整数、符号表达式数组或符号整数数组。X为一正整数,则facto
18、r(X)返回X 的质数分解式。X为多项式或整数矩阵,则factor(X)分解矩阵的每一元素。若整数数组中有一元素位数超过16 位,用户必须用命令sym生成该元素。,syms a b x y F1=factor(x4-y4)F1=(x-y)*(x+y)*(x2+y2)F2=factor(a2-b2,x3+y3)F2=(a-b)*(a+b),(x+y)*(x2-y*x+y2)F3=(2)*(3)2*(5)*(101)*(3803)*(3607)*(27961)*(3541)F3=factor(123456)F3=2 2 2 2 2 2 3 643,4.一般化简:R=simplify(S)syms
19、x a b cR1=simplify(sin(x)4+cos(x)4)R1=2*cos(x)4+1-2*cos(x)2 R2=simplify(exp(c*log(sqrt(a+b)R2=(a+b)(1/2*c)S=(x2+5*x+6)/(x+2),sqrt(16);R3=simplify(S)R3=x+3,4,simplify(log(2*x/y)ans=log(2)+log(x/y)simplify(sin(x)2+3*x+cos(x)2-5)ans=-4+3*x simplify(-a2+1)/(1-a)ans=a+1,5.不定化简(simple)不定化简时,simple 自动将各种化简
20、方法都尝试一遍,并且在化简过程中还考虑了多种转换方法,最后列出化简过程的所有结果。(1)r=simple(S):试图找出符号表达式S 的代数上的简单形式,显示任意的能使表达式S 长度变短的表达式,且返回其中最短的一个。(2)r,how=simple(S):没有显示中间的化简结果,但返回能找到的最短的一个。输出参量r为一符号,how为一字符串,用于表示算法。,f=sym(1/x3+6/x2+12/x+8)(1/3)f=(1/x3+6/x2+12/x+8)(1/3)simple(f)simplify:(2*x+1)3/x3)(1/3)radsimp:(2*x+1)/xcombine(trig):(
21、1+6*x+12*x2+8*x3)/x3)(1/3)factor:(2*x+1)3/x3)(1/3),expand:(1/x3+6/x2+12/x+8)(1/3)combine:(1/x3+6/x2+12/x+8)(1/3)convert(exp):(1/x3+6/x2+12/x+8)(1/3)convert(sincos):(1/x3+6/x2+12/x+8)(1/3)convert(tan):(1/x3+6/x2+12/x+8)(1/3)collect(x):(1/x3+6/x2+12/x+8)(1/3)mwcos2sin:(1/x3+6/x2+12/x+8)(1/3)ans=(2*x+1
22、)/x,r,h=simple(sym(cos(x)+sqrt(-sin(x)2)r=cos(x)+i*sin(x)h=radsimp,6.通分(numden:Numerator and denominator)N,D=numden(A)输出的参量N 为分子的符号矩阵,输出的参量D 为分母的符号矩阵。syms x y a b c d;n1,d1=numden(sym(sin(4/5)n1=d1=n2,d2=numden(x/y+y/x)n2=x2+y2d2=y*x,A=a,1/b;1/c d;n3,d3=numden(A)n3=a,1 1,dd3=1,b c,1,7.书写格式美化(pretty)
23、(1)pretty(S):用默认的线型宽度79 显示符号矩阵S 每一元素;(2)pretty(S,n):用指定的线型宽度n 显示。syms x t;f=(x2+x*exp(-t)+1)*(x+exp(-t);f1=collect(f)f1=x3+2*exp(-t)*x2+(1+exp(-t)2)*x+exp(-t)pretty(f1)3 2 2 x+2 exp(-t)x+(1+exp(-t)x+exp(-t),f2=collect(f,exp(-t)f2=x*exp(-t)2+(2*x2+1)*exp(-t)+(x2+1)*x pretty(f2)2 2 2 x exp(-t)+(2 x+1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 符号 运算
链接地址:https://www.31ppt.com/p-6512063.html