如何用complex_ode求解微分方程?

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

我正在尝试用 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
集成此功能?

python integration ode complex-numbers
© www.soinside.com 2019 - 2024. All rights reserved.