Adloun

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) &lt;= 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.