作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想知道使用 odeint 处理不连续性的最佳(计算效率高、代码美观)方法是什么。有没有示例代码?
我正在模拟类似反馈控制电机的东西,其角度由旋转编码器以数字方式测量。旋转编码器输出 y 可以建模为 y=floor(angle),其中 angle 是实数。
从概念上讲,我知道该做什么。在模拟过程中,我必须找到角度与整数值交叉的时间,然后返回上一步,积分到交叉的时间,根据不连续性调整状态 y,并从同一点重新开始积分时间。
经过一些谷歌搜索,我找到了下面的代码。但是我在库中看不到函数 make_const_step_time_range。
在 http://meetingcpp.com/tl_files/mcpp/slides/12/odeint.pdf 的第 18 页中:
auto iter = boost::find_if(
make_const_step_time_range(rk4,ode, x, t1, t2, dt),
[](const std::pair< state_type &, double> &x) {
return ( x.first[0] < 0.0 ); } );
我正在使用 boost_1_54_0。
最佳答案
不幸的是,此功能目前仅存在于 odeint 的 github 版本中。
顺便说一句。我们在 issue tracker 上讨论了同一主题我们实际上对您的问题和类似问题有真正的解决方案。但是这个解决方案现在还没有完成。
关于c++ - 如何使用 odeint 处理不连续性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18501592/
这就是我的 我在 2D X,Y 中有一个平面 我通过点击屏幕 X', Y' 来设置他的目的地 我计算它需要转向以面向此目的地的角度: // Calculate the angle between pl
我是一名优秀的程序员,十分优秀!