Manuel TP AN-1
Manuel TP AN-1
Manuel TP AN-1
Numérique
Année Universitaire 2023 - 2024
Pr Hamid El Ouardi
Email : [email protected]
Les élèves ingénieurs sont invités à réaliser les principaux résultats du cours d’Analyse nu-
mérique, à mettre en oeuvre les différentes méthodes, et à analyser les principaux résultats
obtenus.
1 Introduction
Dans ce TP on appliquera les notions vues dans le cours d’Analyse Numérique sur la ré-
solution numérique des équations non linéaires. En particulier, vous implémenterez différents
algorithmes pour des équations non linéaires. Les calculs seront effectués à l’aide de scripts exé-
cutés dans l’environnement Matlab. Pour chaque partie du TP, des squelettes de programmes
vous sont fournis, à vous de les compléter pour répondre aux questions.
2 Travail à faire :
1) Représenter graphiquement les fonctions suivantes :
a) f ( x) = exp( x) − 2 cos( x), dans l’intervalle [−1, 1] .
h i
b) g( x) = x4 − 10x3 + 35x2 − 50x + 24, dans l’intervalle 25 , 72 .
√
c) h( x) = 2x − sin( x) + π6 − 23 , dans les intervalles − π2 , π3 et π3 , π .
3 Pr Hamid El Ouardi
3. PROGRAMMES 4
3 Programmes
clf ;
x=-1 :0.1 :1 ;
f=exp(x)-2*cos(x) ;
figure(1) ;
plot(x,f) ; grid on ;
title(’Fonction : f(x)=exp(x)-2.cos(x)’) ;
clf ;
x=-1 :0.1 :1 ;
f=exp(x)-2*cos(x) ;
title(’Fonction : f(x)=exp(x)-2.cos(x)’) ;
clear all ;
clc ;
x(1)= input(’Donner la valeur initiale x(1) : \n′ );
iter=1 ;
e=1e-10 ;
n=5000 ;
for i=2 :n
f=exp(x(i-1))-2*cos(x(i-1)) ;
diff=exp(x(i-1))+2*sin(x(i-1)) ;
x(i)=x(i-1)-f/diff ;
if abs(x(i)-x(i-1))<=e
break
xp = x(i) ;
3. PROGRAMMES 5
4 Introduction
Dans ce TP on appliquera les notions vues dans le cours du chapitre 2 sur l’interpolation
linéaires. En particulier, vous implementers l’approximation par les polynômes de Lagrange et
les polynômes de Newton. Les calculs seront effectués à l’aide de scripts exécutés avec Matlab.
∏ (x − x j )
j ̸ =i
Li ( x ) = .
∏ ( xi − x j )
j ̸ =i
5 Questions :
Les masses volumiques du matériau pour différentes températures sont données par le ta-
bleau ci-dessous :
6 Pr Hamid El Ouardi
6. SCRIPTS ET RÉSULTATS 7
6 Scripts et résultats
[Exemple de code du polynôme de Lagrange]
Programme : polylag.m
clc ;
clear ;
T=[94 205 371] ;
R=[929 902 860] ;
Ti=[251 305 800] ;
Ri=lag(T,R,Ti)
La fonction ‘lag.m’ est un sous programme permettant de donner l’interpolation de La-
grange. La liste de ce sous programme est :
Fonction : lag.m
function Ri = lag(T,R,Ti)
Ri=zeros(size(Ti)) ;
n=length(R) ;
for i=1 :n
y=ones(size(Ti)) ;
for j=1 :n
if i ∼= j
y=y.*(Ti-T(j))/(T(i)-T(j)) ;
end
end
Ri=Ri+y*R(i) ;
end
return
Programme : polyNewt.m
clc ;
clear ;
T=[94 205 371] ;
R=[929 902 860] ;
Ti=[251 305 800] ;
n=length(T) ;
for i=1 :n
6. SCRIPTS ET RÉSULTATS 8
Ri=newtoninterpolation(T,R,Ti(i))
end
Fonction : newtoninterpolation.m
function fp = newtoninterpolation(T,R,Ti)
n = length(T) ;
a(1) = R(1) ;
for k = 1 : n - 1
d(k, 1) = (R(k+1) - R(k))/(T(k+1) - T(k)) ;
end
for j = 2 : n - 1
for k = 1 : n - j
d(k, j) = (d(k+1, j - 1) - d(k, j - 1))/(T(k+j) - T(k)) ;
end
end
for j = 2 : n
a(j) = d(1, j-1) ;
end
Df(1) = 1 ;
c(1) = a(1) ;
for j = 2 : n
Df(j)=(Ti - T(j-1)) .* Df(j-1) ;
c(j) = a(j) .* Df(j) ;
end
fp=sum(c) ;
end
TP3 : Approximation Numérique d’une
intégrale
7 Introduction
Dans ce TP on appliquera les notions vues dans le cours d’Analyse Numérique sur l’approxi-
mation numérique des intégrales. En particulier, vous implémenterez différents algorithmes
pour calculer une valeur approchée d’une intégrale. Les calculs seront effectués à l’aide de
scripts exécutés dans l’environnement Matlab. Pour chaque partie du TP, des squelettes de pro-
grammes vous sont fournis, à vous de les compléter pour répondre aux questions.
b − a n−1
Z b
f ( x)dx ≈ f ( xi ) .
a n i∑ =0
Zb
" ! #
n−1
b−a
f ( x)dx ≈ f ( x0 ) + 2 ∑ f ( xk ) + f ( xn )
2n k=1
a
Zb
b−a
f ( x)dx ≈ [ f ( x0 ) + 4 f ( x1 ) + 2 f ( x2 ) + 4 f ( x2 ) + ...... + f ( xn )]
3n
a
8 Travail à faire :
Soit I l’intégrale définie par :
R2 1 2 √
I= x
0 ( 2 x + 4 + 1 + e )dx.
9 Pr Hamid El Ouardi
8. TRAVAIL À FAIRE : 10
Voici un programme Matlab, qui calcule la valeur approchée de I par l’algorithme des rec-
tangles en fonction de n.
Voici un programme Matlab, qui calcule la valeur approchée de I par l’algorithme des trapèzes
en fonction de n.
Voici un programme Matlab, qui calcule la valeur approchée de I par l’algorithme de Simpson
en fonction de n.
9 Introduction
Dans ce TP on appliquera les notions vues dans le cours d’Analyse Numérique sur la ré-
solution numérique des équations différentielles. En particulier, vous implémenterez différents
algorithmes (Euler, RK2 et RK4). Les calculs seront effectués à l’aide de scripts exécutés dans
l’environnement Matlab. Pour chaque partie du TP, des squelettes de programmes vous sont
fournis, à vous de les compléter pour répondre aux questions.
12 Pr Hamid El Ouardi
11. TRAVAIL À FAIRE : 13
11 Travail à faire :
On considère l’équation différentielle suivante :
′
y (t) + 2y(t) = 4t − 5 + 3 exp(−4t), et 0 ≤ t ≤ 4
y(0) = 1
h = 0, 1
3
1) Vérifier que la solution exacte est y(t) = 6 exp(−2t) − 2 exp(−4t) + 2t − 72 .
2) Écrire et programmer la méthode d’Euler pour déterminer la solution approchée de cette
équation différentielle.
3) Écrire et programmer la méthode de Runge - Kutta d’ordre 2 pour déterminer la solution
approchée de cette équation différentielle.
4) Écrire et programmer la méthode de Runge - Kutta d’ordre 4 pour déterminer la solution
approchée de cette équation différentielle.
5) Tester les différents programmes avec h = 0, 1 ; h = 0, 5 et h = 0, 01.
6) Pour comparer l’erreur commise, tracer les trois courbes des trois solutions approchées
et la courbe de la solution exacte.
Voici un programme Matlab, qui calcule la valeur approchée de l’équation différentielle par
l’algorithme d’Euler avec h = 0, 1.
Voici un programme Matlab, qui calcule la valeur approchée de l’équation différentielle par
l’algorithme de Runge - Kutta d’ordre 2 avec h = 0, 1.
11. TRAVAIL À FAIRE : 14
Voici un programme Matlab, qui calcule la valeur approchée de l’équation différentielle par
l’algorithme de Runge - Kutta d’ordre 4 avec h = 0, 1.
12 Introduction
Dans ce TP on appliquera les notions vues dans le cours du chapitre 5 sur la résolution nu-
mérique des systèmes linéaires. En particulier, vous implémenterez les principales méthodes
(Méthode de Gauss, méthode de Choleski). Les calculs seront effectués à l’aide de scripts exé-
cutés avec Matlab.
13 Questions :
1) Résoudre le système Ax = b, avec
1 4 0 0 9
1 7 2 0 21
A= et b = .
0 −3 3 7 31
0 0 5 15 75
15 Pr Hamid El Ouardi
14. SCRIPTS ET RÉSULTATS 16
14 Scripts et résultats
1) a) Directement avec Matlab :
A=[1 4 0 0 ; 1 7 2 0 ; 0 -3 3 7 ; 0 0 5 15]
1 4 0 0
1 7 2 0
A=
0 −3 3 7
0 0 5 15
>> b = [9 21 31 75]
b=
9 21 31 75
Programme : gauss.m
clear
a = [1 4 0 0 9 ; 1 7 2 0 21 ; 0 -3 3 7 31 ; 0 0 5 15 75] ;
x = [0 0 0 0]’ ;
b(1, :) = a(1, :) ;
b(2, :) = a(2, :)-a(1, :) ;
b(3, :) = a(3, :) ;
b(4, :) = a(4, :)
c(1, :) = b(1, :) ;
c(2, :) = b(2, :) ;
c(3, :) = b(2, :)+b(3, :) ;
c(4, :) = b(4, :)
d(1, :) = c(1, :) ;
d(2, :) = c(2, :) ;
14. SCRIPTS ET RÉSULTATS 17
d(3, :) = c(3, :) ;
d(4, :) = c(4, :) - c(3, :)
x(4) = d(4,5)./d(4,4) ;
x(3) = (d(3,5) - d(3,4).*x(4))./d(3,3) ;
x(2) = (d(2,5) - d(2,3).*x(3))./d(2,2) ;
x(1) = (d(1,5) - d(1,2).*x(2))./d(1,1)
c) Après execution du programme, on obtient :
1 4 0 0 9
1 7 2 0 21
a=
0 −3 3 7 31
0 0 5 15 75
b=
1 4 0 0 9
0 3 2 0 12
0 −3 3 7 31
0 0 5 15 75
1 4 0 0 9
0 3 2 0 12
c=
0 0 5 7 43
0 0 5 15 75
1 4 0 0 9
0 3 2 0 12
d=
0 0 5 7 43
0 0 0 8 32
1
2
x=
3
4
2) description
a) Directement avec Matlab
A=[0.9 0.06 -0.39 -0.24 ; 0.06 1.604 0.134 0.464 ; -0.39 0.134 2.685 0.802 ; -0.24
0.464 0.802 1.977]
0.9000 0.0600 −0.3900 −0.2400
0.0600 1.6040 0.1340 0.4640
A=
−0.3900 0.1340 2.6850 0.8020
−0.2400 0.4640 0.8020 1.9770
b=
0.0630 -0.6358 0.5937 -0.1907
0.2000
−0.4000
x=
0.3000
−0.1000
b) A=[0.9 0.06 -0.39 -0.24 ; 0.06 1.604 0.134 0.464 ; -0.39 0.134 2.685 0.802 ; -0.24 0.464
0.802 1.977]
Programme : choleski.m
M = [0.9 0.06 − 0.39 − 0.24;
0.06 1.604 0.134 0.464;
− 0.39 0.134 2.685 0.802;
− 0.24 0.464 0.802 1.977] ;
L = chol( M )’
n = length( M ) ;
L = zeros( n, n ) ;
for i = 1 :n
L(i, i) = sqrt(M(i, i) - L(i, :)*L(i, :)’)
for j=(i + 1) :n
L(j, i) = (M(j, i) - L(i, :)*L(j , :)’)/L(i, i)
end
14. SCRIPTS ET RÉSULTATS 19
end
b = [0.063, -0.6358, 0.5937, -0.1907]’
y = L \b
x = L’ \ y
Après exécution du programme, on obtient :
0.9487 0 0 0
0.0632 1.2649 0 0
L=
−0.4111 0.1265 1.5811 0
−0.2530 0.3795 0.4111 1.2649
0.9000 0.0600 −0.3900 −0.2400
0.0600 1.6040 0.1340 0.4640
M=
−0.3900 0.1340 2.6850 0.8020
−0.2400 0.4640 0.8020 1.9770
0.9487 0 0 0
0 0 0 0
L=
0 0 0 0
0 0 0 0
0.9487 0 0 0
0.0632 0 0 0
L= .
−0.4111 0 0 0
0 0 0 0
.
.
0.9487 0 0 0
0.0632 1.2649 0 0
L=
−0.4111 0.1265 1.5811 0
−0.2530 0.3795 0.4111 1.2649
0.0630 0.0664 0.2000
−0.6358 −0.5060 −0.4000
b= y= et x =
0.5937 0.4332 0.3000
−0.1907 −0.1265 −0.1000
a) Directement avec Matlab,
A=[4 -1 0 0 0 ; -1 4 -1 0 0 ; 0 -1 4 -1 0 ; 0 0 -1 4 -1 ; 0 0 0 -1 4]
4 −1 0 0 0
−1 4 −1 0 0
A = 0 −1 4 −1 0
0 0 −1 4 −1
0 0 0 −1 4
>> b = [100 50 50 1150 2300]
b=
100 50 50 1150 2300
40.1923
60.7692
x = 152.8846
500.7692
700.1923