matlab7教程课件第5章符号运算.ppt
《matlab7教程课件第5章符号运算.ppt》由会员分享,可在线阅读,更多相关《matlab7教程课件第5章符号运算.ppt(137页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、MATLAB 7.0从入门到精通主要讲述内容第第1章 MATLAB简介简介第第2章章 数值运算数值运算第3章 单元数组和结构第4章 字符串第5章 符号运算第6章 MATLAB绘图基础第7章 程序设计第8章 计算方法的MATLAB实现第9章 优化设计第10章 Simulink仿真初探第5章 符号运算数学问题的求解通常有两条途径可循,一是求它的解析解,二是求它的数值解。求解析解的主要工具是符号运算。所谓符号运算是指运算的主要对象是符号、文字,或说是变量。5.1 符号变量的生成和使用5.1.1 符号表达式的生成(1)符号常量符号常量是一种符号对象。可用class函数来检测其数据类型。sym函数的使用
2、 sym(2)/sym(5)或sym(2/5)或sym(2/5)或sym 2/5ans=2/5 sqrt(5)ans=2.2361 sym sqrt(5)ans=sqrt(5)a=3/4;b=3/4;c=sym(3/4);或c=sym(3/4);classa=class(a)classa=double classb=class(b)classb=char classc=class(c)classc=sym(2)符号变量及符号表达式使用sym函数也可定义符号表达式,一是将每一个变量定义为符号变量,二是将整个表达式集体定义。也可以直接用单引号生成。a=sym(a);b=sym(b);c=sym(c
3、);x=sym(x);f=a*x2+b*x+cf=a*x2+b*x+c f=sym(a*x2+b*x+c)f=a*x2+b*x+c g=f2+4*f-2 g=(a*x2+b*x+c)2+4*a*x2+4*b*x+4*c-2函数syms功能比sym更为强大,它可以一次创建任意多个符号变量。使用格式如下:syms var1 var2.syms a b c x f=sym(a*x2+b*x+c)或 f=a*x2+b*x+cf=a*x2+b*x+c(3)符号矩阵元素是符号对象的矩阵叫做符号矩阵。m1=sym(asd we;re as)m1=asd,we re,as m1=sym(5 6;1 2)m1=
4、5,6 1,25.1.2 符号变量的基本操作函数findsym用于找出一个表达式中存在哪些符号变量。findsym(s)列出全部符号变量,findsym(s,n)列出靠x最近的n个符号变量。f=sym(a*x2+b*x+c);a=findsym(f)a=a,b,c,x a=findsym(f,3)a=x,c,b单独使用digits或d=digits在命令窗口显示当前设定的数值精度。digits(d)命令设置数值的精度为d位。digitsdigits=32 d=digitsd=32 digits(100)digits digits=100r=vpa(s)命令将显示符号表达式s在当前精度下的值。r
5、=vpa(s,d)命令将显示符号表达式s在精度d下的值。显示的数字个数为d。r=vpa(pi)r=r=vpa(pi,50)r=数值型变量与符号型变量的转换形式将数值形式转换为符号形式对于任意数值型变量t,使用sym函数可以将其转换为4种形式的符号变量,分别为:有理数形式sym(t)或sym(t,r)、浮点数形式sym(t,f)、指数形式 sym(t,e)和数值精度形式 sym(t,d)。也可以采用这种方法将数值型矩阵转换为符号型矩阵,但此时只能把它转换成有理数形式。另外,函数poly2sym实现将某一向量转化为它对应的多项式。t=0.1;sym(t,r)ans=1/10 sym(t,f)ans
6、=1.999999999999a*2(-4)sym(t,e)ans=1/10+eps/40 sym(t,d)ans=a=1 2 3 4 5;f=poly2sym(a)f=x4+2*x3+3*x2+4*x+5将符号形式转换为数值形式将符号形式转化为数值形式主要用函数eval来实现。另外,使用sym2poly函数实现将多项式转化为它对应的系数向量。a=sym(sqrt(5)a=sqrt(5)b=eval(a)b=2.2361 syms x f=x3-4*x+5;c=sym2poly(f)c=1 0 -4 55.1.3 符号表达式(符号函数)的操作1、符号表达式的四则运算符号表达式也与通常的算术式一
7、样,可以进行四则运算。syms x y a b f1=sin(x)+cos(y);f2=a+b;f=f1*f2 f=(sin(x)+cos(y)*(a+b)在符号对象的比较中只有相等与否,没有大小关系比较;三角函数的符号运算与数值运算法则基本相同;符号运算的指数函数运算与前面数值运算法则相同,对数运算对于符号运算来说只能使用log函数,因此log2(sym(a)=log(a)/log(2)。符号运算的复数运算与数值复数运算相同。2、合并符号表达式的同类项collect(s,v)命令将符号矩阵s中所有同类项合并,并以v为符号变量输出。collect(s)命令使用findsym函数规定的默认变量代
8、替上式中的v。syms x y collect(x2*y+y*x-x2-2*x,x)ans=(y-1)*x2+(y-2)*x collect(x2*y+y*x-x2-2*x,y)ans=(x2+x)*y-x2-2*x collect(x2*y+y*x-x2-2*x)ans=(y-1)*x2+(y-2)*x3、符号多项式的因式分解使用expand函数将表达式中的括号进行展开;使用factor函数将表达式进行因式分解;使用horner函数将一般的表达式变换为嵌套的形式,默认x为第一变量。syms x y f=(x-1)*(x-2)*(x-3)*(y-4);g=expand(f)g=x3*y-4*x
9、3-6*x2*y+24*x2+11*x*y-44*x-6*y+24 syms x y g=x3*y-4*x3-6*x2*y+24*x2+11*x*y-44*x-6*y+24;f=factor(g)f=(x-1)*(x-2)*(x-3)*(y-4)syms x y g=x3*y-4*x3-6*x2*y+24*x2+11*x*y-44*x-6*y+24;f=horner(g)f=-6*y+24+(11*y-44+(-6*y+24+(y-4)*x)*x)*x syms x y f=x2-2*x+y2-3*y*x;horner(f)ans=y2+(-2-3*y+x)*x4、符号表达式的简化使用simp
10、lify函数和simple函数进行符号表达式的简化。simplify(s)命令将符号表达式s中的每一个元素都进行简化,该函数的缺点是即使多次运用此函数也不一定得到最简形式。simple(s)命令使用多种代数简化方法对符号表达式s进行简化,并显示其中最简单的结果。r,how=simple命令在返回最简单的结果的同时,返回一个描述得到该最简结果所用简化方法的字符串how。syms x f=(x-2).2+3*(x-3);simplify(f)ans=x2-x-5 syms xf=(x-2).2+3*(x-3);r,how=simple(f)r=x2-x-5how=simplify syms x f
11、=(x-3).3-3*x+(x-1)/(x+2).2-2*x.2;simplify(f)ans=(x5-7*x4-16*x3+25*x2-109-11*x)/(x+2)2 syms x f=(x-3).3-3*x+(x-1)/(x+2).2-2*x.2;simple(f)simplify:(x5-7*x4-16*x3+25*x2-109-11*x)/(x+2)2radsimp:(x5-7*x4-16*x3+25*x2-109-11*x)/(x+2)2combine(trig):(x5-7*x4-16*x3+25*x2-109-11*x)/(x2+4*x+4)factor:(x5-7*x4-16
12、*x3+25*x2-109-11*x)/(x+2)2 expand:x3-11*x2+24*x-27+1/(x+2)2*x-1/(x+2)2combine:(x-3)3-3*x+(x-1)/(x+2)2-2*x2convert(exp):(x-3)3-3*x+(x-1)/(x+2)2-2*x2 convert(sincos):(x-3)3-3*x+(x-1)/(x+2)2-2*x2 convert(tan):(x-3)3-3*x+(x-1)/(x+2)2-2*x2 collect(x):(x-3)3-3*x+(x-1)/(x+2)2-2*x2mwcos2sin:(x-3)3-3*x+(x-1)
13、/(x+2)2-2*x2 ans=(x-3)3-3*x+(x-1)/(x+2)2-2*x2 syms x f=(x-3).3-3*x+(x-1)/(x+2).2-2*x.2;r,how=simple(f)r=(x-3)3-3*x+(x-1)/(x+2)2-2*x2how=pretty函数的使用pretty(s)将符号表达式用书写方式表示出来,默认宽度为79。pretty(s,n)将符号表达式用书写方式表示出来,宽度指定为n。p=sym(x2-1)/(x+2)+(2*x+5)/(3*x-2)p=(x2-1)/(x+2)+(2*x+5)/(3*x-2)pretty(p)2 x -1 2 x+5 -
14、+-x+2 3 x-25、subs函数用于替换求值subs(s)命令将符号表达式s中的所有符号变量用调用函数中的值或matlab工作区间的值替代。subs(s,new)命令将符号表达式s中的自由符号变量用数值型变量或表达式new替换。subs(s,old,new)命令将符号表达式s中的符号变量old用数值型变量或表达式new替换。如没指定被替换的变量,则默认选择与x最接近的字母。syms x y f=x2*y+5*x*sqrt(y);subs(f)ans=x2*y+5*x*y(1/2)subs(f,2)ans=4*y+10*y(1/2)subs(f,y,2)ans=2*x2+5*x*2(1/2
15、)subs(f,x,y,2,3)或subs(f,x,y,2,3)ans=29.3205 syms a x y f=x2*y+5*x*sqrt(y);subs(f,a)ans=a2*y+5*a*y(1/2)subs(f,y,a)ans=a*x2+5*x*a(1/2)6、反函数的运算g=finverse(f)命令用于求函数f的反函数。g=finverse(f,v)指定对变量v求反函数。syms x y f=x2+y;finverse(f,x)Warning:finverse(x2+y)is not unique.In sym.finverse at 43 ans=(-y+x)(1/2)finver
16、se(f,y)ans=-x2+y7、复合函数的运算compose(f,g)返回f=f(x)和g=g(y)时的复合函数f(g(y),就是原来的默认变量用函数g完整替代。compose(f,g,z)返回f=f(x)和g=g(y)时的复合函数f(g(z),z为指定变量,代替复合函数中默认变量,即先用z替代默认变量再复合。compose(f,g,x,z)返回复合函数f(g(z)。即指定变量x用g(z)替代,如果g(z)中有z,则g(z)函数保持原形不变,如没有,则默认变量用z替代。compose(f,g,x,y,z)返回复合函数f(g(y)。首先g(y)中的指定变量y用z代替,原有的z不变,然后f(x
17、)中的指定变量x用g(z)代替。syms x y z t u f=1/(1+x2);g=sin(y);h=xt;p=exp(-y/u);compose(f,g)ans=1/(1+sin(y)2)compose(f,g,t)ans=1/(1+sin(t)2)compose(h,g,x,z)ans=sin(z)t compose(h,g,t,z)ans=xsin(z)compose(h,p,x,y,z)ans=exp(-z/u)t compose(h,p,t,u,z)ans=xexp(-y/z)syms x y z t u f=1/(1+x2)+y-z*t+sin(u);g=x+z*sin(y)-
18、t*u;h=xt-y*z+zu;p=x*z+exp(-y/u)-log(t);compose(f,g)ans=1/(1+(x+z*sin(y)-t*u)2)+y-z*t+sin(u)compose(f,g,t)ans=1/(1+(t+z*sin(y)-t*u)2)+y-z*t+sin(u)syms x y z t u f=1/(1+x2)+y-z*t+sin(u);g=x+z*sin(y)-t*u;h=xt-y*z+zu;p=x*z+exp(-y/u)-log(t);compose(h,g,x,z)ans=(x+z*sin(y)-t*u)t-y*z+zu compose(h,g,t,z)ans
19、=x(x+z*sin(y)-t*u)-y*z+zu syms x y z t u f=1/(1+x2)+y-z*t+sin(u);g=x+z*sin(y)-t*u;h=xt-y*z+zu;p=x*z+exp(-y/u)-log(t);compose(f,g)compose(h,p,x,y,z)ans=(x*z+exp(-z/u)-log(t)t-y*z+zu compose(h,p,t,u,z)ans=x(x*z+exp(-y/z)-log(t)-y*z+zu8、提取分子、分母如果符号表达式是有理式形式或可展开为有理分式的形式,则可通过函数numden来提取符号表达式中的分子与分母。numde
20、n函数可将符号表达式合并、有理化,并返回所得的分子与分母。其调格式如下:n,d=numden(a)提取符号表达式a的分子与分母,并分别把其存放在n与d中;n=numden(a)提取符号表达式a的分子与分母,但只把分子存放在n中。f=sym(a*x2/(b-x);n,d=numden(f)n=-a*x2 d=-b+x k=numden(f)k=-a*x25.2 符号矩阵的生成和运算5.2.1 符号矩阵的生成1、使用sym函数直接生成符号矩阵如果矩阵的各行不等长的话,此时会生成一个单行的符号矩阵。a1=sym(1/3,0.2+sqrt(2),pi;2/7,sin(x),cos(x),log(x);
21、sin(x)2,sin(22*x),exp(x)a1=1/3,0.2+sqrt(2),pi,2/7,sin(x),cos(x),log(x),sin(x)2,sin(22*x),exp(x)a2=sym(1/3,0.2+sqrt(2),pi;2/7,sin(x),log(x);sin(x)2,sin(22*x),exp(x)a2=1/3,0.2+sqrt(2),pi 2/7,sin(x),log(x)sin(x)2,sin(22*x),exp(x)2、用生成子矩阵的方法生成符号矩阵与字符串矩阵的直接输入法相似,可采用直接输入字符串的办法生成符号矩阵,但要保证同一列的元素具有相同的长度。a1=1
22、00,cos(x);1/s,x?Error using=vertcatAll rows in the bracketed expression must have the same number of columns.a1=100,cos(x);1/s,x a1=100,cos(x)1/s,x syms a1符号化 a2=100,cos(x);1/s,xa2=100,cos(x)1/s,xsyms a2 a1=100,cos(x);1/s,x a1=100,cos(x)1/s,x syms a15.3 符号微积分1、符号极限limit(f,x,a)计算符号表达式当xa时f=f(x)的极限值。l
23、imit(f,a)命令使用命令findsym(f)确定f中的自变量当其a时f的极限。limit(f)命令使用命令findsym(f)确定f中的自变量当其0时f的极限。limit(f,x,a,right(left)求xa的左、右极限。limit(f,x,inf)计算符号表达式当x正负无穷时f=f(x)的极限值。x=sym(x);f=sin(x)/x;a=limit(f)a=1 syms x y t f=sin(x*y)+cos(y*t);limit(f,t,pi)ans=sin(x*y)+cos(pi*y)limit(f)ans=cos(y*t)limit(f,t)ans=sin(y*t)+co
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab7 教程 课件 符号 运算
限制150内