Balayer un intervalle pour localiser les racines
Exercice d'entraînement · niveau 2 · mathématiques appliquées (ECG 1re année), chapitre 5 — Fonctions réelles d'une variable réelle · Fonctions en Python
Énoncé
Écrire une fonction Python balayage(f, a, b, n) qui découpe en morceaux de même longueur et renvoie la liste des morceaux aux extrémités desquels f change de signe. L'essayer sur avec , , . Que garantit un changement de signe ? Que ne garantit pas l'absence de changement de signe ?
Corrigé
Le programme.
def balayage(f, a, b, n):
pas = (b - a) / n
morceaux = []
x = a
for _ in range(n):
if f(x) * f(x + pas) <= 0:
morceaux.append((x, x + pas))
x = x + pas
return morceaux
def f(x):
return x ** 3 - 3 * x + 1
print(balayage(f, -3, 3, 60))
Le test f(x) * f(x + pas) <= 0 détecte un produit négatif ou nul, c'est-à-dire deux valeurs de signes contraires — ou une valeur nulle, qui est déjà une racine.
Le résultat. Le pas vaut et le programme renvoie trois morceaux, autour de , de et de . Contrôle : et .
Ce qu'un changement de signe garantit. Si f est continue sur le morceau et que ses valeurs aux extrémités sont de signes contraires, le théorème des valeurs intermédiaires assure au moins une racine à l'intérieur. Tout repose sur la continuité : sur , le balayage de signalerait un changement de signe sans racine.
Ce que l'absence de changement de signe ne garantit pas. Elle ne prouve pas l'absence de racine : une racine double ne fait pas changer le signe — sur le balayage ne signale rien — et deux racines peuvent tomber dans le même morceau, le produit des valeurs aux extrémités restant positif. Un balayage localise des racines ; il n'en dénombre aucune.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.