第二次作业截图

1

  • 对以下几种计算 的算法的收敛速率从最快到最慢排序, 并说明理由
  1. 使用二分法求解
  2. 使用割线法求解
  3. 通过迭代求 的不动点
  4. 通过迭代求 的不动点
  5. 使用牛顿法求解

为了方便, 初始点选为

  1. 对于二分法, 收敛速率为
  2. 对于割线法, 如果初始点足够接近根的话收敛速率为 .
  3. 直接计算 代入 得到结果为1, 而在其根的邻域中其绝对值趋于零. 可以认为在附近难以收敛到根, 故收敛速率可以近似为0. 实际中使用程序迭代也确实给出了该结果.

第3小题的程序迭代100次后结果
  1. 在根附近进行迭代其收敛速率接近 .实际程序迭代10次后就达到5位小数精度.

第4小问程序迭代结果
  1. 对于标准牛顿法, 其收敛速率为二阶, 实际程序中第5次便达到上述精度.

综上, 以上五种迭代速率由快到慢的排序为:

2

如果 , 并满足 , ,试分析标准牛顿迭代法的收敛性及误差。

化简得到:

即:

取极限后发现此情况下标准牛顿迭代法的收敛速度为

3

找出函数 的每个不动点, 并确定不动点迭代是否局部收敛.

移项化简得:

解这个二次方程,得到两个根:

因此, 的不动点为

计算出 在不动点附近的导数,以便通过导数的大小来判断局部收敛性。在这里, 的导数:

对于不动点 ,有 ,因此 的不动点迭代是局部收敛的。

对于不动点 ,有 ,因此 的不动点迭代不是局部收敛的。

综上所述, 的不动点为 ,其中 的迭代是局部收敛的, 的迭代不是局部收敛的。

4

, 牛顿法是否会二次收敛到根 ? 确定

有一个三重根。

先求出 的导数:

因此

由牛顿法可知,迭代公式为:

由书上定理可知 此时牛顿迭代法会线性收敛,且

5

函数 。 (a) 假设使用牛顿法求根 , 第4步后误差是 , 估计 ; (b) 假设使用牛顿法求根 , 第 4 步后误差是 , 估计

, ,

没有重根,标准的牛顿迭代法收敛速率为二阶,迭代误差满足:

(a.) 对于 , (b.) 对于 ,

时,有

由于 是这个函数的根,所以有 ,因此 的近似值,即

接下来估计

将牛顿法的迭代公式代入,得到

由于 ,因此

考虑估计分母 的大小,由于 接近于 ,因此 的绝对值将非常大,可以忽略 3,得到

6

, 使用牛顿迭代进行两步迭代求解


计算方法大同小异,我就直接贴程序了

首先得到各个矩阵:

代入计算公式: 得到:

7

编程:使用二分法、不动点迭代、牛顿法、试位法求 的根, 结果精确到小数点后8位 并对各方法的收敛性进行比较。


程序结果

结果展示牛顿法和二分法在给定的初始值、初始区间内得到了收敛的结果,其他的在超过100次迭代次数后未达到预期的收敛值而退出。

由此可知,在日常中,牛顿法不仅算法复杂度低且收敛速度快(虽然有更快的三阶方法,但是复杂度上去了)。而二分法在给定初始区间足够优秀,也能有不错的收敛结果。而试位法、不动点迭代等方法的性能高度依赖于初始点、初始区间的选取,在本例题中没有体现相应的优异性。