Python au lycée (4) : Les fonctions Exercices

Python : Résolution d’une équation du second degré

Durée estimée
15 minutes
Difficulté
Votre progression

Créez un compte gratuit pour suivre votre avancement et reprendre où vous avez laissé.

Créer un compte

Objectifs travaillés

On souhaite écrire un programme Python qui résout l'équation $ ax^2 + bx + c = 0 $ (avec $ a \neq 0 $).
On admet le résultat suivant, qui sera démontré en classe de première :
on pose $ \Delta = b^2 - 4ac $ (appelé discriminant).

  • Si $ \Delta < 0 $, l'équation n'a pas de solution réelle.
  • Si $ \Delta = 0 $, l'équation admet une unique solution $ x_0 = \dfrac{-b}{2a} $.
  • Si $ \Delta > 0 $, l'équation admet deux solutions $ x_1 = \dfrac{-b - \sqrt{\Delta}}{2a} $ et $ x_2 = \dfrac{-b + \sqrt{\Delta}}{2a} $.
  1. Calculer « à la main » le discriminant puis les solutions de l'équation $ 2x^2 + x - 1 = 0 $.
  2. Écrire une fonction Python resolution(a, b, c) qui affiche les solutions de l'équation $ ax^2 + bx + c = 0 $. La fonction distinguera les trois cas selon le signe du discriminant.
  3. Tester la fonction avec les trois équations suivantes :

    1. $ 2x^2 + x - 1 = 0 $ ;
    2. $ x^2 - 2x + 1 = 0 $ ;
    3. $ x^2 + x + 1 = 0 $.

Corrigé

  1. Pour $ 2x^2 + x - 1 = 0 $, on a $ a = 2 $, $ b = 1 $, $ c = -1 $.
    $ \Delta = b^2 - 4ac = 1^2 - 4 \times 2 \times (-1) = 1 + 8 = 9 $.
    Comme $ \Delta > 0 $, l'équation admet deux solutions :

    • $ x_1 = \dfrac{-1 - \sqrt{9}}{2 \times 2} = \dfrac{-1 - 3}{4} = \dfrac{-4}{4} = \mathbf{-1} $ ;
    • $ x_2 = \dfrac{-1 + \sqrt{9}}{2 \times 2} = \dfrac{-1 + 3}{4} = \dfrac{2}{4} = \mathbf{0{,}5} $.
  2. On importe sqrt puis on traduit les trois cas avec if, elif et else :

    from math import sqrt
    
    def resolution(a, b, c):
        delta = b**2 - 4 * a * c
        if delta < 0:
            print("Pas de solution réelle.")
        elif delta == 0:
            x0 = -b / (2 * a)
            print("Solution unique :", x0)
        else:
            x1 = (-b - sqrt(delta)) / (2 * a)
            x2 = (-b + sqrt(delta)) / (2 * a)
            print("Deux solutions :", x1, "et", x2)
  3. Tests :

    1. resolution(2, 1, -1) : $ \Delta = 9 > 0 $, l'équation a deux solutions.

      Deux solutions : -1.0 et 0.5

      Cela confirme le résultat de la question 1.

    2. resolution(1, -2, 1) : $ \Delta = (-2)^2 - 4 \times 1 \times 1 = 4 - 4 = 0 $. L'équation a une solution unique :
      $ x_0 = \dfrac{-(-2)}{2 \times 1} = \dfrac{2}{2} = 1 $.

      Solution unique : 1.0
    3. resolution(1, 1, 1) : $ \Delta = 1^2 - 4 \times 1 \times 1 = 1 - 4 = -3 < 0 $. L'équation n'a pas de solution réelle.

      Pas de solution réelle.

Remarque
L'équation $ x^2 - 2x + 1 = 0 $ s'écrit aussi $ (x - 1)^2 = 0 $, ce qui confirme la solution unique $ x_0 = 1 $.