Ecuaciones de Segundo Grado en Python [PARTE 2]


En la entrada anterior comente un pequeño error del programita que estabamos viendo para resolver ecuaciones de segundo grado en python y en esta entrada voy a colocar cual es el problema, hasta a mi me paso coloque 1 , 2 , 3 en los valores que me pedia el programa y me dio este error:


Valor de a: 1

Valor de b: 2

Valor de c: 3

Traceback (most recent call last):

  File "None", line 8, in
<module>

ValueError: math domain error

Aquí el error es de dominio matemático, debido a que math no trabaja con raíces negativas, por que debemos agregar unas lineas que verifiquen que el Discriminantes “ b**2 – 4ac ” sea mayor o igual a cero, para luego calcular la raíz, y si es menor imprimir por pantalla que no hay soluciones reales…


Valor de a: 1

Valor de b: 2

Valor de c: 3

Traceback (most recent call last):

  File "None", line 8, in
<module>

ValueError: math domain error

Para solucionarlo agregamos una sentencia condicional “if b**2 – 4*a*c >=0: ” Esto solo para saber si la raiz es real, luego hay otro problema y es que si las soluciones son iguales se muestran dos soluciones por lo que agregando otras lineas de codigo que verifiquen esto obtendriamos el siguiente codigo funcional que ahora si podemos probar:


from math import sqrt

a = float(raw_input('Valor de a: '))

b = float(raw_input('Valor de b: '))

c = float(raw_input('Valor de c: '))

if a != 0:
    discriminante= b**2 - 4*a*c
    if discriminante >=0:

        x1 = (-b + sqrt(discriminante)) / (2 * a)

        x2 = (-b - sqrt(discriminante)) / (2 * a)

        if x1==x2:

            print 'La Solucion de la ecuacion es: x1=%4.3f'% x1

        else:

            print 'Soluciones de la ecuacion: x1=%4.3f y x2=%4.3f ' % (x1, x2)

    else:

        print 'No Hay soluciones Reales. '

else:

    if b != 0:

       x = -c / b

       print 'Solucion de la ecuacion: x=%4.3f ' % x

    else:

       if c != 0:

          print 'La ecuacion no tiene solucion. '

       else:

          print 'La ecuacion tiene infinitas soluciones. '

Conocimiento sacado del excelente libro “Introducci ́n a la programaci ́n con Python y C ”

Ojo hay un proble en una linea que se corta, pude usar code pero me gusta sourcecode 😀

Anuncios

4 pensamientos en “Ecuaciones de Segundo Grado en Python [PARTE 2]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s