Duffing Map: Brincando com Sistemas Caóticos

Precisa de Java! Se tiver problemas (ou quiser ver o código) pode tentar esta versão

O estudo de sistemas dinâmicos, atractores e afins é recorrente aqui por estas bandas (de Hénon, de Lorenz). Infelizmente não tenho como lhe dedicar o tempo que gostava.

Hoje depois de uma aula de Sistemas Dinâmicos Discretos da Professora Diana Mendes no ISCTE voltei a lembrar-me de brincar um pouco com estes sistemas que são efectivamente muito interessantes em termos visuais (e não só).

O Applet acima, basicamente mostra o Sistema Dinâmico em tempo discreto (a versão de tempo contínuo do atractor de Duffing é talvez mais conhecida) regido pelas equações seguintes e conhecido como atractor de Duffing:

Duffing map

Os botões no topo permitem seleccionar valores para para os parámetros a e b.

1º botão:

a=2.75
b=0.2

2º botão:

a=-0.24
b=1.002

3º botão – escolha aleatória

Atractores de Hénon

Ando a brincar com atractores no Matlab. Hoje explorei hoje o chamado atractor de Hénon (do trabalho de Michael Hénon) que pode ser descrito por:

henon_atractors

O resultado deste atractor é que o pontos vão-se distribuindo aleatoriamente, até que se começa a perceber que essa distribuição afinal não é tão aleatória como isso e que se vai formando no ecrã uma linha (ou camadas de linhas quase sobrepostas). Levado ao infinito verifica-se que a linha funciona como atractor dos pontos que vão sendo gerados.

Henon_Atractorsvv

De facto, esta curva quando ampliada revela que se desdobra em duas e estas novamente ampliadas desdobram-se em mais duas, assim sucessivamente ad infinitum. O extraordinário é que quando se geram os pontos, eles parecem surgir aleatoriamente, não se sabendo onde surgirá o seguinte, apenas se sabendo que surgirá perto do atractor.

Um código simples para gerar estes atractores em Matlab segue abaixo:

henon.m ax=[]; ay=[]; for i=0:10000; xplus=y+1-1.4x^2; yplus=0.3x; y=yplus; x=xplus; ax=[ax; x]; ay=[ay; y]; end plot(ax, ay, '.');

Para correr este código basta definir um x e um y iniciais e depois chamar a ficheiro henon.m a partir da prompt do Matlab, gerando 10 000 pontos.