亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Python求解圓周率的方法

        2022-01-24 16:43:16王德貴
        電腦報 2022年2期
        關鍵詞:程序方法

        王德貴

        圓周率π和e一樣,都是常用的數(shù)學常數(shù),且都是無理數(shù),也稱為超越數(shù)。在數(shù)學和物理課程中,經(jīng)常用到π和e兩個常數(shù),也經(jīng)常會想,它們是怎么算出來的?怎么被發(fā)現(xiàn)的呢?今天我們來學習用Python求圓周率π的近似值。

        其實圓周率求解方法很多,歸納起來有大致四類方法,故稱“求解圓周率四法”。我們選擇其中兩種來學習。

        使用隨機數(shù)(或更常見的偽隨機數(shù))來解決很多計算問題的方法,稱為蒙特卡洛法,它是統(tǒng)計模擬方法。當所求解問題是某種隨機事件出現(xiàn)的概率,或者是某個隨機變量的期望值時,通過某種“實驗”的方法,以這種事件出現(xiàn)的頻率估計這一隨機事件的概率,或者得到這個隨機變量的某些數(shù)字特征,并將其作為問題的解。主要步驟:構造或描述概率過程;實現(xiàn)從已知概率分布抽樣;建立各種估計量。

        正方形內(nèi)部有一個相切的圓,它們的面積之比是π/4(圖1)。

        現(xiàn)在,在這個正方形內(nèi)部,隨機產(chǎn)生n個點,計算它們與中心點的距離,并且判斷是否落在圓的內(nèi)部。若這些點均勻分布,則圓周率 PI=4 * m/n, 其中m表示落到圓內(nèi)投點數(shù),n表示總的投點數(shù)。

        顯然投點數(shù)目越多,數(shù)值越精確,誤差越小。于是我們采用循環(huán)的方法產(chǎn)生n個(0,1.0)區(qū)間上的隨機數(shù),即第一象限內(nèi)的點,然后判斷在單位圓內(nèi)的個數(shù)m,求得圓周率近似值。

        從前面的分析, 得出程序如下。這里用到了隨機函數(shù)模塊(random),利用random()生成一個(0,1.0)之間的隨機浮點數(shù)(圖2)。

        單位圓標準方程為x+y=1:,條件判斷里,“x*x+y*y<=1”表示點(x,y)在圓上或圓內(nèi)。投入1億個點,某次運行結果為3.1515122。

        利用隨機數(shù)求圓周率,每次求得的近似值不一定相同。

        所謂“割圓術”,是用圓內(nèi)接正多邊形的面積去無限逼近圓面積并以此求取圓周率的方法。

        魏晉時期數(shù)學家劉徽在《九章算術注》中為“割圓術”計算圓周率建立了嚴密的理論和完善的算法。約480年,南北朝時期的祖沖之在此基礎上算出圓周率在3.1415926和3.1415927之間,相當于精確到小數(shù)第7位,他是第一位將圓周率值計算到小數(shù)第7位的科學家。

        用割圓術來求解圓周率。可以設置初始正多邊形為正三角形、正方形、正六邊形等等,我們用正六邊形,因為此時圓半徑和邊長相等,計算上簡便一些(圖3)。

        如圖3所示,設圓半徑為1,這樣圓面積就是s=πr=π,計算出面積,即求出圓周率?;舅悸肪褪菬o限的成倍分割,這樣新的正多邊形面積,就是在原正多邊形面積基礎上,每條邊與圓弧之間多了一個等腰三角形,對于正六邊形到正十二邊形的分割中,就是多了6個的?△ABC?面積。下面進行計算。

        這樣依次計算下去,正多邊形的面積就會越來越接近圓面積,因此,正多邊形邊數(shù)越多,計算越精確。

        這里用到了math模塊(數(shù)學基本運算庫),應用之前需要導入,有兩種導入方法:(1)import math;(2)from math import* 。兩種導入方法的區(qū)別,是Python等級考試四級內(nèi)容,大家可以注意一下,本文不做贅述。sqrt()是開平方運算(圖4)。

        運行程序,輸出結果如圖(圖5):

        誤差已經(jīng)很小了。當然如果邊數(shù)小于6,那就按六邊形算的了,所以取值要盡量的大,才會更接近圓周率的真值。

        Python默認有效數(shù)字為17位,那么如何得到更精確的位數(shù)呢?

        我們可以利用decimal模塊求解18-100位精度的有效數(shù)字,默認值為28位。decimal意思為十進制,提供了十進制浮點運算支持,主要是用來處理要求特別精確的小數(shù)。decimal所表示的數(shù)是完全精確的,而float浮點數(shù)不能使用decimal,因為float浮點數(shù)本身就不精確。

        getcontext().prec = 50,即設置精度為50位(圖6)。結果如圖7。

        從輸出可以看到第一行是28位有效數(shù)字,這是默認值。第三行是50位有效數(shù)字。第二和第四行,與設置精度無關,因為它們是浮點數(shù)轉換過來的,不準確。要想精度提高,必須將數(shù)值轉換為字符再輸出。

        下面是割圓術基礎上,設定有效數(shù)字位數(shù),來求近似值的程序(圖8)。

        運行結果(圖9):

        如果超過100位呢?那么后面就都用0補充了。更多位也不會有區(qū)別了(圖10)。

        想要更精確的結果,必須設定小數(shù)點后位數(shù),可以先放大多少倍,最后計算結束時再舍去多少位,以保證精度,這個過程稍難,程序如圖11。

        運行結果可以看到,可以精確到小數(shù)點1000位(圖12)。

        大家可以自己驗證,程序可以求出任意位數(shù)的小數(shù)。你注意到了嗎?程序是把計算結果,轉換為字符串后處理輸出的,這是因為輸出整數(shù)時,會自動轉換為科學記數(shù)法,不會顯示多于17位的有效數(shù)字。

        SymPy模塊可以進行符號計算,可以定義符號變量,進行代數(shù)運算,以及微分運算、積分運算等。利用evalf()函數(shù)傳遞數(shù)據(jù)。比如要輸出1000位有效數(shù)字,則程序為(圖13):

        結果如圖14:

        從前面的分析和測試中,我們看到求解圓周率的方法很多,精度也不盡相同,一般來說Python默認的17位有效數(shù)字已經(jīng)足夠了,如果需要高精度的結果,需要使用相應的方法。

        通過圓周率的計算,我們也更深刻了解了圓周率的發(fā)展史。電子計算機的出現(xiàn),把計算精度提高到了驚人的數(shù)量級。現(xiàn)在圓周率最高位數(shù)已計算到31.4萬億位,準確地說是31415926535897位,是2019年工程師愛瑪在谷歌云平臺的幫助下完成的。比2016年的紀錄又增加數(shù)萬億位。

        其實π精度的追求更多的是人類對極限的追求,畢竟十位小數(shù)的π就足以使地球周界準確到一英寸以內(nèi),三十位小數(shù)的π便能使整個可見宇宙的四周準確到連最強大的顯微鏡都不能分辨的一個量。

        如果你對此感興趣,可以繼續(xù)深入研究,求出更多位數(shù),刷新圓周率計算史上的紀錄,成為一名數(shù)學家!

        猜你喜歡
        程序方法
        學習方法
        試論我國未決羈押程序的立法完善
        人大建設(2019年12期)2019-05-21 02:55:44
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        可能是方法不對
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        創(chuàng)衛(wèi)暗訪程序有待改進
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢方法
        精品国产日韩无 影视| 人妻少妇精品视频一区二区三| 国产小视频在线看不卡| 女人让男人桶爽30分钟| 久久国产偷| 国产精东一区二区三区| 亚洲精品有码日本久久久 | 中文字幕视频二区三区| 美女下蹲露大唇无遮挡| 免费人成视频xvideos入口| 手机看片福利盒子久久青| 国产激情视频在线观看你懂的| 日韩一级黄色片一区二区三区| 少妇被粗大的猛烈进出69影院一 | 久久日本三级韩国三级| 国产无线乱码一区二三区| 白色月光在线观看免费高清| 在线播放亚洲丝袜美腿| 狠狠躁18三区二区一区| 97午夜理论片在线影院| 亚洲日本无码一区二区在线观看 | 全球av集中精品导航福利| 日韩偷拍一区二区三区视频| 黄色潮片三级三级三级免费| 国产做国产爱免费视频| 亚洲中文字幕第一页在线| 在线免费观看视频播放| 精品国产成人av久久| 在线人成免费视频69国产| 亚洲成av人在线观看无堂无码| 国产高跟丝袜在线诱惑| 99久久免费看精品国产一| аⅴ资源天堂资源库在线| 久久亚洲伊人| 亚洲中文字幕视频第一二区| 日韩精品熟女中文字幕| 久久久久香蕉国产线看观看伊| 狠狠干视频网站| 91色综合久久熟女系列| 久久天天躁狠狠躁夜夜躁2014| 国产精品亚洲一区二区无码国产|