Équations du 2nd degré

💻 Travail n° 1 Résolution par factorisation

En se basant sur l’exemple donné ci-dessous qui montre comment utiliser le langage Python pour demander des informations à l’utilisateur, effectuer des calculs, faire des tests, afficher un résultat, on vous demande de coder un script Python qui permet de donner les solutions d’une équation du 2nd degré dont les coefficients sont saisis par l’utilisateur.

Exemple de code Python
fdp-commande.py
"""Calcul frais de port sur un article

Ce script calcule la somme à payer par un client lorsqu'il passe une
commande d'un article sur un site internet qui facture des frais de
port différents selon le montant de la commande :

* 5€ pour les commandes inférieures à 50€

* 3€ pour les commandes comprises entre 50€ et 100€

* gratuit pour les commandes supérieures à 100€

Le client doit saisir le prix unitaire de l'article et la quantité désirée.

Le script calcule ensuite la somme totale à payer incluant le prix du ou
des articles et les frais de port.
"""
# Saisies utilisateur
prixArticle = float(input("Saisir le prix de l'article : ")) (1)
nbArticles = int(input("Saisir la quantitée désirée : ")) (2)

# Calcul prix commande hors frais de port
montantCommande = nbArticles * prixArticle

# Calcul prix total de la commande selon son montant
if (montantCommande < 50) :
    prixTotal = montantCommande + 5
elif ( 50 <= montantCommande < 100) :
    prixTotal = montantCommande + 3
else :
    prixTotal = montantCommande

# Affichage du prix total
print("Prix total de la commande : " + str(prixTotal) + "€") (3)
1 On demande le prix à l’utilisateur sous forme de chaine de caractères (→ input(…​)) et on le transforme en nombre réel (→ float(…​))
2 idem pour la quantité sauf que c’est une valeur entière (→ utilisation de int(…​) plutôt que float(…​))
3 Pour pouvoir afficher le résultat, il faut d’abord le convertir en chaine de caractères (→ str(…​))

Pour le travail demandé, la méthode consiste à :

  1. Demander la saisie des coefficients a, b et c de l’équation ax2 + bx + c

  2. Calculer le discriminant delta = b2 - 4ac

    En Python, l’exposant se code **. Exemple : 2**3 donne 8

  3. Calculer les racines selon la valeur du discriminant :

    1. delta > 0 :

      ⇒ 2 racines réelles :

      • r1 = (-b-√delta)/2a

      • r2 = (-b+√delta)/2a

      En Python, la racine carrée s’obtient avec math.sqrt(x) après avoir importé le module math en début de fichier (→ import math)

    2. delta = 0

      ⇒ 1 seule racine réelle :

      • r = -b/2a

    3. delta < 0

      ⇒ 2 racines complexes :

      • r1= -b/2a + i √|delta|/2a

      • r2= -b/2a - i √|delta|/2a

      En Python la valeur absolue s’obtient avec la fonction abs(x)

Proposition de solution
eq-2nd-degre.py
"""Calcule les racines d'une équation du 2nd degré
"""
import math

# Saisies utilisateur
coefA = float(input("Saisir le coefficient `a` : "))
coefB = float(input("Saisir le coefficient `b` : "))
coefC = float(input("Saisir le coefficient `c` : "))

# Calcul discriminant
delta = coefB ** 2 - 4 * coefA * coefC

# Calcul des racines
if (delta > 0) :
    r1 = (-coefB + math.sqrt(delta)) / (2 * coefA)
    r2 = (-coefB - math.sqrt(delta)) / (2 * coefA)
    #print("delta = " + str(delta) + " > 0 => r1 = (-b+√delta)/2a ≈ " + str(r1) + " / r2 = (-b-√delta)/2a ≈ " + str(r2) )
    # OU  pour un affichage qu'avec 2 chiffres après la virgule
    print("delta = " + "{:.2f}".format(delta) + " > 0 => r1 = (-b+√delta)/2a ≈ " + "{:.2f}".format(r1) + " / r2 = (-b-√delta)/2a ≈ " + "{:.2f}".format(r2) )
elif (delta == 0) :
    r = -coefB / (2 * coefA)
    #print("delta = 0 > => r = -b/2a ≈ " + str(r))
    # OU  pour un affichage qu'avec 2 chiffres après la virgule
    print("delta = 0 > => r = -b/2a ≈ " + "{:.2f}".format(r))
else :
    re = -coefB  / (2 * coefA)
    im = math.sqrt(abs(delta)) / (2 * coefA)
    #print("delta = " + str(delta) + " < 0 => r1 = -b/2a + i √|delta|)/2a ≈ " + str(re) + " + i " + str(im) + " / r2 = b/2a - i √|delta|)/2a ≈ " + str(re) + " - i " + str(im) )
    # OU  pour un affichage qu'avec 2 chiffres après la virgule
    print("delta = " + "{:.2f}".format(delta) + " < 0 => r1 = -b/2a + i √|delta|)/2a ≈ " + "{:.2f}".format(re) + " + i " + "{:.2f}".format(im) + " / r2 = b/2a - i √|delta|)/2a ≈ " + "{:.2f}".format(re) + " - i " + "{:.2f}".format(im) )

Références

🞄  🞄  🞄