Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/04/2014, 00:46
santiagoyepes
 
Fecha de Ingreso: junio-2013
Mensajes: 9
Antigüedad: 10 años, 9 meses
Puntos: 0
Problema con basico if elif else

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