主页文档
在生锈中求解普通微分方程(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 ( ) ;
有关更多详细信息,请参见主页。