MN Li
MN Li
MN Li
Analyse Numérique
Recueil d’Exercices Corrigés
Calcul et Programmation
Conformément au programme du module de Math5 de 2ème année LMD ST
Izidi Lahouari
2014
Sommaire
Analyse Numérique
Recueil d’Exercices Corrigés
Calcul et Programmation
Conformément au programme du module de Math5 de 2ème année LMD ST
Izidi Lahouari
Avant propos
Izidi Lahouari
Analyse Numérique
Calcul et Programmation
Izidi Lahouari
USTO-MB 2014
Analyse Numérique
Recueil d’Exercices Corrigés
Calcul et Programmation
Conformément au programme du module de Math5 de 2ème année LMD ST
Par
Izidi Lahouari
Maître de conférences à l’USTO-MB
Analyse Numérique L. Izidi
Analyse Numériques
Le domaine de l’analyse numérique est une branche qui regroupe deux grands domaines de la
science de l’ingénieur : mathématique et informatique.
C ’ e s t l'erreur qui résulte lorsqu'on passe d'un problème continu à un problème discret,
générée lorsqu'on remplace une relation exacte par une autre, plus simple ou plus
facilement manipulable.
L'objectif de l’analyse numérique et de pouvoir toujours effectuer ce passage en minimisant
cette erreur.
� sa solution approchée.
Soit A la solution exacte d’un problème donné et A
�
L’Erreur absolue est définit par A - A
�
A −A
L’Erreur relative est définit par
A
Une autre source d'erreur provient de l'outil utilisé pour implémenter les méthodes
numériques qui est l'ordinateur. L'ordinateur puissant et rapide ne peut en aucun cas
représenter fidèlement l'ensemble continu R des valeurs réelles. Un nombre réel est
toujours stocker sur l'ordinateur avec une certaines perte d'information. Cette perte
d'information est appelée erreur d'arrondi et tend à s'amplifier avec l'arithmétique de
l'ordinateur.
Un nombre réel est stocker sous une forme exponentielle normalisée s*m*be où :
s : signe du nombre
m : mantisse
b : base de représentation
e : exposant
2
Analyse Numérique L. Izidi
Si b = 2
Exemple :
La forme normalisée de 110.0110 est 0.110011*211 plus exacte : 0.110011 2 *10 2 11
Le nombre décimal le plus petit en valeur absolue représenté par un ordinateur et lorsqu'il
est additionné à 1.0 produit un résultat décimal différent de 1.0 est appelé précision de la
machine et est nommé ε (epsilon machine).
La précision d'une valeur se mesure par le nombre de chiffres significatifs qu'il contient.
1. Un chiffre est significatif s’il est non nul
2. Un zéro est significatif s'il est entre 2 chiffres significatifs
3. Le zéro n'est jamais significatif s'il précède les chiffres significatifs non nuls
Exemple :
1,414 => 4 chiffres significatifs, 0.000356 => 3 chiffres significatifs.
La valeur 13.2585 avec 6 chiffres significatifs est plus précise que 13.2500 avec 4 chiffres
significatifs.
La normalisation consiste à traduire un nombre réel en un nombre en forme exponentielle
normalisé qui ne garde que les chiffres significatifs en mantisse.
4. Erreur d'arrondi :
On peut dire que la précision d'un ordinateur est la précision avec laquelle un nombre décimal
est représenté. Toute opération arithmétique sur des nombres décimaux produit une erreur
d'au moins ε. Cette erreur est appelée erreur d'arrondi et tend à s'accroitre avec l'arithmétique
de l'ordinateur. Le type réel simple précision conserve six chiffres significatifs non affecté
par ce type d’erreur (une précision de 10-6) tandis que le type double précision conserve
quinze chiffres significatifs non affecté par ce type d’erreur (une précision de 10-15).
3
Analyse Numérique L. Izidi
Exemple :
Supposant une machine qui représente un nombre avec quatre chiffres significatifs et
examinons l’opération simple suivante :
6 * 2/3 = (6*2)/3=12/4
Cette même opération peut être remplacée par sommer six fois le nombre 2/3 à lui-même.
L'écart entre 4.000 et 3.997 = 0.003 est appelé erreur d'arrondi sur une machine en considérant
quatre chiffres significatifs.
4
Analyse Numérique L. Izidi
Integer*2 X
X= 34767
Print *,’x= ‘,X
END
Point fixe : partie entière /partie décimale : Cette méthode fixe une position pour le point
décimal. La partie à gauche du point est utilisée pour représenter la partie entière, et la partie
droite est utilisée pour la partie décimale. Par exemple si on utilise 15 bits pour la partie
entière et 16 bits pour la partie décimale, et un autre bit pour le signe, nous aurons le schéma
suivant:
| 1 |2 16|17 32|
signe partie entière partie décimale
5
Analyse Numérique L. Izidi
Point flottant
Ce schéma consiste à représenter une valeur réelle comme ±M * 2E où 1≤M<2 est la mantisse,
et E l'exposant. Par exemple, la valeur 5.5 sera transformée en 0.1011 * 211 en code binaire
(=0.6875 *23). Dans un schéma de représentation à point flottant, la longueur de M et de E on
sont fixée comme suit (où a 1 a 2 … est l'exposant et b 1 b 2 … est la mantisse):
Exercice 2:
Saisissez et compilez le programme suivant (représentation interne en virgule flottante):
real x
read(*,*)x
print *,'x=',x
z=fraction(x)
y=exponent(x)
print *,'fraction = ',z,' exponent= ',y
f=z*2**y
print *,'valeur de x recalculée est = ',f
2. Analyse de l’erreur dans le traitement par ordinateur :
Les erreurs se produisent dans la manipulation des réels. Elles sont généralement de 3
sources : erreur d’arrondi dû à la précision de l’ordinateur, erreur
6
Analyse Numérique L. Izidi
Exercice 3 :
Saisissez le programme suivant, compilez et exécuter le puis commenter les résultats :
Real x,z,e1,e3
Double precision y,e1
e1=epsilon(x);
e2=epsilon(f);
print 100,'epsilon1 = ',e1,'epsilon2 = ',e2
100 format(A11,f32.30,A11,f32.30)
End
On peut dire que la précision de l’ordinateur est la précision avec laquelle les nombres
décimaux sont représentés. En fait, toute opération arithmétique sur des nombres décimaux
introduit une erreur supplémentaire d’au moins ε. On appelle ce type d’erreur erreur
d’arrondi. L’erreur d’arrondi provient de l’ordinateur.
Exercice 4
Ajoutez ces lignes au programme puis recompilé et commentez les résultats :
X=2356874958663
Print 10,x
10 format(f30.3) ! que remarquez vous ?
z=1.0+e1
print *,'z =',z , ‘ n’’est pas négligeable ’
x=1.0+0.00000001
y=1.0D0 + 0.00000001D0 ! 0.00000001< e1 pour simple précision
! mais 0.00000001>e2 pour double précision
print *,'x =',x , ‘ est négligeable par contre y= ’,y, ‘ est pas négligeable ’
end
On peut connaître le nombre de chiffres significatifs exacts (non affectés par l'erreur d'arrondi
de l'ordinateur) sur l'ordinateur pour le type réel simple et le type réel double précision par la
fonction précision.
7
Analyse Numérique L. Izidi
Exercice 5
déterminer par le programme suivant le nombre de chiffres significatifs exactes du réel simple
et du réel double
Real x
Double precision y
i =precision(x)
j =precision(y)
Print 11,i,j
11 format(I3) ! que remarquez vous ?
End
Ces erreurs peuvent être générées lorsqu’on ne fait pas attention à la conversion que
l’ordinateur effectue automatiquement entre les types numériques.
Exercice 6 :
Saisissez le programme suivant, par partie, compilez et exécutez le puis commenter les
résultats de chaque partie :
real*4 r1,t
double precision x,y,z,f1,ff1,f2,ff2,err1,err2
c première partie : limite de représentation de nombre réel simple précision
print *,'erreur : nombre réel simple -> double précision '
r1=365896523145.0 ! conversion automatique
x=365896523145.0D0 ! conversion explicite
err1=abs(x-r1)
print 5,'val réel',r1,'val double',x,'err de représentation',err1
5 format(3(A22,f30.3,/))
print *,'erreur : conversion implicite de 5 et 3 dans 5/3 '
x=5/3
y=5.0/3.0
z=dfloat(5)/dfloat(3)
f1=abs(x-z)
ff1=abs(y-z)
print 10,'x=',x,'y=',y,'z=',z,'f1=x-z=',f1,'ff1=y-z=',ff1
c deuxième partie : propagation d'erreur de conversion automatique dans le calcul
print *,'propagation de err : de la division à la soustraction'
x=5/3-5
y=5.0/3.0-5.0
z=dfloat(5)/dfloat(3)-dfloat(5)
f2=abs(x-z) ! f2>f1 erreur amplifiée
ff2=abs(y-z) ! ff2>ff1 erreur amplifiée
print 10,'x=',x,'y=',y,'z=',z,'f2=x-z=',f2,'ff2=y-z=',ff2
10 format (/,5(A10,f30.27,/),/)
c troisième partie : analyse de l'erreur amplifiée
print *, 'terme de l"erreur amplifiée '
8
Analyse Numérique L. Izidi
err1=abs(f2-f1)
err2=abs(ff2-ff1)
print 20,'err1=f2-f1',err1,'err2=ff2-ff1',err2
20 format (/,2(A13,f30.27,/),/) ! // veut dire sauter deux lignes
End
)−𝑓𝑓(𝑥𝑥)
De l'approximation d'une dérivée par une différence finie comme 𝑓𝑓 ′ (𝑥𝑥 ) ≈ 𝑓𝑓(𝑥𝑥+ℎℎ
Exercice 7:
Saisissez, compilez et exécuter le programme suivant : calcul exacte et numérique ex,
commentez le résultat. Calculer l’erreur de troncature.
real x,expo,y
print *,’donnez la valeur de x (proche de 0) ’
read(*,*)x
y=exp(x)
expo=1.0+x**2
print 10,'valeur exacte =',y,' valeur numérique =',expo
10 format (A17,f30.23,A22,f30.23)
end
En règle générale il n’y a pas grand-chose que l’on puisse faire pour éviter les erreurs
d’arrondi, sinon d’éviter d’utiliser des algorithmes qui amplifient les erreurs d’arrondi. La
plupart du temps, l’erreur d’arrondi et l’erreur de troncature n’interagissent pas fortement
9
Analyse Numérique L. Izidi
entre elles. Cependant une méthode qui apparaît simple et logique peut être instable et
introduit des erreurs. Ceci veut dire qu’une erreur d’arrondi présente au début des calculs
peut être amplifiée par la méthode numérique utilisée de telle sorte que la réponse numérique
devient rapidement fausse. Il faut toujours étudier et critiquer la stabilité d’une méthode
numérique.
or_exact=((sqrt(5.0D0)-1.0D0)/2.0D0)**n
print *, 'la valeur exacte =',or_exact
or_0=1.0D0
or_1= 0.6180339887D0
or_actuel=or_1
10
Analyse Numérique L. Izidi
or_anterieur=or_0
or_prochain=or_anterieur-or_actuel;
or_anterieur=or_actuel
or_actuel=or_prochain
enddo
or_approche=or_prochain
print *,' la valeur approchée =',or_approche
end
On peut remarquer que la méthode de calcul par différence est instable. Dès la puissance 18,
l’écart entre la valeur exacte et approchée devient grand. Cela revient à la soustraction des
nombres 𝜑𝜑 𝑛𝑛+1 et 𝜑𝜑 𝑛𝑛−1 qui deviennent sensiblement proches quand n est grand. On dit que la
récurrence est instable. De nombreuses méthodes numériques qu’on va étudier sont itératives
(récurrentes), donc source d’erreur. Pour ce type de méthode, deux questions essentielles se
posent:
1. Le processus converge-t-il ?
2. Quand s’arrête-t-on pour obtenir une réponse plus ou moins exacte ?
La réponse à ces deux questions n’est pas toujours facile et demeure l’une des préoccupations
essentielles du numéricien. Et la préoccupation majeure de ce cours (méthodes numériques
appliquées).
11
Analyse Numérique L. Izidi
Exercice 1 :
Soit la fonction f ( x ) = e − x − 2
x
Exercice 2 :
12
Analyse Numérique L. Izidi
Exercice 3 :
13
Analyse Numérique L. Izidi
Corrigé de l’exercice 1
et h( x )= x + 2
f=
( x ) g( x ) − h( x ) =0 d’où g( x ) = h( x ) les racines de f sont tous les points x d’intersection de
f possède deux racines réelles qui existent respectivement dans le intervalles [-2,1] et [1,2]
Dichotomie :
𝑏𝑏 0−𝑎𝑎 0
ln( )
n min = 𝑙𝑙𝑙𝑙2ε
2
= 5.55 ≈6 itérations
14
Analyse Numérique L. Izidi
i ai bi xi f(x i ) εi
0 0 1.5 0.75 -0.633 0.75
1 0.75 1.5 1.125 -0.00447 0.375
2 1.125 1.5 1.3125 0.4029 0.1875
3 1.125 1.3125 1.21875 0.16420 0.09375
4 1.125 1.21875 1.1718 0.0559 0.0468
5 1.125 1.1718 1.14843 0.0048 0.0234
6 1.125 1.14843 1.13671 -0.02 0.01171
Tout l’intervalle final [1.13671,1.14843] est solution du problème. On peut choisir la milieu
de cet intervalle comme solution, donc la solution est : x=(a+b)/2=1.1425
1. 𝑖𝑖 = 0
2. 𝑎𝑎𝑖𝑖 = 0 ; 𝑏𝑏𝑖𝑖 = 1.5
3. 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶 𝑥𝑥𝑖𝑖 = (𝑎𝑎𝑖𝑖 + 𝑏𝑏𝑖𝑖 )/2 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑓𝑓(𝑥𝑥𝑖𝑖 )
4. 𝑠𝑠𝑠𝑠 𝑓𝑓(𝑎𝑎). 𝑓𝑓(𝑥𝑥𝑖𝑖) < 0 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎
𝑏𝑏𝑖𝑖 = 𝑥𝑥𝑖𝑖 𝑒𝑒𝑒𝑒 𝑎𝑎 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 𝑙𝑙𝑙𝑙 𝑚𝑚ê𝑚𝑚𝑚𝑚
sinon
𝑎𝑎𝑖𝑖 = 𝑥𝑥 𝑖𝑖 𝑒𝑒𝑒𝑒 𝑏𝑏 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 𝑙𝑙𝑙𝑙 𝑚𝑚ê𝑚𝑚𝑚𝑚
𝑓𝑓𝑓𝑓𝑓𝑓 𝑠𝑠𝑠𝑠
5. 𝑆𝑆𝑆𝑆 𝑎𝑎𝑎𝑎𝑎𝑎(𝑎𝑎𝑖𝑖 − 𝑏𝑏𝑖𝑖 )≥ε 𝑖𝑖 = 𝑖𝑖 + 1
𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎 à 3 , 𝑠𝑠𝑠𝑠𝑠𝑠 = (𝑏𝑏𝑛𝑛 + 𝑎𝑎𝑛𝑛 )/2
6. 𝑓𝑓𝑓𝑓𝑓𝑓
Méthode de Newton :
1
Pour x 0 =1 : f(1)*f’’(1)=( e1 -1-2) e = -0.76579 <0 condition non vérifiée. On ne peut
rien dire sur la convergence de la méthode pour x 0 =1 car la condition est suffisante mais non
nécessaire.
15
Analyse Numérique L. Izidi
𝑒𝑒 𝑥𝑥 𝑛𝑛 −1 − 𝑥𝑥𝑛𝑛−1 − 2
𝑥𝑥𝑛𝑛 = 𝑥𝑥𝑛𝑛−1 −
𝑒𝑒 𝑥𝑥 𝑛𝑛 −1 − 1
i xi |x i -x i-1 |
0 0
1 1.16395 0.16
2 1.14642 0.017
3 1.146193 0.00033
1. 𝑥𝑥0 = 1
2. 𝑖𝑖 = 1
(𝑒𝑒 𝑥𝑥 𝑖𝑖−1 −𝑥𝑥 𝑖𝑖−1 −2)
3. 𝑥𝑥𝑖𝑖 = 𝑥𝑥𝑖𝑖−1 −
(𝑒𝑒 𝑥𝑥 𝑖𝑖−1 −1)
4. 𝑠𝑠𝑠𝑠 |𝑥𝑥𝑖𝑖 − 𝑥𝑥𝑖𝑖−1 | ≥ 𝜀𝜀 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎 𝑥𝑥𝑖𝑖−1 = 𝑥𝑥𝑖𝑖
𝑖𝑖 = 𝑖𝑖 + 1 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎 à 3
𝑠𝑠𝑠𝑠 𝑛𝑛𝑛𝑛𝑛𝑛
5. 𝑓𝑓𝑓𝑓𝑓𝑓
La méthode de newton est plus rapide (convergence quadratique) que celle de la dichotomie
(convergence linéaire) elle est aussi plus précise
Corrigé de l’exercice 2
Program DICHOTOMIE BISSECTION
EPS=0.001
write(*,*) ' donner le domaine de la racine'
read(*,*) a, b
if(f(a)*f(b).lt.0.0) then
write(*,*) 'bonnes valeurs initiales'
else
write(*,*) 'changer les valeurs '
goto 20
endif
10 xm=(a+b)/2.
if((f(xm)*f(a).lt.0.0) then
b=xm
else
a=xm
endif
err=abs(a-b)
if(err.le.eps) then
xm=(a+b)/2.
write(*,*) 'La solution est :',xm
else
goto 10
endif
20 end
function f(x)
f=x*exp(x)+3*exp(x)-1
return
end
16
Analyse Numérique L. Izidi
Corrigé de l’exercice 3
17
Analyse Numérique L. Izidi
Exercice 1 :
1- Calculer les valeurs de la dérivée de f aux points : -5, -2, 0.25, 2.25, 3.5, 4, pour h=0.0015
en utilisant :
a- La méthode des différences excentrées en avant.
b- La méthode des différences excentrées en arrière.
c- La méthode des différences centrées.
2- Comparer les résultats avec les valeurs obtenues par la formule analytique de la fonction
dérivée f’, commenter (critère de comparaison : erreur absolue en moyenne).
3- Calculer la valeur de la dérivée de f au point 3.5 par les différences centrées pour les
différentes valeurs de h : 0.00015, 0.0015, 0.015, 0.5.
4- Comparer les résultats avec la valeur f’ (3.5) obtenue par la formule analytique de la
fonction dérivée f’, commenter.
5- Calculer f’’ au point -3 avec h=0.015, comparer le résultat avec celui obtenu en utilisant la
formule analytique de f’’.
Exercice 2 :
1
Soit à déterminer l’intégrale de 𝑓𝑓 (𝑥𝑥 ) = sur l’intervalle [1,4] en utilisant :
𝑥𝑥
18
Analyse Numérique L. Izidi
Exercice 3 :
X -0.3 0 0.3 0.6 0.9 1.2 1.5 1.8 2.1 2.4 2.7
Y 0.373 1.0 1.627 2.416 3.529 5.128 7.375 10.433 14.461 19.624 26.083
1- Calculer les valeurs de la dérivée de f dans tous les points Xi par la méthode des
différences centrée. Utiliser le schéma excentré (en avant ou en arrière) dans les bornes de
l’intervalle de définition de f.
2- sur la base du tableau résultant (valeurs de f’ sur l’intervalle [-0.3, 2.7]), calculer, par la
méthode de trapèze, les intégrales suivantes :
3- comparer les résultats obtenus en 2 par les valeurs exactes des différents intégrales sachant
𝑏𝑏
que ∫𝑎𝑎 𝑓𝑓 ′ (𝑥𝑥) = f(b)-f(a), en utilisant comme critère.
19
Analyse Numérique L. Izidi
Corrigé de l’exercice 1 :
𝑓𝑓(𝑥𝑥0+ℎ)−𝑓𝑓(𝑥𝑥0)
1-Schéma excentré avant : 𝑓𝑓 ′ (𝑥𝑥0) = ℎ
𝑓𝑓(𝑥𝑥0)−𝑓𝑓(𝑥𝑥0−ℎ)
2-Schéma excentré arrière : 𝑓𝑓 ′ (𝑥𝑥0) =
ℎ
𝑓𝑓(𝑥𝑥0+ℎ)−𝑓𝑓(𝑥𝑥0−ℎ)
3-Schéma centré 𝑓𝑓 ′ (𝑥𝑥0) =
2ℎ
1/ calculer f’(x0) dans les différents points pour h=0.0015 par les différents schémas :
2/ On remarque que le schéma centré est celui qui donne une meilleur approximation de la
dérivée : quantité d’erreur absolue minimale par rapport aux 2 autres schéma.
En moyenne : erreur absolue moyenne pour les 3 schéma sur l’échantillon de 6 points =
Erreur absolue moyenne par le schéma excentré avant = 0.0223
Erreur absolue moyenne par le schéma excentré arrière = 0.0244
Erreur absolue moyenne par le schéma centré = 0.0012
4/ L’écart entre la valeur exacte et la valeur approchée de la dérivée dans un point donnée
tend à s’accroitre quant h est trop grand ou même relativement trop petit. La valeur de h doit
être bien ajustée car elle influe sur la qualité du résultat.
20
Analyse Numérique L. Izidi
err_abs=0.00095.
L’approximation de la dérivée par des différences (centrées ou excentrées) est trop sensible
d’une part au paramètre de discrétisation h et d’autre part à l’allure de la fonction elle-même.
Si l’écart entre f(x0) et la valeur de f dans les points adjacents x0+h ou x0-h (f(x0+h) et f(x0-
h)) est important, les 3 schémas risquent d’engendrer des erreurs d’approximation
importantes. Il faut adapter le h selon cet écart.
Corrigé de l’exercice 2 :
Méthode exacte :
En sachant la formule analytique de la fonction qui résulte de l’intégral de 1/x qui est ln
41
∫1 = ln(4) − ln(1) = 1.38629
𝑥𝑥
Pour i=0 : x i =a ; pour i=n-1 : x i+1 =b c’est les borne elles sont présentent une fois dans la
somme ; chaque xi (hors a et b) est présent 2 fois (une fois sous la forme de x i et une fois sous
la forme de x i+1 ce qui justifie que le facteur ½ ne ce multiplie qu’avec a et b)
𝑏𝑏 ℎ
∫𝑎𝑎 𝑓𝑓 (𝑥𝑥 ) = 2 (𝑓𝑓(𝑎𝑎) + 𝑓𝑓(𝑏𝑏)) + ℎ ∑𝑛𝑛−1
𝑖𝑖=1 𝑓𝑓 (𝑥𝑥𝑥𝑥 ) h=x i+1 – x i =(b-a) / n avec n nombre de
4 0.375
∫1 1/𝑥𝑥 = �𝑓𝑓(1) + 𝑓𝑓(4)� + 0.375 ∑𝑛𝑛−1
𝑖𝑖=1 𝑓𝑓 (1 + 𝑖𝑖 ∗ ℎ)=1.3971
2
21
Analyse Numérique L. Izidi
𝑏𝑏 ℎ
∫𝑎𝑎 𝑓𝑓(𝑥𝑥) = 3 ∑𝑛𝑛−2
𝑖𝑖=0 (𝑓𝑓 (𝑥𝑥𝑖𝑖 ) + 4𝑓𝑓 (𝑥𝑥𝑖𝑖+1 ) + 𝑓𝑓(𝑥𝑥𝑖𝑖+2 )) i vari avec
un pas de 2
4 8−2
0.375 1 1 1
� 𝑓𝑓(𝑥𝑥) = �( +4 + )
1 3 𝑋𝑋𝑋𝑋 𝑥𝑥𝑖𝑖+1 𝑥𝑥𝑖𝑖+2
𝑖𝑖=0,2
0.375
= (f(x0)+4f(x1)+f(x2) +f(x2)+4f(x3)+f(x4) +f(x4)+4f(x5)+f(x6) +f(x6)+4f(x7)+f(x8))
3
0.375
= (f(a) + 4*(f(x1)+f(x3)+f(x5)+f(x7) + 2 *(f(x2)+f(x4)+f(x6)) + f(b))
3
0.375
= (f(a)+f(b)+ 4* ∑𝑛𝑛−1 𝑛𝑛−2
𝑖𝑖=1,2 𝑓𝑓(𝑥𝑥𝑥𝑥) + 2*∑𝑖𝑖=2,2 𝑓𝑓(𝑥𝑥𝑥𝑥)) =1.386805
3
Début
Lire (a,b,n)
h←(b-a)/n
s←0
pour i←1,n-1,1
s←s+f(a+i*h)
finpour
s←s*h + (f(a)+f(b))*(h/2)
ecrire(s)
fin
22
Analyse Numérique L. Izidi
Début
Lire (a,b,n)
h←(b-a)/n
s_pair←0
s_imp←0
s←0
pour i←1,n-1,2
s_imp←s_imp+f(a+i*h)
finpour
pour i←2,n-2,2
s_pair←s_pair+f(a+i*h)
finpour
Corrigé de l’exercice 3
1- h=0.3
𝑓𝑓(𝑥𝑥0+ℎ)−𝑓𝑓(𝑥𝑥0−ℎ)
Schéma centré 𝑓𝑓 ′ (𝑥𝑥0) =
2ℎ
X -0.3 0 0.3 0.6 0.9 1.2 1.5 1.8 2.1 2.4 2.7
Y 2.1 2.09 2.36 3.17 4.52 6.41 8.839 11.81 15.32 19.37 21.54
1.5
∫0 𝑓𝑓 ′ (𝑥𝑥 ) = exacte : f(1.5)-f(0) = 6.375
Trapèze =6.57735
Erreur absolue =0.20235
Il existe 5 trapèzes :
erreur par trapèze = 0.20235/5 = 0.040
2.1
∫0 𝑓𝑓 ′ (𝑥𝑥 ) = exacte : f(2.1)-f(0) = 13.461
Trapèze =13.7442
Erreur absolue =0.2832
Il existe 7 trapèzes
23
Analyse Numérique L. Izidi
Conclusion
On remarque que l’erreur d’approximation est stable (0.04) dans chaque trapèze cela est
logique puisque h=0.3 est fixe. Néanmoins dans le calcul du dernier intégral l’erreur par
trapèze est relativement doublée. Cela est dû à l’erreur dans le calcul initial de f’(2.7) calculé
par le schéma des différences excentrées en arrière et pas le schéma centré(effet de bord).
Programmes de calcul:
Les programmes sont écrits en langage de programmation Fortran.
Program derivation
ana1=3*x**2-2*exp(x)
davant=(f(x+h)-f(x))/h
darrir=(f(x)-f(x-h))/h
dcentr=(f(x+h)-f(x-h))/(2*h)
erravant=abs(davant-ana1)
errarrir=abs(darrir-ana1)
errcentr=abs(dcentr-ana1)
ana2=6*x-2*exp(x)
dsecon=(f(x-h)-2*f(x)+f(x+h))/h**2
errsecon=abs(dsecon-ana2)
function f(x)
f=x**3-2*exp(x)+1
return
end
24
Analyse Numérique L. Izidi
Program integration
h=(b-a)/n
c ************************************
c calcul par la methode des trapèzes
c ************************************
TRA=h*(f(a)+f(b))/2
do i=1,n-1
TRA=TRA+(h*f(a+i*h))
enddo
c write(*,*) 'methode du trapeze', TRA
c ************************************
c calcul par la methode de Simpson
c ************************************
S0=f(a)+f(b)
S1=0.
do i=1,n-1,2
S1=S1+f(a+i*h)
enddo
S2=0.
do i=2,n-2,2
S2=S2+f(a+i*h)
enddo
SIM=(h/3.)*(S0+4*S1+2*S2)
c ************************************
c calcul par la methode analytique
c ************************************
ANA=alog(b)-alog(a)
c ************************************
c calcul d erreur
c ************************************
err1=abs(ana-TRA)
err2=abs(ana-SIM)
function f(x)
f=1/x
return
end
25
Analyse Numérique L. Izidi
Interpolation Numérique
Exercice 1 :
Exercice 2 :
Exercice 3 :
x 0 1 3 4
f(x) -1 1 3 5
x -1 0 2 3 5
f(x) 0 1 0 -1 0
x -2 -1 0 1 2 3
f(x) -3 -2 -2 0 1 2
26
Analyse Numérique L. Izidi
Corrigé de l’exercice 1 :
Rappelons que le polynôme de Lagrange basé sur les points d’appui d’abscisses X 0 , X 1 , X 2 ,
X n est d’ordre n et il s’écrit :
avec
(𝑥𝑥−𝑥𝑥 𝑗𝑗 )
𝐿𝐿𝑖𝑖 (𝑥𝑥 ) = ∏𝑛𝑛𝑗𝑗=0,𝑗𝑗 ≠𝑖𝑖 (𝑥𝑥 −𝑥𝑥
𝑖𝑖 𝑗𝑗 )
(𝑥𝑥−𝑥𝑥 1 ) (𝑥𝑥−0.7) 7
L 0 (x) = (𝑥𝑥 = = −5𝑥𝑥 +
0 −𝑥𝑥 1 ) (0.5−0.7) 2
(𝑥𝑥−𝑥𝑥 0 ) (𝑥𝑥−0.5) 5
L 1 (x)= (𝑥𝑥 = = 5𝑥𝑥 −
1 −𝑥𝑥 0 ) (0.7−0.5) 2
n+1=2 ⇒ n=1 ⇒ Cette interpolation est d’ordre 1 elle est dite linéaire.
3- On ne peut pas utiliser ce polynôme pour calculer f(2) car le contexte de l’interpolation
exige que l’approximation de f dans tout point d’abscisse x par un polynôme est valide si et
seulement si x∈ [x 0 , x n ] et dans ce cas 2 ∉[0.5,0.7] (dans le cas où x< x 0 ou x> x n c’est
une extrapolation).
27
Analyse Numérique L. Izidi
4- On cherche le polynôme d’interpolation de f avec 3 points d’appui : (𝑥𝑥0 , 𝑓𝑓(𝑥𝑥0 ))= (0.4,-
0.916) ; (𝑥𝑥1 , 𝑓𝑓(𝑥𝑥1 )) = (0.5,-0.693) ; (𝑥𝑥2 , 𝑓𝑓(𝑥𝑥2 )) = (0.7,-0.357) cette interpolation est dite
quadratique
𝒇𝒇(𝒙𝒙)≅𝑷𝑷𝟐𝟐 (𝒙𝒙) = −𝟎𝟎. 𝟗𝟗𝟗𝟗𝟗𝟗𝑳𝑳𝟎𝟎 (𝒙𝒙) − 𝟎𝟎. 𝟔𝟔𝟔𝟔𝟔𝟔𝑳𝑳𝟏𝟏 (𝒙𝒙) − 𝟎𝟎. 𝟑𝟑𝟑𝟑𝟑𝟑𝑳𝑳𝟐𝟐 (𝐱𝐱)
𝒇𝒇(𝒙𝒙)≅𝑷𝑷𝟐𝟐 (𝒙𝒙) = −𝟏𝟏. 𝟖𝟖𝟖𝟖𝟖𝟖𝒙𝒙𝟐𝟐 + 𝟑𝟑. 𝟖𝟖𝟖𝟖𝟖𝟖𝟖𝟖 − 𝟐𝟐. 𝟏𝟏𝟏𝟏
5- Ln(0.6) approché = 𝑓𝑓(0.6)≅𝑃𝑃2 (0.6) = −1.813 ∗ 0.62 + 3.865 ∗ 0.6 − 2.17 = −0.50368
Ln(0.6) exacte = - 0.5108
Err_abs = 0.00714
6- Plus le nombre de points d’appui augmente est plus l’interpolation est meilleure.
Corrigé de l’exercice 2 :
On veut calculer √115 par interpolation et le comparer avec sa valeur exacte : l’écart entre la
valeur approchée et la valeur exacte représente la précision de l’interpolation.
𝑓𝑓 (𝑥𝑥 ) = √𝑥𝑥 ; points d’appui (𝑥𝑥0 , 𝑓𝑓(𝑥𝑥0 )) = (100,10); (𝑥𝑥1 , 𝑓𝑓(𝑥𝑥1 ))=(121,11) ;
(𝑥𝑥2 , 𝑓𝑓(𝑥𝑥2 ))=(144,12) ; n+1=3 ⇒ interpolation d’ordre 2 (quadratique )
On nous demande pas de déterminer le polynôme mais plutôt calcul directe de √115 par
application numérique dans les différents Li et par la suite la valeur final de √115
28
Analyse Numérique L. Izidi
√115 = 𝒇𝒇(𝟏𝟏𝟏𝟏𝟏𝟏)≅𝑷𝑷𝟐𝟐(𝟏𝟏𝟏𝟏𝟏𝟏) = 𝟏𝟏𝟏𝟏 ∗ 𝑳𝑳𝟏𝟏 (𝟏𝟏𝟏𝟏𝟏𝟏) + 𝟏𝟏𝟏𝟏 ∗ 𝑳𝑳𝟏𝟏 (𝟏𝟏𝟏𝟏𝟏𝟏) + 𝟏𝟏𝟏𝟏 ∗ 𝑳𝑳𝟐𝟐 (𝟏𝟏𝟏𝟏𝟏𝟏)
√115 = 𝒇𝒇(𝟏𝟏𝟏𝟏𝟏𝟏)≅𝑷𝑷𝟐𝟐(𝟏𝟏𝟏𝟏𝟏𝟏) = 𝟏𝟏𝟏𝟏 ∗ 𝟎𝟎. 𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏 + 𝟏𝟏𝟏𝟏 ∗ 𝟎𝟎. 𝟗𝟗𝟗𝟗𝟗𝟗𝟗𝟗𝟗𝟗 + 𝟏𝟏𝟏𝟏 ∗ −𝟖𝟖. 𝟖𝟖𝟖𝟖𝟖𝟖𝟖𝟖 × 10⁻²
On peut obtenir une Précision = 1.0499 × 10−3 avec une interpolation quadratique basée sur
les 3 points d’appui : (𝑥𝑥0 , 𝑓𝑓(𝑥𝑥0 )) = (100,10); (𝑥𝑥1 , 𝑓𝑓(𝑥𝑥1 ))=(121,11) ; (𝑥𝑥2 , 𝑓𝑓(𝑥𝑥2 ))=(144,12)
Corrigé de l’exercice 3 :
x 0 1 3 4
f(x) -1 1 3 5
(𝑥𝑥−1)(𝑥𝑥−3)(𝑥𝑥−4) 1
L 0 (x) = = − (𝑥𝑥 − 1)(𝑥𝑥 − 3)(𝑥𝑥 − 4)
(0−1)(0−3)(0−4) 12
(𝑥𝑥−0)(𝑥𝑥−3)(𝑥𝑥−4) 1
L 1 (x) = (1−0)(1−3)(1−4)
= 𝑥𝑥 (𝑥𝑥 − 3)(𝑥𝑥 − 4)
12
(𝑥𝑥−0)(𝑥𝑥−1)(𝑥𝑥−4) 1
L 2 (x) = (3−0)(3−1)(3−4)
= − 𝑥𝑥 (𝑥𝑥 − 1)(𝑥𝑥 − 4)
6
(𝑥𝑥−0)(𝑥𝑥−1)(𝑥𝑥−3) 1
L 3 (x) = (4−0)(4−1)(4−3)
= 𝑥𝑥 (𝑥𝑥 − 1)(𝑥𝑥 − 3)
12
𝑓𝑓 (𝑥𝑥 )≅𝑃𝑃1 (𝑥𝑥 ) = 𝑓𝑓 (𝑥𝑥0 )𝐿𝐿0 (𝑥𝑥 ) + 𝑓𝑓 (𝑥𝑥1 )𝐿𝐿1 (𝑥𝑥 ) + 𝑓𝑓 (𝑥𝑥2 )𝐿𝐿2 (𝑥𝑥 ) + 𝑓𝑓 (𝑥𝑥3 )𝐿𝐿3 (𝑥𝑥 )
Calcul à compléter.
29
Analyse Numérique L. Izidi
x -1 0 2 3 5
f(x) 0 1 0 -1 0
(𝑥𝑥−0)(𝑥𝑥−2)(𝑥𝑥−3)(𝑥𝑥−5) 1
L 0 (x) = (−1−0)(−1−2)(−1−3)(−1−5) = 𝑥𝑥 (𝑥𝑥 − 2)(𝑥𝑥 − 3)(𝑥𝑥 − 5)
72
(𝑥𝑥+1)(𝑥𝑥−2)(𝑥𝑥−3)(𝑥𝑥−5) 1
L 1 (x) = (0+1)(0−2)(0−3)(0−5)
= − (𝑥𝑥 + 1)(𝑥𝑥 − 2)(𝑥𝑥 − 3)(𝑥𝑥 − 5)
30
(𝑥𝑥+1)(𝑥𝑥−0)(𝑥𝑥−3)(𝑥𝑥−5) 1
L 2 (x) = (2+1)(2−0)(2−3)(2−5)
= − 𝑥𝑥(𝑥𝑥 + 1)(𝑥𝑥 − 3)(𝑥𝑥 − 5)
18
(𝑥𝑥+1)(𝑥𝑥−0)(𝑥𝑥−2)(𝑥𝑥−5) 1
L 3 (x) = (3+1)(3−0)(3−2)(3−5)
= − 𝑥𝑥(𝑥𝑥 + 1)(𝑥𝑥 − 2)(𝑥𝑥 − 5)
48
(𝑥𝑥+1)(𝑥𝑥−0)(𝑥𝑥−2)(𝑥𝑥−3) 1
L 4 (x) = (5+1)(5−0)(5−2)(5−3)
= − 𝑥𝑥(𝑥𝑥 + 1)(𝑥𝑥 − 2)(𝑥𝑥 − 3)
180
𝑓𝑓 (𝑥𝑥 )≅𝑃𝑃1 (𝑥𝑥 ) = 𝑓𝑓 (𝑥𝑥0 )𝐿𝐿0 (𝑥𝑥 ) + 𝑓𝑓 (𝑥𝑥1 )𝐿𝐿1 (𝑥𝑥 ) + 𝑓𝑓 (𝑥𝑥2 )𝐿𝐿2 (𝑥𝑥 ) + 𝑓𝑓 (𝑥𝑥3 )𝐿𝐿3 (𝑥𝑥 ) + 𝑓𝑓 (𝑥𝑥4 )𝐿𝐿4 (𝑥𝑥 )
Calcul à compléter.
x -2 -1 0 1 2 3
f(x) -3 -2 -2 0 1 2
(𝑥𝑥+1)(𝑥𝑥−0)(𝑥𝑥−1)(𝑥𝑥−2)(𝑥𝑥−3) 1
L 0 (x) = (−2+1)(−2−0)(−2−1)(−2−2)(−2−3) = − 𝑥𝑥 (𝑥𝑥 + 1)(𝑥𝑥 − 1)(𝑥𝑥 − 2)(𝑥𝑥 − 3)
120
(𝑥𝑥+2)(𝑥𝑥−0)(𝑥𝑥−1)(𝑥𝑥−2)(𝑥𝑥−3) 1
L 1 (x) = (−1+2)(−1−0)(−1−1)(−1−2)(−1−3) = 𝑥𝑥 (𝑥𝑥 + 2)(𝑥𝑥 − 1)(𝑥𝑥 − 2)(𝑥𝑥 − 3)
24
(𝑥𝑥+2)(𝑥𝑥+1)(𝑥𝑥−1)(𝑥𝑥−2)(𝑥𝑥−3) 1
L 2 (x) = = − (𝑥𝑥 + 2)(𝑥𝑥 + 1)(𝑥𝑥 − 1)(𝑥𝑥 − 2)(𝑥𝑥 − 3)
(0+2)(0+1)(0−1)(0−2)(0−3) 12
(𝑥𝑥+2)(𝑥𝑥+1)(𝑥𝑥−0)(𝑥𝑥−2)(𝑥𝑥−3) 1
L 3 (x) = (1+2)(1+1)(1−0)(1−2)(1−3)
= 𝑥𝑥 (𝑥𝑥 + 2)(𝑥𝑥 + 1)(𝑥𝑥 − 2)(𝑥𝑥 − 3)
12
(𝑥𝑥+2)(𝑥𝑥+1)(𝑥𝑥−0)(𝑥𝑥−1)(𝑥𝑥−3) 1
L 4 (x) = (2+2)(2+1)(2−0)(2−1)(2−3)
= − 𝑥𝑥 (𝑥𝑥 + 2)(𝑥𝑥 + 1)(𝑥𝑥 − 1)(𝑥𝑥 − 3)
24
(𝑥𝑥+2)(𝑥𝑥+1)(𝑥𝑥−0)(𝑥𝑥−1)(𝑥𝑥−2) 1
L 5 (x) = (3+2)(3+1)(3−0)(3−1)(3−2)
= 𝑥𝑥(𝑥𝑥 + 2)(𝑥𝑥 + 1)(𝑥𝑥 − 1)(𝑥𝑥 − 2)
120
Calcul à compléter.
30
Analyse Numérique L. Izidi
Exercice 1 :
y−x
y' =
Soit le problème de Cauchy : y+x
y (0) = 1
Résoudre l’équation différentielle en utilisant la méthode à un seul pas d’Euler sur l’intervalle
[0-1] en utilisant un pas h = 0.1
Résoudre l’équation différentielle en utilisant la méthode à un seul pas d’Euler sur l’intervalle
[0-1] en utilisant un pas h = 0.2
Exercice 2 :
2x
y' = y −
Soit le problème de Cauchy : y
y (0) = 1
31
Analyse Numérique L. Izidi
Comparer les résultats numériques avec ceux de la solution analytique donnés par :
y = 2 x +1
Exercice 3 :
y' = y + x
Soit le problème de Cauchy :
y ( 0) = 1
Il faut lire le point initial et le point final où la solution finale doit être calculée.
Il faut lire le nombre d’intervalles
Programmer la méthode d’Euler
Programmer la méthode de Taylor
Programmer la méthode de Runge Kutta d’ordre 2
Programmer la méthode Runge Kutta d’ordre 4
Calculer la solution analytique donnée par y ( x) = −2e x − x − 1
Comparer l’erreur des quatre méthodes
Calculer la constante k figurant dans les équations de calcul des erreurs
Il faut généraliser le programme par l’utilisation des sous programmes de type function pour
la définition de la fonction f(x)=y+x
32
Analyse Numérique L. Izidi
Corrigé de l’exercice 1 :
y−x
y' =
Soit le problème de Cauchy : y+x
y (0) = 1
La méthode à un seul pas d’Euler sur l’intervalle [0,1] en utilisant un pas h = 0.1
x y
0.000000E+00 1.000000
1.000000E-01 1.100000
2.000000E-01 1.183333
3.000000E-01 1.254418
4.000000E-01 1.315818
5.000000E-01 1.369193
6.000000E-01 1.415694
7.000000E-01 1.456161
8.000001E-01 1.491231
9.000001E-01 1.521399
1.000000 1.547062
33
Analyse Numérique L. Izidi
x h=0.1 h=0.2
6.000E-01 1.415694 1.451054
Il est évident que la solution avec le pas h=0.1 soit plus précise que celle avec le pas h=0.2
Corrigé de l’exercice 2 :
2x
y' = y −
Soit le problème de Cauchy : y
y (0) = 1
Processus d’Euler :
Donc le processus de résolution des équations différentielles (EDPs) par Taylor est donné
par :
Étant donnée 𝑦𝑦(0) = 1
2𝑥𝑥
Sachant que 𝑦𝑦 ′(𝑥𝑥𝑖𝑖 ) = 𝑦𝑦(𝑥𝑥𝑖𝑖 ) − 𝑦𝑦(𝑥𝑥𝑖𝑖 ) =F(𝑥𝑥𝑖𝑖 ,𝑦𝑦(𝑥𝑥𝑖𝑖 ))
𝑖𝑖
ℎ2
Alors 𝑦𝑦(𝑥𝑥𝑖𝑖 + ℎ) = 𝑦𝑦(𝑥𝑥𝑖𝑖 ) + h ∗ y′ (𝑥𝑥𝑖𝑖 ) + 𝐹𝐹 ′ (𝑥𝑥𝑥𝑥, 𝑦𝑦(𝑥𝑥𝑖𝑖 ))
2
2𝑥𝑥 2𝑥𝑥
Avec 𝐹𝐹 ′(𝑥𝑥, 𝑦𝑦(𝑥𝑥)) = −2/𝑦𝑦 + �1 + � ∗ (𝑦𝑦 − )
𝑦𝑦 2 𝑦𝑦
34
Analyse Numérique L. Izidi
35
Analyse Numérique L. Izidi
Euler
1,8
Taylor
RK2
RK4
1,6
Analytique
Soulution de l'EDPs
1,4
1,2
1,0
Il est clair que la méthode de Runge Kutta d’ordre 4 est la plus précise pour la résolution des
équations différentielles.
36
Analyse Numérique L. Izidi
Programme de calcul
program differentiel
REAL EUL,TAY,RG2,RG4,tt,a,b,y,ana
INTEGER n
write (*,*)'donner la solution: Yo='
read (*,*) y
write (*,*)'donner le point initial: a'
read (*,*) a
write (*,*)'donner le piont final: b'
read (*,*)b
write (*,*)'donner le nbr d interval: n'
read (*,*)n
c initialisation
EUL=Y
TAY=Y
RG2=Y
RG4=Y
tt=a
h=(b-a)/n
write (*,*)' EULER TAYLOR KUTTA 2 KUTTA 4'
do i=1,n,1
EUL=EUL+h*f(EUL,t)
TAY=TAY+h*f(TAY,t)+((h**2)/2)*(f1(TAY,t)+(f2(TAY,t)*f(TAY,t)))
p11=f(t,RG2)
p22=f(t+h,RG2+h*p11)
RG2=RG2+(h/2)*(p11+p22)
p1=f(t,RG4)
p2=f(t+(h/2),RG4+(h/2)*p1)
p3=f(t+(h/2),RG4+(h/2)*p2)
p4=f(t+h,RG4+h*p3)
RG4=RG4+(h/6)*(p1+2*p2+2*p3+p4)
t=t+h
write (*,*)EUL,TAY,RG2,RG4
enddo
ana=2*exp(b)-b-1
write (*,*) ' '
write(*,*) 'la solution analytique=',ana
ereul=abs(ana-eul)
ertay=abs(ana-tay)
errg2=abs(ana-rg2)
errg4=abs(ana-rg4)
akeul=ereul/h
aktay=ertay/h**2
akrg2=errg2/h**2
akrg4=errg4/h**4
write (*,*) ' les erreurs '
write(*,23) EREUL,ERTAY,ERRG2,ERRG4
write(*,23) akEUL,akTAY,akRG2,akRG4
23 format(8x, F8.6,8X,F8.6,8X,F8.6,8X,F8.6)
end
function f(y,t)
f=y+t
return
end
function f1(y,t)
z=y+t
f1=1.
return
end
function f2(y,t)
z=t+y
f2=1.
return
end
37
Analyse Numérique L. Izidi
1. Introduction
Une équation est dite linéaire si chacun de ses termes a au plus une variable et chaque variable
apparait à la puissance d’ordre un.
Exemple :
2x + y – 6z = 4 est linéaire
2xy + y - 7 = 2 est non linéaire
2
2x +y - 7 = 2 est non linéaire
38
Analyse Numérique L. Izidi
′
′
𝑎𝑎11
′
𝑎𝑎21 ′
𝑎𝑎11 ′
𝑎𝑎11 … 𝑎𝑎11 𝑥𝑥1 𝑏𝑏1′
′
′
⎛ 0 𝑎𝑎22 𝑎𝑎23
′ ′
𝑎𝑎24 … 𝑎𝑎2𝑛𝑛 ⎞ 𝑥𝑥2 ⎛ 𝑏𝑏2′ ⎞
… ′ ⎛𝑥𝑥 ⎞ ′
⎜ 0
′ 𝑎𝑎3𝑛𝑛 ⎟ ⎜ 3 ⎟ = ⎜𝑏𝑏3 ⎟
′ 𝑎𝑎34
0 𝑎𝑎33
…
⎜ 0 0 0 ′
𝑎𝑎44 ′
𝑎𝑎4𝑛𝑛 ⎟ ⎜𝑥𝑥4 ⎟ ⎜𝑏𝑏4′ ⎟
⋮ ⋮ ⋮
⋮ ⋮ ⋮ ⋮ ⋮
⋯ ′ ⎠ ⎝𝑥𝑥𝑛𝑛 ⎠
⎝ 0 0 0 0 𝑎𝑎𝑛𝑛𝑛𝑛 ⎝𝑏𝑏𝑛𝑛′ ⎠
La solution X (x1, x2, x3, …, xn) sera par la suite aisément calculée. Il suffit de calculer
𝑏𝑏 ′
𝑥𝑥𝑛𝑛 = ′𝑛𝑛 puis de remplacer la valeur de 𝑥𝑥𝑛𝑛 dans le calcul de 𝑥𝑥𝑛𝑛−1 .
𝑎𝑎𝑛𝑛𝑛𝑛
(𝑏𝑏𝑛𝑛′ −1 −. 𝑎𝑎 𝑛𝑛𝑛𝑛
′ 𝑥𝑥 )
𝑛𝑛
𝑥𝑥𝑛𝑛 −1 = et ainsi de suite on remonte dans le calcul de 𝑥𝑥𝑛𝑛 , 𝑥𝑥𝑛𝑛−1 , 𝑥𝑥𝑛𝑛−2 , 𝑥𝑥𝑛𝑛−3
𝑎𝑎 𝑛𝑛 ,𝑛𝑛 −1
39
Analyse Numérique L. Izidi
Exercice
A = (D − L) − U
(D − L)Xk+1 = UXk + B
40
Analyse Numérique L. Izidi
avec
𝑎𝑎11 0 0 0 … 0
0 𝑎𝑎22 0 0 … 0
⎛ 0 𝑎𝑎 0 … 0⎞
0 33
D =⎜ 0
⎜ 0 0 𝑎𝑎44 … 0⎟⎟
⋮ ⋮ ⋮ ⋮ ⋮ ⋮
⎝ 0 0 0 0 ⋯ 0⎠
0 0 0 0 … 0
−𝑎𝑎 0 0 0 … 0
⎛−𝑎𝑎21 −𝑎𝑎32 0 0 … 0⎞
31
𝐿𝐿 = ⎜−𝑎𝑎
⎜ 41 −𝑎𝑎 42 −𝑎𝑎 43 0 … 0⎟⎟
⋮ ⋮ ⋮ ⋮ ⋮ ⋮
⎝−𝑎𝑎𝑛𝑛1 −𝑎𝑎𝑛𝑛2 −𝑎𝑎𝑛𝑛3 −𝑎𝑎𝑛𝑛4 ⋯ 0⎠
−1
𝐷𝐷𝑖𝑖,𝑖𝑖 = 1�𝑎𝑎𝑖𝑖,𝑖𝑖 est la matrice inverse de D.
Les éléments 𝑎𝑎𝑖𝑖,𝑖𝑖 de la matrice A sont appelés des Pivots. La condition suffisante pour que le
processus de gauss converge vers une solution est : 𝑎𝑎𝑖𝑖,𝑖𝑖 ≥ ∑𝑛𝑛𝑗𝑗=1 𝑎𝑎𝑖𝑖,𝑗𝑗
41
Analyse Numérique L. Izidi
real a(1000,1001),m(1000,1000)
real b(1000),bb(1000),x(1000),w,s
do i=1,N
do j=1,N
a(i,j)=m(i,j)
enddo
a(i,N+1)=b(i)
enddo
!x(N)=a(N,N+1)/a(N,N)
do i=N,1,-1
s=0.0
do j=1,N
s=s+(a(i,j))*x(j)
enddo
x(i)=(a(i,N+1)-s)/a(i,i)
enddo
do i=1,N
s=0.0
do j=1,N
s=s+m(i,j)*x(j)
enddo
bb(i)=s
enddo
! affichage de b et b'
42
Analyse Numérique L. Izidi
! réarrangement
do k=1,N
s=0.0
do j=1,N
if(j.ne.k)s=s+a(k,j)
enddo
if(s.gt.a(k,k))then
! rechercher une ligne i qui sera permutée avec la ligne K
do i=K+1,N
s=0.0
do j=1,N
if(j.ne.k)s=s+a(i,j)
enddo
if(s.le.a(i,k))then
tt=b(i)
b(i)=b(k)
b(k)=tt
do j=1,N
tt=a(k,j)
a(k,j)=a(i,j)
a(i,j)=tt
enddo
goto 100
endif
enddo
100 endif
enddo
print *,'systeme rearange'
do i=1,N
write(*,*)(a(i,j),j=1,N)
write(*,*)b(i)
enddo
! boucle principale
do i=1,N
x(i)=0.0
enddo
do k=1,kmax
big=0.0
do i=1,N
s=0.0
if(i.gt.1)then
do j=1,i-1
s=s+a(i,j)*x(j)
enddo
if(j.eq.N-1)goto 30
endif
do j=i+1,N
s=s+a(i,j)*x(j)
enddo
30 temp=(1.0/a(i,i))*(b(i)-s)
if(abs(temp-x(i)).gt.big)big=abs(temp-x(i))
x(i)=temp
enddo
if(big.le.eps)then
print *,' système convergent'
goto 40
endif
if(k.gt.kmax)then
print *,'système non convergent '
goto 40
endif
enddo ! fin de la boucle itération K
43
Analyse Numérique L. Izidi
Exercices
Méthode de Gauss :
2 5 8 1
A= 6 7 3 B= 2
9 2 4 3
0 5 8 1
A= 6 1 3 B= 2
9 2 4 3
Expliquez le résultat, que doit vérifier la matrice A pour éviter cette erreur.
2 5 8 1
A= 6 7 3 B= 2
9 2 4 3
2- Calculer l’écart entre B ancien et B nouveau. Qu’appelle –t-on cet écart : erreur d’arrondi
ou de troncature ?
3- Comparer ce résultat avec celui de Gauss.
4- Exécutez le programme de Gauss Seidel pour ε vaut respectivement 0.01, 0.001 , 0.0001,
0.00001 et iter= 200 000. Puis ré-exécutez le même programme pour iter vaut
respectivement 100, 200, 1000, 20000, 100000 et ε = 0.00001 (porter sur la feuille les valeurs
de X, B_ancien et B_nouveau).
5- Que peut on déduire sur l’évolution de l’écart entre B_ancien et B_nouveau par rapport à ε
et à iter.
6- reprenant maintenant le programme source de la méthode de Gauss Seidel
a/ dresser l’organigramme de cet partie (réarrangement de la matrice A)
b/ qu’elle est l’utilité de la partie réarrangement dans ce programme. Expliquer brièvement
son principe (d’après le programme).
44
Analyse Numérique L. Izidi
45
Analyse Numérique L. Izidi
3.00000000000
6.00000000000 7.00000000000
3.00000000000
2.00000000000
2.00000000000 5.00000000000
8.00000000000
1.00000000000
système convergent
le vecteur solution:
0.313564383229 1.694481437490E-02
3.601839520837E-02
ancien b :
3.00000000000 2.00000000000
1.00000000000
nouveau b :
3.00004265865 2.10805518563
1.00000000000
46
Analyse Numérique L. Izidi
Contrôle continu
Sujet N°01
Exercice 2 :
1 2 3
A1=∫0 𝑓𝑓(𝑥𝑥)𝑑𝑑𝑑𝑑 ; A2=∫0 𝑓𝑓(𝑥𝑥)𝑑𝑑𝑑𝑑 ; A3=∫0 𝑓𝑓(𝑥𝑥)𝑑𝑑𝑑𝑑
x 1 2 3
G(x) A1 A2 A3
Exercice 2 :
Pourquoi la méthode de Simpson est généralement plus exacte que la méthode des trapèzes ?
Ecrire l’algorithme de la méthode des trapèzes.
47
Analyse Numérique L. Izidi
Corrigé de l’exercice 1
1
h=0.5 ; f(x) = 𝑥𝑥 2 ; I(x) = 𝑥𝑥 3 avec I(x) la primitive de f(x).
3
1.1 Calcul numérique des intégrales A1, A2, A3 par la méthode des trapèzes :
𝑏𝑏 ℎ
Formule des trapèzes : ∫𝑎𝑎 𝑓𝑓 (𝑥𝑥 ) = 2 (𝑓𝑓 (𝑎𝑎) + 𝑓𝑓(𝑏𝑏)) + ℎ ∑𝑛𝑛−1
𝑖𝑖=1 𝑓𝑓(𝑥𝑥𝑥𝑥 )
1 0.5
A1=∫0 𝑓𝑓 (𝑥𝑥 ) = �𝑓𝑓(0) + 𝑓𝑓 (1)� + 0.5(𝑓𝑓(0.5)) = 0.375
2
2 0.5
A2=∫0 𝑓𝑓 (𝑥𝑥 ) = �𝑓𝑓(0) + 𝑓𝑓 (2)� + 0.5(𝑓𝑓 (0.5) + 𝑓𝑓 (1) + 𝑓𝑓 (1.5)) =2.75
2
3 0.5
A3=∫0 𝑓𝑓 (𝑥𝑥 ) = �𝑓𝑓(0) + 𝑓𝑓 (3)� + 0.5�𝑓𝑓 (0.5) + 𝑓𝑓 (1) + 𝑓𝑓 (1.5) + 𝑓𝑓 (2) + 𝑓𝑓 (2.5)� = 9.125
2
2. Comparaison
En terme d’erreur absolue :
err_A1= 0.042
err_A2=0.084
err_A3=0.125
0.042
Erreur commise dans chaque trapèze : err_par_trapèze_A1 = = 0.021
2
0.084
err_par_trapèze_A2 = = 0.021
4
0.125
err_par_trapèze_A3 = = 0.0208
6
Erreur dans chaque trapèze est stable vu que les valeurs de f(x) et I(x) sont exactes
x 1 2 3
G(x) 0.375 2.75 9.125
48
Analyse Numérique L. Izidi
𝑓𝑓(𝑥𝑥0−ℎ)−2𝑓𝑓(𝑥𝑥0)+𝑓𝑓(𝑥𝑥0+ℎ) 𝑓𝑓(2−1)−2𝑓𝑓(2)+𝑓𝑓(2+1)
𝑔𝑔′′ (𝑥𝑥0) = ℎ2
⇒ 𝑔𝑔′′ (2) = 12
0.375−2∗2.75+9.125
=
1
Corrigé de l’exercice 2
1- La méthode de Simpson est généralement plus exacte que la méthode des trapèzes puisque
elle fait intervenir 3 points (x i -h, x i , x i +h) dans le calcul de chaque aire partielle Ai en
approximant la fonction à intégrer entre l’intervalle [x i -h, x i +h] par une parabole
(interpolation quadratique).
Par contre, la méthode des trapèzes fait intervenir juste 2 points (x i et x i +h) dans le calcul de
chaque aire partielle Ai en approximant la fonction à intégrer entre l’intervalle [x i , x i +h] par
une droite (interpolation linéaire)
début
Lire(a,b,n)
h=(b-a)/n
som←h/2*(f(a)+f(b))
s←0.0
pour i←1,n-1,1
s←s+f(a+i*h)
FinPour
som←som+h*s
écrire(‘l″intégrale de f entre’, a , ‘ et ‘, b , ‘ est = ‘, som)
fin
fonction f(x)
---- corps de la fonction f
Fin
49
Analyse Numérique L. Izidi
Sujet N°02
Exercice 1 :
4. Calculer les valeurs numériques f’(1), f’(2), f’ (2.05), f’ (2.5), avec le schéma excentré
en avant (utiliser le schéma excentré en arrière pour 2.5).
5. Calculer l’erreur absolue commise dans le calcul de chaque dérivée.
6. A quel xi correspond la plus grande valeur d’erreur absolue ? Pourquoi ?
Exercice 2 :
50
Analyse Numérique L. Izidi
Corrigé de l’exercice 1
1- La condition suffisante de convergence de la méthode de newton exige que f(𝑥𝑥0 )f’’(𝑥𝑥0 )>0.
Pour 𝑥𝑥0 =1 : f(1)f’’(1)= (-3)*(2) =-6<0. On ne peut rien dire. Le processus de résolution peut
converger comme il peut diverger.
2-
𝑥𝑥0 =1
𝑓𝑓 (𝑥𝑥 𝑖𝑖 )
Processus itératif de newton 𝑥𝑥𝑖𝑖+1 = 𝑥𝑥𝑖𝑖 −
𝑓𝑓 ′ (𝑥𝑥 𝑖𝑖 )
𝑥𝑥 𝑖𝑖 2 −4
⇒ 𝑥𝑥𝑖𝑖+1 =𝑥𝑥𝑖𝑖 − 2∗𝑥𝑥 𝑖𝑖
Teste d’arrêt : |x i+1 -x i |≤ ε (ε = 0.1)
Par application on obtient le tableau suivant avec comme racine approché x n=2.0006
3-
x 1 2.0 2.05 2.5
f(x) -3 0 0.2025 2.25
51
Analyse Numérique L. Izidi
Le calcul exact des valeurs des dérivées : f’(1)=2 ; f’(2)=4 ; f’(2.05)=4.1 ; f’(2.5)=5
5- erreur absolue commise dans le calcul de :
6- La plus grande erreur absolue a été commise lors du calcul de f’(1) parce que la distance
qui sépare le point en question (1) et son point adjacent (2) est =1 et est la plus grande
distance (h le plus élevé) comparé aux autres résultats
Corrigé de l’exercice 2
Le choix du pas de discrétisation h est très critique. Son influence est directe et importante
dans la précision des résultats obtenus par les différents schémas de calcul des dérivées
numériques
- Si h est trop grand, les résultats s’éloignent des résultats exacts
- Si h est trop petit, l’erreur d’approximation de f’ s’accroit par la présence des erreurs
d’arrondi (dans le calcul manuel ou par ordinateur à simple précision).
Exercice 1 :
1
Soit la fonction 𝑓𝑓(𝑥𝑥) =
𝑥𝑥
1. Déterminer le polynôme de Lagrange P(x) qui interpole f par les 3 points d’appuis
d’abscisses 1, 2, 3.
X 1 1.5 2 2.5 3
P(x)
Exercice 2 :
Soit le problème de Cauchy suivant :
𝑦𝑦(1) = 1
1
1. Montrer que 𝑦𝑦(𝑥𝑥 ) = vérifie le problème de Cauchy posé.
𝑥𝑥
53
Analyse Numérique L. Izidi
Corrigé de l’Examen
Corrigé de l’exercice 1 :
1
Soit 𝑓𝑓(𝑥𝑥) =
𝑥𝑥
Interpolation de Lagrange :
avec
𝑛𝑛
(𝑥𝑥 − 𝑥𝑥𝑗𝑗 )
𝐿𝐿𝑖𝑖 (𝑥𝑥 ) = �
(𝑥𝑥𝑖𝑖 − 𝑥𝑥𝑗𝑗 )
𝑗𝑗 =0,𝑗𝑗 ≠𝑖𝑖
1 1
L 0 = (𝑥𝑥 − 2)(𝑥𝑥 − 3) ; L 1 = -1(𝑥𝑥 − 1)(𝑥𝑥 − 3) ; L 2 =2 (𝑥𝑥 − 1)(𝑥𝑥 − 2)
2
𝟏𝟏 𝟏𝟏𝟏𝟏
P 2 (x)= 𝑓𝑓 (𝑥𝑥0 )𝑙𝑙0 + 𝑓𝑓(𝑥𝑥1 )𝑙𝑙1 + 𝑓𝑓 (𝑥𝑥2 )𝑙𝑙2 ; 𝑷𝑷𝟐𝟐 (𝐱𝐱) = 𝒙𝒙𝟐𝟐 − 𝒙𝒙 +
𝟔𝟔 𝟔𝟔
4- Intégration numérique :
X 1 1.5 2 2.5 3
P(x) 1 0.70833 0.5 0.375 0.333
n= 4 et h =0.5
𝑏𝑏 𝑛𝑛−1
ℎ
� 𝑓𝑓 (𝑥𝑥 ) = �𝑓𝑓(𝑎𝑎) + 𝑓𝑓 (𝑏𝑏)� + ℎ � 𝑓𝑓 (𝑎𝑎 + 𝑖𝑖 ∗ ℎ) ⇒
𝑎𝑎 2
𝑖𝑖=1
3 3
0.5
� 𝑃𝑃2 (x) = ( 𝑃𝑃2 (1) + 𝑃𝑃2 (3)) + 0.5 � 𝑓𝑓(1 + 𝑖𝑖 ∗ 0.5)
1 2
𝑖𝑖=1
54
Analyse Numérique L. Izidi
0.5
( 𝑃𝑃2 (1) + 𝑃𝑃2 (3)) + 0.5(𝑃𝑃2 (1.5) + 𝑃𝑃2 (2) + 𝑃𝑃2 (2.5))
2
𝟑𝟑
∫𝟏𝟏 𝑷𝑷𝟐𝟐 (𝒙𝒙) = 𝟏𝟏. 𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏
3 3
5- 2 résultats analytiques : un tiré de ∫1 𝑓𝑓(𝑥𝑥) et un autre tiré de ∫1 𝑃𝑃(𝑥𝑥)
3
� 𝑓𝑓(𝑥𝑥) = ln(3) − ln(1) = 1.09861 − 0 = 𝟏𝟏. 𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎
1
1 3
𝑥𝑥 − 12 𝑥𝑥2 + 11
3
∫1 𝑃𝑃2 (𝑥𝑥 ) = 𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃2(3) − 𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃2(1) 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎 𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃2(𝑥𝑥) = 18 6
𝑥𝑥
3
� 𝑃𝑃2 (𝑥𝑥 ) = 2.5 − 1.38889 = 𝟏𝟏. 𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏
1
La valeur numérique de l’intégrale de P 2 (x) (1.12499) calculée par la méthode des Trapèzes
3 3
est proche de ∫1 𝑃𝑃2 (𝑥𝑥 ) 𝑞𝑞𝑞𝑞𝑞𝑞 ∫1 𝑓𝑓(𝑥𝑥) (résultat logique)
Corrigé de l’exercice 2 :
Equation différentielle
𝑦𝑦(1) = 1
1 1 1 1
1- si 𝑦𝑦(𝑥𝑥) = alors 𝑦𝑦 ′ (𝑥𝑥) = − = - ( 𝑥𝑥 )2 = −𝑦𝑦 2 (𝑥𝑥 ) donc y(x)= 𝑥𝑥 vérifie
𝑥𝑥 𝑥𝑥 2
𝑚𝑚 1 +𝑚𝑚 2
Puis 𝑦𝑦(𝑥𝑥𝑖𝑖 + ℎ) = 𝑦𝑦(𝑥𝑥𝑖𝑖 ) + h ∗ ( )
2
En appliquant cette méthode, on obtient sur [1.0 ,1.6] avec pas 0.2 :
4- Dérivation numérique :
56
Analyse Numérique L. Izidi
Durée : 2h
Question de Cours :
Exercice 1 :
𝟎𝟎.𝟔𝟔
1- Calculer par la méthode de Simpson l’intégrale suivante A1=∫𝟎𝟎.𝟒𝟒 𝒇𝒇(𝒙𝒙)𝒅𝒅𝒅𝒅 avec n=4.
2- Comparer le résultat obtenu à la valeur analytique exacte.
Exercice 2 :
Exercice 3 :
𝑦𝑦 ′ = −2𝑥𝑥𝑦𝑦 2
𝑦𝑦(1) = 1
1
1- Vérifier que 𝑦𝑦(𝑥𝑥 ) = est la solution exacte au problème posé.
𝑥𝑥 2
2- Calculer les estimations de y sur l’intervalle [1 , 1.75] avec h=0.25 par la méthode
d’Euler.
3- Comparer les estimations obtenues aux valeurs analytiques exactes.
57