Der folgende JSL-Code verwendet die Trapezregel. Sie müssen den Integrationsbereich („xmin“ und „xmax“) eingeben. Tragen Sie die zu integrierende Funktion in die Variable „pdf“ ein. Die Trapezregel unterteilt den Integrationsbereich in mehrere Intervalle und approximiert die Fläche unter der Kurve für jedes Intervall durch die Fläche eines Trapezes. Wie viele Intervalle verwenden Sie? Der Code approximiert die Fläche mit einem Intervall, dann zwei Intervallen usw. Die Anzahl der Intervalle wird so lange erhöht, bis die inkrementelle Differenz kleiner als „stop“ ist. So müssen Sie die Anzahl der Intervalle nicht angeben, der Code läuft einfach weiter, bis er konvergiert.
Das Beispiel im Code ist die Standardnormalverteilung zwischen -10 und 10. Der Code gibt die Ergebnisse im Protokollfenster aus: die Anzahl der verwendeten Intervalle und das Ergebnis, zu dem er konvergiert ist. In diesem Beispiel werden 26 Intervalle benötigt, und das Ergebnis konvergiert gegen 1,00000000000001. Die Gesamtfläche unter der Normalkurve beträgt 1. Ziemlich nah dran, würde ich sagen.
Auch die Mittelpunktregel und die Simpsons-Regel könnten für Sie von Interesse sein. Weitere Informationen finden Sie in Wikipedia. Der folgende Code lässt sich leicht ändern, um diese anderen Regeln zu verwenden.
Sie können für die numerische Integration auch eine Datentabelle verwenden. Je mehr Zeilen Sie für den Integrationsbereich verwenden, desto besser ist die Näherung.
Der Code ist unten:
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);