具有2个变量的python非线性ODE

问题描述 投票:0回答:1

我正在尝试使用python解决Brusselator model,一个非线性ODE。我以前用MATLAB做这个,但现在正在用python作为后端构建一个应用程序。这就是我想切换ti python的原因。

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

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

我检查了stackoverflow,我发现的大多数例子都是简单的非线性ODE,只有一个变量可以转换成线性方程组。 [ - 抱歉我的记谱法。我不知道如何在stackoverflow中添加乳胶]

python matlab ode nonlinear-functions
1个回答
0
投票

我知道这是一个老问题。不过,我设法在下面的代码中提出你的问题。

在那里,我在一个函数中实现了你的两个微分方程,我后来通过scypy中的ODEINT模块进行集成。

我希望这能回答你的问题。

您忠诚的,

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()
© www.soinside.com 2019 - 2024. All rights reserved.