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 |
该类的文档由以下文件生成: