function [eq] = polinomi_app(x,y)

% Costruisco:
% 1. polinomio P(x): P(x_i)=y_i, i=1,2,... n
%    P(x) avra` grado n-1
% 2. polinomio Q(x): massimo|Q(x_i)-y_i| < toll
%    
% dove toll>0 e` un valore piccolo a piacere
%
% Input: 2 vettori 'x' e 'y' di dati 
% Output: errori relativi a
% 
%  eq=massimo|Q(x_i)-y_i| - con x sta in [min(x) max(x)]

close all
% Grafico dei punti
figure
plot(x,y,'o')

% Inizializzazione
xplot=linspace(min(x),max(x),250) ;
eq=100 ;
grado=0 ;

% Costruzione di P(x)
n=length(x) ;
p=polyfit(x,y,n-1) ; % Verifica: polyval(p,x)=y
hold on
plot(xplot,polyval(p,xplot),'--')
grid
disp(roots(p))    % radici del polinomio P(x) (opzionale)

% Costruzione di Q(x)

toll=input('Inserisci la tolleranza sull''errore (valore positivo <1)\n ') ;
% eq=max|Q(x_i)-y_i|<toll al variare del grado di Q(x)
% tra 0 e n-2
figure
plot(x,y,'rx')
hold on
for i=1:2:n-1
    colori(i)='b' ;
    colori(i+1)='r' ;
end
while eq>=toll
    if grado==n-1
        eq=0 ;
        disp('Trovato polinomio interpolatore!')
        return
    end
    q=polyfit(x,y,grado) ;  %q contiene i coefficienti di Q(x)
    yq=polyval(q,x) ;
    eq=max(abs(yq-y)) ; %Q(x_i)=polyval(q,x_i)
    disp(eq)
    plot(xplot,polyval(q,xplot),colori(grado+1))
    grado=grado+1 ;
end
grid
for i=1:grado
    stringa(i)=num2str(i-1) ;
end
legend('Dati',stringa)


end

