クラメルの公式とは|連立方程式を行列式で解く計算例と証明
クラメルの公式は、連立一次方程式 の解を行列式の比で書き下す。消去の手順を踏まずに、解の各成分がいきなり一つの式で表せる。
成り立つのは係数行列が正則なとき、つまり のときに限る。この条件のもとで解は一意に決まり、その値を行列式の比が言い当てる。
公式の主張
元連立一次方程式 を考える。 は 次正方行列、 は 次元の列ベクトルである。
とすると、解の第 成分は次で与えられる。
ここで は、 の第 列を で置き換えた行列である。それ以外の列はそのまま残す。
係数行列の行列式 を求める
第 列を に取り替えて を求める
を で割る
分母はどの成分でも共通で、成分ごとに変わるのは分子だけである。だから 元の方程式を解くには、 個の行列式を計算すればよい。
2 元の計算例
次の連立方程式を解く。
係数行列と右辺のベクトルを取り出す。
まず分母を計算する。 となる。
の分子は、第 1 列を に取り替えた行列式である。
のときは第 2 列を取り替える。第 1 列にはさわらない。
あとは割るだけで、、 が出る。もとの式に代入すると 、 で、たしかに合っている。
解が分数になる 2 元の例
割り切れないほうがふつうである。次の例では解が分数になる。
分母は である。
したがって 、 となる。分母がそろっているので、通分の手間がない点はこの公式の利点である。
3 元の計算例
3 次の行列式はサラスの方法でも余因子展開でも計算できる。ここでは余因子展開で通す。
係数行列の行列式を第 1 行で展開する。符号は と交互になる。
2 次に落ちたので、あとは計算するだけである。 となる。
分子は 3 つある。第 1 列を に取り替えたものから順に求める。
同じく第 1 行で展開すると となり、値は である。
第 2 列を取り替えると の分子になる。第 1 列と第 3 列はもとのままである。
展開して を得る。
最後は第 3 列である。
こちらは になる。
分子が ときれいに並び、、、 が得られる。これは作為的な例で、ふつうはこう都合よくいかない。
分数解になる 3 元の例
係数に 0 が混じっていても手順は変わらない。
第 3 式の の係数は 0 である。行列に直すときに書き落としやすい。
第 1 行で展開する。0 のある行や列を選ぶと項が減るので、第 3 行で展開してもよい。
計算すると である。
分子も同じ手順で求める。まず第 1 列を右辺で置き換える。
展開すると になる。
こちらは である。
残る 1 つは となる。
よって解は 、、 である。3 成分とも分母が でそろうのは、共通の分母 が約分された結果にすぎない。
多重線型性による証明
の第 列を と書く。 が解であることは、 が列ベクトルの一次結合で書けることと同じである。
これを の第 列に代入する。行列式は各列について線型なので、和は外に出せる。
の項では、 が第 列と第 列の 2 箇所に現れる。同じ列が 2 つある行列式は交代性から 0 になる。
残るのは の項だけで、それは そのものである。したがって次が成り立つ。
で両辺を割れば公式になる。証明に使ったのは行列式の線型性と交代性の 2 つだけで、余因子展開は要らない。
補助行列を使う証明
もう一つ、行列の積の行列式を使う短い証明がある。単位行列の第 列を解ベクトル で置き換えた行列を とする。
第 1 列で展開していくと、 であることがすぐわかる。
次に を計算する。 の第 列は、 なら単位ベクトル なので、 となる。
第 列だけは であり、 である。つまり は の第 列を に取り替えた行列、すなわち に等しい。
両辺の行列式を取り、 を使えば が出る。
この証明はどこにも を使っていない。だから という等式は、解が存在しさえすれば 行列式が 0 でも成り立つ。
割り算を含まないので、体だけでなく整数のような可換環の上でもそのまま通用する。
余因子行列による証明
3 つめの道は逆行列を経由するもので、余因子行列の公式が副産物として手に入る。
から第 行と第 列を取り除いた行列式に符号をつけたものを、余因子 と呼ぶ。余因子を転置して並べた行列が余因子行列 である。
これは を満たす。 なら両辺を割って逆行列が書ける。
を成分で書くと、第 成分は次のようになる。
右辺の和が に等しい。余因子 は第 列を取り除いて作るので第 列の中身に依存せず、 の第 列で展開したときの余因子と一致するからである。
行列式が 0 のとき
のときは割り算ができないので、公式はそのままでは使えない。それでも前節で見た は生きている。
左辺が 0 なので、解が存在するならすべての について でなければならない。対偶を取ると、判定条件が一つ手に入る。
かつ、ある で なら、解は存在しない。これは確実に言える。
解なしとも不定とも決まらない。追加の調査が必要で、公式だけでは結論が出ない。
後者の注意点は具体例で見るのが早い。 がそれぞれ に等しいという 3 本の式を考える。
係数行列はすべての成分が 1 なので である。 はどれも同じ列を 2 つ持つため、分子もすべて 0 になる。
それでも第 1 式と第 2 式は同時に成り立たないので、この方程式に解はない。分子が全部 0 でも解の存在は保証されないわけである。
で、かつ だとわかった。このとき言えることはどれか。
- 解は無数に存在する
- 解はちょうど 1 つ存在する
- 解があるともないとも決まらない
- 解は存在しない
4 元の計算例
4 次以上の行列式はサラスの方法が使えない。行基本変形で 0 を作ってから展開するのが実際的である。
係数行列は次のようになる。
第 2 行から第 1 行を、第 3 行から第 1 行の 2 倍を引く。行から行の定数倍を引いても行列式は変わらない。
第 1 列に 0 が並んだので、3 次の行列式に落ちた。あとはふつうに展開する。
中央の項は係数が 0 なので消える。残りは である。
分子も同じ要領で計算できる。第 1 列を右辺で置き換えた行列は、左上が 10 で掃き出しにくい。
そこで第 1 行と第 3 行を入れ替える。行を 1 回入れ替えると行列式の符号が変わるので、あとで戻す必要がある。
第 2 行に第 1 行の 2 倍を足し、第 3 行から 10 倍を、第 4 行から 4 倍を引いた。第 1 列で展開する。
行を入れ替えた分の符号を戻して となる。残りも同様に 、、 である。
割れば 、、、 である。ここまで来ると、5 個の 4 次行列式を計算するより掃き出し法のほうが速いことが体感できる。
一つの未知数だけを求める
クラメルの公式が掃き出し法に勝つ場面が一つある。求めたい未知数が 1 つだけのときである。
前節の 4 元方程式で だけが必要だとしよう。計算するのは と の 2 つですむ。
さきほどと同じ行基本変形で第 1 列を掃き出す。
よって である。掃き出し法だと全部の未知数がまとめて出てくるので、こういう選択はできない。
逆行列を余因子行列で求める
余因子行列の公式は、そのまま逆行列の計算手順になる。3 元の例で使った行列で試す。
9 個の余因子を順に計算する。第 1 行ぶんを書き出すと次のようになる。
符号は で決まるので、市松模様に交互に入れ替わる。残りの 6 個も同じ調子で計算する。
余因子行列は、これを並べたあとに転置したものである。転置を忘れると行と列が入れ替わった行列ができあがる。
だったので、逆行列は次のようになる。
確かめるには を計算すればよい。対角成分がすべて 7、それ以外が 0 になれば正しい。
パラメータを含む 2 元の例
係数に文字が入ると、公式は解の形と場合分けを同時に見せてくれる。
行列式は である。分子は 2 つとも同じ値になる。
のとき、約分して が得られる。
では 2 本の式がどちらも になり、解は直線上に無数にある。 では と になり、辺々足すと という矛盾が出るので解はない。
行列式が 0 になる 2 つの場合が、不定と不能にきれいに分かれている。
パラメータを含む 3 元の例
3 元でも事情は同じで、因数分解した行列式が場合分けの地図になる。
行列式を第 1 行で展開する。
整理すると という の 3 次式になる。
を代入すると 0 になるので で割り切れる。割った商をさらに因数分解する。
第 1 列を右辺で置き換えた行列式も計算しておく。
未知数の入れ替えについて式が対称なので、 と も同じ値になる。
のとき が約分されて となる。
では 3 本とも で、解は平面全体に広がる。 では 3 本を足すと になるので解はない。
同次形と自明でない解
右辺をすべて 0 にした方程式を同次形という。 がいつでも解になるので、問題は自明でない解があるかどうかに移る。
前節と同じ係数行列で右辺を 0 にする。
なら分子はすべて 0 なので、公式から しか出てこない。自明でない解を持つには が必要になる。
逆も成り立つので、自明でない解を持つことと は同値になる。これがこの節の結論である。
さきほどの因数分解から、その条件は または である。
のときは という 1 本の式だけが残り、解空間は 2 次元になる。 のときは の定数倍がすべての解で、解空間は 1 次元である。
文字係数の例
係数が全部文字でも公式は動く。次の方程式はヴァンデルモンド行列を係数に持つ。
ヴァンデルモンド行列式は差の積に因数分解できることが知られている。
が互いに異なれば となり、公式が使える。
第 1 列を右辺で置き換えると、 が に変わっただけの同じ形になる。よって である。
共通因子 が約分され、符号を整理すると見覚えのある式が現れる。
これはラグランジュ補間の基底多項式を で評価したものである。 と は文字を入れ替えれば得られる。
3 つの和が 1 になることは、もとの第 1 式がそのまま主張している。補間の言葉では、基底多項式の和が定数関数 1 になるという性質にあたる。
複素数を係数にする例
行列式の理論は体の上で組み立てられているので、係数が複素数でも何も変わらない。
行列式を計算すると、共役の積が実数になって簡単になる。
分母が 1 なので、分子がそのまま解になる。
したがって 、 となる。第 2 式に代入すると で確かに満たされる。
2 直線の交点
2 元連立方程式は、平面上の 2 直線の交点を求める問題と同じものである。
である。0 でないので 2 直線は平行でなく、交点はただ 1 つに定まる。
交点は である。 は 2 直線の傾きが等しいことを意味し、重なるか平行に離れるかで不定と不能に分かれる。
3 点を通る放物線
未知数が係数の側にある問題も連立一次方程式になる。、、 の 3 点を通る放物線 を求める。
各点の座標を代入すると、 についての 3 元連立方程式ができる。
係数行列は各行が という形をしている。
これはヴァンデルモンド行列式で、値は 座標の差の積になる。3 点の 座標が異なれば 0 にならないので、放物線は必ず 1 つに決まる。
分子は右辺 を各列に入れて計算する。
よって 、、、すなわち が答えである。 を代入すると に戻ることが確かめられる。
幾何的な意味
2 元の場合、行列式の比は面積の比として目に見える。列ベクトルを と書くと、 は と が張る平行四辺形の符号つき面積である。
解の定義から が成り立つ。 と が張る平行四辺形の面積を考えると、 に含まれる の分は の方向へのずらしにすぎない。
底辺 を固定して頂点を 方向へ滑らせても、高さが変わらないので面積は変わらない。この操作をせん断という。
下の図は と の場合である。、、 となる。
<svg viewBox="0 0 430 330" width="100%" style="max-width:430px;display:block;margin:0 auto">
<defs>
<marker id="head" markerWidth="9" markerHeight="9" refX="8" refY="3" orient="auto">
<path d="M0,0 L8,3 L0,6 z" fill="#1f1f1f"></path>
</marker>
</defs>
<polygon points="40,290 160,260 340,50 220,80" fill="#1b81e0" fill-opacity="0.1" stroke="#1b81e0" stroke-width="1"></polygon>
<polygon points="40,290 160,260 190,170 70,200" fill="#1f1f1f" fill-opacity="0.12" stroke="#1f1f1f" stroke-width="1"></polygon>
<line x1="40" y1="290" x2="160" y2="260" stroke="#1f1f1f" stroke-width="1.4" marker-end="url(#head)"></line>
<line x1="40" y1="290" x2="70" y2="200" stroke="#1f1f1f" stroke-width="1.4" marker-end="url(#head)"></line>
<line x1="40" y1="290" x2="220" y2="80" stroke="#1b81e0" stroke-width="1.4" marker-end="url(#head)"></line>
<circle cx="40" cy="290" r="2.5" fill="#1f1f1f"></circle>
<text x="167" y="276" font-size="12" fill="#1f1f1f">a1</text>
<text x="46" y="196" font-size="12" fill="#1f1f1f">a2</text>
<text x="228" y="76" font-size="12" fill="#1b81e0">b</text>
<text x="196" y="167" font-size="11" fill="#1f1f1f">detA = 11</text>
<text x="346" y="47" font-size="11" fill="#1b81e0">detA2 = 22</text>
</svg>残るのは の分だけなので、 と が張る面積は と が張る面積の 倍になる。図では で、たしかに が読み取れる。
多重線型性による証明は、この面積の話をそのまま式にしたものである。線型性が「和に分ける」に、交代性が「同じ列があれば潰れる」に対応している。
計算量という壁
理論的な美しさとは裏腹に、この公式で大きな方程式を解くのは現実的でない。
行列式をライプニッツの定義式どおりに計算する場合を数えてみる。 次の行列式は 個の項からなり、各項は 個の積なので 回の乗算がいる。
元を解くには 個の行列式が必要である。 なら乗算が 回、加算が 回になる。
が増えると階乗が効いて手に負えなくなる。25 元では項の総数が に達し、毎秒 100 億項を処理しても約 12.8 億年かかる。
定義式どおりだと階乗のオーダー。25 元で 個の項
程度。25 元でおよそ 1 万回の演算
もっとも、階乗になるのは行列式の計算法が素朴すぎるからである。行列式そのものを掃き出し法で計算すれば 1 個あたり ですみ、全体では に落ちる。
凝縮法を組み合わせて まで下げる手法も提案されている。それでも掃き出し法を上回る理由は乏しく、実用の場では選ばれない。
数値計算の観点でも弱点がある。行列式は引き算の形で計算するため、桁落ちが起きると分母と分子の有効数字がまとめて失われるからである。
この公式の値打ちは、解を計算する手順ではなく、解を式として書き表せる点にある。係数が文字のとき、行列式が 0 になる条件を調べるとき、そして解が係数にどう依存するかを論じるときに力を発揮する。












分子がすべて 0 なのは解が存在するための必要条件であって、十分条件ではない。本文の x+y+z の例が、分子が全部 0 でも解がない場合になっている。