
function demo_newton

% default
toll=10^(-6); maxit=1000; esempio=3;
% esempi.
switch esempio
    case 1 % funzione piatta
        f=inline('exp(x)-2+x');
        f1=inline('exp(x)+1');
        x0=1; sol=0.4428544010023885;
    case 2 
        f=inline('sin(x)-x'); 
        f1=inline('cos(x)-1'); 
        x0=3; sol=0;
    case 3
        f=inline('x.^2-2'); 
        f1=inline('2*x'); 
        x0=2; sol=sqrt(2);
end
% newton
[xv, fxv, step, ko] = newtonfun (f, f1, x0, toll, maxit);


% statistiche
fprintf('\n \t esempio : %1.0f',esempio);
fprintf('\n \t soluzione : %1.15e',xv(end));
fprintf('\n \t tolleranza: %1.15e',toll);
fprintf('\n \t numero it.: %4d',length(xv)-1);

if ko == 0
    fprintf('\n \t La procedura e'' terminata correttamente');
else
    fprintf('\n \t La procedura non e'' terminata correttamente');
end
fprintf('\n \n');

% ---------------------- plot ----------------------
% grafico risultati step
figure(1)
clf; 
indici=(1:length(step))';
semilogy(indici,abs(step),'go-','LineWidth',2,...
                       'MarkerEdgeColor','k',...
                       'MarkerFaceColor','g',...
                       'MarkerSize',10) % step poteva essere negativo!
hold on;
title('Step di Newton'); % titolo
xlabel('Indice'); % etichetta asse x
ylabel('Valore assoluto dello step di Newton'); % etichetta asse y
% stampa figura su file pdf
print('newton_esempio.pdf','-dpdf');
hold off;


% grafico risultati errore assoluto
figure(2); 
indici=(1:length(xv))';
semilogy(indici,abs(xv-sol),'ko-','LineWidth',2,...
                       'MarkerEdgeColor','k',...
                       'MarkerFaceColor','g',...
                       'MarkerSize',10) % step poteva essere negativo!
hold on;

title('Errori assoluti (metodo di Newton)'); % titolo
xlabel('Indice'); % etichetta asse x
ylabel('Errore assoluto'); % etichetta asse y
% stampa figura su file pdf
nomefile=strcat('newton_',num2str(esempio),'.eps');
print(nomefile,'-deps');
hold off;




% ---------- salvataggio risultati su file ----------
% creazione del file con facolta' di scrittura.
fid=fopen('newton_esempio.txt','w');
% dati immagazzinati nella matrice A (si immagazzinino come vettori riga,
% ma bisogna ricordare che "aa", "bb" sono colonna. 
A=[1:length(xv); xv];
% scrittura dei dati su file.
fprintf(fid,'\n %4.0f  %1.15e',A);
B=[1:length(step); abs(step)];
fprintf(fid,'\n \n Step \n');
fprintf(fid,'\n \t %4.0f  %1.15e',B);

% chiusura file
fclose(fid);
