我使用C ++和odeint来求解一组微分方程。我在Mac OS X上使用mex和g ++在Matlab中编译代码。有一段时间一切都很完美,但现在出现了一些奇怪的事情:
我可以运行相同的模拟(使用相同的参数)两次,在一次运行中结果很好,而在另一个输出中,整个列(或多列)是NaN(这也影响其他输出暗示整合过程中出现问题。)
我尝试在各种求解器之间切换。现在我使用具有固定步长的runge_kutta_fehlberg78。 (NaN输出的一种可能性是自适应求解器的初始步长太大。)
这可能是什么原因?特别是随机性让我很好奇。
编辑:我开始怀疑这个问题与Matlab有关。我编译了一个没有Matlab接口的版本,Xcode作为普通的可执行文件,到目前为止我还没有NaN结果的问题。很难说这个问题是否真的得到解决,我不明白为什么会解决这个问题。