下面是详细的Python用二分法求平方根的攻略。
算法思路
- 选择一个左端点
left
和一个右端点right
(可以是任意两个正数,满足left * left < num < right * right
),并计算它们的中点mid = (left + right) / 2
。 - 如果
mid * mid == num
,则mid
就是num
的平方根。 - 如果
mid * mid < num
,则说明mid
比平方根小,那么平方根应该在mid
右侧,此时更新left
为mid
。 - 如果
mid * mid > num
,则说明mid
比平方根大,那么平方根应该在mid
左侧,此时更新right
为mid
。 - 不断重复步骤2~4,直到
left
和right
越来越接近,即right - left < 1e-7
。
代码实现
下面是Python代码实现:
def sqrt(num: float) -> float:
left, right = 0, num
while right - left > 1e-7:
mid = (left + right) / 2
if mid * mid < num:
left = mid
else:
right = mid
return left
函数 sqrt
的输入参数为要求平方根的数字 num
,返回值为 num
的平方根。参数 num
必须为非负实数。
例如,求解 4
的平方根,可调用函数:
sqrt(4) # 返回 2.0
再例如,求解 2
的平方根(结果保留6位小数),可调用函数:
round(sqrt(2), 6) # 返回 1.414214
总结
二分法是一种求解函数零点(或极值)的重要方法,可用于求解广义上的平方根、立方根等多种根号形式的问题。但注意在二分时要注意边界,并且要使用浮点数进行计算,以免出现无限循环的情况。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python用二分法求平方根的案例 - Python技术站