Hatena::ブログ(Diary)

伝書閑古鳥

2010年2月6日(土)

クラメルの公式

連立一次方程式を解く際に便利な公式、クラメルの公式(cramer's fomula)。

しかし、普通に生活していて行列が必要になることなんてまずないので、

扱い慣れないために、この方法を使う人は多くはないだろうと思います。

ま、普通の生活に連立一次方程式が現れるとも思いませんが。


ということで、クラメルの公式の使い方を紹介しちゃおうと。

序でに、行列云々も軽く説明しちゃおうと。

では、参りましょう。


クラメルの公式(2×2の場合)

先ず結論から。

複雑にしたくないので、二次の正方行列(2×2)の場合について書きます。

クラメルの公式(2×2の場合)

¥b{A}=¥begin{pmatrix}a & b ¥¥c & d¥end{pmatrix}が正則であるとき、

¥begin{pmatrix}a & b ¥¥c & d¥end{pmatrix}¥begin{pmatrix}x ¥¥y¥end{pmatrix}=¥begin{pmatrix}p ¥¥q¥end{pmatrix}

の解は、

x=¥frac{1}{¥det ¥b{A}}¥begin{vmatrix}p & b ¥¥q & d¥end{vmatrix}

y=¥frac{1}{¥det ¥b{A}}¥begin{vmatrix}a & p ¥¥c & q¥end{vmatrix}

となる。

行列を一切使わずに同じことを書くと、

ad-bc ¥neq 0のとき、

¥begin{cases}ax+by=p ¥¥cx+dy=q¥end{cases}

の解は、

x=¥frac{dp-bq}{ad-bc}

y=¥frac{aq-cp}{ad-bc}

となる。


使用例(2×2の場合)

簡単な例で確認してみましょう。

¥begin{cases}2x+y=5 ¥¥x+4y=6¥end{cases}


代入法を使うと、

一つ目の式を移項してy=5-2x

二つ目の式に代入してx+4(5-2x)=6

計算すると、7x=14よりx=2

一つ目の式にx=2を代入して4+y=5よりy=1

よって、x=2,y=1です。


クラメルの公式を使ってみましょう。

a=2,b=1,c=1,d=4,p=5,q=6に対応しています。

ad-bc=2 ¥cdot 4-1 ¥cdot 1=7 ¥neq 0だから、公式を使えます。

x=¥frac{dp-bq}{ad-bc}=¥frac{4 ¥cdot 5-1 ¥cdot 6}{7}=2

y=¥frac{aq-cp}{ad-bc}=¥frac{2 ¥cdot 1-1 ¥cdot 5}{7}=1

おっと、もう求まりました。

便利でしょ?

ま、これは単純な場合なので、どちらでもさほど変わりませんが。


さて、2×2の場合は行列の知識がなくとも簡単に出来るのですが、

3×3以上になってくると、そうも言っていられません。

ということで、「行列」の話に入りましょう。


行列の作り方

クラメルの公式に当てはめるには、

先ず連立方程式行列での式表現に変える必要があります。

といっても、簡単なことです。


¥begin{cases}ax+by=p ¥¥cx+dy=q¥end{cases}

の場合、

¥begin{pmatrix}a & b ¥¥c & d¥end{pmatrix}¥begin{pmatrix} x ¥¥y¥end{pmatrix}=¥begin{pmatrix}p ¥¥q¥end{pmatrix}


¥begin{cases}ax+by+cz=p ¥¥dx+ey+fz=q ¥¥gx+hy+iz=r¥end{cases}

の場合、

¥begin{pmatrix}a & b & c ¥¥d & e & f ¥¥g & h & i¥end{pmatrix}¥begin{pmatrix}x ¥¥y ¥¥z¥end{pmatrix}=¥begin{pmatrix}p ¥¥q ¥¥r¥end{pmatrix}


これは、行列の積の定義に拠ります。

行列の積の定義

lm列の行列¥b{A}mn列の行列¥b{B}の積、ln列の行列¥b{C}の成分は、

c_{ij}=¥sum_{k=1}^m a_{ik} b_{kj}


行列式

次は、「行列式」に入りましょう。

行列¥b{A}=¥begin{pmatrix}a & b ¥¥c & d¥end{pmatrix}に対して

行列式¥begin{vmatrix}¥b{A}¥end{vmatrix}=¥det ¥b{A}=¥begin{vmatrix}a & b ¥¥c & d¥end{vmatrix}と書きます。


行列行列式の大きな違いは、

行列式」は値を持つ、ということです。

つまり、「行列式」は計算することが出来ます。

¥begin{vmatrix}a & b ¥¥c & d¥end{vmatrix}=ad-bc

ただし、こんな単純に計算できるのは2×2の場合だけです。

3×3の場合は、次のようになります。

¥begin{vmatrix}a & b & c ¥¥d & e & f ¥¥g & h & i¥end{vmatrix}=aei+bfg+cdh-afh-bdi-ceg


行列式を小さくする

3×3以上の行列式の計算は面倒です。

大きい行列式になると、そのまま計算するのはほぼ不可能です。

そこで、色々なテクニックが登場します。

その一つに、行列式を小分けする方法があります。


さっきの3×3の行列式を見てみます。

¥begin{vmatrix}a & b & c ¥¥d & e & f ¥¥g & h & i¥end{vmatrix}=aei+bfg+cdh-afh-bdi-ceg

これを、a,b,cで括ってみると、

a(ei-fh)+b(fg-di)+c(dh-eg)

ここで、括弧の中を2×2の行列式に直してみます。

a ¥begin{vmatrix}e & f ¥¥h & i¥end{vmatrix}+b ¥begin{vmatrix}f & d ¥¥i & g¥end{vmatrix}+c ¥begin{vmatrix}d & e ¥¥g & h¥end{vmatrix}

この式、実は3×3の行列式a,b,cのそれぞれがある行と列を隠した時の

2×2の行列式になっているということが分かりますか?

ただし、bに対応する行列式だけは逆になっています。

これで、3×3の行列式を2×2の行列式だけで表わすことが出来ました。

逆になっている部分を、マイナスを付けて反転しておくと、次のようになります。

¥begin{vmatrix}a & b & c ¥¥d & e & f ¥¥g & h & i¥end{vmatrix}=a ¥begin{vmatrix}e & f ¥¥h & i¥end{vmatrix}-b ¥begin{vmatrix}d & f ¥¥g & i¥end{vmatrix}+c ¥begin{vmatrix}d & e ¥¥g & h¥end{vmatrix}

また、a,d,gd,e,fといった括り方も出来ます。

¥begin{vmatrix}a & b & c ¥¥d & e & f ¥¥g & h & i¥end{vmatrix}=a ¥begin{vmatrix}e & f ¥¥h & i¥end{vmatrix}-d ¥begin{vmatrix}b & c ¥¥h & i¥end{vmatrix}+g ¥begin{vmatrix}b & c ¥¥e & f¥end{vmatrix}

¥begin{vmatrix}a & b & c ¥¥d & e & f ¥¥g & h & i¥end{vmatrix}=-d ¥begin{vmatrix}b & c ¥¥h & i¥end{vmatrix}+e ¥begin{vmatrix}a & c ¥¥g & i¥end{vmatrix}-f ¥begin{vmatrix}a & b ¥¥g & h¥end{vmatrix}

ここで注意するべきは、とにかく符号

左上をプラスとして、

横か下に移動するたびにマイナス、プラスと反転する、と覚えるのが好いと思います。


今は3×3の行列式を2×2の行列式で表わしましたが、

3×3の場合に限らず、どんな大きな行列式も、一つ小さい行列式で表わせます。

つまりこれで、どんなに大きな行列式でも2×2の行列式で表わせるのです。

4×4の行列式を2×2の行列式で表わしてみます。

¥begin{vmatrix}a_1 & a_2 & a_3 & a_4¥¥b_1 & b_2 & b_3 & b_4¥¥c_1 & c_2 & c_3 & c_4¥¥ d_1 & d_2 & d_3 & d_4¥end{vmatrix}

=a_1 ¥begin{vmatrix}b_2 & b_3 & b_4¥¥c_2 & c_3 & c_4¥¥d_2 & d_3 & d_4¥end{vmatrix}-a_2 ¥begin{vmatrix}b_1 & b_3 & b_4¥¥c_1 &c_3 & c_4¥¥ d_1 & d_3 & d_4¥end{vmatrix}+a_3 ¥begin{vmatrix}b_1 & b_2 & b_4¥¥c_1 & c_2 & c_4¥¥ d_1 & d_2 & d_4¥end{vmatrix}-a_4 ¥begin{vmatrix}b_1 & b_2 & b_3¥¥c_1 & c_2 & c_3¥¥ d_1 & d_2 & d_3¥end{vmatrix}

=a_1(b_2¥begin{vmatrix}c_3 & c_4¥¥d_3 & d_4¥end{vmatrix}-b_3¥begin{vmatrix}c_2 & c_4¥¥d_2 & d_4¥end{vmatrix}+b_4¥begin{vmatrix}c_2 & c_3¥¥d_2 & d_3¥end{vmatrix})

-a_2(b_1¥begin{vmatrix}c_3 & c_4¥¥d_3 & d_4¥end{vmatrix}-b_3¥begin{vmatrix}c_1 & c_4¥¥d_1 & d_4¥end{vmatrix}+b_4¥begin{vmatrix}c_1 & c_3¥¥d_1 & d_3¥end{vmatrix})

+a_3(b_1¥begin{vmatrix}c_2 & c_4¥¥d_2 & d_4¥end{vmatrix}-b_2¥begin{vmatrix}c_1 & c_4¥¥d_1 & d_4¥end{vmatrix}+b_4¥begin{vmatrix}c_1 & c_2¥¥d_1 & d_2¥end{vmatrix})

-a_4(b_1¥begin{vmatrix}c_2 & c_3¥¥d_2 & d_3¥end{vmatrix}-b_2¥begin{vmatrix}c_1 & c_3¥¥d_1 & d_3¥end{vmatrix}+b_3¥begin{vmatrix}c_1 & c_4¥¥d_1 & d_4¥end{vmatrix})

ちょっと長くなりますけどね。


「正則」とは

ここで言葉の説明を入れておきます。

「正則」というのは、逆行列存在することです。

今回は逆行列には触れませんが、逆行列存在するための必要十分条件

行列式の値が0でないこと、になるのです。

正則でない場合、連立方程式の解はどうなるのでしょう。

例を挙げます。

¥begin{cases}2x+y=5 ¥¥4x+2y=10¥end{cases}

この場合、¥begin{vmatrix}2 & 1 ¥¥4 & 2¥end{vmatrix}=2 ¥cdot 2-1 ¥cdot 4=0より、正則ではありません。

連立方程式の二つ目の式を2で割ると、一つ目の式に一致します。

これはつまり、2x+y=5を満たすなら、どんなx,yでも良いということです。

それは例えば、1と3だったり、2と1だったり、ということです。


もうひとつ、例を挙げます。

¥begin{cases}2x+y=5 ¥¥4x+2y=6¥end{cases}

行列式はさっきと同じのため、正則ではありません。

二つ目の式を2で割ると、2x+y=3になります。

この連立方程式を満たすx,y存在しません。

グラフを書くと分かるのですが、この2式は平行な直線だから、

x,yが交わる点が存在しないのです。

よって、解なし。


つまり、行列が正則でないときには、

その連立方程式は解を持たないか、無数の解を持つことになります。


クラメルの公式

では、今度は一般化したクラメルの公式を見てみましょう。

クラメルの公式

¥b{A}=¥begin{pmatrix}a_{11} & a_{12} & ¥dots & a_{1n} ¥¥a_{21} & a_{22} & ¥dots & a_{2n} ¥¥¥dots & ¥dots & ¥dots & ¥dots ¥¥a_{n1} & a_{n2} & ¥dots & a_{nn}¥end{pmatrix}が正則であるとき、

¥begin{pmatrix}a_{11} & a_{12} & ¥dots & a_{1n} ¥¥a_{21} & a_{22} & ¥dots & a_{2n} ¥¥¥dots & ¥dots & ¥dots & ¥dots ¥¥a_{n1} & a_{n2} & ¥dots & a_{nn}¥end{pmatrix}¥begin{pmatrix}x_1 ¥¥x_2 ¥¥¥dots ¥¥x_n¥end{pmatrix}=¥begin{pmatrix}p_1 ¥¥p_2 ¥¥¥dots ¥¥p_n¥end{pmatrix}

の解は、

x_1=¥frac{1}{¥det ¥b{A}}¥begin{vmatrix}p_1 & a_{12} & ¥dots & a_{1n} ¥¥p_2 & a_{22} & ¥dots & a_{2n} ¥¥¥dots & ¥dots & ¥dots & ¥dots ¥¥p_n & a_{n2} & ¥dots & a_{nn}¥end{vmatrix}

x_2=¥frac{1}{¥det ¥b{A}}¥begin{vmatrix}a_{11} & p_1 & ¥dots & a_{1n} ¥¥a_{21} & p_2 & ¥dots & a_{2n} ¥¥¥dots & ¥dots & ¥dots & ¥dots ¥¥a_{n1} & p_n & ¥dots & a_{nn}¥end{vmatrix}

x_n=¥frac{1}{¥det ¥b{A}}¥begin{vmatrix}a_{11} & a_{12} & ¥dots & p_1 ¥¥a_{21} & a_{22} & ¥dots & p_2 ¥¥¥dots & ¥dots & ¥dots & ¥dots ¥¥a_{n1} & a_{n2} & ¥dots & p_n¥end{vmatrix}

となる。

……はっはっは。

いや、なんでもありません。


使用例(3×3の場合)

ということで、例を示します。

¥begin{cases}2x+y+3z=10 ¥¥3x-y-z=2 ¥¥x-y+4z=3¥end{cases}


行列表現すると、

¥begin{pmatrix}2 & 1 & 3 ¥¥3 & -1 & -1 ¥¥1 & -1 & 4¥end{pmatrix}¥begin{pmatrix}x ¥¥y ¥¥z¥end{pmatrix}=¥begin{pmatrix}10 ¥¥2 ¥¥3¥end{pmatrix}

先ず、正則であることを確認します。

¥begin{vmatrix}2 & 1 & 3 ¥¥3 & -1 & -1 ¥¥1 & -1 & 4¥end{vmatrix}=2 ¥begin{vmatrix}-1 & -1 ¥¥-1 & 4¥end{vmatrix}-1 ¥begin{vmatrix}3 & -1 ¥¥1 & 4¥end{vmatrix}+3 ¥begin{vmatrix}3 & -1 ¥¥1 & -1¥end{vmatrix}=-10-13-6=-29 ¥neq 0

正則が示されたので、解を求めましょう。

分母は行列式の値だから-29ですね。

両辺に-29をかけておきます。

-29x=¥begin{vmatrix}10 & 1 & 3 ¥¥2 & -1 & -1 ¥¥3 & -1 & 4¥end{vmatrix}=10 ¥begin{vmatrix}-1 & -1 ¥¥-1 & 4¥end{vmatrix}-1 ¥begin{vmatrix}2 & -1 ¥¥3 & 4¥end{vmatrix}+3 ¥begin{vmatrix}2 & -1 ¥¥3 & -1¥end{vmatrix}=-50-11+3=-58

よって、x=2です。

同様に、

-29y=¥begin{vmatrix}2 & 10 & 3 ¥¥3 & 2 & -1 ¥¥1 & 3 & 4¥end{vmatrix}=2 ¥begin{vmatrix}2 & -1 ¥¥3 & 4¥end{vmatrix}-10 ¥begin{vmatrix}3 & -1 ¥¥1 & 4¥end{vmatrix}+3 ¥begin{vmatrix}3 & 2 ¥¥1 & 3¥end{vmatrix}=22-130+21=-87

-29z=¥begin{vmatrix}2 & 1 & 10 ¥¥3 & -1 & 2 ¥¥1 & -1 & 3¥end{vmatrix}=2 ¥begin{vmatrix}-1 & 2 ¥¥-1 & 3¥end{vmatrix}-1 ¥begin{vmatrix}3 & 2 ¥¥1 & 3¥end{vmatrix}+10 ¥begin{vmatrix}3 & -1 ¥¥1 & -1¥end{vmatrix}=-2-7-20=-29

これよりy=3,z=1と求まりました。


検算しておきましょう。

x=2,y=3,z=1を代入します。

¥begin{cases}2 ¥cdot 2+3+3 ¥cdot 1=10 ¥¥3 ¥cdot 2-3-1=2 ¥¥2-3+4 ¥cdot 1=3¥end{cases}

合ってますね。

無事、解を求めることが出来ました。

行列式のテクニックを駆使すれば、もう少し簡単に解けますが、

今使った2×2の行列式の計算と行列式の小分けさえ知っていれば、

うどんな連立一次方程式でも解けるはずです。

あ、因みに連立一次方程式のことを線型方程式系と言ったりもします。


クラメルの公式の証明

クラメルの公式を使うと、解が手早く簡単に

求まることが分かって貰えましたか?

では、何故解が求まるのか、証明してみましょう。

ここで、普通なら逆行列を登場させるところなのですが、

そうなると余因子の説明が必要となって面倒なんですね。

ここはひとつ力技でやっちゃいましょうか。

3×3の場合を証明します。

他の場合は、各々で逆行列を駆使してやってみてください。


proof

先ずは線型方程式系を用意。

¥begin{cases}ax+by+cz=p ¥¥dx+ey+fz=q ¥¥gx+hy+iz=r¥end{cases}

zの係数を取ってしまいましょう。

¥begin{cases}¥frac{ax}{c}+¥frac{by}{c}+z=¥frac{p}{c} ¥¥¥frac{dx}{f}+¥frac{ey}{f}+z=¥frac{q}{f} ¥¥¥frac{gx}{i}+¥frac{hy}{i}+z=¥frac{r}{i}¥end{cases}

一つ目の式−二つ目の式、二つ目の式−三つ目の式を連立させます。

¥begin{cases}¥frac{ax}{c}+¥frac{by}{c}-¥frac{dx}{f}-¥frac{ey}{f}=¥frac{p}{c}-¥frac{q}{f} ¥¥¥frac{dx}{f}+¥frac{ey}{f}-¥frac{gx}{i}-¥frac{hy}{i}=¥frac{q}{f}-¥frac{r}{i}¥end{cases}

分母を払って整理します。

¥begin{cases}(af-cd)x+(bf-ce)y=fp-cq ¥¥(di-gf)x+(ei-hf)y=iq-fr ¥end{cases}

yに互いの係数を掛けて、二式の差を取ります。

((af-cd)(ei-hf)-(di-gf)(bf-ce))x

=((fp-cq)(ei-hf)-(iq-fr)(bf-ce))

展開・整理すると、

f(aei-ahf+cdh-dib+gbf-ceg)x

=f(pei-phf+cqh-iqb+rbf-rce)

fは共通因子だから取ってしまって、括弧の中に注目します。

見覚えありませんか?

3×3の行列式ですよ。

¥begin{vmatrix}a & b & c ¥¥d & e & f ¥¥g & h & i¥end{vmatrix}x=¥begin{vmatrix}p & b & c ¥¥q & e & f ¥¥r & h & i¥end{vmatrix}


最後に両辺を¥begin{vmatrix}a & b & c ¥¥d & e & f ¥¥g & h & i¥end{vmatrix}で割れば、xについてのクラメルの公式です。

y,zについても同様。

Q.E.D.


0割りを考慮していませんが、成分が0なら変数が少なくなりますから、

より少ない手順になるはずです。

力技の証明、完結です。

やはり、逆行列を使う方がスパッと行きますね、うん。


挑戦

それでは、一通りの解説も終わったことだし、実践して貰いましょう。

次の線型方程式系を解くべし。

¥begin{cases}2w+y=16 ¥¥z+7=2w ¥¥x=y+z ¥¥4+w=x¥end{cases}


解をw,x,y,zの順に並べれば、馴染みのある語呂になるはずです。

くれぐれも、代入法で解いてしまわないように!


さてさて、ちょっと変わったアプローチ行列に関することを書いてきたのですが、

いかがでしたでしょうか。

これで興味を持って貰って、さらに深いところへ進んで頂けると、

ぼくは、甲斐あったと泣いて喜ぶ次第でございます。

暗記事項を極力減らす書き方をしたので、

かゆい所に手が届いていない部分もあるかもしれませんが、

どうかご容赦くださいまし。

ともかくも、お疲れ様でした。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/unlow/20100206/1265487700