1

我无法让程序的这一部分进入 while 循环。在插入、 和的值后poly,程序会计算一个值以使用正确工作的函数,并且在我的具体实例中给出了答案。我使用的 epsilon 值为. 既然实际上大于它为什么要跳过循环?x_0epsilonansevaluate_poly()-13.21190.0001abs(ans)epsilon

print ans在该行的正下方放置了一条语句x_01 = 0,以确保它在 while 循环之前正确计算,还添加了一条print epsilon语句,以确保它epsilon正确地获取了我的值(确实如此)。

def compute_root(poly, x_0, epsilon):
    """uses newton's method to find a root of a polynomial function"""

    ans = evaluate_poly(poly, x_0)
    x_01 = 0

    while abs(ans) > epsilon:

        Dpoly = compute_deriv(poly)
        Fprime = evaluate_poly(Dpoly, x_01)
        return ans

        x_01 = x_0 - (ans/Fprime)
        print x_01
        return x_01

    print ans
4

2 回答 2

2

您在循环中放置了两个 return 语句。当第一个被击中时,该功能仅立即退出。因此,不仅在第一个循环中退出了 while 循环,而且永远不会到达 print 语句。

于 2013-06-15T21:18:09.133 回答
1

你有return ans你的循环。因此,此时函数将退出,并且print永远不会到达。

如果ans真的是 -13.2119 那么它确实进入了循环,它只是不会执行其中的所有操作,因为return.

即使您删除return ans循环内的行,也有return x_01在它的末尾。因此,在这种情况下,循环将最多运行一次,这将使其与if语句相同。

于 2013-06-15T21:12:35.890 回答