2022年度プログラミング演習A・B

第9回レポート課題の解説

演習1

ヤコビ法のアルゴリズムを実現するコードを書き、

$$ A= \begin{pmatrix} 2 & -1 & 0 & 0\\ -1 & 2 & -1 & 0\\ 0 & -1 & 2 & -1\\ 0 & 0 & -1 & 2 \end{pmatrix} ,\quad b= \begin{pmatrix} 1\\ 1\\ 1\\ 1 \end{pmatrix} $$

に対して $Ax=b$ の近似解を求めてください。ただし、

$$ x^{(0)}= \begin{pmatrix} 0\\ 0\\ 0\\ 0 \end{pmatrix} ,\quad EPS=10^{-5},\quad K=100 $$

とします。

演習2

ガウス・ザイデル法のアルゴリズムを実現するコードを書き、

$$ A= \begin{pmatrix} 2 & -1 & 0 & 0\\ -1 & 2 & -1 & 0\\ 0 & -1 & 2 & -1\\ 0 & 0 & -1 & 2 \end{pmatrix} ,\quad b= \begin{pmatrix} 1\\ 1\\ 1\\ 1 \end{pmatrix} $$

に対して $Ax=b$ の近似解を求めてください。ただし、

$$ x^{(0)}= \begin{pmatrix} 0\\ 0\\ 0\\ 0 \end{pmatrix} ,\quad EPS=10^{-5},\quad K=100 $$

とします。

演習3(オプション)

ヤコビ法とガウス・ザイデル法による収束の様子を可視化して確認します。

連立一次方程式

$$ \left\{ \begin{matrix} 2x_1-x_2 = 1\\ x_1+2x_2 = 3 \end{matrix} \right. $$

における各方程式が表す直線のグラフ(ただし、範囲は $0\leq x_1\leq 1.4$)と、

$$ A= \begin{pmatrix} 2 & -1\\ 1 & 2 \end{pmatrix} ,\quad b= \begin{pmatrix} 1\\ 3 \end{pmatrix}, $$$$ x^{(0)}= \begin{pmatrix} 0\\ 0 \end{pmatrix} ,\quad EPS=10^{-2},\quad K=100 $$

に対してヤコビ法を適用して得られるベクトル列 $\left\{x^{(k)}\right\}$ の各項が表す点を、一つの図に描画してください。

同様の描画を、ガウス・ザイデル法についても行ってください(つまり、結果は二つの図になります)。

さらに、描画した二つの図について自由に考察してください。

(考察)

考えている連立一次方程式に対するヤコビ法の漸化式は

$$ \left\{ \begin{matrix} x^{(k)}_1=\frac{1}{2}x^{(k-1)}_2+\frac{1}{2}\\ x^{(k)}_2=-\frac{1}{2}x^{(k-1)}_1+\frac{3}{2} \end{matrix} \right. $$

であり、これは上の図で言うと初期値の点からスタートして、青い直線にぶつかるまで水平に、オレンジの直線にぶつかるまで鉛直にそれぞれ移動した座標の組が新たな点となることを表している。

考えている連立一次方程式に対するガウス・ザイデル法の漸化式は

$$ \left\{ \begin{matrix} x^{(k)}_1=\frac{1}{2}x^{(k-1)}_2+\frac{1}{2}\\ x^{(k)}_2=-\frac{1}{2}x^{(k)}_1+\frac{3}{2} \end{matrix} \right. $$

であり、これは上の図で言うと初期値の点からスタートして、青い直線にぶつかるまで水平に移動した後に、さらにオレンジの直線にぶつかるまで鉛直に移動した点が新たな点となることを表している。

ガウス・ザイデル法における初期値以外の点はオレンジの直線上に位置し、ヤコビ法と比較して直線の交点に到達するまでの動きの無駄が少ない、すなわち収束が速いことが分かる。