中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Python計算圓周率

發布時間:2022-02-21 15:54:32 來源:億速云 閱讀:190 作者:iii 欄目:開發技術

這篇文章主要介紹“怎么用Python計算圓周率”,在日常操作中,相信很多人在怎么用Python計算圓周率問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用Python計算圓周率”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

一、圓周率的歷史

1、中國

★ 魏晉時期,劉徽曾用使正多邊形的邊數逐漸增加去逼近圓周的方法 (即「割圓術」),求得π的近似值3.1416。

★ 漢朝時,張衡得出π的平方除以16等于5/8,即π等于10的開方(約為3.162)。雖然這個值不太準確,但它簡單易理解,所以也在亞洲風行了一陣。

★ 王蕃(229-267)發現了另一個圓周率值,這就是3.156, 但沒有人知道他是如何求出來的(ps. 沒開源唄!)。

★ 公元5世紀,祖沖之和他的兒子以正24576邊形,求出圓周率約為355/113,和真正的值相比,誤差小于八億分之一。這個紀錄在一千年后才給打破。(ps. 在大部分人不知勾股定理年代,真牛!)

2、印度

★ 約在公元530年,數學大師阿耶波多利用384邊形的周長,算出圓周率約為√9.8684。

★ 婆羅門笈多采用另一套方法,推論出圓周率等于10的平方根。(ps. 跟張衡大佬的結果一致,但過程不同)

3、歐洲

★ 斐波那契算出圓周率約為3.1418。

★ 韋達用阿基米德的方法,算出3.1415926535<π<3.1415926537。他是第一個以無限乘積敘述圓周率的人。

★ 魯道夫萬科倫以邊數多過32000000000的多邊形算出有35個小數位的圓周率。

★ 華理斯在1655年求出一道公式π/2=2×2×4×4×6×6×8×8...../3×3×5×5×7×7×9×9......

★ 歐拉發現的e的iπ次方加1等于0,成為證明π是超越數的重要依據。

二、用python計算圓周率π

【方法】蒙特卡洛法

【程序設計思路】使用python random庫隨機生成點,落在正方形內,計算正方形內的圓內落點與正方形內落點之比,近似為面積之比,隨機數越隨機,數量越大越準確。

【軟件環境】python 3.6(本程序可兼容python 2.x)

【代碼】

from random import random
from time import perf_counter
 
def calPI(N = 100):
    hits = 0
    start = perf_counter()
    for i in range(1, N*N+1):
        x, y = random(), random()
        dist = pow(x ** 2 + y ** 2, 0.5)
        if dist <= 1.0:
            hits += 1
    pi = (hits * 4) / (N * N)
    use_time = perf_counter() - start
    return pi, use_time
 
PI, use_time = calPI(10000)
print('use Monte Carlo method to calculate PI: {}'.format(PI))
print('use time: {} s'.format(use_time))

震驚:10000次隨機數,精確到3.1415了,把小編放在1000年前,可不得了

附:python輸出指定精度的圓周率pi的值

首先像所有人都會的一樣,本能地敲出

import math
val = math.pi
print(val)

這樣就得到了pi的近似值3.141592653589793,要得到后面的小數,

不是直接可以簡單粗暴的乘以10的指數

import math
val = math.pi * 100000000000000000
print(val)

但是當val的小數部分都變成整數141592653589793的時候,并不會如我們所想的那樣露出后幾位整數,而是直接變成科學計數法3.141592653589793e+24,所以在小數點移位之后為了看到整數部分,我們必須把float轉換成int

import math

def get_pi_value(x):
  if(x>0):
   num = math.pow(10,x)
   val = int(math.pi * num)
   print(val)
  else:
   print('輸入有誤')
   
for i in range(10):
 get_pi_value(i * 10)

運行結果:

輸入有誤
31415926535
314159265358979334144
3141592653589793216413703340032
31415926535897931797658451191693855162368
314159265358979323748068948991981337089580185157632
3141592653589793042280431964658831312838665295201939643957248
31415926535897934343019391492015828684494553443559665723073458675384320
314159265358979299628295535813807516164434328768456060679773689288809487458631680
3141592653589793231804887682686061504016619085797532053907788745336000826072569315489480704

到此,關于“怎么用Python計算圓周率”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

哈巴河县| 三江| 班玛县| 桑植县| 安乡县| 新安县| 肇庆市| 清流县| 交口县| 甘孜县| 余江县| 奎屯市| 连云港市| 彭泽县| 错那县| 开封市| 永川市| 乌鲁木齐县| 凤台县| 阳朔县| 石渠县| 綦江县| 积石山| 阳春市| 从江县| 宜州市| 昭通市| 罗田县| 潞西市| 郯城县| 徐汇区| 定州市| 天水市| 沿河| 乡城县| 将乐县| 山丹县| 正阳县| 广河县| 武邑县| 湘阴县|