Fug*_*ish 5 matlab symbolic-math
我需要根据特定的子表达式重写符号表达式.
请考虑以下情形:
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
Run Code Online (Sandbox Code Playgroud)有没有办法实现这个目标?
编辑:
从步骤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)没有区别.
简化到你想要的形式不是自动保证,根据我的经验,不太可能直接通过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)