Geii514 Analyse Numerique Matlab Simulink
Geii514 Analyse Numerique Matlab Simulink
Geii514 Analyse Numerique Matlab Simulink
CLASSE: GEII
SEMESTRE 5
COURS 2 :
II.1. Introduction
INTERPOLATION ET II.2. La méthode d’interpolation de Lagrange
APPROXIMATION
II.3. La méthode d’interpolation de Newton CM : 4h
POLYNOMIALE DE II.4. La méthode d’interpolation de Newton de
FONCTIONS Tchebychev
TP 3 :
INTERPOLATION ET II.5. Mise en œuvre des méthodes II.2, II.3 et II.4
APPROXIMATION sous Matlab TP : 4h
POLYNOMIALE DE Préparation du TP No.4
FONCTIONS
Industrielle. Il donne une idée sur l’implémentation en MATLAB de quelques méthodes étudiées
Introduction générale 1
Chapitre I : Résolution numérique des équations non linéaires 4
I.1. Introduction 5
I.2. La méthode de dichotomie 6
I.2.1. Principe de la méthode de dichotomie 6
I.2.2. La condition d’arrêt 6
I.3. La méthode de point fixe 7
I.3.1. Principe de la méthode de point fixe 7
I.3.2. La condition d’arrêt 7
I.4. La méthode de Newton-Raphson 8
I.4.1. Principe de la méthode de Newton 8
I.4.2. La condition d’arrêt 8
I.5. Mise en œuvre sous Matlab 9
I.6. TP N°1 : Résolution numérique des équations non linéaires 14
I.6.1. But du TP 14
I.6.2. Énoncé du TP 14
Références bibliographiques 50
Introduction générale
Introduction générale
Le domaine de calcul scientifique consiste à développer, analyser et appliquer des
méthodes relevant de domaines mathématiques aussi variés que l’analyse, l’algèbre
linéaire, la géométrie, la théorie de l’approximation, les équations fonctionnelles,
l’optimisation ou le calcul différentiel.
Page : 2
Dr. JDD Nkapkop, PhD
INTRODUCTION GENERALE
Page : 3
CHAPITRE I
Résolution numérique
des équations non linéaires
CHAPITRE I : RESOLUTION NUMERIQUE DES EQUATIONS NON LINEAIRES
I.1. Introduction
L’objet essentiel de ce chapitre est l’approximation des racines d’une fonction réelle
d’une variable réelle, c’est-à-dire la résolution approchée du problème suivant :
Étant donné une équation non linéaire, à une seul variable, est définie par :
ƒ(𝑥) = 0 (I-1)
La valeur de la variable 𝑥 qui vérifie cette égalité est appelée solution (ou racine) de
l'équation, elle est notée 𝑥0. Dans beaucoup de cas, on doit recourir aux méthodes
numériques car la solution ne peut pas être déterminée analytiquement. Ainsi, résoudre
cette équation revient à définir une succession d'éléments (solutions intermédiaires 𝑥0;𝑘)
qui convergent vers la solution désirée lorsque 𝑘 tant vers l’infini. On ne parle pas de la
solution exacte, car souvent elle n'existe pas, cependant on cherche une solution qui soit
approchée de la solution exacte avec une certaine précision.
Page : 5
CHAPITRE I : RESOLUTION NUMERIQUE DES EQUATIONS NON LINEAIRES
Page : 6
Dr. JDD Nkapkop, PhD
CHAPITRE I : RESOLUTION NUMERIQUE DES EQUATIONS NON LINEAIRES
Page : 7
CHAPITRE I : RESOLUTION NUMERIQUE DES EQUATIONS NON LINEAIRES
f(𝑥 )
𝑥i+1 = 𝑥i − f̀(𝑥 i) (I-5)
i
Page : 8
CHAPITRE I : RESOLUTION NUMERIQUE DES EQUATIONS NON LINEAIRES
Page : 9
CHAPITRE I : RESOLUTION NUMERIQUE DES EQUATIONS NON LINEAIRES
end
end
disp('
')
disp(['-Le nombre d`itération est N=',num2str(iter)])
disp('
')
disp(['-La valeur de la racine est X*=',num2str(c)])
disp('
')
disp(['-La valeur de f(X*)=',num2str(feval('f',c))])
case 2
disp(['*** Début de la Méthode du point fixe ***'])
disp(['l`intervalle initial de la recherche [a b]'])
a=input('a =');b=input('b =');
disp([ 'Donnez une valeur initiale X0 dans [a b]'])
x0=input('x0= ')
disp(['Donnez Tol " Tol petite valeur!'])
tol=input('tol= ')
x=a:(b-a)/100:b;
y=feval('g',x);
figure(2);
plot(x,y,'g')
hold on
plot(x,x,'--r')
title('la racine de f(x)=0 par le point fixe')
grid
xlabel(' x')
ylabel(' g(x)')
hold
kp = 0;
x1=feval('g',x0);
while abs(x1 - x0) >= tol
x0 = x1;
kp = kp + 1;
x1=feval('g',x0);
hold on
plot(abs(x0),feval('g',x0),'r*')
pause
plot(abs(x1),feval('g',x1),'b*')
end
disp('
')
disp(['-Le nombre d`itération est N=',num2str(kp)])
disp('
')
disp(['-La valeur de la racine est X*=',num2str(x1)])
disp('
')
disp(['-La valeur de g(X*)=',num2str(feval('g',x1))])
case 3
disp(['*** Début de la Méthode de NEWTON ***'])
disp(['l`intervalle initial de la recherche [a b]'])
a=input('a =');b=input('b =');
disp([ 'Donnez une valeur initiale X0 dans [a b]'])
x0=input('x0= ')
disp(['Donnez Tol " Tol petite valeur!'])
tol=input('tol= ')
x=a:(b-a)/100:b;
Page : 10
CHAPITRE I : RESOLUTION NUMERIQUE DES EQUATIONS NON LINEAIRES
y=feval('f',x);
figure(3);
plot(x,y,'g')
title('la racine de f(x)=0 par Newton')
grid
xlabel(' x')
ylabel(' f(x)')
hold
kp = 0;
x1 = x0 - feval('f',x0) / feval('df',x0)
while abs(x1 - x0) >= tol
x0 = x1
kp = kp+1
x1=x0 - feval('f',x0) / feval('df',x0);
hold on
plot(abs(x0),feval('f',x0),'r*')
pause
plot(abs(x1),feval('f',x1),'b*')
end
disp('
')
disp(['-Le nombre d`itération est N=',num2str(kp)])
disp('
')
disp(['-La valeur de la racine est X*=',num2str(x1)])
disp('
')
disp(['-La valeur de f(X*)=',num2str(feval('f',x1))])
case 4
quit
otherwise
disp('Erreur! S entre <1-4> ');
end
%=================================FIN======================================
La valeur de f(X*)=-0.023315
Page : 11
CHAPITRE I : RESOLUTION NUMERIQUE DES EQUATIONS NON LINEAIRES
1.5
0
-0.05
1
f(x)
-0.1
0.5
0.99 1 1.01
x
0
-0.5
-1
0.5 1 1.5
x
Figure I.4 : Evaluation de la racine par la méthode de dichotomie
2.5 g(x)=x
2
g(x)
1.5
1 y=x
0.5
-0.5
0.5 1 1.5
x
Figure I.5 : Evaluation de la racine par la méthode de point fixe.
Page : 12
CHAPITRE I : RESOLUTION NUMERIQUE DES EQUATIONS NON LINEAIRES
La valeur de f(X*)=1.4122e-06
1.5
1
f(x)
0.5
-0.5
*
-1
0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5
x
Page : 13
CHAPITRE I : RESOLUTION NUMERIQUE DES EQUATIONS NON LINEAIRES
I.6.2. Énoncé du TP
Soit l’équation non linéaire : ƒ(𝑥) = 𝑥2 − 2 = 0
1) Déclarer la fonction ƒ(𝑥) avec 𝑥 = −10 : 0.001 : 10
2) Tracer le graphe 𝑦 = ƒ(𝑥) sur un intervalle tel qu’il vous permet de localiser la
solution de l’équation.
3) Il est à noter que, les solutions exactes de cette équation sont 𝑥1 = √2 et 𝑥2 = −√2
et on veut trouver la première racine 𝑥1 de cette équation en utilisant :
a) La méthode de dichotomie
Page : 14
CHAPITRE I : RESOLUTION NUMERIQUE DES EQUATIONS NON LINEAIRES
Page : 15
CHAPITRE II
Interpolation et approximation
polynômiale de fonctions
CHAPITRE II : INTERPOLATION ET APPROXIMATION POLYNOMIALE DE FONCTIONS
II.1. Introduction
Les quantités 𝑦i peuvent, par exemple, représenter les valeurs aux nœuds xi d’une
fonction ƒ connue analytiquement ou des données expérimentales. Dans le premier cas,
l’approximation a pour but de remplacer ƒ par une fonction plus simple en vue d’un
calcul numérique d’intégrale ou de dérivée. Dans l’autre cas, L’interpolation sert aussi à
construire une représentation synthétique de données expérimentales quand leurs
nombre deviennent très élevés.
Page : 17
CHAPITRE II : INTERPOLATION ET APPROXIMATION POLYNOMIALE DE FONCTIONS
Page : 18
CHAPITRE II : INTERPOLATION ET APPROXIMATION POLYNOMIALE DE FONCTIONS
𝑡𝑛(𝑥) = 𝑐𝑜𝑠(𝑛𝜃);
𝑡0(𝑥) = 1; 𝑡1(𝑥) = 𝑥;
𝑛+1
𝜋 (𝑥) = ∏𝑛 (𝑥 − 𝑥 ) = (𝑏−𝑎) ∏𝑛 (𝑥̂− ̂𝑥 ) (II-10)
𝑛+1 i=0 i 2 i=0 i
Page : 19
CHAPITRE II : INTERPOLATION ET APPROXIMATION POLYNOMIALE DE FONCTIONS
%==============================Programme Matlab============================
% Institut Universitaire de Technologie
% **********************************
% Département de Génie Electrique et Informatique Industrielle
% Licence GEII
% Matière: TP Analyse Numériques Matlab/Simulink
% *****************Enseignant Dr.JDD Nkapkop********************
%========= Interpolation et Approximation de Fonctions ========
clear all;close all;clc;
disp(['*** Interpolation et Approximation de Fonctions ***'])
disp(['*** S=1. La Méthode d’’interpolation de Lagrange ***'])
disp(['*** S=2. La Méthode d’’interpolation de Tchebychev***'])
disp(['*** S=3. Pour Quitter ***'])
disp(['*** Tapez S entre <1-3> ***'])
s=input('S =');
switch s
case 1
disp(['*** Début de la Méthode d’’interpolation de Lagrange ***'])
x(1)=0;x(2)=1;x(3)=2;n=3;%POLYNOME DE DEGRE 2
y(1)=1;y(2)=2;y(3)=5;
interv=1000;dx=(x(3)-x(1))/interv;
xvar=x(1):dx:x(3);polyn=0;
col={'+k','+r','+m'};
for i=1:n
lag=1;
for j = 1:n
if(i~=j)
lag=(xvar-x(j))./(x(i)-x(j)).*lag;
end
end
figure(1);plot(x(i),y(i),col{i},'MarkerSize',12,'LineWidth',2);
hold on;
polyn=polyn+lag.*y(i);
end
hold on
Page : 20
CHAPITRE II : INTERPOLATION ET APPROXIMATION POLYNOMIALE DE FONCTIONS
plot(xvar,polyn,'LineWidth',1);
hold on;
xlabel('x');ylabel('y')
axis([-0.5 2.5 -0.5 5.5])
title('Interpolation de Lagrange')
p=2;coeff=polyfit(xvar,polyn,p)
case 2
disp(['*** Début de la Méthode d’’interpolation de Tchebychev ***'])
format long
x(1)=-5;x(2)=-4;x(3)=-3;n=11;%POLYNOME DE DEGRE n-1
x(4)=-2;x(5)=-1;x(6)=0;x(7)=1;x(8)=2;x(9)=3;
x(10)=4;x(11)=5; y=1./(1+x.^2);
interv = 1000; dx = (x(11)-x(1))/interv;
xvar=x(1):dx:x(11);polyn=0;
x=(x(11)+x(1))/2+((x(11)-x(1))/2)*cos((2*(n-(1:n))+1)*pi/(2*n));
xChe=x;
%LES NOEUDS xi ANNULANT LES POLYNOMES DE TCHEBYCHEV :
%CECI AFIN DE MINIMISER L’ECART ENTRE Pn(x) ET LA FONCTION f(x)
for i = 1:n
lag = 1;
for j = 1 : n
if (i~=j)
lag = (xvar - xChe(j))./(xChe(i) - xChe(j)).*lag;
end
end
figure(1) ; plot(xChe(i),y(i),'+k','MarkerSize',12,'LineWidth',1);
hold on;
polyn = polyn + lag.*y(i);
end
hold on
plot(xvar, polyn,'b','LineWidth',1) ;hold on; xlabel('x'); ylabel('y')
title('Interpolation de Tchebychev')
p=10;coeff=polyfit(xvar,polyn,p);
evalp=polyval(coeff,xvar);hold on;
plot(xvar,1./(1+xvar.^2),'r')
case 3
quit
otherwise
disp('Erreur! S entre <1-3> ');
end
%=================================FIN======================================
coeff =
1.0000 -0.0000 1.0000
Page : 21
CHAPITRE II : INTERPOLATION ET APPROXIMATION POLYNOMIALE DE FONCTIONS
Interpolation de Lagrange
2
P (x)=x +1
4 2
3
y
0.9
P (x) f(x)
0.8 n
0.7
0.6
0.5
y
0.4
0.3
0.2
0.1
0
-5 0 5
x
Figure II. 2 : Polynôme d’interpolation par les nœuds de Tchebychev.
Page : 22
CHAPITRE II : INTERPOLATION ET APPROXIMATION POLYNOMIALE DE FONCTIONS
Température ( 250𝐶) 15 20 30 40 50 60
Resistance (Ω) 15.11 14.04 9.28 6.44 4.44 2.9
Page : 23
CHAPITRE II : INTERPOLATION ET APPROXIMATION POLYNOMIALE DE FONCTIONS
Page : 24
CHAPITRE III
Intégration numérique
de fonctions
CHAPITRE III : INTEGRATION NUMERIQUE DE FONCTIONS
III.1. Introduction
𝐼 = ℎ ∑𝑛 ƒ (𝑥i+𝑥i+1) (III-2)
2i=1 2
Page : 26
CHAPITRE III : INTEGRATION NUMERIQUE DE FONCTIONS
Page : 27
CHAPITRE III : INTEGRATION NUMERIQUE DE FONCTIONS
Page : 28
CHAPITRE III : INTEGRATION NUMERIQUE DE FONCTIONS
%=========================================================================
% Institut Universitaire de Technologie
% **********************************
% Département de Génie Electrique et Informatique Industrielle
% Licence GEII
% Matière: TP Analyse Numériques Matlab/Simulink
% *****************Enseignant Dr.JDD Nkapkop********************
%================ Integration numérique de Fonctions ======================
clear all;close all;clc;
a=input('a =');b=input('b =');n=input('n =');
h = (b - a)/n
disp(['h=',num2str(h)])
disp(['*** Intégration numérique de f(x) = (1/3)*x^2 ***'])
disp(['*** S=1. La Méthode des Rectangles ***'])
disp(['*** S=2. La Méthode des Trapèzes ***'])
disp(['*** S=3. La Méthode de Simpson ***'])
disp(['*** S=4. Pour Quitter ***'])
disp(['*** Tapez S entre <1-4> ***'])
s=input('S =');
switch s
case 1
disp(['*** Début de la méthode des Rectangles***'])
R1 = 0; R2 = 0;
f=inline('(1/3)*x^2');
for i=1:n
R1 = R1 + h * f(a + (i - 1) * h);
end
for j =1:n
R2 = R2 + h * f(a + j * h);
end
if R2 > R1
Rmin = R1; Rmax = R2;
else;
Rmin = R2; Rmax = R1;
end
R = (Rmax + Rmin) / 2;
disp([ '-----------La solution par la méthode des rectangles ---------- '])
disp([ '***Imax=', num2str(Rmax)]);
disp([ '***Imin=', num2str(Rmin)]);
disp([ '***I=',num2str(R)]);
case 2
disp(['*** Début de la méthode des Trapèzes***'])
T1 = 0
f=inline('(1/3)*x^2');
disp([' '])
disp(['x(',num2str(0),')=', num2str(a),'
f(x',num2str(0),')=', num2str(f(a))])
disp([' '])
for i = 1:n-1
disp(['x(',num2str(i),')=', num2str(a+i*h),'
f(x',num2str(i),')=', num2str(f(a + i * h))])
T1 = T1 + f(a + i * h);
end
Page : 29
CHAPITRE III : INTEGRATION NUMERIQUE DE FONCTIONS
disp(['x(',num2str(n),')=', num2str(b),'
f(x',num2str(n),')=', num2str(f(b))])
disp([' '])
T = 0.5*h*(f(a) + f(b) + 2*T1);
disp([ '------------La solution par la méthode des Trapèzes ----------- '])
disp ([ 'I=(h/2)*(f(a)+f(b)+2*T1)'])
disp([ 'I=',num2str(T)])
case 3
disp(['*** Début de la méthode de Simpson***'])
f=inline('(1/3)*x^2');
fa = f(a)
fb = f(b)
S1 = 0; S2 = 0;
disp ([' '])
disp (['x(',num2str(0),')=', num2str(a),'
f(x',num2str(0),')=',num2str(f(a))])
disp ([' '])
for i =1:2: n-1
S11 = f(a + i * h)
disp (['x(',num2str(i),')=', num2str(a+i*h),'
f(x',num2str(i),')=', num2str(S11)])
S1 = S1 + S11
end
disp ([' '])
disp ([ 'S1=', num2str(S1)])
disp ([' '])
for i = 2:2:n - 1
S22 = f(a + i * h)
disp (['x(',num2str(i),')=', num2str(a+i*h),'
f(x',num2str(i),')=', num2str(S22)])
S2 = S2 + S22
end
disp ([' '])
disp ([ 'S2=', num2str(S2)])
disp ([' '])
disp (['x(',num2str(n),')=', num2str(b),'
f(x',num2str(n),')=', num2str(f(b))])
disp ([' '])
S = (h/3)*(fa+ fb+4*S1+2*S2);
disp ([ '--------------La solution par la méthode de SIMPSON ----------- '])
disp ([ 'I=(h/3)*(f(a)+f(b)+4*S1+2*S2)'])
disp ([ 'I=', num2str(S)])
case 4
quit
otherwise
disp('Erreur! la valeur de S entre <1-4> ');
end
%=================================FIN======================================
Page : 30
CHAPITRE III : INTEGRATION NUMERIQUE DE FONCTIONS
III.6.2. Énoncé du TP
3
𝐼 = ∫ ln(2𝑥 + 1) 𝑑𝑥
0
Ecrire un programme qui calcule cette intégrale en utilisant les méthodes du point
milieu, du trapèze et de Simpson avec n=10.
Calculer la valeur exacte de l'intégrale et comparer les résultats de chaque méthode,
conclure.
Refaire l’exécution avec n=150
Étudier l’influence du nombre de sous-intervalles (n) sur l’erreur d’intégration
Appliquez les mêmes étapes pour l’intégrale :
2𝜋
𝐼 = ∫ cos(𝑥) 𝑑𝑥
0
Page : 32
CHAPITRE IV
Résolution numérique
des
équations différentielles
CHAPITRE IV : RESOLUTION NUMERIQUE DES EQUATIONS DIFFERENTIELLES
IV. Introduction
Le but de ce chapitre est de calculer la solution 𝑦(𝑡) sur l’intervalle 𝐼 = [𝑎, 𝑏] du
problème de Cauchy
𝑦(𝑡) = ƒ(𝑡, 𝑦(𝑡)) Avec 𝑦(𝑡0) = 𝑦0 (IV-1)
Par ailleurs, il faut noter que très souvent la solution analytique n’existe pas, et on
doit par conséquent approcher la solution exacte (𝑡) par des méthodes numériques.
Puisque 𝑑𝑦(𝑡𝑘) = ƒ(𝑡𝑘, 𝑦(𝑡𝑘)) et ℎ = 𝑡𝑘+1 − 𝑡𝑘, on obtient ainsi le schéma numérique
𝑑𝑡
d’Euler :
𝑦0 = 𝑣𝑎𝑙𝑒𝑢𝑟𝑠 i𝑛i𝑡i𝑎𝑙𝑒𝑠
{ (IV-4)
𝑦𝑘+1 = 𝑦𝑘 + ℎƒ(𝑡𝑘, 𝑦(𝑡𝑘)) 𝑎𝑣𝑒𝑐 𝑘 = 0, 1, . . . , 𝑛 − 1
Cette méthode est d’ordre 1, cela veut dire que l’erreur est proportionnelle au carré
du pas (h) de discrétisation. Intuitivement, on comprend que pour améliorer la précision
cette méthode, il suffira de réduire h. Cette réduction du pas de discrétisation aura pour
Page : 34
CHAPITRE IV : RESOLUTION NUMERIQUE DES EQUATIONS DIFFERENTIELLES
On désire approcher, effectuant le calcul avec quatre (4) décimales, la solution de (1)
en x=0.5 à l’aide de la méthode d’Euler et celle de Runge-Kutta, en subdivisant l’intervalle
[0, 1] en 50 parties égales.
Page : 35
CHAPITRE IV : RESOLUTION NUMERIQUE DES EQUATIONS DIFFERENTIELLES
%=========================================================================
% Institut Universitaire de Technologie
% **********************************
% Département de Génie Electrique et Informatique Industrielle
% Licence GEII
% Matière: TP Analyse Numériques Matlab/Simulink
% *****************Enseignant Dr.JDD Nkapkop********************
%============ Résolution numérique des équations différentielles===========
clear all;close all;clc;
a=input('a =');
b=input('b =');
n=input('n =');
h = (b - a)/n;
t=a:h:b;
disp(['h=',num2str(h)])
disp(['*Résolution numérique de l''équation différentielle f'=y-(2.x/y)*'])
disp(['*** S=1. Pour la Méthode d''Euler ***'])
disp(['*** S=2. Pour la Méthode de Runge-Kutta ***'])
disp(['*** S=3. Pour les deux méthodes ***'])
disp(['*** S=4. Pour Quitter ***'])
disp(['*** Tapez S entre <1-4> ***'])
s=input('S =');
switch s
case 1
disp(['*** Début de la méthode de Runge-Kutta ***'])
%%%%%%%%%%%%%%%%%%%%%%%%%%% Trace de la solution exacte %%%%%%%%%%%%%
yex=sqrt(2*t+1);
figure('color',[1 1 1])
plot(t,yex,'*-g')
%%%%%%%%%%%%%%%%%%%%%%%%%%% METHODE Runge-Kutta %%%%%%%%%%%%%%%%%%%%%%%%%
dydt=inline('y-(2.*t/y)','t','y');
epsilon=0.0001;u(1)=1+epsilon;
for i=1:n-1
u1(i)=u(i);u2(i)=u(i)+h/2*dydt(t(i),u1(i));
u3(i)=u(i)+h/2*dydt(t(i)+h/2,u2(i));u4(i)=u(i)+h*dydt(t(i)+h/2,u3(i));
u(i+1)=u(i)+h/6*(dydt(t(i),u1(i))+2*dydt(t(i)+h/2,...
u2(i))+2*dydt(t(i)+h/2,u3(i))+dydt(t(i+1),u4(i)));
end
hold on
plot(t(1:end-1),u,'*-r')
xlabel(' tn')
ylabel(' Un')
legend('Exacte','Runge-Kutta')
grid
%%%%%%%%%%%%%%%%%%%%%%%%%%% METHODE d'Euler %%%%%%%%%%%%%%%%%%%%
case 2
disp(['*** Début de la méthode d'Euler ***'])
%%%%%%%%%%%%%%%%%%%%%%%%%%% Trace de la solution exacte %%%%%%%%%%%%%
yex=sqrt(2*t+1);
figure('color',[1 1 1])
plot(t,yex,'*-g')
dydt = inline('y-(2.*t/y)','t','y');
epsilon=0.0001;u(1)=1+epsilon;
for i=1:n-1
u(i+1)=u(i)+h/2*(dydt(t(i),u(i)));
end
Page : 36
CHAPITRE IV : RESOLUTION NUMERIQUE DES EQUATIONS DIFFERENTIELLES
hold on
plot(t(1:end-1),u,'*-b')
xlabel(' tn')
ylabel(' Un')
legend('Exacte','Euler')
grid
case 3
disp(['*** Pour les deux méthodes ***'])
%%%%%%%%%%%%%%%%%%%%%%%%%%% Trace de la solution exacte %%%%%%%%%%%%%
yex=sqrt(2*t+1);
figure('color',[1 1 1])
plot(t,yex,'*-g')
%%%%%%%%%%%%%%%%%%%%%%%%%%% METHODE de Runge-Kutta
%%%%%%%%%%%%%%%%%%%%%%%%%
dydt=inline('y-(2.*t/y)','t','y');
epsilon=0.0001;u(1)=1+epsilon;
for i=1:n-1
u1(i)=u(i);u2(i)=u(i)+h/2*dydt(t(i),u1(i));
u3(i)=u(i)+h/2*dydt(t(i)+h/2,u2(i));u4(i)=u(i)+h*dydt(t(i)+h/2,u3(i));
u(i+1)=u(i)+h/6*(dydt(t(i),u1(i))+2*dydt(t(i)+h/2,...
u2(i))+2*dydt(t(i)+h/2,u3(i))+dydt(t(i+1),u4(i)));
end
hold on
plot(t(1:end-1),u,'*-r')
%%%%%%%%%%%%%%%%%%%%%%%%%%% METHODE d'Euler %%%%%%%%%%%%%%%%%%%%
for i=1:n-1
u(i+1)=u(i)+h/2*(dydt(t(i),u(i)));
end
hold on
plot(t(1:end-1),u,'*-b')
xlabel(' tn')
ylabel(' Un')
legend('Exacte','Runge-Kutta','Euler')
grid
case 4
quit
otherwise
disp('Erreur! la valeur de S entre <1-4> ');
end
%=================================FIN======================================
L’exécution du programme donne les résultats suivants :
a =0; b =1; n =50
h=0.02
*** Résolution numérique de l'équation différentielle f'=y-(2.x/y) ***
*** S=1. Pour la Méthode de Runge-Kutta ***
*** S=2. Pour la Méthode d'Euler ***
*** S=3. Pour les deux méthodes ***
*** S=4. Pour Quitter ***
*** Tapez S entre <1-4> ***
S =3
*** Pour les deux méthodes ***
y_Exact'(0.5)=1.4142
y_Runge-Kutta(0.5)=1.4002
y_Euler(0.5)=1.1634
Page : 37
CHAPITRE IV : RESOLUTION NUMERIQUE DES EQUATIONS DIFFERENTIELLES
1.8
Exacte
1.7
Runge-Kutta
1.6
Un
1.5
1.4
1.3
1.2
1.1
1
0 0.2 0.4 0.6 0.8 1
tn
1.8
Exacte
1.7
d'Euler
1.6
Un
1.5
1.4
1.3
1.2
1.1
1
0 0.2 0.4 0.6 0.8 1
tn
1.8
Exacte
1.7 Runge-Kutta
Zoom
1.415 Euler
1.6
1.414
1.5
Un
1.4 1.413
0.4999 0.5 0.5
1.3
1.2
1.1
1
0 0.2 0.4 0.6 0.8 1
tn
Figure IV. 1: Solutions numériques obtenues
Page : 38
CHAPITRE IV : RESOLUTION NUMERIQUE DES EQUATIONS DIFFERENTIELLES
IV.5.2. Énoncé du TP
𝑦= 𝑦 (1)
1+𝑡 2
Runge-Kutta.
Afficher sur la même figure, la solution exacte ainsi que les solutions estimées.
Page : 39
CHAPITRE V
Résolution numérique
des
systèmes d’équations linéaires
CHAPITRE V : RESOLUTION NUMERIQUE DES SYSTEMES D’EQUATIONS LINEAIRES
V.1. Introduction
Dans ce chapitre plusieurs méthodes sont analysées. On appelle méthode de
résolution directe d'un système linéaire un algorithme qui, si l'ordinateur faisait des calculs
exacts, donnerait la solution en un nombre fini d'opérations. Il existe aussi des méthodes
itératives qui consistent à construire une suite de vecteurs convergeant vers la solution x.
𝑎i,𝑛+1−∑𝑛 𝑎ij*𝑥j
i+1
𝑥i = 𝑎ii
(V-2)
Avec : i=1 à n
Page : 41
CHAPITRE V : RESOLUTION NUMERIQUE DES SYSTEMES D’EQUATIONS LINEAIRES
Dans cette méthode, on se donne des valeurs d’essai x1,x2,x3 …,xn. La première
équation permet ensuite de calculer une nouvelle estimation de x1. La seconde équation
permet de calculer une nouvelle estimation de x2 et ainsi de suite jusqu’à xn. On a alors
une nouvelle estimation de toutes les inconnues et on recommence le procédé tant que la
différence entre l’itération i+1 et l’itération i est supérieure à une précision donnée.
On remarque que si les éléments diagonaux de 𝐴 sont non nuls, le système linéaire
𝐴𝑥 = 𝑏 est équivalent à :
𝑏i−∑𝑛 𝑎ij*𝑥j
j=1 jGi
𝑥i = 𝑎ii
(V-3)
avec i = 1: n
Pour une donnée initiale 𝑥(0) choisie, on calcule 𝑥(𝑘+1) par :
𝑏i−∑𝑛 𝑎ij*𝑥𝑘+1
𝑥i𝑘+1 = j=1 jGi i (V-4)
𝑎ii
avec i = 1: n
Cela permet d'identifier le splitting suivant pour A :
𝐴 = 𝐷−𝐸− 𝐹 (V-5)
D : diagonale de A.
E : triangulaire inférieure avec des 0 sur la diagonale.
F : triangulaire supérieure avec des 0 sur la diagonale.
La matrice d'itération de la méthode de Jacobi est donnée par :
Page : 42
CHAPITRE V : RESOLUTION NUMERIQUE DES SYSTEMES D’EQUATIONS LINEAIRES
avec i = 1: n
Il s’écrit aussi :
𝑥𝑘+1 = (𝐷 − 𝐸)−1(𝑏 + 𝐹𝑥 𝑘 ) (V-8)
Page : 43
CHAPITRE V : RESOLUTION NUMERIQUE DES SYSTEMES D’EQUATIONS LINEAIRES
%=========================================================================
% Institut Universitaire de Technologie
% **********************************
% Département de Génie Electrique et Informatique Industrielle
% Licence GEII
% Matière: TP Analyse Numériques Matlab/Simulink
% *****************Enseignant Dr.JDD Nkapkop********************
%=========== Résolution numérique des systèmes d’équations linéaires======
clear all;clc;
%Initialisation de la matrice du système
a=[4 -1 1;4 -8 1;-2 1 5];
%Initialisation du vecteur des données
b=[7 ;-21 ;15];
%Nombre de variables et d'équations
n=3;
%Le vecteur X0
X0 = [0;0;0];
case 1
disp(['*** Début de la méthode directe A/B ***'])
X=a \b
case 2
disp(['*** Début de la méthode directe LU ***'])
[L,U,X] = decompositionLU(a,b) %La fonction decompositionLU.m
case 3
disp(['*** Début de la méthode de Gauss ***'])
%Formation de la matrice augmentée
A=[a b];
for k=1:n-1
for i=k+1:n
A(i,:)=A(i,:)-(A(i,k)/A(k,k))*A(k,:);
Page : 44
CHAPITRE V : RESOLUTION NUMERIQUE DES SYSTEMES D’EQUATIONS LINEAIRES
end
end
A
%Extraction de la solution du système d'équations
for i=n:-1:1
s=0;
for j=i+1:n
s=s+A(i,j)*x(j);
end
x(i)=(A(i,n+1)-s)/A(i,i);
end
X=x'
case 4
disp(['*** Début de la méthode de Jacobi ***'])
[X,N] = jacobi(a,b,X0,50,0.0001) %La fonction jacobi.m
case 6
quit
otherwise
disp('Erreur! la valeur de S entre <1-6> ');
end
%=================================FIN======================================
X =
2
4
3
S =2
*** Début de la méthode directe LU ***
L =
4.000000000000000 0 0
4.000000000000000 -7.000000000000000 0
-2.000000000000000 0.500000000000000 5.500000000000000
U =
X =
2
4
3
S =3
*** Début de la méthode de Gauss ***
A =
X =
2
4
3
S =4
*** Début de la méthode de Jacobi ***
X =
1.999981872558594
3.999993408203125
3.000009228515625
Page : 47
CHAPITRE V : RESOLUTION NUMERIQUE DES SYSTEMES D’EQUATIONS LINEAIRES
N =
11
S =5
*** Début de la méthode de Gauss-Seidel ***
X =
1.999997873535156
3.999998092651367
2.999999530883789
N =
V.7.2. Énoncé du TP
Soit le système linéaire suivant :
𝐴*𝑥 =𝐵
où :
10 7 5 1
𝐴 = [ 7 8 6] ; 𝐵 = [3]
8 9 5 4
Calculer 𝑥 = inv(A) * B.
Résoudre ce système en utilisant la méthode de Gauss, de Jacobi et de Gauss-
Seidel.
Comparer les résultats obtenus. Conclure !.
Page : 48
Références bibliographiques
Références bibliographiques
[1] C. T. Kelley, “Iterative Methods for Linear and Nonlinear Equations”, SIAM,
Philadelphia, 1999.
[2] Manfred GILLI, Méthodes numériques, Université de Genève, 2006.
[3] S. benkouda, Méthodes Numériques (cours et TD), université frères Mentouri.
[4] C. Brezinski, Introduction à la pratique du calcul numérique, Dunod, Paris, 1988.
[5] G. Allaire et S.M. Kaber, Algèbre linéaire numérique, Ellipses, 2002.
[6] G. Allaire et S.M. Kaber, Introduction à Scilab. Exercices pratiques corriges d'algèbre
linéaire, Ellipses, 2002.
[7] G. Christol, A. Cot et C.M. Marle, Calcul différentiel, Ellipses, 1996.
[8] M. Crouzeix et A.L. Mignot, Analyse numérique des équations différentielles,
Masson, 1983.
[9] S. Delabriere et M. Postel, Méthodes d'approximation. Equations différentielles
Applications Scilab, Ellipses, 2004.
[10] J.P. Demailly, Analyse numérique et équations différentielles. Presses Universitaires
de Grenoble, 1996.
[11] E. Hairer, S. P. Norsett et G. Wanner, Solving Ordinary Differential Equations,
Springer, 1993.
[12] D. PENNEQUIN, Méthodes Numériques, Université Paris 1, 2015-2016
[13] P. G. Ciarlet, Introduction à l’analyse numérique matricielle et à l’optimisation,
Masson, Paris, 1982.
[14] S. KENOUCHE, Méthodes Numériques via MATLAB, université de Biskra.
[15] S. Karoui, Polycopié de TP : Méthodes Numériques, USTO, 2016-2017.
[16] A. Quarteroni,R. Sacco, F. Saleri, Méthodes Numériques Algorithmes, analyse et
applications, Springer, 2007.
[17] Paola GOATIN, Analyse Numérique, Université du Sud Toulon-Var.
[18] Stéphane Canu et Gilles Gasso, « Méthodes itératives pour la solution d’un système
linéaire », Novembre 19, 2016.
Page : 50