mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Added matlab code samples.
All of these code samples currently are mis-identified in my repositories. I'm donating them to the cause.
This commit is contained in:
		
							
								
								
									
										12
									
								
								samples/Matlab/Check_plot.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								samples/Matlab/Check_plot.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | x_0=linspace(0,100,101); | ||||||
|  | vx_0=linspace(0,100,101); | ||||||
|  | z=zeros(101,101); | ||||||
|  | for i=1:101 | ||||||
|  |     for j=1:101 | ||||||
|  |         z(i,j)=x_0(i)*vx_0(j); | ||||||
|  |     end | ||||||
|  | end | ||||||
|  |  | ||||||
|  | figure | ||||||
|  | pcolor(x_0,vx_0,z) | ||||||
|  | shading flat | ||||||
							
								
								
									
										149
									
								
								samples/Matlab/FTLEH.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								samples/Matlab/FTLEH.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,149 @@ | |||||||
|  | tic | ||||||
|  | clear all | ||||||
|  | %% Choice of the mass parameter | ||||||
|  | mu=0.1; | ||||||
|  |  | ||||||
|  | %% Computation of Lagrangian Points | ||||||
|  | [xl1,yl1,xl2,yl2,xl3,yl3,xl4,yl4,xl5,yl5] = Lagr(mu); | ||||||
|  |  | ||||||
|  | %% Computation of initial total energy | ||||||
|  | E_L1=-Omega(xl1,yl1,mu); | ||||||
|  | E=E_L1+0.03715; % Offset as in figure 2.2 "LCS in the ER3BP" | ||||||
|  |  | ||||||
|  | %% Initial conditions range | ||||||
|  | x_0_min=-0.8; | ||||||
|  | x_0_max=-0.2; | ||||||
|  |  | ||||||
|  | vx_0_min=-2; | ||||||
|  | vx_0_max=2; | ||||||
|  |  | ||||||
|  | y_0=0; | ||||||
|  |  | ||||||
|  | % Elements for grid definition | ||||||
|  | n=200; | ||||||
|  |  | ||||||
|  | % Dimensionless integrating time | ||||||
|  | T=2; | ||||||
|  |  | ||||||
|  | % Grid initializing | ||||||
|  | [x_0,vx_0]=ndgrid(linspace(x_0_min,x_0_max,n),linspace(vx_0_min,vx_0_max,n)); | ||||||
|  | vy_0=sqrt(2*E+2*Omega(x_0,y_0,mu)-vx_0.^2); | ||||||
|  |  | ||||||
|  | % Kinetic energy computation | ||||||
|  | E_cin=E+Omega(x_0,y_0,mu); | ||||||
|  |  | ||||||
|  | %% Transforming into Hamiltonian variables | ||||||
|  | px_0=vx_0-y_0; | ||||||
|  | py_0=vy_0+x_0; | ||||||
|  |  | ||||||
|  | % Inizializing | ||||||
|  | x_T=zeros(n,n); | ||||||
|  | y_T=zeros(n,n); | ||||||
|  | px_T=zeros(n,n); | ||||||
|  | py_T=zeros(n,n); | ||||||
|  | filtro=ones(n,n); | ||||||
|  | E_T=zeros(n,n); | ||||||
|  | a=zeros(n,n); % matrix of numbers of integration steps for each integration | ||||||
|  | np=0; % number of integrated points | ||||||
|  |  | ||||||
|  | fprintf(' con n = %i\n',n) | ||||||
|  |  | ||||||
|  | %% Energy tolerance setting | ||||||
|  | energy_tol=inf; | ||||||
|  |  | ||||||
|  | %% Computation of the Jacobian of the system | ||||||
|  | options=odeset('Jacobian',@cr3bp_jac); | ||||||
|  |  | ||||||
|  | %% Parallel integration of equations of motion | ||||||
|  | parfor i=1:n | ||||||
|  | 	for j=1:n | ||||||
|  | 		if E_cin(i,j)>0 && isreal(vy_0(i,j)) % Check for real velocity and positive Kinetic energy | ||||||
|  | 			[t,Y]=ode45(@fH,[0 T],[x_0(i,j); y_0; px_0(i,j); py_0(i,j)],options); | ||||||
|  |             % Try to obtain the name of the solver for a following use | ||||||
|  | %  			sol=ode45(@f,[0 T],[x_0(i,j); y_0; vx_0(i,j); vy_0(i,j)],options); | ||||||
|  | % 			Y=sol.y'; | ||||||
|  | % 			solver=sol.solver; | ||||||
|  | 			a(i,j)=length(Y); | ||||||
|  |             %Saving solutions | ||||||
|  | 			x_T(i,j)=Y(a(i,j),1);  | ||||||
|  | 			px_T(i,j)=Y(a(i,j),3); | ||||||
|  | 			y_T(i,j)=Y(a(i,j),2); | ||||||
|  | 			py_T(i,j)=Y(a(i,j),4); | ||||||
|  | 			%Computation of final total energy and difference with | ||||||
|  | 			%initial one | ||||||
|  | 			E_T(i,j)=EnergyH(x_T(i,j),y_T(i,j),px_T(i,j),py_T(i,j),mu); | ||||||
|  | 			delta_E=abs(E_T(i,j)-E); | ||||||
|  | 			if  delta_E > energy_tol; %Check of total energy conservation | ||||||
|  | 				fprintf(' Ouch! Wrong Integration: i,j=(%i,%i)\n E_T=%.2f \n delta_E=%.2f\n\n',i,j,E_T(i,j),delta_E); | ||||||
|  | 				filtro(i,j)=2; %Saving position of the point | ||||||
|  |             end | ||||||
|  | 			np=np+1; | ||||||
|  |         else | ||||||
|  | 			filtro(i,j)=0; % 1=interesting point; 0=non-sense point; 2= bad integration point		 | ||||||
|  | 		end | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  |  | ||||||
|  | t_integrazione=toc; | ||||||
|  | fprintf('  n = %i\n',n) | ||||||
|  | fprintf(' energy_tol = %.2f\n',energy_tol) | ||||||
|  | fprintf('total	\t%i\n',n^2) | ||||||
|  | fprintf('nunber	\t%i\n',np) | ||||||
|  | fprintf('time to integrate	\t%.2f s\n',t_integr) | ||||||
|  |  | ||||||
|  | %% Back to Lagrangian variables | ||||||
|  | vx_T=px_T+y_T; | ||||||
|  | vy_T=py_T-x_T; | ||||||
|  | %% FTLE Computation | ||||||
|  | fprintf('adesso calcolo ftle\n') | ||||||
|  | tic | ||||||
|  | dphi=zeros(2,2); | ||||||
|  | ftle=zeros(n-2,n-2); | ||||||
|  |  | ||||||
|  | for i=2:n-1 | ||||||
|  | 	for j=2:n-1 | ||||||
|  | 		if filtro(i,j) && ... % Check for interesting point | ||||||
|  | 				filtro(i,j-1) && ... | ||||||
|  | 				filtro(i,j+1) && ... | ||||||
|  | 				filtro(i-1,j) && ... | ||||||
|  | 				filtro(i+1,j) | ||||||
|  | 			 | ||||||
|  | 			dphi(1,1)=(x_T(i-1,j)-x_T(i+1,j))/(x_0(i-1,j)-x_0(i+1,j)); | ||||||
|  | 			 | ||||||
|  | 			dphi(1,2)=(x_T(i,j-1)-x_T(i,j+1))/(vx_0(i,j-1)-vx_0(i,j+1)); | ||||||
|  | 			 | ||||||
|  | 			dphi(2,1)=(vx_T(i-1,j)-vx_T(i+1,j))/(x_0(i-1,j)-x_0(i+1,j)); | ||||||
|  | 			 | ||||||
|  | 			dphi(2,2)=(vx_T(i,j-1)-vx_T(i,j+1))/(vx_0(i,j-1)-vx_0(i,j+1)); | ||||||
|  |              | ||||||
|  | 			if filtro(i,j)==2 % Manual setting to visualize bad integrated points  | ||||||
|  | 				ftle(i-1,j-1)=-Inf; | ||||||
|  | 			else | ||||||
|  | 				ftle(i-1,j-1)=1/(2*T)*log(max(abs(eig(dphi'*dphi)))); | ||||||
|  | 			end | ||||||
|  | 		end | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  |  | ||||||
|  | %% Plotting results | ||||||
|  | % figure | ||||||
|  | % plot(t,Y) | ||||||
|  | % figure | ||||||
|  | % plot(Y(:,1),Y(:,2)) | ||||||
|  | % figure | ||||||
|  |  | ||||||
|  | xx=linspace(x_0_min,x_0_max,n); | ||||||
|  | vvx=linspace(vx_0_min,vx_0_max,n); | ||||||
|  | [x,vx]=ndgrid(xx(2:n-1),vvx(2:n-1)); | ||||||
|  | figure | ||||||
|  | pcolor(x,vx,ftle) | ||||||
|  | shading flat | ||||||
|  |  | ||||||
|  | t_ftle=toc; | ||||||
|  | fprintf('tempo per integrare      \t%.2f s\n',t_integrazione) | ||||||
|  | fprintf('tempo per calcolare ftle \t%.2f s\n',t_ftle) | ||||||
|  |  | ||||||
|  | % save(['var_' num2str(n) '_' num2str(clock(4)]) | ||||||
|  |  | ||||||
|  | nome=['var_xvx_', 'ode00', '_n',num2str(n),'_e',num2str(energy_tol),'_H']; | ||||||
|  | save(nome) | ||||||
							
								
								
									
										178
									
								
								samples/Matlab/FTLE_reg.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										178
									
								
								samples/Matlab/FTLE_reg.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,178 @@ | |||||||
|  | tic | ||||||
|  | clear all | ||||||
|  | %% Elements for grid definition | ||||||
|  | n=100; | ||||||
|  |  | ||||||
|  | %% Dimensionless integrating time | ||||||
|  | T=2; | ||||||
|  |  | ||||||
|  | %% Choice of the mass parameter | ||||||
|  | mu=0.1; | ||||||
|  |  | ||||||
|  | %% Computation of Lagrangian Points | ||||||
|  | [xl1,yl1,xl2,yl2,xl3,yl3,xl4,yl4,xl5,yl5] = Lagr(mu); | ||||||
|  |  | ||||||
|  | %% Computation of initial total energy | ||||||
|  | E_L1=-Omega(xl1,yl1,mu); | ||||||
|  | C_L1=-2*E_L1; % C_L1 = 3.6869532299 from Szebehely | ||||||
|  | E=E_L1+0.03715; % Offset as in figure 2.2 "LCS in the ER3BP" | ||||||
|  |  | ||||||
|  | %% Initial conditions range | ||||||
|  | x_0_min=-0.8; | ||||||
|  | x_0_max=-0.2; | ||||||
|  |  | ||||||
|  | vx_0_min=-2; | ||||||
|  | vx_0_max=2; | ||||||
|  |  | ||||||
|  | y_0=0; | ||||||
|  |  | ||||||
|  | % Grid initializing | ||||||
|  | [x_0,vx_0]=ndgrid(linspace(x_0_min,x_0_max,n),linspace(vx_0_min,vx_0_max,n)); | ||||||
|  | vy_0=sqrt(2*E+2.*Omega(x_0,y_0,mu)-vx_0.^2); | ||||||
|  | % Kinetic energy computation | ||||||
|  | E_cin=E+Omega(x_0,y_0,mu); | ||||||
|  |  | ||||||
|  | % Inizializing | ||||||
|  | x_T=zeros(n,n); | ||||||
|  | y_T=zeros(n,n); | ||||||
|  | vx_T=zeros(n,n); | ||||||
|  | vy_T=zeros(n,n); | ||||||
|  | filtro=ones(n,n); | ||||||
|  | E_T=zeros(n,n); | ||||||
|  | delta_E=zeros(n,n); | ||||||
|  | a=zeros(n,n); % matrix of numbers of integration steps for each integration | ||||||
|  | np=0; % number of integrated points | ||||||
|  |  | ||||||
|  | fprintf('integro con n = %i\n',n) | ||||||
|  |  | ||||||
|  | %% Energy tolerance setting | ||||||
|  | energy_tol=0.1; | ||||||
|  |  | ||||||
|  | %% Setting the options for the integrator | ||||||
|  | RelTol=1e-12;AbsTol=1e-12; % From Short | ||||||
|  | % RelTol=1e-13;AbsTol=1e-22; % From JD James Mireles | ||||||
|  | % RelTol=3e-14;AbsTol=1e-16; % HIGH accuracy from Ross | ||||||
|  | options=odeset('AbsTol',AbsTol,'RelTol',RelTol); | ||||||
|  | %% Parallel integration of equations of motion | ||||||
|  | h=waitbar(0,'','Name','Integration in progress, please wait!'); | ||||||
|  | S=zeros(n,n); | ||||||
|  | r1=zeros(n,n); | ||||||
|  | r2=zeros(n,n); | ||||||
|  | g=zeros(n,n); | ||||||
|  | for i=1:n | ||||||
|  |     waitbar(i/n,h,sprintf('Computing i=%i',i)); | ||||||
|  | 	parfor j=1:n | ||||||
|  |         r1(i,j)=sqrt((x_0(i,j)+mu).^2+y_0.^2); | ||||||
|  | 		r2(i,j)=sqrt((x_0(i,j)-1+mu).^2+y_0.^2); | ||||||
|  | 		g(i,j)=((1-mu)./(r1(i,j).^3)+mu./(r2(i,j).^3)); | ||||||
|  | 		if E_cin(i,j)>0 && isreal(vy_0(i,j)) % Check for real velocity and positive Kinetic energy | ||||||
|  |             S(i,j)=g(i,j)*T; | ||||||
|  |             [s,Y]=ode45(@f_reg,[0 S(i,j)],[x_0(i,j); y_0; vx_0(i,j); vy_0(i,j)],options,mu); | ||||||
|  | 			a(i,j)=length(Y); | ||||||
|  | %             if s(a(i,j)) < 2 | ||||||
|  | %                 filtro(i,j)=3; | ||||||
|  | %             end | ||||||
|  | 			% Saving solutions | ||||||
|  | 			x_T(i,j)=Y(a(i,j),1); | ||||||
|  | 			vx_T(i,j)=Y(a(i,j),3); | ||||||
|  | 			y_T(i,j)=Y(a(i,j),2); | ||||||
|  | 			vy_T(i,j)=Y(a(i,j),4); | ||||||
|  |  | ||||||
|  | 			% Computation of final total energy and difference with | ||||||
|  | 			% initial one | ||||||
|  | 			E_T(i,j)=Energy(x_T(i,j),y_T(i,j),vx_T(i,j),vy_T(i,j),mu); | ||||||
|  |             delta_E(i,j)=abs(E_T(i,j)-E); | ||||||
|  |             if  delta_E(i,j) > energy_tol; % Check of total energy conservation | ||||||
|  |                 fprintf(' Ouch! Wrong Integration: i,j=(%i,%i)\n E_T=%.2f \n delta_E=%f\n\n',i,j,E_T(i,j),delta_E(i,j)); | ||||||
|  |                 filtro(i,j)=2; % Saving position of the point | ||||||
|  |             end | ||||||
|  |             np=np+1; | ||||||
|  |         else | ||||||
|  | 			filtro(i,j)=0; % 1 = interesting point; 0 = non-sense point; 2 = bad integration point		 | ||||||
|  | 		end | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  | close(h); | ||||||
|  | t_integrazione=toc; | ||||||
|  | %% | ||||||
|  | filtro_1=filtro; | ||||||
|  | for i=2:n-1 | ||||||
|  |     for j=2:n-1 | ||||||
|  |         if filtro(i,j)==2 || filtro (i,j)==3 | ||||||
|  |             filtro_1(i,j)=2; | ||||||
|  | 			filtro_1(i+1,j)=2; | ||||||
|  |             filtro_1(i-1,j)=2; | ||||||
|  |             filtro_1(i,j+1)=2; | ||||||
|  |             filtro_1(i,j-1)=2; | ||||||
|  |         end | ||||||
|  |     end | ||||||
|  | end | ||||||
|  |  | ||||||
|  | fprintf('integato con n = %i\n',n) | ||||||
|  | fprintf('integato con energy_tol = %f\n',energy_tol) | ||||||
|  | fprintf('numero punti totali	\t%i\n',n^2) | ||||||
|  | fprintf('numero punti integrati	\t%i\n',np) | ||||||
|  | fprintf('tempo per integrare	\t%.2f s\n',t_integrazione) | ||||||
|  |  | ||||||
|  | %% FTLE Computation | ||||||
|  | fprintf('adesso calcolo ftle\n') | ||||||
|  | tic | ||||||
|  | dphi=zeros(2,2); | ||||||
|  | ftle=zeros(n-2,n-2); | ||||||
|  | ftle_norm=zeros(n-2,n-2); | ||||||
|  |  | ||||||
|  | ds_x=(x_0_max-x_0_min)/(n-1); | ||||||
|  | ds_vx=(vx_0_max-vx_0_min)/(n-1); | ||||||
|  |  | ||||||
|  | for i=2:n-1 | ||||||
|  | 	for j=2:n-1 | ||||||
|  | 		if filtro_1(i,j) && ... % Check for interesting point | ||||||
|  | 				filtro_1(i,j-1) && ... | ||||||
|  | 				filtro_1(i,j+1) && ... | ||||||
|  | 				filtro_1(i-1,j) && ... | ||||||
|  | 				filtro_1(i+1,j) | ||||||
|  | 			% La direzione dello spostamento la decide il denominatore | ||||||
|  | 			 | ||||||
|  | 			% TODO spiegarsi teoricamente come mai la matrice pu<EFBFBD> | ||||||
|  | 			% essere ridotta a 2x2 | ||||||
|  | 			dphi(1,1)=(x_T(i+1,j)-x_T(i-1,j))/(2*ds_x); %(x_0(i-1,j)-x_0(i+1,j)); | ||||||
|  | 			 | ||||||
|  | 			dphi(1,2)=(x_T(i,j+1)-x_T(i,j-1))/(2*ds_vx); %(vx_0(i,j-1)-vx_0(i,j+1)); | ||||||
|  | 	 | ||||||
|  | 			dphi(2,1)=(vx_T(i+1,j)-vx_T(i-1,j))/(2*ds_x); %(x_0(i-1,j)-x_0(i+1,j)); | ||||||
|  |              | ||||||
|  | 			dphi(2,2)=(vx_T(i,j+1)-vx_T(i,j-1))/(2*ds_vx); %(vx_0(i,j-1)-vx_0(i,j+1)); | ||||||
|  |      | ||||||
|  | 			if filtro_1(i,j)==2 % Manual setting to visualize bad integrated points  | ||||||
|  | 				ftle(i-1,j-1)=0; | ||||||
|  | 			else | ||||||
|  | 				ftle(i-1,j-1)=(1/abs(T))*log(max(sqrt(abs(eig(dphi*dphi'))))); | ||||||
|  |                 ftle_norm(i-1,j-1)=(1/abs(T))*log(norm(dphi)); | ||||||
|  | 			end | ||||||
|  | 		end | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  |  | ||||||
|  | %% Plotting results | ||||||
|  | % figure | ||||||
|  | % plot(t,Y) | ||||||
|  | % figure | ||||||
|  | % plot(Y(:,1),Y(:,2)) | ||||||
|  | % figure | ||||||
|  |  | ||||||
|  | xx=linspace(x_0_min,x_0_max,n); | ||||||
|  | vvx=linspace(vx_0_min,vx_0_max,n); | ||||||
|  | [x,vx]=ndgrid(xx(2:n-1),vvx(2:n-1)); | ||||||
|  | figure | ||||||
|  | pcolor(x,vx,ftle) | ||||||
|  | shading flat | ||||||
|  |  | ||||||
|  | t_ftle=toc; | ||||||
|  | fprintf('tempo per integrare      \t%.2f s\n',t_integrazione) | ||||||
|  | fprintf('tempo per calcolare ftle \t%.2f s\n',t_ftle) | ||||||
|  |  | ||||||
|  | % ora=fstringf %TODO | ||||||
|  | % save(['var_' num2str(n) '_' num2str(clock(4)]) | ||||||
|  |  | ||||||
|  | nome=['var_xvx_', 'ode00', '_n',num2str(n)]; | ||||||
|  | save(nome) | ||||||
							
								
								
									
										40
									
								
								samples/Matlab/Integrate1.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								samples/Matlab/Integrate1.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | |||||||
|  | function [ x_T, y_T, vx_T, e_T, filter ] = Integrate_FILE( x_0, y_0, vx_0, e_0, T, N, mu, options) | ||||||
|  | %Integrate | ||||||
|  | %   This function performs Runge-Kutta-Fehlberg integration for given | ||||||
|  | %   initial conditions to compute FILE | ||||||
|  | nx=length(x_0); | ||||||
|  | ny=length(y_0); | ||||||
|  | nvx=length(vx_0); | ||||||
|  | ne=length(e_0); | ||||||
|  | vy_0=zeros(nx,ny,nvx,ne); | ||||||
|  | x_T=zeros(nx,ny,nvx,ne); | ||||||
|  | y_T=zeros(nx,ny,nvx,ne); | ||||||
|  | vx_T=zeros(nx,ny,nvx,ne); | ||||||
|  | vy_T=zeros(nx,ny,nvx,ne); | ||||||
|  | e_T=zeros(nx,ny,nvx,ne); | ||||||
|  | %% Look for phisically meaningful points | ||||||
|  | filter=zeros(nx,ny,nvx,ne);  %0=meaningless point 1=meaningful point | ||||||
|  |  | ||||||
|  | %% Integrate only meaningful points | ||||||
|  | h=waitbar(0,'','Name','Integration in progress, please wait!'); | ||||||
|  | for i=1:nx | ||||||
|  | 	waitbar(i/nx,h,sprintf('Computing i=%i',i)); | ||||||
|  | 	for j=1:ny | ||||||
|  | 		parfor k=1:nvx | ||||||
|  | 			for l=1:ne | ||||||
|  | 				vy_0(i,j,k,l)=sqrt(2*Potential(x_0(i),y_0(j),mu)+2*e_0(l)-vx_0(k)^2); | ||||||
|  | 				if isreal(vy_0(i,j,k,l)) | ||||||
|  | 					filter(i,j,k,l)=1; | ||||||
|  | 					ci=[x_0(i), y_0(j), vx_0(k), vy_0(i,j,k,l)]; | ||||||
|  | 					[t,Y,te,ye,ie]=ode45(@f,[0 T], ci, options, mu); | ||||||
|  | 					x_T(i,j,k,l)=ye(N+1,1); | ||||||
|  | 					y_T(i,j,k,l)=ye(N+1,2); | ||||||
|  | 					vx_T(i,j,k,l)=ye(N+1,3); | ||||||
|  | 					vy_T(i,j,k,l)=ye(N+1,4); | ||||||
|  | 					e_T(i,j,k,l)=0.5*(vx_T(i,j,k,l)^2+vy_T(i,j,k,l)^2)-Potential(x_T(i,j,k,l),y_T(i,j,k,l),mu); | ||||||
|  | 				end | ||||||
|  | 			end | ||||||
|  | 		end | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  | close(h); | ||||||
							
								
								
									
										60
									
								
								samples/Matlab/Integrate2.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								samples/Matlab/Integrate2.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | |||||||
|  | function [ x_T, y_T, vx_T, e_T, filter, delta_e ] = Integrate_FTLE_Gawlick_ell( x_0, y_0, vx_0, e_0, T, mu, ecc, nu, options) | ||||||
|  | %Integrate | ||||||
|  | %   This function performs Runge-Kutta-Fehlberg integration for given | ||||||
|  | %   initial conditions to compute FTLE to obtain the image in the Gawlick's | ||||||
|  | %   article "Lagrangian Coherent Structures in the Elliptic Restricted | ||||||
|  | %   Three-Body Problem". | ||||||
|  | nx=length(x_0); | ||||||
|  | ny=length(y_0); | ||||||
|  | nvx=length(vx_0); | ||||||
|  | ne=length(e_0); | ||||||
|  | vy_0=zeros(nx,ny,nvx,ne); | ||||||
|  | x_T=zeros(nx,ny,nvx,ne); | ||||||
|  | y_T=zeros(nx,ny,nvx,ne); | ||||||
|  | vx_T=zeros(nx,ny,nvx,ne); | ||||||
|  | vy_T=zeros(nx,ny,nvx,ne); | ||||||
|  | e_T=zeros(nx,ny,nvx,ne); | ||||||
|  | delta_e=zeros(nx,ny,nvx,ne); | ||||||
|  | %% Look for phisically meaningful points | ||||||
|  | filter=zeros(nx,ny,nvx,ne);  %0=meaningless point 1=meaningful point | ||||||
|  | useful=ones(nx,ny,nvx,ne); | ||||||
|  | %% Integrate only useful points | ||||||
|  | useful(:,1,:,1)=0; | ||||||
|  | useful(:,1,:,3)=0; | ||||||
|  | useful(:,3,:,1)=0; | ||||||
|  | useful(:,3,:,3)=0; | ||||||
|  |  | ||||||
|  | %% Integrate only meaningful points | ||||||
|  | h=waitbar(0,'','Name','Integration in progress, please wait!'); | ||||||
|  | for i=1:nx | ||||||
|  | 	waitbar(i/nx,h,sprintf('Computing i=%i',i)); | ||||||
|  | 	for j=1:ny | ||||||
|  | 		parfor k=1:nvx | ||||||
|  | 			for l=1:ne | ||||||
|  | 				if useful(i,j,k,l) | ||||||
|  | 					vy_0(i,j,k,l)=-sqrt(2*(Omega(x_0(i),y_0(j),mu)/(1+ecc*cos(nu)))+2*e_0(l)-vx_0(k)^2); | ||||||
|  | 					if isreal(vy_0(i,j,k,l)) | ||||||
|  | 						filter(i,j,k,l)=1; | ||||||
|  | 						 | ||||||
|  | 						ci=[x_0(i), y_0(j), vx_0(k), vy_0(i,j,k,l)]; | ||||||
|  | 						[t,Y]=ode45(@f_ell,[0 T], ci, options, mu, ecc); | ||||||
|  | 						 | ||||||
|  | 						if abs(t(end)) < abs(T) % Consider also negative time | ||||||
|  | 							filter(i,j,k,l)=3 | ||||||
|  | 						end | ||||||
|  | 						 | ||||||
|  | 						x_T(i,j,k,l)=Y(end,1); | ||||||
|  | 						y_T(i,j,k,l)=Y(end,2); | ||||||
|  | 						vx_T(i,j,k,l)=Y(end,3); | ||||||
|  | 						vy_T(i,j,k,l)=Y(end,4); | ||||||
|  | 						e_T(i,j,k,l)=0.5*(vx_T(i,j,k,l)^2+vy_T(i,j,k,l)^2)-Omega(x_T(i,j,k,l),y_T(i,j,k,l),mu); | ||||||
|  | 						 | ||||||
|  | 						% Compute the goodness of the integration | ||||||
|  | 						delta_e(i,j,k,l)=abs(e_T(i,j,k,l)-e_0(l)); | ||||||
|  | 					end | ||||||
|  | 				end | ||||||
|  | 			end | ||||||
|  | 		end | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  | close(h); | ||||||
							
								
								
									
										28
									
								
								samples/Matlab/Lagr.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								samples/Matlab/Lagr.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  | function [xl1,yl1,xl2,yl2,xl3,yl3,xl4,yl4,xl5,yl5] = Lagr(mu) | ||||||
|  | % [xl1,yl1,xl2,yl2,xl3,yl3,xl4,yl4,xl5,yl5] = Lagr(mu) | ||||||
|  | % Lagr This function computes the coordinates of the Lagrangian points, | ||||||
|  | % given the mass parameter | ||||||
|  | yl1=0; | ||||||
|  | yl2=0; | ||||||
|  | yl3=0; | ||||||
|  | yl4=sqrt(3)/2; | ||||||
|  | yl5=-sqrt(3)/2; | ||||||
|  | c1=roots([1 mu-3 3-2*mu -mu 2*mu -mu]); | ||||||
|  | c2=roots([1 3-mu 3-2*mu -mu -2*mu -mu]); | ||||||
|  | c3=roots([1 2+mu 1+2*mu mu-1 2*mu-2 mu-1]); | ||||||
|  | xl1=0; | ||||||
|  | xl2=0; | ||||||
|  | for i=1:5 | ||||||
|  |     if isreal(c1(i)) | ||||||
|  |         xl1=1-mu-c1(i); | ||||||
|  |     end | ||||||
|  |     if isreal(c2(i)) | ||||||
|  |         xl2=1-mu+c2(i); | ||||||
|  |     end | ||||||
|  |     if isreal(c3(i)) | ||||||
|  |         xl3=-mu-c3(i); | ||||||
|  |     end | ||||||
|  | end | ||||||
|  | xl4=0.5-mu; | ||||||
|  | xl5=xl4; | ||||||
|  | end | ||||||
							
								
								
									
										16
									
								
								samples/Matlab/Lagrangian_points.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								samples/Matlab/Lagrangian_points.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | % Plot dei Lagrangian points | ||||||
|  | n=5; | ||||||
|  | mu=linspace(0,0.5,n); | ||||||
|  | for i=1:n | ||||||
|  |     [xl1,yl1,xl2,yl2,xl3,yl3,xl4,yl4,xl5,yl5] = Lagr(mu(i)); | ||||||
|  |     figure (1) | ||||||
|  |     hold all | ||||||
|  |     plot(xl1, yl1, 's') | ||||||
|  |     plot(xl2, yl2, 's') | ||||||
|  |     plot(xl3, yl3, 's') | ||||||
|  |     plot(xl4, yl4, 's') | ||||||
|  |     plot(xl5, yl5, 's') | ||||||
|  |     plot(-mu,0,'o') | ||||||
|  |     plot(1-mu,0, 'o') | ||||||
|  |     plot([-mu(i) xl4],[0 yl4]) | ||||||
|  | end | ||||||
							
								
								
									
										18
									
								
								samples/Matlab/Poincare.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								samples/Matlab/Poincare.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | clear | ||||||
|  | %% Initial Conditions | ||||||
|  | mu=0.012277471; | ||||||
|  | T=10; | ||||||
|  | N=5; | ||||||
|  | C=3.17; | ||||||
|  | x_0=0.30910452642073; | ||||||
|  | y_0=0.07738174525518; | ||||||
|  | vx_0=-0.72560796964234; | ||||||
|  | vy_0=sqrt(-C-vx_0^2+2*Potential(x_0,y_0,mu)); | ||||||
|  | k=0; | ||||||
|  | %% Integration | ||||||
|  | options=odeset('AbsTol',1e-22,'RelTol',1e-13,'Events',@cross_y); | ||||||
|  | [t,y,te,ye,ie]=ode113(@f,[0 T],[x_0; y_0; vx_0; vy_0],options,mu); | ||||||
|  |  | ||||||
|  | figure | ||||||
|  | %plot(ye(:,1),ye(:,3),'rs') | ||||||
|  | plot(ye(:,1),0,'rs') | ||||||
							
								
								
									
										24
									
								
								samples/Matlab/RK4.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								samples/Matlab/RK4.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | function x = RK4( fun, tspan, ci, mu ) | ||||||
|  | %RK4 4th-order Runge Kutta integrator | ||||||
|  | %   Detailed explanation goes here | ||||||
|  | h=1e-5; | ||||||
|  | t=tspan(1); | ||||||
|  | T=tspan(length(tspan)); | ||||||
|  | dim=length(ci); | ||||||
|  | %x=zeros(l,dim); | ||||||
|  | x(:,1)=ci; | ||||||
|  | i=1; | ||||||
|  | while t<T | ||||||
|  | 	k1=fun(t,x(:,i),mu); | ||||||
|  | 	k2=fun(t+h/2,x(:,i)+k1*h/2,mu); | ||||||
|  | 	k3=fun(t+h/2,x(:,i)+k2*h/2,mu); | ||||||
|  | 	k4=fun(t+h,x(:,i)+h*k3,mu); | ||||||
|  | 	x(:,i+1)=x(:,i)+(h/6*(k1+2*k2+2*k3+k4)); | ||||||
|  | 	t=t+h; | ||||||
|  | 	i=i+1; | ||||||
|  | end | ||||||
|  | x=x'; | ||||||
|  | % 	function events(x) | ||||||
|  | % 	dist= | ||||||
|  | % 	return  | ||||||
|  | end | ||||||
							
								
								
									
										13
									
								
								samples/Matlab/distance.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								samples/Matlab/distance.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | function [ value,isterminal,direction ] = distance( t,y,mu ) | ||||||
|  | % DISTANCE compute the distance from the attactors | ||||||
|  | %   [ value,terminal,direction ] = distance( t,y ) | ||||||
|  |  | ||||||
|  | d=1e-2; % FIXME | ||||||
|  |  | ||||||
|  | % TODO mettere if se tolleranza D-d<tol -> value=0 | ||||||
|  | D=sqrt((y(1)+mu).^2+y(2).^2); % distance from the largest primary | ||||||
|  |  | ||||||
|  | value=d-D; | ||||||
|  | isterminal=1; | ||||||
|  | direction=0; | ||||||
|  | end | ||||||
							
								
								
									
										49
									
								
								samples/Matlab/double_gyre.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								samples/Matlab/double_gyre.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | |||||||
|  | clear all | ||||||
|  | tic | ||||||
|  | % initialize integration time T, f(x,t), discretization size n ---------------- | ||||||
|  | T = 8; | ||||||
|  | x_min=0; | ||||||
|  | x_max=2; | ||||||
|  | y_min=0; | ||||||
|  | y_max=1; | ||||||
|  | n=50; % how many points per one measure unit (both in x and in y) | ||||||
|  | ds=1/(n-1); | ||||||
|  | x_res=(x_max-x_min)*n; | ||||||
|  | y_res=(y_max-y_min)*n; | ||||||
|  | grid_x=linspace(x_min,x_max,x_res); | ||||||
|  | grid_y=linspace(y_min,y_max,y_res); | ||||||
|  |  | ||||||
|  | advected_x=zeros(x_res,y_res); | ||||||
|  | advected_y=zeros(x_res,y_res); | ||||||
|  | % integrate all initial points for t in [0,T] -------------------------------- | ||||||
|  | parfor i = 1:x_res | ||||||
|  | 	for j = 1:y_res | ||||||
|  | 		[t,X] = ode45(@dg,[0,T],[grid_x(i),grid_y(j)]); | ||||||
|  | 		% store advected positions as they would appear in (x,y) coords ------ | ||||||
|  | 		advected_x(i,j) = X(length(X(:,1)),1); | ||||||
|  | 		advected_y(i,j) = X(length(X(:,2)),2); | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  | %% Compute FTLE | ||||||
|  | sigma=zeros(x_res,y_res); | ||||||
|  | % at each point in interior of grid, store FTLE ------------------------------ | ||||||
|  | for i = 2:x_res-1 | ||||||
|  | 	for j = 2:y_res-1 | ||||||
|  | 		% compute Jacobian phi ----------------------------------------------- | ||||||
|  | 		phi(1,1) = (advected_x(i+1,j)-advected_x(i-1,j))/(2*ds); | ||||||
|  | 		phi(1,2) = (advected_x(i,j-1)-advected_x(i,j+1))/(2*ds); | ||||||
|  | 		phi(2,1) = (advected_y(i+1,j)-advected_y(i-1,j))/(2*ds); | ||||||
|  | 		phi(2,2) = (advected_y(i,j-1)-advected_y(i,j+1))/(2*ds); | ||||||
|  | 		% find max eigenvalue of phi'*phi ------------------------------------ | ||||||
|  | 		lambda_max = max(abs(eig(phi'*phi))); | ||||||
|  | 		% store FTLE --------------------------------------------------------- | ||||||
|  | 		sigma(i,j) = log(lambda_max)/abs(2*T); | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  | toc | ||||||
|  | %% plot FTLE field ------------------------------------------------------------ | ||||||
|  | figure | ||||||
|  | contourf(grid_x,grid_y,sigma'); | ||||||
|  | colorbar('location','EastOutside'); | ||||||
|  | axis equal | ||||||
|  | shading flat | ||||||
							
								
								
									
										41
									
								
								samples/Matlab/example.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								samples/Matlab/example.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | |||||||
|  | clear all | ||||||
|  | tic | ||||||
|  | % initialize integration time T, f(x,t), discretization size n ---------------- | ||||||
|  | T = 20; | ||||||
|  | f_x_t = inline('[v(2);-sin(v(1))]','t','v'); | ||||||
|  | grid_min = -3.4; | ||||||
|  | grid_max = 3.4; | ||||||
|  | grid_width = grid_max-grid_min; | ||||||
|  | n = 35; | ||||||
|  | grid_spacing = grid_min:(grid_width/(n-1)):grid_max; | ||||||
|  | advected_x=zeros(n,n); | ||||||
|  | advected_y=zeros(n,n); | ||||||
|  | % integrate all initial points for t in [0,T] -------------------------------- | ||||||
|  | for i = 1:n | ||||||
|  | 	for j = 1:n | ||||||
|  | 		[t,x] = ode45(f_x_t,[0,T],[grid_spacing(i),grid_spacing(j)]); | ||||||
|  | 		% store advected positions as they would appear in (x,y) coords ------ | ||||||
|  | 		advected_x(n-j+1,i) = x(length(x(:,1)),1); | ||||||
|  | 		advected_y(n-j+1,i) = x(length(x(:,2)),2); | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  | sigma=zeros(n,n); | ||||||
|  | % at each point in interior of grid, store FTLE ------------------------------ | ||||||
|  | for i = 2:n-1 | ||||||
|  | 	for j = 2:n-1 | ||||||
|  | 		% compute Jacobian phi ----------------------------------------------- | ||||||
|  | 		phi(1,1) = (advected_x(i,j+1)-advected_x(i,j-1))/(2*grid_width/(n-1)); | ||||||
|  | 		phi(1,2) = (advected_x(i-1,j)-advected_x(i+1,j))/(2*grid_width/(n-1)); | ||||||
|  | 		phi(2,1) = (advected_y(i,j+1)-advected_y(i,j-1))/(2*grid_width/(n-1)); | ||||||
|  | 		phi(2,2) = (advected_y(i-1,j)-advected_y(i+1,j))/(2*grid_width/(n-1)); | ||||||
|  | 		% find max eigenvalue of phi'*phi ------------------------------------ | ||||||
|  | 		lambda_max = max(abs(eig(phi'*phi))); | ||||||
|  | 		% store FTLE --------------------------------------------------------- | ||||||
|  | 		sigma(i,j) = log(lambda_max)/abs(T); | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  | toc | ||||||
|  | %% plot FTLE field ------------------------------------------------------------ | ||||||
|  | figure | ||||||
|  | contourf(grid_spacing,grid_spacing,sigma); | ||||||
|  | colorbar('location','EastOutside'); | ||||||
							
								
								
									
										156
									
								
								samples/Matlab/gpu_RKF45_FILE.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								samples/Matlab/gpu_RKF45_FILE.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,156 @@ | |||||||
|  | tic | ||||||
|  | clear | ||||||
|  | %% Range definition | ||||||
|  | n=200; | ||||||
|  |  | ||||||
|  | mu=0.1; | ||||||
|  | [xl1,yl1,xl2,yl2,xl3,yl3,xl4,yl4,xl5,yl5]=Lagr(mu); | ||||||
|  | C_L1=2*Omega(xl1,yl1,mu); | ||||||
|  | E_0=-C_L1/2+0.03715; | ||||||
|  | Y_0=0; | ||||||
|  |  | ||||||
|  | nx=n; | ||||||
|  | x_0_min=-0.8; | ||||||
|  | x_0_max=-0.15; | ||||||
|  | x_0=linspace(x_0_min, x_0_max, nx); | ||||||
|  | dx=(x_0_max-x_0_min)/(nx-1); | ||||||
|  |  | ||||||
|  | nvx=n; | ||||||
|  | vx_0_min=-2; | ||||||
|  | vx_0_max=2; | ||||||
|  | vx_0=linspace(vx_0_min, vx_0_max, nvx); | ||||||
|  | dvx=(vx_0_max-vx_0_min)/(nvx-1); | ||||||
|  |  | ||||||
|  | ny=3; | ||||||
|  | dy=(dx+dvx)/2; | ||||||
|  | y_0=[Y_0-dy Y_0 Y_0+dy]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ne=3; | ||||||
|  | de=dy; | ||||||
|  | e_0=[E_0-de E_0 E_0+de]; | ||||||
|  |  | ||||||
|  | %% Definition of arrays of initial conditions | ||||||
|  |  | ||||||
|  | %In this approach, only useful pints are stored and integrated | ||||||
|  |  | ||||||
|  | m=1; | ||||||
|  | % x=zeros(1,nx*ny*nvx*ne); | ||||||
|  | % y=zeros(1,nx*ny*nvx*ne); | ||||||
|  | % vx=zeros(1,nx*ny*nvx*ne); | ||||||
|  | % e=zeros(1,nx*ny*nvx*ne); | ||||||
|  | % vy=zeros(1,nx*ny*nvx*ne); | ||||||
|  | filter=zeros(nx,3,nvx,3); | ||||||
|  |  | ||||||
|  | for i=1:nx | ||||||
|  | 	for j=1:ny | ||||||
|  | 		for k=1:nvx | ||||||
|  | 			for l=1:ne | ||||||
|  | 				v_y=-sqrt(2*Omega(x_0(i),y_0(j),mu)+2*e_0(l)-vx_0(k)^2); | ||||||
|  | 				if ~((j~=2) && (l~=2)) && isreal(v_y) | ||||||
|  | 					x(m)=x_0(i); | ||||||
|  | 					y(m)=y_0(j); | ||||||
|  | 					vx(m)=vx_0(k); | ||||||
|  | 					e(m)=e_0(l); | ||||||
|  | 					vy(m)=v_y; | ||||||
|  | 					filter(i,j,k,l)=1; | ||||||
|  | 					m=m+1; | ||||||
|  | 				end | ||||||
|  | 			end | ||||||
|  | 		end | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  |  | ||||||
|  | %% Selection of useful points | ||||||
|  |  | ||||||
|  | %% Data transfer to GPU | ||||||
|  | x_gpu=gpuArray(x); | ||||||
|  | y_gpu=gpuArray(y); | ||||||
|  | vx_gpu=gpuArray(vx); | ||||||
|  | vy_gpu=gpuArray(vy); | ||||||
|  |  | ||||||
|  | %% Integration on GPU | ||||||
|  | N=1; | ||||||
|  | t0=0; | ||||||
|  |  | ||||||
|  | [x_f,y_f,vx_f,vy_f]=arrayfun(@RKF45_FILE_gpu,t0,N,x_gpu,y_gpu,vx_gpu,vy_gpu,mu); | ||||||
|  |  | ||||||
|  | %% Data back to CPU and GPU memory cleaning | ||||||
|  | clear x_gpu y_gpu vx_gpu vy_gpu | ||||||
|  | x_T=gather(x_f); | ||||||
|  | clear x_f | ||||||
|  | y_T=gather(y_f); | ||||||
|  | clear y_f | ||||||
|  | vx_T=gather(vx_f); | ||||||
|  | clear vx_f | ||||||
|  | vy_T=gather(vy_f); | ||||||
|  | clear vy_f | ||||||
|  |  | ||||||
|  | %% Construction of matrix for FTLE computation | ||||||
|  |  | ||||||
|  | X_T=zeros(nx,ny,nvx,ne); | ||||||
|  | Y_T=zeros(nx,ny,nvx,ne); | ||||||
|  | VX_T=zeros(nx,ny,nvx,ne); | ||||||
|  | VY_T=zeros(nx,ny,nvx,ne); | ||||||
|  | E_T=zeros(nx,ny,nvx,ne); | ||||||
|  | m=1; | ||||||
|  | for i=1:nx | ||||||
|  |     for j=1:ny | ||||||
|  |         for k=1:nvx | ||||||
|  |             for l=1:ne | ||||||
|  |                 if filter(i,j,k,l)==1 | ||||||
|  |                     X_T(i,j,k,l)=x_T(m); | ||||||
|  |                     Y_T(i,j,k,l)=y_T(m); | ||||||
|  |                     VX_T(i,j,k,l)=vx_T(m); | ||||||
|  |                     VY_T(i,j,k,l)=vy_T(m); | ||||||
|  |                     E_T(i,j,k,l)=0.5*(VX_T(i,j,k,l)^2+VY_T(i,j,k,l)^2)-Omega(X_T(i,j,k,l),Y_T(i,j,k,l),mu); | ||||||
|  |                     m=m+1; | ||||||
|  |                 end | ||||||
|  |             end | ||||||
|  |         end | ||||||
|  |     end | ||||||
|  | end | ||||||
|  |  | ||||||
|  | %% Compute filter for FTLE | ||||||
|  | filter_ftle=filter; | ||||||
|  | for i=2:(nx-1) | ||||||
|  | 	for j=2:(ny-1) | ||||||
|  | 		for k=2:(nvx-1) | ||||||
|  | 			for l=2:(ne-1) | ||||||
|  | 				if filter(i,j,k,l)==0 || filter (i,j,k,l)==3 | ||||||
|  | 					filter_ftle(i,j,k,l)=0; | ||||||
|  | 					 | ||||||
|  | 					filter_ftle(i+1,j,k,l)=0; | ||||||
|  | 					filter_ftle(i-1,j,k,l)=0; | ||||||
|  | 					 | ||||||
|  | 					filter_ftle(i,j+1,k,l)=0; | ||||||
|  | 					filter_ftle(i,j-1,k,l)=0; | ||||||
|  | 					 | ||||||
|  | 					filter_ftle(i,j,k+1,l)=0; | ||||||
|  | 					filter_ftle(i,j,k-1,l)=0; | ||||||
|  | 					 | ||||||
|  | 					filter_ftle(i,j,k,l+1)=0; | ||||||
|  | 					filter_ftle(i,j,k,l-1)=0; | ||||||
|  | 				end | ||||||
|  | 			end | ||||||
|  | 			 | ||||||
|  | 		end | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  | %% FTLE computation | ||||||
|  |  | ||||||
|  | [ftle, dphi]=Compute_FILE_gpu( X_T, Y_T, VX_T, E_T, dx, dy, dvx, de, N, filter_ftle); | ||||||
|  |  | ||||||
|  | %% Plot results | ||||||
|  | figure | ||||||
|  | FTLE=squeeze(ftle(:,2,:,2)); | ||||||
|  | FTLE(1,:)=[]; | ||||||
|  | % FTLE(2,:)=[]; | ||||||
|  | FTLE(:,1)=[]; | ||||||
|  | % FTLE(:,2)=[]; | ||||||
|  | x_0(1)=[]; | ||||||
|  | vx_0(1)=[]; | ||||||
|  | pcolor(x_0, vx_0, FTLE') | ||||||
|  | shading flat | ||||||
|  | toc | ||||||
							
								
								
									
										19
									
								
								samples/Matlab/test_rk_par.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								samples/Matlab/test_rk_par.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | clear | ||||||
|  | mu=0.1; | ||||||
|  | x_0=linspace(-0.8, -0.15, 2) | ||||||
|  | y_0=zeros(1,2) | ||||||
|  | vx_0=linspace(-2, 2, 2) | ||||||
|  | vy_0=zeros(1,2) | ||||||
|  | ci=[1-mu-0.05 0 0.005 0.5290] | ||||||
|  | t0=[0;0] | ||||||
|  | T=[2;2] | ||||||
|  | tspan=2 | ||||||
|  | arg1={@f;@f} | ||||||
|  | %tspan={[0 2],[0 2]}; | ||||||
|  | arg=[mu;mu] | ||||||
|  | [X]=arrayfun(RK4_par,t0,T,x_0',y_0',vx_0',vy_0',arg) | ||||||
|  | % [X]=arrayfun(@f,[0;1],[ci;ci],[mu;mu]); | ||||||
|  | %Y=RK4(@f,tspan,ci,mu); | ||||||
|  | % figure | ||||||
|  | % plot(Y(:,1),Y(:,2)) | ||||||
|  | % Y(end,1) | ||||||
		Reference in New Issue
	
	Block a user