根据特定的子表达式重写符号表达式

时间:2016-09-13 11:58:39

标签: matlab symbolic-math

我需要根据特定的子表达式重写符号表达式。

考虑以下情况:

  • 表达式f包含2个变量ab
  • 子表达式c = a / b

    syms a b c
    f = b / (a + b) % = 1 / (1 + a/b) = 1 / (1 + c) <- what I need
    

有没有办法实现这个目标?

编辑:

1 / (1 + a/b)1 / (1 + c)的步骤可以通过调用

来实现
subs(1 / (1 + a/b),a/b,c)

所以更好的问题是:

有没有办法告诉MATLAB简化&#39; b / (a + b)进入1 / (1 + a/b)

只是致电simplify(b / (a + b)没有任何区别。

1 个答案:

答案 0 :(得分:5)

不能自动保证简化为您想要的表单,根据我的经验,不可能通过simplify直接实现 - 因为我注意到简化规则更喜欢有理多项式函数。然而, 如果你知道适当的减速比,你可以替换和简化

>> syms a b c
>> f = b / (a + b);
>> simplify(subs(f,a,c*b))
ans =
1/(c + 1)

>> simplify(subs(f,b,a/c))
ans =
1/(c + 1)

如果需要,然后在没有简化的情况下重新替换:

>> subs(simplify(subs(f,a,c*b)),c,a/b)
ans =
1/(a/b + 1)

>> subs(simplify(subs(f,b,a/c)),c,a/b)
ans =
1/(a/b + 1)