一. 問題的提出
在數學中, 再也沒有比開方更加自然的事了, 當人類產生了自然數概念並且規定了四則運算之後, 人們發現, 如果按照乘法性質, 一個數自身相乘的逆行運算是一件不太容易的事情。 一個整數自身相乘以後是比較容易找到原來那個整數的, 例如2自身相乘5次是32, 從32我們也容易找到2, 但是, 如果是31, 30 呢, 開5次方就不太容易了。 自從牛頓發現二項式定理以後, 人們知道開方是依據二項式定理展開的。但是, 畢竟太麻煩。有沒有一個簡單的方式或者公式來開方呢?
二. 一個意外
設 $A=X^n$, $X={\root n\of A}$, 我們想求 $X$, 即開方 $n$ 次, 當: \begin{equation} A\div X^{n-1}_{@}=X.\label{1} \end{equation}
我們把右下角標打上了 ($@$) 的 $X_@$ 表示我們預設的那個 $X$, 把右下角沒有 $@$ 的 $X$ 視作 $A\div X^{n-1}_{@}$ 以後得出的商。
有三種情況:
- 我們取的初始值 $X_@$, 與等式右邊的 $X$ 一致時, 問題就解決了, 例如 $32/2^4=2$;
- 我們取的初始值 $X_@$ 偏小, $A/X^{n-1}_@\gt X_@$, 例如 $45/2^4 =2.8125\gt 2$。 (1) 式 $A/X^{n-1}_@=X_0$, 於是 $X_@\lt X_0$, $X_0-X_@=E$。 例如: $2.8125-2=0.8125$ 是一個正值, 我們把這個正值分解 $E/n$ 再加回去就可以調節原來取了偏小的初始值, 使之變大; (因為 $A$ 開 $n$ 次方, 就是將 $X$ 自乘 $n$ 次的數值分解 $n$ 次, 所以也就自然而然地想到其誤差 $E$ 也要分解 $n$ 份, 即 $E/n$)。
- 我們取的初始值 $X_@$ 偏大, $A/X^{n-1}_@\lt X_@$, 例如 $30/2^4=1.875\lt 2$, (1) 式 $A/X^{n-1}_@=X_0$, 於是 $X_@\gt X_0$, $X_0-X_@=-E$。 例如 $1.875-2= -0.125$, 我們把這個負值 $-E$ 分解 $-E/n$ 再加回去, 就可以調節原來取得偏大的初始值, 使之變小。
- 於是我們得到: \begin{equation} X_{k+1}=X_k+(A/X_K^{n-1}-X_k)\frac 1n, \quad (K=0,1,2,3,4,\ldots.)\label{2} \end{equation}
- 我們用 (2) 式來開方。
例如我們開平方, 即 $n=2$。 $X=\sqrt{A}$, 公式: \begin{equation} X_{k+1}=X_k+(A/X_K^{2-1}-X_k)\frac 12, \label{3} \end{equation} 設 $A=5$。 $\sqrt {5}$ 介於 $2^2$ 至 $3^2$ 之間, 我們可以取初始值 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9。 隨便取一個值輸入, 只取小數第一位, 得出來的都是一樣的, 一般要求取中間值 2.5。
第一步:$2.5+(5/2.5-2.5)/2=2.2$; (用其它值也一樣, 例如 2.8; $2.8+(5/2.8-2.8)/2=2.2$。
第二部:$2.2+(5/2.2-2.2)/2=2.23$。 每一次多取一位數。
第三步:$2.23+(5/2.23-2.23)/2=2.236$。 即 $2.236=\sqrt{5}$。
計算次數與計算精確度成為正比。
開 3 次方也一樣, 即 $n=3$, $X=\root 3\of A$, 公式: \begin{equation} X_{k+1}=X_k+(A/X_K^{2}-X_k)\frac 13. \label{4} \end{equation}
設 $A=5$, 5 介於 $1^3$ 至 $2^3$ 之間, 我們可以取初始值 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 計算後只取小數第一位, 答案都是一樣。 例如取 1.9。
第一步:$1.9+(5/1.9^2-1.9)/3=1.7$。取其它值也是一樣, 例如取 1.5; $1.5+(5/1.5^2 -1.5)/3=1.7$。 輸入值大於輸出值, 負反饋;
第二步:$1.7+(5/1.7^2-1.7)/3=1.71$; 輸入值小於輸出值, 正反饋;
第三步:$1.71+(5/1.71^2-1.71)/3=1.709$; 輸入值大於輸出值, 負反饋;
第四步; $1.709+(5/1.709^2 -1.709)/3=1.7099$。 每一步多取一位數。要多精確都可以。
如果輸入值與輸出值一致:
289開平方, $\sqrt{289}$ 介於如 10 的平方至 20 平方之間, 我們取 20 為初始值, 於是: 第一步 $20+(289/20-20)/2=17$; 第二步 $17+(289/17-17)/2=17$。 說明17是個精確值。
以上方法是作者1980年發現的, 找到江西師範大學數學系, 一位教授看過之後, 覺得面熟, 將這個公式反推回去, 原來是牛頓切線法。 但是, 他不知道是怎麼得出來的。原來這可以用二項式定理推出。
三. 二項式定理與 (2) 式巧合
\begin{equation} \hbox{設} \ A=(X\pm Y)^n =C_0^nX^n\pm C_1^n X^{n-1}Y+C_2^nX^{n-2}Y^2\pm\cdots\pm C_n^n Y^n,\label{5} \end{equation} (說明:在大陸二項式表示 $C_n^k=n!/(n-k)!k!$; 在臺灣 $C_n^k=k!/(k-n)!n!$, 由於是在臺灣的雜誌發表, 就按照臺灣數學界的標記法)
$X$ 是假定值, $Y$ 是誤差值。 \begin{equation} X_{k+1}=(X\pm Y)=X_k+ (A/X_K^{n-1}-X_k)\frac 1n. \label{6} \end{equation} 由 \eqref{6} 式得: \begin{equation} \pm Y=(A/X_K^{n-1}-X_k)\frac 1n. \label{7} \end{equation} 我們把\eqref{5} 式等號右邊按照 \eqref{7} 式程序進行:
(一) \eqref{7} 式右端第一步是 $A/X_K^{n-1}$, 相當於 \eqref{5} 式中的: \begin{eqnarray} &&\hskip -25pt (C_0^nX^n\pm C_1^n X^{n-1}Y+C_2^nX^{n-2}Y^2\pm\cdots\pm C_n^n Y^n)/X^{n-1}\nonumber\\ &=&X\pm nY+(C_2^nX^{n-2}Y^2\pm \cdots \pm C_n^nY^n)/X^{n-1}.\label{8} \end{eqnarray} (二) \eqref{7} 式右端第二步是減去 $X$, 即 $A/X_K^{n-1}-X_k$。
\eqref{8} 式右端減去 $X$ 得: \begin{equation} \pm nY+(C_2^nX^{n-2}Y^2\pm\cdots\pm C_n^n Y^n)/X^{n-1}.\label{9} \end{equation}
(三) \eqref{7} 式右端第三步是除以 $n$, 即 $(A/X_K^{n-1}-X_k)\frac 1n$。
\eqref{9} 式除以 $n$ 得: \begin{equation} \pm Y+(C_2^nX^{n-2}Y^2\pm\cdots\pm C_n^n Y^n)/nX^{n-1}.\label{10} \end{equation}
\eqref{10} 式是由 \eqref{5} 式得來的, 現在 \eqref{7} 式左端只剩下一個 $Y$, 而 \eqref{10} 式卻是多出來一個: \begin{equation} (C_2^nX^{n-2}Y^2\pm\cdots\pm C_n^n Y^n)/nX^{n-1}.\label{11} \end{equation}
\eqref{11} 式就是我們碰到的誤差。 我們在實際計算中把 \eqref{11} 式不要了。
當我們取 $X$ 值偏大, $A=(X-Y)$; 當我們取值偏小是 $A=X+Y$。
四. 為什麼 (2) 式是牛頓切線法
我們把 \eqref{2} 式展開: \begin{eqnarray*} X_{k+1}&=&X_k+(A/X_K^{n-1}-X_k)\frac 1n=X_k-(X_K^n-A)/(nX_K^{n-1}),\\ \hbox{注意:}&& f(x)= X_K^n-A;\\ &&f'(x)=nX_{K}^{n-1}.\\ &&\hbox{即}\ X_{k+1}=X_k-\dfrac{(f(x))}{(f'(x))}\\ &&\hskip 1.5cm \hbox{(牛頓切線法, 求}\ X={\root n\of A},\ A\gt 0, X_K^n-A \Leftrightarrow X_K^n-A=0). \end{eqnarray*}
開5次方例題: \begin{eqnarray} X_{k+1}&=&X_k+(A/X_K^{n-1}-X_k)\frac 1n, \ \hbox{即 $n=5$, 即 $X={\root 5\of A}$, 得:}\nonumber\\ X_{k+1}&=&X_k+(A/X_K^{4}-X_k)\frac 15.\label{12} \end{eqnarray} 例如 $A=100$:100介如 2 的 5 次方至 3 的 5 次方之間, 初始值可以取 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9. 我們取中間值 2.5. 於是; \begin{eqnarray*} 2.5+(100/2.5^4-2.5)/5&=&2.51\\ 2.51+(100/2.51^4-2.51)/5&=&2.511.\ \hbox{即}\ 2.511={\root 5\of {100}}. \end{eqnarray*}
---本文作者王曉明為退休數學老師, 王蕊珂目前就讀美國 Ohio Wesleyan University---