Vous êtes sur la page 1sur 16

École Nationale Supérieure d’Électricité et de Mécanique

Documents Pédagogiques : Manuels des Travaux Pratiques

Année Universitaire 2020 - 2021

Pr Hamid El Ouardi

Email : h.elouardi@ensem.ac.ma

- TP1 : Méthodes numériques de résolution de f (x) = 0


- TP2 : Approximation d’une intégrale et Interpolation linéaire
- TP3 : Résolution numérique d’une équation différentielle
- TP4 : Résolution directe des systèmes linéaires
2

Le manuel de Travaux Pratiques est composé de 16 pages et de quatre sujets indépendants.

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.

Objectifs des travaux pratiques d’Analyse Numérique

+ Se familiariser avec le Logiciel Matlab ;

+ Implémenter et résoudre des algorithmes ;

+ Apprendre à tracer des courbes et visualiser les résultats ;

+ Programmation de la méthode de Newton-Raphson et de la sécante ;

+ Visualiser les résultats ;

+ Programmation des approximations des intégrales ;

+ Programmation de l’intérpolation de Lagrange et de Newton ;

+ Approximation d’une équation différentielle (Euler, RK2, RK4) ;

+ Résolution numérique des systèmes linéaires Ax = b par les méthodes de Gauss et de


Cholesky.

Informations pour les élèves ingénieurs


— Chaque binôme effectue 4 séances de TP (4h par séance).
— Chaque séance est notée sur 4 points, afin d’avoir une note de TP à la fin des travaux
pratiques d’Analyse Numérique.
— Chaque binôme devra rédiger un compte-rendu de TP dans lequel, il doit expliciter les
méthodes employées, présenter et commenter les résultats obtenus.
— La qualité de la rédaction, de synthèse, de l’analyse des résultats obtenus sont des critères
importants pour la note.
— Vous devez rendre un compte rendu par binôme (par mail, format PDF). L’objet du
mail sera [AN TPi Nom1 Nom2] (i=1,2,3,4) avec Nom1 et Nom2 les noms du binôme.
Le nom du fichier sera AN_tpi_nom1_nom2.pdf. Mon adresse mail est la suivante :
h.elouardi@ensem.ac.ma
— Ce compte rendu résumera votre travail, et inclura notamment : les parties de code que
vous avez modifiées ou écrites ; le lien entre vos résultats et les démonstrations du cours
du Pr Hamid El Ouardi.
TP1 : Méthode de Newton-Raphson

3 Pr Hamid El Ouardi
4

— Apprendre à tracer des courbes en dimension 1 et dimension 2 ;


— Apprendre à utiliser la méthode de Newton-Raphson ;

0.1 Courbes en 1D et 2D
1. Représenter graphiquemnt la fonction

f ( x) = exp( x) − 2 cos( x)

dans l’intervalle [−1, 1] .


2. Représenter graphiquemnt la fonction


x π 3
f ( x) = − sin( x) + −
2 6 2

et dans − π2 , π
  
dans 3,π 3
3. Représenter graphiquement les fonctions

f ( x, y) = x2 − x + y2
g( x, y) = x2 − y − y2

dans [−1, 1]2 .

0.2 Méthode de Newton


1. Résoudre numériquement en utilisant la méthode de Newton l’équation

exp( x) − 2 cos( x) = 0

dans [−1, 1] .
2. Résoudre numériquement en utilisant la méthode de Newton l’équation


x π 3
f ( x) = − sin( x) + −
2 6 2

et dans − π2 , π
  
dans 3,π 3

0.3 Algorithmes
Si nous posons F ( x) = f ( x) − x, le problème est de trouver x tel que F ( x) = 0 et l’algorithme
F(x )
s’écrit xn+1 = xn − F0 ( xn ) qui est la formulation de la méthode de Newton - Raphson.
n
Choisir x0 et déterminer la suite ( xn ) par la relation

F(x )
xn+1 = xn − F0 ( xn ) , n = 0, 1.....

n
5

0.4 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)’) ;
clear all ;
clc ;
x(1)= input(’Donner la valeur initiale x(1) : \n0 );
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
xp = x(i) ;
fprintf(’xp =%f\n,0 x(i )0 );
end
end
+++++++++++++++++++++++++++++++++++++
x=-1 :0.1 :1 ;
y=x ;
[x,y]=meshgrid(x,y) ;
f=x.2 + y.2 − x; g = x.2 − y.2 − y;
figure(1) ;
mesh(f) ;
grid on ; hold on ;
mesh(g) ;
title(’Courbes f(x,y) et g(x,y)’) ;
xlabel(’x’) ;
ylabel(’y’) ;zlabel(’f(x,y) et g(x,y)’) ;
hold off ;
++++++++++++++++++++++++++++++++++++++++++++++++++++
x=-1 :0.1 :1 ;
y=x ;
[x,y]=meshgrid(x,y) ;
f=x.2 + y.2 − x; g = x.2 − y.2 − y;
figure(1) ;
mesh(f) ;
grid on ; hold on ;
mesh(g) ;
title(’Courbes f(x,y) et g(x,y)’) ;
xlabel(’x’) ;
ylabel(’y’) ;zlabel(’f(x,y) et g(x,y)’) ;
hold off ;
6

figure(2) ;
plot(f) ;
hold on ;plot(g) ;
grid on ; title(’Intersection de f et g’) ;
xlabel(’x’) ;
ylabel(’y’) ;
axis([0 20 -0.5 0.5]) ;
gtext(’f(x,y)’) ;
gtext(’g(x,y)’) ;
TP2 : Approximation Numérique
d’une intégrale et Intérpolation
linéaire

7 Pr Hamid El Ouardi
8

0.5 Approximation des Intégrales


R2√
On note l’intégrale I = 0 1 + x2 dx.

On donne la valeur exacte de I = 2, 9578857151.


1. Utiliser la méthode des trapèzes pour donner une valeur approchée de I.
2. Utiliser la méthode de Simpson pour donner une valeur approchée de I.
3. Déterminer les erreurs de ces méthodes.

0.6 Algorithmes
Par la formule de trapèzes :

Zb
" ! #
n−1
b−a
f ( x)dx ≈ f ( x0 ) + 2 ∑ f ( xk ) + f ( xn )
2n k=1
a

Par la formule de Simpson :

Zb
b−a
f ( x)dx ≈ [ f ( x0 ) + 4 f ( x1 ) + 2 f ( x2 ) + 4 f ( x2 ) + ...... + f ( xn )]
3n
a
PROGRAMME TRAPEZE
clc ; clear ;
Iexact=2,9578857151 ;
a=0 ;b=2 ;
fprintf(’\n MthodeTrapzes\n0 );
fprintf(’\nn\t\tI \tPourc. erreur relat.\n0 );
fprintf(’———————————————\n0 );
n=1 ;
for k=1 :10
n=2*n ;
h=(b-a)/n ;
i=1 :n+1 ;
x=a+(i-1)*h ;
f=sqrt(1+x.2 );
I=(h/2)*(2*sum(f)-f(1)-f(length(f))) ;
erreur=abs(Iexact-I)/Iexact ;
fprintf(’%d\t%10.5 f \t%10.8 f \n0 , n, I, erreur);
end

PROGRAMME SIMPSON
clc ; clear ;
Iexact=2,9578857151 ; a=0 ;b=2 ;
fprintf(’\n
MthodedeSimpson\n0 );
fprintf(’\nn\t\tI \tPourc.erreurrelat.\n0 );
fprintf(’———————————————\
n=1 ;
9

for k=1 :4
n=2*n ;
h=(b-a)/n ;
i=1 :n+1 ;
x=a+(i-1)*h ;
f=sqrt(1+x.2 );
I=h/3*(f(1)+4*sum(f(2 :2 :n))+f(n+1)) ;
if n>2
I=I+h/3*2*sum(f(3 :2 :n)) ;
end
erreur=abs(Iexact-I)/Iexact ;
fprintf(’%d\t%10.5 f \t%10.8 f \n0 , n, I, erreur);
end
10

0.7 Intérpolation linéaire


— Apprendre à utiliser l’intérpolation de Lagrange ;

0.8 Algorithme

Résultat : Le polynôme d’interpolation de Lagrange de f aux points xi , i = 0, n distincts de


n
[ a, b] s’écrit Pn ( x) = ∑ f ( xi )Li ( x) où (Li )i=0,n est la base de Lagrange dans Pn .
i =0

∏ (x − x j )
j 6 =i
Li ( x ) = .
∏ ( xi − x j )
j 6 =i

Les masses volumiques du matériau pour différentes températures sont données par le ta-
bleau ci-
dessous :
 
i 1 2 3
 Température T (en ◦ C) 94 205 371 
Masse volumique R(T) : (enkg/m3) 929 902 860
1. Écrire la formule d’interpolation de Lagrange qui permet d’interpoler les différents points
de données précédentes.
2. Trouver les masses volumiques du sodium pour T = 251◦ C, T = 305◦ C et T = 800◦ C
en utilisant l’interpolation de Lagrange.

0.9 Programmes
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 :
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
Il suffit maintenant d’exécuter le programme ‘polylag.m’ pour obtenir les résultats de Ri.
TP3 : Résolution Numérique d’une
équation différentielle

11 Pr Hamid El Ouardi
12

0.10 Méthodes : Euler, RK2 et RK4


On considère l’équation différentielle suivante :
 0
 y (t) + 2y(t) = 3 exp(−4t)
y(0) = 1
h = 0.1 et 0 ≤ t ≤ 4

Travail à faire :
1. Vérifier que la solution exacte est y(t) = 2.5 exp(−2t) − 1.5 exp(−4t).
2. Ecrire et programmer la méthode d’Euler pour déterminer la solution approchée de cette
équation différentielle.
3. Ecrire et programmer la méthode de Runge-Kutta d’ordre 2 pour déterminer la solution
approchée de cette équation différentielle.
4. Ecrire et programmer la méthode de Runge-Kutta d’ordre 4 pour déterminer la solution
approchée de cette équation différentielle.
5. Pour comparer l’erreur commise, tracer les courbes des deux solutions.

0.11 Algorithmes

y0 = f ( x, y( x))


y( x0 ) = y0
On considère une subdivision de [ a, b] en N intervalles égaux xi = a + ih.
L’algorithme d’Euler est

yi +1 = yi + h f ( xi , yi )
y0 donnée

Le schéma classique de Runge - Kutta d’ordre 2 (RK2)


yn+1 = yn + 2h [k1 + k2 ] avec
k1 = f ( xn , yn ), et k2 = f ( xn + h, yn + hk1 ).
Le schéma classique de Runge - Kutta d’ordre 4 (RK4)

h
yn+1 = yn + [k1 + 2k2 + 2k3 + k4 ] avec
6
k1 = f ( xn , yn ),
h h
k2 = f ( xn + , yn + k1 ),
2 2
h h
k3 = f ( xn + , yn + k2 ),
2 2
et k4 = f ( xn + h, yn + hk3 ).
13

0.12 Programmes
%Script de la méthode d’Euler par Matlab.
% Le problème à résoudre est :
%y’(t)+2*y(t)=3*exp(-4*t)
%Note : la solution exacte est
% y(t)=2.5*exp(-2*t)-1.5*exp(-4*t)
h=0.1 ; %h est le pas.
t=0 :h :4 ; %valeur initiale.
clear ystar ; %wipe out old variable.
ystar(1)=1.0 ; %condition initiale.
for i=1 :length(t)-1, %.
k1=3*exp(-4*t(i))-2*ystar(i) ; %Calcul des dérivées ;
ystar(i+1)=ystar(i)+h*k1 ; %Estimation de la nouvelle y ;
end
%solution exacte
y=2.5*exp(-2*t)-1.5*exp(-4*t) ;
%Graphe de la solution.
plot(t,ystar,’b–’,t,y,’r-’) ;
legend(’Approximation’,’Exacte’) ;
title(’Euler Approximation, h=0.01’) ;
xlabel(’Temps’) ;
ylabel(’y*(t), y(t)’) ;
%Print results
for i=1 :length(t)
disp(sprintf(’t=%5.3f, y(t)=%6.4f, y*(t)=%6.4f’,t(i),y(i),ystar(i))) ;
end
%Script de la méthode de Runge Kutta d’ordre 2 par Matlab.
% Le problème à résoudre est :
%y’(t)+2*y(t)=3*exp(-4*t)
%Note : la solution exacte est
% y(t)=2.5*exp(-2*t)-1.5*exp(-4*t)
h=0.1 ; %h est le pas.
t=0 :h :4 ; %valeur initiale.
clear ystar ; %wipe out old variable.
ystar(1)=1.0 ; %condition initiale.
for i=1 :length(t)-1, %.
k1=3*exp(-4*t(i))-2*ystar(i) ;%Calcul des dérivées ;
k2=3*exp(-4*t(i)+h))-2*(ystar(i)+h*k1) ;
ystar(i+1)=ystar(i)+h*0.5*(k1+k2) ;
%Estimation de la nouvelle y ;
end
%solution exacte
y=2.5*exp(-2*t)-1.5*exp(-4*t) ;
%Graphe de la solution.
plot(t,ystar,’b–’,t,y,’r-’) ;
legend(’Approximation’,’Exacte’) ;
title(’rk2 Approximation, h=0.01’) ;
xlabel(’Temps’) ;
14

ylabel(’y*(t), y(t)’) ;
%Print results
for i=1 :length(t)
disp(sprintf(’t=%5.3f, y(t)=%6.4f, y*(t)=%6.4f’,t(i),y(i),ystar(i))) ;
end
=====================================
%Script de la méthode de Runge Kutta d’ordre 4 par Matlab.
% Le problème à résoudre est :
%y’(t)+2*y(t)=3*exp(-4*t)
%Note : la solution exacte est
% y(t)=2.5*exp(-2*t)-1.5*exp(-4*t)
h=0.1 ; %h est le pas.
t=0 :h :4 ; %valeur initiale.
clear ystar ;
ystar(1)=1.0 ; %condition initiale.
for i=1 :length(t)-1, %.
k1=3*exp(-4*t(i))-2*ystar(i) ;%Calcul des dérivées ;
k2=3*exp(-4*t(i)+(h/2)))-2*(ystar(i)+(h/2)*k1) ;
k3=3*exp(-4*t(i)+(h/2)))-2*(ystar(i)+(h/2)*k2) ;
k4=3*exp(-4*t(i)+h))-2*(ystar(i)+h*k3) ;
ystar(i+1)=ystar(i)+h*(1/6)*(k1+2*k2+2*k3+k4) ;
%Estimation de la nouvelle y ;
end
%solution exacte
y=2.5*exp(-2*t)-1.5*exp(-4*t) ;
%Graphe de la solution.
plot(t,ystar,’b–’,t,y,’r-’) ;
legend(’Approximation’,’Exacte’) ;
title(’RK4 Approximation, h=0.01’) ;
xlabel(’Temps’) ;
ylabel(’y*(t), y(t)’) ;
%Print results
for i=1 :length(t)
disp(sprintf(’t=%5.3f, y(t)=%6.4f, y*(t)=%6.4f’,t(i),y(i),ystar(i))) ;
end
%*************************************
TP4 : Résolution Directe des
systèmes linéaires

15 Pr Hamid El Ouardi
16

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

a) En utilisant d’abord l’opérateur \ de Matlab.


b) Résoudre ce système avec la méthode de Gauss.
c) Afficher toutes les matrices de calcul.
2) Résoudre le système Ax = b, avec
   
0.9 0.06 −0.39 −0.24 0.063
 0.06 1.604 0.134 0.464   −0.6358 
A=
 −0.39
 et b =  .
0.134 2.685 0.802   0.5937 
−0.24 0.464 0.802 1.977 −0.1907

a ) En utilisant d’abord l’opérateur \ de Matlab.


b ) Résoudre ce système avec la méthode de Choleski. Afficher la matrice L.
3 ) Résoudre le système Ax = b, avec
   
4 −1 0 0 0 100

 −1 4 −1 0 0 


 50 

A=
 0 −1 4 −1 0  et b = 
  50 .

 0 0 −1 4 −1   1150 
0 0 0 −1 4 2300

a) En utilisant d’abord l’opérateur \ de Matlab.


b) Résoudre ce système avec la méthode de Jacobi, la méthode de Gauss - Seidel.
c) Afficher toutes les matrices de calcul.
d) Comparer les erreurs des deux méthodes.
%*************************************

Vous aimerez peut-être aussi