clear all
close all


f=@(x) 1./(1 +10*x.^2);

a=-2;
b=2;
Nv=[5 8 10 12 14];
i=1;

for N=Nv

    x1=linspace(a,b,N);

    ii=0:N-1;

    x2=(a+b)/2 +(b-a)/2*cos(pi*(2*ii +1)/(2*N));

    p1=polyfit(x1, f(x1), N-1);
    P1=@(x) LagrangeFunction(x1, f(x1), x);
    e1=integral(@(x) abs(f(x)-P1(x)),a,b);
    Np=300;
    xx=linspace(a,b,Np);
    w=ones(size(xx))*(xx(2)-xx(1));
    w(1)=w(1)/2;
    w(end)=w(end)/2;
    F=abs(f(xx)-P1(xx));
    I1(i)=w*F';

    p2=polyfit(x2, f(x2), N-1);
    P2=@(x) LagrangeFunction(x2, f(x2), x);
    e2=integral(@(x) abs(f(x)-P2(x)),a,b);
    xx=linspace(a,b,Np);
    w=ones(size(xx))*(xx(2)-xx(1));
    F=abs(f(xx)-P2(xx));
    I2(i)=w*F';

    i=i+1;
end
    % figure
    % fplot (P1, [a,b], 'r')
    % hold on
    % fplot (P2, [a,b], 'b')
    % plot(x1,f(x1), '*r')
    % plot(x2,f(x2), '*b')
    % fplot(f, [a,b], 'g')
    % legend('P_1', 'P_2', 'x_1', 'x_2','f')

figure
plot(Nv, I1)
hold on
plot(Nv, I2)
legend('punti equispaziati','punti di Chebyshev')
xlabel('numero di punti')
ylabel('errore di approssimazione')