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

Fug*_*ish 5 matlab symbolic-math

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

请考虑以下情形:

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

编辑:

从步骤1 / (1 + a/b)1 / (1 + c)可以通过调用来实现

subs(1 / (1 + a/b),a/b,c)
Run Code Online (Sandbox Code Playgroud)

所以一个更好的问题是:

有没有办法让MATLAB"简化" b / (a + b)1 / (1 + a/b)

只是打电话simplify(b / (a + b)没有区别.

Tro*_*kin 5

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

>> 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)
Run Code Online (Sandbox Code Playgroud)

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

>> 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)
Run Code Online (Sandbox Code Playgroud)