在Python中使用delta和epsilon查找立方根(finding cubed root using delta and epsilon in Python)

编程入门 行业动态 更新时间:2024-10-24 06:28:03
在Python中使用delta和epsilon查找立方根(finding cubed root using delta and epsilon in Python)

我正在尝试编写一个程序,使用delta和epsilon查找立方根但是我被卡住了因为我无法弄清楚为什么我的程序在无限循环中运行

num = 100 epsilon = 0.01 guess = num/3.0 while abs(guess**3 - num) >= epsilon: delta = abs(guess**3 - num)/100 if guess**3 > num: guess = (guess - delta) if guess**3 < num: guess = (guess + delta) print("Guess:", guess)

I am trying to write a program that finds cubed root using delta and epsilon but i'm stuck because i cant figure out why my program runs in an infinite loop

num = 100 epsilon = 0.01 guess = num/3.0 while abs(guess**3 - num) >= epsilon: delta = abs(guess**3 - num)/100 if guess**3 > num: guess = (guess - delta) if guess**3 < num: guess = (guess + delta) print("Guess:", guess)

最满意答案

首先,你应该使用if/elif而不是单独的if块。

请考虑以下情况:当guess**3 > num为True ,通过减小其值来更新guess ,以便guess**3 < num (下一个if条件)再次变为True ,从而反转初始更新。 总之,在该循环中, guess的值永远不会改变,并且循环旋转到无穷大。

其次,你想要对delta值进行规范化(惩罚它),因为随着num值的增加,它可能会变得惊人。

num = 100 epsilon = 0.01 guess = num/3.0 while abs(guess**3 - num) >= epsilon: delta = abs(guess**3 - num)/num if guess**3 > num: guess = (guess - delta*epsilon**0.5) elif guess**3 < num: guess = (guess + delta*epsilon**0.5) print("Guess:", guess)

First thing, you should use if/elif instead of separate if blocks.

Consider the following: when guess**3 > num is True, you update guess by reducing its value so that guess**3 < num (the next if condition) becomes True again, which reverses the initial update. In summary, the value of guess is never changed in that loop, and the loop whirls to infinity.

Secondly you want to regularize the delta value (penalize it) as it can be come alarming large as the value of num increases.

num = 100 epsilon = 0.01 guess = num/3.0 while abs(guess**3 - num) >= epsilon: delta = abs(guess**3 - num)/num if guess**3 > num: guess = (guess - delta*epsilon**0.5) elif guess**3 < num: guess = (guess + delta*epsilon**0.5) print("Guess:", guess)

更多推荐

本文发布于:2023-07-29 20:07:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1319385.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:立方根   epsilon   delta   Python   cubed

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!