版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

仓库源文站点原文


title: 数值分析实验 - 解线性方程组的迭代法 categories:


数值分析实验 6 - 解线性方程组的迭代法

<!-- more -->

目的和意义

问题提出

对 {% post_link numanaexp-05 %} 所列目的和意义的线性方程组, 试分别选用 Jacobi 迭代法, Gauss-Seidol 迭代法和 SOR 方法计算其解

要求

  1. 体会迭代法求解线性方程组, 并能与消去法做以比较;
  2. 分别对不同精度要求, 如 $\epsilon=10^{-3},10^{-4},10^{-5}$, 由迭代次数体会该迭代法的收敛快慢;
  3. 对方程组 2, 3 使用 SOR 方法时, 选取松弛因子 $\omega=0.8, 0.9, 1, 1.1, 1.2$ 等, 试看对算法收敛性的影响, 并能找出你所选用的松弛因子的最佳者;
  4. 给出各种算法的设计程序和计算结果

目的和意义

  1. 通过上机计算体会迭代法求解线性方程组的特点, 并能和消去法比较;
  2. 运用所学的迭代法算法, 解决各类线性方程组, 编出算法程序;
  3. 体会上机计算时, 终止步骤 $|x^{(k+1)}-x^{(k)}|_{\infty}<\epsilon$ 或 $k>$ (予给的迭代次数), 对迭代法敛散性的意义;
  4. 体会初始解 $x^{(0)}$, 松弛因子的选取, 对计算结果的影响

计算公式

$$ A=D-L-U $$

其中

Jacobi 迭代法

$$ G=D^{-1}(L+U) $$

$$ x^{(k+1)}=Gx^{(k)}+D^{-1}b $$

收敛条件为 $\rho(G)<1$

Gauss-Seidol 迭代法

$$ G=(D-L)^{-1}U $$

$$ x^{(k+1)}=Gx^{(k)}+(D-L)^{-1}b $$

收敛条件为 $\rho(G)<1$

SOR 方法

$$ G=(D-\omega L)^{-1}((1-\omega)D+\omega U) $$

$$ x^{(k+1)}=Gx^{(k)}+\omega(D-\omega L)^{-1}b $$

收敛条件为 $\rho(G)<1$

程序设计

主程序

<details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb blog lang:matlab numanaexp-06/main.m %} </details>

Jacobi 迭代法

<details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb blog lang:matlab numanaexp-06/jacobi.m %} </details>

Gauss-Seidol 迭代法

<details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb blog lang:matlab numanaexp-06/gauss_seidol.m %} </details>

SOR 方法

<details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb blog lang:matlab numanaexp-06/sor.m %} </details>

结果讨论和分析

结果

方程组的解经验证符合要求, 为节省篇幅而略去

结论