Buenos dias
Tengo el siguiente código, es un método iterativo:
Código:
import math
import numpy
h = 0.5
end_time = 80.
num_steps = int(end_time / h)
times = h * numpy.array(range(num_steps + 1))
transmission_coeff = 5e-5
def sir():
s = numpy.zeros(num_steps + 1)
i = numpy.zeros(num_steps + 1)
r = numpy.zeros(num_steps + 1)
s[0] = 10000 -10
i[0] = 10
r[0] = 0
for step in range(num_steps):
s2i = h * transmission_coeff * s[step] * i[step]
i2r = h / 5. * i[step]
r2s = h / 2.*r[step]
s[step + 1] = s[step] + r2s - s2i
i[step + 1] = i[step] - i2r + s2i
r[step + 1] = r[step] + i2r - r2s
return s, i, r
s, i, r = sir()
El problema que tengo es que quiero que el transmission_coeff me varie de acuerdo a el dato que me arroja el s[step] asi que
Código:
if s[step]>9500:
transmission_coeff=2e-5
elif s[step]<=9500:
transmission_coeff=2e-4
elif s[step]<=4500
transmission_coeff=2e-5
else:
transmission_coeff=2e-2
mi problema es que no se donde ponerlo porque si lo coloco al inicio donde declaro el transmission_coeff no puede jalar el dato de s[step] y si lo pongo abajo con el for in me genera un problema con la declaracion inicial. Pense en introducirlo como funcion al inicio, pero tampoco me sale. alguien me puede dar luz sin enviarme a un manual, ya que estoy un tanto extraviado.
Agradezco de antemano
Saludos