看到這個題目,您或許會有兩個想法:
1.按按計算器就知道了,比如:√2=2^0.5=1.4142135623730950488016887242097……;
2.是不是要介紹“手算開平方”?實在抱歉,曾經的我也不是個十分專心的學生,竟是忘了。當然,百度一下,再度鉆研貼文也是可以的,不過興趣待定。
其實,本文想說的還就是和想法1有關。您有沒有想過:計算器又是怎樣計算的呢?
我不確定計算器背后的算法一定是什么,但我確定的知道一種比較可行的方法:利用迭代函數迭代計算n次方根。今天就先來看看“二次方根”或“平方根”的計算方法。
二次方根迭代函數如下:
f(x)=x/2 C/(2*x)
其中:
x^2=C
或
C^0.5=x
即:函數中的C是被開方數,x是求解目標“二次方根”。
(備注:呃,請不要問我這個迭代函數是怎么來的,據說和“泰勒級數”有關,這得從“數學分析”中尋找答案,汗……)
什么是“迭代”?
①猜測一個初始值x0,比如:x0=1(不會猜,就選1);
②計算函數值x1,其中:x1=f(x0),即把x0代入迭代函數求值;
③迭代:x0=x1;
④反復循環②③兩步直至符合指定的精度要求。
可見:迭代就是把上一次輸出的結果作為下一次輸入的結果并反復執行。
這樣做神奇嗎?來讓我們試試。
例1.求根號2的值。
①x0=1
②x1= x/2 C/(2*x)=1/2 2/(2*1)=1.5
③x0=x1=1.5
④x1= x/2 C/(2*x)=1.5/2 2/(2*1.5)≈1.416666667
⑤x0=x1=1.416666667
⑥x1= x/2 C/(2*x)=1.416666667/2 2/(2*1.416666667)≈1.414215686
⑦x0=x1=1.414215686
⑧x1= x/2 C/(2*x)=1.414215686/2 2/(2*1.414215686)≈1.414213562
⑨……
只需迭代4次就可以得到9位小數精度,足夠應付很多計算需要了。
例2.求1234567的平方根。
呵呵,手算基本是不可能的,小數位數多,會讓人抓狂的,下面是電子表格計算的數據,供參考:
第1次 1
第2次 617284
第3次 308643
第4次 154323.5
第5次 77165.74993
第6次 38590.87441
第7次 19311.43279
第8次 9687.68106
第9次 4907.558926
第10次 2579.561651
第11次 1529.078654
第12次 1168.235696
第13次 1112.507369
第14次 1111.111582
第15次 1111.110706
……
迭代了15次后,達到了一般穩定精度要求。不過,如果初始值不是1,而是與準確值更接近一些,比如1000,則迭代次數會大幅下降,如下:
第1次 1000
第2次 1117.2835
第3次 1111.127757
第4次 1111.110706
……
僅需4次。初值的選擇是很重要的,好的初值估計,算是核心技術。
本文算是幫您打開了一扇門,但同時,您會發現更多關上的門,比如:三次方根呢?四次、五次、小數次、無理數次……方根呢?比如:被開方數是小數、負數、無理數……呢?呵呵,這會讓我們頭很大的。
女兒的作品