
function esercizio2

esempio=5;

% Esempio delle funzioni richieste
switch esempio
    case 1
        a=0; b=pi;
        f=@(x) exp(x).*cos(4*x);
        sol=(exp(pi)-1)/17;
    case 2
        a=0; b=1;
        f=@(x) x.^(5/2);
        sol=2/7;
        alpha=0; beta=5/2;
        g=@(x) 2^(-7/2)*1+0*x;
    case 3
        a=-pi; b=pi;
        f=@(x) exp(cos(x));
        sol=7.95492652101284;
    case 4
        a=0; b=pi/4;
        f=@(x) exp(cos(x));
        sol=1.93973485062365;
    case 5
        a=0; b=1;
        f=@(x) x.^(1/2);
        sol=2/3;
        alpha=0; beta=1/2;
        g=@(x) 2^(-3/2)*1+0*x;
end

En_GL=[]; % storia GL
En_GW=[];% storia GW

% nv=2.^(1:9);
nv=2:1:30;

for N=nv
    
    % Gauss-Legendre
    ab=r_jacobi(N,0,0); %TERM.RICORSIVI
    xw=gauss(N,ab); %NODI/PESI IN MATRICE .
    x=xw(:,1); w=xw(:,2);%NODI/PESI GAUSS JAC.[-1,1].
    [x,w]=scalatura(x,w,a,b);
    fx=feval(f,x);
    IGL=w'*fx;
    aeGL=abs(IGL-sol);
    En_GL=[En_GL aeGL];
    
    % Gauss-Jacobi (non Legendre solo per esempi 2 e 5).
    if (esempio == 1) | (esempio == 3) | (esempio == 4)
       En_GW=[En_GW aeGL]; 
    else
        ab=r_jacobi(N, alpha,beta); xw=gauss(N,ab);
        x=xw(:,1); w=xw(:,2); gx=feval(g,x);
        IW=w'*gx;
        aeW=abs(IW-sol);
        En_GW=[En_GW aeW]; 
    end
    
end


% errore scala semilogy
figure(1);
semilogy(nv,En_GL);
hold on;
semilogy(nv,En_GW);
legend('GL','GW');
title('errori');
hold off;

% rapporto e_n(f)/e_{n+1}(f)
% rat_GL=En_GL(1:end-1)./En_GL(2:end);
% rat_GW=En_GW(1:end-1)./En_GW(2:end);


% figure(2);
% semilogy(nv(1:end-1),rat_GL);
% hold on;
% semilogy(nv(1:end-1),rat_GW);
% legend('GL','GW');
% title('rapporti')
% hold off;
% 
% format short e;
% [rat_GL' rat_GW']
