У меня есть пара дифференциальных уравнений, которые я научился решать:
dc/dt=r*c+c^2-c^3-b*c*u,
du/dt=-g*u+(b*c*u)/2,
, где r, b, g - константы (нет предположения о r, но b иг положительны).Итак, мой код для решения этих проблем:
from scipy.integrate import odeint
import numpy as np
import matplotlib.pyplot as plt
b=2
g=0.1
def func(z,t):
c = z[0]
u = z[1]
dcdt = r*c+c**2-c**3-b*c*u**2
dudt = -g*u+0.5*b*c*u
return [dcdt,dtaudt]
#inital conditions
z0 = [1,0.2] #u[0] =!0.0
#time points
t = np.linspace(0,20,100)
#solve ODE
z = odeint(func,z0,t)
#seperating answers out
c = z[:,0]
u = z[:,1]
Я надеюсь, что это правильный путь.Если нет, пожалуйста, дайте мне знать о моей ошибке.У меня два вопроса.
- Есть ли какой-нибудь способ, которым мы можем сделать мою функцию зависимой от (c, u, t), а не от (z, t)?
- Мне нужно повторить эти уравнения.Поэтому мне нужна переменная
n=6
, где мы можем получить python для решения дифференциальных уравнений для dcdt [i] для i до 6. Я хочу это, потому что я хочу изменить уравнения так, чтобыdcdt [i] может зависеть от dcdt [i-1] или dcdt [i + 1] и т. д.
Может кто-нибудь помочь мне, пожалуйста?Заранее спасибо.