function [radici] = esercizio_2nov(x,y) %esercizio_2nov(P)

% Costruzione di un polinomio che passa per i punti
% (x_i,y_i) dove x_i e y_i sono dati in ingresso
% e x_i sono ordinati in senso crescente
% alla 'function' oppure i valori y_i vengono
% calcolati richiamando un'altra function che
% contiene la definizione di funzioni matematiche
% ESEMPIO: x_i=-1, 0, -1 ; y_i=-7/4,-1,1/4
%
% Il grado del polinomio e` uguale al numero di 
% coppie meno 1
% Fare il grafico del polinomio e calcolarne le radici
% Determinare il valore del polinomio in un punto assegnato 
% diverso dalle x_i
% Tracciare il poligono che congiunge i punti corrispondenti
% alle radici nel piano complesso

%P=[x;y];
close all

m=length(x) ;
if length(y)~=m
    disp(['x=', num2str(x)])
    y=input('Inserisci di nuovo i valori di y_i (disposti come x): ' ) ;
end

% costruisco il polinomio
v=polyfit(x,y,m-1) ;
radici=roots(v) ;
n=length(radici) ;

% se x(1)=min(x) e x(end)=max(x)
a=min(x(1),min(real(radici))) ;
b=max(x(end),max(real(radici))) ;
xplot=a:0.1:b ;
yplot=polyval(v,xplot) ;

figure
plot(xplot,yplot)
grid
hold on
plot(x,y,'rx')

figure
for i=1:n-1
    P1=radici(i) ;
    P2=radici(i+1) ;
%    plot(linspace(real(P1),real(P2)),linspace(imag(P1),imag(P2)),'LineWidth',2.5)
    plot([real(P1) real(P2)],[imag(P1) imag(P2)],'r')
    hold on
end
if n>2
    P1=radici(end);
    P2=radici(1) ;
    plot(linspace(real(P1),real(P2)),linspace(imag(P1),imag(P2)),'LineWidth',2.5)
end

valore=input('Inserisci il valore della x per calcolare P(x): ') ;
disp(polyval(v,valore))
    
end

