数组大小不匹配

问题描述

当我尝试运行代码时遇到此问题 “ 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()