看到這個題目,您或許會有兩個想法:
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次。初值的選擇是很重要的,好的初值估計,算是核心技術。
本文算是幫您打開了一扇門,但同時,您會發現更多關上的門,比如:三次方根呢?四次、五次、小數次、無理數次……方根呢?比如:被開方數是小數、負數、無理數……呢?呵呵,這會讓我們頭很大的。
女兒的作品
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!