看到这个话题,你可能会有两种想法:
按计算器就知道了,比如:√2 = 2 0.5 = 1.200008000805
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
(4)重复循环(2)和(3)两步,直到达到规定的精度要求。
可以看出,迭代就是把上一次输出的结果作为下一次输入的结果,反复执行。
这是不是很神奇?来吧,我们试试。
例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
⑨……
只需要四次迭代就可以得到9位小数的精度,足够很多计算需求。
例2。求1234567的平方根。
呵呵,手工计算基本不可能,小数点很多,会让人抓狂的。以下是电子表格计算的数据,供参考:
第一次1
第二次617284
第三次308643
第四次154323.5
第五次的时候。58860 . 68868888686
在第六次的时候,58660 . 66868686861
第七次,19960 . 486786868616
第八次。58880.88888888886
第九次。59680.88898898686
在第十次的时候。38860 . 68868688686
在第十一次的时候。38860 . 68868888686
第12次,18966 . 468686868617
在第13次的时候。38860 . 68868888686
第14次,15860 . 468686868616
在15日,18960 . 668686868616
……
经过15次迭代,达到了一般的稳定精度要求。但是,如果初始值不是1,而是更接近精确值,如1000,迭代次数将大大减少,如下所示:
第一次一千
第二次1117.2835
第三次,18960.638386386316
在第四次的时候,58460 . 46868686861
……
只需要四次。初始值的选取很重要,良好的初始值估计是核心技术。
这篇文章为你打开了一扇门,但同时你会发现更多紧闭的门,比如立方根?四倍,五倍,小时代,不合理的时代…方根呢?例如,根号是小数、负数、无理数吗…?呵呵,这会让我们头大。