Adloun

Rectangles contre trapèzes

Exercice · niveau 3 (difficile) · mathématiques appliquées (ECG 1re année), chapitre 8 — Calcul différentiel et intégral · Intégration sur un segment

Énoncé

Écrire une fonction Python qui compare rectangles et trapèzes sur pour . Estimer l'exposant tel que l'erreur se comporte comme pour chaque méthode.

Corrigé


from math import exp

def f(x):
    return exp(-x * x)

def rectangles(f, a, b, n):        # rectangles a gauche
    h = (b - a) / n
    return h * sum(f(a + i * h) for i in range(n))

def trapezes(f, a, b, n):
    h = (b - a) / n
    interieur = sum(f(a + i * h) for i in range(1, n))
    return h * (f(a) / 2 + interieur + f(b) / 2)

exact = 0.746824132812427          # valeur de reference
for n in (10, 100, 1000):
    print(n, abs(rectangles(f, 0, 1, n) - exact),
             abs(trapezes(f, 0, 1, n) - exact))

Les erreurs mesurées :

Les exposants. À chaque fois que est multiplié par , l'erreur des rectangles est divisée par et celle des trapèzes par :

On le lit proprement en régression sur les logarithmes : vaut et .

Ce que cela coûte. Pour gagner une décimale, les rectangles demandent dix fois plus de points, les trapèzes seulement trois fois plus environ. Le surcoût des trapèzes est nul — une addition de plus — pour un ordre gagné : c'est le meilleur rapport de tout le chapitre.

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.