Я получаю ошибку «индекс выходит за пределы», используяsolve_ivpPython

Программы на Python
Ответить
Anonymous
 Я получаю ошибку «индекс выходит за пределы», используяsolve_ivp

Сообщение Anonymous »

Я пытаюсь найти время вспышки (когда количество зомби >= количество людей) как функцию гаммы уровня зомбификации, используя следующий код:

Код: Выделить всё

arrOutbreakT = []
arrGamma = np.linspace(10**(-4), 1, 2001)

for i in range (0, len(arrGamma)):
gamma = arrGamma[i]
NstepC = (gamma*10000).astype(int)
tlistC = np.linspace(iniTime, finalTime, NstepC + 1)
solC = solve_ivp(gradF, t_span2, ini2, t_eval = tlistC)

k = 0
klist = np.zeros(NstepC+1)
while solC.y[1, k] < (solC.y[0, k] / 4):
k = k + 1

arrOutbreakT.append(tlistC[k])
где

Код: Выделить всё

alpha = 0.0 # human natural birth rate
beta = 1.0*(10**(-4)) # human natural death rate
gamma = 9.5*(10**(-3)) # zombification rate
delta = 1.0*(10**(-4)) # zombie destruction rate
epsilon = 1.0*(10**(-4))
iniTime = 0.0
h = 0.01 # step size
Nstep = 500
finalTime = iniTime + Nstep*h # = 5.0 days

H0 = 1000 # original no. of humans
Z0 = 5 # original no. of zombies
D0 = 0 # original no. of dead

ini2 = [H0, Z0, D0]
t_span2 = [time[0], finalTime]

def gradF (time, HZD):
return [(alpha - beta - gamma*HZD[1])*HZD[0],
gamma*HZD[0]*HZD[1] - delta*HZD[0]*HZD[1] + epsilon/HZD[1],
beta*HZD[0] + delta*HZD[0]*HZD[1] - epsilon*HZD[2]]
Я получаю следующий результат:

Код: Выделить всё

IndexError                                Traceback (most recent call last)
321 k = 0
322 klist = np.zeros(NstepC+1)
--> 323 while solC.y[1, k] < (solC.y[0, k] / 4):
324     k = k + 1
326 arrOutbreakT.append(tlistC[k])

IndexError: index 2 is out of bounds for axis 1 with size 2
Может кто-нибудь помочь?


Подробнее здесь: https://stackoverflow.com/questions/798 ... -solve-ivp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»