RMVL
2.1.0
Robotic Manipulation and Vision Library
|
数值计算与最优化模块 更多...
#include <bitset>
#include <cstdint>
#include <functional>
#include <vector>
#include "rmvl/core/rmvldef.hpp"
类 | |
class | rm::Polynomial |
N 次多项式 更多... | |
class | rm::Interpolator |
函数插值器 更多... | |
class | rm::CurveFitter |
曲线拟合器 更多... | |
class | rm::NonlinearSolver |
非线性方程求解器 更多... | |
class | rm::RungeKutta |
Butcher 表形式的常微分方程(组)数值求解器 更多... | |
class | rm::RungeKutta2 |
2 阶 2 级 Runge-Kutta 求解器 更多... | |
class | rm::RungeKutta3 |
3 阶 3 级 Runge-Kutta 求解器 更多... | |
class | rm::RungeKutta4 |
4 阶 4 级 Runge-Kutta 求解器 更多... | |
struct | rm::OptimalOptions |
无约束多维函数优化选项 更多... | |
命名空间 | |
namespace | rm |
类型定义 | |
using | rm::Ode = std::function<double(double, const std::vector<double> &)> |
常微分方程 | |
using | rm::Odes = std::vector<std::function<double(double, const std::vector<double> &)>> |
常微分方程组 | |
using | rm::Func1d = std::function<double(double)> |
一元函数 | |
using | rm::Func1ds = std::vector<std::function<double(double)>> |
一元函数组 | |
using | rm::FuncNd = std::function<double(const std::vector<double> &)> |
多元函数 | |
using | rm::FuncNds = std::vector<std::function<double(const std::vector<double> &)>> |
多元函数组 | |
枚举 | |
enum class | rm::DiffMode : uint8_t { rm::DiffMode::Central , rm::DiffMode::Ridders } |
梯度/导数计算模式 更多... | |
enum class | rm::FminMode : uint8_t { rm::FminMode::ConjGrad , rm::FminMode::Simplex } |
多维函数最优化模式 更多... | |
enum class | rm::LsqMode : uint8_t { rm::LsqMode::SGN , rm::LsqMode::GN , rm::LsqMode::LM } |
最小二乘求解模式 更多... | |
enum class | rm::RobustMode : uint8_t { rm::RobustMode::L2 , rm::RobustMode::Huber , rm::RobustMode::Tukey , rm::RobustMode::Cauchy , rm::RobustMode::GM } |
Robust 核函数 更多... | |
函数 | |
double | rm::derivative (Func1d func, double x, DiffMode mode=DiffMode::Central, double dx=1e-3) |
计算一元函数的导数 | |
std::vector< double > | rm::grad (FuncNd func, const std::vector< double > &x, DiffMode mode=DiffMode::Central, double dx=1e-3) |
计算多元函数的梯度 | |
std::pair< double, double > | rm::region (Func1d func, double x0, double delta=1) |
采用进退法确定搜索区间 | |
std::pair< double, double > | rm::fminbnd (Func1d func, double x1, double x2, const OptimalOptions &options={}) |
一维函数最小值搜索 | |
std::pair< std::vector< double >, double > | rm::fminunc (FuncNd func, const std::vector< double > &x0, const OptimalOptions &options={}) |
无约束多维函数的最小值搜索,可参考 多维无约束最优化方法 | |
std::pair< std::vector< double >, double > | rm::fmincon (FuncNd func, const std::vector< double > &x0, FuncNds c, FuncNds ceq, const OptimalOptions &options={}) |
有约束多维函数的最小值搜索 | |
std::vector< double > | rm::lsqnonlin (const FuncNds &funcs, const std::vector< double > &x0, const OptimalOptions &options={}) |
非线性最小二乘求解,实现与 [1] 类似的算法 | |
std::vector< double > | rm::lsqnonlinRKF (const FuncNds &funcs, const std::vector< double > &x0, RobustMode rb, const OptimalOptions &options={}) |
带 Robust 核函数的非线性最小二乘求解 | |
数值计算与最优化模块