>
> me siento personalmente interesado en este asunto pero soy bastante
> noob, cual es el inicio para desenredar esto? algun algoritmo? o
> lecturas para antes de dormir?
>
> zea
>
Hola Gabriel,
Que bueno que te intereses en el tema. En parte tiene que ver con
fractales y sistemas-l, pero por lo que se pueden aplicar en el dominio
del tiempo se vuelven señales de control.
Inclusive son tan eficaces (ver código), que se podrían programar dentro
del mismo código de Wiring.
Jugando a lo geek, te paso el código del Attractor de Lorenz en
Octave :-)
La clave con los sistemas dinámicos es cambiar ( o jugar con las
condiciones iniciales), de tal forma que la función converja y no se
vaya al infinito. El numero de reiteraciones a veces también influye
paro por ahora no es tan relevante. Las condiciones iniciales en este
caso son: x,y,z. Trata de cambiar una variable a la vez, por ejemplo,
cambiar y = 0.5 por y = 0.333 y, así sucesivamente.
Para correr este programita, <copy-and-paste> y salvalo como lorenz1 y
ponlo en un directorio de trabajo. En ese mismo directorio corres octave
en la linea de comandos. En el prompt de octave, solo escribes lorenz1 y
debe aparecer la gráfica en gnuplot. Nota que con estos valores
iniciales: x=0;y=0.5;z=1.0, la función es cuasi-periódica pero tiende
hacia un valor (por lo del atractor):
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% lorenz1.m - matlab main program implementing
% the lorenz attractor:
%
% juanig_at_ccrma
%
% w/help from Craig Sapp
%
% Iterate the following differential equations:
%
% dx/dt = a(y-x)
% dy/dt = bx - y - zx
% dz/dt = xy -cz
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N = 1000; % Iterations
delta = 0.01;
x = 0.0;
y = 0.5; % Change Initial conditions
z = 1.0;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:N
dx = 10.0 * (y-x);
dy = x * (28.0-z) - y;
dz = x*y - (8.0/3.0)*z;
xnew = x + delta*dx;
ynew = y + delta*dy;
znew = z + delta*dz;
x = xnew;
y = ynew;
z = znew;
X(i) = x+28; % Store in array for plotting
Z(i) = z;
% disp(sprintf('x(%d)=%f',i,x(i)));
%disp(sprintf('x(%d)=%f\t y(%d)=%f\t z(%d)=%f',
% i,X(i),i,Y(i),i,Z(i)));
end
j=1:N;
plot(j,X(j)); % X against time series
% plot(X(j), Z(j)); % complete attractor
title("Lorenz Attractor");
xlabel("X");
ylabel("Z");
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
La gráfica debe parecerse mas o menos a esta:
A propósito, Emacs tiene octave-mode : -D
Los valores acá están normalizados entre 10 y 50 para facilitar las
cosas con valores positivos y mayores que 1.0 pero pueden mapearse a
otra cosa.
Suerte!.
--* Juan
<<attachment: lorenz-window.png>>
_______________________________________________ ____ ____ ___ ____ _ _ ___ |__| |__/ / |___ \/ |__] | | | \ /__ |___ _/\_ | Arzexp mailing list [email protected] http://lists.slow.tk/listinfo.cgi/arzexp-slow.tk
