% SUCCESSIONE RICORRENTE.

% SUCCESSIONE "s_n" (IN AVANTI).
s(1)=exp(-1);   
for n=1:99
    s(n+1)=1-(n+1)*s(n);
end

% SUCCESSIONE "t_n" (ALL'INDIETRO).
m=500; M=2*m; % PER CALCOLARE I VALORI TRA 
              % 500 E 1, PONGO t_1000=0.
t=zeros(M,1); % INIZIALIZZAZIONE "t".
for n=M:-1:2
    j=n-1;
    t(j)=(1-t(n))/n;
end

% ESEGUE UNA MATRICE 2 x 1 DI GRAFICI.
% IL PRIMO GRAFICO LO METTE IN (1,1).
subplot(2,1,1); 

%--------------------------------------
% PRIMO GRAFICO: PLOT SEMI-LOGARITMICO. 
%--------------------------------------
hold on;
semilogy(1:length(s),abs(s),'k-'); 
semilogy(1:length(s),abs(t(1:length(s))),'m-');
hold off;


%--------------------------------------
% ANALISI DI t(1) PARTENDO DA DIFFERENTI
% t(m)=0; m=2,4,...,20
%--------------------------------------
t_1_exact=exp(-1);
for m=1:10
    
    M(m)=2*m;
    tt=zeros(M(m),1); % INIZIALIZZAZIONE "t".
    
    for n=M(m):-1:2  % SI OSSERVI CHE IL CICLO VA DA "M" A 2.
        tt(n-1)=(1-tt(n))/n;
    end
    
    val_t_1(m)=abs(t_1_exact-tt(1));
    fprintf('\n \t [M]: %2.0f [VAL.]: %10.15f',M(m),val_t_1(m));
    
end

%--------------------------------------
% SECONDO GRAFICO: ERRORI ASSOLUTI.
%--------------------------------------
subplot(2,1,2)
semilogy(M,abs(val_t_1),'k-');
