我有一个很长的表达式,在导数之后,出现了带有虚拟变量
_xi_1
的项,
Subs(Derivative(eta(_xi_1), _xi_1), _xi_1, 0)
type(exp_list[0].args[2].args[2].args[1][0])
sympy.core.symbol.Dummy
我尝试用新符号替换虚拟变量
s
[e_xi_1 ] = exp_list[0].args[2].args[2].args[1][0].free_symbols
没成功,
for ix in exp_list:
print( ix.subs(_xi_1 ,s) )
仍然打印出关于
_xi_1
的导数。
这很重要,因为虽然
Subs(Derivative(eta(_xi_1), _xi_1), _xi_1, 0) == Subs(Derivative(eta(s), s), s, 0)
True
当我尝试从列表中替换诸如
Subs(Derivative(eta(s), s), s, 0)
之类的表达式时,它不会替换 Subs(Derivative(eta(_xi_1), _xi_1), _xi_1, 0)
。
如何替换虚拟变量,让
Subs(Derivative(eta(_xi_1), _xi_1), _xi_1, 0)
替换为Subs(Derivative(eta(s), s), s, 0)
,从而替换为数值?
您没有显示足够的代码来了解 subs 失败的原因,因为(在本地测试)如果您有正确的符号,它应该不会失败:
from sympy import *
from sympy.abc import x, y
f = Function('f')
>>> a=f(x).diff(x).subs(x,0).subs(x,y); a
Subs(Derivative(f(y), y), y, 0)
>>> b = _
>>> a==b
True
>>> a.subs(b,0) == 0
False
>>> a.replace(lambda x:x==b,lambda x:0) == 0
True