MATLAB符号运算功能PPT课件_第1页
MATLAB符号运算功能PPT课件_第2页
MATLAB符号运算功能PPT课件_第3页
MATLAB符号运算功能PPT课件_第4页
MATLAB符号运算功能PPT课件_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,第四次课,第三章 符号运算功能,2,上次课内容回顾:,矩阵及其运算 主要介绍了特殊矩阵的生成如空阵、全零阵、全1阵等的生成,矩阵的一些特殊操作如变维、变向、抽取、扩展. 数组及其运算 主要介绍了基本数组运算数、组函数运算和数组逻辑运算. 多项式运算 主要介绍了多项式的表示方法、多项式运算.,3, 3.1 符号表达式的生成,目 录, 3.2 符号和数值之间的转换, 3.3 符号函数的运算, 3.5 符号矩阵的运算, 3.4 符号矩阵的创立, 3.6 符号微积分, 3.7 符号代数、微分方程求解, 3.8 符号函数的二维图,4,概 述,MATLAB自产生之日起就在数值计算功能上独占鳌头,广受各

2、专业人员的欢迎。但是在数学、物理、力学等各种科研、工程应用中还经常遇到符号运算的问题,因此一部分MATLAB用户不得不掌握另一种符号计算语言,如Maple、Mathematic、MathCAD等等,这就带来了一些不便。为了解决这个问题,Mathworks公司于1993年从加拿大滑铁卢大学购入了Maple的使用权,并在此基础上,利用Maple的函数库,开发了MATLAB语言的又一重要工具箱符号计算工具箱(Symbolic Toolbox)。从此MATLAB便集数值计算、符号计算和图形处理三大基本功能于一体,成为数学计算各语言中功能最强、操作最简单和最受用户喜爱的语言。,5, 3.1 符号表达式的

3、生成, 符号运算的特点: 在符号运算过程中,变量都是以字符形式保存和运算,即使是数字也被当做字符来处理。 符号表达式的形式: 符号函数 不包括等号 符号方程 必须带等号 创建方法: 符号函数和符号方程 创建方法相同,最简单的方法和MATLAB中字符串变量的生成方法相同。 创建符号函数 f=log(x) f=log(x),6, 创建符号方程 equation=a*x2+b*x+c=0 equation=a*x2+b*x+c=0 创建符号微分方程 diffeq=Dy-y=x diffeq =Dy-y=x 注意:1)由这种方法创建的符号表达式对空格是很敏感的。因此,不要在字符间乱加空格符,否则在其它

4、地方调用此表达式的时候会出错。 2)由于符号表达式在MATLAB中被看成是1*1阶的符号矩阵,因此,它也可用sym和syms命令来创建。 如: f=sym( sin(x) ) f=sin(x) f=sym( sin(x)2=0 ) f=sin(x)2=0,7,syms x t; f=sin(x)+cos(t) f=sin(x)+cos(t) 此方法不能用来创建符号方程,syms x; f=sin(x)+cos(x) f=sin(x)+cos(x),8, 3.2 符号和数值之间的转换,目的:有时符号运算的目的是得到精确的数值解,这样就需要对得 到的解析解进行数值转换。在MATLAB中转换主要由两

5、个函 数digits和vpa完成。而这两个函数在实际中经常同变量替换 函数subs配合使用,其调用格式为: digits(D) 函数设置有效数字个数为D的近似解精度; R=vpa(S) 符号表达式S在digits函数设置下的精确的数值解; vpa(S,D) 符号表达式S在digits(D)精度下的数值解; 例题:求方程 3x2-ex=0 的精确解和各种精度的近似解。 s=solve( 3*x2-exp(x)=0 ),s = -2*lambertw(-1/6*3(1/2) -2*lambertw(-1,-1/6*3(1/2) -2*lambertw(1/6*3(1/2),9,vpa(s) ans

6、 = .91000757248870906065733829575944 3.7330790286328142006199540298434 -.45896226753694851459857243243408 vpa(s,6) ans = .910008 3.73308 -.458962,例题:设函数为 f(x)=x-cos(x),求此函数在 x =点的值。 x=sym(x),f=x-cos(x),f1=subs(f, pi,x) f1=pi+1,10,numeric(f1) ans = 4.1416 double(f1) ans = 4.1416,digits(25); vpa(f1),a

7、ns =4.141592653589793238462643,11, 3.3 符号函数的运算,一、复合函数运算 若函数 z=z(y) 的自变量y 又是x 的函数y=y(x),则求z对x的函数的过程称为复合函数运算。在MATLAB中,此过程可由功能函数compose来实现。 调用格式: compose(f,g) 返回当f=f(x)和g=g(y)时的复合函数f(g(y),这里x为findsym定义的f的符号变量, y为findsym定义的g的符号变量. compose(f,g,z) 返回的复合函数以z为自变量。 compose(f,g,x,z) 返回复合函数f(g(z),且使得x为f的独立变量,即

8、如果f=cos(x/t),则compose(f,g,x,z) 返回cos(g(z)/t),而compose(f,g,t,z) 返回cos(x/g(z)。,12,compose(f,g,x,y,z) 返回的复合函数f(g(z),并使得x为f的独立变量,y为g的独立变量。,复合函数运算示例: 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);,13, compose(

9、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),ans =sin(z)t,14, 3.4 符号矩阵的创立,在MATLAB中创建符号矩阵的方法和创建数值矩阵的形式很相似,只不过要用到符号定义函数sym。 一、使用sym函数直接创建符号矩阵 矩阵元素是任何不带等号的符号表达式,各符号表达式的长度可以不同 如:a=sym(1/s+x,sin(x) cos(x)2/(b+x);9,exp(x2+y2),log(tanh(y) ),a = 1/s+x, sin(x

10、), cos(x)2/(b+x) 9, exp(x2+y2), log(tanh(y),15,二、用创建子阵的方法创建符号矩阵 ms=1/s,sin(x) ; 1 ,exp(x) ms =1/s,sin(x) 1 ,exp(x) 注意:要保证同一列的各元素字符串具有相同的长度,为此 在较短字符串的前后可用空格符补充。 b=a; exp(-i), 3 ,x3+y9 ,b = 1/s+x, sin(x), cos(x)2/(b+x) 9, exp(x2+y2), log(tanh(y) exp(-i), 3, x3+y9 ,三、将数值矩阵转化为符号矩阵 在MATLAB中,数值矩阵不能直接参与符号运

11、算,必须先转化为符号矩阵。,16,如:a=2/3,sqrt(2),0.222;1.4,1/0.23,log(3) b=sym(a) 四、符号矩阵的索引和修改 用矩阵的坐标括号表达式实现。 如:对上例中的矩阵b的索引和修改。 b(2,3) %矩阵的索引 b(2,3)=log(3) %矩阵的修改,b = 2/3, sqrt(2), 111/500 7/5, 100/23, 4947709893870346*2(-52),b = 2/3, sqrt(2), 111/500 7/5, 100/23, log(3),17, 3.5 符号矩阵的运算,一、基本运算 1. 符号矩阵的四则运算 矩阵的加(+)、

12、减(-)法 例如:a=sym(1/x,1/(x+1);1/(x+2),1/(x+3) ); b=sym(x,1;x+2,0); b+a 矩阵的乘(*)、除(/、)法 如: ab,ans = 1/x+x, 1/(x+1)+1 1/(x+2)+x+2, 1/(x+3),18, 矩阵的转置() 如:a,ans = -6*x-2*x3-7*x2, 3/2*x2+x+1/2*x3 6+2*x3+10*x2+14*x, -1/2*x3-2*x2-3/2*x,simple(ans),ans = -x*(x+2)*(2*x+3), 1/2*x*(x+2)*(x+1) 2*(x+3)*(x+1)2, -1/2*

13、x*(x+3)*(x+1),ans = 1/conj(x), 1/(2+conj(x) 1/(1+conj(x), 1/(3+conj(x),19,2. 符号矩阵的行列式运算 如:det(a) ans=2/x/(x+3)/(x+1)/(x+2) 3. 符号矩阵的逆 如:inv(b) 4. 符号矩阵的秩 如; rank(a) ans=2 5. 符号矩阵的幂运算 如:a2,ans = 0, 1/(x+2) 1, -x/(x+2),ans = 1/x2+1/(x+1)/(x+2), 1/x/(x+1)+1/(x+1)/(x+3) 1/(x+2)/x+1/(x+3)/(x+2), 1/(x+1)/(x

14、+2)+1/(x+3)2,20,6. 符号矩阵的指数运算 符号矩阵的“数组指数”运算由函数exp实现, 如:exp(b); 符号矩阵的“矩阵指数”运算由函数expm实现; 如:expm(b), exp(b) ans = exp(x), exp(1) exp(x+2), 1,expm(b) a=0 1;3 2 syms t expm(a*t),ans = 1/4*exp(3*t)+3/4*exp(-t), -1/4*exp(-t)+1/4*exp(3*t) -3/4*exp(-t)+3/4*exp(3*t), 3/4*exp(3*t)+1/4*exp(-t),21,二、矩阵分解 1. 符号矩阵的

15、特征值分解 函数eig 如: x,y=eig(b); x=simple(x),x = 1, 1 -1/2*x+1/2*(x2+8+4*x)(1/2), -1/2*x-1/2*(x2+8+4*x)(1/2),y = 1/2*x+1/2*(x2+8+4*x)(1/2), 0 0, 1/2*x-1/2*(x2+8+4*x)(1/2),2. 符号矩阵的约当标准形函数 jordan 如:a=sym(1 1 2;0 1 3;0 0 2 ) x,y=jordan(a),22,3.符号矩阵的三角抽取 函数diag tril triu 如: z=sym(x*y xa sin(y);ta log(y) b;y e

16、xp(t) x ),x = 5, -5, -5 3, 0, -5 1, 0, 0,y = 2, 0, 0 0, 1, 1 0, 0, 1,z = x*y, xa, sin(y) ta, log(y), b y, exp(t), x,triu(z); diag(z); tril(z),ans = x*y, xa, sin(y) 0, log(y), b 0, 0, x ,ans = x*y log(y) x,ans = x*y, 0, 0 ta, log(y), 0 y, exp(t), x,23,四、符号矩阵的简化 1. 因式分解函数 factor 调用格式: factor(S) 输入变量为一

17、符号矩阵,此函数将分解矩阵的各个元素; S包含的所有元素为整数,则计算最佳因式分解式。 如: 符号表达式的分解 syms x factor(x9-1) 分解大整数(factor(sym( N ) factor(sym( 12345678901234567890 ),ans = (x-1)*(x2+x+1)*(x6+x3+1),ans = (2)*(3)2*(5)*(101)*(3803)*(3607)*(27961)*(3541),24,2. 符号矩阵的展开函数 expand 调用格式: expand(s) 对符号矩阵的各元素的符号表达式进行展开,也常用 于三角函数、指数函数和对数函数的展开中

18、。,如: syms x y expand(x+1)3) 多项式展开 expand(sin(x+y) 三角函数展开,ans = x3+3*x2+3*x+1,ans = sin(x)*cos(y)+cos(x)*sin(y),3. 同类式合并 函数 collect 调用格式: collect(S,v) 将符号矩阵S中的各元素的v的同幂项系数合并; collect(S) 对由findsym函数返回的默认变量进行同类项合并。,25,如:syms x y collect(x2*y+y*x-x2-2*x) ans =(y-1)*x2+(y-2)*x collect(x2*y+y*x-x2-2*x,y) a

19、ns =(x2+x)*y-x2-2*x 4. 符号简化 函数 simple和 simplify simple 用于寻找符号矩阵或符号表达式的最简型。调用格式: simple(S) 对表达式S 尝试多种不同的算法简化,以显示S的长度最 短的简化形式,若S为一矩阵,则结果是全矩阵的最短 形,而非每个元素的最短形。,simplify 符号简化函数 调用格式: simplify(S) 简化符号矩阵的每一个元素。,26,如:syms x c alpha beta simplify(sin(x)2+cos(x)2) ans=1 simplify(exp(c*log(sqrt(alpha+beta) ans

20、 =(alpha+beta)(1/2*c) 5. 分式通分 numden 求解符号表达式的分子和分母。 调用格式: N,D=numden(A) 把A的各元素转换为分子和分母都是整系数的 最佳多项式型。 如: n,d=numden(x/y+y/x),n = x2+y2,d = x*y,27, 3.6 符号微积分,一、符号极限 极限的求解可由limit函数来实现,调用格式: limit(F,x,a) 计算符号表达式F在xa条件下的极限值; limit(F,a) 计算符号表达式中由findsym(F)返回的独立变量 趋向于a的极限值; limit(F) 计算a=0时的极限; limit(F,x,a,

21、 right)或limit(F,x,a, left) rigft,left用来指定取极限 的方向。 如: syms x a t h; limit(sin(x)/x) ans=1 limit(1+2*t/x)(3*x),x,inf) ans=exp(6*t) limit(1/x,x,0,right) ans=inf,28,二、符号积分 1. 符号积分函数 int ,调用格式: int(S) 计算符号表达式S对由findsym返回的符号自变量的不定积分, S为符号矩阵或符号数量,若S为常数,则积分针对x。 int(S,v) 计算符号表达式S对符号自变量v的不定积分,v是一数量 符号量。 int(S

22、,a,b) 计算符号表达式S对默认符号变量从a到b的定积分,a和 b为双精度或符号数量。 int(S,v,a,b) 计算符号表达式对变量v从a到b的定积分。 如:syms x x1 alpha u t; A=cos(x*t),sin(x*t);-sin(x*t),cos(x*t),A = cos(x*t), sin(x*t) -sin(x*t), cos(x*t),29,int(A,t),ans = 1/x*sin(x*t), -cos(x*t)/x cos(x*t)/x, 1/x*sin(x*t),int(x1*log(1+x1),0,1) ans=1/4,30,三、符号微分和差分 微分和差

23、分函数 diff 调用格式: diff(S) 对由findsym返回的自变量,求符号表达式S的微分。 diff(S, v)或diff(S,sym(v) 对自变量v,求表达式S的微分 diff(S,n) 对于正整数n,对表达式S微分n次。 如: x=sym(x); t=sym(t); diff(sin(x2) ans=2*cos(x2)*x diff(t6,6) ans=720,31, 3.7 符号代数、微分方程求解,一、线性方程组的符号解法 线性方程的符号求解函数 linsolve solve 此方法可得到方程组的精确解,所得的解析解可由函数vpa转换在浮点近似数值。 例:试对数值方程组用符号

24、求解函数来求解。 a=sym(10, 1, 0;-1 ,10 ,2;0 ,2 ,10 ) b=(9;7;6 ) linsolve(a,b) vpa(ans,5),ans = 473/475 91/95 376/475,ans = .99579 .95789 .79158,32,二、非线性方程的符号解法 非线性方程的符号求解由函数fsolve实现,调用格式为: X=fsolve(fun,x0) fun为所要求解的函数名,通常以M文件的形 式给出,返回函数值F=fun(x),x0为求解方程的初始值。,例:用fsolve函数求解下面非线性方程。,解:首先编制函数文件fc.m 如下 fc.m func

25、tion y=fc(x) y(1)=x(1)-0.7*sin(x(1)-0.2*cos(x(2) y(2)=x(2)-0.7*cos(x(1)+0.2*sin(x(2) y=y(1) y(2);,33,在MATLAB命令窗口输入: x0=0.5,0.5 fsolve(fc,x0),ans = 0.5265 0.5079,三、常微分方程的符号解 常微分方程的符号解由函数 dsolve来计算,主要调用格式为: dsolve(equ1, equ2,),以代表微分方程及初始条件的符号方程为输入参数,多个方程或初始条件可在一个输入变量内联立输入,且以逗号分隔。默认的独立变量为t ,也可把t变为其它的符号

26、变量。字符D代表对独立变量的微分,通常指d/dt。紧跟D的数字代表高阶微分如D2为d2/dt2。紧跟此操作符的任何符号都可作被微变量,如D3y代表对y(t)的3阶微分。,34,例: dsolve(Dx=-a*x) ans =C1*exp(-a*t) S=dsolve(Du=v,Dv=w,Dw=-u, u(0)=0,v(0)=0,w(0)=1) S = u: 1x1 sym v: 1x1 sym w: 1x1 sym S.u ans =1/3*3(1/2)*exp(1/2*t)*sin(1/2*t*3(1/2)- 1/3*exp(1/2*t)*cos(1/2*t*3(1/2)+1/3*exp(-t) 注意:用户定义的符号变量不能再

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论