%% Práctica sobre el MODELO DE LORENZ-HAKEN (2) % Programa traducido de Mathematica a Matlab por Fernando Hueso González. % Óptica cuántica (Seminarios de teoría semiclásica y simulaciones) - % 4º de Grado de Física, 31 de mayo de 2011. global s b r syms d s b r format compact % Solución estacionaria (analítica) d = 1; P = sqrt(r-1); F = sqrt(r-1); solestac = [d,P,F]; % Umbral de la bifurcación de Hopf rHB=-s*(3+b+s)/(1+b-s); %% Ecuaciones y resolución del modelo de Lorenz-Haken % Ecuaciones diferenciales del láser definidas en el archivo laser.m %F'=s*(P-F) %P'=-P+d*F %d'=b*(r-d-F*P) s=3; b=1; r=20;%variables globales Tfin=1000;%tiempo hasta el que calculas h=0.01; t=0:h:Tfin; %Define el paso h que utiliza Runge-Kutta [t,solnum] = rungekut('laser',t,[0.001,0.001,1]); tmin=900;%mínimo del eje de abcisas del plot tmax=1000;%máximo del eje de abcisas del plot nmin=find(t>=tmin,1,'first');%forma de decirle al Matlab hasta donde plotear nmax=find(t<=tmax,1,'last'); close all titul='Hard-mode excitation 1D'; figure('Name',titul),plot(t(nmin:nmax), solnum(nmin:nmax,1).^2); axis tight title(titul) xlabel('t') ylabel('F^2') titul='Hard-mode excitation 2D'; figure('Name',titul),plot(solnum(nmin:nmax,1), -solnum(nmin:nmax,3)); axis tight title(titul) xlabel('F') ylabel('-d') titul='Hard-mode excitation 3D'; figure('Name',titul),plot3(solnum(nmin:nmax,1), solnum(nmin:nmax,2),-solnum(nmin:nmax,3)); axis tight title(titul) xlabel('F') ylabel('P') zlabel('-d') %% % En esta ocasión, se fija un tmin>0 para saltarnos el transitorio hasta % que se cae en el atractor caótico. De hecho, es fácil comprobar que si % representamos de 0 a 100 en la escala de tiempos, se ven oscilaciones que % van aumentando progresivamente (figura 1D) hasta llegar al régimen puramente caótico. % Por tanto, el transitorio sería el intervalo entre 0 y 60 aproximadamente % hasta ver el carácter autopulsado. % Se observa un carácter similar autopulsado al del plot de Mathematica, % pero con valores distintos dado que estamos en la solución caótica y hay % dependencia grande con el método numérico utilizado. De hecho, si se % cambia el paso h en Runge Kutta, el aspecto varía también % considerablemente (análogo a la sensibilidad de las condiciones iniciales). % En resumen, se observa claramente la estabilidad (la solución NO es estacionaria con un valor fijo, pero sí % es estable u oscilante acotadamente) de la solución en torno al atractor % caótico (atractor de Lorenz). % Aparte, cabe apuntar que se ha elegido un paso de Runge-Kutta de 0.01 % para que el cálculo no se haga muy largo (al menos en mi ordenador, que % es poco potente). Se puede aumentar la precisión bajando h, pero se % necesitaría más tiempo de cálculo. Por ejemplo, si quieres llegar a % t=2000, conviene aumentar h hasta 0.04, sin perder excesiva resolución o precisión en % la curva. %% Comentarios físicos: % Cabe señalar que el atractor no "llena" todo el cubo del espacio de % soluciones, sino que la región es aproximadamente plana, topología % característica del atractor de Lorenz. De manera similar a los fractales, % se podría definir una dimensión fraccionaria que lo describa. % Aparte, las soluciones forman una especie de disco en cuyo centro debe % estar la solución estacionaria, pero que está topológicamente aislada, % por lo que no es alcanzable si el sistema ha caído en el atractor de Lorenz. %% Transformada de Fourier tmin=500; tmax=Tfin; nmin=find(t>=tmin,1,'first'); nmax=find(t<=tmax,1,'last'); FT=fft(solnum(nmin:nmax,1).^2); L_FT=length(FT) close all titul='Transformada de Fourier'; figure('Name',titul),semilogy(abs(FT(1:1000)).^2); axis tight title(titul) %% % Se observa que el plot tiene los mismos picos que en Mathematica, como % debería ser. Algunos valores se van ligeramente por la diferencia del % método numérico, pero son valores sueltos y poco frecuentes respecto al comportamiento % general. % Cabe señalar que se escogen sólo las primeras frecuencias (de 1 a 1000), % que es donde está lo interesante en la transformada. El hecho de que el % espectro esté "lleno" de muchos picos es indicativo del comportamiento caótico del sistema. %% Mapas de máximos % Verificar que has ejecutado previamente la orden solnum. lista=solnum(nmin:nmax,1).^2; L=length(lista) m=[]; for k=2:L-1 if lista(k-1)=tmin,1,'first');%forma de decirle al Matlab hasta donde plotear nmax=find(t1<=tmax,1,'last'); titul='Doblamiento de periodo 1D'; figure('Name',titul),plot(t1(nmin:nmax), solnum1(nmin:nmax,1).^2); axis tight title(titul) xlabel('t') ylabel('F^2') titul='Doblamiento de periodo 2D'; figure('Name',titul),plot(solnum1(nmin:nmax,1), solnum1(nmin:nmax,2)); axis tight title(titul) xlabel('F') ylabel('P') %% % Se aprecia que la forma es muy similar al plot de Mathematica, al estar % en una solución estable con periodo único (solución oscilante con misma amplitud y frecuencia). % De nuevo, elegimos un valor de plot con tmin>0 para recortar el % transitorio del cálculo. %% tmin=80; tmax=Tfin; nmin=find(t1>=tmin,1,'first'); nmax=find(t1<=tmax,1,'last'); lista=solnum1(nmin:nmax,1).^2; L=length(lista); FT1=fft(solnum1(nmin:nmax,1).^2); L_FT1=length(FT1) close all titul='Transformada de Fourier'; figure('Name',titul),semilogy(abs(FT1(1:200)).^2); axis tight title(titul) m=[]; for k=60:L-1 if lista(k-1)