== 連立方程式の解き方 ==
 この頁では,未知数の個数と方程式の個数とが等しい(*)ような連立1次方程式の解き方を扱う.さらに,係数行列に逆行列が存在する場合(**)だけを扱う.

 内容的には,
(1)筆算により代数的に解く方法を簡単に振り返り

(2)Excelで解く方法
(3)wxMaximaで解く方法
を使って確かめることを考える.

(*)
 方程式の個数が未知数の個数よりも少ない連立1次方程式は,一般に不定解をもつ.この頁ではこれは扱っていない.また,方程式の個数が未知数の個数よりも多い連立1次方程式は,一般には解が存在しない.この頁ではこれも扱っていない.
 この頁では方程式の個数と未知数の個数が等しく,解がただ1通りに確定する場合のみを扱う.

(**)
 係数行列に逆行列が存在しないときは方程式の解はただ1通りには確定しない.この頁ではこれは扱っていない.


【 係数行列とは 】
○ - - - 未知数が2個のとき - - -
 x , yを未知数とする連立1次方程式…(*1)は,行列を用いて
…(*2)
のように書くことができる.
なぜなら,(行列の形が同じで)対応する成分が等しいとき,2つの行列は等しいので,(*2)式が成り立つときは
1行1列成分が等しい → ax+by=p
2行1列成分が等しい → cx+dy=q
となり,(*1)に一致するから.
 このように連立1次方程式を(*2)の形 A= で表すとき,行列係数行列という.
 このとき,未知数の組は列ベクトル(2×1行列)で表され,右辺の定数項の組は列ベクトル(2×1行列)で表される.

○ - - - 未知数がn個のとき - - -
 一般に未知数がn個 x1, x2, x3, ··· , xn の連立1次方程式
は,行列を用いて
のように書くことができ,行列の等式 A= に対応させることができる.


■連立1次方程式の解き方

 未知数がn個 x1, x2, x3, ··· , xn ,方程式がn個の連立1次方程式
は,行列を用いて
のように書くことができる.この連立方程式を係数行列Aを用いて
A=
と表すとき,Aの逆行列A−1が存在すれば,連立方程式の解は次の方法で解くことができる.(どちらでも解ける)

(1) 逆行列を用いる方法
=A−1
(2) クラメールの公式(Cramer’s fomula)による方法
xi=
※ 行列Aの行列式をdet(A)で表す.・・・|A|と書かれることも多い.

(1)の簡単な解説
 Aの逆行列A−1が存在すれば,
A=
に左からA−1を掛けると
A−1 A=A−1
ここで
A−1 A=EEは単位行列
任意のn次元列ベクトルに対してE=
だから
=A−1
(2)の解説は長くなる.
例1 次の連立方程式を解け.
(解答)
(1) 逆行列による方法
 係数行列の逆行列を求めるととなるから, …(答)
(2)クラメールの公式による方法
=−2
=−4=2
=0だから
x1= = 2x2= = -1x3= = 0 …(答)

■ Excelによる解き方
○ 上のような方法で連立方程式の解が求められるということが分かれば,実際の数値計算はExcelによって行うことができる.・・・ただし,Excelでは解は小数(または指数表示)で示されるので,
▼「解が分数になるときに,どのような分数を表しているかを調べるには工夫を要する」 …(***)
▼「解がのような無理数になるときに近似値で表された小数から元の無理数を推測するのは難しい」

(***) 右のA5:C7のように数値が分数になるときは,分母が3桁以下なら「セルの書式→分数→3桁増加」により,分数表示される.このとき,仮分数は対分数を使って表示される( 4/3 → 1 1/3 など).また,負の仮分数は整数部分にのみ符号が付く( -4/3 → -1 1/3 など)
 元の係数行列や定数項が整数で,求めた逆行列や解の分母が4桁以上の分数になるときは,分母がdet(A)になることが原因なので,det(A)倍しておくと整数係数になる・・・ただし,結果もdet(A)倍になっていることを途中で忘れてはいけない.
  A B C D E F G
1 1 2 3   2   0.000
2 1 -1 2   -1   3.000
3 0 1 1   0   -1.000
4              
5 1 1/2 - 1/2 -3 1/2   0   2.000
6 1/2 - 1/2 - 1/2   3   -1.000
7 - 1/2 1/2 1 1/2   -1   0.000



○ [逆行列による方法]で連立方程式をExcelで解くには次のようにすればよい.
(1) 行列の成分は,右図のように各セルに数値を入力する.
(2) 逆行列を求めるワークシート関数としてMINVERSE()を利用する.
(3) 行列の積を求めるワークシート関数としてMMULT()を利用し,これによって解を求めるとともに検算する.

(1) 黄色で示したように係数行列を入力する:これが行列A

 もも色で示したE1:E3の部分は,はじめは空欄にしておく.G1:G3も空白にしておく・・・これらは検算用に使う.

(2) 灰色で示した部分に行列Aの逆行列を求める.
 セルA5に =MINVERSE(A1:C3) と書き込む.

(直接入力してもよい.関数の挿入からメニューをたどって書き込んでいくときは,
fxをクリックして関数の挿入メニューを出す
・関数の分類は「すべて表示」または「数学/三角」とする
・関数名はMINVERSEとする → OK
・配列で元の行列Aの範囲を選択する)

※このとき逆行列の各成分が自動的に書き込まれるのでなくA5には逆行列の(1,1)成分(=単なる数値1つのもの)が書き込まれるので,これをA5:C7の範囲に配列として書き込むためには
 A5:C7の範囲を選択し反転表示にする
 画面上にある数式バーのどこかをポイントしてから
 Ctrl+Shiftを押しながらEnterキーを押す

(3)  次に行列の積A−1 を計算するためにE5:E7(水色の部分)に問題の右辺にあった定数項の列ベクトルを書き込む.
・「行ベクトルと行ベクトルの積」(横向きの並びと横向きの並びの積)や「列ベクトルと列ベクトルの積(縦向きの並びと縦向きの並びの積)」を求めるには=SUMPRODUCT(範囲1:範囲2)とするが,今行いたいのは「行×列=行列の各成分」という計算で,これを求める関数はMMULT(行列1:行列2)となっている.
・G5に=MMULT(A5:C7,E5:E7)と書きこむ. (直接入力してもよい.関数の挿入からメニューをたどって書き込んでいくときは,
fxをクリックして関数の挿入メニューを出す
・関数の分類は「すべて表示」または「数学/三角」とする
・関数名はMMULTとする → OK
・配列で行列 A−1の範囲を選択してから「カンマ」を入れて,次にベクトル の範囲を選択する)
※左に青で示したときと同様に,配列(行列)にするにはG5:G7の範囲を選択してから Ctrl+Shift+Enter とする.

 Excelでは数値の表示設定次第では小数が四捨五入されて整数でない数値も整数で表示されることがあるので,小数の桁も表示されるようにしておくと早合点しなくて済む.

実際に計算すると「範囲選択のミス」「関数のとり違い」「考え方の間違い」など様々な間違いが起こるので,検算しておくとよい.そのためには,元の行列行列 Aと求めた解との積が右辺の定数ベクトルになっていることを確かめればよいので,E1:E3に解のベクトルを書き込み,G1:G3にそれらの積を求めてベクトル と一致していることを確かめるとよい.
○ [クラメールの公式]で連立方程式をExcelで解くには次のようにすればよい.
・係数行列と右辺の定数項からなる列ベクトルを用意する.
・係数行列をコピーしたものを必要個数作り,各々の1列目,2列目,・・・にベクトル を上書きする.
・行列式を求める関数 MDETERM(行列の範囲) を使って,各々の行列式を求める・・・これらは単なる数字になる.
・求めたdet(A)で順に割れば答になる.
問題 次の表において黄色で示した部分が係数行列,水色で示した部分が右辺の定数項からなる列ベクトルとするき,この連立方程式の解を求めよ.
 (Web画面をドラッグ・コピーしてからExcelに貼り付けるとよい.)
(1)
2 3   3
3 4   -1
(2)
-3 2 0   -3
1 -1 2   2
4 0 5   4
(3)
2 3 -1 6   2
1 2 -3 3   0
0 1 2 1   1
1 -1 0 1   4
(解答)
(1)
-15
11
(2)
11/21
- 5/7
8/21
(3)
23
8
2
-11

■ wxMaxima による解き方
(フリーの数学用ソフトwxMaximaのインストール方法は→この頁

○[その1]…普通に連立一次方程式として解くには
【例1】
1x+2y=3
3x+4y=11

を解くには,まず方程式の数は2個と数えます.
次に,次のようにメニューをたどっていきます.
wxMaxima 上で数の積(掛け算)はアスタリスク(*)で表します

変数はカンマで区切ります
「方程式」→「連立一次方程式を解く」
→「方程式の数」として2を入力→OK
方程式1:1*x+2*y=3
方程式2:3*x+4*y=11
変数:x,y
と入力してOKボタンをクリック
[結果]⇒ [x=5,y=-1]
【例2】
2x−3y+4z=5
x+y+3z=6
3x+4y−5z=7

を解くには,まず方程式の数は3個と数えます.
次に,次のようにメニューをたどっていきます.
wxMaxima 上で数の積(掛け算)はアスタリスク(*)で表します

変数はカンマで区切ります
「方程式」→「連立一次方程式を解く」
→「方程式の数」として3を入力→OK
方程式1:2*x-3*y+4*z=5
方程式2:x+y+3*z=6
方程式3:3*x+4*y-5*z=7
変数:x,y,z
と入力してOKボタンをクリック
[結果]⇒
※wxMaximaでは分数の解も既約分数で表示されます.

【例3】



のように方程式や解に根号が含まれる問題も解くことができます.
wxMaxima 上で根号は 各々sqrt(2),sqrt(3)と入力します

出力されるときはとなります
「方程式」→「連立一次方程式を解く」
→「方程式の数」として2を入力→OK
方程式1:sqrt(3)*x+sqrt(2)*y=1
方程式2:sqrt(2)*x+sqrt(3)*y=0
変数:x,y
と入力してOKボタンをクリック
[結果]⇒
【練習用類題】
x+2y=1
2x+6y=0
⇒ x=3 , y=−1

2x−y−3z=−9
x+5y+z=14
⇒ x=1 , y=2 , z=3
−3x−y+2z=1
○[その2]…連立一次方程式を行列を使って解くには
【例1】
3x−4y=2
5x−6y=4

のような連立方程式は,係数行列を使って次のように表わせます.

この式の両辺に左から逆行列を掛けると

すなわち

したがって

一般に,左辺の係数行列をA,右辺の係数行列をBとおくと,
連立方程式
ax+by=p
cx+dy=q

は,行列を使って

と書けるので,Aに逆行列A−1が存在する限り

により直ちに解けます.

「代数」→「手入力による行列生成」

行数:2
列数:2
タイプ:一般
変数名:A
と入力してOKボタンをクリック
成分を 3 -4 5 -6 と入力する.

同様にして 「代数」→「手入力による行列生成」

行数:2
列数:1
タイプ:一般
変数名:B
と入力してOKボタンをクリック
成分を 2 4 と入力する.
wxMaxima 上で行列の積(掛け算)はドット(.)で表します

逆行列は invert()で表します


画面上で空打ちして,入力欄を作り
invert(A).B +Shift+Enter
[結果]⇒

【練習用類題】




...(携帯版)メニューに戻る

...(PC版)メニューに戻る