为什么与 scipy.integrate.ode 的集成没有进展?

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

我正在使用 scipy.integrate.ode 在复杂域中集成函数 func。我组装了以下代码结构:

import numpy as np
from scipy.integrate import ode

def func(x, u, k):
    f, g = u
    dfdx = k*x**2
    dgdx = -x
    
    rhs_FD = [0]*2
    rhs_FD[0] = dfdx
    rhs_FD[1] = dgdx

    return np.array(rhs_FD)

solver = ode(func)
solver.set_integrator('zvode',method='bdf')

k = 1+1j
solver.set_f_params(k)

x0 = 0.0
u0 = [0.0, 1.0]
solver.set_initial_value(u0, x0)

x_values = np.linspace(x0, 1.0, 3)

u_values = []

for x in x_values:
    u = solver.integrate(x)
    u_values.append(u)

但是,我注意到solver.set_integrator('zvode', method='bdf') 描述的方法选择不允许积分继续进行。输出保持与初始条件相同:

[[0.+0.j 1.+0.j]
 [0.+0.j 1.+0.j]
 [0.+0.j 1.+0.j]]

我注意到,通过用solver.set_integrator('dopri5')替换积分器并考虑k的实际值,代码可以很好地工作。但是,我需要在复杂域中执行此集成。如何解决复杂领域集成不推进的问题?

python scipy complex-numbers integrate
© www.soinside.com 2019 - 2024. All rights reserved.