给定一个正数a,不用库函数求其平方根。ide
设其平方根为x,则有x2=a,即x2-a=0。设函数f(x)= x2-a,则可得图示红色的函数曲线。在曲线上任取一点(x0,f(x0)),其中x0≠0那么曲线上该点的切线方程为函数
(1-1)spa
求该切线与x轴的交点得.net
(1-2)orm
由于1-2式中x0做为分母,因此在以前限定了一下初始值不要选0。那么获得的这个与x轴的交点实际上是最终要求得的x的一次逼近,咱们再以这个x基准继续迭代就能够求得更逼近的x,至于逼近到何时才算完,这个取决于你本身设定的精度。整个过程的迭代只须要几步就能够求得最终的结果。blog
代码以下:ip
固然,从图中能够看出,当你所取的初始值的横坐标在红色曲线与x轴交点右边,即比最终的结果大时,好比选初始值x=a,咱们能够将while语句里面的abs(x*x-fToBeSqrted)直接换成fToBeSqrted -x*x,这样能够省去abs的运算。固然这不能确保效率的提高,由于初始值的选取直接影响了迭代的次数。ci