
function esercizio3

% ... impostazioni iniziali ...
hV=[0.1 0.05 0.02 0.01 0.001]; % passi
sol=@(x) exp(-100*x);          % soluzione
fcn=@(x,y) 0*x-100*y;          % funzione problema di Cauchy
t0=0; y0=1; t_end=100; tol=10^(-6); % dati del problema

sol_100=feval(sol,100);

% ... test ...
for k=1:length(hV)
    
    h=hV(k); % passo
    
    % ... valuta 1+h*(-100) ...
    fprintf('\n \n \t h: %1.5f',h);
    if abs(1-100*h) < 1
        fprintf('\n \t |1+h*lambda|<1');
    else
        fprintf('\n \t |1+h*lambda| >= 1');
    end
    
    % ... esegui test ...
    
    [t_EE,yt_EE] = eulero_esplicito(t0,y0,t_end,h,fcn);
    [t_EI,yt_EI,flag_EI]=eulero_implicito(t0,y0,t_end,h,fcn,tol);
    [t_CN,yt_CN,flag_CN]=crank_nicolson(t0,y0,t_end,h,fcn,tol);
    
    % ... calcola errori assoluti ...
    
    ae_EE_100(k)=abs(sol_100-yt_EE(end)); % Eulero Esplicito
    ae_EI_100(k)=abs(sol_100-yt_EI(end)); % Eulero Implicito
    ae_CN_100(k)=abs(sol_100-yt_CN(end)); % Crank-Nicolson
    
    % ... stampa risultati ...
    fprintf('\n Passo: %1.15e',h);
    fprintf('\n \t ae_EE_100: %1.3e',ae_EE_100(k)); 
    fprintf('\n \t ae_EI_100: %1.3e',ae_EI_100(k));
    fprintf('\n \t ae_CN_100: %1.3e',ae_CN_100(k));
    
end

fprintf('\n');