boost.odeint中任意类型的要求
在boost.odeint(boost常微分方程求解器)中有一些使用和的示例 我想在不同类型的坐标(笛卡尔坐标、极坐标或作用角)中使用odeint原子 我应该为原子重载哪些操作? +,-,最小,最大,功率 我可以在哪个文件中查找odeint使用的操作 更新(1)boost.odeint中任意类型的要求,boost,operator-overloading,numeric,numerical-methods,Boost,Operator Overloading,Numeric,Numerical Methods,在boost.odeint(boost常微分方程求解器)中有一些使用和的示例 我想在不同类型的坐标(笛卡尔坐标、极坐标或作用角)中使用odeint原子 我应该为原子重载哪些操作? +,-,最小,最大,功率 我可以在哪个文件中查找odeint使用的操作 更新(1) 从中,它看起来需要“+”、“*”和abs(),max()很抱歉回答得太长了,但我觉得某种澄清会有帮助: 通常,在odeint中有两种专门化类型的方法 一种方法是专门化代数,这些代数被认为可以适应在容器或集合上迭代的方式,如std::ve
从中,它看起来需要“+”、“*”和abs(),max()很抱歉回答得太长了,但我觉得某种澄清会有帮助: 通常,在odeint中有两种专门化类型的方法 一种方法是专门化代数,这些代数被认为可以适应在容器或集合上迭代的方式,如
std::vector
,std::array
,ublas::matrix
,等等。在odeint中存在一些预定义的代数:
适用于满足boost.range中范围概念的所有容器range\u algebra
- 编译时序列的融合代数
,它将迭代指向操作向量空间代数
用于推力-CUDA的类似STL的框架推力代数
对大多数类型都有效,如default\u操作
,double
,float
<代码>默认\u操作仅假设定义了运算符+、-、*、/,以及诸如std::complex
、abs
等基本功能max
用于推力推力_操作
范围\u代数
与“默认\u操作”结合使用:假设您的类型称为点\u类型
,它基本上由双精度浮点类型组成。为了使用“默认_操作”,您需要
点类型运算符+(点类型,双精度)代码>
点类型运算符+(双精度,点类型)代码>
点类型运算符+(点类型,点类型)代码>
点类型运算符*(点类型,双精度)代码>
点类型运算符*(双精度,点类型)代码>
点类型运算符/(点类型,双精度)代码>
双abs(点式)代码>
向量
、数组
,等等。odeint中还有一个示例,演示了如何调整特殊点类型:使用。如果您使用Boost.Operators库,这是非常简单的
编辑:修复了一些打字错误。我不完全理解。如果要进行坐标变换,则不需要新类型,因为变换的是方程。您的问题是:“对于odeint,我想使用我自己的状态类型。我的状态类型必须支持的最小操作集是什么?”@AndréBergner,是的,您是正确的。