不動點迭代法
將原先的
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)
尾記