Devoir 1 :

́ ###Evolution de la couleur des yeux au fil des ages:

Question 0 :

Je pense que pour une population assez grande la proportion de personne au yeux maron et au yeux bleue reste stable.

Question 1 : Cas d’une petite population:

On prend 0 pour les yeux bleue et 1 pour les marrons.

P=20; # p le nombre de personne dans la population
I_max=20; # le nombre de generation
BB=4;MM=12; # BB le nombre de personne avec le yeux bleue et MM avec les yeux marrons
M=c(BB,MM);


choisir_un_allele= function (M=M,P=P){
  #on choisie un nombre nb entre 1 et P
  nb=sample.int(P,1, replace=T);
  
  #selon nb :
  if (nb<=M[1]) a=0; #l'allele est bleue
  if (nb<= M[1]+M[2] & nb>M[1]) a=1; #l'allele est marron
  if (nb>M[1]+M[2]) a=sample(size = 1,x=c(0,1),replace = T); #un des deux
  
  return (a);
}


nouvelle_pop= function (M=M,P=P){
  BB_bis=0; #le nombre de personne au yeux bleue dans la nouvelle population
  MM_bis=0; # " aux yeux marron
  allele1=2;
  allele2=2;
  
  for (i in 1:P){
    allele1=choisir_un_allele(M,P);
    allele2=choisir_un_allele(M,P);
    
    #si les deux allele sont a 0 -> yeux bleue
    if (allele1==0&& allele2==0) BB_bis=BB_bis+1;
    #si les deux allele sont a 1 -> yeux marron
    if (allele1 && allele2) MM_bis=MM_bis+1;
  }
  M_bis=c(BB_bis,MM_bis);
  return (M_bis); # on retourne le nombre personne au yeux bleue ou marron dans la nouvelle population
}

#Cette fonction retourne le nombre de personne au yeux bleue ou marron sur I_max generation
horizon= function(M=M,P=P,Z=I_max){
  
  resultatB= rep (0,I_max+1);
  resultatM= rep (0,I_max+1);
  
  resultatB[1]=M[1]/P;
  resultatM[1]=M[2]/P;
  
  M_new=M;
  for (i in 1:Z){
    M_bis=nouvelle_pop(M_new,P);
    M_new=M_bis;
    resultatB[i+1]=M_new[1]/P;
    resultatM[i+1]=M_new[2]/P;
  }
  l= list();
  l[[1]]=resultatB;
  l[[2]]=resultatM;
  
  return(l);
}


#Cette fonction trace sur 10 repetition d'une generation
tracage = function (M=M,P=P,I_max=I_max){

  plot(x=NULL,y=NULL,xlab= "Generation",ylab= "Proportion",xlim= c(0,I_max),ylim=c(0,1));

  for (i in 1:10){ 
  I=1;


  l=horizon(M,P,I_max);
  resultatB=l[[1]];
  resultatM=l[[2]];
  

  lines(x = c(0:I_max),y=resultatB,type="l", col= "blue");
  lines(x = c(0:I_max),y=resultatM,type="l", col= "brown");
  }
  
}

#On trace les graphes :
M=c(4,12);
tracage(M,P,I_max);

M=c(12,4);
tracage(M,P,I_max);