% Programme de tracé du diagramme de bifurcation pour le
% modèle logistique à temps discret
% x(t+1)=rx(t)(1-x(t))

% Jean-Christophe POGGIALE
% 19-10-2003

clear;

rmin=0; % Valeur minimale pour le paramètre de bifurcation r
rmax=4; % Valeur maximale pour le paramètre de bifurcation r
m=500; % Nombre de valeurs de r sur le diagramme
dr=(rmax-rmin)/m; % Calcule l'incrément du paramètre r 

n=1000; % Nombre de valeurs de x(t) calculées
last=500; % Nombre de valeurs de x(t) représentées sur le diagramme pour chaque valeur de r

x=zeros(n,m);
x(1,:)=ones(1,m)*0.5; % fixe les conditions initiales

for j=1:m
    r=rmin+(j-1)*dr; % incrémente r
    for i=2:n
        x(i,j)=r*x(i-1,j)*(1-x(i-1,j)); % calcule les valeurs de x
    end
end

% Représentation graphique
figure(1);
rvect=rmin:dr:rmax-dr; % définit l'axe des abscisses sur le diagramme
p=plot(rvect,x(n-last:n,:),'.b'); % dessine le diagramme
set(p,'MarkerSize',1) % choisit la taille des points sur le diagramme
ylabel('\bar x')