Tengo el siguiente código, es un método iterativo:
Código:
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 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()
Código:
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.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
Agradezco de antemano
Saludos