scipy.integrate.RK23¶
- class scipy.integrate.RK23(fun, t0, y0, t_bound, max_step=inf, rtol=0.001, atol=1e-06, vectorized=False, first_step=None, **extraneous)[源代码]¶
3(2)阶显式Runge-Kutta方法。
这使用了Bogacki-Shampine对公式 [1]. 在假设二阶方法精度的前提下,误差是可控制的,但采取的步骤是使用三阶精度公式(进行局部外推)。三次Hermite多项式用于密集输出。
可应用于复杂领域。
- 参数
- fun可调用
系统的右侧。调用签名为
fun(t, y)
。这里t
是标量,ndarray有两个选项y
。它可以具有形状(n,),然后fun
必须返回形状为(n,)的ARRAY_LIKE。或者可替换地,它可以具有形状(n,k),然后fun
必须返回形状为(n,k)的ARRAY_LIKE,即每列对应于y
。在这两个选项之间的选择由以下因素决定 vectorized 参数(见下文)。- t0浮动
初始时间。
- y0类似数组,形状(n,)
初始状态。
- t_bound浮动
边界时间-积分将不会超过它。它还决定了整合的方向。
- first_step浮动或无,可选
初始步长。默认值为
None
这意味着算法应该选择。- max_step浮动,可选
允许的最大步长。默认值为np.inf,即步长不受限制,仅由解算器确定。
- RTOL,ATOLFLOAT和ARRAY_LIKE,可选
相对公差和绝对公差。求解器使局部误差估计值小于
atol + rtol * abs(y)
。这里, rtol 控制相对精度(正确的位数)。但是如果一个组件 y 大约低于 atol ,误差只需要落在相同的 atol 阈值,并且不保证正确的位数。如果y的分量具有不同的刻度,则设置不同的刻度可能是有益的 atol 通过为传递具有形状(n,)的array_like来获取不同组件的值 atol 。的默认值为1e-3 rtol 1e-6用于 atol 。- vectorized布尔值,可选
是否 fun 是以矢量化的方式实现的。默认值为False。
参考文献
- 1
P.Bogacki,L.F.Shampine,“A 3(2)对Runge-Kutta公式”,Appl.数学课。让我们来吧。第2卷,第4期,第321-325页,1989年。
- 属性
- n集成
方程式的数量。
- status字符串
求解器的当前状态:“正在运行”、“已完成”或“失败”。
- t_bound浮动
边界时间。
- direction浮动
集成方向:+1或-1。
- t浮动
当前时间。
- yndarray
当前状态。
- t_old浮动
上一次。如果还没有采取任何步骤,就不会有任何进展。
- step_size浮动
上次成功步骤的大小。如果还没有采取任何步骤,就不会有任何进展。
- nfev集成
系统右侧的数字求值。
- njev集成
雅可比的求值次数。此求解器的值始终为0,因为它不使用雅可比。
- nlu集成
逻辑单元分解数。此解算器的值始终为0。
方法:
dense_output
\()计算上一成功步骤中的局部插值。
step
\()执行一个集成步骤。