我被要求写一个程序来解决这个方程(x^3+x-1=0)使用不动点迭代。
不动点迭代的算法是什么?
Python中有固定点迭代代码示例吗(不是来自任何模块的函数,而是包含算法的代码)
谢谢你

最佳答案

首先,请阅读:
Fixed point iteration:Applications
我选择了牛顿法。
现在,如果您想了解生成器函数,可以定义生成器函数,并按如下方式实例化生成器对象

def newtons_method(n):
    n = float(n)  #Force float arithmetic
    nPlusOne = n - (pow(n,3) + n - 1)/(3*pow(n,2) +1)
    while 1:
        yield nPlusOne
        n = nPlusOne
        nPlusOne = n - (pow(n,3) + n - 1)/(3*pow(n,2) +1)

approxAnswer = newtons_method(1.0)   #1.0 can be any initial guess...

然后,你可以通过调用来获得连续更好的近似值:
approxAnswer.next()

有关发电机的详细信息,请参见:PEP 255Classes (Generators) - Python v2.7
例如
approx1 = approxAnswer.next()
approx2 = approxAnswer.next()

或者最好还是用一个循环!
至于决定你的近似何时足够好…;)

10-08 14:46