function recurrence(N)
% recurrence(n) ger n simuleringar av tid till återkomst starttillstånd vid
% symmetrisk  slumpvandring på linjen.
% Prova med n ca 100 till 500. Simuleringen kan ta flera minuter.
% Resultatet blir tre plottar. Den första ger återkomsttider.
% Med sliden till vänster kan y-skalan ändras.
% Den andra plotten ger successiva medelvärden av återkomsttiderna.
% Plott nummer tre ger de maximala absolutvärdena vid dessa simuleringar,
% dvs hur långt ut från starttillståndet en utflykt nått.

disp('Vänta...')

for j=1:N
 x=0;
  x=x+2*(rand(1)<.5)-1;
  n=1;
  M(j)=1;
  while(x~=0) 
     x=x+2*(rand(1)<.5)-1;
     M(j)=max(M(j),abs(x));
     n=n+1;
  end;
  T(j)=n;
end


figure
pos=get(gcf,'posit');
bar(T,0.005)
title('Tid till återkomst')
xlabel('simulering nr')
ylabel('N, tid till återkomst')

set(gca,'Xlim',[0 N+1]);

slm=log(max(get(gca,'Ylim')));

uicontrol(gcf,'Style','slider','Position',[5 40 20 350],'Min',2,...
	'Max',slm,'Value',slm,'Callback',...
	'a=get(gcf,''ch'');b=get(a(2),''val'');set(gca,''Ylim'',[0 exp(b)])');
uicontrol(gcf,'Style','text','Position',[10 395 40 20],...
	'String','max T'); 

a=get(gcf,'ch');
set(a(2),'sliderst',[0.001 0.01]);


f=figure;
%set(f,'menubar','none')
set(gcf,'posit',pos-[40 40 0 0]);
plot(cumsum(T)./(1:length(T)))
title('Medeltider till återkomst efter j simuleringar')
xlabel('j=antal simuleringar')
ylabel('medeltid till återkomst')


figure
set(gcf,'posit',pos-[80 80 0 0]);
bar(M,0.005)
title('Maximal utflykt från startvärde')
xlabel('simulering nr')
ylabel('maximal utflykt')

set(gca,'Xlim',[0 N+1]);

slm2=log(max(get(gca,'Ylim')));

uicontrol(gcf,'Style','slider','Position',[5 40 20 350],'Min',0,...
	'Max',slm2,'Value',slm2,'Callback',...
	'c=get(gcf,''ch'');d=get(c(2),''val'');set(gca,''Ylim'',[0 exp(d)])');
uicontrol(gcf,'Style','text','Position',[10 395 40 20],...
	'String','max M'); 

c=get(gcf,'ch');
set(c(2),'sliderst',[0.001 0.01]);
