Foros del Web » Programando para Internet » Python »

Soy principiante:Ayuda con programa en Python: Método de la bisección (No compila)

Estas en el tema de Soy principiante:Ayuda con programa en Python: Método de la bisección (No compila) en el foro de Python en Foros del Web. Hola: Soy novato en Python y estoy llevando en la uni la materia de "Métodos Numéricos", pero la estamos viendo en Java y Visual Basic. ...
  #1 (permalink)  
Antiguo 15/04/2012, 17:11
 
Fecha de Ingreso: diciembre-2011
Ubicación: Culiacán
Mensajes: 10
Antigüedad: 9 años, 4 meses
Puntos: 0
Soy principiante:Ayuda con programa en Python: Método de la bisección (No compila)

Hola:

Soy novato en Python y estoy llevando en la uni la materia de "Métodos Numéricos", pero la estamos viendo en Java y Visual Basic. Yo quiero aprender Pytho y decidí programar los métodos que estamos viendo en Python; me aventé el de la bisección:
Código:
# -*- coding: utf-8 -*-

Título = "Método de la bisección"

Iteraciones=int(raw_input("Teclee el número de iteraciones"))
X1=float(raw_input("Teclee un valor para X1"))
X2=float(raw_input("Teclee un valor para X2"))
TOL=float(raw_input("Teclee la tolerancia"))
if TOL<0:
	TOL=TOL*(-1)

fX1=3*X1*X1-5
fX2=3*X2*X2-5
Prod=fX1*fX2

if fX1==0:
	print "Se tecleó la solución exacta= ",X1
	Solución=X2
	#return_ok
	return true
	
if fX2==0:
	print "Se tecleó la solución exacta= ",X2
	Solución=X2
	#return_ok
	return true
	
while Prod >= 0:
	print("Esta no es una combinación válida")
	X1=float(raw_input("Teclee un nuevo valor para X1"))
	X2=float(raw_input("Teclee un valor para X2"))
	fX1=3*X1*X1-5
	fX2=3*X2*X2-5
	Prod=fX1*fX2
	if fX1==0:
		print "Se tecleó la solución exacta= ",X1
		Solución=X2
		#return_ok
		return true
	if fX2==0:
		print "Se tecleó la solución exacta= ",X2
		Solución=X2
		#return_ok
		return true
	
print repr("I").rjust(2), repr("X1").rjust(3), repr("X2").rjust(4), repr("X2-X1").rjust(5), 
print repr("Xm").rjust(6), repr("f(X1)").rjust(7), repr("f(Xm)").rjust(8), repr("Error").rjust(9)
print()
for i in range(1,Iteraciones-1):
	X2menosX1=X2-X1
	Xm=(X1+X2)/2
	fX1=3*X1*X1-5
	fXm=3*Xm*Xm-5
	E=Xm-X1
	if E<0:
		E=E*(-1)
	if 3*Xm*Xm-5==0:
		print "Solución exacta= ",Xm
		Solución=Xm
		#return_ok
		return true
	if fX1*fXm<0:
		X2=Xm
	else:
		X1=Xm
	print repr(i).rjust(2),
	print repr(X1).rjust(3),
	print repr(X2).rjust(4),
	print repr(X2menosX1).rjust(5),
	print repr(Xm).rjust(6),
	print repr(fX1).rjust(7),
	print repr(fXm).rjust(8),
	print repr(E).rjust(9)
	
if Solución==null
	print("No se encontró una solución")
Al momento de compilar el programa me marca el siguiente error:
SyntaxError: ('invalid syntax', ('Bisecci\xf3n.py', 3, 2, 'T\xc3\xadtulo = "M\xc3\xa9todo de la bisecci\xc3\xb3n"\n'))
Ha fallado la compilación.

No entiendo mucho lo que quiere decir. ¿Me ayudan a encontrar el error por favor?
Me estoy quebrando la cabeza!!!

Saludos y se los agradeceré.
  #2 (permalink)  
Antiguo 15/04/2012, 18:19
Avatar de zz_sioux  
Fecha de Ingreso: julio-2010
Mensajes: 117
Antigüedad: 10 años, 9 meses
Puntos: 16
Respuesta: Soy principiante:Ayuda con programa en Python: Método de la bisección (No

Yo te recomendaria de una que saques los acentos o aclares que son unicode
así:
u"esdrújula"

y al documento guardalo en formato utf 8
  #3 (permalink)  
Antiguo 15/04/2012, 21:47
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 13 años, 1 mes
Puntos: 1329
Respuesta: Soy principiante:Ayuda con programa en Python: Método de la bisección (No

En todo caso el problema es que los nombres de las variables están con acentos, quítalos. Pero para que compilas archivo? Solo ejecútalo y listo.

Además tienes muchos errores, sería bueno que te revisaras un manual de python básico.

Saludos
__________________
Grupo Telegram Docker en Español
  #4 (permalink)  
Antiguo 18/04/2012, 15:26
 
Fecha de Ingreso: diciembre-2011
Ubicación: Culiacán
Mensajes: 10
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Soy principiante:Ayuda con programa en Python: Método de la bisección (No

Muchas gracias por su ayuda. Seguiré las recomendaciones y les platico cómo me fué.

Si he leído bastante sobre Python, sólo que ya tenpia algunos días que no leía porque había estado bastante ocupado. Tendré que darle una leída más para saber en qué me equivoqué :D
  #5 (permalink)  
Antiguo 18/04/2012, 15:28
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 13 años, 1 mes
Puntos: 1329
Respuesta: Soy principiante:Ayuda con programa en Python: Método de la bisección (No

Checate en especial eso del return, que lo estás poniendo es sitios equivocados.

Saludos
__________________
Grupo Telegram Docker en Español
  #6 (permalink)  
Antiguo 01/05/2012, 19:15
 
Fecha de Ingreso: diciembre-2011
Ubicación: Culiacán
Mensajes: 10
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Soy principiante:Ayuda con programa en Python: Método de la bisección (No

Código:
# -*- coding: utf-8 -*-

Titulo = "Método de la bisección"

Iteraciones=int(raw_input("Teclee el número de iteraciones"))
X1=float(raw_input("Teclee un valor para X1"))
X2=float(raw_input("Teclee un valor para X2"))
TOL=float(raw_input("Teclee la tolerancia"))
if TOL<0:
	TOL=TOL*(-1)

fX1=3*X1*X1-5
fX2=3*X2*X2-5
Prod=fX1*fX2

if fX1==0:
	print "Se tecleó la solución exacta= ",X1
	Solucion=X1
	#return_ok
	#return true
	
if fX2==0:
	print "Se tecleó la solución exacta= ",X2
	Solucion=X2
	#return_ok
	#return true
	
while Prod >= 0:
	print("Esta no es una combinación válida")
	X1=float(raw_input("Teclee un nuevo valor para X1"))
	X2=float(raw_input("Teclee un valor para X2"))
	fX1=3*X1*X1-5
	fX2=3*X2*X2-5
	Prod=fX1*fX2
	if fX1==0:
		print "Se tecleó la solución exacta= ",X1
		Solucion=X2
		#return_ok
		#return true
	if fX2==0:
		print "Se tecleó la solución exacta= ",X2
		Solucion=X2
		#return_ok
		#return true
	
print repr("I").rjust(2), repr("X1").rjust(3), repr("X2").rjust(4), repr("X2-X1").rjust(5), 
print repr("Xm").rjust(6), repr("f(X1)").rjust(7), repr("f(Xm)").rjust(8), repr("Error").rjust(9)
print()
for i in range(1,Iteraciones-1):
	X2menosX1=X2-X1
	Xm=(X1+X2)/2
	fX1=3*X1*X1-5
	fXm=3*Xm*Xm-5
	E=Xm-X1
	if E<0:
		E=E*(-1)
	if 3*Xm*Xm-5==0:
		print "La raíz es= ",Xm
		Solucion=Xm
		#return_ok
		#return true
	print repr(i).rjust(2),
	print repr(X1).rjust(3),
	print repr(X2).rjust(4),
	print repr(X2menosX1).rjust(5),
	print repr(Xm).rjust(6),
	print repr(fX1).rjust(7),
	print repr(fXm).rjust(8),
	print repr(E).rjust(9)
	if fX1*fXm<0:
		X2=Xm
	else:
		X1=Xm

if Solucion==None
	print("No se encontró una solución")

if e>TOL
	print("No se encontró una solución")
Hice unas adecuaciones al código, pero ahora me marca error en el penúltimo if. Leí que se usa None en nugar de Null como en Java.

¿Cuál puede ser el factor que esté causando el error?
  #7 (permalink)  
Antiguo 01/05/2012, 19:29
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 16 años, 1 mes
Puntos: 1360
Respuesta: Soy principiante:Ayuda con programa en Python: Método de la bisección (No

Tienes varios errores de sintaxis, corregí la mayoría (espero que no se me haya escapado alguno).

Tus errores son, olvidas el : (dos puntos) después de cada if. Este lenguaje no es como visual basic, aquí si las variables están en mayúsculas o minúsculas si importa.

Otra cosa es que si quieres usar una variable la tienes que inicializar, al menos.

Código Python:
Ver original
  1. #-*-coding: utf-8-*-
  2. Solucion = None
  3. Titulo = "Método de la bisección"
  4.  
  5. Iteraciones=int(raw_input("Teclee el número de iteraciones"))
  6. X1=float(raw_input("Teclee un valor para X1"))
  7. X2=float(raw_input("Teclee un valor para X2"))
  8. TOL=float(raw_input("Teclee la tolerancia"))
  9. if TOL<0:
  10.     TOL=TOL*(-1)
  11.  
  12. fX1=3*X1*X1-5
  13. fX2=3*X2*X2-5
  14. Prod=fX1*fX2
  15.  
  16. if fX1==0:
  17.     print "Se tecleó la solución exacta= ",X1
  18.     Solucion=X1
  19.     #return_ok
  20.     #return true
  21.    
  22. if fX2==0:
  23.     print "Se tecleó la solución exacta= ",X2
  24.     Solucion=X2
  25.     #return_ok
  26.     #return true
  27.    
  28. while Prod >= 0:
  29.     print("Esta no es una combinación válida")
  30.     X1=float(raw_input("Teclee un nuevo valor para X1"))
  31.     X2=float(raw_input("Teclee un valor para X2"))
  32.     fX1=3*X1*X1-5
  33.     fX2=3*X2*X2-5
  34.     Prod=fX1*fX2
  35.     if fX1==0:
  36.         print "Se tecleó la solución exacta= ",X1
  37.         Solucion=X2
  38.         #return_ok
  39.         #return true
  40.     if fX2==0:
  41.         print "Se tecleó la solución exacta= ",X2
  42.         Solucion=X2
  43.         #return_ok
  44.         #return true
  45.    
  46. print repr("I").rjust(2), repr("X1").rjust(3), repr("X2").rjust(4), repr("X2-X1").rjust(5),
  47. print repr("Xm").rjust(6), repr("f(X1)").rjust(7), repr("f(Xm)").rjust(8), repr("Error").rjust(9)
  48. print()
  49. for i in range(1,Iteraciones-1):
  50.     X2menosX1=X2-X1
  51.     Xm=(X1+X2)/2
  52.     fX1=3*X1*X1-5
  53.     fXm=3*Xm*Xm-5
  54.     E=Xm-X1
  55.     if E<0:
  56.         E=E*(-1)
  57.     if 3*Xm*Xm-5==0:
  58.         print "La raíz es= ",Xm
  59.         Solucion=Xm
  60.         #return_ok
  61.         #return true
  62.     print repr(i).rjust(2),
  63.     print repr(X1).rjust(3),
  64.     print repr(X2).rjust(4),
  65.     print repr(X2menosX1).rjust(5),
  66.     print repr(Xm).rjust(6),
  67.     print repr(fX1).rjust(7),
  68.     print repr(fXm).rjust(8),
  69.     print repr(E).rjust(9)
  70.     if fX1*fXm<0:
  71.         X2=Xm
  72.     else:
  73.         X1=Xm
  74.  
  75. if Solucion==None:
  76.     print("No se encontró una solución")
  77.  
  78. if E>TOL:
  79.     print("No se encontró una solución")
  #8 (permalink)  
Antiguo 13/05/2012, 19:55
 
Fecha de Ingreso: diciembre-2011
Ubicación: Culiacán
Mensajes: 10
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Soy principiante:Ayuda con programa en Python: Método de la bisección (No

Muchas gracias razpeitia, en efecto le puse los dos puntos a los últimos if y el programa ya corrió. Ahora me daré tiempo para hacer otros métodos numéricos en Python :D
Saludos.

Etiquetas: biseccion, metodos, numericos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:48.