下面的 JSL 程式碼使用了梯形法則。您必須輸入積分範圍(“xmin”和“xmax”)。將要積分的函數輸入到名為「pdf」的變數中。梯形法則將積分範圍分成多個區間,並以梯形面積近似每個區間的曲線下面積。但是您需要使用多少個區間呢?程式碼首先使用 1 個區間來近似面積,然後使用 2 個區間,依此類推。它會不斷增加區間數,直到增量差小於「stop」為止。這樣,您無需指定區間數,程式碼會一直運行直到收斂。
程式碼中的範例是 -10 到 10 之間的標準常態分佈。程式碼將結果輸出到日誌視窗:它使用的區間數以及收斂到的答案。在這個例子中,它使用了 26 個區間,收斂到 1.00000000000001。常態曲線下的總面積為 1。我認為非常接近。
您可能也會對中點規則和辛普森規則感興趣。詳情請參閱維基百科。以下程式碼可以輕鬆修改以使用其他規則。
您也可以使用資料表進行數值積分。用於跨越積分範圍的行數越多,近似值就越好。
程式碼如下:
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);