我正在使用 c++ boost/odeint 来集成化学反应网络。一切正常,除非我消除了一些反应。然后有时会在输出中出现-nan。这是该输出的一小部分。第一列是时间,其他列是物种的浓度。
0.0 2.8701 3.4354 3.48348 4.30509 5.43538 5.35687 2.9138 5.31905 3.51382 0.0268472 -nan 2.93435 -nan -nan -nan -nan 2.9138 -nan -nan 0.0695729 -nan 2.28324 -nan -nan -nan -nan 2.9138 -nan -nan 0.112299 -nan 1.77661 -nan -nan -nan -nan 2.9138 -nan -nan 0.155024 -nan 1.3824 -nan -nan -nan -nan 2.9138 -nan -nan 0.19939 -nan 1.06535 -nan -nan -nan -nan 2.9138 -nan -nan
第二个物种只依赖于自己,第七个物种是恒定的。
所以我的问题是:odeint 什么时候给出 -nan 作为输出?也许某处有一个 0/0 的划分,但所有方程只包含产品,例如
dxdt[5] = - c[2] * x[5] + c[3] * x[9] * x[3];
非常感谢您的任何建议。