Поскольку числовая_функция будет вызываться несколько раз с помощью solve_ivp, есть ли способ скомпилировать ее, чтобы ускорить процесс вычислений?
Вам придется выйти изспособ сделать это. Делая шаг назад, вы предполагаете, что «скомпилированный» код всегда быстрее интерпретируемого Python. Это не относится к делу. Это правда, что простые вещи, такие как циклы и т. Д. В Python медленнее, чем, например, в C, но по этой причине вы просто не пишете большие циклы в Python. Вы предпочитаете использовать массивы с их внутренними функциями. Например, numpy.dot(a, b)
на намного быстрее, чем что-либо, что вы пишете сами на C, потому что numpy.dot
использует некоторые модные библиотеки (в нашем случае BLAS), которые выполняют работу лучше, чем когда-либо.
В определении числовой функции я должен ограничивать, как могу, некоторые более абстрактные (но выразительные) вещи, такие как отображение списка или его понимание?
Это вопрос вкуса.
У вас есть другой совет, чтобы дать мне? Учтите, что число уравнений в вышеупомянутой системе имеет порядок нескольких сотен.
Сначала запустите его, даже если он очень медленный, затем попытайтесь выяснить , где вашкод медленный, и попробуйте улучшить его.