sympy 潜艇的奇怪行为
Strange behaviour with sympy subs
我最近从 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 的二阶时间导数,即没有任何内容被替换)
这在我以前的 sympy 版本中运行得很好。
这绝对是一个错误:
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
我最近从 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 的二阶时间导数,即没有任何内容被替换)
这在我以前的 sympy 版本中运行得很好。
这绝对是一个错误:
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