Codice python per risolvere le equazioni di secondo grado

In questo post, scriveremo un programma in linguaggio Python per trovare le soluzioni reali (se esistono) di una equazione di secondo grado. Prima di procedere con il codice, Se non ricordi come risolvere le equazioni di secondo grado, ti consiglio di leggere prima questo post.

Se vuoi direttamente il codice completo, puoi saltare in fondo all’articolo. Io ti consiglio di seguire la guida passo passo per comprendere ogni linea di codice.

Premessa matematica

Supporremo che l’equazione che intendiamo risolvere sia già in forma normale, ovvero del tipo

\(a x^2 + b x + c = 0\)

con \(a \ne 0\). Per risolverla, avremo bisogno di calcolare il delta. Distingueremo i tre casi:

  • Delta positivo. Due soluzioni reali.
  • Delta zero. Unica soluzione (analogamente, due soluzioni coincidenti).
  • Delta negativo. Nessuna soluzione reale (impossibile).

Anche quando il delta nullo, faremo uso della formula risolutiva per le equazioni di secondo grado, ovvero:

\( x_{1,2} = \frac{-b \pm \sqrt{b^2 – 4 a c}}{2a} \)

Leggere i coefficienti \( a \), \( b \) e \(c \) dell’equazione di secondo grado direttamente da tastiera

Innanzitutto, utilizzeremo la funzione input() predefinita in python che permette all’utente di inserire i valori direttamente da tastiera. Poiché siamo interessati a dei valori numerici, li trasformeremo direttamente in float() (ovvero, valori reali anche con la virgola).

a = 0
while a == 0:
    a = float(input("Inserisci il coefficiente a: "))

b = float(input("Inserisci il coefficiente b: "))
c = float(input("Inserisci il coefficiente c: "))

Avrai notato che sul termine \( a \) è stato inserito un controllo, affinché sia maggiore di zero. In caso contrario, l’equazione non sarebbe di secondo grado, bensì di primo grado.

Calcolare il delta dell’equazione di secondo grado in python

A questo punto, siamo in grado di calcolare il delta mediante la formula ricordata prima nella premessa matematica. I valori di \( a \), \( b \) e \(c \) si trovano adesso nelle omonime variabili python, cosicché il calcolo risulta davvero semplice.

delta = b**2 - 4 * a * c

Calcolare la soluzioni dell’equazione di secondo grado in python

Per prima cosa, dobbiamo controllare se il delta è negativo. In tal caso, visualizzeremo un messaggio per avvisare l’utente che l’equazione è impossibile e non ci sono soluzioni.

Se invece il delta è uguale a zero, abbiamo un’unica soluzione. Essa si ottiene come \(x = \frac{-b}{2a}\).

Il caso di delta positivo restituisce, invece, due soluzioni reali. In questo caso, la formula (scritta in alto nella premessa matematica) prevede il calcolo della radice quadrata. Per questo, dobbiamo importare la funzione sqrt() dalla libreria math, come si evince nelle righe di codice qui sotto.

from math import sqrt
if delta < 0:
    print("Delta negativo. Nessuna soluzione reale (impossibile).")
elif delta == 0:
    x = (-b) / (2 * a)
    print("Delta nullo. Unica soluzione x=", x)
else:
    x1 = (-b - sqrt(delta)) / (2 * a)
    x2 = (-b + sqrt(delta)) / (2 * a)
    print("Delta positivo. Due soluzioni reali x1=", x1, " x2=", x2)

Codice completo

Qui si conclude il post. Per semplicità, nel riquadro sotto trovate il codice completo dell’esercizio, da copiare e incollare sui vostri interpreti python. In alternativa, scarica il file codice_python_equazioni_di_secondo_grado.py da poter lanciare da riga di comando.

from math import sqrt


a = 0
while a == 0:
    a = float(input("Inserisci il coefficiente a: "))
b = float(input("Inserisci il coefficiente b: "))
c = float(input("Inserisci il coefficiente c: "))


delta = b**2 - 4 * a * c


if delta < 0:
    print("Delta negativo. Nessuna soluzione reale (impossibile).")
elif delta == 0:
    x = (-b) / (2 * a)
    print("Delta nullo. Unica soluzione x=", x)
else:
    x1 = (-b - sqrt(delta)) / (2 * a)
    x2 = (-b + sqrt(delta)) / (2 * a)
    print("Delta positivo. Due soluzioni reali x1=", x1, " x2=", x2)