与sympy subs的奇怪行为

时间:2015-05-20 13:34:29

标签: python sympy

我最近从sympy 0.7.4更新到0.7.6,现在我对subs有一些非常奇怪的行为。以下代码

from sympy.abc import phi
import sympy as sp

z=sp.Symbol('z')
t=sp.Symbol('t')
sp.pprint((phi(z,t).diff(t,2)).subs(phi(z,t).diff(z),sp.Symbol('b')(z,t)).expand())

给我输出

2
 ∂
───(b(z,t))   2
∂t

(b的二阶时间导数) 但我希望输出

2
 ∂
───(φ(z,t))   2
∂t

(phi的二阶时间导数,即没有被替换)

这在我之前的同意版本中表现得非常完美。

1 个答案:

答案 0 :(得分:0)

这绝对是一个错误:

In [10]: phi(z,t).diff(t,2).subs(phi(z,t), b(z,t))
Out[10]: Derivative(b(z, t), t, t)

In [11]: phi(z,t).diff(t,2).subs(phi(z,t).diff(t), b(z,t))
Out[11]: Derivative(b(z, t), t)

In [12]: phi(z,t).diff(t,2).subs(phi(z,t).diff(z), b(z,t))
Out[12]: Derivative(b(z, t), t, t)

当它们与subs衍生论证不匹配时,它似乎没有考虑原始衍生物的论点。看起来已经报告https://github.com/sympy/sympy/issues/9135