衍生品中的Sympy虚拟符号无法替换

问题描述 投票:0回答:1

我有一个很长的表达式,在导数之后,出现了带有虚拟变量

_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)
,从而替换为数值?

python sympy
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.