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