根据特定子表达式重写符号表达式
Rewrite a symbolic expression in terms of a specific subexpression
我需要根据特定的子表达式重写符号表达式。
考虑以下场景:
- 表达式
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 将 'simplify' 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)
然后在没有简化的情况下重新代入,如果需要的话:
>> 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)
我需要根据特定的子表达式重写符号表达式。
考虑以下场景:
- 表达式
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 将 'simplify' 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)
然后在没有简化的情况下重新代入,如果需要的话:
>> 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)