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 族 5 階隱式龍格-庫塔法。
此實作遵循 [1]。誤差由三階精確的嵌入公式控制。滿足配置條件的三次多項式用於密集輸出。
- 參數:
- funcallable
系統的右側:時間
t
時狀態y
的時間導數。呼叫簽名為fun(t, y)
,其中t
是純量,y
是len(y) = len(y0)
的 ndarray。fun
必須傳回與y
相同形狀的陣列。有關更多資訊,請參閱 vectorized。- t0float
初始時間。
- y0array_like, shape (n,)
初始狀態。
- t_boundfloat
邊界時間 - 積分不會超過此時間繼續。它也決定了積分的方向。
- first_stepfloat 或 None,選填
初始步長。預設值為
None
,表示演算法應自行選擇。- max_stepfloat,選填
允許的最大步長。預設值為 np.inf,即步長不受限制,僅由求解器決定。
- rtol, atolfloat 和 array_like,選填
相對和絕對容差。求解器使局部誤差估計值小於
atol + rtol * abs(y)
。此處 rtol 控制相對精度(正確位數),而 atol 控制絕對精度(正確小數位數)。若要達到所需的 rtol,請將 atol 設定為小於可從rtol * abs(y)
預期獲得的最小值,以便 rtol 主導允許的誤差。如果 atol 大於rtol * abs(y)
,則不保證正確位數。相反地,若要達到所需的 atol,請設定 rtol,使rtol * abs(y)
始終小於 atol。如果 y 的組件具有不同的尺度,則為不同的組件設定不同的 atol 值可能是有益的,方法是為 atol 傳遞形狀為 (n,) 的 array_like。預設值為 rtol 的 1e-3 和 atol 的 1e-6。- jac{None, array_like, sparse_matrix, callable},選填
系統右側相對於 y 的雅可比矩陣,此方法需要。雅可比矩陣的形狀為 (n, n),其元素 (i, j) 等於
d f_i / d y_j
。定義雅可比矩陣的方法有三種如果為 array_like 或 sparse_matrix,則假定雅可比矩陣為常數。
如果為 callable,則假定雅可比矩陣取決於 t 和 y;將在必要時呼叫為
jac(t, y)
。對於 ‘Radau’ 和 ‘BDF’ 方法,傳回值可能是稀疏矩陣。如果為 None(預設值),則雅可比矩陣將通過有限差分法近似。
通常建議提供雅可比矩陣,而不是依賴有限差分近似。
- jac_sparsity{None, array_like, sparse matrix},選填
定義雅可比矩陣的稀疏結構,用於有限差分近似。其形狀必須為 (n, n)。如果 jac 不是 None,則忽略此引數。如果雅可比矩陣在每行中只有少數非零元素,則提供稀疏結構將大大加快計算速度 [2]。零項目表示雅可比矩陣中對應的元素始終為零。如果為 None(預設值),則假定雅可比矩陣為密集矩陣。
- vectorizedbool,選填
是否可以向量化方式呼叫 fun。預設值為 False。
如果
vectorized
為 False,則始終使用形狀為(n,)
的y
呼叫 fun,其中n = len(y0)
。如果
vectorized
為 True,則可以使用形狀為(n, k)
的y
呼叫 fun,其中k
是一個整數。在這種情況下,fun 的行為必須使得fun(t, y)[:, i] == fun(t, y[:, i])
(即,傳回陣列的每一列都是與y
的一列對應的狀態的時間導數)。設定
vectorized=True
允許通過此方法更快地進行雅可比矩陣的有限差分近似,但在某些情況下(例如,小len(y0)
)可能會導致整體執行速度變慢。
參考文獻
[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.
- 屬性:
- nint
方程式數量。
- statusstring
求解器的目前狀態:「running」、「finished」或「failed」。
- t_boundfloat
邊界時間。
- directionfloat
積分方向:+1 或 -1。
- tfloat
目前時間。
- yndarray
目前狀態。
- t_oldfloat
先前時間。如果尚未執行任何步驟,則為 None。
- step_sizefloat
上次成功步驟的大小。如果尚未執行任何步驟,則為 None。
- nfevint
右側的評估次數。
- njevint
雅可比矩陣的評估次數。
- nluint
LU 分解的次數。
方法
計算上一個成功步驟的局部內插值。
step
()執行一個積分步驟。