Processing math: 100%

sábado, 12 de abril de 2025

Simulando um Atrator de Halvorsen com Scilab


O Atrator de Halvorsen é um atrator caótico, um conceito da matemática aplicado à teoria dos sistemas dinâmicos, que exibe comportamento complexo e sensível às condições iniciais. Ele foi descrito em estudos relacionados à dinâmica não linear e é conhecido por sua estrutura ciclicamente simétrica em três dimensões, o que o torna visualmente intrigante e matematicamente rico.
 
O seguinte sistema de equações diferenciais não lineares define o Atrator de Halvorsen: 

\begin{cases} \frac{dx}{dt} = -a x - 4y - 4z - y^2 \\ \frac{dy}{dt} = -a y - 4z - 4x - z^2 \\ \frac{dz}{dt} = -a z - 4x - 4y - x^2 \end{cases}
 

//////////
// Função que define o sistema de 
// equações diferenciais do 
// Atrator de Halvorsen
function dydt=halvorsen(xyz)
    a = 1.4; // Parâmetro típico
    x = xyz(1);
    y = xyz(2);
    z = xyz(3);
    
    // Sistema de equações
    dxdt = -a*x - 4*y - 4*z - y^2;
    dydt = -a*y - 4*z - 4*x - z^2;
    dzdt = -a*z - 4*x - 4*y - x^2;
    
    dydt = [dxdt; dydt; dzdt];
endfunction

// Parâmetros da simulação
t0 = 0;           // Tempo inicial
dt = 0.002;
y0 = [1; 0; 0];   // Condições iniciais 
y = y0;
yp = y0;

// Integração numérica usando 
// o metodo Runge-Kutta
kmax = 50000;
k=2;
while k<kmax
    hv1 = halvorsen(yp);
    yp = yp + dt*hv1;
    hv2 = halvorsen(yp);
    y(:,k) = y(:,k-1) + dt*(hv1 + hv2)/2;
    yp = y(:,k);
    k=k+1;
end

// Extração das variáveis x, y, z
xx = y(1,:);
yy = y(2,:);
zz = y(3,:);

// Criação do gráfico 3D
clf; // Limpa a janela gráfica
param3d(xx, yy, zz,'m'); // Plota as trajetórias em 3D

// Configurações do gráfico
xtitle("Atrator de Halvorsen", "X", "Y", "Z");
gca().rotation_angles = [60, 45]; // Ajusta o ângulo de visualização
gca().grid = [1 1 1]; // Adiciona grade

// Adiciona cores para melhor visualização
e = gce();
e.thickness = 2;
e.foreground = color("blue");


Nenhum comentário:

Postar um comentário