Diagrama de Bifurcação do Mapa Logístico

17 Novembro 2012

Ontem, desenvolvi em Octave (alternativa ao Matlab) uma rotina que desenha o diagrama de bifurcação do mapa logístico.

Em posts anteriores já falei um pouco sobre o mapa logístico, um sistema caótico que é muito estudado em grande parte por sua extrema simplicidade:

$$x_{n+1} = x_n r (1 - x_n)$$

O diagrama de bifurcação representa quais os possíveis valores de x (eixo vertical) para cada valor de r (eixo horizontal), desconsiderando as primeiras iterações (o período transiente). Ou seja, para saber quais os possíveis valores de x para r = 3.5, por exemplo, trace uma linha imaginária vertical sobre o ponto r = 3.5 (eixo horizontal) e veja quais pontos de x (eixo vertical) a reta corta.

Perceba que conforme se aumenta o valor de r, o número de possíveis valores de x dobra, até que, para valores de r mais próximos de 4, uma infinidade de valores existem, adquirindo, assim, comportamento caótico naquela região. Segue o diagrama:

Código da rotina:

clear all
X = [];
x0 = 0.6;
r_min = 1;
r_max = 4;
dr = 0.001;
n = (r_max - r_min)/dr;
for r=r_min:dr:r_max
    r   
    x = [ x0 ];
    for i=1:1000
        next_x = r*x(end)*(1-x(end));
        x = [ x next_x ];
    end
    X = [ X ; x(100:end) ];
end
hold on
for i=1:n
    r = r_min + dr*(i-1)
    x = X(i, :);
    plot(x.*0+r, x, '.');
end
hold off
pause