python - 在 Python 中使用 delta 和 epsilon 求立方根

标签 python python-3.x

我正在尝试编写一个使用 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)

最佳答案

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

考虑以下因素: 当guess**3 > numTrue ,您更新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)

关于python - 在 Python 中使用 delta 和 epsilon 求立方根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40143166/

相关文章:

python - PyArrow:增量使用 ParquetWriter 而不将整个数据集保存在内存中(比内存 Parquet 文件大)

Python/R : Remove duplicate rows - keep unique pairs of authors

python-3.x - Ursina 引擎不从 .mtl 文件加载纹理

python - 从同一模型中的其他类获取模型属性

python-3.x - 在不重新压缩 JPEG 图像的情况下更改 exif 数据

python - NAO机器人对未知单词进行语音识别

python - 如何使用 python 下载 nasa 卫星 OPeNDAP 数据

python - 如何使用 Python 3.x 成功导入 numpy?

Python3 ctypes c_unit32 字节序

python - 向后打印阶乘?