| RMVL 2.4.0 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
Public 成员函数 | Protected 属性 | 所有成员列表
rm::RungeKutta类 参考
数学、算法模块 » 数据与信号处理 » 数值计算模块

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

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

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

## Public 成员函数
| RungeKutta (const Odes &fs, const std::valarray< double > &p, const std::valarray< double > &lam, const std::valarray< std::valarray< double > > &r)
| 创建一阶常微分方程（组）数值求解器对象，设置初值请参考 init 方法
void | init (double t0, const std::valarray< double > &x0)
| 设置常微分方程（组）的初值
void | init (double t0, std::valarray< double > &&x0)
| 设置常微分方程（组）的初值
std::vector< std::valarray< double > > | solve (double h, std::size_t n)
| 计算常微分方程（组）的数值解
std::generator< std::valarray< double > > | generate (double h, std::size_t n)
| 常微分方程（组）数值解生成器

## Protected 属性
Odes | _fs
| 一阶常微分方程组的函数对象 \(\dot{\boldsymbol x}=\boldsymbol F(t, \boldsymbol x)\)
double | _t0
| 初值的自变量 \(t\)
std::valarray< double > | _x0
| 初值的因变量 \(\boldsymbol x(t)\)
std::valarray< double > | _p
| Butcher 表 \(\boldsymbol p\) 向量
std::valarray< double > | _lambda
| Butcher 表 \(\boldsymbol\lambda\) 向量
std::valarray< std::valarray< double > > | _r
| Butcher 表 \(R\) 矩阵

## 详细描述

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

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

## 构造及析构函数说明

## ◆ RungeKutta()

rm::RungeKutta::RungeKutta | ( | const Odes & | fs,
|  | const std::valarray< double > & | p,
|  | const std::valarray< double > & | lam,
|  | const std::valarray< std::valarray< double > > & | r )

Python:
| rm.RungeKutta( | fs, p, lambda, r | ) -> | <RungeKutta object>

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

参数

  [in] | fs | 常微分方程（组） \(\boldsymbol x'=\boldsymbol F(t,\boldsymbol x)\) 的函数对象 \(\boldsymbol F(t,\boldsymbol x)\)
  [in] | p | Butcher 表 \(\boldsymbol p\) 向量
  [in] | lam | Butcher 表 \(\boldsymbol\lambda\) 向量
  [in] | r | Butcher 表 \(R\) 矩阵

## 成员函数说明

## ◆ generate()

std::generator< std::valarray< 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::valarray< double > & | x0 )
| inline

Python:
| rm.RungeKutta.init( | t0, x0 | ) -> | None

设置常微分方程（组）的初值

参数

  [in] | t0 | 初始位置的自变量 \(t_0\)
  [in] | x0 | 初始位置的因变量 \(\boldsymbol x(t_0)\)

## ◆ init() [2/2]

void rm::RungeKutta::init | ( | double | t0,
|  | std::valarray< double > && | x0 )
| inline

Python:
| rm.RungeKutta.init( | t0, x0 | ) -> | None

设置常微分方程（组）的初值

参数

  [in] | t0 | 初始位置的自变量 \(t_0\)
  [in] | x0 | 初始位置的因变量 \(\boldsymbol x(t_0)\)

## ◆ solve()

std::vector< std::valarray< 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{\boldsymbol x}=\boldsymbol F(t, \boldsymbol x)\)

## ◆ _lambda

std::valarray<double> rm::RungeKutta::_lambda
| protected

Butcher 表 \(\boldsymbol\lambda\) 向量

## ◆ _p

std::valarray<double> rm::RungeKutta::_p
| protected

Butcher 表 \(\boldsymbol p\) 向量

## ◆ _r

std::valarray<std::valarray<double> > rm::RungeKutta::_r
| protected

Butcher 表 \(R\) 矩阵

## ◆ _t0

double rm::RungeKutta::_t0
| protected

初值的自变量 \(t\)

## ◆ _x0

std::valarray<double> rm::RungeKutta::_x0
| protected

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