Я использую C ++ и odeint для решения системы дифференциальных уравнений. Я компилирую код в Matlab, используя mex и g ++ на Mac OS X. Некоторое время все работало отлично, но сейчас происходит нечто любопытное:
Я могу запустить одно и то же моделирование (с одними и теми же параметрами) дважды, и за один прогон результаты хороши, а в другом весь столбец (или несколько столбцов) вывода равен NaN (это также влияет на другие выходы, намекающие на возникающую проблему). в процессе интеграции).
Я пробовал переключаться между различными решателями. Сейчас я использую runge_kutta_fehlberg78 с фиксированным размером шага. (Одна из возможностей вывода NaN заключается в том, что начальный размер шага адаптивного решателя слишком велик.)
Что может быть причиной этого? Особенно случайность заставляет меня задуматься.
Изменить: я начинаю подозревать, что проблема имеет какое-то отношение к Matlab. Я скомпилировал версию без интерфейса Matlab с Xcode в качестве обычного исполняемого файла, и до сих пор у меня не было проблем с результатами NaN. Трудно сказать, действительно ли проблема решена, и я не понимаю, почему это решило бы ее.
Задача ещё не решена.