禁用sympy中的自动简化

2024-07-04 08:04:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在sympy中禁用自动简化,例如求解方程x*y-x我想得到x/x,而不是{}

import sympy
from sympy.abc import x,y,z
expr = x*y-x
sympy.solve(expr,y)
=> 1 # i want unsimplified x/x instead of 1

对于给定的目的,我从sympeder列表中找到了空值

^{pr2}$

我的问题是

  • 给出的例子有什么问题?在
  • 如何使表达式保持不求值/不简化?在

Tags: offromimport目的列表空值方程abc
1条回答
网友
1楼 · 发布于 2024-07-04 08:04:32

禁用自动求值的一种更简单的方法是使用context manager evaluate。例如

from sympy.core.evaluate import evaluate
from sympy.abc import x,y,z
with evaluate(False):
    print(x/x)

这将打印1/x * x,而不是1

然而,正如上下文管理器的docstring所说,大多数SymPy代码都希望自动求值。当禁用自动求值时,任何超出直接计算的内容都可能崩溃。对于solve,甚至对于简单的方程也是如此。您可以禁用求值(使用evaluate(False)或使用UnevaluatedExpr),但您可能无法得到解决方案。在

针对特定方程的部分解决方法是使用Dummy("x")而不是UnevaluateExpr(x)。即使虚拟符号具有不同的名称,它们也被视为不同的符号,因此它们不会被取消。在

^{pr2}$

相关问题 更多 >

    热门问题