二分法求平方根B
类型:函数
题目描述
设计一个用二分法计算一个大于或等于 0 的实数 n 的平方根的函数sqrt_binary(n),实数 n和计算精度控制由用户在同一行内输入,用逗号进行分隔,输出结果保留8位小数。当(abs(x * x - n) )小于或等于设定的精度时,近似认为 x * x == n。
注:初始区间取[0,n+0.25]
输入格式
在同 行内输入一个实数 n(大于或等于0)和一个代表精度的数字(可用1e-m格式输入),逗号间隔
输出格式
第一行输出用自己设计的函数计算得到的平方根
第二行输出用math库开平方函数计算得到的平方根
示例
输入:5.0,1e-7
输出:
2.23606796
2.23606798
答案:
# from 勇敢di牛牛 https://blog.csdn.net/niuguobao?type=blog
from math import sqrt
x, e = input().split(',')
def sq2(x, e):
e = e # 误差范围
low = 0
high = max(x + 0.25, 0) # 题目要求区间
guess = (low + high) / 2.0
ctr = 1
while abs(guess ** 2 - x) > e:
if guess ** 2 < x:
low = guess
else:
high = guess
guess = (low + high) / 2.0
ctr += 1
print('%.8f' % guess)
print('%.8f' % sqrt(x))
sq2(float(x), float(e))
说明:此题目来自【Python123】,答案为自己创作,不产生任何商业利益,如有侵权,请联系删除。Python123 - 编程更简单Python123 是面向新工科教学需求的计算机类基础课程教学辅助平台。支持全国计算机二级 python 考试自学与备考,还向合作教师与高校提供精品教学资源、全系列课程内容、全流程教学工具,支撑课程教学管理、练习、考试、教学研究等实际需求,为国家级、省部级一流课程提供教学研究数据支撑。https://python123.io/