我需要根据特定的子表达式重写符号表达式。
考虑以下情况:
f
包含2个变量a
,b
子表达式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)
没有任何区别。
答案 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)