可能有人會好奇,計算機如何求得開根號數值計算,這裡提供個人所知的兩種方法。
方法一:長除式演算法,可直接筆算求平方根值。
運用 (a + b)2- (2a + b) b = a2,初值 a = 0,反覆求 a 的後一位數值 b 。
例 Square(152.276) 1 2. 3 4 ------------ 列式時以小數點為基準,兩位兩位一組。 / 1 52.27 60 (2a + b) b 1 = (2 x 0 + 1) x 1 , a = 0 ------------ 52 44 = (2 x 10 + 2) x 2 , a = 10 ------------ 8 27 7 29 = (2 x 120 + 3) x 3 , a = 120 ------------ 98 60 98 56 = (2 x 1230 + 4) x 4 , a = 1230 ------------ 6
方法二:以牛頓迭代法計算求解
X = A1/N,將 A 開 N 次方根,
Xn+1 = [(N-1)Xn + A/XnN-1]/N ,(N>0)
N = 2 時 ,A>1,1<Xn<A
Xn+1 = [Xn + A/Xn]/2 ,(挑選適當的 Xn 初值可以快速收斂,只要計算兩三次就可得到正確數值)
其原理為,
X = [X + A/X]/2
2X = X + A/X
2X2 = X2 + A
X2 = A
X = A1/2
方法二是我從 Engineering Formulas 這本書學到的,此書為 Reiner Gieck, Kurt Gieck 合著 McGraw-Hill 出版 ISBN 9780070234550,它是我在公司文管中心發現的寶藏。
市售的計算機,開平方根通常利用二進制的長除法計算,任意次方計算會以對數或是利用牛頓迭代法求解。
在網際網路尚未發達前,這類工具書對工程師是非常重要的,尤其需要常常查工程或數學公式很有用。
授權程式人雜誌 2014 三月刊文
延伸閱讀
快速估算根號近似值 2023/10/26 補充
沒有留言:
張貼留言