代码之家  ›  专栏  ›  技术社区  ›  Layman Tucker

将辛表达式简化为变量的隐函数

  •  2
  • Layman Tucker  · 技术社区  · 5 年前

    我想知道是否有任何方法可以简化Symphy表达式,方法是根据已经定义的变量重写表达式,让Python收集符合该变量定义的术语。

    提前谢谢。

    1 回复  |  直到 5 年前
        1
  •  2
  •   asmeurer    5 年前

    像你描述的那样,这样的事情并不存在,但想做什么并不难。

    首先,有一个问题 cse() function ,它会自动将公共子表达式提取为变量。然而,如果你想要的话,它不会使用预定义的变量。但是如果您的目标只是简化表达式的计算,而您并不真正关心中间表达式是什么, cse 这是你最好的选择。

    您可以使用的一个技巧是分离子表达式的单个部分并替换它们。例如,假设你有一个表达式 expr 包含 x + y ,而你想取代 x+y 具有 z .简单地做 expr.subs(x + y, z) 经常有用。但在某些情况下不会,因为 subs 只替换 x+y 如果它在表达式中找到它。

    你可以使用的一个技巧是“解决”(你可以用 solve 如果你喜欢)替代品 z = x + y 对于单个变量,比如 x = y - z ,并替换它( expr.subs(x, y - z) ).因为在哪里没有模糊性 x 看起来好像有 x+y ,这将在任何地方取代它。你常常必须这样做 expand 使事物抵消的表达式。