第二次作业截图
- 对以下几种计算 42 的算法的收敛速率从最快到最慢排序, 并说明理由
- 使用二分法求解 f(x)=x4−2=0
- 使用割线法求解 f(x)=x4−2=0
- 通过迭代求 g(x)=2x+x31 的不动点
- 通过迭代求 g(x)=65x+3x31 的不动点
- 使用牛顿法求解 f(x)=x4−2=0
为了方便, 初始点选为 x0=1;初始区间选为[1,2]
- 对于二分法, 收敛速率为 21
- 对于割线法, 如果初始点足够接近根的话收敛速率为 1.618.
- 直接计算 g′(x)=21−x43 代入 x=42 得到结果为1, 而在其根的邻域中其绝对值趋于零. 可以认为在附近难以收敛到根, 故收敛速率可以近似为0. 实际中使用程序迭代也确实给出了该结果.
第3小题的程序迭代100次后结果
- g′(r)=31 在根附近进行迭代其收敛速率接近 31.实际程序迭代10次后就达到5位小数精度.
第4小问程序迭代结果
- 对于标准牛顿法, 其收敛速率为二阶, 实际程序中第5次便达到上述精度.
综上, 以上五种迭代速率由快到慢的排序为: 5→2→1→4→3
如果 f(x)∈Cm(R), 并满足 f(r)=0,f′(r)=0, f(m)(r)=0(m>2) f′′(r)=⋯=f(m−1)(r)=0, ,试分析标准牛顿迭代法的收敛性及误差。
f(r)=f(xi)+(r−xi)f′(xi)+(r−xi)mm!f(m)(ξ)
化简得到:
xi−f′(xi)f(xi)−r=(r−xi)mm!f′(xi)f(m)(ξ)
即:
eimei+1=m!f′(xi)f(m)(ξ)
取极限后发现此情况下标准牛顿迭代法的收敛速度为 m 阶
找出函数 g(x)=x2−23x+23 的每个不动点, 并确定不动点迭代是否局部收敛.
x2−23x+23=x
移项化简得:
x2−25x+23=0
解这个二次方程,得到两个根:
x1=1,x2=23
因此,g(x) 的不动点为 1 和 23。
计算出 g(x) 在不动点附近的导数,以便通过导数的大小来判断局部收敛性。在这里, g(x) 的导数:
g′(x)=2x−23
对于不动点 x1=1,有 g′(1)=−21,因此 x1 的不动点迭代是局部收敛的。
对于不动点 x2=23,有 g′(23)=23,因此 x2 的不动点迭代不是局部收敛的。
综上所述,g(x) 的不动点为 1 和 23,其中 1 的迭代是局部收敛的,23 的迭代不是局部收敛的。
令 f(x)=x4−7x3+18x2−20x+8, 牛顿法是否会二次收敛到根 r=2 ? 确定 limi→∞ei+1/ei
f(x)=(x−1)(x−2)3 有一个三重根。
先求出 f(x) 的导数:
f′(x)f′′(x)f′′′(x)=4x3−21x2+36x−20=12x2−42x+36=24x−42
f′(r)=f′′(r)=0=f′′′(r) 因此
由牛顿法可知,迭代公式为:
xi+1=xi−f′(xi)f(xi)=4xi−53xi2−2xi−2
由书上定理可知 此时牛顿迭代法会线性收敛,且 limi→∞eiei+1=S≈2/3
函数 f(x)=x3−4x 。
(a) 假设使用牛顿法求根 r=2, 第4步后误差是 e4=10−6, 估计 e5 ;
(b) 假设使用牛顿法求根 r=0, 第 4 步后误差是 e4=10−6, 估计 e5 ;
f(x)=x(x+2)(x−2), f′(x)=3x2−4, f′′(x)=6x
没有重根,标准的牛顿迭代法收敛速率为二阶,迭代误差满足:
i→∞limei2ei+1=2f′(r)f′′(r)
(a.) 对于 r=2, 2f′(r)f′′(r)=43 e5=43e42≈10−13
(b.) 对于 r=0, 2f′(r)f′′(r)=0
当 x4 时,有
f(x4)=x43−4x4f′(x4)=3x42−4
由于 r=0 是这个函数的根,所以有 f(r)=0,因此 f(x4) 是 r 的近似值,即
∣f(x4)∣=∣r−x4∣3≈e43
接下来估计 ∣r−x5∣:
∣r−x5∣=∣x5−x4∣=∣f′(x4)f(x4)∣
将牛顿法的迭代公式代入,得到
∣r−x5∣=∣f′(x4)f(x4)∣=∣3x42−4x43−4x4∣=∣3x42−4x4(x42−4)∣=∣3x42−4x4∣∣x42−4∣=∣3x4+x441∣∣x42−4∣
由于 ∣x42−4∣=∣x4−2∣∣x4+2∣,因此
∣r−x5∣=∣3x4+x441∣∣x4−2∣∣x4+2∣
考虑估计分母 3x4+x441 的大小,由于 x4 接近于 r=0,因此 x44 的绝对值将非常大,可以忽略 3,得到
∣r−x5∣≈4∣x4∣∣x4−2∣∣x4+2∣
e4=∣x4−r∣=x4
e5=∣r−x5∣=410−18−10−6≈10−6
取 (u0,v0)=(1,1), 使用牛顿迭代进行两步迭代求解
{u2+v2=1(u−1)2+v2=1
计算方法大同小异,我就直接贴程序了
首先得到各个矩阵:
X0=(xy)J−1(u,v)=(212v1−u−212vu)F(u,v)=(u2+v2−1u2−2u+v2)
代入计算公式:
Xi+1=Xi−J−1(Xi)⋅F(Xi)
得到:
编程:使用二分法、不动点迭代、牛顿法、试位法求 ex+x=7 的根, 结果精确到小数点后8位 并对各方法的收敛性进行比较。
程序结果
结果展示牛顿法和二分法在给定的初始值、初始区间内得到了收敛的结果,其他的在超过100次迭代次数后未达到预期的收敛值而退出。
由此可知,在日常中,牛顿法不仅算法复杂度低且收敛速度快(虽然有更快的三阶方法,但是复杂度上去了)。而二分法在给定初始区间足够优秀,也能有不错的收敛结果。而试位法、不动点迭代等方法的性能高度依赖于初始点、初始区间的选取,在本例题中没有体现相应的优异性。