function [T,B,R] = simplexe(TE,BE,RE)
%   [TF,BF,RF]=simplexe(TE,BE,RE) Donné un tableau du simplex TE, 
%   pour les bases BE et RE renvoie le tableau du simplexe final 
%   obtenu par l'algorithme du simplexe. Le tableau d'entrée ne
%   contient pas les indices qui sont stockées dans BE et RE.
n=length(RE);
m=length(BE);

T=TE;
B=BE;
R=RE;

while max(T(m+1,1:n))>0 
  %Choix de la colonne
  I=find(T(m+1,1:n)>0);
  l=I(1);
  %Choix de la ligne
  Poss=find(T(1:m,l)>0);
  if length(Poss)>=1
    [skl,kp]=min(T(Poss,n+1)./T(Poss,l));
    k=Poss(kp);
  else
    error('Pas de solutions');
  end
  %Inversion en fonction de l et k
  T2=T-T(:,l)*T(k,:)/T(k,l);
  T2(k,:)=T(k,:)/T(k,l);
  T2(:,l)=-T(:,l)/T(k,l);
  T2(k,l)=1/T(k,l);
  T=T2;

  %Echange indices B et R
  tmp=B(k);
  B(k)=R(l);
  R(l)=tmp;
end
