【发布时间】:2018-06-24 19:05:07
【问题描述】:
我遇到了在 Sympy 中用逻辑公式替换变量的问题。 这是一个最小的例子 -
from sympy import *
x, y = symbols('x y')
Nand(x, y).subs({x: Nand(x, y)}, simultaneous=True)
这在我的本地 interperter 和 SymPy Docs 上的 live shell 中都失败了,并显示错误消息
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/base/data/home/apps/s~sympy-live-hrd/49.400254913747479351/sympy/sympy/core/basic.py", line 889, in subs
d = Dummy(commutative=new.is_commutative)
File "/base/data/home/apps/s~sympy-live-hrd/49.400254913747479351/sympy/sympy/core/symbol.py", line 205, in __new__
cls._sanitize(assumptions, cls)
File "/base/data/home/apps/s~sympy-live-hrd/49.400254913747479351/sympy/sympy/core/symbol.py", line 65, in _sanitize
'%scommutativity must be True or False.' % whose)
ValueError: Dummy commutativity must be True or False.
我尝试过的其他公式,例如将“Nand”替换为“And”,都不会失败。设置 concurrent=False 也不会失败,但如果我想同时替换 y 将不会给出想要的结果(请参阅this question 了解详细原因)。
这是 SymPy 中的错误,还是误解了什么?
【问题讨论】: