输入实数x(x>0),求x的正平方根,结果保留五位小数。要求不用sqrt实现。
提示:设a为x的正平方根,程序的目标是求a的值,使得a*a=x。a的取值范围在[0, x]内。由于a2在a>0时是单调递增函数,所以可以重复以下步骤缩小a的取值范围:(假设x = 2)
(1) a = (0 + 2) / 2=1,因为a*a = 1*1 <= x,所以a的取值范围在[1, 2]内。
(2) a = (1 + 2) / 2 = 1.5,因为a * a = 1.5 * 1.5 > x,所以a的取值范围在[1, 1.5]内。
(3) a = (1+1.5)/2=1.25,因为a*a=1.25*1.25 <= x,所以a的取值范围在[1.25, 1.5]内
(4) ……
重复上述步骤,a的取值范围在不停缩小,当取值范围的上限减去下限等于0.00001时,可停止求解,此时a的值即为x的平方根。