
function esercizio2

t0=0; y0=0; tfin=10; % Dati del problema.
fcn2=@(x,y) 0*x+(cos(y))^2; % Funzione del problema di Cauchy
tol=10^(-6);   % Tolleranza metodi impliciti.

hV=[0.2 0.1 0.05];
ae10=[]; % Lista degli errori assoluti per t=10.

for h=hV
    [t,u]=crank_nicolson(t0,y0,tfin,h,fcn2,tol);
    
    % Determina errori.
    y=atan(t);
    ae=abs(y-u);
    re=ae/abs(u);
    
    % Plot errori.
    figure(1)
    semilogy(t,ae,'-r','LineWidth',2,...
        'MarkerEdgeColor','k',...
        'MarkerFaceColor','g',...
        'MarkerSize',2);
    hold on;
    title_str=strcat('Errori assoluti: h=',num2str(h));
    title(title_str);
    hold off;
    
    figure(2)
    semilogy(t,re,'-r','LineWidth',2,...
        'MarkerEdgeColor','k',...
        'MarkerFaceColor','g',...
        'MarkerSize',2);
    hold on;
    title_str=strcat('Errori relativi: h=',num2str(h));
    title(title_str);
    hold off;
    fprintf('\n \t Premi un tasto per continuare.');
    pause;
    
    ae10(end+1)=ae(end); % Aggiung a lista degli errori assoluti per t=10.
    
end

% Calcola rapporti
rapporti=ae10(1:end-1)./ae10(2:end);

% Stampa risultati
fprintf('\n \n');
for k=1:length(rapporti)
    fprintf('\n \t Rapporto per h=%1.5e e h=%1.5e: %1.6e',hV(k),hV(k+1),...
        rapporti(k));
end

fprintf('\n \n');
