scipy.integrate.

RK45#

class scipy.integrate.RK45(fun, t0, y0, t_bound, max_step=inf, rtol=0.001, atol=1e-06, vectorized=False, first_step=None, **extraneous)[原始碼]#

顯式五(四)階龍格-庫塔法。

此方法使用 Dormand-Prince 公式組 [1]。誤差控制假設四階方法精度,但步長是使用五階精確公式計算(進行局部外推)。四次插值多項式用於密集輸出 [2]

可應用於複數域。

參數:
fun可呼叫物件

系統的右側函數。呼叫簽名為 fun(t, y)。此處 t 是一個純量,而 ndarray y 有兩個選項:它可以是形狀 (n,);則 fun 必須傳回形狀為 (n,) 的類陣列 (array_like)。或者它可以是形狀 (n, k);則 fun 必須傳回形狀為 (n, k) 的類陣列,即每一列對應於 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。

vectorized布林值,選用

是否以向量化方式實作 fun。預設值為 False。

參考文獻

[1]

J. R. Dormand, P. J. Prince, “A family of embedded Runge-Kutta formulae”, Journal of Computational and Applied Mathematics, Vol. 6, No. 1, pp. 19-26, 1980.

[2]

L. W. Shampine, “Some Practical Runge-Kutta Formulas”, Mathematics of Computation,, Vol. 46, No. 173, pp. 135-150, 1986.

屬性:
n整數

方程式數量。

status字串

求解器的目前狀態:‘running’、‘finished’ 或 ‘failed’。

t_bound浮點數

邊界時間。

direction浮點數

積分方向:+1 或 -1。

t浮點數

目前時間。

yndarray

目前狀態。

t_old浮點數

先前的時間。如果尚未執行任何步驟,則為 None。

step_size浮點數

上一個成功步驟的大小。如果尚未執行任何步驟,則為 None。

nfev整數

系統右側函數的評估次數。

njev整數

雅可比矩陣的評估次數。對於此求解器始終為 0,因為它不使用雅可比矩陣。

nlu整數

LU 分解次數。對於此求解器始終為 0。

方法

dense_output()

計算上一個成功步驟的局部內插函數。

step()

執行一個積分步驟。