Академический Документы
Профессиональный Документы
Культура Документы
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 :
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.
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 :
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
3
Fonction plot & comet
Fonction subplot
Exercice 1.
1) Ecrire les fonctions f et g sous Matlab, ensuite calculer f (0) , f 0 (0), g(0) et g 0 (0)
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 :
10x − 9e−x = 0
1 Méthode de Dichotomie
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.
Algorithme de dichotomie
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”
6
1.1 Application
On reprend l’équation initiale 10x − 9e−x = 0. Posons la fonction f sur l’intervalle [0, 1] par
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.
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 :
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
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
f (x)
ϕ(x) = x − f 0 (x) si f 0 (x) 6= 0
xn+1 = xn − ff0(x n)
(xn )
Algorithme de Newton
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
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[.
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
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ù
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
11
TP No : 3
Résolution des systèmes linéaires (Méthodes Directes)
5 Objectif de TP
6 Sujet de TP
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
function [x,Err]=trianginf(A,b)
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)
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
- 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)
% Triangulation de la matrice
k=1 ;
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
Algorithme de LU
l11 = 1;
Faire j = 1 à n
Faire i = 2 à n
ai1
li1 = a11 ; % Détermination de la première colonne de L
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
16
La fonction ResolutionLU.m
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
17
Algorithme de Cholesky
Faire i = 2 à n
ai1
Ci1 = C11 ; % Détermination de la première colonne de C
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
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) :
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
xn = fn .
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 )
20
Algorithme Méthode de Jacobi
function [x,k]=jacobi(A,b,N,ε,x0 )
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
9 Méthode de Gauss-Seidel
Soit A une matrice carrée inversible, écrire une fonction Matlab
[x,k]=GaussSeidel(A,b,N,ε,x0 )
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é.
En suite, l’équation : AX = b ⇔ PX = NX + b ⇔ X = X − P −1 AX + P −1 b
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
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
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.
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.
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
1) Saisir le tableau dans un nouveau fichier "Exercice2", puis tracer l’Histogramme correspondant
à ce tableau.
Dans une entreprise, on a demandé aux employés leur moyen de transport pour venir au travail.
Les résultats sont les suivants :
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 ).
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
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 :
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 .
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
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
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
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.
Avec
- Z La fonction objectif.
- L1 à L3 Les contraintes.
- L4 Les contraintes de non négativité.
29
15 Méthode graphique
En utilisant la fonction drawfr.m fournie aux étudiants pendant la séance de TP pour tracer l ?en-
semble des contraintes L1 à L4 .
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)
Feasible region and a level line with the objective value = 8.1667
8
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
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.
Le programme linéaire P5
Le programme linéaire P4
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
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
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
— 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
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.
Pivotage de Gauss
— 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
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
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
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) :
On utilisant la fonction simplex2p.m fournie aux étudiants pendant la séance de TP pour résoudre le
programme linéaire suivant :
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)
Exercice 3.
Le programme linéaire P5
Le programme linéaire P4
Exercice 4.
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
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.
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 :
Modèle mathématique :
M1 M2 M3
P1 1 1 2
P2 3 1 1
37