Equazione di II grado

Vedi la discussione.

Affronta il problema con metodologia top-down

1

import math

a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))

x1 = (-b-math.sqrt(b**2-4*a*c)) / (2*a)
x2 = (-b+math.sqrt(b**2-4*a*c)) / (2*a)

print("x1 =", x1)
print("x2 =", x2)

2

Se il discriminante è positivo / nullo / negativo allora..

...

delta = b*b-4*a*c
if(delta >= 0):
    x1 = (-b-math.sqrt(delta))/(2*a) 
    x2 = (-b+math.sqrt(delta))/(2*a) 
    print("x1 =", x1) 
    print("x2 =", x2)
else:
    print("Discriminante negativo.")

3

Con selezione multipla

...

delta = b*b-4*a*c
if(delta > 0):
    x1 = (-b-math.sqrt(delta))/(2*a)
    x2 = (-b+math.sqrt(delta))/(2*a)
    print("x1 =", x1)
    print("x2 =", x2)
elif(delta == 0):
    x = -b/(2*a)
    print("x1 = x2 =", x)
else:
    print("Discriminante negativo.")

4

Se il coefficiente a è nullo allora si tratta di una equazione di primo grado

...
if(a == 0):
    print("Equazione di I grado")
else:
    ...
...

5

Tutti i casi

  1. di primo grado
    1. una radice
    2. infinite radici
    3. nessuna radice
  2. di secondo grado
    1. 2 radici (reali distinte)
    2. una radice (2 radici reali coincidenti)
    3. 2 radici complesse (coniugate)
import math

a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))

if(a == 0):                          # bx + c = 0
    if(b != 0):
        x = -c/b
        print("x =", x)
    elif(c == 0):
        print("Indeterminata")
    else:
        print("Impossibile")
else:                                # ax^2 + bx + c = 0
    delta = b*b-4*a*c
    if(delta > 0):
        x1 = (-b-math.sqrt(delta)) / (2*a)
        x2 = (-b+math.sqrt(delta)) / (2*a)
        print("x1 =", x1)
        print("x2 =", x2)
    elif(delta == 0):
        x = -b/(2*a)
        print("x =", x)
    else:
        re = -b/(2*a)
        im = math.sqrt(-delta) / (2*a)
        x1 = complex(re, im)
        x2 = complex(re, -im)
        print("x1 =", x1)
        print("x2 =", x2)