Activité

Nombre de solutions de \( ax^2 + bx + c = 0 : \)

Première partie

Soient \( a, b \text{ et } c \) trois réels avec \(a \neq 0, f \) est une fonction polynôme de degré 2 et \( P \), la parabole, qui la représente. L’objectif de cette activité est de donner le nombre de solutions de l’équation \( f(x) = 0 \) en fonction des valeurs de \( a, b \text{ et } c \).

  1. En utilisant la calculatrice, donner le nombre de solutions de l’équation \( f(x) = 0 \) dans chacun des cas suivants :
    • \( a = 1, b = 2 \text{ et } c = – 3 \)
    • \( a = –4, b = 12 \text{ et } c = – 9 \)
    • \( a = 2, b = –3 \text{ et } c = 2 \)
  2. Donner l’abscisse du sommet de la parabole en fonction de \( a \text{ et } b \).
  3. On suppose que \( a > 0 : \)
  4. Donner le nombre de solutions de l’équation \( f(x) = 0 \) en fonction du signe de \( f(\frac{-b}{2a}) \) .
  5. On suppose que \( a < 0 : \)
  6. Donner le nombre de solutions de l’équation \( f(x) = 0 \) en fonction du signe de \( f(\frac{-b}{2a}) \) .
  7. Ecrire un algorithme dont le rôle est de déterminer le nombre de solutions de l’équation \( f(x) = 0 \) en fonction des valeurs de \( a, b \text{ et } c \).
  8. Ecrire une fonction en Python dont les paramètres sont \( a, b \text{ et } c \) qui renvoie le nombre de solutions de l’équation \( f(x) = 0\)
  9. .
  10. Appliquer cette fonction à la question 1.
  11. .

    Cliquer ici pour télécharger le document en word

    Cliquer ici pour télécharger le document en pdf

Une proposition de fonction en Python :

from math import *
def NombreSolutions(a,b,c):
    assert(a!=0)
    x=-b/(2*a)
    y=a*x**2+b*x+c
    if abs(y)< 10**(-9):return 1
    if a > 0:
        if y < 0 : return 2
        else : return 0
    else:
        if y > 0 : return 2
        else : return 0

    Les solutions de \( ax^2 + bx + c = 0 : \)

    Deuxième partie

  1. Quel est le rôle de ce script :
  2. def dichotomie(f,x,y,epsilon=0.0001):
    	assert(f(x)*f(y)< 0  and x < y)	#vérifie les hypothèses requises
    	while y-x > epsilon:
    		z = (x+y)/2
    		if f(x)*f(z) <= 0:
    			x,y = x,z
    		else:
    			x,y = z,y
    	return (x+y)/2
  3. Appliquer cette méthode aux fonctions définies dans la question 1. de la première partie de l'activité.

Méthode de dichotomie :

Eduscol

La méthode de dichotomie constitue un procédé dont la compréhension et la mise en oeuvre peuvent être particulièrement délicates pour les élèves. Le détour par l'algorithmique permet de « faire fonctionner » la méthode et de l'observer en acte. Cette activité peut se décliner de façons multiples pour les élèves. Il peut être simplement question de relier les blocs d'instructions aux éléments correspondant dans le texte qui décrit l'algorithme.

Soit \(f\) une fonction continue sur un intervalle I. Soit a et b deux points de I tels que \(a < b \text{ et } f(a)×f(b)< 0 \). On sait qu’il existe au moins une solution de l’équation \(f(x) = 0\) sur l’intervalle [a ; b]. Le principe de l’algorithme de dichotomie consiste à considérer le point \(c = \frac{a+b}{2}\). Si \(f(a)×f(c)\leq 0\), on sait qu’il existe une solution sur l’intervalle [a ; c]. Sinon, on a \(f(b)×f(c)\leq 0\), et il existe une solution sur l’intervalle [c ; b]. Ainsi, à chaque étape on passe d’un intervalle contenant une solution à un intervalle de longueur moitié contenant une solution. On itère le procédé jusqu’à obtenir un intervalle de longueur inférieure à la précision requise.

    Les solutions de \( ax^2 + bx + c = 0 : \)

    Troisième partie

  1. Ecrire une fonction en Python utilisant le discriminant pour déterminer les solutions, s'ils existent, de l'équation : \( ax^2 + bx + c = 0 \).
  2. Appliquer cette fonction en Python aux trois cas de fonctions définies dans la question 1. de la première partie de l'activité.

Une proposition de fonction en Python :

from math import *
def secondDegre(a,b,c):
    delta = b**2-4*a*c
    if delta < 0 :
        return "Cette équation n'a pas de solution dans IR"
    elif delta > 0 :
        x = (- b - sqrt(delta)) / (2*a)
        y = (- b + sqrt(delta)) / (2*a)
        return "Cette équation a deux solutions réelles {} et {}".format(x,y)
    else :
        return "Cette équation a une seule solution réelle : {} ".format(- b / (2 * a))