二分法求平方根和立方根 | 您所在的位置:网站首页 › 二分法编程 › 二分法求平方根和立方根 |
二分法求解平方根和立方根
给定一个正整数 n n n,在不使用python库函数的前提下,求出 n n n的平方根和立方根,结果保留两位小数。 此题可以使用二分法解决,对于一个正整数 n n n,可以设定所求结果的范围,在(left, right)之间,其中,初始left为0,初始right为n。因为 0 ≤ r e s u l t = n ≤ n 0\leq result = \sqrt n \leq n 0≤result=n ≤n一定满足。 因此,当无法使用库函数直接开根号时,初始范围的设定一定要将最终的result包含在内。接下来就可以使用二分法来逐渐缩小范围,确定result的值。设置mid为逐步逼近result的最终所求值,则初始mid被设置为0,当 m i d 2 − n < 0 mid^2-n n mid>\sqrt n mid>n ,说明mid大于所要求的值,则将right更新为mid,新的mid的值为: m i d = ( l e f t + r i g h t ) / 2 mid=(left+right)/2 mid=(left+right)/2,逐步迭代,直至满足以下条件时,停止迭代,返回mid值,即为最终所求的值。 ∣ m i d 2 − n ∣ < 1 0 − 7 (1) |mid^2-n| 0: right = mid else: left = mid mid = (left + right)/2 err = mid**2 - n print(format(mid, '.2f')) # 求一个正整数的立方根 n = int(input()) left, mid, right = 0, 0, n err = mid**3 - n while abs(err) > 1e-7: if err > 0: right = mid else: left = mid mid = (left + right) / 2 err = mid ** 3 - n print(format(mid, '.2f')) |
CopyRight 2018-2019 实验室设备网 版权所有 |