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