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
INGInious