% si "ripulisce" il workspace e lo schermo
clear;
clc;

% definizione delle funzioni
fname  = inline('x.^3 - 3*x + 2');
f1name = inline('3*x.^2 - 3');

epsilon = 0;
delta   = 0;


% primo ciclo: calcoli per la radice semplice
maxi = 5;
x01 = -2.4;

[ xs1, x1 ] = Newton(fname, f1name, x01, epsilon, delta, maxi);

Ek1 = abs(x1 - (-2));

n1 = length(x1);

asympt1(1:n1-1) = Ek1(2:n1) ./ Ek1(1:n1-1).^2;

asympt1(n1) = NaN;

x02 = 1.1;

maxi = 15;

[ xs2, x2 ] = Newton(fname, f1name, x02, epsilon, delta, maxi);

Ek2 = abs(x2 - (+1));

n2 = length(x2);

asympt2(1:n2-1) = Ek2(2:n2) ./ Ek2(1:n2-1);

asympt2(n2) = NaN;



barra = '--------------------------------------------------------';
titolo1 = 'Tabella della convergenza verso la radice semplice';
titolo2 = 'Tabella della convergenza verso la radice doppia';

disp(titolo1);
disp(barra);
fprintf('  k  \t x_k \t\t |E_k| \t\t |E_k+1|/E_k^2 \n');
disp(barra);
%fprintf('%d\t %3.4f\t %6.5f\t %6.5f\n',[1:n;x1;Ek1;asympt1]); 
fprintf('%d \t %7.6f \t %4.3e  \t %6.5g     \n',...
    [1:n1; x1; Ek1; asympt1]);

fprintf('\n');
disp(titolo2);
disp(barra);
fprintf('  k  \t x_k \t\t |E_k| \t\t |E_k+1|/|E_k| \n');
disp(barra);
%fprintf('%d\t %3.4f\t %6.5f\t %6.5f\n',[1:n;x1;Ek1;asympt1]); 
fprintf('%d \t %7.6f \t %4.3e  \t %6.5g     \n',...
    [1:n2; x2; Ek2; asympt2]);
