《MATLAB符号运算》PPT课件.ppt_第1页
《MATLAB符号运算》PPT课件.ppt_第2页
《MATLAB符号运算》PPT课件.ppt_第3页
《MATLAB符号运算》PPT课件.ppt_第4页
《MATLAB符号运算》PPT课件.ppt_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

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

文档简介

第5章 符号运算,MATLAB 7.X程序设计,2/44,主要内容:,创建符号常量和变量; 符号多项式的运算; 符号微积分的计算; 符号积分变换的计算; 符号微分方程和代数方程的求解。,MATLAB 7.X程序设计,3/44,5.1数值运算与符号运算,符号计算的特点: 1)符号计算定义在符号变量的基础上,符号表达式计算前必须定义符号变量。 2)符号计算是精确计算。 3)符号计算的计算速度较慢。 4)符号计算的运算符和基本数学函数与数值计算中的运算符和基本数学函数几乎完全相同。,MATLAB 7.X程序设计,4/44,5.2.1 创建符号常量,sym函数创建符号常量,格式1为: sym(常量),b=sym(pi) %创建符号常量,5.2 符号变量和符号表达式,MATLAB 7.X程序设计,5/44,sym函数的格式2为: sym(常量,参数) 功能:把常量按参数的格式要求转换为符号常量。其中参数的含义: d 返回最接近的十进制数(默认位数为32位) f 返回该符号值最接近的浮点表示 r 返回该符号值最接近的有理数型(为系统默认方式),可表示为p/q、p*q、10q、p/q、2q和sqrt(p)形式之一 e 返回最接近的带有机器浮点误差的有理值,MATLAB 7.X程序设计,6/44,5.2.2 创建符号变量,sym(变量,参数) 功能:把变量定义为符号对象。其中参数用来设置限定符号变量的数学特性,有三种选择: positive 表示为“正、实”符号变量, real 表示为“实”符号变量, unreal 表示为“非实”符号变量。如果不限定则参数可省略。,MATLAB 7.X程序设计,7/44,syms函数的格式为: syms(arg1, arg2, ,参数) syms arg1 arg2 参数 功能:创建多个符号变量。, a=sym(a); b=sym(b); c=sym(c); x=5;y=-8;z=11; w=a*a+b*b+c*c w=x*x+y*y+z*z,MATLAB 7.X程序设计,8/44,5.2.3 建立符号表达式 (1)利用单引号来生成符号表达式。, y=1/sqrt(2*x) f=cos(x2)-sin(2*x)=0,MATLAB 7.X程序设计,9/44,(2)用sym函数建立符号表达式 f=sym(表达式), u=sym(3*x2-5*y+2*x*y+6) m=sym(a,b;c,d),MATLAB 7.X程序设计,10/44,(3) 使用已经定义的符号变量组成符号表达式, syms x y; v=3*x2-5*y+2*x*y+6,MATLAB 7.X程序设计,11/44,查询符号函数中的默认自变量,findsym(f,n),syms a b n t x f=a*xn+b*t findsym(f,1),MATLAB 7.X程序设计,12/44,5.3 符号表达式的运算 1.算术运算 与数值运算一样,注意”,”/”的区别,MATLAB 7.X程序设计,13/44,例 表达式的算术运算 f1=sym(1/(a-b) ; f2=sym(a/(a+b); f1+f2 f1-f2 f1*f2 f12,MATLAB 7.X程序设计,14/44,2.关系运算 运算符:= = 关系成立为1,不成立为0 f1=f2 f1=f2,MATLAB 7.X程序设计,15/44,3.函数运算 (1)合并 collect 格式: collect(f) 对符号表达式f合并同类项 collect(f,v) 对符号表达式f按变量v 合并,MATLAB 7.X程序设计,16/44,例 合并 syms x y; R1=collect(x+1)*(y+1),x+y) R1 = (y+1)*x+y+1, x+y R2=collect( (x+y)*(x2+y2+1),y) R2 =y3+x*y2+(x2+1)*y+x*(x2+1),MATLAB 7.X程序设计,17/44,(2)展开expand 格式: expand(f) 将表达式f展开 例:展开 syms x y a b R1=expand(x-2)*(x-4) R2=expand(cos(x+y) R3=expand(exp(a+b)2),MATLAB 7.X程序设计,18/44,(3)因式分解 factor 格式:factor(f) 将f因式分解 例 因式分解 f=sym(x2+y2+2*x*y); R1=factor(f),MATLAB 7.X程序设计,19/44,(4)化简 simplify(f): 利用代数中的函数规则对表 达式进行化简 simple(f) :使用其他方法尽可能将表达式化简,MATLAB 7.X程序设计,20/44,例 化简 f=sym(cos(x)2+sin(x)2); g=sym(cos(x)+(-sin(x)2)(1/2); R=simplify(f) R1=simplify(g) R2=simple(g),MATLAB 7.X程序设计,21/44,(5)提取分子、分母 格式: n, d=numden(f) 提取分子、分母 n=numden(f) 只提取分子,MATLAB 7.X程序设计,22/44,例 提取分子、分母 f=sym(x-1)/(x-2)+(x-3)/(2*x-1); nf,df=numden(f) nf = 3*x2-8*x+7 df =(x-2)*(2*x-1) g=sym(x/2,a*x/(b*x+c);1/3,4*x+5); ng,dg=numden(g) ng = x, a*x 1, 4*x+5 dg = 2, b*x+c 3, 1 ,MATLAB 7.X程序设计,23/44,(6)反函数 格式: finverse(f) 对默认自变量的函数求反函数 finverse(f, v) 对自变量v的函数f(v)求反函 数,MATLAB 7.X程序设计,24/44,例 反函数 syms x y; finverse(1/tan(x) ans =atan(1/x) f=x2+y; finverse(f,y) ans =-x2+y,tg(x)=1/z,x=argtg(1/z),MATLAB 7.X程序设计,25/44,(7)复合函数compose f=f(x) g=g(y) 格式: compose(f,g) f(g(y) compose(f,g,z) f(g(z) compose(f,g,x,z) f(g(z) x是f的自变量 compose(f,g,x,y,z) f(g(z) x是f的自变量 y是g的自变量,MATLAB 7.X程序设计,26/44,例 复合函数 syms x y z t f=1/(1+x2);g=sin(y);h=xt; compose(f,g) compose(f,g,t) compose(h,g,x,z) %h(g(z) x为自变量 compose(h,g,t,z) %h(g(z) t为自变量,MATLAB 7.X程序设计,27/44,(8)表达式替换函数 格式: subs(s,new) 用符号或数值变量new 替换s 中的默认变量 subs(s,old,new) 用符号或数值变量new 替换s中的符号变量old,MATLAB 7.X程序设计,28/44,例 替换函数 syms a b subs(a+b,a,4) subs(cos(a)+sin(b),a,b,sym(alpha),2) f=sym(y-sin(x); f1=subs(f,pi), f2=subs(f1,y,2),MATLAB 7.X程序设计,29/44,求tex的反函数。 f=sym(t*ex)%原函数 g=finverse(f) %对默认自由变量x求反函数 g=finverse(f,t)%对t求反函数,求y=x2的反函数。 syms x;f=x2;g=finverse(f) fg=compose(g,f) %验算g(f(x)是否等于x,MATLAB 7.X程序设计,30/44,符号表达式与数值表达式之间的转换,1. 利用函数sym可以将数值表达式变换成它的符号表达式。 2. 函数numeric或eval可以将符号表达 式变换成数值表达式。,MATLAB 7.X程序设计,31/44,sym(1.5) sym(3.14) phi=(1+sqrt(5)/2 eval(phi),MATLAB 7.X程序设计,32/44,5.4 微积分,1.符号极限 格式: limit(f,x,a): limit(f) : limit(f,a) : limit(f,x,a,left) : limit(f,x,a,right) :,MATLAB 7.X程序设计,33/44, sym x limit(xx,x,0,right) ans=1 limit(sin(x)/x,x,0) ans= 1 limit(1/x,x,0, left) ans=-Inf %负无穷大,例 计算 , ,,MATLAB 7.X程序设计,34/44,函数极值 格式: fmin(fname,x1,x2) fmin(fname,x0),求 在0,5内的最小值,MATLAB 7.X程序设计,35/44,2.微分 格式: diff(f):求f对默认自变量的一次微分值 diff(f,t):求f对自变量t的一次微分值 diff(f, n):求f对默认自变量的n次微分值 diff(f,t,n):求f对自变量t的n次微分值,MATLAB 7.X程序设计,36/44,例 求f(x)=ax2+bx+c的微分 f=sym(a*x2+b*x+c); diff(f) %对x求一次微分 diff(f,2) %对x求二次微分 diff(f,a) %对a求一次微分 diff(f,a,2) %对a求二次微分 diff(diff(f),a) %对x和a偏导,MATLAB 7.X程序设计,37/44,3.积分 符号积分格式: int(f):求f对默认自变量的不定积分 int(f,t):求f对t的不定积分 int(f,a,b):求f对默认自变量的定积分,积分区间a,b int(f,t,a,b):求f对t的定积分,积分区间a,b,MATLAB 7.X程序设计,38/44,例 求f(x)=ax2+bx+c的积分 syms a b c x f=sym(a*x2+b*x+c) ; int(f) %f的不定积分,自变量是x int(f,0,2) %f在0,2的定积分,自变量是x int(f,a) %f的不定积分,自变量是a int(int(f,a),x),MATLAB 7.X程序设计,39/44,数值积分 I,n=quad(fname,a,b,tol,trace) I,n=quad8(fname,a,b,tol,trace) dblquad(fun,a,b,c,d,tol) triplequad(fun,a,b,c,d,e,f,tol),MATLAB 7.X程序设计,40/44,例 求定积分。,g=inline(exp(-0.5*x).*sin(x+pi/6); S,n=quad(g,0,3*pi) S,n=quad8(g,0,3*pi),MATLAB 7.X程序设计,41/44,例 求二重积分。,f=inline(exp(-x.2/2).*sin(x.2+y),x,y); I=dblquad(f,-2,2,-1,1),MATLAB 7.X程序设计,42/44,4 级数 1) 级数符号求和 symsum(s,v,n,m) 其中s表示一个级数的通项,是一个符号表达式。v是求和变量,v省略时使用系统的默认变量。n和m是求和的开始项和末项。,MATLAB 7.X程序设计,43/44,例 求下列级数之和。, syms n; s=symsum(1/n2,1,inf) s = 1/6*pi2 eval(s) ans = 1.6449,MATLAB 7.X程序设计,44/44,2) 函数的泰勒级数 taylor(f,v,n,a) 该函数将函数f按变量v展开为泰勒级数,展开到第n项(即变量v的n-1次幂)为止,n的缺省值为6。v的缺省值与diff函数相同。参数a指定将函数f在自变量v=a处展开,a的缺省值是0。,MATLAB 7.X程序设计,45/44,例 将ln(x)在x=1处按5阶多项式展开。, syms x taylor(log(x),x,6,1) ans = x-1-1/2*(x-1)2+1/3*(x-1)3-1/4*(x-1)4+1/5*(x-1)5,MATLAB 7.X程序设计,46/44,5.5.1 多项式的四则运算 1多项式的加减运算 2多项式乘法运算 conv(P1,P2) P1、P2是两个多项式系数 向量。,5.5 多项式计算,MATLAB 7.X程序设计,47/44, a=1,8,0,0,-10; b=2,-1,3; c=conv(a,b),例 求多项式x4+8x3-10与多项式2x2-x+3的乘积。,MATLAB 7.X程序设计,48/44,3多项式除法 Q,r=deconv(P1,P2) 其中Q返回多项式P1除以P2的商式,r返回P1除以P2的余式。这里,Q和r仍是多项式系数向量。,MATLAB 7.X程序设计,49/44, a=1,8,0,0,-10; b=2,-1,3; q,r=deconv(a,b),例 求多项式x4+8x3-10除以多项式2x2-x+3的结果。,MATLAB 7.X程序设计,50/44,5.5.2 多项式的导函数 p=polyder(P):求多项式P的导函数 p=polyder(P,Q):求PQ的导函数 p,q=polyder(P,Q):求P/Q的导函数,导函数的分子存入p,分母存入q。,MATLAB 7.X程序设计,51/44,例 求有理分式的导数。,P=1; Q=1,0,5; p,q=polyder(P,Q),MATLAB 7.X程序设计,52/44,5.5.3 多项式的求值 polyval 代数多项式求值 Y=polyval(P,x) 若x为一数值,则求多项式在该点的值;若x为向量或矩阵,则对向量或矩阵中的每个元素求其多项式的值。,MATLAB 7.X程序设计,53/44,例 已知多项式x4+8x3-10,分别取x=1.2和一个23矩阵为自变量计算该多项式的值。, a=1,8,0,0,-10; x=1.2; y1=polyval(a,x) x=-1,1.2,-1.4;2,-1.8,1.6; y2=polyval(a,x),MATLAB 7.X程序设计,54/44,polyvalm 矩阵多项式求值 设A为方阵,P代表多项式x3-5x2+8,那么polyvalm(P,A)的含义是: A*A*A-5*A*A+8*eye(size(A) 而polyval(P,A)的含义是: A.*A.*A-5*A.*A+8*ones(size(A),MATLAB 7.X程序设计,55/44,5.5.4 多项式求根 x=roots(P) 其中P为多项式的系数向量,求得的根赋给向量x,即x(1),x(2),x(n)分别代表多项式的n个根。,MATLAB 7.X程序设计,56/44,例 求多项式x4+8x3-10的根。,A=1,8,0,0,-10; x=roots(A),若已知多项式的全部根,则可以用poly函数建立起该多项式,其调用格式为: P=poly(x),MATLAB 7.X程序设计,57/44,傅里叶变换及其反变换,傅里叶变换函数: Ffourier(f,t,w) 傅里叶反变换函数: f=ifourier(F) f=ifourier(F,w,t) 功能:返回函数F(w)的fourier反变换f(t)。参数含义同fourier函数。,5.5.5 积分变换,MATLAB 7.X程序设计,58/44,求 的Fourier 变换。, syms x t w; y=exp(-x*x); Ft=fourier(y,x,w) fx=ifourier(Ft,w,t),MATLAB 7.X程序设计,59/44,Laplace变换及其反变换,F=laplace(f,t,s) f=ilaplace(F,s,t) 功能:求函数F(s)的iLaplace变换f(t)。,MATLAB 7.X程序设计,60/44,求sin(at)和阶跃函数的Laplace变换。,syms a t s; F1=laplace(sin(a*t),t,s) F2=laplace(sym(Heaviside(t),MATLAB 7.X程序设计,61/44,Z变换及其反变换,Fztrans(f,n, z) fiztrans(F,z,n) 功能:求时域序列f的Z变换的逆变换函数F。,MATLAB 7.X程序设计,62/44,求阶跃函数、冲激函数和e-an的Z变换。,syms a n z t Fz1=ztrans(sym(Heaviside(t),n,z) Fz2=ztrans(sym(Dirac(t),n,z) Fz3=ztrans(exp(-a*t),n,z),MATLAB 7.X程序设计,63/44,5.6 方程求解 1.代数方程 格式: solve(f,v) 解方程f,自变量为v solve(f1,fn) 解由f1,f2,fn构成的 方程组的解,MATLAB 7.X程序设计,64/44, f=sym(a*x*x+b*x+c=0) solve(f) ans = 1/2/a*(-b+(b2-4*c*a)(1/2) 1/2/a*(-b-(b2-4*c*a)(1/2) solve(f,a) ans =-(b*x+c)/x2,例 代数方程 ax2+bx+c=0,MATLAB 7.X程序设计,65/44,例 求方程组 的解 f1=sym(x+y+z=10); f2=sym(x+y-z=5); f3=sym(x+5*y-z=5); x,y,z=solve(f1,f2,f3) x=15/2 y=0 z=5/2,MATLAB 7.X程序设计,66/44,2.常微分方程 格式: dsolve(f1,f2,cond1,cond2,v) f1,fn 为常微分方程式 D表示求微分,后面数字表示几重微分 Dy y D2y y cond1condn 为初始条件 v为自变量 ,默认时对t求导,MATLAB 7.X程序设计,67/44,例 常微分方程 dsolve(Dy=7) %求y=7的通解 ans =7*t+C1 dsolve(Dy=x2) %自变量为t ans =x2*t+C1 dsolve(Dy=x2,x) %自变量为x ans =1/3*x3+C1 dsolve(D2y=1+Dy,y(0)=1,Dy(0)=0) ans =exp(t)-t,MATLAB 7.X程序设计,68/44,求解两点边值问题:,y=dsolve(x*D2y-3*Dy=x2,y(1)=0,y(5)=0,x),MATLAB 7.X程序设计,69/44,5.7 符号表达式绘图 1.fplot函数 格式: fplot(fun,lims) fun是要绘制的函数(可以是定义函数的M文 件,也可是以X为变量的可计算字符串) lims=XMIN XMAX YMIN YMAX 限定了x,y轴上的绘图空间,MATLAB 7.X程序设计,70/44,例 subplot(2,2,1) fplot(sin,0 10) %sin是Matlab的内部函数 subplot(

温馨提示

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

评论

0/150

提交评论