首页 > 解决方案 > 变量输出上的 Sympy 替换

问题描述

在我的代码中,我将变量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中的积分输出?

标签: pythonnumpysympy

解决方案


您必须确保您使用的变量是 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})

在此处输入图像描述


推荐阅读