Boost odeint何时真正调用观察者?

时间:2018-10-29 01:01:46

标签: c++ boost odeint

我正在构建一个使用boost :: odeint集成大型生物仿真模型的C ++类。我正在使用Runge-Kutta-4步进器和观察器。

我知道在每个时间步都会调用观察者,而RK步进器会在每个时间步调用4次导数函数,然后根据这4个结果计算最终状态。

我在文档或互联网上找不到任何地方,但是观察者叫

  1. 在每个时间步长的4个RK调用的第四个之后(此时尚未计算导数),或
  2. 在每个时间步长中4个RK的第一个呼叫之后(在那个时候)?

有人知道答案吗?

我想报告观察者的导数,但是我不想对导数函数进行额外的冗余调用。

谢谢

1 个答案:

答案 0 :(得分:1)

在每个步骤之后(最后)调用观察者,这通常意味着导数尚未准备好,特别是对于RK4,尚未计算导数。 如果您担心重新计算导数,则odeint允许将导数传递到步进器的低级do_step函数中-因此您可以在外部计算和使用导数,然后将其传递。但这意味着您可以'不要使用便捷的集成功能。

相关问题