Vous êtes sur la page 1sur 6

Département E.E.

A – Filière Automatique
4ème année Automatique – Semestre 2
TRAVAUX PRATIQUE – Optimisation et Recherche Opérationnel

TP 3
Méthode de Relaxation
Réalisé par

Leulmi Mohammed Islam


E-mail : islamfcb.enpc@gmail.com

Encadré par

Pr. Samir Ladaci

Année universitaire 2018/2019


1. Analyse du problème :

Étant donné la fonction quadratique :


1
J(x) = < Ax , x > − < b , x > + c
2
Avec 𝐴 ∈ 𝑀𝑛 (ℝ) matrice symétrique et définie positive, 𝑏 ∈ ℝ𝑛
𝑐 ∈ ℝ (donc c’est une forme quadratique associée à une matrice
SDP).
Dans le cas ou J est une fonction quadratique L’algorithme de
la méthode de relaxation n’est autre que l’algorithme de Gauss-
Seidel (vu en classes préparatoires) pour la résolution
numérique du système linéaire :
𝐴𝑥 = 𝑏
Ceci s’explique par le fait que le point de minimum u∗ de J
satisfait l’équation d’Euler
𝛻𝐽(𝑢 ∗) = 0
Alors l’algorithme dans ce cas s’écrit :

Étant donné 𝐴 ∈ 𝑀𝑛 (ℝ) matrice symétrique et définie positive,


𝑏 ∈ ℝ𝑛 , 𝑐 ∈ ℝ , On veut réaliser un programme permettant de
retvrouver u* qui minimise J.
2. L’organigramme de l’algorithme :
3. Programme écrit :

clear all;close all;clc

% Entrée des données ________________________________________

A=input('Entrez la matrice A symétrique et définie


positive\n');
b=input('Entrez le vecteur colonne b\n');
c=input('Entrez le scalaire c\n');
x0=input('entrez le vecteur colonne initial\n');
epsilon=input('Entrez epsilon\n');
itmax=input('Entrez le nobmre d''iteration maximal\n');

% Calcul des itérations _____________________________________

x(:,1)=x0;
[n,m]=size(A); %Calcule taille de A
j=1; %intialisation de j
while norm(A*x(:,j)-b)>epsilon && j<itmax % Test d'arret
%calcule de premier element de vecteur x de l'itération
numero j
x(1,j+1)=(1/A(1,1))*(b(1)-sum(A(1,2:m)*x(2:m,j)));
%calcule de reste des éléments de vecteur x de
l'itération numero j
for i=2:n
x(i,j+1)=(1/A(i,i))*(b(i)-sum(A(i,i+1:m)*x(i+1:m,j))-
sum(A(i,1:i-1)*x(1:i-1,j+1)));
end
j=j+1;%incrémentation de j (nbr d'itérations)
end

%Affichage des resultats ____________________________________

disp('---------------------------------------------');
disp(' Le vecteur u* qui minimise la fontion J est');
u=x(:,j)
disp('La valeur de minimum de la fonction J est');
min=0.5*dot(A*u,u)-dot(b,u)+c
disp('---------------------------------------------');
4. Exemples d’exécution :

Exemple 1 :

2 1 1 0
𝐴=[ ] 𝑏=[ ] 𝑐=3 𝑢(0) = [ ] ℰ = 10−6
1 2 2 0
Exemple 2 :

4 −1 −1 3 0
𝐴 = [−2 6 1] 𝑏=[ 9 ] 𝑐=1 𝑢(0) = [0] ℰ = 10−6
−1 1 7 −6 0