| RMVL 1.5.2 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
Public 成员函数 | Protected 属性 | 所有成员列表
rm::RungeKutta类 参考
RMVL 核心模块 » 数值计算模块

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

`#include <rmvl/core/numcal.hpp>`

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

## Public 成员函数
| 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)
| 常微分方程（组）数值解生成器

## 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 表形式的常微分方程（组）数值求解器

- 使用 Runge-Kutta 法求解常微分方程（组），算法介绍见 常微分方程（组）数值解与 Runge-Kutta 算法
- 该 Runge-Kutta 数值求解器为通用求解器，提供了一般的 Runge-Kutta 法求解常微分方程（组）的接口

## 构造及析构函数说明

## ◆ 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 )

常微分方程（组）数值解生成器

参数

  [in] | h | 步长
  [in] | 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 )

计算常微分方程（组）的数值解

参数

  [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)\)

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

- rmvl/core/numcal.hpp