Python - Función Discontinua

   
Vista:

Función Discontinua

Publicado por Marisaz (1 intervención) el 07/10/2012 23:00:53
Hola, estoy intentado programar con Python la función discontinua siguiente:
Para x e y en e intervalo [0,1]
y=2x si 0<x<1/2
y=2x-1 si 1/2<x<1
Me da un error y no se resolverlo (pego código a continuación)

1
2
3
4
5
6
7
8
9
10
11
12
from pylab import *
from numpy import *
 
#The discontinuous function
def fdiscontinuous():
      x=arange(0,1,0.02)
      if (x>0 and x<0.5):
            y=2*x
      elif (x>1/2 and x<1):
            y=2*x-1
      plot(x,y)
      show()


el error que me da es: if (x>0 and x<0.5):
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Lo he intentado resolver con indices y un for(pero no me parece adecuado), y no se que estoy haciendo mal.

Gracias!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Función Discontinua

Publicado por xve (1229 intervenciones) el 08/10/2012 07:35:30
Hola Marisaz, esto e sucede porque x es una lista de valores, no un valor.

prueba así:
1
2
3
4
5
6
7
8
9
def fdiscontinuous():
    x=arange(0,1,0.02)
    for i in x:
        if (i>0 and i<0.5):
            y=2*i
        elif (i>1/2 and i<1):
            y=2*i-1
        plot(i,y)
    show()


Coméntanos si te sirve, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Función Discontinua

Publicado por Marisaz (2 intervenciones) el 08/10/2012 09:11:37
Gracias xve, pero sigue dando error, es el siguiente:
plot(i,y)
UnboundLocalError: local variable 'y' referenced before assignment
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Función Discontinua

Publicado por Marisaz (2 intervenciones) el 08/10/2012 09:53:04
Al final lo he conseguido haciendo esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from pylab import *
from numpy import *
 
def fdiscontinuous():
    x=arange(0,1,0.02)
    l=len(x)
    y=zeros(l)
    for i in range(l):
        if (x[i]>0 and x[i]<0.5):
            y[i]=2*x[i]
        elif (x[i]>1/2 and x[i]<1):
            y[i]=2*x[i]-1
    plot(x,y)
    show()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

Función Discontinua

Publicado por xve (1229 intervenciones) el 08/10/2012 10:51:34
Hola Marisa, muchas gracias por comentarlo!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar