
% Iterating a rectangular region onto a horseshoe 
% for the Henon map (fig 5.14)

clear
format compact

henon_map = inline('[a-x.^2+b*y x]','a','b','x','y');

a=4
b=-0.3
Nit=3;

Rx=[-2.95 2.9 2.6 -2.6]';
Ry=[-3.8 -2.8 3.1 3.1]';

Rx=[Rx;Rx(1)];
Ry=[Ry;Ry(1)];


L1x=linspace(Rx(1),Rx(2),1000);
L2x=linspace(Rx(2),Rx(3),1000);
L3x=linspace(Rx(3),Rx(4),1000);
L4x=linspace(Rx(4),Rx(5),1000);

L1y=linspace(Ry(1),Ry(2),1000);
L2y=linspace(Ry(2),Ry(3),1000);
L3y=linspace(Ry(3),Ry(4),1000);
L4y=linspace(Ry(4),Ry(5),1000);

Lx=[L1x L2x L3x L4x]';
Ly=[L1y L2y L3y L4y]';

figure(1)
clf
lw=3;
ms=5;

plot(Lx,Ly,'r-','LineWidth',lw)
axis([-4 5.25 -4 4])
hold on
plot(Rx(1),Ry(1),'mo',Rx(2),Ry(2),'bo',Rx(3),Ry(3),'ko',Rx(4),Ry(4),'go','LineWidth',lw)
set(gca,'FontSize',[18]);
xlabel('x_n'); ylabel('y_n');
title(['Horseshoe for Henon map: a=',num2str(a),', b=',num2str(b)])

for i=1:Nit
 fprintf('press any key to continue...\n')
 pause
 H=henon_map(a,b,Rx,Ry);
 Rx=H(:,1);
 Ry=H(:,2);
 H=henon_map(a,b,Lx,Ly);
 Lx=H(:,1);
 Ly=H(:,2);
 if lw>1  
%  lw=lw-1;
  lw=lw-0.5;
 end
 if(i==1)
  plot(Lx,Ly,'b','LineWidth',lw)
 elseif(i==2)
  plot(Lx,Ly,'Color',[0 0.6 0],'LineWidth',lw)
 elseif(i==3)
  plot(Lx,Ly,'m','LineWidth',lw)
 end
 plot(Rx(1),Ry(1),'mo',Rx(2),Ry(2),'bo',Rx(3),Ry(3),'ko',Rx(4),Ry(4),'go','LineWidth',lw)
end

