微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数组大小不匹配

如何解决数组大小不匹配

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。