亲宝软件园·资讯

展开

python之二分法求平方根

梦醒之地 人气:0
  前几天学完python的程序分支结构后,老师课后留了一个问题,用两种方法计算一个大于或等于 1 的实数 n 数的平方根。
描述
设计一个用二分法计算一个大于或等于 1 的实数 n 的平方根的函数sqrt_binary(n),计算精度控制在计算结果的平方与输入的误差不大于1e-6。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
注:初始区间取[0,n]
‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
输入格式:
输入一个实数 n(大于或等于1)‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出格式:
第一行输出用自己设计的函数计算得到的平方根‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
第二行输出用math库开平方函数计算得到的平方根
 
思路:先说第二种,用math库函数,这个比较简单,只要知道math库里的math.sqrt()就行了。第一种要求用二分法求得平方根。首先,你得明白数学里二分法是怎么求平方根的。这个建议自己如果不知道的画,百度看一下。下面说一下我代码中的思想。
二分法思想:
 1.先求区间[0,n]之间的中点值mid=(0+n)/2
 2.判断mid的平方与n之间差值的绝对值是否符合精确度误差
 3.符合就返回得到的值,不符合的话,如果mid**2>n,说明n的平方根小于mid,让mid等于区间较大的数,继续求中点值。如果mid**2<n,说明n的平方根大于mid,让mid等于区间较小的数,继续求中点值。

 代码如下:
 1 import math#引入math库
 2 n= eval(input())
 3 def sqrt_binary(n):
 4     low = 0
 5     up = n
 6     a = 1e-6#误差
 7     while True:
 8         mid = (low+up)/2
 9         if abs(mid**2 - n) < a :#精确度判断
10             return mid
11         else:
12             if mid**2 > n:
13                 up = mid
14             if mid**2 < n:
15                 low = mid
16 print(sqrt_binary(n))  
17 print(math.sqrt(n))

 

加载全部内容

相关教程
猜你喜欢
用户评论