2024-07-04 08:04:32 发布
网友
我想在sympy中禁用自动简化,例如求解方程x*y-x我想得到x/x,而不是{}
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列表中找到了空值
我的问题是
禁用自动求值的一种更简单的方法是使用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
1/x * x
然而,正如上下文管理器的docstring所说,大多数SymPy代码都希望自动求值。当禁用自动求值时,任何超出直接计算的内容都可能崩溃。对于solve,甚至对于简单的方程也是如此。您可以禁用求值(使用evaluate(False)或使用UnevaluatedExpr),但您可能无法得到解决方案。在
solve
evaluate(False)
UnevaluatedExpr
针对特定方程的部分解决方法是使用Dummy("x")而不是UnevaluateExpr(x)。即使虚拟符号具有不同的名称,它们也被视为不同的符号,因此它们不会被取消。在
Dummy("x")
UnevaluateExpr(x)
禁用自动求值的一种更简单的方法是使用context manager evaluate。例如
这将打印
1/x * x
,而不是1然而,正如上下文管理器的docstring所说,大多数SymPy代码都希望自动求值。当禁用自动求值时,任何超出直接计算的内容都可能崩溃。对于
solve
,甚至对于简单的方程也是如此。您可以禁用求值(使用evaluate(False)
或使用UnevaluatedExpr
),但您可能无法得到解决方案。在针对特定方程的部分解决方法是使用
^{pr2}$Dummy("x")
而不是UnevaluateExpr(x)
。即使虚拟符号具有不同的名称,它们也被视为不同的符号,因此它们不会被取消。在相关问题 更多 >
编程相关推荐