2 連立方程式

2.1 表現方法

言うまでも無く連立1次方程式(Linear Equations)は,次のような形をしている.

\begin{equation*}\begin{aligned}a_{11}x_1+a_{12}x_2+a_{13}x_3+\cdots+a_{1N}x_N&=...
...a_{M1}x_1+a_{M2}x_2+a_{M3}x_3+\cdots+a_{MN}x_N&=b_M \end{aligned}\end{equation*}

ここでは,$ M=N$の場合を考える.$ M \ne N$のようなものは,ここでの講義のレベルを超 えるので,興味がある人は自分で学習すること.このような連立1次方程式を計算するこ とは,実際に工学の問題でしばしば現れる.例えば,偏微分方程式を離散化して解く場合 などである.その場合,方程式の次元数がかなり大きく,100万元くらいは普通である. 100万といっても,3次元問題だと, $ 100 \times 100 \times 100$程度であるので,まだ まだ精度は荒い.           

式(1)は行列とベクトルで書くと,式がすっきりして 考えやすくなる.書き直すと,

$\displaystyle \boldsymbol{A}\boldsymbol{x}=\boldsymbol{b}$ (2)

となるのは,以前学習したとおりである.それぞれの行列とベクトルは,

\begin{equation*}\begin{aligned}\boldsymbol{A}&= \begin{bmatrix}a_{11} & a_{12} ...
...rix}b_1 \\ b_2 \\ b_3 \\ \vdots\\ b_N \end{bmatrix} \end{aligned}\end{equation*}

を表す.行列は大文字の太文字(bold)スタイル,ベクトルは小文字の太文字スタイル,そ れぞれの成分は標準スタイルで表されることが多い.

ここで,解く問題は行列 $ \boldsymbol{A}$ $ N \times N$の正方行列で,その行列式がゼロでない ものとする.要するに,普通に解ける連立方程式である.ここで,解くべき問題は,既知 の $ \boldsymbol{A}$ $ \boldsymbol{b}$から,行列方程式(2)を満た す, $ \boldsymbol{x}$を求めることになる.この行列方程式解く過程で, $ \boldsymbol{A}$の逆行列や行列 式の値を求めることができる.逆行列や行列式は連立方程式と密接にかかわっているので ある.

通常,連立1次方程式(1)は

\begin{equation*}\begin{aligned}\begin{bmatrix}a_{11} & a_{12} & a_{13} & \cdots...
...rix}b_1 \\ b_2 \\ b_3 \\ \vdots\\ b_N \end{bmatrix} \end{aligned}\end{equation*}

と書き表せる.このようにすると,見通しがかなり良くなる.皆さんも,今後連立方程式 を書くときは,行列とベクトルで書く方が良いであろう.ちょっとばかり格好良い.

行列やベクトルを使うと,格好良いばかりでなくコンピューターで扱いやすくなる.例え ば,行列 $ \boldsymbol{A}$の要素$ a_{ij}$はプログラム中では2次元配列a[i][j]として 扱える.同様にベクトル$ b_k$は1次元配列b[k]として扱える.

2.2 計算方法

連立1次方程式は,クラメールの公式により,解のベクトル $ \boldsymbol{x}$は四則演 算で計算できる.行列 $ \boldsymbol{A}$が正則 $ (\det A \neq 0)$ならば,解は

$\displaystyle x_j$ $\displaystyle =\frac{1}{\det A} \begin{vmatrix}a_{11} & a_{12} & a_{13} & \cdot...
... a_{N3} & \cdots & a_{1j-1} & b_{1j} & a_{1j+1} & \cdots & a_{NN} \end{vmatrix}$ (5)

である.これは,2つの行列式を計算する必要があり,計算量が大変多くなる.したがっ て,$ N \geq 4$の場合は推奨できない.

次に考えられるのは, $ \boldsymbol{A}$の逆行列 $ \boldsymbol{A}^{-1}$を用いて, $ \boldsymbol{x}=\boldsymbol{A}^{-1}\boldsymbol{b}$から計算する方法である.この方法も,計算量と精度の面で 問題がある.$ N$が大きい場合,逆行列の計算には多大な時間がかかるからである.

連立1次方程式の計算方法は大別して,2通りある.1つは,ここで学習する消去法で,他 方は反復法と言われる方法である.どちらが良いかは,係数行列 $ \boldsymbol{A}$の性質に依存す る.一般に, $ \boldsymbol{A}$が密なとき,すなわちほとんどの要素がゼロでないときは,消去法が有 利である.一方,ほとんどの要素がゼロで, $ \boldsymbol{A}$が疎のとき,反復法が有利である. 工学の諸問題--とくに偏微分方程式--の場合,ほとんどの要素がゼロとなることが多い.

ここでは消去法を学習するが,反復法について簡単に紹介しておく.まず,係数行列を $ \boldsymbol{A}=\boldsymbol{B}-\boldsymbol{C}$と変形します.すると,元の連立1次方程式は, $ \boldsymbol{B}\boldsymbol{x}=\boldsymbol{C}\boldsymbol{x}+\boldsymbol{b}$となる.これを解くために,漸化式 $ \boldsymbol{B}\boldsymbol{x}^{(k+1)}=\boldsymbol{C}\boldsymbol{x}^{(k)}+\boldsymbol{b}$とする.もし,初期値 $ \boldsymbol{x}^{(0)}$が良ければ, $ \boldsymbol{x}^{(\infty)}$は真の解 $ \boldsymbol{x}$に収束する.もちろ ん, $ \boldsymbol{B}$は容易に計算できる連立1次方程式になるように選ぶ.この選び方により, ヤコビの反復法やガウス・ザイデル法,SOR法などがある.これらの方法については消去 法を学習した後に,学習する.


ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成18年10月16日


no counter