-
連立方程式
$
\begin{array}{rcccc}
7 x_1&+ 4 x_2&+ 3 x_3&+ x_4 &=25\\
2 x_1&+ 5 x_2&+ x_3&+ 4 x_4 &=12\\
6 x_1&+ 9 x_2&+ 2 x_3&+ 5 x_4 &=103\\
x_1& &+ 8 x_3&+ 3 x_4 &=44
\end{array}
$
は、行列を使って次のように書くことができます。
$ \left(
\begin{array}{cccc}
7 & 4 & 3 & 1 \\
2 & 5 & 1 & 4 \\
6 & 9 & 2 & 5 \\
1 & 0 & 8 & 3
\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)
$
線形代数では、逆行列を左からかければ
$
\left(
\begin{array}{c}
x_1\\
x_2\\
x_3\\
x_4
\end{array}
\right)
$が求まります、と習います。
ところで皆さん、上の問題と、次の問題の、どちらが楽ですか?
$ \left(
\begin{array}{cccc}
1 & 0 & 0 & 0 \\
2 & 1 & 0 & 0 \\
6 & 9 & 1 & 0 \\
1 & 0 & 8 & 1
\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)
$
こっちのほうが簡単ですよね。
1行目を見れば$x_1$が$25$と分かり、
それを使えば$2x_1+x_2 =12$だから$x_2$もわかり、、、、
右上が全部0で、斜め1列が1というのがいいですね。
こういうのを「単位左下三角行列」というそうです。
下のほう(Lower)にしか数値がないので、これに$L$という名前を付けます。
$ \left(
\begin{array}{ccccc}
1 & 0 & 0 & ... & 0 \\
l_{21} & 1 & 0 & ...& 0 \\
l_{31} & l_{32} & 1 & ... &0 \\
: & : & : & & : \\
l_{n1} & l_{n2} & l_{n3} & ...& 1
\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)
$
1行目を見れば
$x_1=b_1$
それを使って、 $l_{21}x_1 + x_2=b_2 $ より
$x_2=b_2 - l_{21}x_1$
$x_2$もわかったから
$x_3=b_3 - l_{31}x_1 - l_{32}x_2$
$x_4=b_4 - l_{41}x_1 - l_{42}x_2- l_{43}x_3$
$x_5=b_5 - l_{51}x_1 - l_{52}x_2- l_{53}x_3- l_{54}x_4$
ひとつまえの$x_4$が求まってから次の$x_5$を計算するので、無理なくできます。
この$x_5$の式、c言語で小分けにして書くと
x[5] = b[5];
x[5] = x[5] - $l$[5][1] * x[1];
x[5] = x[5] - $l$[5][2] * x[2];
x[5] = x[5] - $l$[5][3] * x[3];
x[5] = x[5] - $l$[5][4] * x[4];
てことなので、1,2,3,4 と変わっていく数をkとすれば、
x[5] = b[5];
for(k=1; k<5; k++){
x[5] = x[5] -$l$[5][k] * x[k];
}
とかけます。
$x_4$の式なら
x[4] = b[4];
for(k=1; k<4; k++){
x[4] = x[4] -$l$[4][k] * x[k];
}
でいいですよね。
いま、4行目と5行目だけ書いてみましたが、これが1行目から$n$行目
$x_n = b_n - l_{n1}x_1 - l_{n2}x_2- l_{n3}x_3- l_{n4}x_4 ... - l_{n n-1}x_{n-1} $
まであるので、
4とか5のところをiに変えて、
i=1からi=n まですれば
for(i=1; i<=n; i++){
x[i] = b[i];
for(k=1; k < i ; k++){
x[i] = x[i] -$l$[i][k] * x[k];
}
}
これで「単位左下三角行列」の連立方程式が解けます。
$ \left(
\begin{array}{ccccc}
1 & 0 & 0 & ... & 0 \\
l_{21} & 1 & 0 & ...& 0 \\
l_{31} & l_{32} & 1 & ... &0 \\
: & : & : & & : \\
l_{n1} & l_{n2} & l_{n3} & ...& 1
\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)
$
|
次へ
|