
function demo_newton_for

% Oggetto.
% Demo per il metodo di Newton con ciclo for.
% Data: 20 aprile 2022.

% default
toll=10^(-6);
nmax=1000;
esempio=1;

% 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=1;
        sol=0;
end

% newton
[xv,step,flag] = newtonfun_for (f,f1,x0,toll,nmax);

% statistiche
fprintf('\n \t soluzione : %1.15e',xv(end));
fprintf('\n \t tolleranza: %1.15e',toll);
% il numero di iterazioni e' pari alla lunghezza di 
% xv meno 1.
fprintf('\n \t numero it.: %4d',length(xv)-1);


% ---------- plot ----------
indici=(1:length(step))';

% grafico risultati
clf; 
semilogy(indici,step);
hold on;
title('Step Newton'); % titolo
xlabel('Indice'); % etichetta asse x
ylabel('Modulo dello step'); % etichetta asse y
% nome del file da salvare che vari con l'esempio,
% ottenuto concatenando 3 stringhe
nomefile_pdf=strcat('newton_for_esempio',num2str(esempio),'.pdf');
% salva figura come pdf.
print(nomefile_pdf,'-dpdf');
hold off;

% ---------- salvataggio risultati numerici su file ----------
% nome file variabile con l'esempio.
nomefile_txt=strcat('newton_for_esempio',num2str(esempio),'.txt');
% creazione del file con facolta' di scrittura.
fid=fopen(nomefile_txt,'w');
% dati immagazzinati nella matrice A
A=[(1:length(xv)); xv];
% scrittura dei dati su file.
fprintf(fid,'\n vettore delle iterate');
fprintf(fid,'\n %3.0f  %1.15e',A);
fprintf(fid,'\n \n vettore dello step');
fprintf(fid,'\n %1.15e',step);
% chiusura file
fclose(fid);



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

% plot
indici=(1:length(step))';

clf;
semilogy(indici,step);
hold on;
title('Step Newton');
xaxis='indici iterazione';
yaxis='residuo pesato';
hold off;


