第五章符号数学基础 Chapter 5: Foundation of Symbolic Mathematics 符号对象的创建( reating a symbolic object 创建符号变量和表达式( Creating a symbolic variable and expression 创建符号变量和表达式的两个基本函数:sym,yms x=sym(x”)创建一个符号变量x,可以是字符、字符串、表达式或字符 表达式。 *syms用于方便地一次创建多个符号变量,调用格式为: syms a be d 书写简洁意义清楚,建议使用。 例1:使用sym函数创建符号变量 a=sym(a) b=sym('hello) c=sym((1+sqrt(5)2”) y=sym(x^3+5*x^2+12*x+20) a b hello (1+sqrt(5))2 12*x+20 例2:用syms函数创建符号变量 syms a b e d 2.创建符号矩阵( Symbolic matrix Creating) 例1:创建一个循环矩阵。 syms a bc d n=la bc d;be d a;c d a b;d a bcl
第五章 符号数学基础 Chapter 5:Foundation of Symbolic Mathematics 一. 符号对象的创建(Creating a symbolic object) 1. 创建符号变量和表达式(Creating a symbolic variable and expression) 创建符号变量和表达式的两个基本函数:sym, syms *x=sym(‘x’) 创建一个符号变量 x,可以是字符、字符串、表达式或字符 表达式。 *syms 用于方便地一次创建多个符号变量,调用格式为: syms a b c d . 书写简洁意义清楚,建议使用。 例 1:使用 sym 函数创建符号变量. a=sym(‘a’) b=sym( ‘hello’) c=sym(( ‘(1+sqrt(5))/2’) y=sym( ‘x^3+5*x^2+12*x+20’) a = a b = hello C = (1+sqrt(5))/2 Y = x^3+5*x^2+12*x+20 例 2:用 syms 函数创建符号变量。 syms a b c d 2. 创建符号矩阵(Symbolic matrix Creating) 例 1:创建一个循环矩阵。 syms a b c d n=[a b c d;b c d a;c d a b;d a b c] n =
a, b, c, d [b, c, d [c,d, [d, a, b, c 例2:将3阶 Hilbert矩阵转换为符号矩阵。 h=hilb(3) hI=sym(h) h 1.00000.50000.3333 0.50000.33330.2500 0.33330.25000.2000 h1 1.1/2.1/3 [1/2,1/3,1/4] [1/3,1/4,1/5] 注意符号矩阵于数值矩阵的区别。 3.默认符号变量( Implied symbolic variable) 在 MATLAB的符号数学工具箱中,以最接近ⅹ的顺序排列默认自 变量的顺序,可利用 findsym函数对默认自变量进行查询 例1:求符号函数在不同自变量情况下的结果 创建符号变量x和n,建立函数f=x,然后分别求f对x和f对n的导 syms n diff(f %x作为自变量,求f对x的导数 diff(f, n) %n作为自变量,求f对n的导数 f ans n/x ANn
[ a, b, c, d] [ b, c, d, a] [ c, d, a, b] [ d, a, b, c] 例 2:将 3 阶 Hilbert 矩阵转换为符号矩阵。 h=hilb(3) h1=sym(h) h = 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000 h1 = [ 1, 1/2, 1/3] [ 1/2, 1/3, 1/4] [ 1/3, 1/4, 1/5] 注意符号矩阵于数值矩阵的区别。 3. 默认符号变量(Implied symbolic variable) 在 MATLAB 的符号数学工具箱中,以最接近 x 的顺序排列默认自 变量的顺序,可利用 findsym 函数对默认自变量进行查询。 例 1: 求符号函数在不同自变量情况下的结果。 创建符号变量 x 和 n,建立函数 f=xn,然后分别求 f 对 x 和 f 对 n 的导 数. syms x n f=x^n diff(f) % x 作为自变量,求 f 对 x 的导数 diff(f,n) % n 作为自变量,求 f 对 n 的导数 f = x^n ans = x^n*n/x
ans g(x) 例2:查询符号函数中的默认自变量。 创建符号变量ab,n,ⅹ和t,建立函数fax"bt,然后求f的默认自变 量 syms a bn tx f=a*xn+b*t findsym(f, 1) findsym(f, 2) finds(f,5)%f表达式中按最接近x顺序排列的5个默认自变量 finden(n)%f表达式中按最接近字母顺序排列的全部自变量 a'*xn+b*t X x.t.n ba ans b. n. t 二.符号表达式的化简和替换( simplifying and replacing of Symbolic xpressions) 符号数学工具箱提供的符号表达式的因式分解、展开、合并、化简、 通分等操作: 1.符号表达式的化简 Simplifying of symbolic expression (1)因式分解( Factorization) 符号表达式的因式分解函数为 factor(S),可分解符号表达式S的 各个元素
ans = x^n*log(x) 例 2: 查询符号函数中的默认自变量。 创建符号变量 a,b, n, x 和 t ,建立函数 f=axn+bt,然后求 f 的默认自变 量。 syms a b n t x f=a*x^n+b*t findsym(f,1) findsym(f,2) findsym(f,5) % f 表达式中按最接近 x 顺序排列的 5 个默认自变量 findsym(f) % f 表达式中按最接近字母顺序排列的全部自变量 f = a*x^n+b*t ans = x ans = x,t ans = x,t,n,b,a ans = a, b, n, t, x >> 二. 符号表达式的化简和替换(simplifying and replacing of Symbolic xpressions) 符号数学工具箱提供的符号表达式的因式分解、展开、合并、化简、 通分等操作: 1. 符号表达式的化简(Simplifying of symbolic expression) (1).因式分解(Factorization) 符号表达式的因式分解函数为 factor(S), 可分解符号表达式 S 的 各个元素
例1:对表达式fx-1进行因式分解 syms x f-factorx 9-1) pretty(f f (X-1)*(x^2+x+1)*(x^6+x^3+1) 2 63 (X-1)(x+x+1)(x+x+1) 例2:对大整数12345678901234567890进行因式分解。 factor(sym(123456789012345678907) ans (2)*(3)2*(5)*(101)*(3803)*(3607)*(27961)*(3541) (2)符号表达式的展开( Expanding of symbolic expressions) 符号表达式的展开函数为 expand(S),此函数因数展开符号表达式 例:展开表达式f(x+1)5和f=sin(x+y) sy ms y f=(x+1)^5; expand(f f=sin(x+y) expand(n X^5+5*x^4+10*x^3+10*x^2+5*x+1 ans sin(x)*cos(y)+cos(x)*sin(y) (3).符号表达式的同类项合并( Similar team merging for symbolic expression) 符号表达式的同类项合并函数为 collect(S,n),此函数将符号表达 式中自变量的同次幂项的系数合并。 例:对于表达式fx(x(x-6)+12)t,分别将自变量x和t的同类项合并 syms x t
例 1: 对表达式 f=x9 -1 进行因式分解。 syms x f=factor(x^9-1) pretty(f) f = (x-1)*(x^2+x+1)*(x^6+x^3+1) 2 6 3 (x - 1) (x + x + 1) (x + x + 1) 例 2:对大整数 12345678901234567890 进行因式分解。 factor(sym(‘12345678901234567890’)) ans = (2)*(3)^2*(5)*(101)*(3803)*(3607)*(27961)*(3541) (2)符号表达式的展开(Expanding of symbolic expressions) 符号表达式的展开函数为 expand(S), 此函数因数展开符号表达式 S. 例: 展开表达式 f=(x+1)5 和 f=sin(x+y) syms x y f=(x+1)^5; expand(f) f=sin(x+y); expand(f) ans = x^5+5*x^4+10*x^3+10*x^2+5*x+1 ans = sin(x)*cos(y)+cos(x)*sin(y) (3).符号表达式的同类项合并(Similar team merging for symbolic expression) 符号表达式的同类项合并函数为 collect(S,n),此函数将符号表达 式中自变量的同次幂项的系数合并。 例:对于表达式 f=x(x(x-6)+12)t, 分别将自变量 x 和 t 的同类项合并。 syms x t
f=x*(x*(x-6)+12)*t collect(f) collect(f, t) t*x^3-6*t*x^2+12*t*x ans x*(x*(x-6)+12)*t COLLECT Collect coefficients COLLECT(S, v) regards each element of the symbolic matrix s as a polynomial in v and rewrites S in terms of the powers of v COLLECT(S)uses the default variable determined by FINDSYM (4).符号表达式的化简( Simplifying of symbolic expression) 符号表达式的两个化简函数: simplify, simple, simplify:化简函数可用于化简各种表达式 例1:对表达式f=sin(x)+cos2(x)进行化简 SVns X f=sin(x)2+cos(x) 2; simplify(f Ir,how= simple(S)函数可寻找符号表达式S的最简型,r为返回的 简化形式,how为化简过程中使用的主要方法, simple函数综合使用了下 列化简方法: simplify函数对表达式进行化简 eradsimp函数对含根式(surd的表达式进行化简 combine函数对表达式中以求和、乘积、幂运算等形式出现的项 进行合并 collect合并同类项 factor函数实现因式分解 convert函数完成表达式形式的转换
f=x*(x*(x-6)+12)*t; collect(f) collect(f,t) ans = t*x^3-6*t*x^2+12*t*x ans = x*(x*(x-6)+12)*t COLLECT Collect coefficients. COLLECT(S,v) regards each element of the symbolic matrix S as a polynomial in v and rewrites S in terms of the powers of v. COLLECT(S) uses the default variable determined by FINDSYM. (4). 符号表达式的化简(Simplifying of symbolic expression) 符号表达式的两个化简函数:simplify, simple , simplify:化简函数,可用于化简各种表达式 例 1:对表达式 f=sin2 (x)+cos2 (x)进行化简. syms x f=sin(x)^2+cos(x)^2; simplify(f) ans = 1 [r,how]=simple(S) 函数可寻找符号表达式 S 的最简型, r 为返回的 简化形式,how 为化简过程中使用的主要方法,simple 函数综合使用了下 列化简方法: *simplify 函数对表达式进行化简 *radsimp 函数对含根式(surd)的表达式进行化简 *combine 函数对表达式中以求和、乘积、幂运算等形式出现的项 进行合并 *collect 合并同类项 *factor 函数实现因式分解 *convert 函数完成表达式形式的转换
例2:最简表达式的获得 msx t f=cos(x)2-sin(x) 2; Ir, how=simple(f cos (2* how= combine (5)符号表达式的分式通分( Reduction symbolic expression to common denominator 符号表达式的分式通分函数为n,d]= numden(S),此函数将符号表达 式转换为分子( Numerator)和分母( denominator)都是正系数的最佳多项 式 例:对表达式fxyy/x进行通分。 syms x f=x/y+y/x; In, d=numden(f x^2+y^2 NUMDEN Numerator and denominator of a symbolic expression IN, D]=NUMDEN(A) converts each element of a to a rational form where the numerator and denominator are relatively prime polynomials with integer coefficients (6)符号表达式的嵌套形式重写( Representation of nested symbolic expression 符号表达式的嵌套形式重写函数为 horner(S),此函数将符号表达 式转换为嵌套形式 例:对表达式f=x346x2+11x-6进行嵌套形式重写
例 2:最简表达式的获得。 syms x t f=cos(x)^2-sin(x)^2; [r,how]=simple(f) r = cos(2*x) how = combine (5)符号表达式的分式通分(Reduction symbolic expression to common denominator) 符号表达式的分式通分函数为 [n,d]=numden(S), 此函数将符号表达 式转换为分子(Numerator)和分母(denominator)都是正系数的最佳多项 式。 例:对表达式 f=x/y+y/x 进行通分。 syms x y f=x/y+y/x; [n,d]=numden(f) n = x^2+y^2 d = y*x NUMDEN Numerator and denominator of a symbolic expression. [N,D] = NUMDEN(A) converts each element of A to a rational form where the numerator and denominator are relatively prime polynomials with integer coefficients. (6) 符号表达式的嵌套形式重写(Representation of nested symbolic expression) 符号表达式的嵌套形式重写函数为 horner(S), 此函数将符号表达 式转换为嵌套形式。 例: 对表达式 f=x3+6x2+11x-6 进行嵌套形式重写
syns X fx^3+6*x^2+11*x-6; horner(f 6+(l+(+x)*x)*x HORNER Horner polynomial representation HORNER(P) transforms the symbolic polynomial P into its Horner, or nested representation 符号表达式的替换( Replacing of symbolic expression) MATLAB的符号数学工具箱提供了两个符号表达式的替换函数 subexpr和subs,可通过符号替换使表达式的输出形式简化。 subexpr函数可将表达式中重复出现的字符串用变量代替。调用格式: IY, SIGMA}= subexpr(S, SIGMA):用变量 SIGMA的值代替符号表达式S 中重复出现的字符串,Y返回替换后的结果 例:求解并化简三次方程x3+ax+1=0的符号解 t=solve( 3+a*x+1=0) Ir,sl= subexpr(t,’s”) [l/6*(-108+12*(12*a^3+81)^(1/2)^(1/3)-2*a/(-108+12*(12*a^3+81)^( 1/2)^(1/3) [-1/12*(-108+12*(12*a^3+81)(1/2)(1/3)+a/(-108+12*(12*a^3+81) (1/2))(1/3)+1/2*i*3^(12)*(1/6*(-108+12*(12*a^3+81)^(1/2)^(1/3)+2 a(-108+12*(12*a^3+81)^(1/2)(1/3)) [-1/12*(-108+12*(12*a^3+81)(1/2)(1/3)+a/(-108+12*(12*a^3+81) (1/2))(1/3)-12*1*3~(112)*(16*(-108+12*(12*a^3+81)^(1/2)^(1/3)+2 a(-108+12*(12*a^3+81)^(1/2)^(1/3) 1/6*s^(1/3)-2*as^(1/3 [-1/12*s^(1/3)+as^(1/3)+12**3^(1/2)*(1/6*^(1/3)+2*a/s^(1/3) [-1/12*s^(1/3)+a/s(1/3)-1/2*i*3^(12)*(116*s^(1/3)+2*a/s^(1/3)
syms x f=x^3+6*x^2+11*x-6; horner(f) ans = -6+(11+(6+x)*x)*x HORNER Horner polynomial representation. HORNER(P) transforms the symbolic polynomial P into its Horner, or nested, representation. 2. 符号表达式的替换(Replacing of symbolic expression) MATLAB 的符号数学工具箱提供了两个符号表达式的替换函数 subexpr 和 subs,可通过符号替换使表达式的输出形式简化。 subexpr 函数可将表达式中重复出现的字符串用变量代替。调用格式: [Y,SIGMA]=subexpr(S,SIGMA): 用变量 SIGMA 的值代替符号表达式 S 中重复出现的字符串,Y 返回替换后的结果。 例:求解并化简三次方程 x 3+ax+1=0 的符号解。 t=solve(‘x^3+a*x+1=0’) [r,s]=subexpr(t,’s’) t = [1/6*(-108+12*(12*a^3+81)^(1/2))^(1/3)-2*a/(-108+12*(12*a^3+81)^( 1/2))^(1/3)] [ -1/12*(-108+12*(12*a^3+81)^(1/2))^(1/3)+a/(-108+12*(12*a^3+81)^ (1/2))^(1/3)+1/2*i*3^(1/2)*(1/6*(-108+12*(12*a^3+81)^(1/2))^(1/3)+2 *a/(-108+12*(12*a^3+81)^(1/2))^(1/3))] [ -1/12*(-108+12*(12*a^3+81)^(1/2))^(1/3)+a/(-108+12*(12*a^3+81)^ (1/2))^(1/3)-1/2*i*3^(1/2)*(1/6*(-108+12*(12*a^3+81)^(1/2))^(1/3)+2 *a/(-108+12*(12*a^3+81)^(1/2))^(1/3))] r = [ 1/6*s^(1/3)-2*a/s^(1/3)] [ -1/12*s^(1/3)+a/s^(1/3)+1/2*i*3^(1/2)*(1/6*s^(1/3)+2*a/s^(1/3))] [ -1/12*s^(1/3)+a/s^(1/3)-1/2*i*3^(1/2)*(1/6*s^(1/3)+2*a/s^(1/3))]
-108+12*(12*a^3+81)^(12) 函数subs是用指定符号替换符号表达式中的某一特定符号,调用格 式为:R=subs(Sold,new),它可用新的符号变量new替换原来符号表达 式S中的old.当new为数值形式时,显示的结果虽然是数值,但它事实上 是符号变量。 例:分别用新变量替换表达式a+b和cos(a)+sin(b)中变量 syms a b subs(a+b, a, 4) subs(cos(a)+sin(b),{a,b},{sym( alpha"),2})%用单元数组完成不同性质 %元素的替换 ans 4+b ans - cos(alpha)+sin(2) 符号微积分 Differential and integral calculus 1.符号极限( Symbolic limit *limit(Fx,a)计算符号表达式F在x→a条件下的极限 *limit(Fa)计算符号表达式F中由默认自变量趋向于a条件下的极限; limit(F,)计算符号表达式F在默认自变量趋向于0条件下的极限; xlimit(F,x,a, right)和 I limit(Fx,a,eft)计算符号表达式F在x→a条件下 的右极限和左极限。 例:分别计算表达式m照x,m(),m(及m(+)和me syms a; imit(sin(x)x) limit(1/x, x, 0, right)
s = -108+12*(12*a^3+81)^(1/2) 函数 subs 是用指定符号替换符号表达式中的某一特定符号,调用格 式为:R=subs(S,old,new), 它可用新的符号变量 new 替换原来符号表达 式 S 中的 old. 当 new 为数值形式时,显示的结果虽然是数值,但它事实上 是符号变量。 例:分别用新变量替换表达式 a+b 和 cos(a)+sin(b)中变量。 syms a b subs(a+b,a,4) subs(cos(a)+sin(b), {a,b},{sym('alpha'),2}) %用单元数组完成不同性质 %元素的替换 ans = 4+b ans = cos(alpha)+sin(2) 三.符号微积分(Differential and integral calculus) 1. 符号极限(Symbolic limit) *limit(F,x,a) 计算符号表达式 F 在 x→a 条件下的极限; *limit(F,a) 计算符号表达式 F 中由默认自变量趋向于 a 条件下的极限; *limit(F,) 计算符号表达式 F 在默认自变量趋向于 0 条件下的极限; *limit(F,x,a,‘right’) 和limit(F,x,a,’left’) 计算符号表达式F在x→a条件下 的右极限和左极限。 例:分别计算表达式 x x x sin( ) lim →0 , ) 1 lim ( x→0+ x , ) 1 lim ( x→0 _ x 及 x x x a lim (1 ) _ + → 和 x x e − → lim syms x a; limit(sin(x)/x) limit(1/x,x,0,’right’)
limit(1/x, x, 0, left) v=(1+a/x)^x,exp(-x); limit(v, x, inf, ' left) ans ans inf ans exp(a 2.符号微分( symbolic differential calculus) difS求符号表达式S对于默认自变量的微分 dif(Sy)求符号表达式S对于自变量v的微分 dif(S,n)求符号表达式S对于默认自变量的n次微分; 例:分别计算表达式fx的导数和3次导数 syms x =xx diff(f diff(f, 3) ans x'x*(log(x)+1) ans x^x*(log(x)+1)^3+3*x^x*(log(x)+1)/xX^x/x^2 3.符号积分( Symbolic integral calculus) int(S)求符号表达式S对于默认自变量的不定积分; sin(S,v)求符号表达式S对于自变量v的不定积分; int(S,;a,b)求符号表达式S对于默认自变量从a到b的定积分 例:分别计算表达式∫、Jx女、「x和xg1+x)。 (1 (1+=) (1+z)
limit(1/x,x,0,’left’) v=[(1+a/x)^x,exp(-x)]; limit(v,x,inf,’left’) ans = 1 ans = inf ans = -inf ans = [ exp(a), 0] 2. 符号微分(symbolic differential calculus) *diff(S) 求符号表达式 S 对于默认自变量的微分; *diff(S,v) 求符号表达式 S 对于自变量 v 的微分; *diff(S,n) 求符号表达式 S 对于默认自变量的 n 次微分; 例: 分别计算表达式 f=xx 的导数和 3 次导数. syms x; f=x^x; diff(f) diff(f,3) ans = x^x*(log(x)+1) ans = x^x*(log(x)+1)^3+3*x^x*(log(x)+1)/x-x^x/x^2 3. 符号积分(Symbolic integral calculus) *int(S) 求符号表达式 S 对于默认自变量的不定积分; *int(S,v) 求符号表达式 S 对于自变量 v 的不定积分; *int(S,a,b) 求符号表达式 S 对于默认自变量从 a 到 b 的定积分; 例:分别计算表达式 dx x x + − 2 2 (1 ) 2 、 dx z x + 2 (1 ) 、 dz z x + 2 (1 ) 和 + 1 0 xlog(1 x)dx
syms z; f=2*x/(1+x^2)^2; t(f f=x(1+z^2); int(f int(f, z) f-x*log(1+x); int(f,0,1) ans l/(1+x^2) l/2*x^2/(1+z^2) ans ans 1/4 4.符号求和( Symbolic summation) symsum(S) 求符号表达式S对于默认自变量的不定和 systm(Svy)求符号表达式S对于自变量v的不定和; systm(S,;,b)求符号表达式S对于默认自变量从a到b的有限和; 例:分别计算表达式∑k,∑k2和∑ kl syms k x symsum(k) symsum(k 2, 0, 10) samsun(xk/sym(“k!’),k,0,inf) ans - 1/2*k^2-1/2*k
syms x z; f=-2*x/(1+x^2)^2; int(f) f=x/(1+z^2); int(f) int(f,z) f=x*log(1+x); int(f,0,1) ans = 1/(1+x^2) ans = 1/2*x^2/(1+z^2) ans = x*atan(z) ans = 1/4 4. 符号求和(Symbolic summation) *symsum(S) 求符号表达式 S 对于默认自变量的不定和; * symsum(S,v) 求符号表达式 S 对于自变量 v 的不定和; * symsum(S,a,b) 求符号表达式 S 对于默认自变量从 a 到 b 的有限和; 例: 分别计算表达式∑k, 10 0 2 k 和 k =0 ! k k x syms k x symsum(k) symsum(k^2,0,10) symsum(x^k/sym(‘k!’),k,0,inf) ans = 1/2*k^2-1/2*k ans =