问题描述
当我尝试运行代码时遇到此问题 “ func(1)返回的数组的大小与y0(2)的大小不匹配”
import matplotlib.pyplot as plt
import numpy as np
from scipy.integrate import odeint
def F(X,t):
dX_1 = X[0]*(1-X[1]) #proie
dX_2 = 1.1*X[1]*(X[0]-1) #prédateur
t0 = 0 # temps initial
tfinal = 20 # temps final
t = np.linspace(t0,tfinal,1000) # n=1000
H = [[1.01,1.01],[1,2],3],4],5]] # conditions initiales
for i in range (len(H)):
solution=odeint(F,H[i],t)
x = solution[:,0]
y = solution[:,1]
plt.figure(1)
plt.grid(True)
plt.suptitle("modèle de Lotka-volterras")
plt.plot(x,y)
plt.xlabel('proie')
plt.ylabel('prédateur')
plt.show()
plt.figure(2)
sol = odeint(F,t)
plt.grid(True)
plt.suptitle("modèle de Lotka-volterras")
plt.plot(t,sol[:,0])
plt.plot(t,1])
plt.legend(["proie","prédateur"])
plt.xlabel('temps')
plt.ylabel('x(t),y(t)')
plt.show()
我该怎么做才能使它变得更好,并预先感谢
解决方法
您大多数时候都忘记了从工作中退缩。现在对我来说有效。
from scipy.integrate import odeint
def F(X,t):
dX_1=X[0]*(1-X[1]) #proie
dX_2=1.1*X[1]*(X[0]-1) #prédateur
return dX_1,dX_2
t0=0 #temps initial
tfinal=20 #temps final
t=np.linspace(t0,tfinal,1000) #n=1000
H=[[1.01,1.01],[1,2],3],4],5]]#conditions initiales
for i in range (len(H)):
solution=odeint(F,H[i],t)
x=solution[:,0]
y=solution[:,1]
plt.figure(1)
plt.grid(True)
plt.suptitle("modèle de Lotka-volterras")
plt.plot(x,y)
plt.xlabel('proie')
plt.ylabel('prédateur')
plt.show()
plt.figure(2)
sol=odeint(F,t)
plt.grid(True)
plt.suptitle("modèle de Lotka-volterras")
plt.plot(t,sol[:,0])
plt.plot(t,1])
plt.legend(["proie","prédateur"])
plt.xlabel('temps')
plt.ylabel('x(t),y(t)')
plt.show()