SymPy的标量替换失效?

2 投票
1 回答
732 浏览
提问于 2025-04-16 08:31
from sympy import *

x,y,s = symbols('xys')

z = (1 - 2*x*x)
w = (1 + 2*x*x)
q = 2*x*x*2*y*y

sub = {2*x*x: s}
print w.subs(sub)
print z.subs(sub)

print q
print q.subs(sub)

我得到的结果是:

1 + s
1 - 2*x**2
4*x**2*y**2
4*x**2*y**2

我期望的结果是:

1 + s
1 - s
4*x**2*y**2
2*y**2*s

我是不是做错了什么?

1 个回答

1

Sympy在匹配的时候似乎有些不一致。比如,改变匹配替换表达式的符号,就能让z被匹配上。我觉得可以把这个例子加到这个问题里去。我还会尝试去Sympy的邮件列表问问。记住,这个项目连1.0版本都还没发布,所以现在的功能还不可能完美(可能以后也不会像任何软件一样完美)。

撰写回答