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

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

演習1

ガウスの消去法の前進消去によるLU分解のアルゴリズムを実現するコードを書き、

$$ A= \begin{pmatrix} 2 & 1 & -2 & 3\\ 2 & 0 & 4 & 1\\ 3 & 0 & 5 & 2\\ 1 & -1 & 2 & 1 \end{pmatrix} $$

に対する変形の結果を表示してください。ただし、$A$ の次数が $4$ でない場合にも正しく動作するコードにすること。

よって、与えられた行列 $A$ は次の下三角行列 $L$ と上三角行列 $U$ を用いて $A=LU$ と分解できることが分かる。

$$ L= \begin{pmatrix} 1 & 0 & 0 & 0\\ 1 & 1 & 0 & 0\\ 1.5 & 1.5 & 1 & 0\\ 0.5 & 1.5 & 6 & 1 \end{pmatrix} ,\quad U= \begin{pmatrix} 2 & 1 & -2 & 3\\ 0 & -1 & 6 & -2\\ 0 & 0 & -1 & 0.5\\ 0 & 0 & 0 & -0.5 \end{pmatrix} $$

演習2

演習1のコードに前進代入と後退代入のアルゴリズムを実現するコードを追加し、

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

に対して $Ax=b$ の解を求めてください。ただし、$A$ と $b$ の次数が $4$ でない場合にも正しく動作するコードにすること。

(別解)

前進代入および後退代入の式に現れる積和の形をベクトルの内積(横ベクトルと縦ベクトルの行列積)として計算すると、次のように少し簡潔なコードになる。