投針步驟
法國數學家布豐(1707-1788)最早設計了投針試驗。
這一方法的步驟是:
1) 取一張白紙,在上面畫上許多條間距為a的平行線。
2) 取一根長度為l(l≤a) 的針,随機地向畫有平行直線的紙上擲n次,觀察針與直線相交的次數,記為m。
3)計算針與直線相交的概率.
18世紀,法國數學家布豐提出的“投針問題”,記載于布豐1777年出版的著作中:“在平面上畫有一組間距為a的平行線,将一根長度為l(l≤a)的針任意擲在這個平面上,求此針與平行線中任一條相交的概率。”
布豐本人證明了,這個概率是:
(其中π為圓周率)
由于它與π有關,于是人們想到利用投針試驗來估計圓周率的值。
布豐驚奇地發現:有利的扔出與不利的扔出兩者次數的比,是一個包含π的表示式.如果針的長度等于a/2,那麼扔出的概率為1/π.扔的次數越多,由此能求出越為精确的π的值。
實驗數據
下面是利用這個公式,用概率的方法得到圓周率的近似值的一些資料。
公元1901年,意大利數學家拉茲瑞尼宣稱進行了多次的投針試驗,每次投針數為3408次,平均相交數為1808次,給出π的值為3.1415929——準确到小數後6位。不過,不管拉茲瑞尼是否實際上投過針,他的實驗還是受到了美國猶他州奧格登的國立韋伯大學的L·巴傑的質疑.通過幾何、微積分、概率等廣泛的範圍和渠道發現π,這是着實令人驚訝的!
布豐投針實驗是第一個用幾何形式表達概率問題的例子,他首次使用随機實驗處理确定性數學問題,為概率論的發展起到一定的推動作用。
證明
證明一:找一根鐵絲彎成一個圓圈,使其直徑恰恰等于平行線間的距離d。可以想象得到,對于這樣的圓圈來說,不管怎麼扔下,都将和平行線有兩個交點。因此,如果圓圈扔下的次數為n次,那麼相交的交點總數必為2n。設想把圓圈拉直,變成一條長為πd的鐵絲。顯然,這樣的鐵絲扔下時與平行線相交的情形要比圓圈複雜些,可能有4個交點,3個交點,2個交點,1個交點,甚至于都不相交。由于圓圈和直線的長度同為πd,根據機會均等的原理,當它們投擲次數較多,且相等時,兩者與平行線組交點的總數期望也是一樣的。這就是說,當長為πd的鐵絲扔下n次時,與平行線相交的交點總數應大緻為2n。
轉而讨論鐵絲長為l的情形。當投擲次數n增大的時候,這種鐵絲跟平行線相交的最大的交點總數m應當與長度l成正比,因而有:m=kl,式中k是比例系數。
為了求出k來,注意到l=πd時的特殊情形,有m=2n。于是求得
代入前式就有:,将此結論推廣到l=a/2,那麼最多也隻有一個交點,m與n的比值是針與直線相交的概率。但此證明較不嚴謹,例如圓和直線期望相等,鐵絲與平行線的交點成正比。接下來用概率論和微積分提供嚴謹的證明。
證明二:由于向桌面投針是随機的,所以用二維随機變量(X,Y)來确定它在桌上的具體位置。設X表示針的中點到平行線的距離,Y表示針與平行線的夾角,如果時,針與直線相交。并且X在服從均勻分布,Y在服從均勻分布,XY相互獨立,由此可以寫出(X,Y)的概率密度函數
因此所求概率
蒙特卡羅方法
像投針實驗一樣,用通過概率實驗所求的概率來估計我們感興趣的一個量,這樣的方法稱為蒙特卡羅方法(Monte Carlo method)。當由于這類模型含有不确定的随機因素,分析起來通常比确定性的模型困難。有的模型難以作定量分析,得不到解析的結果,或者是雖有解析結果,但計算代價太大以至不能使用。在這種情況下,可以考慮采用 Monte Carlo 方法,蒙特卡羅方法是在第二次世界大戰期間随着計算機的誕生而興起和發展起來的。這種方法在應用物理、原子能、固體物理、化學、生态學、社會學以及經濟行為等領域中得到廣泛利用。
利用鈍角三角形的邊長計算圓周率
此外,随便說出3個正數,以這3個正數為邊長可以圍成一個鈍角三角形的概率P也與π有關,這個概率為 (π-2)/4,證明如下:
設這三個正數為x,y,z,不妨設x≤y≤z,對于每一個确定的z,則必須滿足x+y>z,x^2+y^2﹤z^2,容易證明這兩個式子即為以這3個正數為邊長可以圍成一個鈍角三角形的充要條件,用線性規劃可知滿足題設的可行域為直線x+y=z與圓x^2+y^2=z^2;圍成的弓形,總的可行域為一個邊長為z的正方形,則可以圍成一個鈍角三角形的概率P=S弓形/S正方形=(πz^2/4-z^2/2)/z^2=(π-2)/4.因為對于每一個z,這個概率都為(π-2)/4,因此對于任意的正數x,y,z,有P=(π-2)/4,命題得證。
為了估算π的值,我們需要通過實驗來估計它的概率,這一過程可交由計算機編程來實現,事實上x+y>z,x^2+y^2﹤z^2等價于(x+y-z)(x^2+y^2-z^2)﹤0,因此隻需檢驗這一個式子是否成立即可。若進行了m次随機試驗,有n次滿足該式,當m足夠大時,n/m趨近于(π-2)/4,令n/m=(π-2)/4,解得π=4n/m+2,即可估計出π值。
值得注意的是這裡采用的方法:設計一個适當的試驗,它的概率與我們感興趣的一個量(如π)有關,然後利用試驗結果來估計這個量,随着計算機等現代技術的發展,這一方法已經發展為具有廣泛應用性的蒙特卡羅方法。
計算機模拟
Monte Carlo方法是計算機模拟的基礎,它的名字來源于世界著名的賭城——摩納哥的蒙特卡洛, 其曆史起源于 1777 年法國科學家蒲豐提出的一種計算圓周π 的方法——随機投針法,即著名的蒲豐投針問題。
Monte Carlo方法的基本思想是首先建立一個概率模型,使所求問題的解正好是該模型的參數或其他有關的特征量. 然後通過模拟一統計試驗, 即多次随機抽樣試驗 (确定 m和 n) ,統計出某事件發生的百分比。隻要試驗次數很大,該百分比便近似于事件發生的概率.這實際上就是概率的統計定義。利用建立的概率模型,求出要估計的參數。蒙特卡洛方法屬于試驗數學的一個分支。
MATLAB語言編程實現:
l=1;
n=1000;
d=2;
m=0;
for k=l:n
x=unifrnd(0,d/2);
p=unifrnd(0,pi);
if x<0.5*sin(p)
m=m+1;
else
end
end
p=m/n
pi_m=1/p
運行,即得結果。
c++語言編程實現:
#include
#include
#include
#include
using namespace std;
int main()
{
longi,in,N=1000000;
doublex,y,pi;
srand(time(NULL));
for(i=0,in=0;i
{
x=2.0*rand()/RAND_MAX-1;
y=2.0*rand()/RAND_MAX-1;
if((x*x+y*y)<=1)
in++;
}
pi=4.0*in/N;
cout<
getch();
return 1;
}
蒙特卡洛方法适用範圍很廣泛,它既能求解确定性的問題,也能求解随機性的問題以及科學研究中的理論問題.例如利用蒙特卡洛方法可以近似地計算定積分,即産生數值積分問 題。
任意曲邊梯形面積的近似計水塘的面積.應該怎樣做呢?測量方法如下:假定水塘位于一塊面積已知的矩形農田之中。如圖1所示:随機地向這塊農田扔石頭使得它們都落在農田内。被扔到農田中的石頭可能濺上了水,也可能沒有濺上水,估計被“濺上水的”石頭量占總的石頭量的百分比。試想如何利用這估計的百分比去近似計算該水塘面積?