Radau#
- class scipy.integrate.Radau(fun, t0, y0, t_bound, max_step=inf, rtol=0.001, atol=1e-06, jac=None, jac_sparsity=None, vectorized=False, first_step=None, **extraneous)[source]#
Radau IIA 族五阶隐式龙格-库塔法。
该实现遵循 [1]。误差通过三阶精确嵌入公式控制。满足配置条件的三次多项式用于密集输出。
- 参数:
- fun可调用对象
系统的右侧:状态
y
在时间t
处的导数。调用签名为fun(t, y)
,其中t
是一个标量,y
是一个 ndarray,其len(y) = len(y0)
。fun
必须返回与y
形状相同的数组。有关更多信息,请参阅 vectorized。- t0浮点数
初始时间。
- y0类数组对象, 形状 (n,)
初始状态。
- t_bound浮点数
边界时间——积分不会超过此时间。它也决定了积分的方向。
- first_step浮点数或 None, 可选
初始步长。默认为
None
,表示算法自行选择。- max_step浮点数, 可选
允许的最大步长。默认为 np.inf,即步长不受限制,完全由求解器决定。
- rtol, atol浮点数和类数组对象, 可选
相对和绝对容差。求解器将局部误差估计值保持小于
atol + rtol * abs(y)
。此处 rtol 控制相对精度(正确数字的数量),而 atol 控制绝对精度(正确小数位的数量)。为了达到所需的 rtol,将 atol 设置为小于rtol * abs(y)
中可能出现的最小值,以便 rtol 主导允许的误差。如果 atol 大于rtol * abs(y)
,则无法保证正确数字的数量。反之,为了达到所需的 atol,将 rtol 设置为使rtol * abs(y)
始终小于 atol。如果 y 的分量具有不同的尺度,则通过为 atol 传递形状为 (n,) 的类数组对象,为不同分量设置不同的 atol 值可能会有益。默认值为 rtol 为 1e-3,atol 为 1e-6。- jac{None, 类数组对象, 稀疏矩阵, 可调用对象}, 可选
系统右侧关于 y 的雅可比矩阵,此方法需要。雅可比矩阵的形状为 (n, n),其元素 (i, j) 等于
d f_i / d y_j
。定义雅可比矩阵有三种方式如果是类数组对象或稀疏矩阵,则雅可比矩阵被认为是常数。
如果是可调用对象,则雅可比矩阵被认为同时依赖于 t 和 y;它将根据需要以
jac(t, y)
的形式调用。对于‘Radau’和‘BDF’方法,返回值可能是一个稀疏矩阵。如果为 None(默认),雅可比矩阵将通过有限差分近似。
通常建议提供雅可比矩阵,而不是依赖有限差分近似。
- jac_sparsity{None, 类数组对象, 稀疏矩阵}, 可选
定义雅可比矩阵用于有限差分近似的稀疏结构。其形状必须为 (n, n)。如果 jac 不是 None,则此参数将被忽略。如果雅可比矩阵在每行中只有少量非零元素,提供稀疏结构将大大加快计算速度 [2]。零条目表示雅可比矩阵中的相应元素始终为零。如果为 None(默认),则假定雅可比矩阵是密集的。
- vectorized布尔值, 可选
是否可以向量化方式调用 fun。默认为 False。
如果
vectorized
为 False,fun 将始终以形状为(n,)
的y
调用,其中n = len(y0)
。如果
vectorized
为 True,fun 可以以形状为(n, k)
的y
调用,其中k
是一个整数。在这种情况下,fun 必须表现为fun(t, y)[:, i] == fun(t, y[:, i])
(即返回数组的每一列是与y
的列对应的状态的时间导数)。将
vectorized=True
设置为 True,此方法可以更快地进行雅可比矩阵的有限差分近似,但在某些情况下(例如len(y0)
较小)可能会导致整体执行速度变慢。
- 属性:
- n整型
方程数量。
- status字符串
求解器当前状态:‘运行中’、‘已完成’或‘失败’。
- t_bound浮点数
边界时间。
- direction浮点数
积分方向:+1 或 -1。
- t浮点数
当前时间。
- yndarray
当前状态。
- t_old浮点数
上一时间。如果尚未进行任何步骤,则为 None。
- step_size浮点数
上次成功步骤的步长。如果尚未进行任何步骤,则为 None。
- nfev整型
右侧求值次数。
- njev整型
雅可比矩阵求值次数。
- nlu整型
LU 分解次数。
方法
计算上次成功步骤的局部插值。
step
()执行一个积分步骤。
参考文献
[1]E. Hairer, G. Wanner, “Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems”, Sec. IV.8.
[2]A. Curtis, M. J. D. Powell, and J. Reid, “On the estimation of sparse Jacobian matrices”, Journal of the Institute of Mathematics and its Applications, 13, pp. 117-120, 1974.