数値解析 連立方程式 LU分解

前のページ
こういう問題はどうでしょう?
$ \left( \begin{array}{cccc} 3 & 4 & 9 & 8 \\ 0 & 5 & 6 & 6 \\ 0 & 0 & 4 & 1 \\ 0 & 0 & 0 & 7 \end{array} \right) \left( \begin{array}{c} x_1\\ x_2\\ x_3\\ x_4 \end{array} \right) = \left( \begin{array}{c} 25\\ 12\\ 103\\ 44 \end{array} \right) $

4行目を見れば$x_4$が$44/7$と分かり、
それを使えば$4x_3+x_4 =103$だから$x_3$もわかり、、、、
左下が全部0なので簡単です。
こういうのを「右上三角行列」というそうです。
上のほう(Upper)にしか数値がないので、これに$U$という名前を付けます。
$ \left( \begin{array}{ccccc} u_{11} & u_{12} & u_{13} & u_{14} & u_{15} \\ 0 & u_{22} & u_{23} & u_{24} & u_{25} \\ 0 & 0 & u_{33} & u_{34} & u_{35} \\ 0 & 0 & 0 & u_{44} & u_{45} \\ 0 & 0 & 0 & 0 & u_{55} \end{array} \right) \left( \begin{array}{c} x_1\\ x_2\\ x_3\\ x_4\\ x_5 \end{array} \right) = \left( \begin{array}{c} b_1\\ b_2\\ b_3\\ b_4\\ b_5\\ \end{array} \right) $

下から順にやっていけば無理なくできます
$u_{55}x_{5} = b_{5}$
$u_{44}x_{4} = b_{4} - u_{45}x_{5}$
$u_{33}x_{3} = b_{3} - u_{35}x_{5}- u_{34}x_{4}$
$u_{22}x_{2} = b_{2} - u_{25}x_{5}- u_{24}x_{4}- u_{23}x_{3}$
$u_{11}x_{1} = b_{1} - u_{15}x_{5}- u_{14}x_{4}- u_{13}x_{3}- u_{12}x_{2}$

$x_5$, $x_4$, $x_3$, ... は
右辺を$u_{55}$,$u_{44}$,$u_{33}$, ... で割れば求まります。
右辺をr (rightだからr)、 式中の、$u_{14}x_{4}$の4みたいなところをkと置けば
r = b[1];
for(k=5; k > 1; k--){
  r = r - u[1][k]*x[k];
}
x[1] = r/u[1][1];

x[2]を求めるなら
r = b[2];
for(k=5; k > 2; k--){
  r = r - u[2][k]*x[k];
}
x[2] = r/u[2][2];

x[1] から x[5] まで全部求めるなら、今変わったところをi とおいて
i=5 から順に
for(i=5; i > 0; i--){
 r = b[i];
 for(k=5; k > i; k--){
   r = r - u[i][k]*x[k];
 }
 x[i] = r/u[i][i];
}
でいいですよね。

5行で終わらず、$n$元連立なら、
$ \left( \begin{array}{ccccc} u_{11} & u_{12} & u_{13} & ... & u_{1n} \\ 0 & u_{22} & u_{23} & ... & u_{2n} \\ 0 & 0 & u_{33} & ... & u_{3n} \\  : & : & : & & : \\ 0 & 0 & 0 & ... & u_{nn} \end{array} \right) $
$ \left( \begin{array}{c} x_1\\ x_2\\ x_3\\ :\\ x_n \end{array} \right) = \left( \begin{array}{c} b_1\\ b_2\\ b_3\\ :\\ b_n\\ \end{array} \right) $


さっき5だったところを$n$になおしたらできますね
for(i= n ; i > 0; i--){
 r = b[i];
 for(k= n; k > i; k--){
   r = r - u[i][k]*x[k];
 }
 x[i] = r/u[i][i];
}
でいいですよね。

これで「右上三角行列」の連立方程式が解けることが分かります。

次へ