私は、化学反応ネットワークを統合するために c++ ブースト/デイントを使用しています。一部の反応を排除する場合を除いて、すべて正常に機能します。次に、出力に -nan が含まれることがあります。これはその出力のごく一部です。最初の列は時間で、他の列は種の濃度です。
0.0 2.8701 3.4354 3.48348 4.30509 5.43538 5.35687 2.9138 5.31905 3.51382 0.0268472 -ナン 2.93435 -ナン -ナン -ナン -ナン 2.9138 -ナン -ナン 0.0695729 -ナン 2.28324 -ナン -ナン -ナン -ナン 2.9138 -ナン -ナン 0.112299 -ナン 1.77661 -ナン -ナン -ナン -ナン 2.9138 -ナン -ナン 0.155024 -ナン 1.3824 -ナン -ナン -ナン -ナン 2.9138 -ナン -ナン 0.19939 -ナン 1.06535 -ナン -ナン -ナン -ナン 2.9138 -ナン -ナン
2 番目の種はそれ自体にのみ依存し、7 番目の種は定数です。
だから私の質問は: odeint はいつ出力として -nan を与えるのですか? どこかに 0/0 除算があるかもしれませんが、すべての方程式には積しか含まれていません。
dxdt[5] = - c[2] * x[5] + c[3] * x[9] * x[3];
アドバイスをありがとうございました。