Calcul d'intégrale
L'objectif est d'élaborer un programme de calcul approché d'intégrales de fonctions par découpage
de l'intervalle d'intégration en sous-intervalles, et à substituer un polynôme à la fonction à intégrer
sur chacun de ces sous-intervalles.
Un rappel de quelques méthodes est effectué.
La méthode qui sera utilisée est la méthode de Romberg et l'on verra pour quelle raison.
Rappels théoriques
Hypothèses :
- l'intervalle d'intégration est un segment [ a , b ].
- la fonction est définie en tout point et intégrable au sens de Riemann sur [ a , b ].
- on pose h = (b-a) / d n où d représente le degré du polynôme et n le nombre de sous-intervalles.
Quelques Méthodes de résolution :
Méthode des Trapèzes
Elle utilise un polynôme de degré d=1 pour l'interpolation.
La fonction est remplacée par un segment de droite sur chaque sous-intervalle.
Dans ce cas, on a (n+1) points avec
Par conséquent, sur l'intervalle
l'intégrale
est approchée par
Finalement, l'intégrale I vaut
Méthode de Simpson
Elle utilise un polynôme de degré d=2 pour l'interpolation.
La fonction est remplacée par un arc de parabole sur chaque sous-intervalle.
Dans ce cas, on a (2n+1) points avec
Par conséquent, sur l'intervalle
l'intégrale
est approchée par
Finalement, l'intégrale I vaut
On démontre que la différence entre la valeur exacte de l'intégrale et la valeur calculée est proportionnelle à
Méthode de Villarceau
Elle utilise un polynôme de degré d=4 pour l'interpolation.
Par conséquent, sur l'intervalle
l'intégrale
est approchée par
Finalement, l'intégrale I vaut
On démontre que la différence entre la valeur exacte de l'intégrale et la valeur calculée est proportionnelle à
Inconvénients
Les erreurs numériques dues aux méthodes précédentes peuvent annuler la précision qu'elles apportent dans l'approche de la valeur de l'intégrale.
En général, on utilise une vingtaine d'intervalles avec la méthode de Villarceau et une centaine avec la méthode de Simpson, ce qui assure un bon compromis entre erreur de méthode et erreurs numériques.
D'une façon générale, on ne connaît pas la précision du résultat.
Méthode de Romberg
Cette méthode permet de choisir à priori la précision du résultat : les itérations sont effectuées jusqu'à ce que la précision demandée soit atteinte.
La méthode se fonde sur une adaptation de la méthode des trapèzes.
On considère que les hypothèses définies précédemment demeurent valables.
Etant donné un pas h, une estimation de l'intégrale I est obtenue par la méthode des trapèzes.
Si l'on divise le pas par 2, l'estimation sera plus précise.
De même, on peut calculer Cette suite converge vers I.
On démontre que l'on peut obtenir une deuxième suite
pour laquelle le terme
est une meilleure approximation de l'intégrale que
On peut ensuite obtenir une troisième suite telle que :
Et d'une manière générale :
D'où le tableau suivant :
On démontre que converge bien plus rapidement vers I que
Pratiquement, on commence par calculer par la méthode des trapèzes.
On calcule ensuite et l'on déduit
puis
D'une façon générale, on obtient le tableau d'ordre (n+1) à partir du tableau d'ordre n en calculant et en déduisant les
où k ∈ [1 , n+1]
Le calcul est terminé lorsque la différence entre est inférieure à une limite fixée.
Algorithme de la Méthode de Romberg
On se propose de calculer une valeur approchée de π à partir de l'intégrale
Programme principal
- Demander les bornes d'intégration: noms de variables a et b.
- Demander la précision souhaitée : nom de variable EPS.
différence entre deux estimations successives qui provoque l'arrêt des itérations.
- Demander le nombre minimal d'itérations : nom de variable iter_min.
permet d'éviter la sortie prématurée.
- Demander le nombre maximal d'itérations : nom de variable iter_max.
c'est le nombre d'itérations au delà duquel l'ordinateur abandonne :
le temps de calcul maximal varie comme
La valeur 12 est considérée comme raisonnable.
Fonction à intégrer
Définir une fonction f(x) qui représente la fonction à intégrer.
Méthode des Trapèzes
définir une fonction tr :
entrée : le nombre de sous-intervalles n
sortie : la valeur de la fonction
Cette fonction servira pour le calcul de .
On pourra choisir ici
fonction tr( nn )
s ← 0
si ( nn > 1 ) alors
pour i de 1 à nn-1 faire
#1
x ← a + i*h
s ← s + f(x)
1#
retourne h * s + (h/2)* ( f(a) + f(b) )
Méthode de Romberg
Outre le calcul proprement dit, il s'agira d'écrire à l'écran :
- le numéro de l'itération et la valeur de l'intégrale à ce moment.
- la valeur finale.
- la précision réellement atteinte.
fonction romberg()
t(0,0) ← (h/2)* ( f(a) + f(b) )
pour q de 1 à iter_max-1 faire
#1
écrire q et t(q-1,0)
h ← h/2
t(0,q) ← tr(1<<q)
k ← 1
pour i de 1 à q faire
#2
k ← k*4
j ← q-i
t(i,j) ← ( k - t(i-1,j+1) ) / (k-1)
2#
precision ← | t(q,0) - t(q-1,0) |
si (precision < eps) et (q >= iter_min) alors retourne t(q,0)
1#
si (precision > eps)
#3
écrit 'précision non vérifiée'
retourne 0
3#
Traduction en php
Résultats
Vous devez avoir ce qui suit à l'écran :
Borne inférieure : 0
Borne supérieure : 1
Précision souhaitée : 1e-6
Nombre mini d'itérations : 6
Nombre maxi d'itérations : 12
q = 1 => 3.000000000000
q = 2 => 3.133333333333
q = 3 => 3.142117647059
q = 4 => 3.141585783762
q = 5 => 3.141592665278
q = 6 => 3.141592653638
La valeur de l'intégrale est 3.141592653590
La précision est 4.85239e-11