【问题标题】:Sympy rewrite expression to templateSympy 将表达式重写为模板
【发布时间】:2013-03-18 16:48:04
【问题描述】:

如果我有 c1 / (c2*s + c3) 之类的表达式,我希望 sympy 将表达式转换为类似于 C1 / (s + C2) 的模板,例如 C1 = c1/c2C2 = c3/c2

有没有简单的方法可以做到这一点?

【问题讨论】:

  • 通常会使用Wildmatch 来执行此操作,但它们似乎不足以识别出一种表达方式实际上是另一种表达方式。
  • 是的,结果必须具有与“通配符”结构完全相同的形式。这可能是一个不错的功能。

标签: sympy


【解决方案1】:

所以你在问“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}]

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    相关资源
    最近更新 更多