不动点迭代¶

改写方程为 $$ x=\varphi(x) $$

找到初始点$x_0$ $$ x_{k+1}=\varphi(x_k) $$

In [7]:
def root_fix_point(f, x0, n):

    x = x0

    for i in range(n):
        x = f(x)

        print(f'第{i}次迭代结果是 {x}')
In [19]:
# x^2 - 2 = 0

def f1(x):
    return (2 * x) ** (1/3)

root_fix_point(f=f1, x0=1, n=20)
第0次迭代结果是 1.2599210498948732
第1次迭代结果是 1.360790000174377
第2次迭代结果是 1.3961766429234024
第3次迭代结果是 1.4081755128503535
第4次迭代结果是 1.4121980079708376
第5次迭代结果是 1.41354139147575
第6次迭代结果是 1.413989469900099
第7次迭代结果是 1.4141388609362946
第8次迭代结果是 1.4141886614557184
第9次迭代结果是 1.414205262018586
第10次迭代结果是 1.4142107955828458
第11次迭代结果是 1.414212640109077
第12次迭代结果是 1.4142132549516888
第13次迭代结果是 1.4142134598992855
第14次迭代结果是 1.4142135282151578
第15次迭代结果是 1.4142135509871159
第16次迭代结果是 1.4142135585777686
第17次迭代结果是 1.4142135611079862
第18次迭代结果是 1.414213561951392
第19次迭代结果是 1.4142135622325274