Эта процедура включает в себя много шагов, но основные из них:
- Вычисление решения для каждого из режимов (обозначаемых значком индекс 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.
- Если достигнута некоторая сходимость, остановитесь.
Есть ли в любом случае Я изменил свой метод, чтобы не получать ошибку MemoryError? Например, возможно ли, что, поскольку я не использую распараллеливание, SciPy «видит» меньше памяти, чем должно видеть? т. е. решит ли распараллеливание нечто большее, чем просто время выполнения?
Примечание. Скажите, пожалуйста, нужно ли мне добавить дополнительную информацию. Сам по себе процесс довольно прост, но расчеты, которые я делаю, включают в себя множество дополнительных расчетов, которые, я думаю, не имеют отношения к данному вопросу.
Подробнее здесь: https://stackoverflow.com/questions/787 ... -solutions