第5章MATLAB符号运算_第1页
第5章MATLAB符号运算_第2页
第5章MATLAB符号运算_第3页
第5章MATLAB符号运算_第4页
第5章MATLAB符号运算_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

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

文档简介

1、 MATLAB 7.X程序设计程序设计 2/44 创建符号常量和变量;创建符号常量和变量; 符号多项式的运算;符号多项式的运算; 符号微积分的计算;符号微积分的计算; 符号积分变换的计算;符号积分变换的计算; 符号微分方程和代数方程的求解。符号微分方程和代数方程的求解。 MATLAB 7.X程序设计程序设计 3/44 符号计算的特点:符号计算的特点: 1)符号计算定义在符号变量的基础上,符号表)符号计算定义在符号变量的基础上,符号表 达式计算前必须定义符号变量。达式计算前必须定义符号变量。 2)符号计算是精确计算。)符号计算是精确计算。 3)符号计算的计算速度较慢。)符号计算的计算速度较慢。

2、4)符号计算的运算符和基本数学函数与数值计)符号计算的运算符和基本数学函数与数值计 算中的运算符和基本数学函数几乎完全相同。算中的运算符和基本数学函数几乎完全相同。 MATLAB 7.X程序设计程序设计 4/44 symsym函数创建符号常量,格式函数创建符号常量,格式1 1为:为: sym(sym(常量常量) b=sym(pi) %创建符号常量创建符号常量 MATLAB 7.X程序设计程序设计 5/44 symsym函数的格式函数的格式2 2为:为: sym(sym(常量常量, ,参数参数) ) 功能:功能:把常量按参数的格式要求转换为符号常把常量按参数的格式要求转换为符号常 量。其中参数的

3、含义:量。其中参数的含义: d d 返回最接近的十进制数返回最接近的十进制数( (默认位数为默认位数为3232位位) ) f f 返回该符号值最接近的浮点表示返回该符号值最接近的浮点表示 r r 返回该符号值最接近的有理数型返回该符号值最接近的有理数型( (为系统默认为系统默认 方式方式) ),可表示为,可表示为p/qp/q、p p* *q q、10q10q、p/qp/q、2q2q 和和sqrt(psqrt(p) )形式之一形式之一 e e 返回最接近的带有机器浮点误差的有理值返回最接近的带有机器浮点误差的有理值 MATLAB 7.X程序设计程序设计 6/44 sym(sym(变量变量,参数参

4、数) ) 功能:功能:把变量定义为符号对象。其中把变量定义为符号对象。其中参数参数 用来设置限定符号变量的数学特性,有三用来设置限定符号变量的数学特性,有三 种选择:种选择: positive positive 表示为表示为“正、实正、实”符号变符号变 量,量, real real 表示为表示为“实实”符号变量,符号变量, unrealunreal 表示为表示为“非实非实”符号变量。符号变量。 如果不限定则参数可省略。如果不限定则参数可省略。 MATLAB 7.X程序设计程序设计 7/44 symssyms函数的格式为:函数的格式为: syms(arg1, arg2, syms(arg1, a

5、rg2, , ,参数参数) ) symssyms arg1 arg2 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 u=sym(3*x2-5*y+2

6、*x*y+6) m=sym(a,b;c,d) MATLAB 7.X程序设计程序设计 10/44 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-

7、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

8、; 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)因式分解因式分

9、解 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=si

10、mplify(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);

11、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

12、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) co

13、mpose(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)

14、 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 求求tetex x的反函数。的反函数。 f=sym(t*ex)%原函数原函数 g=finverse(f) % %对默认自由变量对默认自由变量x x求反函数求反函数 g=finverse(f,t)% %对对t t求反函数求反函数 求求y=xy=x2 2的反函数。的反函数。 syms x;f=x2;g=finverse(f) fg=compose(g,f) % %验算验算g(f(x)

15、g(f(x)是否等于是否等于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 1.符号极限符号极限 格式:格式: limit(f,x,a): limit(f) : limit(f,

16、a) : limit(f,x,a,left) : limit(f,x,a,right) : 0 lim( ) x f x lim( ) xa f x lim() xa f lim( ) xa f x lim( ) xa f x 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 %负无穷大负无穷大 0 sin lim x x x 0 1 lim x x 例例 计算计算 , , 0 lim x x x MATLAB 7.X

17、程序设计程序设计 34/44 函数极值函数极值 格式:格式: fmin(fname,x1,x2) fmin(fname,x0) 求求 在在0,50,5内的最小值内的最小值 3 ( )25f xxx 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程序设计程序设

18、计 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

19、对默认自变量的定积分对默认自变量的定积分,积分区间积分区间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 数

20、值积分数值积分 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) 3 0 sin() 6 x exdx MATLAB 7.X程序设计程序设计 41/44 f=inline(exp(-x.2/2).*sin(x.2+y

21、),x,y); I=dblquad(f,-2,2,-1,1) 212 /22 1 sin() x exy dxdy 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 2 1111 1 4916n MATLAB 7.X程序设计程序设计 44/

22、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 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*

23、(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(P

24、1,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):求:求

25、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) 2 1 5x MATLAB 7.X程序设计程序设计 52/44 5.5.3 多项式的求值多项式的求值 polyval 代数多项式求值代数多项式求值 Y=polyval(P,x) 若若x为一数值,则求为一数值,则求 多项式在该点的值;若多项式在该点的值;若x为向量或矩为向量或矩 阵,则对向量或矩阵中的每个元素阵,则对向量或矩阵中的每个元素

26、 求其多项式的值。求其多项式的值。 MATLAB 7.X程序设计程序设计 53/44 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

27、*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 A=1,8,0,0,-10; x=roots(A) 若已知多项式的全部根,则可以用若已知多项式的全部根,则可以用poly函函 数建立起该多项式,其调用格式为:数建立起该多项式,其调用格式为: P=poly(x) MATLAB 7.X程序设计程序

28、设计 57/44 傅里叶变换函数:傅里叶变换函数: F Ffourier(f,t,w)fourier(f,t,w) 傅里叶反变换函数:傅里叶反变换函数: f= f=ifourier(Fifourier(F) ) f= f=ifourier(F,w,tifourier(F,w,t) ) 功能:返回函数功能:返回函数F F(w w)的)的fourierfourier反变换反变换 f(t)f(t)。参数含义同参数含义同fourierfourier函数。函数。 5.5.5 积分变换积分变换 MATLAB 7.X程序设计程序设计 58/44 求求 的的Fourier 变换。变换。 2 ( ) x f t

29、e syms x t w; y=exp(-x*x); Ft=fourier(y,x,w) fx=ifourier(Ft,w,t) MATLAB 7.X程序设计程序设计 59/44 lF=laplace(f,t,s)F=laplace(f,t,s) f=ilaplace(F,s,t)f=ilaplace(F,s,t) 功能:求函数功能:求函数F F(s s)的的i iLaplaceLaplace变变 换换f f(t t)。)。 MATLAB 7.X程序设计程序设计 60/44 求求sin(at)sin(at)和阶跃函数的和阶跃函数的LaplaceLaplace 变换。变换。 syms a t s

30、; F1=laplace(sin(a*t),t,s) F2=laplace(sym(Heaviside(t) MATLAB 7.X程序设计程序设计 61/44 F Fztrans(f,nztrans(f,n, z) , z) f fiztrans(F,z,niztrans(F,z,n) ) 功能:求时域序列功能:求时域序列f f的的Z Z变换的逆变变换的逆变 换函数换函数F F。 MATLAB 7.X程序设计程序设计 62/44 求阶跃函数、冲激函数和求阶跃函数、冲激函数和e e-an -an的 的Z Z变变 换。换。 syms a n z t Fz1=ztrans(sym(Heaviside

31、(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)

32、(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 x+y+z=10 x+y-z =5 x+5y-z=5 MATLAB 7.X程序设计程序设计 66/44 2.常微分方程常微分方程 格式:格式: dsolve(f1,f2,cond1,cond2,v) f1,fn 为常

33、微分方程式为常微分方程式 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 求解两点边值问题:求解两点边值问题: 2 3, (1)0, (5)0 xyyxyy 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

温馨提示

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

评论

0/150

提交评论