Ошибка памяти при вычислении решений ОДУPython

Программы на Python
Anonymous
Ошибка памяти при вычислении решений ОДУ

Сообщение Anonymous »

Я моделирую уравнение Клейна-Гордона (похожее на волновое уравнение) путем разложения по модам, т. е. мне нужно решить проблему собственных значений y_n'' = - omega_n ** 2 * y (это Конечно, это огромное упрощение).
Эта процедура включает в себя много шагов, но основные из них:
  • Вычисление решения для каждого из режимов (обозначаемых значком индекс n) до максимального индекса max_n. Сохраните его в n-м элементе массива решений класса, который я использую для всего этого (так как все это часть более крупного проекта).

Код: Выделить всё

for n in range(-max_n, max_n+1):
self.solution_array[n+max_n] = scipy.integrate.solve_bvp(
Klein_Gordon_differential_equation,
boundary_conditions,
...,
p=(eigenvalue_guess(n),),
)
Это неоптимально, поскольку я не выполняю никакого распараллеливания.
  • Когда все эти режимы рассчитываются, вычисляют некоторую физическую величину относительно полного семейства решений, что меняет контекст задачи.
  • В этом новом контексте , повторите шаг 1.
  • Если достигнута некоторая сходимость, остановитесь.
При попытке найти собственное значение SciPy выдает ошибку MemoryError: недостаточно памяти для выполнения факторизации.
Есть ли в любом случае Я изменил свой метод, чтобы не получать ошибку MemoryError? Например, возможно ли, что, поскольку я не использую распараллеливание, SciPy «видит» меньше памяти, чем должно видеть? т. е. решит ли распараллеливание нечто большее, чем просто время выполнения?
Примечание. Скажите, пожалуйста, нужно ли мне добавить дополнительную информацию. Сам по себе процесс довольно прост, но расчеты, которые я делаю, включают в себя множество дополнительных расчетов, которые, я думаю, не имеют отношения к данному вопросу.

Подробнее здесь: https://stackoverflow.com/questions/787 ... -solutions

Вернуться в «Python»