香港新浪網 MySinaBlog
« 上一篇 | 下一篇 »
kafat | 15th Aug 2013 | 學術 | (464 Reads)

        Microsoft Excel是當今最通行的「試算表」(spreadsheet)軟件,各位除了用Excel來畫表格和進行簡單計算外,有沒有想過用它來進行數學運算或數學實驗?

        當然,由於Excel有巨集功能,你可以用巨集內的編寫程式功能來進行運算,其效果就如同用程式語言編寫電腦程式那樣,但本文要討論的不是Excel的巨集功能,而是它的基本試算表功能。我不是試算表的專家,以下只是就我使用Excel的經驗提出一些粗淺的個人見解。

        簡單地說,試算表就是一個有計算功能的電腦表格,這個表格上的每一個儲存格(cell)可以儲存數值或公式(由一些函數、變項及常項組成),存有公式的儲存格會根據該公式和變項(即儲存格的坐標)的數值計算出函數值,並把該函數值顯示於該儲存格上。

        試算表能夠同時間計算表格上所有存有公式的儲存格的函數值(當然前提是這些公式沒有語法錯誤或邏輯錯誤),這是它的威力所在,但也是它的弱點,因為它的所有計算對使用者來說總是同步進行,沒有先後之分,所以我們不能把編寫一般電腦程式的方式套用於試算表(除非使用巨集)

        不過,Excel有一個很強大的拖曳功能,只要我們highlight了試算表上的某個範圍並向上下左右拖曳到其他範圍,Excel便會把highlight範圍內的公式自動複製到拖曳動作所及的其他範圍內,並且還會自動變更公式內的變項,這樣便可達到重複計算的效果,所以Excel特別適合用來求取某些迭代公式(iterated formula)的值。

        交代了我對試算表的觀感後,現在可以進入本文的正題:如何用Excelπ (即圓周率)的近似值。當然這裡不准用Excel的內建數學函數(即在任意一個儲存格鍵入=PI()),而是把一種現成的迭代公式應用於Excel上。

        根據「維基百科」,有一條運算步驟不太複雜而收歛(convergence)速度又不太慢的求π公式,茲列於下:

上述公式有如下特點:它是無窮多個項的總和;由第二項起,每一項的分子交替為4–4,分母則是三個連續整數的積;由第三項起,分母中的第一個整數等於前一項分母中第一個整數加2

        對上述公式進行分析後,便可以把它應用於Excel上,應用時只需使用四欄(A欄至D),其中A欄用以計算第n(n ³ 2)分母中的第一個整數;B欄用以計算第n項分母中三個整數的積;C欄用以確定第n項的分子;D欄用以計算上述迭代公式首n項的總和(嚴格地說應稱為「部分和」partial sum)

        以下介紹在試算表上應鍵入的數值和公式。第1行是用以儲存三個起始數值,A1C1D1儲存格應分別鍵入0–43。第2行是用以儲存四條起始公式,A2儲存格應鍵入以下公式:

=A1+2

請注意由於A1上的數值是0A2儲存格輸出的值是0+2=2,這正是第二項分母中的第一個整數。B2儲存格應鍵入以下公式:

=A2*(A2+1)*(A2+2)

容易看到B2儲存格輸出的值是2*(2+1)*(2+2) = 24,這正是第二項分母中三個整數的積。C2儲存格應鍵入以下公式:

=C1*(-1)

容易看到C2儲存格輸出的值是(–4)*(–1) = 4,這正是第二項的分子。D2儲存格應鍵入以下公式:

=D1+C2/B2

容易看到D2儲存格輸出的值是3+4/24 = 3.166666667 (假設儲存格的預設數值格式為「通用格式」,並且預設精確度為小數點後9個位),這正是上述迭代公式首兩項的部分和。

        接下來便可運用Excel的強大拖曳功能,首先從左到右highlight A2D2儲存格,接著向下拖曳,便馬上看到重複使用上述迭代公式的結果,並清楚看到每一個中間計算結果。舉例說,D100儲存格顯示上述迭代公式首100項的部分和是3.141592904。此外,我們還能看到這條公式在計算至首1406項的部分和時收歛,得到準確至小數點後9位的π的近似值3.141592654 (當然如果我們調校儲存格的精確度,收歛的時間和結果便會有所不同)

        從以上應用結果可見,用Excel來求迭代公式的值有兩大優點。第一,Excel的表格形式能顯示所有中間計算結果,讓使用者清楚看到計算過程的某些特點(例如收歛方式),也方便除錯(debug)。第二,Excel的眾多內建函數和強大拖曳功能讓使用者能輕易把迭代公式轉化為試算表上的公式,省卻了編寫一般程式時的很多麻煩。使用者也能容易調整迭代公式上的參數,從而達到進行簡單數學實驗的效果。總括而言,Excel除了作為辦公室自動化工具外,也不失為一種簡單數學實驗工具。