如何利用低級計算器按出圓周率的值?

計算器只有數字鍵、四則運算、百分號和等號、根號、+/-、M+/M-/MR/MC、清除鍵,也就是和那些店鋪用的計算器差不多。

假設預先不知道圓周率的準確值,這樣就排除了直接打3.14的方法。

假設計算器的精度足夠高,這樣就排除了計算近似值的方法。

可以用有限步得出準確值,也可以通過可數步,使得其中一個子列的值極限是圓周率,在這種情況下,收斂得越快越好,且最好為周期性地按按鈕,不需要人工計數。

這是一個思維實驗,不是代為完成的個人任務!

請認真審題謝謝!


我最先想到的是連分式,因為如果計算器上有[倒數]鍵,這就是最適合「周期性按鍵」的公式了。

很不幸,找到的幾個連分式的「通項」都不是常數:

我最終找到的、最適合「周期性按鍵」的公式是這個:

frac{2}{pi} = sqrt{frac{1}{2}} cdot sqrt{frac{1}{2} + frac{1}{2}sqrt{frac{1}{2}}} cdot sqrt{frac{1}{2} + frac{1}{2}sqrt{frac{1}{2} + frac{1}{2}sqrt{frac{1}{2}}}} cdot cdots

如果計算器上有[M*]鍵,表示把存儲器中數值更新成「存儲器中數值與當前結果的乘積」,則用以下步驟可以得到pi:

  1. [MC] [.] [5] [sqrt] [M+] // 把sqrt{1/2}存入存儲器
  2. [/] [2] [+] [.] [5] [=] [sqrt] [M*] // 重複足夠多次,計算連乘積
  3. [2] [/] [MR] [=] // 得到pi

一般的計算器上並沒有[M*]鍵,但如果有[log]和[exp]鍵,也可以迂迴一下:

  1. [MC] [.] [5] [sqrt] [log] [M+] // 把log sqrt{1/2}存入存儲器
  2. [exp] [/] [2] [+] [.] [5] [=] [sqrt] [log] [M+] // 重複足夠多次,計算連乘積的對數
  3. [2] [/] [MR] [exp] [=] // 得到pi


用割圓術

已知AB長度為a和圓半徑r求AC長度

AC=sqrt(2r^2-2r*sqrt(r^2-1/4a^2))

圓內切正四邊形邊長sqrt(2)*r,面積為2r^2

圓內切正八邊形邊長sqrt(2-sqrt(2))*r,面積為2sqrt(2)r^2

圓內切正十六邊形邊長sqrt(2-sqrt(2+sqrt(2)))r,面積為4sqrt(2-sqrt(2))r^2

圓內切正三十二邊形邊長sqrt(2-sqrt(2+sqrt(2+sqrt(2))))r,面積為8sqrt(2-sqrt(2+sqrt(2)))r^2

普通計算器沒法根號裡面加根號,不過可以從右往左一步一步算。

以正六十四邊形為例,按鍵順序為2/根號/+/2/=/根號/+/2/=/根號/-/2/=/+-/根號/*/16/=3.13654849072

由於計算器有精度限制,一般會在中間某個值最接近圓周率,再往後就變成0了,一般算出來也就和祖沖之的差不多。


不可能用有限步得到準確值。這個結論很出名大家應該都知道。(古希臘三大幾何難題之化圓為方,或者可以說「π是超越數」)

π的展開式太多了,總有一款適合你,前人之述備矣。

另外題主不允許近似值卻允許極限為π的數列,這件事情挺矛盾的。大概題主要的是一個可以任意精確的演算法。

這個答案算是回答了題主的問題的一個沒人回答過的部分…另外希望有人探討計算器舍入誤差的影響以及如何估計誤差的問題。

--------------

給個好玩的但是不符合題主要求的演算法吧。額外道具:硬幣一枚,紙和筆。

用硬幣生成二進位隨機數0.abcd…abcd由硬幣兩面決定是零還是1。小數位數由需要的精度確定。轉換成十進位。

每生成一對兒之後算一下x^2+y^2,小於1的話計數。

做了很多組之後。

把小於1的計數和總對數做商乘4即得到圓周率近似值。

根據大數定律,只要實驗次數足夠多,它與π的差小於預先給定的值的概率和1的差小於預先給定的值。

----------------

再來一種方法:

計算

(1/1)/2+1/1.01+1/1.04+1/1.09+1/1.16+1/1.25+1/1.36+1/1.49+1/1.64+1/1.81+(1/2)/2

然後乘4除10得到3.14


pi 是超越數,計算機敲不出精確值

lim (1 - 1/3 +1/5 - 1/7 + 1/9 - ... ) = pi/4

可以打 4 = m+; 4 / 3 = m-; 4 / 5 = m+; 4 / 7 = m- ...


用捲尺量好周長,量出r,用計算器一除


割圓術

內割:

pi=lim(k趨於無窮)ksin(180/k)

外切:

pi=lim ktan(180/k)

割到96份時已經夠用了

如果內割面積,公式稍稍複雜:

pi=lim ksin(180/k)cos(180/k)

不會用打公式,好遺憾


如果真的只有加減乘除,並且對π完全不知道的話,那還是把計算器丟了吧!

回去拿張紙,一支筆,一把尺,割圓


馬青公式啊


Approximations of π

(知乎無法識別出π只好手打。。。)

這個頁面里有很多很好的方法。比如說如果限制稍微放鬆一點的話可以用pi=16 arctan frac15 - 4 arctan frac{1}{239}

嚴格一點的話可以用

pi=2(1+frac13+frac{1cdot 2}{3cdot 5}+frac{1cdot 2cdot 3}{3cdot 5 cdot 7}+cdots)

還有我個人很喜歡的

pi=2(1+frac13(1+frac25(1+frac37(cdots))))


我一般會直接寫出30位 不要問我為什麼 因為後面的我沒被會


這是我當年看傳記書記住的。

祖率(祖沖之算的圓周率)的密率是355/113

你不愛敲的話記這個

但我想我們小時候教背的3.1415926敲上更容易。


推薦閱讀:

TAG:數學 | π圓周率 | 計算數學 |