解の自由度 ランク | 係数行列と拡大係数行列の階数から考える
連立一次方程式の" 解の自由度 “について、行列のランク(階数)の観点から解説をしています。
連立方程式の解が存在するということの同値な条件は、その連立方程式の係数行列と拡大係数行列の階数を使って表されます。
中学の数学で出てきた「未知数の個数よりも連立方程式の個数の方が小さいときに、解が一つに決まらない」ということの数学的な根拠となる内容になります。
連立一次方程式と線形写像についての次元定理を合わせて、列ベクトルたちの一次独立と一次従属の考え方が役に立つ内容となっています。
この記事では、可換体 F 上のベクトル空間について述べています。
解の自由度 ; ランク (階数)とは
aij, bk を体 F の元とし、次のような連立一次方程式が与えられたとします。
(ただし、1 ≦ i, k ≦ m, 1 ≦ j ≦ n)
a11x1+a12x2+…a1nxn = b1,
a21x1+a22x2+…a2nxn = b2,
・・・
am1x1+am2x2+…amnxn = bm
ここで、A = (aij) という F の元を成分とする m 行 n 列の行列を考えます。
そして、x = (xs), b = (bt) (1 ≦ s ≦ n, 1 ≦ t ≦ m)という n 行 1 列の列ベクトルと m 行 1 列の列ベクトルも考えます。
m 行 n 列の行列と n 行 1 列の行列で乗法を計算すると、m 行 1 列の列ベクトルとなることから、与えられた連立一次方程式は、次の行列の乗法を使った等式に書き換えることができます。
Ax = b を (1,1) 成分から (m, 1) 成分まで、それぞれ比較したものが、与えられた連立一次方程式となっています。
この行列 A を、連立一次方程式の係数行列といいます。
また、列ベクトルを表す記号も導入しておきます。
自然数 p について、可換体 F の元を成分とする p 行 1 列の列ベクトル全体を Fp と表すことにします。
Fp は可換体 F 上の p 次元のベクトル空間(線形代数)となっています。
さらに、行列のブロック分割を考えます。
(A b) という行列 A の右端に b という列ベクトルを差し込んだ形の行列を A* と表すことにします。
この A* が、連立方程式の拡大係数行列というものです。
与えられた連立一次方程式が、F の元を解としてもつのかどうかということの必要十分条件が、係数行列と拡大係数行列のランク(階数)を使ったものとして得られます。
この証明を述べる前に、行列のランクの定義を述べておきます。
ランク rank の定義
A = (aij) を 体 F の元を成分とする m 行 n 列の行列とします。
このときに、各列をそれぞれ取り出して n 個の列ベクトルを作ります。
k 列を取り出した列ベクトルを、
ak = (aik) と置くことにします。
(ただし、1 ≦ k ≦ n です。)
ak の (1, 1) 成分が a1k,
ak の (2, 1) 成分が a2k,
・・・
ak の (m, 1) 成分が amk となっています。
このようにして、a1 から an まで n 個の列ベクトルを取り出したとき、これら n 個の列ベクトルについて、F 上において一次独立となる最大個数を行列 A のランクといいます。
rank A で、A のランクを表すこととします。
3 行 4 列といった具体的な数値を使った行列で、ランクを計算する練習問題を見たりするわけですが、その手順まで述べると長くなるので、この記事では述べないことにします。
この記事では、与えられた連立一次方程式の係数行列のランクが、どのように解をもつことと関わるのかという部分に焦点を絞って解説を進めます。
解の自由度について述べる前段階の準備として、解をもつということを特徴づけておくことが大切になります。
解の自由度 ; 解をもつとは
【定理】
aij, bk を体 F の元とし、次のような連立一次方程式が与えられたとする。
a11x1+a12x2+…a1nxn = b1,
a21x1+a22x2+…a2nxn = b2,
・・・
am1x1+am2x2+…amnxn = bm
このとき、この連立一次方程式が F の元を解にもつことの必要十分条件は、係数行列のランクと拡大係数行列のランクが一致することである。
<証明>
上で述べたように、
A = (aij) を係数行列とし、
Ax = b の形にし、
A* = (A b) を拡大係数行列とします。
そして、rank A = r と置いておきます。
ランクの定義から、r ≦ n です。
まず、連立一次方程式が解をもったときに、A のランクと A* のランクが一致することを示します。
今、rank A = r より、
A から取り出した
a1, … , an という n 個の列ベクトルのうち、r が一次独立です。
a(1), … , a(r) の r 個が一次独立で、残りの (n-r) 個のうち、一つでも列ベクトルを加えると、一次従属となってしまうという状況です。
つまり、a(1), … , a(r) の r 個の一次結合で、残りの (n-r) 個の列ベクトル a(r+1), … , a(n) が全て生成されているという状況です。
さらに、b という列ベクトルも生成されていることが分かれば、係数行列 A のランクと拡大係数行列 A* のランクが両方とも r で一致しているということになります。
与えられた連立一次方程式の解を、
x1 = t1, … , xn = tn (ti∈F) とします。
すると、
a11t1+a12t2+…a1ntn = b1,
a21t1+a22t2+…a2ntn = b2,
・・・
am1t1+am2t2+…amntn = bm となっています。
これらを a1 から an までの列ベクトルの一次結合の形に書き直すことを考えます。
行列 A からの
k 列を取り出した列ベクトルを、
ak = (aik) と置くという表記に注意します。
そして、F は可換体なので、体の乗法について交換法則が成立していることにも注意すると、次のようになります。
これで、列ベクトル b が、a1, … , an の一次結合で表されることが分かりました。
a(1), … , a(r) の r 個の一次結合で、残りの (n-r) 個の列ベクトル a(r+1), … , a(n) が全て表されていることと合わせます。
すると、a(1), … , a(r) の r 個の一次結合で、列ベクトル b が表されているということになります。
すなわち、a(1), … , a(r) の r 個の列ベクトルに b を加えると、一次従属ということです。
これで、A* = (A, b) について、A* から取り出した (n+1) 個の列ベクトルについて、一次独立なものの最大個数は r ということになります。
つまり、rank A = rank A* が示せました。
今度は、この逆を示します。
逆は表面的な記号の違いに注意
rank A = rank A* だとします。
そうすると、連立一次方程式の解が得られることを示します。
rank A = r とし、
a(1), … , a(r) の r 個が A から取り出した最大個数の一次独立な列ベクトルとします。
rank A* = r でもあるので、
a(1), … , a(r), b という (r+1) 個の列ベクトルは一次従属ということになります。
そのため、
一次従属の定義から、
p1, … , pr∈F が存在し、
p1a(1)+p2a(2)+…+pra(r) = b となります。
pr+1 = … = pn = 0 ∈F とすると、
p1a(1)+p2a(2)+…+pra(r)
+pr+1a(r+1)+…+pna(n) = b となります。
a1, … , an と a(1), … , a(n) は、並び方が替わっているかもしれません。
そこで、加法の結合律と交換律を用いて、適切に並び替えて、a1, … , an の順にしたときの ai の部分のスカラー倍を*pi と表すこととします。
*p1a1+*p2a2+…+*prar
+*pr+1ar+1+…+*pnan = b …★ということです。
つまり、
*p1, … , *pn を適切に並び替えると、
p1, … , pn となっているわけです。
※ これは、行列の列と列を交換するという基本変形に相当します。
★を (1, 1) 成分から (m, 1) まで比較すると、連立一次方程式の形となります。
a11*p1+a12*p2+…a1n*pn = b1,
a21*p1+a22*p2+…a2n*pn = b2,
・・・
am1*p1+am2*p2+…amn*pn = bm です。
これは、
x1 = *p1, … , xn = *pn が与えられた連立一次方程式の解ということを意味します。【証明完了】
この逆についての証明で、一次独立な最大個数の列ベクトルを選んで、それに一次従属な列ベクトルを合わせたときに、添え字がランダムに入れ替わっている可能性があります。
それを加法についての結合律と交換律で、配置する順番を適切に入れ替えて、はじめの連立一次方程式の形に適合させています。
具体的な数値の計算では当たり前の列と列の交換ですが、文字を用いた抽象的な証明では、先ほど述べたように難しそうな内容に思えてしまいます。
しかし、行っている内容は、
p1a(1)+p2a(2)+…+pra(r)
+pr+1a(r+1)+…+pna(n)
の項を適切に入れ替えて
*p1a1+*p2a2+…+*prar
+*pr+1ar+1+…+*pnan としたというだけです。
n 個の項の加法を計算する順番を適切に入れ替えることは、線形代数学の証明で、しばしば使われるので、慣れておくと良いかと思います。
ここからは、解の自由度についての話をします。
a11x1+a12x2+…a1nxn = b1,
a21x1+a22x2+…a2nxn = b2,
・・・
am1x1+am2x2+…amnxn = bm について、係数行列 A のランクと変数の個数 n についての関係を考えます。
示したように、rank A = rank A* のときは、連立一次方程式は解をもちます。
さらに、rank A = r < n という条件を付け加えて考えます。
そうすると、(n-r) 個の列ベクトルは、少なくとも 1 個は存在しているということになります。
この n-rank A のことを解の自由度といいます。
ここから、さらに内容をつきつめるために、さらに線形代数学の一般理論を用意します。
ランク(階数)についての細かい理論まで証明をすると、長くなるので、使う部分だけの内容をピックアップしておきます。
解の自由度 :解空間の次元を考える
【ランクについて】
可換体 F の元を成分とする m 行 n 列の行列を A とする。
このとき、
rank A ≦ m かつ rank A ≦ n となる。
すなわち、
rank A ≦ min{m, n} である。
これをちゃんと証明すると、長い理論の証明となります。
rank A = r のとき、A を適切に基本変形すると、r 次の単位行列と残りのブロックが零行列にブロック分割されるという内容を証明なしで使うことにします。
すると、ブロック分割の形から、
r ≦ m, r ≦ n ということが分かります。
この事実を使って、解の自由度についての考察をします。
ここで、斉次方程式という特別な形の連立一次方程式を考えます。
そのことから、解の自由度という数値が出てきます。
斉次型の方程式
p を任意の自然数とし、
a11x1+a12x2+…a1pxp = 0,
a21x1+a22x2+…a2pxp = 0,
・・・
am1x1+am2x2+…ampxp = 0 という連立方程式を考えます。
aij ∈F で、0 は F の加法単位元です。
x1 = … = xp = 0 のことを自明な解といいます。
この自明な解以外の解が存在するのかということが問題になることがあります。
この内容に関連する線形写像の内容について説明します。
A = (aij) と x = (xk) という列ベクトルに加えて、o という (1, 1) 成分から (m, 1) 成分まで全て 0 となっている列ベクトルの記号も導入して議論を進めます。
斉次方程式は、
Ax = o と書き換えることができます。
ここで、Fp を p 行 1 列の F の元を成分とする列ベクトル全体とします。
Fm は m 行 1 列の F の元を成分とする列ベクトル全体です。
Fp は F 上の p 次元のベクトル空間で、Fm は F 上の m 次元のベクトル空間となっています。
f : Fp → Fm を、
y∈Fp に対して、
f(y) = Ay ∈Fm と定義します。
この f は線形写像となっています。
実は、rank A は、Im f の次元と一致します。
つまり、
rank A = dim(Im f) です。
また、ker f は、
{y∈Fp | Ay = o} です。
この ker f を斉次方程式と合わせて考えているときに、解空間と呼ぶこともあります。
ここで、次元定理を使うと、
dim(ker f)+dim(Im f)
= dim(Fp) = p となります。
ここで、dim(Im f) = rank A なので、
dim(ker f) = p-rank A となります。
※ dim(ker f) のことを退化次数ともいいます。
この p-rank A は斉次方程式の解の自由度のことです。
ここからは、p = n として、自明でない解の存在について、さらに深く解説をします。
自明でない解の存在
a11x1+a12x2+…a1pxp = 0,
a21x1+a22x2+…a2pxp = 0,
・・・
am1x1+am2x2+…ampxp = 0 が与えられたとします。
m < p だとすると、
rank A = r
≦ min{m, n} ≦ m < n となります。
そのため、
ker f =
{y∈Fp | Ay = o} の次元について、
dim(ker f) = n-r が 1 以上ということになります。
したがって、ker f には、o とは異なる元 x が存在します。
この x は、
Ax = o を満たしているので、
x の成分たちが、斉次方程式の解となっているわけです。
連立一次方程式の解についてですが、行の基本変形と、適切な列の入れ替えを使って、r 次の単位行列を出現させることで、解を求めます。
はじめに述べた内容について、行列の基本変形を行った形を述べておきます。
任意定数を含んだ解
a11x1+a12x2+…a1nxn = b1,
a21x1+a22x2+…a2nxn = b2,
・・・
am1x1+am2x2+…amnxn = bm が与えられたとします。
x* = (xi) を 1 ≦ i ≦ n については、xi は与えられた連立方程式に現れている xi とし、i が n+1 のときには、-1∈F とします。
右辺を左辺に移項して、右辺をすべて 0 にした連立一次方程式を拡大係数行列を使って表します。
すると、拡大係数行列を用いて、
A*x* = o と書き換えることができます。
※ 右辺の o は (n+1, 1) 成分も 0 の列ベクトルです。
移項を考慮するために、
Ax = o の x を x* に修正したものになります。
rank A = rank A* = r で、
r ≦ m < n だとします。
これは、方程式の未知数の個数 n よりも、方程式の個数が少ないという状況です。
A*x* = o について、
(n+1)-rank A*
= 1+(n-rank A*)
≧ 2 となっています。
そのため、
{y∈Fn+1 | A*y = o} は 2 次元以上となっています。
このことから、A*x* = o を満たす x* として、
(1, 1) 成分から (n, 1) 成分のうち、少なくとも1つは 0 でない列ベクトルが存在するということになります。
具体的に解を求めるときには、A* について行の基本変形を行い、解を求めます。
ただし、適宜、(n+1) 列を除く列について、列の入れ替えも行って、上で述べたような添え字を付け替えるというようなことも行うとします。
すると、A* を基本変形して以下のようにしてできる行列 B を用いて、Bx* = o という形に書き換えることができます。
dr+1 = … = dn = 0 となっています。
A*x* =o を、
Bx* = o に書き換えました。
xr+1 = t1, … , xn = tn-r をF の元からなるパラメータとします。
そして、Bx* = o の左辺について行列の計算をして、右辺と各成分を比較することで、x1, … xr をパラメータを用いて表すことができます。
このときに登場する (n-r) 個というパラメータの個数が、解の自由度というわけです。
こんな B の形は抽象的な議論で見ると大変ですが、具体的な数値を用いた手頃なサイズの行列で基本変形の練習をしておくと良いかと思います。
他の行列についての記事として、
対角化という記事も投稿をしています。
それでは、これで今回の記事を終了します。
読んで頂き、ありがとうございました。