Diagramas de Bifurcações em 140 caracteres

Rodrigo Siqueira
3 min readMar 5, 2019

--

Estas imagens foram feitas com mini-programas em JavaScript que tem 140 caracteres (ou menos). O site dwitter.net é similar ao Twitter, mas para postar pequenos códigos em javascript que produzam algo que possa ser visualmente interessante.

Os Diagramas de Bifurcação tradicionamente aparecem no gráfico da Equação Logística xₙ₊₁ = r * xₙ(1-xₙ), mas percebi que muitas outras funções iteradas (geralmente uma composição de senos e cossenos) também apresentam o mesmo diagrama!

No código das imagens abaixo, “C” significa cosseno, “S” significa seno e “t” é a variável que representa o tempo. O mesmo código é executado 60 vezes por segundo e o resultado é uma imagem ou animação. As imagens são feitas de pequenos retângulos impressos na tela <canvas> com o comando:
x.fillRect(Posição X, Posição Y, largura do retângulo, altura do retângulo)

Águia emergindo da bifurcação

Código fonte (139 caracteres): https://www.dwitter.net/d/12452

t||(a=b=0)
for(i=5e3;i-- )
x.fillStyle=`hsl(9,45%,${S(t*4)*50}%)`,
x.fillRect(960+b*S(a*1.5),540-b*C(a*2),1,2),
a+=1.8*C(2.6*a)+C(t/4),
b+=.001

O Olho da Bifurcação — atrator estranho

Código fonte (96 caracteres): https://www.dwitter.net/d/12441

t||(a=b=0)
for(i=8000;i--;)
x.fillRect(560+b*C(a),540+b*S(a),1,1),
a+=.847*C(t+5*a)+C(t),
b+=.002

Roda de bifurcações

Código fonte (100 caracteres): https://www.dwitter.net/d/12440

t||(a=b=0)
for(i=2e3;i--;)
x.fillRect(960+b*C(a),540+b*S(a),1,1),
a+=1.8*C(2.6*a)+C(t/4+.009),
b+=.002

Bifurcações surgidas de uma variação da equação Mapa de Duffing

Código fonte (114 caracteres): https://www.dwitter.net/d/12258

Xp=X=Y=
x.globalAlpha=.3
for(i=2e3;i--;){
X=Y**.4+t/9
Y=-.15*Xp+2.7*Y-Y*Y*Y
Xp=X
x.fillRect(X*850–300,Y*600,1,1)
}

Bifurcação gerada pela função iterada: y = A*seno(y)+B*x+C

Código fonte (103 caracteres): https://www.dwitter.net/d/12018

X=t/6;Y=2;s=999;x.globalAlpha=.05;for(i=3e3;i--;)
Y=1.66–2*(.1*X-S(1.2*Y)),
x.fillRect(X*s,Y*s-700,3,3)

Véu de bifurcações

Código fonte (140 caracteres): https://www.dwitter.net/d/12030

a=b=t;s=2e3;x.globalAlpha=.2
for(i=s;--i;)
x.fillStyle=R(a*i,9,i*b/6),
x.fillRect(1100+a*s,b*s,2,2),
a=.2+.1*S(2*b)+C(2*a),
b=S(a/5)+C(b)*t/12

Bifurcações simétricas

Código fonte (139 caracteres): https://www.dwitter.net/d/12468

t||(a=b=0)
for(i=3e3;i--;)
x.fillStyle=`hsl(9,45%,${S(t*4)*50}%)`,
x.fillRect(960+b*C(a)+(a&1?b:-b),540+b*S(a),1,2),
a+=2*C(2.6*a)-t/2,
b+=.001

Roda de 27 bifurcações

Código fonte (140 caracteres): https://www.dwitter.net/d/12470

t||(a=b=0)
if(t<6)for(i=4e3;i--;)
x.fillStyle=`hsl(9,45%,${S(t*4)*50}%,30%)`,
x.fillRect(960+b*S(a),540+b*C(a),1,1),
a+=2*C(2.7*a)-t/8,
b+=.0003

Para ver essas e outras imagens, interagir com as equações e criar suas próprias variações, veja meu perfil no Dwitter:
https://www.dwitter.net/u/rodrigo.siqueira

--

--

Rodrigo Siqueira

Head of Artificial Intelligence and founder at InBot (www.in.bot). I create natural language processing engines, next generation chatbots and AI platforms.