Python нелинейный ODE с 2 переменными

Я пытаюсь решить модель Брюсселатора, нелинейный ODE, используя Python. Раньше я делал это с MATLAB, но сейчас создаю приложение с Python в качестве бэкэнда. Вот почему я хочу переключиться на Python.

dx/dt = A + (x^2)(y) - Bx - x

dy/dt = Bx - (x^2)(y)

Я проверил переполнение стека, и большинство найденных примеров - это простые нелинейные ОДУ с одной переменной, которые можно преобразовать в систему линейных уравнений. [- Извините за мою запись. Я не знаю, как добавить латекс в stackru]

0 ответов

Я знаю, что это старый вопрос. Тем не менее мне удалось сформулировать ваш вопрос в приведенном ниже коде.

Там я реализовал ваши два дифференциальных уравнения в одной функции, которую позже интегрирую через модуль ODEINT из scypy.

Надеюсь, это ответ на вашу проблему.

Искренне Ваш,

import scipy.integrate
import numpy as np
import matplotlib.pyplot as plt

def Integrate(y, t, B, A):
    X, Y = y

    dX_dt = A + (X**2)*(Y) - B*X - X

    dY_dt = B*X - (X**2)*(Y)



    return [dX_dt, dY_dt]

A0 = 0.9
B0 = 0.6
X0 = 0.1
Y0 = 0.0
B0 = 0.35


t = np.linspace(0,100, 10000)


solution = scipy.integrate.odeint(Integrate, y0=[X0, Y0], t=t, args=(A0, B0) )

plt.plot(t, solution[:,1], label='solution')
plt.legend()
plt.xlabel('time')
plt.ylabel('Y')
plt.show()
Другие вопросы по тегам