Adloun

mathématiques appliquées (ECG 1re année) · Chapitre 8 · Exercice

Rectangles contre trapèzes

Calcul différentiel et intégral · Intégration sur un segment · niveau 3 (difficile)

É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.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre