Повторно вводить комплексный решатель ODE в Python - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть список сложных дифференциальных уравнений, которые мне нужно пройти «параллельно» (интегрируя один временной шаг для уравнения 1, затем один временной шаг в уравнении 2, затем другой в уравнении 1 и т. Д.): Решательдолжен быть "повторно входящим".Я пытался использовать scipy.integrate.ode.Моя проблема точно такая же, как решение двух несвязанных ODE в цикле с использованием python и scipy.integrate.ode , за исключением сложных дифференциальных уравнений.Таким образом, я не могу использовать 'dopri5', который предназначен только для реальных ODE.

Существует ли любой комплексный повторно входящий решатель ODE, доступный в Python (предпочтительно с интерфейсом, которыйне слишком радикально отличается от scipy.integrate.ode)?

Использование multiprocessing для наличия решателя в нескольких процессах (как предлагается здесь ) на самом деле не вариант, потому что накладные расходыотсылка назад состояний через IPC была бы недопустимой.Другой комментарий к тому же вопросу упоминает, что библиотека солнечных часов, лежащая в основе решателя scipy, на самом деле возвращается, но, вероятно, Scipy не догнал.Существуют ли другие обертки Python для солнечных часов?Я не могу найти информацию, является ли упомянутый пакет scikits-odes повторным входом.

Я также попытался просто заменить scipy.integrate.ode на scipy.integrate.complex_ode, но он вылетает с TypeError: can't multiply sequence by non-int of type 'complex', который я больше не исследовал.

Мой реальный код, где возникает вся эта проблема, находится здесь: https://github.com/qucontrol/krotov/blob/fe7c7240b6b7090b176b96f7d6d2f6b96bc39816/src/krotov/propagators.py#L156

...