周浙泉 王志宇 張棣妍 隆超怡 萬勇
摘要:系統(tǒng)用Java作為開發(fā)工具,對蒲豐擲針實驗進行計算機模擬實驗,并能給出統(tǒng)計分析。
關(guān)鍵詞:Buffon擲針實驗;計算機模擬實驗;Java
中圖分類號:G642.423? ? ?文獻標志碼:A? ? ?文章編號:1674-9324(2019)42-0269-02
一、研究背景
18世紀,蒲豐(Buffon)提出Buffon投針問題:(1)取一張白紙,在上面畫上許多條間距為a的平行線。(2)取一根長度為l(l≤a/2)的針,隨機地向畫有平行直線的紙上擲n次,觀察針與直線相交的次數(shù),記為m。(3)計算針與直線相交的概率。
蒲豐證明了這個概率是:
p=。
因為它與π有關(guān),人們想到利用投針實驗來估計圓周率的值。歷史上,有不少人做過蒲豐擲針實驗:
這個問題十分有趣,只是人工實驗往往耗時、耗力,而用計算機模擬實驗,卻能迅速獲得結(jié)果。
自從20世紀90年代美國率先開始數(shù)學(xué)實驗以來,數(shù)學(xué)實驗改變了人們傳統(tǒng)的數(shù)學(xué)思維方式,人們發(fā)現(xiàn)數(shù)學(xué)是可以借助計算機去探索和發(fā)現(xiàn)的。近十年來,國內(nèi)外已有不少的數(shù)學(xué)實驗教材和一些好的數(shù)學(xué)實驗范例,但是這需要一定的計算機編程能力,如mathematica編程、matlab編程等,才能實現(xiàn)人機對話,因此數(shù)學(xué)實驗只能在具有一定數(shù)學(xué)知識和較高計算機編程能力的特定人群中使用,不能“飛入尋常百姓家”。
二、系統(tǒng)的設(shè)計
本系統(tǒng)研發(fā)工具為Java語言。
Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點,還作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進行復(fù)雜的編程。
Java看起來設(shè)計得很像C++,但是能夠自動處理對象的引用和間接引用,實現(xiàn)自動的無用單元收集,使用戶不必為存儲管理問題煩惱,能將更多的時間和精力花在研發(fā)上。
Java是一個面向?qū)ο蟮恼Z言。Java還包括一個類的擴展集合,分別組成各種程序包(Package),用戶可以在自己的程序中使用。例如,Java提供產(chǎn)生圖形用戶接口部件的類(java.awt包),這里awt是抽象窗口工具集(abstract windowing toolkit)的縮寫,處理輸入輸出的類(java.io包)和支持網(wǎng)絡(luò)功能的類(java.net包)。
Java編譯程序生成字節(jié)碼(byte-code),而不是通常的機器碼。因此,Java支持快速原型和容易試驗,它將導(dǎo)致快速程序開發(fā)。這是一個與傳統(tǒng)的、耗時的“編譯、鏈接和測試”形成鮮明對比的精巧的開發(fā)過程。
三、系統(tǒng)的實現(xiàn)
1.系統(tǒng)主要功能。硬幣實驗的動畫模擬,相交頻率總匯圖,π值估計總匯,導(dǎo)出數(shù)據(jù)到txt文件,重置。
2.系統(tǒng)運行情況。《Buffon擲針實驗的計算機模擬實驗系統(tǒng)》使用步驟如下:
(1)雙擊打開,進入軟件界面,如圖1。
(2)在“輸入執(zhí)行次數(shù)”文本框右邊的輸入框中輸入透針次數(shù),如圖2。
(3)點擊“執(zhí)行”按鈕,這時中間的投針示意圖中會顯示針的位置,如圖3。
(4)當實驗結(jié)束時,在右邊的折線圖中會產(chǎn)生有實驗結(jié)果的數(shù)據(jù)圖。
(5)當想要再次實驗時,可以再次輸入你想要實驗的次數(shù),點擊“執(zhí)行”,重復(fù)上述步驟,即可得到實驗結(jié)果。
四、結(jié)論
本系統(tǒng)光盤儲存,攜帶方便,能在PC機上實驗,實驗簡單、方便、快捷,并給出統(tǒng)計數(shù)據(jù)。
本系統(tǒng)不要求實驗操作者具備任何計算機編程能力,真正做到了數(shù)學(xué)實驗“飛入尋常百姓家”。
本系統(tǒng)可作為“概率論與數(shù)理統(tǒng)計”(大、中學(xué))課程的配套實驗,以激發(fā)學(xué)生學(xué)習(xí)“概率論與數(shù)理統(tǒng)計”的興趣。
本系統(tǒng)成果論文獲湖南省數(shù)學(xué)學(xué)會2018年年會暨第30屆大學(xué)數(shù)學(xué)教學(xué)研討會“優(yōu)秀論文”二等獎。
參考文獻:
[1]高志偉.Authorware課件做作動態(tài)指導(dǎo)[M].北京:機械工業(yè)出版社,2003:1-299.
[2]呂曉鵬.精通Flex3.0基于Actionscripe 3.0實現(xiàn)[M].北京:人民郵電出版社,2008:7-300.
[3]譚浩強.C程序設(shè)計[M].第3版.北京:清華大學(xué)出版社,2005:1-180.
[4]印旻.Java與面向?qū)ο蟪绦蛟O(shè)計教程[M].北京:清華大學(xué)出版社,1999:1-260.