2401_84198563 2024-04-27 16:20 采纳率: 85.7%
浏览 3
已采纳

y运用python二分法求平方根

img


题目描述:
编写一个函数Sqrt_Binary,该函数包含2个参数num和 accuracy,用二分法计算浮点数num的平方根x(初始区间取[0, num+0.25]),当abs(x*x-num)小于或等于设定的精度时,近似认为x的平方等于num,函数返回计算得到的平方根x。在程序中输入一个浮点数n和计算精度,分别调用Sqrt_Binary 函数和math 库中的开平方函数输出n的平方根。

  • 写回答

2条回答 默认 最新

  • 码农阿豪 Java领域优质创作者 2024-04-27 16:40
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    分析题目: 题目要求编写一个二分法计算浮点数平方根的函数,需要两个参数:num和accuracy。函数内应用二分法,去确定浮点数num的平方根x,初始区间取[0, num+0.25]。当abs(x*x-num)小于或等于设定的精度时,近似认为x的平方等于num,函数返回计算得到的平方根x。 解题思路:
    1. 定义一个函数sqrt_binary(num, accuracy),该函数包含两个参数,一个是浮点数num,另一个是计算精度accuracy。
    2. 定义一个初始区间为[0, num+0.25]的变量interval,用来存储二分法的初始区间。
    3. 定义一个while循环,当abs(mid*mid-num)>accuracy时,执行循环体内的操作。
    4. 在while循环内,计算二分法的中点mid,并计算mid的平方。
    5. 判断mid的平方与num的大小关系,更新二分法的区间。
    6. 当abs(mid*mid-num)<=accuracy时,返回mid。 代码实现:
    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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 5月16日
  • 创建了问题 4月27日

悬赏问题

  • ¥15 ogg dd trandata 报错
  • ¥15 高缺失率数据如何选择填充方式
  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错