
function demo_ellipse

% INTEGRANDA (PERIMETRO ELLISSE)
f=@(x) (1/(2*pi))*sqrt(1-0.36*(sin(x)).^2);

% INTEGRALE ESATTO DI "f" IN [0,2*pi]
I=(5734161139222659*ellipticE(9/25))/9007199254740992;

% APPLICAZIONE DI TRAPEZI COMPOSTA PER VARI "N"
errore=[];

NV=[2 4 8 16 32 64 128 256 512]';

for N=[2 4 8 16 32 64 128 256 512]
    [x_trap,w_trap]=trapezi_composta(N,0,2*pi);
    % [x_trap,w_trap]=simpson_composta(N,0,2*pi);
    fx_trap=feval(f,x_trap);
    I_trap=w_trap'*fx_trap;
    errore(end+1,1)=abs(I-I_trap);
    fprintf('\n \t N: %2.0f errore: %1.1e',N,errore(end));
end

rat=errore(1:end-1)./errore(2:end);

num=log(rat);
den=log(NV(1:end-1));


a=num./den




function [x,w]=trapezi_composta(N,a,b)

% FORMULA DEI TRAPEZI COMPOSTA.
% INPUT:
% N: NUMERO SUBINTERVALLI.
% a, b: ESTREMI DI INTEGRAZIONE.
% OUTPUT:
% x: NODI INTEGRAZIONE.
% w: PESI INTEGRAZIONE (INCLUDE IL PASSO!).

h=(b-a)/N;             % PASSO INTEGRAZIONE.
x=a:h:b; x=x';         % NODI INTEGRAZIONE.

w=ones(N+1,1);         % PESI INTEGRAZIONE.
w(1)=0.5; w(N+1)=0.5;
w=w*h;



function [x,w]=simpson_composta(N,a,b)

% FORMULA DI SIMPSON COMPOSTA.
% INPUT:
% N: NUMERO SUBINTERVALLI.
% a, b: ESTREMI DI INTEGRAZIONE.
% OUTPUT:
% x: INTEGRAZIONE.
% w: PESI INTEGRAZIONE (INCLUDE IL PASSO!).

h=(b-a)/N;             % AMPIEZZA INTERVALLO.
x=a:(h/2):b; x=x';     % NODI INTEGRAZIONE.

w=ones(2*N+1,1);           % PESI INTEGRAZIONE.
w(3:2:2*N-1,1)=2*ones(length(3:2:2*N-1),1);
w(2:2:2*N,1)=4*ones(length(2:2:2*N),1);
w=w*h/6;