scipy.integrate.odeint с ошибкой сегментации

#python #numpy

#python #numpy

Вопрос:

Я интегрирую (несколько большую — уравнение 687378) систему ODE, используя scipy.integrate.odeint.

Кажется, что он работает нормально, но затем я получаю внезапную ошибку сегментации. Не так много сообщений об ошибке: Segmentation fault: 11 .

Проверяя, что происходит, я превысил время при каждой оценке функций. Размер шага, похоже, не показывает ничего необычного, но затем внезапно он уменьшается с размера шага около 0,08 (который был стандартным при вычислении) до отсутствия видимых изменений в размере шага. Примерно после 20 вычислений, когда он выдает одинаковое значение времени, он просто останавливается, и я получаю ошибку ошибки сегментации.

Похоже, что интеграция была правильной до этого момента. Я решаю систему уравнений, которая должна аппроксимировать некоторые симуляции, которые я сделал, и это, похоже, хорошо подходит. К сожалению, я не могу создать MCVE, поскольку меня попросили сохранить набор данных, основанный на private, и, похоже, он нормально обрабатывает другие примеры.

Я отслеживаю память компьютера во время его работы, и нет никаких признаков чего-либо необычного.

Любые предложения о том, что может быть причиной и что я могу сделать, чтобы это проверить?

Комментарии:

1. Вероятно, это вопрос «исчерпания ресурсов». Итак, мне кажется, что 687378 уравнений представляют слишком большую систему для правильной обработки. Следующая ссылка представляет собой набор примеров, которые генерируют «Ошибки сегментации». Некоторые модули Python не проверяют свои аргументы безотказным способом, у некоторых просто заканчивается память. Я подозреваю, что последнее имеет место в вашем большом ODEs. Cf. wiki. python.org/moin/CrashingPython

2. @Ukimiku Спасибо за комментарий. Это не связано с нехваткой памяти. Тот факт, что он внезапно начинает использовать размер шага 0, предполагает, что проблема заключается в чем-то в алгоритме, а не просто в нехватке ресурсов.