十分逼近法速算法

錯過後悔一世人,唸完國中的朋友表示:已後悔

Anthony Liu
7 min readJan 28, 2018

那些年,我們一起追的女孩

電影:那些年,我們一起追的女孩

青春期除了努力的暗戀同學,還有替同學傳遞情書給我暗戀的女生(對,我們暗戀同一個人,而且拜託我傳遞情書的同學不知道我暗戀她)以外,大考小考隋棠(誤)考不斷。

考試 vs 籃球

那時候超愛打籃球,下課只有十分鐘?足夠跑到籃球場丟個幾顆球,撿幾次球也就夠了。如果下一堂課的老師習慣打鐘後三分鐘才走進教室,那我一定是在籃球場待到鐘打完,才跑回教室。那一堂課前面一半的時間我都在流汗。

灌籃高手:櫻木花道

快速的寫完考卷,才能夠快速地溜出去打籃球,畢竟,自己能在空中飛行的時間大概有喬丹的 1/3。為了那個爽感,就值得想盡辦法趕快寫完考卷了。

可是計劃趕不上變化,問題來了,數學課教了一個主題叫做十分逼近法,這個東西要不停的計算很容易犯錯的乘法。而且,每次回想到小數點下四位的開根號計算,就忍不住恨得牙癢癢的?

今天就來教大家一個 “不用乘法,只用加法” 的超級速算法。這個速算法是為了籃球而自行研發的。

(過了很多年以後,我才發現原理是什麼…)

不過我相信早就有前人知道,只是我不知道,就像中研院院士不知道有個碩士的論文,或者是有個碩士不知道中研院院士/研究員的論文是一樣的道理。

而這篇文章講到的十分逼近法到底是什麼?

十分逼近法就是個依照十進位數字每一個數字位置有十個可能值,以 1/10 為一步的進度,慢慢的逼近答案的計算方法。如果以電腦演算法的歸類來看,這應該算是一種暴力法?(留問號的原因是其實我也不是很確定)

國中的課本將十分逼近法運用在找平方根的計算中,但事實上十分逼近法也可以用在其他種類的題目中。這篇文章所講速算法,也只適用於找平方根的這種應用題型。如果您知道其他有趣的應用,也歡迎分享分享呦~

基本款

根號二

題目:求根號2,準確到小數點下兩位。

答案:

1² = 1, 1<2, try 2

2² = 4, 4 > 2, 2 的平方根介於 1 與 2 中間,試試 1.1², 1.2², 1.3²…. 1.9²,看看2的平方根介於以下哪一個區間:

  1. 0² ~ 1.1²
  2. 1.1² ~ 1.2²
  3. 1.2²~1.3²
  4. 1.3²~1.4²
  5. 1.4²~1.5²
  6. 1.5²~1.6²
  7. 1.6²~1.7²
  8. 1.7²~1.8²
  9. 1.8²~1.9²
  10. 1.9²~2.0²

(總共有十個區間,故為十分逼近法,這裡的十分不是 “” 或 “非常” 的意思。)

身為苦命的學生,就得開始計算 1.1²,得到 1.21 < 2,繼續試下一個區間。

1.2² = 1.44 < 2, 繼續試下一個區間。

1.3² = 1.69 < 2, 繼續試下一個區間。

1.4² = 1.96 < 2, 繼續試下一個區間。

1.5² = 2.25 > 2, 噹啷!1.4² 與 1.5² 將 2 夾在中間了。也就是說,我們知道根號 2 的小數點後的第一位是 4,目前已知道 1.4,但不會是1.5,所以要繼續試下一位,小數點第二位。

示意圖:日本的某場考試
  1. 1.40²~1.41²
  2. 1.41²~1.42²
  3. 1.42²~1.43²
  4. 1.43²~1.44²
  5. 1.44²~1.45²
  6. 1.45²~1.46²
  7. 1.46²~1.47²
  8. 1.47²~1.48²
  9. 1.48²~1.49²
  10. 1.49²~1.50²

我們想要找出根號 2 是落在以上哪個區間。如果不是心算特別強的朋友,這時候就得開始拿出計算機,按出以上幾個平方的值。當然,1.40² 就是 1.4²,所以我們已經知道答案是 1.96,而 1.50² 就是 1.5² 也是已知 2.25,不需要再計算一次。因此在這小數點第二位,最多還要再算九次乘法。

因為篇幅有限(誤,其實是連計算機都懶得按,Medium 好像沒這麼容易寫滿),而且重點在速算法,所以這裡的計算就跳過了,大家可以假裝一下,想像一路乘到小數點下第四位的感覺….

BUT 沒有計算機

高中生,國中生,國小生這時候就悲劇了,因為 考 試 不 能 帶 計 算 機,只好一個個乘出結果來。

如果是要練習計算,這樣當然是很好的練習,不過如果要練到小數點下第四位,要寫的直式計算,恐怕要佔不少篇幅。而且只要錯一個地方,就可能全盤皆錯了。

COSCUP 慣例:貓照片

好消息,但沒好到哪

好消息是,因為十分逼近法的直式計算實在太多,所以考試卷上不會有足夠的空間叫你寫上直式給老師檢查,而且其實老師也是要下班回家的,所以沒人會想要把所有直式寫上,再一一檢查正確性。因此,接下來,本篇的重點,速算法,終於可以派上用場。

速算法登場

先不管原理,也不管小數點,我們先看一個有趣的現象:

11² — 10² = 121 — 100 = 21 = 11 + 10

12² — 11² = 144–121 = 23 = 12 + 11

兩個連續正整數的 “平方” 的 “差”,會等於這兩個數的 “和”。

也就是說,兩個連續正整數的平方差(包含了兩次平方的計算,以及一個差值的計算),可以替換為一次平方再加兩次加法的計算。

所以,如果我現在已經算過10² = 100,接下來要算的是 11²,該怎麼算呢?很簡單,只要把 100 + 10 + 11 = 121,就得到 11² 了。

繼續下去,12² = 11² + 11+ 12 = 121 + 11 + 12 = 144。

再下一個是 13² = 12² + 12 + 13 = 144 + 12 + 23 = 169。

然後接著是 14² = 13² + 13 + 14 = 169 + 13 + 24 = 196。

然後還要算 15² = 14² + 14 + 15 = 196 + 14 + 25 = 225。

我們既然已經知道 14² = 196,那麼 140² 顯然就是 19600。

那麼 141² = 140² + 140 + 141 = 19600 + 140 + 141 = 19881。

然後 142² = 141² + 141 + 142 = 19881 + 141 + 142 = 20164。

如果我們要繼續算 1410² 的話,只要替 19881 後面補兩個 0 就成了 1988100。

所以 1411² = 1988100 + 1410 + 1411 = 1990921。

所以 1412² = 1990921 + 1411 + 1412 = 1993744。

然後 1413² = 1993744 + 1412 + 1413 = 1996569。

接著 1414² = 1996569 + 1413 + 1414 = 1999396。

替以上的這些數字都補上小數點,就可以得到十分逼近法要算的平方乘積。

例如 1.41² = 1.9881,1.42² = 2.0164,以此類推….

寫在最後

這是一個簡單的代數的應用,連續兩個正整數值的平方差,剛好等於這兩個正整數的和。

如果我今天要算的是 198² 呢?200² 是一個很容易算的數字,離 198 也很近。

“但是他們的差不是 1 呀!!!”

有一個朋友這樣哭著跟我說。

“速算法都是騙人的。”

這我就忍不住要唸一唸了:如果有減一次沒辦法解決的問題,妳不會減兩次嗎?

198² = 199² — 199 — 198 = (200² — 200 — 199) — 199 — 198 = 40000–200 — 199 — 199 — 198。

我是記者數學苦手,以上竹北報導。

剩下的減法的部分,就交還給棚內主播。

--

--