我正在使用 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的实际值,代码可以很好地工作。但是,我需要在复杂域中执行此集成。如何解决复杂领域集成不推进的问题?