Vous êtes sur la page 1sur 5

2- Le programmedu m simplexe :

clear clc

A=input('Veuillez entrer la matrice de contraintes A:' ); R=input('Veuillez entrer le vecteur R:' );

Z=input('Veuillez entrer le vecteur des coordonnes de la fonction conomique Z:' );

w=size(A,2); matrice A

%w dsigne le nombre de colonnes de la

flag=1;

%initialisation du flag

%boucle principale

while (flag==1), %% flag indiquant si toute les variables du vecteur Z sont ngatifs ou pas flag=0; q=1; for i=2:w, if Z(i)>Z(q); %recherche du Z(i) le plus grand cd la colonne %q dsigne le numro de la colonne pivot

pivot q=i; end end

k=R(1)/A(1,q);

%p dsigne le numro de la ligne pivot p=1; %initialisation de p

x=size(A,1); matrice A

%x dsigne le nombre de lignes de la

for i=2:x; y=R(i)/A(i,q);%Rapport de la colonne R sur la colonne pivot if y<k; k=y; la ligne pivot p=i; end end %recherche du rapport le plus petit cd

A(p,q)

%A(p,q) est le nombre pivot

d=A(p,q); %mmorisation de A(p,q) B=A; D=R; E=Z; %mmorisation de la matrice A %mmorisation de la matrice C %mmorisation de la matrice Z

Z(q)=0; for i=1:w; %on divise les lments de la ligne pivot par le nbr pivot

A(p,i)=A(p,i)/d ; end

R(p)=R(p)/d;

for i=1:x, if i~=p; for j=1:w, A(i,j)=B(i,j)-((B(p,j)*B(i,q))/d); %pour les lments des autres lignes end end end

for i=1:size(R,1), if i~=p; R(i)=D(i)-((D(p)*B(i,q))/d);%pour les lments de la colonne C end end

Z(size(Z,2))=Z(size(Z,2))-(D(p)*E(q)*1/d)

for i=1:(size(Z,2)-1), Z(i)=E(i)-(E(q)*B(p,i)*1/d);%pour les lments de du vecteurZ end

for i=1:w, if Z(i)>0, flag=1; Z(i) positif pour faire une autre itration end end %Cette boucle test si il existe au moins un

end

A R Z

fprintf('le max est %f' , abs(Z(size(Z,1),size(Z,2)))) %pour indiquer le Zmax.