python立方根求解_python 二分查找(立方根)

二分查找,以1/2的循环切割有效值域,在有效值域内部搜索需求对象,

注意: 所搜索值必须在有效值域内,以下为例

立方公式: x^3 = y

立方根:

1)x > 1时,x <= y,值域在 (x,y)内

2)0< x <1时,x>y值域在(0,1)内

故值域上界需手动修改,使用 max(abs(y),1) 确保有效值域

3)当y<0时,x<0时,只需将以上符号反转为 负(- ) 即可

"""

ans:立方根 y:搜索值 hight:值域上界 lower:值域下界 epsilion:精确度 num:步长

二分查找,搜索立方根,使用while循环实现查找域(ans,abs(y))

平方根位于 (-1,1)区间时,查找值域不在搜索上界 (ans,y)内,

故需要手动提高上界

"""

ans = 0.0

y = -8000990 #求取

num = 0 #记录步长

hight = max(abs(y),1) #比对y与1,确定上界

lower = ans

epsilion = 0.001 #精确度

while abs(ans**3 - abs(y)) > epsilion and ans <= max(abs(y),1):

if ans**3 > abs(y):

hight = ans

else:

lower = ans

print(ans)

ans = (hight + lower)/2

num += 1

if abs(ans**3 - abs(y)) > epsilion:

print('It not variables!')

if y < 0:

ans = -ans

print(num)

print(ans)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值