我正在构建一个使用boost :: odeint集成大型生物仿真模型的C ++类。我正在使用Runge-Kutta-4步进器和观察器。
我知道在每个时间步都会调用观察者,而RK步进器会在每个时间步调用4次导数函数,然后根据这4个结果计算最终状态。
我在文档或互联网上找不到任何地方,但是观察者叫
有人知道答案吗?
我想报告观察者的导数,但是我不想对导数函数进行额外的冗余调用。
谢谢
答案 0 :(得分:1)
在每个步骤之后(最后)调用观察者,这通常意味着导数尚未准备好,特别是对于RK4,尚未计算导数。 如果您担心重新计算导数,则odeint允许将导数传递到步进器的低级do_step函数中-因此您可以在外部计算和使用导数,然后将其传递。但这意味着您可以'不要使用便捷的集成功能。