在已知常用對數 log 2 = 0.3010, log 3 = 0.4771 的前提下,我們知道
log 4 = log(22) = 2·log 2 = 0.6020
log 5 = log(10/2) = log 10 - log 2 = 1 - 0.3010 = 0.6990
log 6 = log(2·3) = log 2 + log 3 = 0.7781
log 7 = ?
log 8 = log(23) = 3·log 2 = 0.9030
log 9 = log(32) = 2·log 3 = 0.9542
log10 = 1
如果手邊沒有計算器,有沒有什麼好辦法,用可接受的紙筆計算複雜度,估計 log7 的值,愈準愈好?
答:
由於沒有標準的做法,這個問題其實需要一點創造力。
至少可以使用下列方法:
線性內插,log 7 ≈ ( log 6 + log 8 )/2 = (0.7781 + 0.9030)/2 = 0.8406,
這個估計,等效於用 log 48 估 log 49
線性內插,用 log 12 和 log 15 估 log14
log 14 ≈ 1/3·(log 12) + 2/3·(log 15) = 1/3·(2log 2+log 3) + 2/3·(log 10+log 3-log 2) = 1/3 · 1.0791 + 2/3 · 1.1761 = 1.1438
log 7 = log 14 – log 2 = 1.1438 - 0.3010 = 0.8428
線性內插,縮小範圍以提高準確度,例如 log 7 ≈ 1/4 · log 6.4 + 3/4 · log 7.2 = 1/4·(6 log 2-log 10) + 3/4·(3 log 2 + 2 log 3 - log 10) = 1/4·(1.8060 - 1) + 3/4·(0.9030 + 0.9541 - 1) = 0.8443
線性內插,用比較平滑的位置,
例如 log 49 ≈ (log48 + log50)/2
log 7 = log49/2 ≈ (log48 + log50)/4 = (0.7781 + 0.9030 + 1.6990)/4 = 0.8450
二次內插。能使用此法,並且能計算出答案者較少。一般可能想用 log(x) ≈ a x2 + b x + c,代入三個點(例如log 5, log 6, log8)解a, b, c之後,再算 log7。然而,除非習於筆算,否則以手算得出正確值的機會甚低。
比較不會出錯的算法是使用下表,由左至右,逐列計算前一列的後項減前項:
原函數(拋物線) | 差分(線性函數) | 二次差分(常數) |
log 5 = 0.6990 | (後項減前項) | |
log 6 = 0.7781 | 0.0791 | (後項減前項) |
log 7 = x | x - 0.7781 | x - 0.8572 |
log 8 = 0.9030 | 0.9030 - x | 1.6811 - 2x |
得 1.6811 - 2x = x - 0.8572
得 x = 0.8461
這個只是單純的加減算,計算出錯的機率低一點。
同樣的,可以用此法做更高次的內插(例如加入 log 9 和 log 10)以提高精確度。
原函數(四次函數) | 差分(三次函數) | 二次差分(二次函數) | 三次差分(線性) | 四次差分(常數) |
log 5 = 0.6990 | (後項減前項) | |||
log 6 = 0.7781 | 0.0791 | (後項減前項) | ||
log 7 = x | x - 0.7781 | x - 0.8572 | (後項減前項) | |
log 8 = 0.9030 | 0.9030 - x | 1.6811 - 2x | 2.5383 - 3x | (後項減前項) |
log 9 = 0.9542 | 0.0512 | x - 0.8518 | 3x - 2.5329 | 6x - 5.0712 |
log10 =1 | 0.0458 | -0.0054 | 0.8464 - x | 3.3793 - 4x |
得 6x - 5.0712 = 3.3793 - 4x ,
x = 0.8451
1 則留言:
最上面 log9 是0.9542
張貼留言