% Confronto degli errori delle formule di quadratura composite al variare
% il numero M di sottointervalli da 1 a 1000
% tratto da Quarteroni-Saleri, esempio 4.3, pag. 117.
% Grafico in scala logaritmica;
% asse orizzontale: M, asse verticale: errore delle formule composite del 
% punto medio (blu), del trapezio (verde) e di Simpson (rosso).
% Si noti che le linee blu e verde hanno la stessa pendenza 
% (= ordine di accuratezza), mentre la linea rossa ha la doppia pendenza.

% funzione integranda
f = inline('x.*exp(-x).*cos(2*x)')
% intervallo di integrazione [0, 2*pi]
fplot(f,[0,2*pi]); grid on;
% valore esatto dell'integrale
format long; If = -(10*pi-3+3*exp(2*pi))/(25*exp(2*pi))
for M=1:1000 error_punto_medio(M)=If-midpointc(0,2*pi,M,f); end;
for M=1:1000 error_simpson(M)=If-simpsonc(0,2*pi,M,f); end;
for M=1:1000 x=linspace(0,2*pi,M+1);y=f(x);error_trapezio(M)=If-trapz(x,y);end;
m=1:1000;
loglog(m,abs(error_punto_medio),m,abs(error_trapezio),'g',m,abs(error_simpson),'r')
grid on;
xlabel('numero di sottointervalli');
ylabel('valore assoluto dell''errore');
legend('punto medio','trapezio','Simpson');
title('Confronto delle approssimazioni dell''integrale \int_{0}^{2\pi} xe^{-x}cos(2x)dx = -(10\pi - 3 + 3e^{2\pi})/(25e^{2\pi}) \approx -0.122122604618968');
