gpt4 book ai didi

c++ - 如何使用 odeint 处理不连续性

转载 作者:太空狗 更新时间:2023-10-29 23:17:21 25 4
gpt4 key购买 nike

我想知道使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com