RMVL  2.1.0-dev
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到
rm::RungeKutta类 参考

Butcher 表形式的常微分方程(组)数值求解器 更多...

#include <rmvl/algorithm/numcal.hpp>

类 rm::RungeKutta 继承关系图:
rm::RungeKutta 的协作图:

Public 成员函数

 RungeKutta (const Odes &fs, const std::vector< double > &p, const std::vector< double > &lam, 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)
 常微分方程(组)数值解生成器
 

Protected 属性

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 > & lam,
const std::vector< std::vector< double > > & r )
Python:
rm.RungeKutta(fs, p, lambda, r) -> <RungeKutta object>

创建一阶常微分方程(组)数值求解器对象,设置初值请参考 init 方法

参数
[in]fs常微分方程(组) \(\pmb x'=\pmb F(t,\pmb x)\) 的函数对象 \(\pmb F(t,\pmb x)\)
[in]pButcher 表 \(\pmb p\) 向量
[in]lamButcher 表 \(\pmb\lambda\) 向量
[in]rButcher 表 \(R\) 矩阵

成员函数说明

◆ generate()

std::generator< std::vector< double > > rm::RungeKutta::generate ( double h,
std::size_t n )

常微分方程(组)数值解生成器

参数
[in]h步长
[in]n迭代次数
返回
从初始位置开始迭代计算的生成器,初值不会被 co_yield,共生成 \(n\) 个数值解

◆ init() [1/2]

void rm::RungeKutta::init ( double t0,
const std::vector< double > & x0 )
inline
Python:
rm.RungeKutta.init(t0, x0) -> None

设置常微分方程(组)的初值

参数
[in]t0初始位置的自变量 \(t_0\)
[in]x0初始位置的因变量 \(\pmb x(t_0)\)

◆ init() [2/2]

void rm::RungeKutta::init ( double t0,
std::vector< double > && x0 )
inline
Python:
rm.RungeKutta.init(t0, x0) -> None

设置常微分方程(组)的初值

参数
[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 )
Python:
rm.RungeKutta.solve(h, n) -> <List of x>

计算常微分方程(组)的数值解

参数
[in]h步长
[in]n迭代次数
返回
从初始位置开始迭代 \(n\) 次后共 \(n+1\) 个数值解,自变量可通过 \(t_0+ih\) 计算得到

类成员变量说明

◆ _fs

Odes rm::RungeKutta::_fs
protected

一阶常微分方程组的函数对象 \(\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

Butcher 表 \(\pmb p\) 向量

◆ _r

std::vector<std::vector<double> > rm::RungeKutta::_r
protected

Butcher 表 \(R\) 矩阵

◆ _t0

double rm::RungeKutta::_t0
protected

初值的自变量 \(t\)

◆ _x0

std::vector<double> rm::RungeKutta::_x0
protected

初值的因变量 \(\pmb x(t)\)


该类的文档由以下文件生成: