对变量输出的 Sympy 替换

Sympy Substitution on the output of variable

在我的代码中,我将变量 h 设置为一个集成。我想对该集成的输出执行坐标更改。使用像 Maple 这样的计算机代数软件,这是通过将坐标变化代入变量 h 来实现的,其中代入发生在积分的输出上。我尝试了以下代码:

import sympy as sp

r = sym.Symbol('r')
R = sym.Symbol('R')
theta00 = sp.pi*sp.exp(-(r**2-1)/2)

h = sp.integrate((r**2/2)*sp.diff(theta00, r), (r, -sp.oo, R))
hxy = h.subs(sp.sqrt((x-1)**2 + y**2), R)

hxy 的输出与 h 的输出相同,没有必要的替换。我认为替代是在整合之前应用的。有没有办法在变量 h?

中处理积分的输出

您必须确保您使用的变量是 sympy 符号。这里我直接使用sympy.abc中的符号。

然后对于替换,您可以使用字典将公式中的变量映射到替换值。

import sympy as sp
from sympy.abc import r, R, x, y
theta00 = sp.pi*sp.exp(-(r**2-1)/2)
h = sp.integrate((r**2/2)*sp.diff(theta00, r), (r, -sp.oo, R))

hxy = h.subs({R: sp.sqrt((x-1)**2 + y**2)})

您也可以用数值替换

h.subs({R: 3})