DOP853#
- class scipy.integrate.DOP853(fun, t0, y0, t_bound, max_step=inf, rtol=0.001, atol=1e-06, vectorized=False, first_step=None, **extraneous)[原始碼]#
8 階顯式龍格-庫塔法。
這是「DOP853」演算法的 Python 實作,最初以 Fortran [1], [2] 撰寫。請注意,這不是字面翻譯,但演算法核心和係數是相同的。
可應用於複數域。
- 參數:
- fun可呼叫物件
系統的右手邊。呼叫簽名為
fun(t, y)
。此處,t
是純量,而 ndarrayy
有兩個選項:它可以具有形狀 (n,);然後fun
必須傳回形狀為 (n,) 的類陣列。或者它可以具有形狀 (n, k);然後fun
必須傳回形狀為 (n, k) 的類陣列,即每一列對應於y
中的單一列。兩個選項之間的選擇由 vectorized 引數決定(請參閱下方)。- t0float
初始時間。
- y0array_like,形狀 (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,) 的類陣列。預設值為 rtol 為 1e-3,atol 為 1e-6。- vectorizedbool,選用
fun 是否以向量化方式實作。預設值為 False。
參考文獻
[1]E. Hairer、S. P. Norsett G. Wanner,「Solving Ordinary Differential Equations I: Nonstiff Problems」,Sec. II。
- 屬性:
- nint
方程式數量。
- statusstring
求解器的目前狀態:「running」、「finished」或「failed」。
- t_boundfloat
邊界時間。
- directionfloat
積分方向:+1 或 -1。
- tfloat
目前時間。
- yndarray
目前狀態。
- t_oldfloat
先前的時間。如果尚未執行任何步驟,則為 None。
- step_sizefloat
上次成功步驟的大小。如果尚未執行任何步驟,則為 None。
- nfevint
系統右手邊的評估次數。
- njevint
雅可比矩陣的評估次數。對於此求解器,始終為 0,因為它不使用雅可比矩陣。
- nluint
LU 分解的次數。對於此求解器,始終為 0。
方法
計算上次成功步驟的局部內插值。
step
()執行一個積分步驟。