>> syms a b c d e x >> f=sym(5*a^3+3*b*x^5/c+7*c*x-x^e) f = 7*c*x - x^e + 5*a^3 + (3*b*x^5)/c >> pretty(f) 5 e 33 b x 7 c x - x + 5 a + ------ c
【符号表达式的展开与合并】
对于符号表达式,可以利用 expand() 函数将其展开:
expand(S):将符号表达式 S 中的各项进行展开,若包含超越函数,则利用恒等变形的方法将他们展开,S 可为符号表达式矩阵
1 2 3 4 5 6 7
>> syms x >> f=sym(x^2+(x-1)^2) f = (x - 1)^2 + x^2 >> expand(f) ans = 2*x^2 - 2*x + 1
对于符号表达式,可以利用 collect() 函数将同类项进行合并:
collect(S):将符号表达式 S 中的默认变量的相同幂次的项进行合并,S 可为符号表达式矩阵,默认变量由 symvar() 获得
collect(S,var):将符号表达式 S 中 var 的相同次幂的项进行合并,S 可为符号表达式矩阵
1 2 3 4 5 6 7 8 9 10
>> syms x y z >> f=sym((x^2+y*z+z^2)*x+z) f = z + x*(x^2 + z^2 + y*z) >> collect(f) ans = x^3 + (z^2 + y*z)*x + z >> collect(f,z) ans = x*z^2 + (x*y + 1)*z + x^3
【符号表达式的嵌套与分解】
对于符号表达式,可以利用 horner() 函数将其转为嵌套的形式:
horner(S):将符号表达式 S 转换为嵌套的形式,S 可为符号表达式矩阵
1 2 3 4 5 6 7
>> syms x >> f=sym(x^3+6*x^2+3*x+1) f = x^3 + 6*x^2 + 3*x + 1 >> horner(f) ans = x*(x*(x + 6) + 3) + 1
对于符号表达式,可以利用 factor() 函数将其进行因式分解:
factor(S):符号表达式 S 是多项式,会返回该多项式的因子组成的行向量,若 S 不能分解为有理多项式乘积的形式,则会返回 S 本身 ,S 可为符号表达式矩阵或一个数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
>> syms x y >> f= x*y + 2*x + y + 2 f = 2*x + y + x*y + 2 >> factor(f) ans = [ y + 2, x + 1] >> factor(231321216546545) ans = 5271171839935213 >> f= x*y + 2*x + y*5 + 2 f = 2*x + 5*y + x*y + 2 >> factor(f) ans = 2*x + 5*y + x*y + 2
【符号表达式的简化】
matlab 会根据一定的规则对符号表达式进行简化,简化的函数有:
simplify(S):依照 Maple 化简规则简化,S 可为符号表达式矩阵
【符号表达式的替换】
matlab 中提供了符号表达式变量代换的函数,以便利用换元法简化模型。
R=subs(S):用工作区中的变量值替代符号表达式 S 中的所有符号变量,S 可以是符号表达式矩阵
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
>> syms x y >> f=sym(x^2+x*y+x) f = x + x*y + x^2 >> a=sym(2) a = 2 >> x=a x = 2 >> subs(f) ans = 2*y + 6
>> syms t >> x=1/t x = 1/t >> subs(f) ans = y/t + 1/t + 1/t^2
R=subs(S,New):用新符号变量 New 来替代符号表达式 S 中的默认变量,默认变量由 symvar() 获得,S 可以是符号表达式矩阵
1 2 3 4 5 6
>> f f = x + x*y + x^2 >> subs(f,1/t) ans = y/t + 1/t + 1/t^2
R=subs(S,Old,New):用新符号变量 New 来替代符号表达式 S 中的变量 Old,S 可以是符号表达式矩阵
1 2 3 4 5 6
>> f f = x + x*y + x^2 >> subs(f,y,1/t) ans = x + x/t + x^2