Il codice JSL seguente utilizza la regola del trapezio. È necessario inserire l'intervallo di integrazione ("xmin" e "xmax"). Inserire la funzione che si desidera integrare nella variabile denominata "pdf". La regola del trapezio divide l'intervallo di integrazione in diversi intervalli e approssima l'area sottesa alla curva per ciascun intervallo con l'area del trapezio. Ma quanti intervalli si usano? Il codice approssima l'area utilizzando 1 intervallo, poi 2 intervalli e così via. Continua ad aumentare il numero di intervalli finché la differenza incrementale non è inferiore a "stop". In questo modo non è necessario specificare il numero di intervalli: il codice continua a procedere finché non converge.
L'esempio nel codice è la distribuzione normale standardizzata tra -10 e 10. Il codice visualizza i risultati nella finestra del registro: il numero di intervalli utilizzati e il risultato a cui è convergente. In questo esempio, prende 26 intervalli e converge a 1,00000000000001. L'area totale sotto la curva normale è 1. Direi che è abbastanza vicino.
Potrebbero interessarti anche la regola del punto medio e la regola dei Simpson. Vedi Wikipedia per i dettagli. Il codice qui sotto può essere facilmente modificato per utilizzare queste altre regole.
È anche possibile utilizzare una tabella dati per eseguire l'integrazione numerica. Più righe si utilizzano per coprire l'intervallo di integrazione, migliore sarà l'approssimazione.
Il codice è il seguente:
Clear Globals();
xmin=-10;
xmax=10;
stop=0.0000000000001;
pdf=function( {x} , 1/(sqrt(2*pi()))*exp(-x^2/2) );
intervals=1;
last=0;
new=0;
flag=0;
while(flag==0,
intervals=intervals+1;
increment=(xmax-xmin)/intervals;
total=0;
for(i=1, i<=intervals, i++,
if(i==1, x=xmin);
if(i>1, x=x+increment);
total=total + ((pdf(x)+pdf(x+increment))/2)*increment;
);
last=new;
new=total;
diff=abs(last-new);
if(diff<=stop, flag=1);
);
show(intervals);
show(total);