function [Zr,Ind]=SystemIDTG(I,T,N)
	% Programador: Fredy Vides
	% Proyecto: ACRPkG/CICC-UNAH 2020
	% Examples:
	% [Z,Ind]=SystemIDTG([0 .5],2,101);
	% [Z,Ind]=SystemIDTG([0 1],2,201); 

	% Cómputo e identificación de un sistema dinámico 
	% determinado por la terna (R^+,S¹gt,f)
	% donde R^+ es el conjunto de tiempo de números reales no 
	% negativos, S¹gt es el círculo unitario en la geomtría 
	% del taxista, y f:R^+ → S¹gt es el mapa dinámico
	% en el círculo unitario en la geometría del taxista
	
	% Definición del mapa dinámico aplicando el mapa 
	% S1gt: S¹ → S¹gt
	% calculado por Fredy Vides y asignado como parte
	% de un ejercicio al lector
	f = @(t)S1gt(exp(2*pi*i*T*t)); 
	
	% Particionamiento del intervalo de tiempo
	dI=diff(I);
	t=I(1):dI/(N-1):I(2);

	% Cómputo de órbitas en S¹gt
	S1GT=f(t);

	% Cómputo de mapeo de S¹gt en S¹
	S1r=S1GT./abs(S1GT);

	% Identificación del sistema dinámico mapeado correspondiente
	S1r0=S1r(1:(N-1));
	S1r1=S1r(2:N);
	Zr=S1r1/S1r0;
	F=@(z)z.^floor((N*angle(Zr))/(2*pi*dI));

	% Aproximación numérica del índice de la trayectoria determinada 
	% por el levantamiento mapa dinámico a S¹
	Ind=NGiros(F,0,floor(N/10));

	% Cómputo de la órbita identificada
	S1GTr=S1gt(F(exp(2*pi*i*t)));

	% Visualización de resultados
	for k=1:N
		subplot(121);
		Z=S1GT(1:k);
		plot(real(Z),imag(Z),'b','linewidth',4,...
		real(Z(1)),imag(Z(1)),'g.','markersize',...
		24,real(Z(k)),imag(Z(k)),'r.','markersize',24);
		axis ([-1 1 -1 1]);
		axis square;	
		title('Dinámica observada')
		pause(.1);
		subplot(122);
		Z=S1GTr(1:k);
		plot(real(Z),imag(Z),'b','linewidth',4,...
		real(Z(1)),imag(Z(1)),'g.','markersize',...
		24,real(Z(k)),imag(Z(k)),'r.','markersize',24);
		axis ([-1 1 -1 1]);
		axis square;	
		title('Dinámica identificada')
		pause(.1);
	end
end
