Butcher 表形式的常微分方程(组)数值求解器
更多...
#include <rmvl/core/numcal.hpp>
|
| | RungeKutta (const Odes &fs, const std::vector< double > &p, const std::vector< double > &lambda, const std::vector< std::vector< double > > &r) |
| | 创建一阶常微分方程(组)数值求解器对象,设置初值请参考 init 方法
|
| |
| void | init (double t0, const std::vector< double > &x0) |
| | 设置常微分方程(组)的初值
|
| |
| void | init (double t0, std::vector< double > &&x0) |
| | 设置常微分方程(组)的初值
|
| |
| std::vector< std::vector< double > > | solve (double h, std::size_t n) |
| | 计算常微分方程(组)的数值解
|
| |
| std::generator< std::vector< double > > | generate (double h, std::size_t n) |
| | 常微分方程(组)数值解生成器
|
| |
|
| Odes | _fs |
| | 一阶常微分方程组的函数对象 \(\dot{\pmb x}=\pmb F(t, \pmb x)\)
|
| |
| double | _t0 |
| | 初值的自变量 \(t\)
|
| |
| std::vector< double > | _x0 |
| | 初值的因变量 \(\pmb x(t)\)
|
| |
| std::vector< double > | _p |
| | Butcher 表 \(\pmb p\) 向量
|
| |
| std::vector< double > | _lambda |
| | Butcher 表 \(\pmb\lambda\) 向量
|
| |
| std::vector< std::vector< double > > | _r |
| | Butcher 表 \(R\) 矩阵
|
| |
Butcher 表形式的常微分方程(组)数值求解器
◆ RungeKutta()
| rm::RungeKutta::RungeKutta |
( |
const Odes & | fs, |
|
|
const std::vector< double > & | p, |
|
|
const std::vector< double > & | lambda, |
|
|
const std::vector< std::vector< double > > & | r ) |
创建一阶常微分方程(组)数值求解器对象,设置初值请参考 init 方法
- 参数
-
| [in] | fs | 常微分方程(组) \(\pmb x'=\pmb F(t,\pmb x)\) 的函数对象 \(\pmb F(t,\pmb x)\) |
| [in] | p | Butcher 表 \(\pmb p\) 向量 |
| [in] | lambda | Butcher 表 \(\pmb\lambda\) 向量 |
| [in] | r | Butcher 表 \(R\) 矩阵 |
◆ generate()
| std::generator< std::vector< double > > rm::RungeKutta::generate |
( |
double | h, |
|
|
std::size_t | n ) |
常微分方程(组)数值解生成器
- 参数
-
- 返回
- 从初始位置开始迭代计算的生成器,初值不会被
co_yield,共生成 \(n\) 个数值解
◆ init() [1/2]
| void rm::RungeKutta::init |
( |
double | t0, |
|
|
const std::vector< double > & | x0 ) |
|
inline |
设置常微分方程(组)的初值
- 参数
-
| [in] | t0 | 初始位置的自变量 \(t_0\) |
| [in] | x0 | 初始位置的因变量 \(\pmb x(t_0)\) |
◆ init() [2/2]
| void rm::RungeKutta::init |
( |
double | t0, |
|
|
std::vector< double > && | x0 ) |
|
inline |
设置常微分方程(组)的初值
- 参数
-
| [in] | t0 | 初始位置的自变量 \(t_0\) |
| [in] | x0 | 初始位置的因变量 \(\pmb x(t_0)\) |
◆ solve()
| std::vector< std::vector< double > > rm::RungeKutta::solve |
( |
double | h, |
|
|
std::size_t | n ) |
计算常微分方程(组)的数值解
- 参数
-
- 返回
- 从初始位置开始迭代 \(n\) 次后共 \(n+1\) 个数值解,自变量可通过 \(t_0+ih\) 计算得到
◆ _fs
一阶常微分方程组的函数对象 \(\dot{\pmb x}=\pmb F(t, \pmb x)\)
◆ _lambda
| std::vector<double> rm::RungeKutta::_lambda |
|
protected |
Butcher 表 \(\pmb\lambda\) 向量
◆ _p
| std::vector<double> rm::RungeKutta::_p |
|
protected |
◆ _r
| std::vector<std::vector<double> > rm::RungeKutta::_r |
|
protected |
◆ _t0
| double rm::RungeKutta::_t0 |
|
protected |
◆ _x0
| std::vector<double> rm::RungeKutta::_x0 |
|
protected |
该类的文档由以下文件生成: