我最近从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的二阶时间导数,即没有被替换)
这在我之前的同意版本中表现得非常完美。
答案 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