Sympy将表达式重写为模板

4
如果我有一个表达式,例如c1 / (c2*s + c3),我希望sympy将表达式转换为一个模板,看起来像C1 / (s + C2),其中C1 = c1/c2C2 = c3/c2
有没有简单的方法可以做到这一点?

通常情况下,人们会使用“Wild”和“match”来完成这个任务,但它们似乎不够强大,无法识别一个表达式实际上是另一个表达式的形式。 - asmeurer
是的,结果必须与“通配符”结构完全相同。这可能是一个不错的功能要点。 - aagaard
1个回答

0

所以你在问:“为了使这个成立,C1和C2必须是什么?”solve可以回答这个问题:

>>> v = var('c1:4 C1:3 s')
>>> expr = c1 / (c2*s + c3)
>>> tmpl = C1 / (s + C2)
>>> t = tmpl.free_symbols - expr.free_symbols
>>> solve(expr - tmpl, t, dict=True)
[{C1: c1/c2, C2: c3/c2}]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接