不动点迭代法
将原先的
f(x)=0
转化成
x=h(x)
的方式进行求解。
不动点的存在性定理
定理1
如果 f(x) 为区间[a,b]上的连续函数,且满足下面两个条件:
-
压缩性:对于 x∈[a,b], a≤f(x)≤b
-
大L性质:存在正常数L<1, 使得,对于任意的x,y∈[a,b] 都有,
∣f(x)−f(y)∣≤L∣x−y∣
则存在有唯一的不动点。
构造h(x)=f(x)−x,再用连续函数的介值定理就可以证明存在性,唯一性代入就可证明。
局部收敛定理:
若有这样的不动点 x∗ ,如果存在有在不动点附近的某个领域,满足有h′(x)<1,则迭代法:
xt+1=h(xt)
局部收敛。
- h′(x∗)数值越接近0,收敛速度越快。
- 如果对于小于n次的导数在不动点出都为0,且h(n)(x) 不一定为0,则称为n阶收敛
举列子
迭代方式有很多种比如:
x2−3=x=xk+1=0x−λ(x2−3)xk−λ(xk2−3)λ∈[0,1]
代码:
x = 1
for i in range(100):
x = x - 0.1 * (x ** 2 - 3)
print(x)
输出:
1.7320508075688772
x2−3=nx2=x=xk+1=0(n−1)x2+3n(n−1)x+nx3n(n−1)xk+nxk3n∈N
代码:
x, n = 2, 2
for i in range(100):
x = (n - 1) / n * x + 3 / (n * x)
print(x)
输出:
1.7320508075688772
import math
math.sqrt(3)
尾记