王玉華,李 嬌,方曙東
(1.杏花村實(shí)驗(yàn)學(xué)校,安徽 池州247100;2.池州學(xué)院 大數(shù)據(jù)學(xué)院,安徽 池州247000)
圓周率π在計(jì)算界占據(jù)著重要的地位,由古至今,圓周率計(jì)算方法的發(fā)展史基本包括:實(shí)驗(yàn)獲取階段、幾何算法階段、分析算法階段、計(jì)算機(jī)時(shí)代圓周率的計(jì)算這四個(gè)發(fā)展階段[2]。
在第一階段當(dāng)中,通過實(shí)驗(yàn)對(duì)π值進(jìn)行估算;在幾何算法階段,科學(xué)家引入了基于數(shù)學(xué)幾何的“割圓術(shù)”方法,僅用內(nèi)接正多邊形確定了圓周率的上、下界的方法來計(jì)算圓周率π[3]。在第三階段中,隨著數(shù)學(xué)分析這一銳利工具的出現(xiàn),圓周率π的計(jì)算發(fā)展也有了一個(gè)嶄新的思路[4]。最后,隨著電子計(jì)算機(jī)的普遍使用,計(jì)算圓周率π值的方法再次實(shí)現(xiàn)了前所未有的突破,使圓周率的計(jì)算達(dá)到了驚人的程度,圓周率的數(shù)值達(dá)到難以想象的精度。
蒙特卡羅方法又稱“統(tǒng)計(jì)實(shí)驗(yàn)法”,是用概率模型來進(jìn)行近似計(jì)算的方法。18世紀(jì)法國(guó)學(xué)者蒲豐的“投針實(shí)驗(yàn)”是蒙特卡洛算法核心思想的起源。其中,該實(shí)驗(yàn)是以大數(shù)定理和中心極限定理作為必備的數(shù)學(xué)基礎(chǔ)。隨著計(jì)算機(jī)科學(xué)技術(shù)及相關(guān)領(lǐng)域的持續(xù)發(fā)展,本方法在計(jì)算領(lǐng)域的應(yīng)用方面也得到了更加廣泛的普及[5]。在數(shù)學(xué)的科研探索過程中,蒙特卡羅法已經(jīng)被多方學(xué)者引用,并且在科研領(lǐng)域經(jīng)過了深入的探討研究。在數(shù)學(xué)理論研究方向上蒙特卡羅法不僅可以對(duì)問題的結(jié)果提供更強(qiáng)的說服力,更能夠?yàn)樾碌慕Y(jié)論提供廣闊的發(fā)展空間。
在計(jì)算機(jī)技術(shù)飛速發(fā)展的時(shí)代,更是少不了各種編程語言的輔助與支撐。python編程語言集成了開發(fā)快、語言簡(jiǎn)潔和易操作等多種人性化優(yōu)勢(shì),廣泛地應(yīng)用于各種領(lǐng)域[6]。將python運(yùn)用到模擬求解圓周率π的方法驗(yàn)證過程當(dāng)中,可以快速有效地簡(jiǎn)化數(shù)值計(jì)算過程,有助于提高數(shù)值計(jì)算速率,節(jié)省不必要的數(shù)值運(yùn)算時(shí)間;此外,在一定程度上也有助于Python這類科學(xué)計(jì)算軟件的應(yīng)用與推廣,為科研探索事業(yè)提供極大地輔助作用。
證明:以a、b、c代替任取的三個(gè)正數(shù),且令a≤b≤c。我們對(duì)c進(jìn)行討論:對(duì)于每一個(gè)確定的c,要組成鈍角三角形,則必須滿足a+b>c,a2+b2<c2,反過來,若 a、b、c 滿足前兩個(gè)式子則可以組成一個(gè)鈍角三角形,從而“以a、b、c為邊長(zhǎng)能組成一個(gè)鈍角三角形”與“a+b>c,a2+b2<c2”互為充要條件。由線性規(guī)劃知識(shí)可求得總的可行域?yàn)橐粋€(gè)邊長(zhǎng)為c的正方形,而滿足題設(shè)的可行域?yàn)橹本€a+b=c與圓a2+b2<c2圍成的弓形,可以組成鈍角三角形的概率
結(jié)合以上概率的論證原理,結(jié)合任意寫出兩個(gè)小于1的數(shù)(a,b),將其和變量c組成一個(gè)數(shù)對(duì)(a,b,c),則由a,b和c能構(gòu)成一個(gè)鈍角三角形的概率就是,利用這個(gè)結(jié)論也可以求出π的近似值。(為了演示的方便性,在代碼的編輯過程中,將c的數(shù)值取為1)
表1 圓周率實(shí)驗(yàn)數(shù)據(jù)
如果采用傳統(tǒng)的運(yùn)算方式去計(jì)算圓周率,會(huì)耗費(fèi)大量的程序運(yùn)行時(shí)間,同時(shí)對(duì)計(jì)算機(jī)的內(nèi)存開銷占用也比較嚴(yán)重。因此,在此次實(shí)驗(yàn)設(shè)計(jì)當(dāng)中,本文采用了多次實(shí)驗(yàn)、集中統(tǒng)計(jì)的方法,不僅避免了嚴(yán)重的內(nèi)存占用問題,更有效地?cái)U(kuò)充了實(shí)驗(yàn)的數(shù)據(jù)規(guī)模,從而提高了實(shí)驗(yàn)的準(zhǔn)確性與計(jì)算精度。
圖1 圓周率計(jì)算結(jié)果圖
綜上所述,隨著現(xiàn)代科學(xué)的高速發(fā)展,計(jì)算圓周率π的近似值的方法也在得到不斷更新和改進(jìn)。利用Python和蒙特卡洛算法結(jié)合的計(jì)算方法,可以通過調(diào)控迭代次數(shù)的遞增程度,從而快捷、簡(jiǎn)便、科學(xué)地計(jì)算出圓周率的近似值。利用計(jì)算機(jī)軟件來實(shí)際模擬每一個(gè)圓周率的計(jì)算過程,能夠清晰明了地展現(xiàn)出最后的模擬實(shí)驗(yàn)結(jié)果能夠模擬真實(shí)的實(shí)驗(yàn)過程[7]。有效地使用此方法,不僅讓學(xué)習(xí)者對(duì)蒙特卡羅方法的思想—隨機(jī)投點(diǎn)思想有了較清楚的認(rèn)識(shí),更讓大家在實(shí)際操作當(dāng)中,對(duì)蒙特卡羅法的簡(jiǎn)潔實(shí)用的特點(diǎn)有更加深入的理解與認(rèn)識(shí)。同時(shí),將python語言的簡(jiǎn)潔易懂的獨(dú)特優(yōu)勢(shì)融入到求解圓周率的實(shí)驗(yàn)過程當(dāng)中,能夠讓學(xué)習(xí)者更加注重問題的思想本質(zhì),從而根據(jù)需求將此方法靈活地運(yùn)用到更加廣泛的科研領(lǐng)域,節(jié)省更多的時(shí)間去進(jìn)一步挖掘和研究科研領(lǐng)域的新知識(shí)。