Vous êtes sur la page 1sur 37

ENIM-Monastir

2019-2020

RECUEIL DES SUJETS DE TP


D’ANALYSE NUMÉRIQUE

TP Analyse numérique Génie Mécanique (Meca-1)

Équipe de Mathématique de l’ENIM :2019-2020

1
TP No :1
Initiation à Matlab

Ce premier TP a pour objectif de vous rappeler les syntaxes et structures Matlab en vue d’une utili-
sation intensive pour les prochaines séances de TP dans le cadre du module d’analyse numérique. Les
aspects graphiques seront également abordés lors de ce TP.
Remarque : Dans le présent TP, n’hésitez pas de demander de l’aide à Matlab sur les fonctions :

faire help + nom de function puis valider.

Avant de commencer la programmation, utiliser les commandes clear all, close all pour initialiser l’en-
vironnement Matlab.

Exercice 1.

On note      
2 2 −4
u1 =  3  , u2 =  −1  et u3 =  −3 
−1 5 6
1. Définir ces vecteurs sous Matlab de plusieurs manières.
u3
2. Calculer u1 + u2 , u1 − 3u2 et .
6
3. Calculer k u1 k2 , k u2 k1 et k u3 k∞ .
4. Calculer le cosinus de l’angle formé par les vecteurs u1 et u2 .

Exercice 2.

Soient A1 , A2 et A3 les trois matrices suivantes


   
  4 0 2 3 0 −1
1 3
A1 = , A2 =  0 2 4  et A3 =  2 4 2  .
5 2
0 0 6 −1 0 3

1. Calculer les valeurs propres et les déterminants de Ai pour i = 1, .., 3


2. Pour chacune de ces matrices, trouver s’il existe P et D tel que Ai = P DP −1 .
3. Déterminer le rayon spectrale, rang et la trace de ces matrices Ai

2
- Indication : utiliser les fonctions (det, eig, rank, vrho,trace)

Exercice 3.

On note      
5/8 −1/4 1/8 1 5
A =  1/4 0 1/4  , b =  −1  , u0 =  2  ,
1/8 −1/4 5/8 1 −4
et on définit, pour n ≥ 0, la suite de vecteurs un+1 = Aun + b.

1. Ecrire une fonction "TP1_Exercice3.m" qui permet de calculer les termes de la suite un .
La syntaxe de début du programme est la suivante :

function [u] = TP1_Exercice3(n)


A=[5/8 -1/4 1/8; 1/4 0 1/4; 1/8 -1/4 5/8]; % on définit la matrice A
b=[1 ; 1; 1]; % le vecteur b
u0=[5;2;-4]; % le vecteur u0
u=...
for i= ? : ?
u= ...
end
2. En déduire la limite de la suite un

0.1 Répresentation graphique sous Matlab

Pour construire des graphiques sous matlab on peut utilise la fonction "plot" voici quelques para-
mètres :
Les couleurs .
b = bleu m = magenta
g = vert k = noir
r = rouge w = blanc

La représentation
. point + plus d diamant > triangle (droite)
des coordonnées v triangle
o cercle * étoile p pentagramme
x x-marque s carré < triangle (gauche) h hexagramme

Le type du trait .
- solide -. discontinu 2
: discontinu 1 – discontinu 3

Exemple d’application : exécuter les commandes suivantes

3
Fonction plot & comet

Construire des graphes Petit animation sous matlab

>> t=[-4*pi :0.001 :4*pi] ; >> t=[-4*pi :0.001 :4*pi] ;

>> plot(t,sin(t),’d-’) >> comet(t,t.*sin(t))

>> plot(cos(t), sin(t),’s :’) >> comet(t.*cos(t), t.*sin(t))

>> plot(t,t.*sin(t),’<-’) >> comet(sin(t).∧ 3, 1 + cos(t) − cos(t).∧ 4)

0.2 fonction subplot

Pour construire plusieurs graphes dans une seule image

Fonction subplot

>> t = 0 :pi/10 :2*pi ;


>> [X,Y,Z] = cylinder(4*cos(t)) ;
>> subplot(2,2,1) ; mesh(X) ; title(’X’) ;
>> subplot(2,2,2) ; mesh(Y) ; title(’Y’) ;
>> subplot(2,2,3) ; mesh(Z) ; title(’Z’) ;
>> subplot(2,2,4) ; mesh(X,Y,Z) ; title(’X,Y,Z’) ;

Exercice 1.

Soient f (x) = 10x − 9e−x et g(x) = x


2 − sin(x2 )

1) Ecrire les fonctions f et g sous Matlab, ensuite calculer f (0) , f 0 (0), g(0) et g 0 (0)

2) Construire les fonctions f et g sur [0, 1].


3) Montrer graphiquement que f et g admettent des racines dans [0, 1]

4
TP No :2
Approximation des racines d’une fonction réelle

Objectif de TP

L’objectif de ce tp est d’établir les méthodes d’approximation des racines d’une fonction réelle, c’est-
à-dire la résolution approchée du problème suivant :

étant donné f :]a, b[⊂ R → R, trouver α ∈ C tel que f (α) = 0

Commençons tout d’abord par cet exemple, considérons l’équation :

10x − 9e−x = 0

Les méthodes usuelles de transformation (transposition, utilisation de la fonction logarithme,...) ne


permettent pas de résoudre explicitement cette équation. Pourtant on observe graphiquement qu’elle
admet une solution unique sur [0, 1].
Pour cela, il suffit de taper sur le workspace de Matlab les commandes :
x=linspace(0,1,50);
y=10*x-9*exp(-x);
figure; plot(x,y);xlabel(’x’);ylabel(’y’);
Dans ce sujet, on va exposer les principales méthodes itératives de résolution d’une équation de la
forme
f (x) = 0,
où f est une fonction continue définie sur un intervalle [a, b]. On se placera dans le cas où, localement,
il y a une unique racine, pour en donner une algorithme d’approximation.

1 Méthode de Dichotomie

La méthode de dichotomie est fondée sur la propriété suivante :


Proposition (Théorème des zéros d’une fonction continue)
Soit une fonction continue f : [a, b] → R, si f (a)f (b) < 0, alors ∃α ∈]a, b[ tel que f (α) = 0.
Cette méthode consiste en une succession de divisions par deux de l’intervalle pour approcher de plus
en plus la racine de l’équation f (x) = 0, jusqu’à ce qu’une précision ε soit atteinte.

i) On partage [a, b] en deux intervalles égaux [a, a+b a+b


2 ] et [ 2 , b].
ii) Si le signe de f ( a+b a+b
2 ) est le même que celui de f (a), la racine c appartient à l’intervalle [ 2 , b].
a+b
Sinon, elle appartient à l’intervalle [a, 2 ].

5
iii) On réitère le procédé avec l’intervalle obtenu contenant c.
vi) On arrête l’itération lorsque la longueur de l’intervalle devient inférieure à un nombre ε fixé au
départ.

Remarque : A l’étape n, c appartient à l’intervalle de travail, qui a pour longueur


b−a
2n
D’une itération à la suivante, l’erreur est donc multipliée par 21 .

Algorithme de dichotomie

function [xn ,n]=Dichotomie(f, ε, a, b)

% Entrée :f, ε > 0, x0 , a et b


% Sortie : xn et n.

n = 0;


   

 Tant que b − a > ε Faire
 
 

a+b




 c= 2 ;
 
 
si f (c) = 0 alors afficher la valeur exacte de la racine de f est ”c”
  
 
  
  



  xn = c;




  sortir
  
  
  
  
 
si f (c)f (a) < 0 alors b = c;
  
  
   si non 
  

si non a = c;
 
 
 
 
 
 


 n = n + 1;



 xn = c;



 afficher la valeur approchée du point fixe de f est ”c”

afficher le nombre d’itérations pour aboutir à ce résultat est ”n”

Une valeur approchée à ε près de la racine α est c.

6
1.1 Application

On reprend l’équation initiale 10x − 9e−x = 0. Posons la fonction f sur l’intervalle [0, 1] par

f (x) = 10x − 9e−x ,


0
est continue, dérivable et sa dérivée f vérifie
0
f (x) = 10 + 9e−x > 0, ∀x ∈ [0, 1],

donc f est strictement croissante sur [0, 1].


9
De plus f (0) = −9 et f (1) = 10 − ≈ 6.69 sont de signes contraires.
e
On peut donc utiliser la méthode de dichotomie pour calculer à 10−6 près la solution de l’équation
proposée.
Données numériques : f (x) = 10x − 9e−x , a = 0, b = 1 et ε = 10−6 .

Remarque : La méthode de dichotomie a l’avantage d’exiger peu d’hypothèse sur la fonction. Elle sert
parfois de moyen de calcul d’une initialisation pour les algorithmes des autres méthodes. L’incovénient
majeur de cette méthode est la lenteur de convergence de son algorithme.

2 Méthode du point fixe

Parmi les méthodes de résolution de l’équation

f (x) = 0,

la méthode dite des approximations successives (ou du point fixe) est la plus importante. Son principe
est basé sur la constructiion d’une suite itérative approchant de plus en plus la racine exacte, son
premier élément (appelé initialisation) pouvant être n’importe quel point de l’intervalle de travail [a, b].
La méthode du point fixe s’applique à des équations de la forme

ϕ(x) = x.

A titre de rappel, on peut toujours écrire l’équation f (x) = 0 sous une forme équivalente de ce type.
Par exmple, l’équation 10x − 9e−x = 0 est équivalente à
9 −x
x= e .
10
On se place dans le cas où la fonction
ϕ : [a, b] → [a, b]
vérifie les hypothèses :
(H1) ϕ est continue et dérivable sur [a, b].
0
(H2) ∃M ∈]0, 1[: ∀x ∈ [a, b] |ϕ (x)| ≤ M

7
On dira que ϕ est contraction stricte. La méthode du point fixe est basée sur la proposition suivante.
Proposition : Lorsque ϕ vérifie les deux hypthèses (H1) et (H2), alors il existe une unique racine c
de l’équation ϕ(x) = x, applée point fixe de ϕ. D’où l’algorithme de la méthode du point fixe :

Algorithme du point fixe

function [xn ,n]=PointFixe(ϕ, ε, x0 , Nmax )

% Entrée : ϕ, ε > 0, x0 et Nmax le nombre maximal d’itérations.


% Sortie : xn et n.


n = 0;



 xn+1 = ϕ(xn );

   


 Tant que |xn+1 − xn | > ε et n ≤ Nmax Faire
 
 


  xn+1 = ϕ(xn );
 
 
n = n + 1;





 afficher la valeur approchée du point fixe de ϕ est ”xn ”


afficher le nombre d’itérations pour aboutir à ce résultat est ”n”

2.1 Application

Pour calculer à 10−6 près la solution, dans l’intervalle [0, 1], de l’équation
9 −x
x= e ,
10
par la méthode du point fixe, on procède comme suite

1. On définit la fonction ϕ, telle que


9 −x
ϕ(x) = e ,
10
cette fonction est continue et dérivable sur [0, 1].
(a) Vérifier les hypothèses (H1) et (H2) de la fonction ϕ
(b) Ecrire une fonction matlab "PointFixe.m" pour approcher la racine α de la fonction f
(c) Données numériques : ε = 10−6 , x0 = 0.2 et Nmax = 100

8
2. Utiliser ce programme pour déterminer la racine de la fonction f2 (x) = x2 + ln(x) sur [1/2, 1]
(a) Données numériques : ε = 10−7 , x0 = 0.7 et Nmax = 100

3 Méthode de Newton

La méthode de Newton est une méthode de point fixe pour la fonction

f (x)
ϕ(x) = x − f 0 (x) si f 0 (x) 6= 0
xn+1 = xn − ff0(x n)
(xn )

Algorithme de Newton

function [xn ,n]=Newton(f, ε, x0 , Nmax )

% Entrée : f, ε > 0, x0 et Nmax le nombre maximal d’itérations.


% Sortie : xn et n.


n = 0;


f (xn )

 xn+1 = xn − f 0 (xn ) ;


   

 Tant que |xn+1 − xn | > ε et n ≤ Nmax Faire
 
 
 
f (xn )
 xn+1 = xn − f 0 (xn ) ;
 
 

 
n = n + 1;






 afficher la valeur approchée du point fixe de ϕ est ”xn ”

afficher le nombre d’itérations pour aboutir à ce résultat est ”n”

3.1 Application

1. Ecrire une fonction "Newton.m" basé sur la méthode de Newton pour approcher la racine α
de la fonction f donner une estimation de cette racine à ε = 10−6 prés ainsi que le nombre
d’itérations nécessaires pour l’obtenir.
2. Dans quel intervalle doit-on choisir la valeur initiale pour asurer la convergence.

9
3. Ecrire une programme qui permet de comparer entre les trois méthodes
4. Données numériques : f (x) = 10x − 9e−x , ε = 10−6 , x0 = 0.3 et Nmax = 1000

4 Quelques problème physique à résoudre

4.1 Problème 1 (Équation d’état d’un gaz)

Nous voulons déterminer le volume V occupé par un gaz dont la température est T et dont la pression
est p. L’équation d’état est donnée par :

 N2 
p+a (V − N b) = kN T.
V2

Où a et b sont deux coefficients qui dépendent du gaz considéré, N est le nombre de molécules contenus
dans le volume V et k est la constante de Boltzmann.
Nous devons donc résoudre une équation non linéaire dont la racine est V0 .

Exemple du CO2 :

— Pour CO2 (dioxyde de carbone) les coefficients a et b dans ce problème prennent les valeurs
suivantes : a = 0.401P a.m6 , b = 42.7 × 10−6 m3 (P a signifie Pascal).

— Question : Trouver le volume occupé par 1000 molécules de CO2 à la température T = 300k et
la pression p = 3.5 × 107 P a, par les deux méthodes (dichotomie et Newton), avec une tolérance
de 10−12 (la constante de Boltzmann vaut k = 1.3806503 × 10−23 Joule.K −1 ). On considére
l’intervalle ]0.01, 0.06[.

4.2 Problème 2 (mécanique statique)

Considérons le système mécanique représenté par les quatre barres rigides ai de la Figure 1. Pour une
valeur admissible de l’angle β, déterminons la valeur de l’angle α entre les barres a1 et a2 . Partant de
la relation vectorielle

a1 − a2 − a3 − a4 = 0

et remarquant que la barre a1 est toujours alignée avec l’axe des x, on peut déduire les relations
suivantes entre β et α.

10
Figure 1 – Le système de quatre barres du problème statique

a1 a1 a2 + a22 − a23 + a24


cos(β) − cos(α) − cos(β − α) = − 1
a2 a4 2a2 a4

où ai est la longueur connue de la i-ème barre. Cette égalité, appelée équation de Freudenstein, peut
être récrite comme suit : f (α) = 0, où

a1 a1 a2 + a22 − a23 + a24


f (x) = cos(β) − cos(x) − cos(β − x) + 1
a2 a4 2a2 a4

Une expression explicite de la solution n’existe que pour des valeurs particulières de β. Signalons éga-
lement qu’il n’y a pas existence d’une solution pour toutes les valeurs de β, et qu’une solution peut ne
pas être unique. Pour résoudre cette équation pour toute valeur de β entre 0 et π, nous devrons avoir
recours à des méthodes numériques

Question : Utiliser la méthode de Newton pour résoudre le problème 2 pour β ∈ [0, 2π


3 ] avec une tolérance
de 10−5 . Supposer que les longueurs des barres sont a1 = 10cm, a2 = 13cm, a3 = 8cm et a4 = 10cm.
Pour chaque valeur de β, considérer deux valeurs initiales, x0 = −0.1 et x0 = 2π
3

11
TP No : 3
Résolution des systèmes linéaires (Méthodes Directes)

5 Objectif de TP

Dans ce TP, on va s’intéresser à la résolution du système matricielle de la forme Ax = b où A une


matrice carrée connue et b un vecteur donné et x le vecteur inconnu. Dans un premier temps, nous
allons utiliser deux méthodes de résolution : l’algorithme d’élimination de Gauss et la méthode de
factorisation LU.
⊗ La méthode d’élimination de Gauss (avec et sans pivot) est une méthode pour transformer un
système en un autre système équivalent (ayant les mêmes solutions) qui est triangulaire et donc
facile à résoudre. Les opérations autorisées pour transformer ce système sont :
• échange de deux lignes.
• multiplication d’une ligne par un nombre non nul.
• addition d’un multiple d’une ligne à une autre ligne.
On est alors ramené à la résolution d’un système linéaire T x = b̃, où la matrice T est triangu-
laire et inversible. Ceci se fait très facilement par substitution récursive. On appelle ce procédé
remontée dans le cas d’une matrice T triangulaire supérieure et descente dans le cas d’une ma-
trice T triangulaire inférieure. Il faudra remarquer que l’on résoud ainsi le système T x = b̃ sans
inverser la matrice T.
⊗ La deuxième méthode proposée consiste à factoriser la matrice A en un produit de deux matrices
triangulaires A = LU, où L est triangulaire supérieure (L pour lower en Anglais) et U est
triangulaire sup
’erieure (U pour upper en Anglais). Il s’agit en fait du même algorithme que celui de l’élimination
de Gauss dans le cas particulier où on ne pivote jamais. Une fois établie la fatorisation LU de A,
la résolution du système linéaire Ax = b est équivalente à la simple résolution de deux systèmes
triangulaires Ly = b puis U x = y, soit LU x = b.

6 Sujet de TP

6.1 Cas d’une matrice triangulaire inférieure ou supérieure

1. Ouvrir un fichier qu’on nomme trianginf.m. Dans ce fichier, on va créer la fonction Matlab qui
à partir d’une matrice inférieure A et d’un second membre b, résout le système AX = b. avec
Err=||AX-b||: l’erreur de la méthode.
function [X,Err]=trianginf(A,b)
% A est la matrice triangulaire inférieure et b le vecteur second membre.

12
n=length(b);
x(1)=
for i=2:n
x(i)=...
end

Algorithme dans le cas triangulaire inférieure

function [x,Err]=trianginf(A,b)

% Entrée : A = (aij )1≤i,j≤n et b = (bi )1≤i≤n .


% Sortie : x = (xi )1≤i≤n la solution du système linéaire.

b1


 x1 = ;


 a11
Faire i=2 à n




 i−1
1 

 X 
xi = bi − aij xj ;
aii


 j=1
Fin boucle i








Err = norm(Ax − b);

     
4 0 0 3 0 0 1
Application 1 : soient A1 =  9 2 0  , A2 =  7 4 0  et b =  5 
7 −6 6 8 0 3 3
Trouver les solutions et l’erreurs de l’équation Ai X = b pour i = 1, 2

2. Ouvrir un fichier qu’on nomme triangsup.m. Dans ce fichier, on va créer la fonction Matlab
qui à partir d’une matrice supérieure A et d’un second membre b, résout le système Ax = b. La
syntaxe de début du programme est la suivante :

function [X,Err]=triangsup(A,b)
% A est la matrice triangulaire supérieure et b le vecteur second membre.
n=length(b);
x(n)=
for i=n-1:-1:1 % boucle incrément négatif
x(i)=...
end

13
Algorithme dans le cas triangulaire supérieure

function [x,Err]=triangsup(A,b)

% Entrée : A = (aij )1≤i,j≤n et b = (bi )1≤i≤n .


% Sortie : x = (xi )1≤i≤n la solution du système linéaire.


bn

 xn = ;
ann



Faire i=n-1 à 1




 n

 1  X 
xi = bi − aij xj ;
aii


 j=i+1



 Fin boucle i




Err = norm(Ax − b);

     
4 0 2 3 0 −1 1
Application 2 : soient A1 = 0 2 4 , A2 = 0 4 2
    et b =  5 
0 0 6 0 0 3 3
Trouver les solutions de l’équation Ai X = b, par la méthode du pivot de Gauss a

6.2 Méthode de Gauss

- Ouvrir un fichier qu’on nomme Gauss.m. Dans ce fichier, on va créer la fonction Matlab qui à
partir d’une matrice A effectue de Gauss et résout le système Ax = b. La syntaxe de début du
programme est la suivante :

function [X,Err]=Gauss(A,b)
% A est la matrice principale et b le vecteur second membre.
n=length(b);
.....
end
 
  2 3 3 1  
1 2 3  −4 −6 3 2 
  1
ε 1
Application 3 : soient A1 =  4 5 6  , A2 =   , A3 = , b1 =  2  ,
−1 1 1 1  1 1
7 8 9 3
−2 −1 1 1
 
15  
 3 
b2 =   et b3 = 1 , avec ε = 0.01, 0.001, 0.0001.
 5  2
1
Trouver les solutions et l’erreurs de l’équation Ai X = bi , par la méthode du pivot de Gauss.

14
Algorithme du pivot de Gauss

function [x,Err]=Gauss(A,b)

% Entrée : A = (aij )1≤i,j≤n et b = (bi )1≤i≤n .


% Sortie : x = (xi )1≤i≤n la solution du système linéaire.

% Triangulation de la matrice

k=1 ;

Tant que (k < n) faire



Pivot = akk ;


 Si (Pivot 6= 0)


 

 Faire i=k+1 à n
a
  mik = ik
 
 
  akk
 
  
  Faire j=k à n
 
   aij = aij − mik akj
 
 
  Fin de la boucle pour j
 
 
  bi = bi − mik bk


 Fin de la boucle pour i


 k = k + 1;



 Sinon



 
 l = k;
 
 
  
  Tant que (alk = 0)
 
  
 
 
 l = l + 1;
 
al. = ak. Pivotage Ll = Lk
% Résolution du système triangulaire supérieure

bn
xn = ;
ann
Faire i = n − 1 à 1
n
1 X 
xi = bi − aij xj ;
aii
j=i+1
Fin de la boucle pour i

15
6.3 Méthode de décomposition LU

- Le but de cette section est d’écrire une fonction ResolutionLU.m sous Matlab qui permet à
partir d’une matrice A et un vecteur b, résout le système Ax = b avec de la factorisation LU de
la matrice A. La syntaxe de début du programme est la suivante

1 Algorithme de LU la fonction "DecompLU.m"

Algorithme de LU

function [L,U] = DecompLU(A)

% Entrées : A = (aij ), 1 ≤ i, j ≤ n (la matrice principale).


% Sorties : L = (lij ), 1 ≤ i, j ≤ n, & U = (uij ), 1 ≤ i, j ≤ n.

l11 = 1;

Faire j = 1 à n

u1j = a1j ; % Détermination de la première ligne de U

Fin de la boucle pour j

Faire i = 2 à n
ai1
li1 = a11 ; % Détermination de la première colonne de L

Fin de la boucle pour i

Faire i = 2 à n

lii = 1;
i−1
X
uii = aii − lik uki ;
k=1

Faire j = i + 1 à n
i−1
X
uij = aij − lik ukj ;
k=1
i−1
1  X 
lji = aji − ljk uki ;
uii
k=1

Fin de la boucle pour j

Fin de la boucle pour i

2 Résolution d’un système linéaire avec méthode de LU (la fonction "ResolutionLU.m")

16
La fonction ResolutionLU.m

function [X, Err] = ResolutionLU(A,b)


[L, U ] = DecompLU(A) ;
Y=trianginf(L,b) ;
[X, Err]=triangsup(U,Y) ;
end

     
1 2 3 1 2 3 1
Application 4 : soient A1 = 4 5 6
  , A2 =  4 5 6  et b =  5 
1 8 10 7 8 9 3
Trouver les solutions et l’erreurs de l’équation Ai X = b pour i = 1, 2

7 Travail à faire par les étudiants (compte rendu)

Les comptes-rendus sont à rendre au plus tard lors de la prochaine séance.

Partie I (Méthode de Cholesky ) : On rappelle la méthode de Cholesky permettant de factoriser


une matrice A symétrique définie positive sous la forme A = CC T , où C est une matrice triangulaire
inférieure inversible.

17
Algorithme de Cholesky

function [C] = Cholesky(A)

% Entrées : A = (aij ), 1 ≤ i, j ≤ n (la matrice principale).


% Sorties : C = (Cij ), 1 ≤ i ≤ n, 1 ≤ j ≤ n.

C11 = a11 ;

Faire i = 2 à n
ai1
Ci1 = C11 ; % Détermination de la première colonne de C

Fin de la boucle pour i

Faire j = 2 à n
v
u
u j−1
X
Cjj = tajj − 2 ;
Cjk
k=1

Faire i = j + 1 à n
j−1
1  X 
Cij = aij − Cik Cjk ;
Cjj
k=1
Fin de la boucle pour i

Fin de la boucle pour j

(i) Ecrire une fonction Matlab


[C]=cholesky(A)
qui, étant donné la matrice A calcule la matrice C.
Application : On définit  
15 10 18 12
 10 15 7 13 
A=  18 7 27 7 

12 13 7 22
calculer C. Est-ce que A est définie postive ?
(ii) Ecrire une fonction Matlab
[x]=resolchol(A,b)
qui, étant donnés la matrice A symétrique définie positive et le vecteur b, calcule la solution x
de Ax = b en utilisant la fonction cholesky et les fonctions triangsup et trianginf.
Application : Résoudre la système Ax = b avec la matrice A précédente et
 
53
 72 
b=  26 

97

18
Partie II (Méthode de Richtmayer) :

L’algorithme de Richtmayer permet de résoudre un système d’équations linéaires Ax = u lorsque A est


une matrice tridiagonale,

 
b1 c1 0 ··· ··· ··· 0
 a2
 b2 c2 0 ··· ··· 0 

 .. 
 0
 a3 b3 c3 0 ··· . 

 .. .. .. .. .. .. .. 
A= . . . . . . . .
 
 ··· ··· ··· ··· ··· ··· ··· 
 .. .. ..
 
.. .. .. .. 
 . . . . . . . 
 
 0 ··· ··· 0 an−1 bn−1 cn−1 
0 ··· ··· ··· 0 an bn
L’algorithme de Richtmayer est donnée comme suit

Algorithme de Richtmayer

function [x] = Richtmayer(a,b,c,u)


c1 u1
e1 = − , f1 = ,
b1 b1
ci
ei = − , pour 2 ≤ i ≤ n − 1
ai ei−1 + bi
ui − ai fi−1
fi = , pour 2 ≤ i ≤ n.
ai ei−1 + bi

xn = fn .

xi = ei xi+1 + fi , pour i = n − 1, ..., 1

Ecrire une fonction Matlab


[x]=rich(a,b,c,u)
qui, étant donné les vecteurs a, b, c, u, calcule la solution du système Ax = b par la méthode précédente.
Application : utiliser la fonction précédente pour déterminer la solution de Ax = u dans le cas :
   
2 3 0 0 0 −1
 1 3 1 0 0   0 
   
A =  0 2 1 2 0  et u = 
 
 0 .

 0 0 1 1 1   3 
0 0 0 2 1 1

19
TP No :4
Résolution des systèmes linéaires (Méthodes Itératives)

8 Méthode de Jacobi
Soit A une matrice carrée inversible, écrire une fonction Matlab

[x,k]=jacobi(A,b,N,ε,x0 )

qui, étant donné la matrice A et le vecteur b, calculer la solution de Ax = b par la méthode de


Jacobi où :
• ε est la précision utilisée pour le test d’arrêt. On pourra tester par exemple

||x(k+1) − x(k) ||22


< ε,
||x(k+1) ||22

• N est un nombre maximal d’itérations,


• x0 est un vecteur initial,
• k est le nombre d’itérations éffectuées pour obtenir la précision voulue.
Pour arrêter l’excution de la fonction en cas de convergence, vous pouvez utiliser la commande
return.
Lorsque le nombre maximal d’itérations est atteint avant que la précision voulue ne soit obtenue,
affincher un message d’erreur signalant que la méthode de Jacobi n’a pas convergé.

8.1 Algorithme de Jacobi


pour la résolution d’un système linéaire Ax = b, où A = (aij )1≤i,j≤n est une matrice avec les
aii 6= 0. On décomposer la matrice A sous cette forme :
— A=D−E−F
— D : diagonale de A.
— E : triangulaire inférieure avec des 0 sur le diagonale.
— F : triangulaire supérieure avec des 0 sur le diagonale.

En suite, l’équation : AX = b ⇔ DX = (E + F )X + b ⇔ X = X − D−1 AX + D−1 b

20
Algorithme Méthode de Jacobi

function [x,k]=jacobi(A,b,N,ε,x0 )

% Entrées : A = (aij ), 1 ≤ i, j ≤ n, b = (bi )1≤i≤n , N ,ε et x0 .


% Sorties : x = (xi ), 1 ≤ i ≤ n, et k le nombre d’iteration.

 D := diagonale de A;








 k = 0;




X(k+1) = X(k) − D−1 AX(k) + D−1 b;






 ||X(k+1) − X(k) ||2 
2
Tant que ≥ ε && k < N Faire


||X(k+1) ||22








X(k+1) = X(k) − D−1 AX(k) + D−1 b










k = k + 1;

     
10 −2 1 2 −1 1 9
Application 1 : soient A1 =  −2 10 −2  , A2 =  2 2 2  et b =  12  ,
−2 −5 10 −1 −1 2 18

1. Trouver les solutions et les erreurs de la résolution de Ai X = b pour i = 1, 2, par la méthode


de Jacobi.
 
1
2. Données Numériques : N = 1000, ε = 10 , x0 = −10  0 
0

9 Méthode de Gauss-Seidel
Soit A une matrice carrée inversible, écrire une fonction Matlab

[x,k]=GaussSeidel(A,b,N,ε,x0 )

qui, étant donné la matrice A et le vecteur b, calcule la solution de Ax = b par la méthode de


Gauss-Seidel où :
• ε est la précision utilisée pour le test d’arrêt. On pourra tester par exemple

||x(k+1) − x(k) ||22


< ε,
||x(k+1) ||22

• N est un nombre maximal d’itérations,


• x0 est un vecteur initial,

21
• k est le nombre d’itérations éffectuées pour obtenir la précision voulue.
Pour arrêter l’excution de la fonction en cas de convergence, vous pouvez utiliser la commande
return.
Lorsque le nombre maximal d’itérations est atteint avant que la précision voulue ne soit obtenue,
affincher un message d’erreur signalant que la méthode de Gauss-Seidel n’a pas convergé.

9.1 Algorithme de Gauss Seidel


pour la résolution d’un système linéaire Ax = b, où A = (aij )1≤i,j≤n est une matrice avec les
aii 6= 0. On décomposer la matrice A sous cette forme :
— A=P −N
— P := D − E triangulaire inférieure avec des éléments diagonaux de A sur le diagonale.
— N := F triangulaire supérieure avec des 0 sur le diagonale.

En suite, l’équation : AX = b ⇔ PX = NX + b ⇔ X = X − P −1 AX + P −1 b

Algorithme Méthode de Gauss Seidel

function [x,k]= GaussSeidel(A,b,N,ε,x0 )

% Entrées : A = (aij ), 1 ≤ i, j ≤ n, b = (bi )1≤i≤n , N ,ε et x0 .


% Sorties : x = (xi ), 1 ≤ i ≤ n, et k le nombre d’iteration.

 P := Triangulaire inférieure de A;








 k = 0;




X(k+1) = X(k) − P −1 AX(k) + P −1 b;






 ||X(k+1) − X(k) ||2 
2
Tant que ≥ ε && k < N Faire


||X(k+1) ||22








X(k+1) = X(k) − P −1 AX(k) + P −1 b










k = k + 1;

     
10 −2 1 2 −1 1 9
Application 2 : soient A1 =  −2 10 −2  , A2 =  2 2 2  et b =  12  ,
−2 −5 10 −1 −1 2 18
1. Trouver les solutions et les erreurs de la résolution de Ai X = b pour i = 1, 2, par la méthode
de Gauss-Seidel.  
1
2. Données Numériques : N = 1000, ε = 10−10 , x0 =  0 
0
3. Comparer les résultats.

22
10 Exemple d’application en physique

On considère le déplacement vertical u(x) d’un câble, représenté au repos par le segment [a, b] = [0, 1],
et fixé aux extrémités, sur lequel on applique une force f (x). Ce déplacement u est la résolution de
l’équation différentielle suivante :
 00
−u (x) = f (x), pour x ∈]0, 1[,
(1)
u(0) = 0, u(1) = 0

Soit N ∈ N, h = N1 et xi = ih pour i = 1, ..., .N


Pour approcher la solution u(x) on considère la discrétisation de l’intervalle [0, 1] en N sous-intervalles
[xi , xi+1 ], et on construit Xi de u(xi ) par la méthode des différences finies. Cette méthode requiert de
résoudre numériquement le système linéaire tridiagonale

AX = b

qui suit
     
2 −1 0 ··· ··· ··· 0 u1 f (x1 )
 −1 2 −1 0 ··· ···  0 u2   f (x2 ) 
     

 0 −1 2
  .. u3   f (x3 ) 
−1 0 · · ·   .   
   ..   .. 
. .. .. .. .. .. .. . .
 .
1      
Au = b ⇔ 2  . . . . . . .
. =
    
.. ..
h

 ··· ··· ··· ··· ··· ··· ··· . .
     
 .. .. .. .. ..
    
.. .. ..  ..   
 . . . . . .   . .   . 
     
 0 ··· ··· 0 −1 2 −1   uN −2   f (xN −2 ) 
0 ··· ··· · · · 0 −1 2 uN −1 f (xN −1 )
Plus N est grand, plus l’approximation sera précise et plus la taille du système linéaire à résoudre sera
élevée.
1. Résoudre analytiquement l’équation différentielle (1) pour f (x) = x(1 − x)
- Indication : la solution analytique de cette équation est
Z x Z 1 Z y
u(x) = − F (y)dy + x F (y)dy avec F (y) = f (t)dt.
0 0 0

2. On suppose que la force appliquée soit f (x) = x(1−x) et on prend N = 20 intervalles. Construire
la matrice A et le vecteur b correspondants, à l’aide des commandes suivantes
f=’x.*(1-x)’;
N=20; h=1/N;
x=linspace(0,1,N);
b=eval(f)’;
A = (N.∧ 2) ∗ (diag(2 ∗ ones(N, 1), 0) − diag(ones(N − 1, 1), 1) − diag(ones(N − 1, 1), −1)) ;
3. Calculer la solution du système linéaire AX = b à partir de la factorisation LU de A. Utiliser
les commandes tic et toc pour calculer le temps nécassaire (voir exemple ci-dessous). Ensuite
comparer avec le temps de calcul pour résoudre directement :
tic; u=A; toc; Refaites la même comparaision avec factorisation de Cholesky de A.
¯
4. Programmer un programmme qui résout cette équation différentielle par les différences finies,
et reprétente le déplacement u du câble aux noeuds xi de l’intervalle [0, 1]. Comparer graphi-
quement le déplacement approché avec la solution exacte du problème (1).
23
TP No :5 Statistiques descriptives
Réalisation de tableaux, graphiques, droite de Régression, corrélation

11 Forme des données

En statistique on veillera toujours à ce que les données aient la forme suivante : les variables en colonne
et les individus en ligne. La première ligne devra comporter le nom des variables. Si les données n’ont pas
initialement sous cette forme on veillera à la leur donner. Ceci simplifiera grandement les traitements
ultérieurs dans Excel ou tout autre logiciel statistique.

11.1 Les fonctions sous Excel :

Moyenne, variance, écart-type, médiane, quartiles, centiles

- La fonction MOYENNE permet de calculer la moyenne.


- La fonction VAR permet de calculer la variance (attention les autres variantes produisent des
valeurs légèrement différentes).
- La fonction ECARTYPE permet de calculer l’écart-type.
- La fonction MEDIANE permet de calculer la médiane.
- La fonction QUARTILE.INCLURE permet des calculer les quartiles, elle réclame en second argu-
ment le numéro du quartile à calculer 0,1,2,3, ou 4. (exemple Q1 = QUARTILE.INCLURE(matrice,1)
et Q3 =QUARTILE.INCLURE(matrice,3) )
- La fonction COEFFICIENT.CORRELATION(matrice1 ;matrice2) permet de calculer le coeffi-
cient de corrélation.

Tous ces indicateurs peuvent aussi être calculés simplement à partir de formules. Il n’existe en général
pas dans Excel de fonction bien adaptée au traitement des données par classe. Dans ce cas, il faut
repartir du cours et adapter les formules.
Ces indicateurs peuvent aussi être facilement obtenus à l’aide de l’utilitaire d ?analyse statistique (Don-
nées, puis Utilitaire d’analyse, puis Statistiques descriptives), attention de l’avoir installé au préalable.

12 Partie I : Statistiques descriptives 1D

Exercice 1 "Caractères Quantitatifs discrets (Diagrammes)"

24
Dans une classe, les notes obtenues à un devoir sont :
Notes : 8; 8; 8; 11; 11; 13; 13; 14; 14; 16; 16; 16; 17; 18; 18

Notes 8 11 13 14 16 17 18
Effectif

1) Saisir le tableau dans un fichier "Exercice1" puis représenter le diagramme en bâtons corres-
pondant a ce tableau

Exercice 2 "Caractères Quantitatifs continus(Histogrammes)"

On a demandé la taille des élèves dans une classe de 33 élèves.


On obtient les résultats suivants :

Taille(en cm) 150-160 160-170 170-175 175-180 180-190 190-200


Effectif 3 12 9 6 2 1

1) Saisir le tableau dans un nouveau fichier "Exercice2", puis tracer l’Histogramme correspondant
à ce tableau.

Exercice 3 "Caractères Qualitatifs (Diagrammes Circulaires)"

Dans une entreprise, on a demandé aux employés leur moyen de transport pour venir au travail.
Les résultats sont les suivants :

Moyen utilisé à pied en voiture en métro


Effectif 50 110 200

1) Saisir le tableau dans un nouveau fichier "Exercice3", puis tracer le Diagramme circulaire cor-
respondant à ce tableau.

Rappel :

— Fréquence : on appelle fréquence le rapport entre l’effectif d’une valeur et l’effectif total. Si
ni
N = n1 + n2 + · · · + nt , alors fi = .
N
— Fréquence cumulée : on note gk la fréquence cumulée du caractère xk , c’est-à-dire gk = f1 +
ni
· · · + fk où fi = est la fréquence du caractère xi . La courbe des fréquences cumulées est celle
N
obtenue en joignant les points (xi , gi ).

Exercice 4 "Courbe de Fréquence Cumulée"

25
Notes 1 2 3 4 5 6 7 8 9 10
Effectif 2 1 6 5 2 9 7 1 0 1
Fréquence
Fréquence
cumulée

1) Saisir le tableau dans un nouveau fichier "Exercice4" puis compléter.


4) Construire la courbe de fréquences cumulées.

13 Partie II : Statistique à deux dimensions

Dans la première partie, les séries statistiques étudiées étaient des séries simples : on étudiait un seul
caractère dans une population. Il peut être utilise de considérer en même temps plusieurs caractères
d’une même population.
Par exemple, la température et la pression d’un milieu à différentes heures d’une journée.

L’échantillon est noté Ω : l’effectif de l’échantillon est n = card(Ω). Dans le cadre de la corrélation,
 nous
sur un échantillon de n observation, constituées de couples (xi , yi ) c-a-d Ω = (xi , yi ), i =
travaillons
1...,n .

n
1X
— Moyenne : x = xi
n
i=1
n
1X
— Variance : V (x) = (xi − x)2
n
i=1
n
1X
— Moyenne : y = yi
n
i=1
n
1X
— Variance : V (y) = (yi − y)2
n
i=1
n
 1X  
— Covariance : Cov(x, y) = E [X − E(X)][Y − E(Y )] = x i − x yi − y .
n
i=1
Propriétés :

— Cov(X, Y ) = E(XY ) − E(X)E(Y )


— Cov(X, Y ) = Cov(Y, X)
— Cov(aX + b, cY + d) = acCov(X, Y )
— X et Y indépendants −→ Cov(X, Y ) = 0, la réciproque étant fausse.
Cov(x, y)
— Coefficient de corrélation : r = p
V (x)V (y)

Exercice 5 (Corrélation)

26
La corrélation entre deux variables X et Y mesure le lien linéaire entre deux variables. La fonction
correl calcule la corrélation entre deux variables .

On considère deux vecteurs X = (xi ) et Y = (yi ) avec 1 ≤ i ≤ 50



- Tracer le nuage de points xi , yi 1 ≤ i ≤ 50

1) Vérifier que si xi = i et yi = 2xi alors le coefficient de corrélation entre X et Y vaut 1.


2) Vérifier que si xi = i et yi = −2xi alors le coefficient de corrélation entre X et Y vaut −1.

3) Calculer le coefficient de corrélation entre X et Y si xi = i et yi = xi .
4) Calculer le coefficient de corrélation entre X et Y si xi = i et yi = x2i .

Exercice 6 (Coefficient de Corrélation)

1) Simuler deux échantillons X = (xi ) et Y = (yi ) avec 1 ≤ i ≤ 20 indépendants et de même loi


normale de moyenne 0 et de variance  V = 1, N (0, 1).
2) Tracer le nuage de points xi , yi i ∈ 1, . . . , 20 .
3) Calculer le coefficient de corrélation entre les deux échantillons aléatoires X et Y .
4) Commenter. 
5) Construire la série Z = (zi ), i ∈ 1, . . . , 20 définie par z1 = x1 et pour j > 1 zj = azj−1 + xj
où a = 0, 85 
6) Tracer le nuage  de points (zi , zi+1 ), i ∈ 1, . . . , 19 et calculer le coefficient de corrélation entre
z1 , . . . , z19 et z2 , . . . , z20 .
7) Commenter.

Exercice 7

Dans un circuit électrique, on a relevé l’évolution temporelle de la tension daux bornes d’un appareil
inconnu, repris dans le tableau ci dessous

T (en ms) 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0
U (en Volt) 5.7 5.5 5.3 5.1 4.9 4.8 4.5 4.2 3.8 3.4 3.0 2.5 2 1.4 0.7

1) Représenter ce nuage de points.


2) On ajuste cette série par le modèle linéaire U = aT + b. Déterminer les coefficients de ce modèle.
3) Déterminer , au niveau de 95% l’intervalle de prévision de la tension pour un temps de 3.3ms

Exercice 8 (Régression Linéaire)

27
En 1973, F. J. Anscombe a publié dans le numéro 27 de American Statistician un jeu de données
très intéressantes pour montrer les pièges du calcul "aveugle" du coefficient de corrélation linéaire. Il
s’agit de 11 individus sur lesquels sont mesurées 8 variables. On notera que les variables x1 , x2 , x3 sont
identiques.

x1 x2 x3 x4 y1 y2 y3 y4
1 10 10 10 8 8.04 9.14 7.46 6.58
2 8 8 8 8 6.95 8.14 6.77 5.76
3 13 13 13 8 7.58 8.74 12.74 7.71
4 9 9 9 8 8.81 8.77 7.11 8.84
5 11 11 11 8 8.33 9.26 7.81 8.47
6 14 14 14 8 9.96 8.10 8.84 7.04
7 6 6 6 8 7.24 6.13 6.08 5.25
8 4 4 4 19 4.26 3.10 5.39 12.50
9 12 12 12 8 10.84 9.13 8.15 5.56
10 7 7 7 8 4.82 7.26 6.42 7.91
11 5 5 5 8 5.68 4.74 5.73 6.89

1) Calculer la moyenne et la variance des 8 variables x1 , . . . , x4 et y1 , . . . , y4 .


2) Calculer les coefficients de corrélation des couples (x1 , y1 ), . . . , (x4 , y4 ). Que constate t-on ?
3) Tracer la représentation des couples (x1 , y1 ), . . . , (x4 , y4 ). Commenter
4) Tracer la droite de régression décrite par la méthode des MOINDRES CARRÉS.

Exercice 9 (Droite de régression et points atypiques)

Douze personnes sont inscrites à une formation. Au début de la formation, ces stagiaires subissent une
épreuve A notée sur 20. A la fin de la formation, elles subissent une épreuve B de niveau identique.
Les résultats sont donnés dans le tableau suivant :

Epreuve A 3 4 6 7 9 10 9 11 12 13 15 4
Epreuve B 8 9 10 13 15 14 13 16 13 19 6 19

1) Représenter le nuage de points. Déterminer la droite de régression. Calculer le coefficient de


détermination. Commenter.
2) Deux stagiaires semblent se distinguer des autres. Les supprimer et déterminer la droite de
régression sur les dix points restants.
3) Calculer le coefficient de détermination. Commenter

28
TP No :6 Recherche Opérationnelle
Méthode graphique & Algorithme de Simplexe

14 Introduction

Dans ce TP, on s’intéresse à la résolution du système linéaire z =< X, C > sous des contraintes AX ≤ b
où A est une matrice de taille n × m, z la fonction objectif et X le vecteur inconnu. Pour ce faire, on
utilisera les deux méthodes suivante :

1 Méthode graphique : en hachurant la zone correspondant aux contraintes dite domaine réalisable,
et en traçant les lignes de niveaux (des lignes parallèles dont chacune correspond à une valeur
constante de z) de la fonction à maximiser. On obtient ainsi la solution optimale elle correspond
à un "sommet" du domaine réalisable.
2 Méthode du simplexe : c’est un algorithme fondamental pour la résolution des programmes
linéaires, dont notamment les problèmes économiques. Il a été mis au point par le mathémati-
cien américain George Dantzig en 1947. Ainsi, l’algorithme permet de maximiser ou minimiser
une relation économique dite fonction objective de plusieurs variables sous certaines contraintes.

Exemple : Soit P1 le programme suivant

max [Z] = x1 + 3x2




 L1 : x1 + x2 ≤ 14
L2 : −2x1 + 3x2 ≤ 12

Sous les contraintes :
L : 2x1 − x2 ≤ 12
 3


L4 : x1 ≥ 0, x2 ≥ 0

Avec

- Z La fonction objectif.
- L1 à L3 Les contraintes.
- L4 Les contraintes de non négativité.

Question : Trouver la solution du programme linéaire (P1 ) ?

— On commencer par résoudre les contraintes L1 à L4 la zone des solutions réalisable.


— Ensuite, Traçant les lignes de niveaux qui correspondant à l’équation Z = cste.
— Enfin, résoudre le problème.

29
15 Méthode graphique

On trace les droites d’équations : L1 : x + y = 14, L2 : −2x + 3y = 12 et L3 : 2x − y = 12,


ensuite en hachurant la zone correspondante aux contraintes, et en traçant les lignes de niveaux (des
lignes parallèles) de la fonction à maximiser. On obtient ainsi la solution optimale qui correspond à un
"sommet" du domaine réalisable.

En utilisant la fonction drawfr.m fournie aux étudiants pendant la séance de TP pour tracer l ?en-
semble des contraintes L1 à L4 .

Exemple pour le programme P1 : Le programme dans l’éditeur de Matlab est :

clear
c =[1 3] ; ←− Les paramètres de la fonction objectif Z.
A =[1 1 ; -2 3 ; 2 -1] ; ←− Matrice des contraintes.
rel =’< < <’ ; ←− Inégalité des contraintes ou ’> > >’
b=[14 ;12 ;12] ; ←− Le second membre des contraintes
drawfr(c,A,rel,b)

Dans ce cas on trouve le resultat suivant :

Feasible region and a level line with the objective value = 8.1667
8

— La zone rouge est l’en- 5


semble des solution
x2

4
réalisables du programme
P1 . 3

2
— La ligne bleue est une
ligne de niveau (Z = cst). 1

0
0 1 2 3 4 5 6 7 8
x1

Figure 2 – zone des solutions réalisables du P1

Donc la solution est situé dans le sommet en haut de coordonnée (x1 , x2 ) = (6, 8) ce qui donne la
valeur de la fonction objectif z = 1 × 6 + 3 × 8 = 6 + 24 = 30

Exercice 1.

30
On considérer les deux programmes linéaires suivants :

Le programme linéaire P2
Le programme linéaire P3

max [Z] = 7x + 5y
 max [Z] = x + 2y
L1 : x ≤ 300 

 L1 : x + 3y ≥ 12
 L2 : y ≤ 400

 

L2 : 2x + y ≥ 14

Les contraintes : L3 : x + y ≤ 500 Les contraintes :
L : 4x + y ≥ 8
L : 2x + y ≤ 700  3
 
 4
 
L4 : x ≥ 0, y ≥ 0


L5 : x ≥ 0, y ≥ 0

1) À l’aide de la fonction drawfr.m tracer l’ensemble des solutions réalisables et la ligne de niveau.
2) Déterminer les solutions des programmes P2 et P3 par la méthode graphique.

Exercice 2.

On considère les deux programmes linéaires P4 et P5 suivants :

Le programme linéaire P5
Le programme linéaire P4

min [Z] = 12x − 20y


max [Z] = 9x + 3y 
 L1 : −3x + 2y ≤ 8

 L1 : 5x + y ≥ 180

L2 : x + 2y ≤ 3

Les contraintes : L2 : 5x + y ≥ 110 Les contraintes :
L : y ≤ 10
L5 : x ≥ 0, y ≥ 0  3
 

L4 : x ≥ 0, y ≥ 0

1) Résoudre les programmes linéaires P4 et P5 à l’aide de la fonction drawfr.m sous Matlab.


2) Interpréter les résultats dans les deux cas ?

Remarque :
1. Avec la méthode graphique on distingue les différents cas qui peuvent se produire lors de la
résolution d’un programme linéaire. En effet, si le domaine réalisable est l’ensemble vide alors il
n’y a pas de solution, le problème est non réalisable. Si la zone est infinie le problème est alors
réalisable, mais non borné.
2. la résolution graphique est assez simple ici car la fonction n’est composée que de deux variables.
Si nous avions 3 variables il aurait fallu faire une résolution avec un graphique en trois dimension
ce qui est plus complexe pour déterminer les sommets du polyèdre.
3. Un problème de dimension 4 ou plus est impossible à résoudre graphiquement. Or notre algo-
rithme doit être en mesure de résoudre des problèmes de dimension n ≥ 4 donc il nous faut une
méthode de résolution plus adaptée.

31
16 Méthode de simplexe

Dans la plupart des problèmes réels, on a plus que deux variables à déterminer. Une procédure algé-
brique pour résoudre les programmes linéaires avec plus que deux variables fera l’objet de cette partie.
C’est la méthode de simplexe.
L’idée de la méthode du simplexe est de passer d’une solution de base admissible à une autre solution
de base admissible adjacente en améliorant la fonction objective.
On démarre d’une solution de base admissible quelconque (si possible l’origine). Le programme linéaire
est sous la forme suivante :


 min ou max Z =< C, X >
A.X ≤ b
X≥0

En introduisant les variables d’écart le problème linéaire deviendra de la forme suivante :

 
 x1
 min Z =< C, X >  .. 
  .
 a11 x1 + · · · + a1p xp + sp+1 = b1

 
  
.. .. ..  xp 
. . . Avec X = 
 sp+1
.


 an1 x1 + · · · + a1p xp + sn = bn
  
  .. 
  .
xi ≥ 0 ∀1 ≤ i ≤ n
 
sn

Rappel : Algorithme de Simplexe (exemple)

Soit P1 le programme suivant

max [Z] = x1 + 3x2




 L1 : x1 + x2 ≤ 14
L2 : −2x1 + 3x2 ≤ 12

Sous les contraintes :
L : 2x1 − x2 ≤ 12
 3


L4 : x1 ≥ 0, x2 ≥ 0

1 Solution de base réalisable : Une solution de base telle que toutes les variables prennent des
valeurs non-négatives est appelée solution de base réalisable.
2 Méthode du simplexe : partir d’une solution de base admissible et passer à une solution de
base voisine qui améliore la valeur de l’objectif.
- Solution voisine : changement d ?une variable en base.
— Détermination de la variable entrante.
— Détermination de la variable sortante.
— Pivotage.

32
v.base A1 A2 A3 A4 A5 B
x3 1 1 1 0 0 14 L1
x4 -2 3 0 1 0 12 L2
x5 2 -1 0 0 1 12 L3
∆j -1 -3 0 0 0 0 L4

Le premier tableau du programme P1 :

Élection de la variable entrante et sortante de la base :

1) La variable qui rentre en base :


— On choisit la colonne dont sa valeur dans la ligne ∆j est le plus grand entre tous les négatifs.
Dans ce cas, cela serait la variable x1 de coefficient −1.
— La colonne de la variable qui rentre en base qu’on appelle colonne-pivot.
Une fois obtenue la variable entrante en base, on détermine quelle sera la variable sortante.

2) La variable qui sort en base :

— On prend la décision sur la base d’un simple calcul : diviser chaque terme indépendant (colonne
B) entre l’élément correspondant de la colonne-pivot, à condition que les deux éléments soient
strictement positifs (supérieures à zéro). On choisit la variable dont le résultat est minimal.
— Dans cet exemple on a : xb111
= 14 b2 12 b3
1 = 14, x21 = −2 < 0, Non (on prend pas) et x31 = 2 = 6.
12

=⇒ le minimum dans la ligne 3. On choisit la variable sortante x5 .

3) Condition d’arrêt :

— Si l’objectif est la maximisation, quand dans la dernière ligne (ligne indicatrice) n’existe aucune
valeur negative parmi les coûts réduits (colonnes B en avance), on obtient la condition d’arrêt.

Dans ce cas, on attend la fin de l’algorithme puisqu’on ne peut pas l’améliorer.

Deuxième tableau du simplexe

Pivotage de Gauss

2 est le pivot (intersection de la colonne qui rentre et de la ligne qui sort)

L01 = L1 − 1L03 L02 = L2 − (−2)L03


L03 = L23 L04 = L4 + 1L03

De même pour les autres tableaux

— Dans cet exemple on a ∆02 = −3.5 =⇒ la colonne de pivot A2 y x2 variable qui rentre.
— Ensuite on a : xb12
1 8
= 1.5 , xb22
2
= 24 b3 6
2 = 12, et x31 = −0.5 < 0 on prend pas =⇒ le minimum dans

33
v.base A1 A2 A3 A4 A5 B
x3 0 1.5 1 0 -0.5 8 L1
x4 0 2 0 1 1 24 L2
x1 1 -0.5 0 0 0.5 6 L3
∆j 0 -3.5 0 0 0.5 6 L4

la ligne 1. y x3 variable qui sort.


— La colonne de pivot est 2 et la ligne de pivot 1

34
Troisième tableau

v.base A1 A2 A3 A4 A5 B
x2 0 1 2/3 0 -1/3 16/3 L1
x4 0 0 -4/3 1 5/3 40/3 L2
x1 1 0 1/3 0 1/3 26/3 L3
∆j 0 0 7/3 0 -2/3 74/3 L4

La colonne de pivot est 5 et la ligne de pivot 2

Dernier tableau

v.base A1 A2 A3 A4 A5 B
x2 0 1 2/5 1/5 0 8 L1
x5 0 0 -4/5 3/5 1 8 L2
x1 1 0 3/5 -1/5 0 6 L3
∆00j 0 0 9/5 2/5 0 30 L4

— Tous les ∆00j ≥ 0, ∀j = 1, ...5 =⇒ Condition d’arrêt.


— La solution optimale se lit dans le tableau : les variables qui
Pne sont pas dans le tableau sont
hors-base donc à zéro. La solution optimale est donc : Z = 5i=1 ci xi la valeur correspondante
de B soit Z = 6 × 1 + 3 × 8 + 8 × 0 = 6 + 24 = 30 atteinte en S = (6, 8, 0, 0, 8).

Rappel : Algorithme de Simplexe (cas général)

On choisit parmi les variables hors base, la variable xj , telle que : ∆j = max(∆i < 0; i = 1; . . . ; n) avec
∆i = −ci
On détermine parmi les variables de base la variable sortante xi telle que : abiji = min{ abiji ; i = 1; . . . ; n}
avec bi > 0 et aij > 0 On élimine xj par pivotage (élimination de Gauss) :

1. Diviser la contrainte i par le pivot xij


2. Modifier la contrainte k, pour tout k 6= i, en multipliant la contrainte i par akj et en la sous-
trayant de la contrainte k.
3. Modifier la fonction économique en multipliant la contrainte i par cj et en la soustrayant de
l’expression de z.

La solution optimale est atteinte lorsque tous les ∆i sont positifs.

On utilisant la fonction simplex2p.m fournie aux étudiants pendant la séance de TP pour résoudre le
programme linéaire suivant :

Exemple pour le programme P1 :

Le programme dans l’éditeur de Matlab est :

35
clear
c =[1 3] ; ←− Les paramètres de la fonction objectif Z.
A =[1 1 ; -2 3 ; 2 -1] ; ←− Matrice des contraintes.
rel =’< < <’ ; ←− Inégalité des contraintes ou ’> > >’
b=[14 ;12 ;12] ; ←− Le second membre des contraintes
type=’max’ ; ←− Maximisation (max) ou minimisation (min)
simplex2p(type, c, A, rel, b)

Dans ce cas on trouver le resultat avec tous les tableaux de simplexe

Exercice 3.

On considére les deux programmes linéaires P4 et P5 suivantes.

Le programme linéaire P5
Le programme linéaire P4

min [Z] = 12x − 20y


max [Z] = 9x + 3y 
 L1 : −3x + 2y ≤ 8

 L1 : 5x + y ≥ 180

L2 : x + 2y ≤ 3

Les contraintes : L2 : 5x + y ≥ 110 Les contraintes :
L : y ≤ 10
L5 : x ≥ 0, y ≥ 0  3
 

L4 : x ≥ 0, y ≥ 0

1) Résoudre les programmes linéaires P4 et P5 à l’aide de la fonction simplex2p.m sous Matlab.


2) Comparer les résultat avec la méthode graphique dans les deux cas ?

Exercice 4.

On considère les deux programmes linéaires P6 et P7 suivantes.

Le programme linéaire P6
Le programme linéaire P7

max [Z] = x + 3y + z
 min [Z] = 14x + 12y + 12z
L 1 : 5x + y ≤ 100 
 L1 : x − 2y + 2z ≥ 1


L2 : y + 3z ≤ 300

Les contraintes : Les contraintes : L2 : x + 3y − z ≥ 3
L : 2x − y + z ≤ 900
 3 L3 : x ≥ 0, y ≥ 0, z ≥ 0

 
L4 : x ≥ 0, y ≥ 0, z ≥ 0

1) Résoudre les programmes linéaires P6 et P7 à l’aide de la fonction simplex2p.m sous Matlab.


2) Comparer les résultat dans les deux cas ?

36
17 Fonction "linprog"

Les problèmes de cette partie sont à traiter à l’aide de la fonction linprog définir sous MATLAB. La
commande help linprog donne accès à l’aide sur cette a fonction. Il est important de remarquer que
linprog résout un problème de minimisation. Donc, le maximum d’une fonction z sera cherché comme
le minimum de la fonction −z.

Exercice 5.

On utilisant la commande linprog résoudre les programmes linéaires P1 à P7 .

Voici l’exemple du programme P1 :

clear all
clc
c =[-1 -3] ; ←− Les paramètres de la fonction objectif Z.
A =[1 1 ; -2 3 ; 2 -1] ; ←− Matrice des contraintes.
b=[14 12 12] ; ←− Le second membre des contraintes
[X, Zmax]=linprog(c,A,b,[ ],[ ],[0 0 0 0 0],[ ],[ ],1)

Exercice 6.

Une usine fabrique deux produits P 1 et P 2 à l’aide de trois matières premières M 1, M 2 et M 3 dont
on dispose en quantité limitée. On se pose le problème de l’utilisation optimale de ce stock de matières
premières c’est-à-dire la détermination d’un schéma, d’un programme de fabrication tel que :

— les contraintes de ressources en matières premières soient respectées,


— le bénéfice réalisé par la vente de la production soit maximum.

Modèle mathématique :

— Données numériques des contraintes. La disponibilité en matières premières est de 18 unités de


M 1, 8 unités de M 2 et 14 unités de M 3.
— Caractéristiques de fabrication. Elles sont données dans le tableau ci-dessous :

M1 M2 M3
P1 1 1 2
P2 3 1 1

1) Écrire le programme linéaire correspondant au problème


2) Résoudre le programme par les différents méthodes

37