%%%%%%%%%%%%%%%%%%%%%%%%%%
%% SOLUTION DE Matlab13 %%
%%%%%%%%%%%%%%%%%%%%%%%%%%

clear all, close all, clc, format

% Question 1
display('---------------------------------------------------------------------------')
display('Réponse à la question 1')
t=[0.18 0.20 0.22 0.24 0.25 0.26 0.28 0.30]';

for i=1:length(t)
    A=[0 0 0.33 ; t(i) 0 0 ; 0 0.71 0.94];
    Valpropres=eig(A);
    lambda_dominante(i)=max(abs(Valpropres));
end

lambda_1 = lambda_dominante';
Resultat=table(t,lambda_1)

% Question 2
display('---------------------------------------------------------------------------')
display('Réponse à la question 2')
display('- t = 0.26 est la plus petite valeur de t pour laquelle lamda 1 > 1.')
display(' ')

% Question 3
display('---------------------------------------------------------------------------')
display('Réponse à la question 3')
display(' ')
display('CALCUL DES VALEURS ET VECTEURS PROPRES QUAND t = 0.26')
t=0.26;
A=[0 0 0.33 ; t 0 0 ; 0 0.71 0.94];
[V D]=eig(A);

lambda_1=D(3,3);
v1=V(:,3);

lambda_2=D(2,2);
v2=V(:,2);

lambda_3=D(1,1);
v3=V(:,1);

Valeurs_Propres=table(lambda_1, lambda_2, lambda_3)
Vecteurs_Propres=table(v1, v2, v3)

% Question 4
display('---------------------------------------------------------------------------')
display('Réponse à la question 4')
display('- Pour montrer que x0 peut être écrit comme x0 = c1v1 + c2v2 + c3v3,')
display('  il faut montrer que v1, v2 et v3 engendrent l''espace R3.')
display('- Pour ce faire, il suffit de monter qu''ils sont linéairement indépendants.')

Matrice=[v1 v2 v3];
Rang_Matrice=rank(Matrice)
display('- Le rang de la matrice [v1 v2 v3] est égal au nombre de ses colonnes.')
display('- On confirme ainsi que v1, v2 et v3 engendrent bel et bien l''espace R3.')
display(' ')

% Question 5
display('---------------------------------------------------------------------------')
display('Réponse à la question 5')
display('- Voir développement manuel.')
display(' ')

% Question 6
display('---------------------------------------------------------------------------')
display('Réponse à la question 6')
format shortg
x0=[100 100 100]';
c=Matrice\x0;
c1=c(1)
c2=c(2)
c3=c(3)
display('- c1 est différent de 0, lambda 1 > 1, l''oiseau va donc survivre si t = 0.26.')
display(' ')

% Question 7
display('---------------------------------------------------------------------------')
display('Réponse à la question 7')
t=input('Donner la valeur du paramètre t, t = ');
A=[0 0 0.33 ; t 0 0 ; 0 0.71 0.94];
% Section: Calcul
x=x0;
P=x0;
for k=2019:2040
    x=A*x;
    P=[P x];
    P=round(P,0);
end
population=P';
% Section: Affichage des résultats
Annee=(2018:2040)';
Bebes=population(:,1);
Jeunes=population(:,2);
Adultes=population(:,3);
Resultats=table(Annee, Bebes, Jeunes, Adultes)
% Section: Dessin des résultats
plot(Annee,population)
grid, grid minor
title('Évolution des trois populations dans le temps')
legend('Bebes', 'Jeunes', 'Adultes','Location', 'Best')
xlabel('Annee'), ylabel('Nombre d''oiseaux par classe')
% Analyse des tendances
display('- Les tendances étaient prévisibles car liées à la valeur de lambda 1.')
display(' ')

% Question 8
display('---------------------------------------------------------------------------')
display('Réponse à la question 8')
display(' ')
display('- La valeur de t se calcul en posant: det(A-I) = 0.')
display('- Voir développement manuel. On trouve t = 0.25608.')
display('- Pour cette valeur de t, lambda 1 = 1.')
display('- Ceci implique qu''à long terme, le vecteur xk sera constant quand t = 0.25608: xk = c1v1.')
display('- Il n''y a ni croissance, ni décroissance des 3 populations.')