主頁文檔
在生鏽中求解普通微分方程(OD)的數值方法。
要開始在項目中使用板條箱,必須在項目的貨物中添加以下依賴項。
[ dependencies ]
ode_solvers = "0.5.0"
然後,在主文件中,添加
use ode_solvers :: * ;
在板條箱支持多維繫統中實施的數值集成方法。為了定義系統的尺寸,請聲明國家向量的類型別名。例如
type State = Vector3 < f64 > ;
該系統的狀態表示基於Nalgebra板條箱中定義的SVECTOR <t,d>結構。為了方便起見,ode-solvers重新出口六種類型,以使用維度1至6的系統:vector1 <t>,...,vector6 <t>。對於更高的維度,用戶應導入Nalgebra板條板並定義SVECTOR <t>,其中SVECTOR的第二個類型參數是一個維度。例如,對於9維繫統,將有:
type State = SVector < f64 , 9 > ;
另類,也可以將來自納爾格拉板條箱的DVECTOR <T>結構用作狀態表示。使用DVector <t>時,DVECTOR中的行數定義了系統的尺寸。
type State = DVector < f64 > ;
必須在System<T, V>
特徵的system
方法中定義一階ODES系統。通常,為包含模型某些參數的結構定義了此特徵。 System<T, V>
特徵的簽名是:
pub trait System < T , V > {
fn system ( & self , x : T , y : & V , dy : & mut V ) ;
fn solout ( & self , _x : T , _y : & V , _dy : & V ) -> bool {
false
}
}
system
必須包含ODE的地方:第二個參數是自變量(通常是時間),第三個參數是包含因變量的向量,第四個載體包含相對於x的Y的衍生物(s)。在每個成功的集成步驟之後,將調用方法solout
,並在將集成視為true時停止該集成。該方法的實現是可選的。有關實施詳細信息,請參見示例。
以下顯式runge-kutta方法在板條箱的當前版本中實現:
方法 | 姓名 | 命令 | 錯誤估計順序 | 緻密輸出順序 |
---|---|---|---|---|
Runge-Kutta 4 | RK4 | 4 | N/A。 | N/A。 |
dormand-prince | dopri5 | 5 | 4 | 4 |
dormand-prince | DOP853 | 8 | (5,3) | 7 |
這些方法是在模塊RK4,DOPRI5和DOP853中定義的。第一步是將所需的模塊納入範圍:
use ode_solvers :: dopri5 :: * ;
然後,使用相應結構的new
方法或from_param
方法創建結構。有關輸入參數的說明,請參閱API文檔。
let mut stepper = Dopri5 :: new ( system , x0 , x_end , dx , y0 , rtol , atol ) ;
使用該系統使用
let res = stepper . integrate ( ) ;
並檢索結果
let x_out = stepper . x_out ( ) ;
let y_out = stepper . y_out ( ) ;
有關更多詳細信息,請參見主頁。