scipy.integrate.ode.integrate() 可选的“step”和“relax”参数有什么作用?

What do scipy.integrate.ode.integrate() optional `step` and `relax` arguments do?

我很清楚如何以最简单的形式使用 scipy.integrate.ode.integrate(t) 函数,但是 API 读取它还需要两个可选参数,即 steprelax。当前documentation has no information about these arguments, nor are they used in the example。我想知道,它们有什么作用以及它们在哪些情况下有用?

steprelax 参数的存在是为了让用户 运行 只是积分算法的一部分,而不是完整的积分。它们对于测试算法的内部结构很有用,但对普通用户不是特别有用。

两个参数都被视为布尔标志以选择不同类型的部分积分。如果 step 为真(非零),则 integrate() 运行 是积分器的 step() 方法,其文档字符串说 """Make one integration step and return (y1,t1).""" 基本上是 运行这只是正常集成过程中的一个步骤。

如果 relax 为 True(非零),则 integrate() 运行 是集成器的 run_relax() 方法,其文档字符串为 """Integrate from t=t0 to t>=t1 and return (y1,t).""" 基本上,它 运行 积分直到它通过所需的值,但不会对指定值执行额外的后退步骤。

这都可以在IntegratorBase source code.

中看到

编辑:我在 SciPy 中打开了一个 Pull Request 来澄清这些文档:https://github.com/scipy/scipy/pull/7320/