// Monografia de Analisis Numerico
// Proyecto FONDEF D05I-10211
// Autor: Axel Osses, 2008  
// Herramientas para la formacin de profesores
// Prohibida la reproduccin parcial o total de este software
// 
// El arbol de bifurcaciones de Feigenbaum (Capitulo 5)
//
function []=arbol_Feigenbaum()
// N: numero de iteraciones para "convergencia"
// v: ancho de ventana 
// M: poblacion maxima
// p: poblacion (inicial)
//
N=1000; v=200; M=100; eps=0.01;
n_equi=0; n_equi_old=0;
sigma_old=0;
s_inicio=1.8;
s_fin=3.0;
s_paso=0.001;

// Iteraciones
for sigma=s_inicio:s_paso:s_fin
p=1.01*M;
 for i=1:N-1
  p(i+1)=p(i)+sigma/100*p(i)*(M-p(i))
 end
[p_ord lis]=sort(p(N-v:N));
n_equi=1;
 for j=2:(v-1)
  dife=p_ord(j)-p_ord(j-1);
  dife2=p_ord(j+1)-p_ord(j);
   if ( dife2-dife > eps ) then
    n_equi=n_equi+1;
   end,
 end
 if (n_equi_old ~= n_equi & n_equi<33) then
  printf('%d puntos de equilibrio para sigma=%f, diferencia %f\n',n_equi,sigma,sigma-sigma_old);
  n_equi_old=n_equi; 
  sigma_old=sigma;
 end
xsigma=zeros(N-v:N)'+sigma;
//xtitle('Puntos de equilibrio de poblacion','sigma','hbts.');
//plot2d(xsigma,p(N-v:N),0,"011"," ",[s_inicio 0 s_fin 140]);
plot2d(xsigma,p(N-v:N),0,"011"," ");
end

endfunction



