<style> .reveal, .reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 { font-family: -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", Helvetica, Arial, PingFangTC-Light, "Microsoft JhengHei", "微軟正黑", sans-serif, "Apple Color Emoji" } </style> # 用Python算圓周率 $\pi$ 先想想你怎麼做,再教Python <br> 請選擇右上角 **分享** <i class="fa fa-share-alt fa-18"></i> 清單裡面的 <i class="fa fa-tv"></i> **簡報模式**,然後點選 **預覽** 來觀看簡報。 ###### tags: `資訊科學教學法` --- ## 怎麼求 $\pi$ - 半徑 = r,面積$\frac{1}{4}$ = A,則 $\frac{\pi r^2}{4} = A \Rightarrow \pi=\frac{4A}{r^2}$ - 假設圓的半徑為1,則 $\pi=4A$。 - 所以,只要能算出$\frac{1}{4}$圓的面積,就能算出 $\pi$。 --- ## 用電腦如何計算面積 ![](https://i.imgur.com/5Jj3wku.png =200x200) - 設定方形型範圍為 $1\times1$,以(0,0)為圓心,半徑為1的圓,有$\frac{1}{4}$面積在方形範圍內。 - 用亂數產生很多X,Y範圍為0~1的點,看有多少落在圓形範圍內,計算其比例,就是圓形部份的面積。 --- ## 用Python來實作 ### 取亂數 - Python並沒有內建取亂數的指令,必須匯入模組 :::danger import random $\Leftarrow$ 匯入模組 random.uniform(0,1) $\Leftarrow$亂數範圍 random.randint(1,10) $\Leftarrow$整數亂數 ::: - 試試看下列程式,看看執行結果如何? ```python= import random for i in range(10): print (random.uniform(0,1)) ``` --- ### 亂數夠亂嗎? - 怎麼知道亂數是不是平均分佈? ```python= import random count=[0,0] for i in range(10000): randresult=random.uniform(0,1) if (0<randresult<=0.5): count[0]=count[0]+1 else: count[1]=count[1]+1 print (count) ``` - 當然你也可以切成10段來觀察 --- ### 檢查X,Y取亂數 - 在這個專題我們需要X,Y,一樣來檢查看看。 ```python= import random count=[0,0] totle=int(input('輸入次數')) for i in range(totle): Xrandresult=random.uniform(0,1) Yrandresult=random.uniform(0,1) if (0<Xrandresult<=0.1 and 0<Yrandresult<=0.1): count[0]=count[0]+1 else (0<Xrandresult<=0.1 and 0.1<Yrandresult<=0.2): count[1]=count[1]+1 print (count[0]/totle,count[1]/totle) ``` - 同時我們可以用上次學到的input指令,輸入取亂數的次數,看看有什麼差別? --- ### 怎麼知道點是不是落在圓形範圍內 - 想想看,已知X,Y座標,圓形半徑為1 - 可以怎麼算,請和你隔壁的同學討論一下。 --- ### 畢式定理 - 畢式定理這個時候就可以派上用場了。 - $a^2+b^2=c^2$ - $\Rightarrow X^2+Y^2\leq1$ 的點即落在圓形範圍內。 請你寫看看 --- ### Python求 $\pi$ 你寫的和下面的例子一樣嗎? ```python= import random count=0 totle=int(input('輸入次數')) for i in range(totle): Xrandresult=random.uniform(0,1) Yrandresult=random.uniform(0,1) if (Xrandresult**2 + Yrandresult**2 <=1): count=count+1 pii=((count/totle)*4) print (pii) ``` 算出來結果和我們背的 $\pi$ 一樣嗎?有辦法算得更精準嗎?
{"metaMigratedAt":"2023-06-14T23:19:26.685Z","metaMigratedFrom":"Content","title":"用Python算圓周率 $\\pi$","breaks":true,"contributors":"[{\"id\":\"97f277c6-1b8d-46ee-a337-5fe0e6cfd972\",\"add\":4025,\"del\":1762}]"}
    1564 views