Hola Juan,
Gracias por el codigo de octave! (ya comienzo a entender la necesidad
de matlab :P)
Me gusta que aun cambiando los valores de inicio, la grafica tiende a
tener la misma "escencia", y no se enloquece hasta el infinito
perdiendo ese sentido.
Voy a transcribir este codigo a P5 e intentar usarlo con las 3d graficamente.
ya les mantendre informados
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
>
> _______________________________________________
> ____ ____ ___ ____ _ _ ___
> |__| |__/ / |___ \/ |__]
> | | | \ /__ |___ _/\_ |
>
> Arzexp mailing list
> [email protected]
> http://lists.slow.tk/listinfo.cgi/arzexp-slow.tk
>
>
--
Gabriel Zea
===============================
http://twitter.com/z3a
http://zea.randomlab.net -> Portfolio
http://nerdbots.info -> Experimental lab
http://randomlab.net -> Art Host
_______________________________________________
____ ____ ___ ____ _ _ ___
|__| |__/ / |___ \/ |__]
| | | \ /__ |___ _/\_ |
Arzexp mailing list
[email protected]
http://lists.slow.tk/listinfo.cgi/arzexp-slow.tk