2.是不是要介绍“手算开平方”?实在抱歉,曾经的我也不是个十分专心的学生,竟是忘了。当然,百度一下,再度钻研贴文也是可以的,不过兴趣待定。
看到这个题目,您或许会有两个想法:
1.按按计算器就知道了,比如:√2=2^0.5=1.4142135623730950488016887242097……;
其实,本文想说的还就是和想法1有关。您有没有想过:计算器又是怎样计算的呢?
我不确定计算器背后的算法一定是什么,但我确定的知道一种比较可行的方法:利用迭代函数迭代计算n次方根。今天就先来看看“二次方根”或“平方根”的计算方法。
f(x)=x/2+C/(2*x)
二次方根迭代函数如下:
x^2=C
其中:
或
即:函数中的C是被开方数,x是求解目标“二次方根”。
C^0.5=x
什么是“迭代”?
(备注:呃,请不要问我这个迭代函数是怎么来的,据说和“泰勒级数”有关,这得从“数学分析”中寻找答案,汗……)
②计算函数值x1,其中:x1=f(x0),即把x0代入迭代函数求值;
①猜测一个初始值x0,比如:x0=1(不会猜,就选1);
③迭代:x0=x1;
④反复循环②③两步直至符合指定的精度要求。
可见:迭代就是把上一次输出的结果作为下一次输入的结果并反复执行。
这样做神奇吗?来让我们试试。
例1.求根号2的值。
②x1= x/2+C/(2*x)=1/2+2/(2*1)=1.5
①x0=1
④x1= x/2+C/(2*x)=1.5/2+2/(2*1.5)≈1.416666667
⑤x0=x1=1.416666667
③x0=x1=1.5
⑧x1= x/2+C/(2*x)=1.414215686/2+2/(2*1.414215686)≈1.414213562
⑦x0=x1=1.414215686
⑥x1= x/2+C/(2*x)=1.416666667/2+2/(2*1.416666667)≈1.414215686
⑨……
只需迭代4次就可以得到9位小数精度,足够应付很多计算需要了。
例2.求1234567的平方根。
呵呵,手算基本是不可能的,小数位数多,会让人抓狂的,下面是电子表格计算的数据,供参考:
第1次 1
第2次 617284
第3次 308643
第4次 154323.5
第5次 77165.74993
第6次 38590.87441
第9次 4907.558926
第8次 9687.68106
第7次 19311.43279
第12次 1168.235696
第10次 2579.561651
第11次 1529.078654
第14次 1111.111582
第15次 1111.110706
第13次 1112.507369
……
第1次 1000
迭代了15次后,达到了一般稳定精度要求。不过,如果初始值不是1,而是与准确值更接近一些,比如1000,则迭代次数会大幅下降,如下:
第4次 1111.110706
第2次 1117.2835
第3次 1111.127757
……
仅需4次。初值的选择是很重要的,好的初值估计,算是核心技术。
本文算是帮您打开了一扇门,但同时,您会发现更多关上的门,比如:三次方根呢?四次、五次、小数次、无理数次……方根呢?比如:被开方数是小数、负数、无理数……呢?呵呵,这会让我们头很大的。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。