線形代数I/連立一次方程式 のバックアップ(No.5)

更新


連立一次方程式

連立一次方程式とは

どういう意味か?

連立
複数ある
一次方程式
項の次数が最大で一次の方程式

「項」とは?

+やーで繋がれたもの
3x-2ay+(c+d) なら 3x -2ay の他、 (c+d) を項と呼ぶことも
因子
積や商で繋がれたもの
ax なら a x

「次数」とは?

   項を構成する因子に「変数が」何個含まれているか

「一次」とは?

0次
3,\ -\sqrt{5},\ a,\ 3b,\ \cdots
一次
x,\ -2y, 5z,\ w/\sqrt{2},\ \cdots ← 変数が1つ含まれたこういうやつ
二次
-2x^2,\ ay^2,\ 5xy\, \cdots
三次
2x^3,\ xy^2,\ \pi xyz,\ \cdots
……

∴「項の次数が0次か一次の方程式が複数ある」=「連立一次方程式」

連立一次方程式の例

たとえば、 \left\{\begin{array}{l} x+2y=-1 \\ 3x+y=2 \end{array}\right . を解くと、 \left\{\begin{array}{l} x=1 \\ y=-1 \end{array}\right .

うまく解けない場合もある

  • 解がたくさん出てくる
  • 解が1つもない

解がたくさん出てくる

\left\{\begin{array}{l} x+2y=-1 \\ 2x+4y=-2 \end{array}\right . を解くと、 \left\{\begin{array}{l} x=-2a-1 \\ y=a \end{array}\right .
任意の a について解になる。

(下の式が上の式のちょうど2倍になっているため、 実効的には式が1つしかないのと同じ事になっている)

解が1つもない

\left\{\begin{array}{l} x+2y=-1 \\ 2x+4y=-3 \end{array}\right .

下の式から上の式の2倍を引くと次式を得る。

0=-1

どんな x,y を持ってきてもこの式を満たすことはできない。

したがって「解無し」

連立一次方程式の一般形

変数の数も、式の数も、いくつでも良い。

\left\{\begin{array}{c@{}c@{}c@{}c@{}c@{}c@{}c} a_{11}x_1&+&a_{12}x_2&+\cdots+&a_{1n}x_n&=&b_1 \\ a_{21}x_1&+&a_{22}x_2&+\cdots+&a_{2n}x_n&=&b_2 \\ \vdots&&\vdots&&\vdots&&\vdots\\ a_{m1}x_1&+&a_{m2}x_2&+\cdots+&a_{mn}x_n&=&b_m \\ \end{array}\right .

x_1,x_2,\cdots,x_n が変数
a_{11},\cdots,a_{mn} が定数(係数)
b_1,b_2,\cdots,b_m も定数

変数に使う文字:
変数が3つまでであれば、 x,y,z が使われ、
変数が4つまでであれば、 x,y,z,w が使われる事が多い。

それ以上の時は、 x_i の形で表すとよい。

ベクトル方程式として表す

係数行列、変数ベクトル、定数ベクトル、をそれぞれ

A=\begin{bmatrix}a_{11}&a_{12}&\cdots&a_{1n}\\a_{21}&a_{22}&\cdots&a_{2n}\\\vdots&\vdots&\ddots&\vdots\\a_{m1}&a_{m2}&\cdots&a_{mn}\end{bmatrix} \bm x = \begin{bmatrix}x_1\\x_2\\\vdots\\x_n\end{bmatrix} \bm b = \begin{bmatrix}b_1\\b_2\\\vdots\\b_m\end{bmatrix}

と置くと、連立一次方程式は次のベクトル方程式の形に書ける。

A\bm x=\bm b

方程式の分類

先の例と同様に、

  • 1つだけに決まる
  • たくさんある
  • 1つもない

のいずれかに分類できる。

A\bm x=\bm b なら \bm x=A^{-1}\bm b だから、解は必ず1つだけ求まるんじゃないの?
というのはちょっと甘い。

  • A が正則でない場合もあるし
  • そもそも A が正方行列にならない場合も考えないと

本章の目的

物理学やその他のシミュレーションでは、 何万、何十万の変数を持つ連立一次方程式を解かなければならない。

  • 大きな次数の計算は「行き当たりばったり」では困るので、 「必ず解ける解法」を知りたい
  • 方程式の性質を行列を使って理解したい

というのが、以降で扱う内容。

(計算機で必要になる「本当に効率の良い計算方法」はやらないけど)

連立一次方程式を解く(普通に)

\left\{\!\begin{array}{r@{\,}c@{\,}r@{\,}c@{\,}r@{\,}c@{\,}r@{\ \ \ \ \ \ \ }c}x&-&2y&+&3z&=&1&\MARU{1}\\3x&+&y&-&5z&=&-4&\MARU{2} \\-2x&+&6y&-&9z&=&-2&\MARU{3}\end{array}\right .

を解こう。

\begin{array}{r@{\,}c@{\,}r@{\,}c@{\,}r@{\,}c@{\,}r@{\ \ \ \ \ \ \ }ll}\phantom{-2x}&\phantom{-}&7y&-&14z&=&-7&\MARU{2}-3\times\MARU{1}&=\MARU{4}\\&&2y&-&3z&=&0&\MARU{3}+2\times\MARU{1}&=\MARU{5} \\&&y&-&2z&=&-1&\MARU{4}/7&=\MARU{6}\\x&&&-&z&=&-1&\MARU{1}+2\times\MARU{6}&=\MARU{7}\\&&&&z&=&2&\MARU{5}-2\times\MARU{6}&=\MARU{8}\\x&&&&&=&1&\MARU{7}+\MARU{8}&=\MARU{9}\\&&y&&&=&3&\MARU{6}+2\times\MARU{8}&=\MARU{10}\\\end{array}

\MARU{9}\MARU{10}\MARU{8} より x=1,\ y=3,\ z=2

あるいは、

\begin{bmatrix}x\\y\\z\end{bmatrix}=\begin{bmatrix}1\\3\\2\end{bmatrix}

が解となる。

どうやったか?

連立方程式の解を変化させずに以下の式変形が可能:

  • ある式を定数倍( \neq 0 )する
  • ある式を定数倍して別の式に加える
  • (ある式を別の式を入れ替える) ←必要なら

与えられた式に上記の操作を繰り返して、最終的に

\left\{\begin{array}{c@{\ }c@{\ }c@{\ }c@{\ }c}x&&&=&?\\&y&&=&?\\&&z&=&?\end{array}\right .

の形にできれば、解けたことになる。

係数だけ取り出して考える

\left\{\!\begin{array}{r@{\,}c@{\,}r@{\,}c@{\,}r@{\,}c@{\,}r}x&-&2y&+&3z&=&1\\3x&+&y&-&5z&=&-4 \\-2x&+&6y&-&9z&=&-2\end{array}\right .

のような連立一次方程式に対して、係数行列と定数ベクトルを並べて

A^*=[\,A\ \bm b\,]=\begin{bmatrix}1&-2&3&1\\3&1&-5&-4\\-2&6&-9&-2\end{bmatrix}
を「拡大係数行列」と呼ぶ。

これに、

  • ある行を定数倍( \neq 0 )する
  • ある行を定数倍して別の行に加える
  • ある行を別の式を入れ替える

を行っても、対応する方程式の解は変わらない。
→ これら3つは「(行に対する)基本変形」と呼ばれる

したがって、拡大係数行列に基本変形を繰り返すことで、

\left[\begin{array}{ccccl}1&0&\cdots&0&b_1^\prime\\0&1&&\vdots&\vdots\\\vdots&&\ddots&0&b_{m-1}^\prime\\0&\cdots&0&1&b_m^\prime\end{array}\right]=[\,I\ \bm b^\prime\,]

のように 「単位行列と(始めと異なる)定数ベクトルが並ぶ形」 にできれば、 これは、

\left\{\begin{array}{c@{\ }c@{\ }c@{\ }c@{\ }c}x&&&=&b_1^\prime\\&y&&=&b_2^\prime\\&&z&=&b_3^\prime\end{array}\right .

のような式に対応し、

\bm x=\bm b^\prime

が解となる。

(必ずこううまく行くとは限らないけど、うまく行った=解けた、である)

実際にやってみる → ガウスの消去法(掃出し法)

先の問題を、拡大係数行列を変形する方法で解いてみる。

ここで採用する方法は「ガウスの消去法」あるいは「掃出し法」と呼ばれる。

\left\{\!\begin{array}{r@{\,}c@{\,}r@{\,}c@{\,}r@{\,}c@{\,}r}x&-&2y&+&3z&=&1\\3x&+&y&-&5z&=&-4 \\-2x&+&6y&-&9z&=&-2\end{array}\right .

より、拡大係数行列は

[\,A\ \bm b\,]=\begin{bmatrix}1&-2&3&1\\3&1&-5&-4\\-2&6&-9&-2\end{bmatrix}

まず、1列目を目的の形(単位行列)と一致させたい。

そこで、(1, 1) 要素を軸にして1列目を掃き出す (この「軸にする」「掃き出す」は専門用語)。

具体的には、(1, 1) 要素が1なので、3倍を2行目から引き、2倍を3行目に足せば、(2, 1)要素と(3, 1)要素をゼロにできる。

\sim \begin{bmatrix}1&-2&3&1\\0&7&-14&-7\\0&2&-3&0\end{bmatrix}\begin{array}{l}\bm r_1\\\bm r_2-3\bm r_1\\\bm r_3+2\bm r_1\\\end{array}

行列の右側に出てくる \bm r_1 などは、教科書と同じ書き方で、直前の行列の i 行目の行ベクトルを \bm r_i と書いている。あくまでメモ代わりだが、書いておくと計算間違いなどを防ぎやすい。

これで1列目を目的の形にできた。次は2列目。

(2, 2) 要素を軸に掃き出したいが、他の行が7で割り切れないので、まずは2行目に 1/7 を掛けて (2, 2) 要素を1にしておく。

\sim \begin{bmatrix}1&-2&3&1\\0&1&-2&-1\\0&2&-3&0\end{bmatrix}\begin{array}{l}\bm r_1\\\bm r_2/7\\\bm r_3\\\end{array}

そして、(2, 2) 要素を軸に2列目を掃き出す。ここでは1行目に2行目の2倍を、3行目に2行目の−2倍を加えればよい。

\sim \begin{bmatrix}1&0&-1&-1\\0&1&-2&-1\\0&0&1&2\end{bmatrix}\begin{array}{l}\bm r_1+2\bm r_2\\\bm r_2\\\bm r_3-2\bm r_2\\\end{array}

(3, 3) 要素は1なので、そのまま軸にして3列目を掃き出す。1行目に3行目をそのまま、2行目には2倍して加えればよい。

\sim \begin{bmatrix}1&0&0&1\\0&1&0&3\\0&0&1&2\end{bmatrix}\begin{array}{l}\bm r_1+\bm r_3\\\bm r_2+2\bm r_3\\\bm r_3\\\end{array}

この形が求める物であり、

\left\{\begin{array}{c@{\ }c@{\ }c@{\ }c@{\ }c}x&&&=&1\\&y&&=&3\\&&z&=&2\end{array}\right .

という方程式に対応する。

「式の解を変えない変形」でこの結果を得たのであるから、これは元の式の解でもある。

すなわち、 x=1,\ y=3,\ z=2 あるいは、 \begin{bmatrix}x\\y\\z\end{bmatrix}=\begin{bmatrix}1\\3\\2\end{bmatrix} が与式の解となる。

解答の書き方

問:

\left\{\!\begin{array}{r@{\,}c@{\,}r@{\,}c@{\,}r@{\,}c@{\,}r}x&-&2y&+&3z&=&1\\3x&+&y&-&5z&=&-4 \\-2x&+&6y&-&9z&=&-2\end{array}\right .

を解け。

解答:

拡大係数行列を求め基本変形する。

[\,A\ \bm b\,]=\begin{bmatrix}1&-2&3&1\\3&1&-5&-4\\-2&6&-9&-2\end{bmatrix}

\sim \begin{bmatrix}1&-2&3&1\\0&7&-14&-7\\0&2&-3&0\end{bmatrix}\begin{array}{l}\bm r_1\\\bm r_2-3\bm r_1\\\bm r_3+2\bm r_1\\\end{array}

\sim \begin{bmatrix}1&-2&3&1\\0&1&-2&-1\\0&2&-3&0\end{bmatrix}\begin{array}{l}\bm r_1\\\bm r_2/7\\\bm r_3\\\end{array}

\sim \begin{bmatrix}1&0&-1&-1\\0&1&-2&-1\\0&0&1&2\end{bmatrix}\begin{array}{l}\bm r_1+2\bm r_2\\\bm r_2\\\bm r_3-2\bm r_2\\\end{array}

\sim \begin{bmatrix}1&0&0&1\\0&1&0&3\\0&0&1&2\end{bmatrix}\begin{array}{l}\bm r_1+\bm r_3\\\bm r_2+2\bm r_3\\\bm r_3\\\end{array}

したがって、

\left\{\begin{array}{c@{\ }c@{\ }c@{\ }c@{\ }c}x&&&=&1\\&y&&=&3\\&&z&=&2\end{array}\right .

より、解は

\begin{bmatrix}x\\y\\z\end{bmatrix}=\begin{bmatrix}1\\3\\2\end{bmatrix}

注意点

上記では基本変形を表すのに "〜" を使っている。

ここでの "〜" は、同じ解を持つ連立方程式を表す行列であることを表す「同値関係」(これは専門用語なので余力があれば各自調べること)

基本変形の前後で行列同士が等しいわけではないため "=" で繋いではならない。

ガウスの消去法:復習

上で使った方針は、

  • 左側の列から順に、対角成分を軸にして掃き出す
  • 最後が [\,I\ \bm b^\prime\,] の形になれば解けたことになる

この方法は、任意の大きさの連立一次方程式に適用可能。

しかし、これだけではうまく行かないケースがある。

うまく行かないケース(1):行の入れ替えが必要

基本変形による計算途中で、以下のように軸に取るべき要素がゼロになってしまう場合がある。

[\,A\ \bm b\,] = \begin{bmatrix}2&1&1&2\\4&2&3&1\\-2&-2&0&-1\end{bmatrix}

\sim \begin{bmatrix}2&1&1&2\\0&0&1&-3\\0&-1&1&1\end{bmatrix}\begin{array}{l}\bm r_1\\\bm r_2+2\bm r_1\\\bm r_3+\bm r_1\\\end{array}

次に (2, 2) を軸に掃出しをしたいが、(2, 2) がゼロなので掃出しができない。

ここでは、他の行と入れ替えることで掃出しが行える。(2行目と3行目を入れ替える)

\sim \begin{bmatrix}2&1&1&2\\0&-1&1&1\\0&0&1&-3\end{bmatrix}\begin{array}{l}\bm r_1\\\bm r_3\\\bm r_2\\\end{array}

\sim \begin{bmatrix}2&1&1&2\\0&1&-1&-1\\0&0&1&-3\end{bmatrix}\begin{array}{l}\bm r_1\\-\bm r_2\\\bm r_3\\\end{array}

\sim \begin{bmatrix}2&0&2&3\\0&1&-1&-1\\0&0&1&-3\end{bmatrix}\begin{array}{l}\bm r_1-\bm r_2\\\bm r_2\\\bm r_3\\\end{array}

\sim \begin{bmatrix}2&0&0&9\\0&1&0&-4\\0&0&1&-3\end{bmatrix}\begin{array}{l}\bm r_1-2\bm r_3\\\bm r_2+\bm r_3\\\bm r_3\\\end{array}

\sim \begin{bmatrix}1&0&0&9/2\\0&1&0&-4\\0&0&1&-3\end{bmatrix}\begin{array}{l}\bm r_1/2\\\bm r_2\\\bm r_3\\\end{array}

\therefore \begin{bmatrix}x\\y\\z\end{bmatrix}=\begin{bmatrix}9/2\\-4\\-3\end{bmatrix}

うまく行かないケース(2):軸に取るべき要素がない

入れ替えようとしてもできない場合がある。

たとえば、計算途中で次のようになった場合、2列目を掃き出せない
→ (2, 2) 要素がゼロだし、それより下にも要素がない

\begin{bmatrix}1&2&-2&-3\\0&0&2&2\\0&0&3&3\end{bmatrix}

その場合には、仕方がないのでその列は飛ばして、次列以降の掃き出しを続ける。

\sim \begin{bmatrix}1&2&-2&-3\\0&0&1&1\\0&0&3&3\end{bmatrix}\begin{array}{l}\bm r_1\\\bm r_2/2\\\bm r_3\\\end{array}

\sim \begin{bmatrix}1&2&0&-1\\0&0&1&1\\0&0&0&0\end{bmatrix}\begin{array}{l}\bm r_1+2\bm r_2\\\bm r_2\\\bm r_3-3\bm r_2\\\end{array}

\sim \begin{bmatrix}1&2&0&-1\\0&0&1&1\\0&0&0&0\end{bmatrix}\begin{array}{l}\bm r_1+2\bm r_2\\\bm r_2\\\bm r_3-3\bm r_2\\\end{array}

4列目も掃き出せないのでこれで終了。

  • 1,3列目:掃き出せた = ある行に1を残して残りは全て0になっている
  • 2,4列目:掃き出せなかった = ごちゃごちゃなまま

これに対応する方程式は、

\left\{ \begin{array}{l}x+2y\phantom{+z}=-1\\\phantom{x+2y+}z=\phantom{-}1\\\phantom{x+2y+}0=\phantom{-}0\end{array} \right .

このような場合、「掃出しのできなかった列に対応する変数をパラメータに置く」のが良い
→ ここでは2列目 = y

y=a ただし a は任意の実数とすると、

\left\{ \begin{array}{l}x=-2a-1\\y=a\\z=1\end{array} \right .

とすれば全ての式を満たす。すなわち、

\begin{bmatrix}x\\y\\z\end{bmatrix}=a\begin{bmatrix}-2\\1\\0\end{bmatrix}+\begin{bmatrix}-1\\0\\1\end{bmatrix}

が一般解となる。

「一般解」とは?

一般解
すべての解がこの形に表せることを保証できる形
特殊解
その値自体は解になるが、他にも解があることを否定しない形

行数が足りない場合も同様

[Math Conversion Error]


に対して、1列目、2列目を掃き出した結果は次のようになる。
→ 掃き出せた列は軸とした列に1があり、残りは0になっている

\sim \begin{bmatrix}1&0&3&-1&5\\0&1&-2&2&-4\end{bmatrix}

3列目、4列目はこれ以上掃き出せない。対応する方程式は、

\left\{ \begin{array}{l}x\phantom{+y}+3z-\phantom{2}w=\phantom{-}5\\\phantom{x+}y-2z+2w=-4\end{array}\right .

掃出しのできなかった列に対応する変数を z=a,\ w=b と置けば、

\left\{ \begin{array}{l}x=-3a+b+5\\y+2a-2b-4\\z=a\\w=b\end{array} \right .

すなわち、

\begin{bmatrix}x\\y\\z\\w\end{bmatrix}=a\begin{bmatrix}-3\\2\\1\\0\end{bmatrix}+b\begin{bmatrix}1\\-2\\0\\1\end{bmatrix}+\begin{bmatrix}5\\-4\\0\\0\end{bmatrix}

が一般解となる。

うまく行かないケース(3):定数項まで掃き出せてしまう

\begin{bmatrix}1&2&-2&-3\\0&0&2&2\\0&0&3&4\end{bmatrix}

について掃出しを進めると、

\sim \begin{bmatrix}1&2&-2&-3\\0&0&1&1\\0&0&3&4\end{bmatrix}\begin{array}{l}\bm r_1\\\bm r_2/2\\\bm r_3\end{array}

\sim \begin{bmatrix}1&2&0&-1\\0&0&1&1\\0&0&0&1\end{bmatrix}\begin{array}{l}\bm r_1+2\bm r_2\\\bm r_2\\\bm r_3-3\bm r_2\end{array}

ここまででおかしな事になっているのだけれど、形式的には4列目も掃き出せてしまう。

\sim \begin{bmatrix}1&2&0&0\\0&0&1&0\\0&0&0&1\end{bmatrix}\begin{array}{l}\bm r_1+\bm r_3\\\bm r_2-\bm r_3\\\bm r_3\end{array}

対応する方程式は、

\left\{\begin{array}{l}x+2y\phantom{+z}=0\\\phantom{x+2y+}z=0\\\phantom{x+2y+}0=1\end{array} \right .

この連立方程式(特に3番目の式)は、どんな x,\ y,\ z に対しても成り立たないため、 「解無し」が結論になる。

本来なら、係数部分がすべてゼロで、定数部分が非ゼロの行ベクトルが現れた時点で「解無し」を結論できる。

連立一次方程式の解法

  1. 掃出しにより [\,A\ \bm b\,]\sim[\,I\ \bm b^\prime\,] とできれば、解は \bm x=\bm b^\prime
  2. 掃き出せない列があれば、飛ばして計算を続け、最後にその列をパラメータに置く
  3. 定数項( \ne 0 )を残して他がゼロの行が現れたら「解無し」

により、どんな連立一次方程式も解ける(任意の次数でOK)

注)「解ける」=「一般解が求まる」 or 「解無しを結論する」

コメント





Counter: 310898 (from 2010/06/03), today: 46, yesterday: 0