题目描述:
编写一个函数Sqrt_Binary,该函数包含2个参数num和 accuracy,用二分法计算浮点数num的平方根x(初始区间取[0, num+0.25]),当abs(x*x-num)小于或等于设定的精度时,近似认为x的平方等于num,函数返回计算得到的平方根x。在程序中输入一个浮点数n和计算精度,分别调用Sqrt_Binary 函数和math 库中的开平方函数输出n的平方根。
让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言分析题目: 题目要求编写一个二分法计算浮点数平方根的函数,需要两个参数:num和accuracy。函数内应用二分法,去确定浮点数num的平方根x,初始区间取[0, num+0.25]。当abs(x*x-num)小于或等于设定的精度时,近似认为x的平方等于num,函数返回计算得到的平方根x。 解题思路:
import math
def sqrt_binary(num, accuracy):
interval = [0, num+0.25]
while True:
left, right = interval
mid = (left+right)/2
if abs(mid*mid-num) <= accuracy:
return mid
elif mid*mid < num:
interval = [mid, right]
else:
interval = [left, mid]
# 测试代码
n = 5
acc = 0.001
res1 = sqrt_binary(n, acc)
res2 = math.sqrt(n)
print("二分法计算得到的平方根为:", res1)
print("math库计算得到的平方根为:", res2)
运行结果:
二分法计算得到的平方根为: 2.236083984375
math库计算得到的平方根为: 2.23606797749979