【问题标题】:Simplifying Sympy expressions as implicit functions of variables将 Sympy 表达式简化为变量的隐式函数
【发布时间】:2018-05-18 20:40:00
【问题描述】:

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

提前致谢。

【问题讨论】:

  • 你试过collect吗?
  • 是的,不幸的是,我尝试收集但没有运气。情况是我有一个巨大的数学表达式,我正在寻找一种方法让 Python 通过扫描所述变量的每个可能组合并将它们嵌套到这些函数(比如 p(x))。

标签: math sympy simplify mathematical-expressions simplification


【解决方案1】:

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

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

您可以使用的一个技巧是隔离子表达式的单个部分并替换它们。例如,假设您有一个包含x + y 的表达式expr,并且您想用z 替换x + y。简单地做expr.subs(x + y, z) 通常是有效的。但在某些情况下,它不会因为subs 仅在表达式中准确找到x + y 时才会替换它。

您可以使用的一个技巧是“解决”(如果您愿意,您可以使用 solve 自动完成)将 z = x + y 替换为单个变量,例如 x = y - z,然后替换它 (expr.subs(x, y - z) )。由于x 出现在x + y 的位置上没有歧义,因此它将在任何地方替换它。然后,您通常必须expand 表达式才能取消。

【讨论】:

  • 非常感谢,我试试看!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多