Les équations du second degré sont des équations de la forme suivante:
$$ax^2 + bx + c = 0$$
avec \(a \neq 0\)
Pour déterminer si l'équation dispose d'une solution, on calcule le nombre \(\rho = b^2-4ac\). Si \(\rho\) est strictement positif, l'équation a exactement deux solutions. La première solution s'obtient via la formule suivante :
Et la seconde racine s'obtient via la formule suivante :
Si \(\rho\) est nul, l'équation a exactement une solution, dont la valeur est égale à \(-b/(2a)\). Si \(\rho\) est négatif, l'équation n'a aucune solution.
Pour montrer que vous maîtrisez la décomposition en sous-problèmes, vous devrez définir trois fonctions. Chacune d'entre elles prendra uniquement comme paramètres les valeurs de a
, b
et c
. Tout d'abord, définissez et implémentez la fonction rho
, qui retourne la valeur du nombre \(\rho\).
Ensuite, définissez et implémentez la fonction n_solutions
, qui retourne le nombre de solutions de l'équation définie par a, b et c.
Finalement, définissez et implémentez la fonction solution
, qui retourne la solution d'une équation qui n'a qu'une seule solution et la plus petite solution d'une équation qui a deux solutions. La fonction ne sera jamais appelée pour une équation qui ne dispose pas de solution.
Les fonctions n_solutions
et solution
doivent impérativement faire appel à la fonction rho
.
Pour résoudre l'exercice, vous aurez besoin de la fonction racine_carree
, décrite ci-dessous. Cette fonction est déjà implémentée, vous ne devez donc pas l'écrire vous-même.
def racine_carree(n): """ Calcule une racine carree pre: n est un nombre réel n >= 0 post: retourne la racine carrée réelle de n """
Voici un exemple d'utilisation des fonctions que vous devez implémenter, avec l'équation \(x^2 + 2x + 1 = 0\) :
rho(1, 2, 1) >>> 0 n_solutions(1, 2, 1) >>> 1 solution(1, 2, 1) >>> -1.0