---
# System prepended metadata

title: 近似π的值
tags: [Analysis, Coding, math]

---

# 近似π的值



## 數學上的定義

$\pi$的定義：圓周長與直徑之比值

數學上定義$\pi$的方式為使用積分

設單位圓$x^2+y^2=1$
可得$y=\pm\sqrt{1-x^2}$
取上半圓，即$y=f(x)=\sqrt{1-x^2}$
可得其弧長與半徑之比值即為$\pi$
故
$\pi=\displaystyle\int_{-1}^{1}\sqrt{1+(f'(x))^2}dx
\\=\displaystyle\int_{-1}^{1}\dfrac{1}{\sqrt{1-x^2}}dx$

利用視察法可輕易得出$\dfrac{1}{\sqrt{1-x^2}}$的其中一個反導函數為$\sin^{-1}x$
故原式之值為$\sin^{-1}(1)-\sin^{-1}(-1)=\dfrac{\pi}{2}-(-\dfrac{\pi}{2})=\pi$

而近似$\pi$之值最直覺的想法就是拿正多邊形去夾擠

有一半徑為$1$的圓$O$，內外接二正$n$邊形
則：內接正$n$邊形之周長$l_i$與外接正$n$邊形之周長$l_e$滿足$l_i\le2\pi\le l_e$

利用此性質即可近似$\pi$的值

例：
各取$n=4,6,8$

$n=4$時
可得
$l_i=4\sqrt{2},l_e=8\implies 4\sqrt{2}\le2\pi\le8
\\\therefore2\sqrt{2}\approx2.828\le\pi\le4$

$n=6$時
可得
$l_i=6,l_e=4\sqrt{3}\implies 6\le2\pi\le4\sqrt{3}
\\\therefore3\le\pi\le2\sqrt{3}\approx3.464$

$n=8$時
可得
$l_i=8\sqrt{2-2\cos{\dfrac{\pi}{4}}}=8\sqrt{2-\sqrt{2}}
\\l_e=16\tan{\dfrac{\pi}{8}}=16\sqrt{\dfrac{1-\cos{\cfrac{\pi}{4}}}{1+\cos{\dfrac{\pi}{4}}}}=16\sqrt{2(1-\dfrac{\sqrt{2}}{2})^2}=16\sqrt{3-2\sqrt{2}}
\\\therefore 3.0614\approx4\sqrt{2-\sqrt{2}}\le\pi\le8\sqrt{3-2\sqrt{2}}\approx3.3137$

此時可求出$l_i$與$l_e$與$n$之關係，即可透過電腦運算近似$\pi$之值

設內接正$n$邊形之邊長為$x_i$
以餘弦定理可知
$\cos{\dfrac{2\pi}{n}}=\dfrac{2-{x_i}^2}{2}
\\\therefore l_i=nx_i=n\sqrt{2-2\cos{\dfrac{2\pi}{n}}},n\ge3$

而外接正$n$邊形之邊長為$x_e$
可得
$x_e=2\tan{\dfrac{\pi}{n}}
\\\therefore l_e=nx_e=2n\tan{\dfrac{\pi}{n}},n\ge3$

此時當$n\to\infty$時
有
$\displaystyle\lim_{n\to\infty}n\sqrt{2-2\cos{\dfrac{2\pi}{n}}}\le2\pi\le\lim_{n\to\infty}2n\tan{(\dfrac{\pi}{n})}$

而第一個極限：
令$m=\dfrac{1}{n}\implies m\to{0^+}$
原式變為
$\displaystyle\lim_{m\to{0^+}}\dfrac{\sqrt{2}\sqrt{1-\cos{2\pi m}}}{m}=\lim_{m\to{0^+}}2\dfrac{\sin{m\pi}}{m}=2\pi$

第二個極限：
原式為
$\displaystyle\lim_{m\to{0^+}}2\dfrac{\tan{n\pi}}{n}=2\pi$


## 近似方法

### 面積

證明圓面積為$\pi r^2$，其中$r$為圓半徑

$pf:$
設$C:x^2+y^2=r^2$，則滿足$x^2+y^2\le r^2$之點集合所形成之面積$A$為
$A=4\displaystyle\int_{0}^{r}\sqrt{r^2-x^2}dx$
令$x=r\sin{u}\implies dx=r\cos{u}du$
$A=4\displaystyle\int_{0}^{\frac{\pi}{2}}r^2\cos^2{u}du
\\=4r^2\displaystyle\int_{0}^{\frac{\pi}{2}}\cos^2{u}du
\\=4r^2\displaystyle\int_{0}^{\frac{\pi}{2}}\dfrac{1+\cos{2u}}{2}du
\\=4r^2(\dfrac{u}{2}+\dfrac{u}{4}\sin{2u}\Bigg|_{0}^{\frac{\pi}{2}})
\\=4r^2[(\dfrac{\pi}{4})-(0)]=r^2\pi$


### 利用上和與下和近似

考慮一半徑為$2$，以原點為圓心之$\dfrac{1}{4}$圓$C$
則$C:\begin{cases}x^2+y^2=4\\x\ge0\\y\ge0\end{cases}$

其面積為$\displaystyle\int_{0}^{2}\sqrt{4-x^2}dx=\dfrac{1}{4}\times\pi\times2^2=\pi$

函數$f(x)=\sqrt{4-x^2}$
函數在$[0,2]$上的上和為
$U_n=\displaystyle\sum_{k=1}^{n}\dfrac{2}{n}\sqrt{4-(\dfrac{2(k-1)}{n})^2}$
在$[0,2]$的上的下和為
$L_n=\displaystyle\sum_{k=1}^{n-1}\dfrac{2}{n}\sqrt{4-(\dfrac{2k}{n})^2}$

故可得$L_n\le\pi\le U_n$

此時可使用程式計算，當$n$取值越大，$U_n-L_n,U_n-\pi,\pi-L_n$會越小且大於$0$


```python
from math import sqrt


def upper_sum(n):
  sum = 0
  for i in range(n):
    k=i+1
    delta_x = 2/n
    f_x = sqrt(4-(2*(k-1)/n)*(2*(k-1)/n))
    sum += f_x*delta_x

  return sum

def lower_sum(n):
  sum = 0
  for i in range(n-1):
    k=i+1
    delta_x = 2/n
    f_x = sqrt(4-(2*(k)/n)*(2*(k-1)/n))
    sum += f_x*delta_x

  return sum

n = 4

while n < 1000000:
    u_n = upper_sum(n)
    l_n = lower_sum(n)
    print(f'upper sum is {u_n} ,lower sum is {l_n} for n = {n}')
    n += 100
```



執行部分結果：
![](https://i.imgur.com/6bNUrxl.png)

### 利用梯形近似

考慮相同函數，若使用梯形近似其面積
$A\approx T_n=\displaystyle\sum_{k=1}^{n}\dfrac{2}{n}(\dfrac{f(\dfrac{2(k-1)}{n})+f(\dfrac{2k}{n})}{2})
\\=\displaystyle\sum_{k=1}^{n}\dfrac{\sqrt{4-(\dfrac{2(k-1)}{n})^2}+\sqrt{4-(\dfrac{2k}{n})^2}}{n}=2\displaystyle\sum_{k=1}^{n}\dfrac{\sqrt{1-(\dfrac{k-1}{n})^2}+\sqrt{1-(\dfrac{k}{n})^2}}{n}
\\=2\displaystyle\sum_{k=1}^{n}\dfrac{\sqrt{n^2-(k-1)^2}+\sqrt{n^2-k^2}}{n^2}$


利用程式
```python
def Trapezoidal_sum(n):
  sum = 0
  for i in range(n):
    k = i+1
    sum += sqrt(n*n-(k-1)*(k-1))+sqrt(n*n-k*k)


  sum*=2
  sum/=n*n
  return sum

n=4
while n< 10000:
    t_n = Trapezoidal_sum(n)
    print(f'{t_n} for n = {n}')  
```

執行部分結果：
![](https://i.imgur.com/39dyD9S.png)

可以發現當$n=99504$時，上和為$3.1416127158\dots$，下和為$3.1415925372\dots$
而梯形分割則為$3.1415926161\dots$
又真實的$\pi=3.1415926535\dots$
將差距$\delta$取至小數點後10位，之後無條件捨去
上和與$\pi$之差距絕對值$\delta_u=|\pi-U_{99504}|=0.0000200623=2.00623\times10^{-5}$
下和與$\pi$之差距絕對值$\delta_l=|\pi-U_{99504}|=0.0000001163=1.163\times10^{-7}$
梯形分割法與$\pi$之差距絕對值$\delta_{t}=|\pi-T_{99504}|=0.0000000374=3.74\times10^{-8}$

誤差百分比為
$E_u=\dfrac{\delta_u}{3.1415926535}\times100\%\approx6.386028\times10^{-4}\%
\\E_l=\dfrac{\delta_l}{3.1415926535}\times100\%\approx3.701943\times10^{-6}\%
\\E_t=\dfrac{\delta_t}{3.1415926535}\times100\%\approx 1.190478\times10^{-6}\%$

可見梯形分割法較上和下和逼近法準確