Python/Su primer programa en Python/Ecuación de segundo grado en Python

De testwiki
Ir a la navegación Ir a la búsqueda

La resolución de una Ecuación de Segundo Grado: ax2+bx+c=0 [1] [2] , como un aplicación en Python, puede ser la siguiente, desarrollado según la Programación Estructurada [3] [4] , y fundamentada en la condición if, descompone el problema de resolver la ecuación en los posibles subcasos o casos sencillo para resolver cada uno por separado.

El script

print('    Resolver una ecuación de segundo grado.')
print('    Con coeficientes reales.')
print('')

print('    ax² + bx + c = 0')
print('')

a=float(input('    Valor de: a = '))
b=float(input('    Valor de: b = '))
c=float(input('    Valor de: c = '))
print('')

print('a =', a)
print('b =', b)
print('c =', c)
print('')

if a == 0 and b == 0 and c == 0:
    print('caso: 0')
    print('    0 = 0. Verdadero, no hay ecuación.')
    
elif a == 0 and b == 0 and c != 0:
    print('caso: 1')
    print('    ', c, '≠ 0. Falso, no hay ecuación.')
    
elif a == 0 and b != 0 and c == 0:
    print('caso: 2')
    print('    Ecuación de priner grado.')
    print('    x = 0.0')
    
elif a == 0 and b != 0 and c != 0:
    print('caso: 3')
    print('    Ecuación de priner grado.')
    print('    x =', -c/b)
    
elif a != 0 and b == 0 and c == 0:
    print('caso: 4')
    print('    Ecuación de segundo grado.')
    print('    Solución doble real.')
    print('    x1 = x2 = 0.0')
    
elif a != 0 and b == 0 and c != 0:
    if a*c < 0:
        print('caso: 5.1')
        print('    Ecuación de segundo grado.')
        print('    Con dos soluciones reales.')
        print('    x1 = ', (-c/a)**(1/2))
        print('    x2 =', -(-c/a)**(1/2))
        
    elif a*c > 0:
        print('caso: 5.2')
        print('    Ecuación de segundo grado.')
        print('    Con dos soluciones imaginarias.')
        print('    x1 = ', (c/a)**(1/2), 'j')
        print('    x2 =', -(c/a)**(1/2), 'j')

    else:
        print('Este caso no puede darse. ¿Por que? 1')
        
elif a != 0 and b != 0 and c == 0:
    print('caso: 6')
    print('    Ecuación de segundo grado.')
    print('    Con dos soluciones reales.')
    print('    x1 = 0.0')
    print('    x2 =', -b/a)

elif a != 0 and b != 0 and c != 0:
    D= b**2 - 4 * a * c # D = Discriminante
    if D < 0:
        print('caso: 7.1')
        print('    Ecuación de segundo grado.')
        print('    Con dos soluciones complejas.')
        print('    x1 =', -b/2/a, '+', abs((-D)**(1/2)/2/a), 'j')
        print('    x2 =', -b/2/a, '–', abs((-D)**(1/2)/2/a), 'j')

    elif D == 0:
        print('caso: 7.2')
        print('    Ecuación de segundo grado.')
        print('    Solución doble real.')
        print('    x1 = x2 =', -b/2/a)
              
    elif D > 0:
        print('caso: 7.3')
        print('    Ecuación de segundo grado.')
        print('    Con dos soluciones reales.')
        print('    x1 =', (-b+D**(1/2))/2/a)
        print('    x2 =', (-b-D**(1/2))/2/a)

    else:
        print('Este caso no puede darse. ¿Por que? 2')

else:
    print('Este caso no puede darse. ¿Por que? 3')

Análisis del procedimiento

En la secuencia de código anterior, que resuelve un ecuación de segundo grado de coeficientes reales podemos diferenciar las siguientes partes.

identificación del programa

En un principio se presenta un testo señalando el propósito del programa, de modo que el usuario conozca su propósito y la función que desempeña:

print('    Resolver una ecuación de segundo grado.')
print('    Con coeficientes reales.')
print('')

print('    ax² + bx + c = 0')
print('')

Solicitud de información

Para resolver la ecuación es necesario conocer los coeficientes de esa ecuación:

a=float(input('    Valor de: a = '))
b=float(input('    Valor de: b = '))
c=float(input('    Valor de: c = '))
print('')

A continuación se presentan, las valores de esos coeficientes del mismo modo que se guardan en las variables correspondientes:

print('a =', a)
print('b =', b)
print('c =', c)
print('')

ver la forma en la que se señalan los valores y la forma en la que se presentan esos mismos valores.

Cuerpo del procedimiento

La separación de los distintos casos que puedan darse se realiza en esta parte, es necesario tener en cuenta que el usuario puede teclear cualquier valor en cualquiera de los datos, esta situación tiene que ser prevista por el programador, (programación a la defensiva), evitando datos fuera de rango o el intentar realizar operaciones imposibles que den condiciones de error, división por cero, raíz de números negativos, ...

Caso: 0; a=0, b=0, c=0

En este caso, el usuario señalo cero para los tres coeficientes, cual debe ser la respuesta del programa.

ax2+bx+c=0a=0b=0c=0}0=0Verdadero

Es resultado es verdadero para todo valer de x:

xR:0x2+0x+0=00=0

En este caso x puede tomar cualquier valor real y la ecuación sera siempre: Verdadera.

  • Ejemplo:
    Resolver una ecuación de segundo grado.
    Con coeficientes reales.

    ax² + bx + c = 0

    Valor de: a = 0
    Valor de: b = 0
    Valor de: c = 0

a = 0.0
b = 0.0
c = 0.0
 
caso: 0
   0 = 0. Verdadero, no hay ecuación.

Caso: 1; a=0, b=0, c≠0

En este caso, los coeficientes a y b son cero y c es distinto de cero:

ax2+bx+c=0a=0b=0}c=0c0}Falso

En este caso se produce una contradicción, dado que c no puede ser igual y distinto de cero, siendo una situación imposible. No hay ningún valor de x que pueda hacer que esa afirmación sea Verdadera.

  • Ejemplo:
    Resolver una ecuación de segundo grado.
    Con coeficientes reales.

    ax² + bx + c = 0

    Valor de: a = 0
    Valor de: b = 0
    Valor de: c = 5

a = 0.0
b = 0.0
c = 5.0
 
caso: 1
    5.0 ≠ 0. Falso, no hay ecuación.

Caso: 2; a=0, b≠0, c=0

Si los coeficientes a y c son cero y b es distinto de cero:

ax2+bx+c=0a=0c=0}bx=0b0}x=0

Su b por x es cero, y b es distinto de cero, x tiene que ser cero, necesariamente y como única solución.

  • Ejemplo:
    Resolver una ecuación de segundo grado.
    Con coeficientes reales.

    ax² + bx + c = 0

    Valor de: a = 0
    Valor de: b = 3
    Valor de: c = 0

a = 0.0
b = 3.0
c = 0.0
 
caso: 2
    Ecuación de priner grado.
    x = 0

Caso: 3; a=0, b≠0, c≠0

Si a=0 no se trata de una ecuación de segundo grado, si es una ecuación de primer grado, el valor de x en este caso es:

ax2+bx+c=0a=0b0c0}bx+c=0x=cb

dado que b≠0 entonces x tiene valor real, dado que c≠0 entonces x es distinto de cero. Si b y c tienen el mismo signo entonces x tiene signo negativo, si b y c tienen signos diferentes entonces x toma valor positivo.

  • Ejemplo:
    Resolver una ecuación de segundo grado.
    Con coeficientes reales.

    ax² + bx + c = 0

    Valor de: a = 0
    Valor de: b = 3
    Valor de: c = 2

a = 0.0
b = 3.0
c = 2.0
 
caso: 3
    Ecuación de priner grado.
    x = -0.6666666666666666

Caso: 4; a≠0, b=0, c=0

Dado que a≠0 se trata de una ecuación de segundo grado:

ax2+bx+c=0a0b=0c=0}ax2=0a0}x2=0x=0

Se cumple la ecuación y para todo valor de a, el valor de x es cero.

  • Ejemplo:
    Resolver una ecuación de segundo grado.
    Con coeficientes reales.

    ax² + bx + c = 0

    Valor de: a = 3
    Valor de: b = 0
    Valor de: c = 0

a = 3.0
b = 0.0
c = 0.0
 
caso: 4
    Ecuación de segundo grado.
    Solución doble real.
    x1 = x2 = 0

Caso: 5; a≠0, b=0, c≠0

Con a≠0 la ecuación es de segundo grado:

ax2+bx+c=0a0b=0c0}ax2+c=0x=ca

con b=0 el valor de x sera la raíz de menos c partido por a, según el signo de a y c, tendremos soluciones reales o imaginarias.

Caso 5.1; a*c < 0

Si el producto de a por c es menor de cero:

a*c<0ca>0|x1=cax2=ca

Para b = 0 y a y c de distinto signo se cumple que: x admite dos soluciones reales, estos dos valores son opuestos.

  • Ejemplo:
    Resolver una ecuación de segundo grado.
    Con coeficientes reales.

    ax² + bx + c = 0

    Valor de: a = 2
    Valor de: b = 0
    Valor de: c = -4

a = 2.0
b = 0.0
c = -4.0
 
caso: 5.1
    Ecuación de segundo grado.
    Con dos soluciones reales.
    x1 =  1.4142135623730951
    x2 = -1.4142135623730951
Caso 5.2; a*c > 0

Si el producto de a por c es mayor de cero:

a*c>0ca<0|x1=caix2=cai

Para b = 0 y a y c del mismo signo se cumple que: x admite dos soluciones imaginarias, estos dos valores son conjugados.

  • Ejemplo:
    Resolver una ecuación de segundo grado.
    Con coeficientes reales.

    ax² + bx + c = 0

    Valor de: a = 2
    Valor de: b = 0
    Valor de: c = 4

a = 2.0
b = 0.0
c = 4.0
 
caso: 5.2
    Ecuación de segundo grado.
    Con dos soluciones imaginarias.
    x1 =  1.4142135623730951 i
    x2 = -1.4142135623730951 i

Caso: 6; a≠0, b≠0, c=0

Al ser a distinto de cero es una ecuación de segundo grado, al ser c igual a cero tenemos:

ax2+bx+c=0a0b0c=0}ax2+bx=0x(ax+b)=0|x=0ax+b=0x=ba

Si c = 0 la incógnita x tiene dos soluciones, x1 = 0 y una segunda solución x2 que tomara valor negativo si a y b son del mismo signo y tomara valor positivo si son de distinto signo.

x1=0x2=ba
  • Ejemplo:
    Resolver una ecuación de segundo grado.
    Con coeficientes reales.

    ax² + bx + c = 0

    Valor de: a = -2
    Valor de: b = 4
    Valor de: c = 0

a = -2.0
b = 4.0
c = 0.0
 
caso: 6
    Ecuación de segundo grado.
    Con dos soluciones reales.
    x1 = 0.0
    x2 = 2.0

Caso: 7; a≠0, b≠0, c≠0

La forma de una ecuación de segundo grado:

ax2+bx+c=0

con a, b y c distinto de cero se puede considerar el caso general, que tiene como solución:

x=b±b24ac2a

Donde el discriminante: D es:

D=b24ac

Según este discriminante: D, sea menor, igual o mayor que cero, tenemos tres caso diferentes:

Caso 7.1; D<0

Si D<0 la raíz de un número negativo es imaginario, por lo tanto:

x=b±b24ac2a

operando tenemos:

x=b2a±D2a

Como que D tiene valor negativo:

x=b2a±D2ai

Con lo que se obtienen las dos soluciones:

x1=b2a+D2ai
x2=b2aD2ai

Estas dos soluciones son: un número complejo, y su conjugado.

  • Ejemplo:
    Resolver una ecuación de segundo grado.
    Con coeficientes reales.

    ax² + bx + c = 0

    Valor de: a = 1
    Valor de: b = -2
    Valor de: c = 2

a = 1.0
b = -2.0
c = 2.0
 
caso: 7.1
    Ecuación de segundo grado.
    Con dos soluciones complejas.
    x1 = 1.0 + 1.0 i
    x2 = 1.0 - 1.0 i
Caso 7.2; D=0

Desde la ecuación:

x=b±b24ac2a

Si D=0:

x1=x2=b2a

Siendo una solución doble de valor real.

  • Ejemplo:
    Resolver una ecuación de segundo grado.
    Con coeficientes reales.

    ax² + bx + c = 0

    Valor de: a = 1
    Valor de: b = 2
    Valor de: c = 1

a = 1.0
b = 2.0
c = 1.0
 
caso: 7.2
    Ecuación de segundo grado.
    Solución doble real.
    x1 = x2 = -1.0
Caso 7.3; D>0

Si D>0 la raíz de un número positivo es un número real, por tanto:

x1=b+D2a
x2=bD2a

Obteniendo dos soluciones reales.

  • Ejemplo:
    Resolver una ecuación de segundo grado.
    Con coeficientes reales.

    ax² + bx + c = 0

    Valor de: a = 2
    Valor de: b = 3
    Valor de: c = -2

a = 2.0
b = 3.0
c = -2.0
 
caso: 7.3
    Ecuación de segundo grado.
    Con dos soluciones reales.
    x1 = 0.5
    x2 = -2.0

Véase también

Plantilla:Python

Referencias

Plantilla:Listaref