Intégrales impropres et intégration numérique
Une intégrale impropre utilise une limite à l’infini ou à une singularité non bornée. Une fonction bornée avec un nombre fini de sauts peut avoir une intégrale de Riemann ordinaire : une discontinuité ne suffit pas à rendre l’intégrale impropre. Chaque intégrale tronquée doit exister, et chaque limite requise doit être finie pour avoir convergence. Voir le cours de Paul Dawkins.
Le critère des puissances à l’infini suppose . Près de zéro, le critère change : converge exactement pour . Pour , intégrer en puis prendre la limite à l’extrémité concernée ; pour , utiliser . Ainsi,
Mais diverge. Autre exemple : pour , donc la première queue converge par comparaison. Les fonctions comparées doivent être intégrables sur les intervalles tronqués finis.
Ne pas annuler des infinis de part et d’autre d’une singularité. Pour sur , les intégrales gauche et droite divergent. Des coupures symétriques donnent zéro, mais c’est une valeur principale de Cauchy, non une intégrale impropre convergente.
Intégrales impropres
Les intégrales impropres sont des intégrales ayant soit des bornes infinies, soit des singularités non bornées. Elles permettent d'étendre le concept d'intégration au-delà des bornes traditionnelles. Voici comment elles sont définies et évaluées :
Bornes infinies
-
Intégrale de a à l'infini :
-
Intégrale de moins l'infini à b :
-
Intégrale de moins l'infini à l'infini :
Intégrande discontinu
-
Discontinuité en a :
-
Discontinuité en b :
-
Discontinuité dans l'intervalle (a < c < b) :
Test de comparaison pour les intégrales impropres
Pour les fonctions non négatives sur :
- Si et converge, alors converge également.
- Si et diverge, alors diverge également.
Fait utile
Pour , l'intégrale converge si et diverge pour .
Méthodes d'intégration numérique
Les méthodes d'intégration numérique sont utilisées pour approcher la valeur d'une intégrale définie lorsqu'il est difficile ou impossible de la calculer analytiquement. Les règles d'intégration numérique usuelles sont les suivantes :
Règle du point milieu
La règle du point milieu estime l'intégrale d'une fonction en sommant la valeur de la fonction au milieu de chaque intervalle, multipliée par la largeur des intervalles.
Pour sous-intervalles, l'approximation est :
où et est le milieu du -ème sous-intervalle.
Règle des trapèzes
La règle des trapèzes calcule l'intégrale en faisant la moyenne des valeurs de la fonction aux extrémités de chaque intervalle, estimant efficacement l'aire sous la courbe à l'aide de trapèzes.
La formule est :
Règle de Simpson
La règle de Simpson utilise un polynôme quadratique passant par trois points consécutifs pour chaque paire de sous-intervalles ; son ordre de convergence est supérieur pour les fonctions suffisamment régulières. Elle nécessite que le nombre de sous-intervalles soit pair.
L'approximation donnée par la règle de Simpson est :
Utilisation pratique
Ces règles sont particulièrement utiles en informatique pour résoudre des problèmes qui nécessitent des solutions numériques, comme dans les simulations, les problèmes d'optimisation et les domaines où la fonction ne peut pas être intégrée symboliquement.
Implémentation
Voici des fonctions Python qui implémentent chacune de ces règles :
import numpy as np
def midpoint_rule(f, a, b, n):
if isinstance(n, bool) or not isinstance(n, int) or n <= 0:
raise ValueError("n must be a positive integer")
dx = (b - a) / n
x_mid = np.linspace(a + dx/2, b - dx/2, n)
return np.sum(f(x_mid)) * dx
def trapezoid_rule(f, a, b, n):
if isinstance(n, bool) or not isinstance(n, int) or n <= 0:
raise ValueError("n must be a positive integer")
dx = (b - a) / n
x = np.linspace(a, b, n + 1)
return dx/2 * np.sum(f(x[:-1]) + f(x[1:]))
def simpsons_rule(f, a, b, n):
if isinstance(n, bool) or not isinstance(n, int) or n <= 0:
raise ValueError("n must be a positive integer")
if n % 2 == 1:
raise ValueError("n must be even for Simpson's Rule")
dx = (b - a) / n
x = np.linspace(a, b, n + 1)
y = f(x)
return dx/3 * np.sum(y[0:-1:2] + 4*y[1::2] + y[2::2])
Notes :
fest la fonction intégrande.aetbsont les bornes d'intégration.nest le nombre de sous-intervalles.dxest la largeur de chaque sous-intervalle.- Pour
simpsons_rule, un nombre pair de sous-intervalles est nécessaire.
Bornes d’erreur et vérification reproductible
Pour , poser . Les bornes d’erreur des règles composites sont
Les deux premières exigent une dérivée seconde continue, bornée en valeur absolue par ; Simpson exige une dérivée quatrième continue bornée par et un pair. Ces bornes concernent la discrétisation, non l’arrondi flottant. Diviser le pas par deux divise les bornes par 4 ou 16. Simpson est exact pour les polynômes cubiques en arithmétique exacte, mais n’est pas toujours plus précis pour une fonction peu régulière.
Pour sur avec , on obtient , , , tandis que . Les erreurs absolues sont , et zéro, conformément aux bornes avec , . Pour garantir ici une erreur des trapèzes au plus égale à , choisir .
L’implémentation exige NumPy installé, des bornes finies et une fonction acceptant un tableau et renvoyant un tableau de même forme. Pour une constante, utiliser lambda x: np.ones_like(x), non lambda x: 1. Ce sont des routines pédagogiques à grille fixe, non des solveurs adaptatifs d’intégrales singulières.
f = lambda x: x**2
assert np.isclose(midpoint_rule(f, 0, 1, 2), 5/16)
assert np.isclose(trapezoid_rule(f, 0, 1, 2), 3/8)
assert np.isclose(simpsons_rule(f, 0, 1, 2), 1/3)
Comparer permet d’observer la convergence, mais leur accord ne certifie pas l’erreur : une grille peut manquer un pic étroit. Ne pas évaluer une extrémité singulière avec les trapèzes ou Simpson ; découper ou transformer d’abord l’intégrale. Tronquer un intervalle infini ajoute une erreur de queue distincte : remplacer par perd exactement , quelle que soit la finesse de la grille.