%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Script Probleme_1.m                         %%
%% Croissance démographique : Modèle de Leslie %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear all, close all, clc
 
 %% Matrice de Leslie
display('--------------------------------------------------------------')
display('Matrice de Leslie')
 L=[0 4 3
     0.5 0 0
     0 0.25 0]
 
 %% Vecteur de population initial
 x0=[40
     40
     20];
 
%% Question a)
display('--------------------------------------------------------------')
display('Réponse à la question a)')
 P=x0;
 x=x0;
 for k=1:50
     x=L*x;
     P=[P x];
 end
 P1=round(P',0);
 Pourcentage=P./[sum(P); sum(P); sum(P)];
 Pourcentage1=Pourcentage'*100;
 Pourcentage_Bebes=Pourcentage1(:,1);
 Pourcentage_Jeunes=Pourcentage1(:,2);
 Pourcentage_Adultes=Pourcentage1(:,3);
 Annee=(0:50)';
 RESULTAT=table(Annee,Pourcentage_Bebes,Pourcentage_Jeunes,Pourcentage_Adultes)

 plot(Annee,Pourcentage1,'-*')
 grid, grid minor, legend('Bébés','Jeunes Adultes','Adultes','location','best')
 xlabel('Année'), ylabel('Effectifs en % des trois populations')
 display(' ')
 display('Voir la figure')
 display(' ')

 %% Question b)
display('--------------------------------------------------------------')
display('Réponse à la question b)')
 %% Taux de croissance à long terme
 x_50=P(:,51);
 x_49=P(:,50);
 Taux_Croissance_Annuel_Long_Terme=mean(x_50./x_49*100)/100
 
%% Question c)
display('--------------------------------------------------------------')
display('Réponse à la question c)')
 %% ratio en % à long terme
 vecteur_final=(Pourcentage1(51,:));
 Ratio_Population_Long_Terme=(vecteur_final/vecteur_final(3))'
 
 %% Question d)
display('--------------------------------------------------------------')
display('Réponse à la question d)')
display('L''équation matricielle qui modélise le comportement à long terme est : L*q = lambda*q.')
display('Le problème de Leslie est donc un pur problème de valeur et vecteur propres.')
display('Lambda est donc le taux de croissance à long terme, q étant le vecteur des populations à long terme (exprimé en %).')
display('Lambda et q doivent donc être positifs. Ceci est garanti d''avance par le théorème de Perron-Frobenius.')
display('En effet, la matrice de Leslie L est régulière et est donc irréductible.')

%% Est-ce que L est irréductible ?
[n n]=size(L);
Critere=(L+eye(n))^(n-1);
if Critere > 0
    display('On a vérifié que L était irréductible.')
else
    display('On a vérifié que L était L est réductible.')
end

%% Calcul de lambda et q
L
[P D]=eig(L)

display('On constate que le taux de croissance à long terme correspond bien à la valeur propre dominante, lamda = 1.5, de la matrice L.')
lambda1=D(1,1)
display('On constate que le ratio de population à long terme correspond bien au vecteur propre dominant, v1, de la matrice L.')
v1=P(:,1);
v1=v1/v1(3)