
function demo_ellipse

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

I=(5734161139222659*ellipticE(9/25))/9007199254740992;

errore=[];

for N=[2 4 8 16 32 64 128 256]
[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




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;