我正在尝试用 Python 求解复杂的 ODE。我已经尝试过其他集成器,例如
solve_ivp
,但它们没有按我的预期工作。这就是为什么我想测试其他集成商。 scipy.integrate.complex_ode
的文档非常有限,没有提供任何示例,所以我对如何使用它有点迷失。
我的微分方程如下所示:
def rhs_FD(r, u, l, omega, bkg_func):
# u = H1, K
H1_r = u[0]
K_r = u[1]
lamb_r = bkg_func(r)[0]
nu_r = bkg_func(r)[1]
p_r = bkg_func(r)[2]
rho_r = bkg_func(r)[3]
gamma_r = bkg_func(r)[4]
#Lambda, nu, p, rho e gamma are interpolated functions
############ H1' ############
pi = math.pi
aux0H1 = (4. * ((r ** 2) * (omega ** 2))) + (-8. * ((np.exp(((lamb_r) + (nu_r)))) * (l * ((1. + l) * (pi * ((r ** 2) * (p_r)))))))
aux1H1 = (-3. + (2. * ((np.exp((lamb_r))) * (l + ((l ** 2) + (16. * (pi * ((r ** 2) * (p_r))))))))) - ((np.exp((2. * (lamb_r)))) * (((1. + (8. * (pi * ((r ** 2) * (p_r))))) ** 2)))
aux2H1 = (-4. * ((np.exp((lamb_r))) * ((r ** 2) * ((omega ** 2) * (K_r))))) + ((np.exp((nu_r))) * (aux1H1 * (K_r)))
aux3H1 = ((H1_r) * (aux0H1 - ((np.exp((nu_r))) * ((-1. + (np.exp((lamb_r)))) * (l *(1. + l)))))) + ((32. * ((np.exp(((lamb_r) + (0.5 * (nu_r))))) * (pi * ((r ** 2))))) + aux2H1)
dH1=(((np.exp((lamb_r))) * ((K_r) + (aux3H1 + aux1H1))) - (l * (H1_r))) / r
H1l = dH1
############ K' ############
aux0K = (4. * ((r ** 2) * (omega ** 2))) + (-8. * ((np.exp(((lamb_r) + (nu_r)))) * (l * ((1. + l) * (pi * ((r ** 2) * (p_r)))))))
aux1K = (-3. + (2. * ((np.exp((lamb_r))) * (l + ((l ** 2) + (16. * (pi * ((r ** 2) * (p_r))))))))) - ((np.exp((2. * (lamb_r)))) * (((1. + (8. * (pi * ((r ** 2) * (p_r))))) ** 2)))
aux2K = (-4. * ((np.exp((lamb_r))) * ((r ** 2) * ((omega ** 2) * (K_r))))) + ((np.exp((nu_r))) * (aux1K * (K_r)))
aux3K = ((H1_r) * (aux0K - ((np.exp((nu_r))) * ((-1. + (np.exp((lamb_r)))) * (l * (1. + l)))))) + ((32. * ((np.exp(((lamb_r) + (0.5 * (nu_r))))) * (pi * ((r ** 2))))) + aux2K)
dK=(0.5 * (((l * ((1. + l) * (H1_r))) + aux3K) - ((3. + (2. * l)) * (K_r)))) / r
Kl = dK
哪里
r = np.linspace(0.0001, 0.08, 160)
u0 = [6.66666739e-01 -4.36685255e-09j, 9.99999964e-01 -6.49601793e-09j]
l = 2
omega = 1+1j
bkg_func = # Functions of the integration variable r
如何使用
scipy.integrate.complex_ode
集成此功能?