静岡理工科大学 菅沼ホーム SE目次 索引

線形代数

    1. 1.ベクトル( Vector )
      1. 1.1 定義とその演算
      2. 1.2 ベクトル空間と基底
      3. 1.3 内積と外積
    2. 2.行列( Matrix )
      1. 2.1 定義
      2. 2.2 様々な行列
      3. 2.3 行列の演算
    3. 3.行列式
      1. 3.1 偶順列と奇順列
      2. 3.2 行列式の定義
      3. 3.3 行列式の性質
      4. 3.4 行列式の展開
    4. 4.連立一次方程式と逆行列
      1. 4.1 連立一次方程式の解法 −掃き出し法(ガウスの消去法)−
      2. 4.2 逆行列の定義
      3. 4.3 逆行列の求め方
        1. 4.3.1 掃き出し法
        2. 4.3.2 余因子の利用
    5. 5.行列とベクトル
      1. 5.1 行列の階数
      2. 5.2 線形写像(線形変換)
      3. 5.3 アフィン変換
    6. 6.行列の対角化
      1. 6.1 固有値と固有ベクトル
      2. 6.2 行列の対角化
      3. 6.3 二次形式

1.ベクトル( Vector )

1.1 定義とその演算

  例えば,温度や長さなどは,単位は別として,その大きさだけで表現できます.しかし,力のように,大きさだけでなく,その向きが重要になる場合があります.そのような場合に使用されるのが( n 次元)ベクトルです.ベクトルは,

のように定義され,a1 a2 ・・・ an をベクトルの成分,||a|| をベクトルの大きさ(ノルム)と呼びます(右図は,2 次元ベクトル a = [x y]T の例であり,「 T 」は行と列を入れ替える操作である転置を表す).それに対応して,大きさだけを持った量をスカラーと呼びます.

  ある定点 O を始点とするベクトルだけについて考える時,それらのベクトルを O を始点とする固定ベクトルといい,始点を自由に取ったベクトルを自由ベクトルといいます.特に,大きさが 1 であるベクトルを単位ベクトル,大きさが 0 のベクトル(方向は定まらない)を 0 ベクトルと呼びます.ベクトル a と同じ方向の単位ベクトルは a/||a|| と表現でき,また,ベクトル a と大きさが等しく向きが反対であるベクトルを ーa で表すと,

a + (ーa) = 0

という関係が成立します.

  今まで表現してきたように,一般にベクトルは英小文字の太字で表現されます.しかし,始点と終点によってベクトルを表現したいようなとき,例えば,始点が A,終点が B であるような場合は, のような形で表現することも可能です.

  ベクトルの演算は,後に述べる行列の演算と同じように,加算と減算は成分どうしの加算と減算,スカラー倍はすべての成分をスカラー倍したものになります.例えば,a = [a1 a2]Tb = [b1 b2]Tの場合,c = a + b,及び,ka は以下のようにして計算でき,その幾何学的イメージは右図のようになります.

1.2 ベクトル空間と基底

[定義] 線形空間ベクトル空間)  集合 V の任意の元 ab に対して,それらの和及びスカラー倍が集合 V の元となり,かつ,それらが以下に示す性質を満たす時,V を実数全体の集合 R 上の線形空間(ベクトル空間)という.

  1. (1) 結合則: (a + b) + c = a + (b + c)

  2. (2) 交換則: a + b = b + a

  3. (3) 0 ベクトルの存在: a + 0 = 0 + a = a を満たす元 0 がただ一つ存在する

  4. (4) 逆元の存在: a + x = x + a = 0 を満たす元 x = -a がただ一つ存在する

  5. (5) 1・a = a

  6. (6) k(a + b) = ka + kb  k:実数

  7. (7) (m + n)a = ma + nb  m,n:実数

  8. (8) (mn)a = m(n)a  m,n:実数

  1.1 節で述べた n 次元ベクトルの集合を Rn で表すと,明らかに,Rn はベクトル空間となります.

  まず,簡単のため,2 次元ベクトル空間 R2 について考えてみます.もし,ベクトル a とベクトル b が平行でなければ,右図に示すように,2 次元平面上の任意のベクトル c を,次式に示すように,各ベクトルをスカラー倍して加えたもの(ベクトルの線形結合)によって表現できます.この概念をより一般的にしたものが次の定義です.

c = k1a + k2b

[定義] 線形従属一次従属)と線形独立一次独立)  n 個のベクトル ai ( i = 1, 2, ・・・, n )の線形結合一次結合)が 0 となる式,

c1a1 + c2a2 + ・・・ + cnan = 0

において,同時には 0 でない実定数 ci が存在する場合(あるベクトルが,他のベクトルの線形結合で表現できる場合),n 個のベクトルは線形従属(一次従属)であるという.また,同時には 0 でない実定数 ci が存在しない場合,n 個のベクトルは線形独立(一次独立)であるという.

  ベクトルの線形従属と線形独立については,先に述べたように,幾何学的なイメージを浮かべると分かりやすいと思います.2 次元平面上において,2 つのベクトルが線形従属であることは,片方のベクトルをスカラー倍すれば他方のベクトルになること,つまり,2 つのベクトルが平行であることを意味しています.先の図に示した 2 つのベクトル ab は平行ではありませんので,線形独立になります.また,2 次元平面上では,3 つ以上のベクトルが線形独立になることはあり得ません.なぜなら,3 つの内 2 つのベクトルが線形独立であれば,先の図に示したように,他の 1 つのベクトルはそれら 2 つのベクトルの線形結合によって表現できるからです.つまり,先の式において,同時には 0 でない実定数 c1,c2,c3 が存在するからです.一般的に,n 次元ベクトル空間では.最大 n 個の線形独立なベクトルを定義できます.

  一般的に,n 次元ベクトル空間 Rn に含まれる n 個のベクトル a1a2,・・・, an が線形独立であり,かつ,Rn 内の任意のベクトル xa1a2,・・・, an の線形結合で表せる時,a1a2,・・・, an を n 次元ベクトル空間 Rn基底と呼びます.例えば,3 次元ベクトル空間 R3 の場合,

は,明らかに R3 の基底になり,3 次元ベクトル空間 R3 内の任意のベクトル x は以下のように表現できます.

1.3 内積と外積

[定義] 内積外積  2 つのベクトル ab が与えられ,それらのなす角を θ としたとき,ベクトル ab の内積(スカラー積) ab を以下のように定義する.

ab = ||a|| ||b|| cos θ = a1b1 + a2b2 + ・・・ + anbn

また,外積(ベクトル積) a×b を以下のように定義する(右図の赤いベクトル).

a×b = (||a|| ||b|| sin θ)e

ただし,ベクトル e は,ベクトル a をベクトル b に重なるように回転したとき(θ < π),右ねじが進む方向に向かう単位ベクトルである(ベクトル ab を含む平面に直交するベクトル).

  内積は,その定義からも明らかなように,2 つのベクトルが直交( θ = π / 2 )するとき,0 になります.一般に,内積が 0 であることは,2 つのベクトルが直交するための必要十分条件となります.

  外積の大きさは,ベクトル ab で構成される平行四辺形の面積になります.具体的には,

a×b = [a2b3-a3b2 a3b1-a1b3 a1b2-a2b1]T

と記述でき,定義の箇所で示した図においては,

a×b = [0 0 a1b2-a2b1]T

となります.また,ca×b の内積,

c・(a×b

は,右図からも明らかなように,平行六面体の体積になり,その値は,

a1b2c3 + a2b3c1 + a3b1c2 - a1b3c2 - a2b1c3 - a3b2c1

となります.

2.行列

2.1 定義

[定義] 数値を以下に示すように,n 行 m 列の形に並べたものを,n 行 m 列行列n×m 型行列)という.

ここで,aij を行列 A(i,j) 要素(i,j) 成分i 行 j 列の成分等という.特に,1 行 m 列の行列を m 次の行ベクトル,また,n 行 1 列の行列を n 次の列ベクトル(単に,ベクトル)という.

  行列は,様々な分野で使用されますが,ここでは,連立一次方程式を取り上げてみます.例えば,
2x +  y +  z = 7
 x +  y -  z = 2
3x + 2y - 2z = 5
		
のような連立一次方程式は,3 つの行列,

を導入すると,
Ax = b
		
のように,非常に簡単に記述できます.記述方法が簡単になることも,行列を使用する大きな利点です.この方程式の解も,逆行列を利用して,以下のように簡単に記述できます.なお,行列の演算や逆行列については,後の節や章を参照してください.
x = A-1b
		
2.2 様々な行列

  行列の要素や形によって,以下のような行列(言葉)が存在します.

  1. 0 行列  すべての要素が 0

  2. 実行列  aij が実数( aij は行列の i 行 j 列要素とする)

  3. 複素行列  aij が複素数

  4. 転置行列  B = AT ( bij = aji )  行と列を入れ替えた行列

  5. 正方行列  n 行 n 列の行列

    1. 主対角線  左上から右下に向かう対角線

    2. 対角成分  aii

    3. トレース  tr A = Σ aii  (対角成分の和)

    4. 対角行列  対角成分以外の成分がすべて 0 である行列

    5. 単位行列  対角成分が 1 である対角行列( I,または,E で表す)

    6. 三角行列

      • 上三角行列  i > j に対し,aij = 0 である行列
      • 下三角行列  i < j に対し,aij = 0 である行列

    7. 対称行列  A = AT

    8. 交代行列  A = -AT (対角成分はすべて 0)

    9. 直交行列  ATA = AAT = I

2.3 行列の演算

  この節では,行列の演算について説明します.行列の演算には,以下のようなものがあります.

  1. 定数倍  各要素の値が定数倍されます.

    B = k A   bij = k aij

  2. 加法と減法  同じ型の(行及び列の数が同じ)行列に対してだけ定義されます.

    和  C = A + B   cij = aij + bij
    差  C = A - B   cij = aij - bij

  3. 積  可換ではありません.つまり,ABBA が定義できたとしても,一般的に,AB = BA とはなりません.

       A: m × n, B: n × l のときだけ定義でき,結果 C は,m × l となる.

      

  4. 行列のべき乗

    A0 = I, A1 = A, A2 = AA, A3 = A2A,・・・

  5. 行列演算の性質

    1. A + 0 = 0 + A = A

    2. A + (-A) = (-A) + A = A - A = 0

    3. (AB)C = A(BC)

    4. A(B + C) = AB + AC

    5. (A + B)C = AC + BC

    6. IA = AI = A

    7. 0A = A0 = 0

    8. ABBA

    9. ab = aTb

3.行列式

3.1 偶順列と奇順列

  行列式の定義に入る前に,まず,順列の定義を行っておきます.

[定義] 一つの順列において,2 要素の順序が,標準の順列における同じ 2 要素の順序と異なるときには,その 2 要素の間には一つの転位または転倒があるという.一つの順列において,転位をもつ 2 要素の組数をその順列の転位の数という.そして,偶数個の転位をもつ順列を偶順列,奇数個の転位をもつ順列を奇順列という.

  上記の定義に従い,例えば,標準の順列を ( 1 2 3 ) とした場合,以下のようになります.

( 1 2 3 )  偶順列,転位の数は 0
( 2 3 1 )  偶順列,転位の数は 2
( 1 3 2 )  奇順列,転位の数は 1
( 3 2 1 )  奇順列,転位の数は 3

3.2 行列式の定義

[定義] n × n ( n 次)の正方行列 A

の各行及び各列から必ず 1 個,そして,唯 1 個の要素を取って,これを a,b,・・・,k の順に並べて積を作ると,この積の中には,n 個の文字 a,b,・・・,k,及び,添え字 1,2,・・・,n は必ず一度,そして,唯一度ずつ現れる.その積は,aαbβ・・・kλ のような形をもち,αβ・・・λ は,1,2,・・・,n の一つの順列とみなすことができる.

  そこで,順列 αβ・・・λ が偶順列の時には,積 aαbβ・・・kλ に + をつけ,奇順列の時には - をつけて作ったすべての積( n! 個存在する)の和を作ると多項式が得られる.この多項式を,行列 A行列式といい,以下のように表す.

例2.1: n = 2 の場合,標準の順列 (1 2) に対し,積は,

偶順列 (1 2)
奇順列 (2 1)

であり,行列式は以下のようになります.

= a1b2 - a2b1

幾何学的には,右図に示す平行四辺形の面積を表しています.

例2.2: n = 3 の場合,標準の順列 (1 2 3) に対し,積は,

偶順列 (1 2 3), (2 3 1), (3 1 2)
奇順列 (1 3 2), (2 1 3), (3 2 1)

であり,行列式は以下のようになります.


= a1b2c3 + a2b3c1 + a3b1c2 - a1b3c2 - a2b1c3 - a3b2c1

幾何学的には,右図に示す平行六面体の体積を表しています.

  n = 2,及び,n = 3 の場合は,下の図に示すように,「青線で結ばれた要素を掛け合わせて正の符号,赤線で結ばれた要素を掛け合わせて負の符号をつける」といったように記憶すると覚えやすいと思います.

  一般に,n 次の正方行列 A の行列式の値は,行列 A を構成する n 個の行ベクトル(列ベクトル)が,線形従属の時 0 になり,線形独立の時 0 以外の値になります.

3.3 行列式の性質

  行列式には,以下のような性質があります.

  1. 行と列を入れ換えても値は変わらない.

  2. 二つの行(列)を入れ換えると符号だけが変化する.

  3. ある行(列)のすべての要素が二つの数の和で表現できるときは,その行(列)の各要素を行(列)とし,他の行(列)の要素はすべて同じである二つの行列式の和として表現できる.

  4. ある行(列)を k 倍すると全体の値が k 倍になる.

  5. ある行(列)の各要素に他の行(列)の対応する要素の k 倍を掛けて加えても行列式の値は変わらない.

  6. ある行(列)のすべての要素の値が 0 の時は,行列式の値も 0 になる.

  7. 二つの行(列)の対応する要素が比例関係にあるときは,行列式の値は 0 になる.

  8. ある行(列)のすべての要素が,他のいくつかの行(列)の線形結合で表現可能なとき,例えば,列 k がそれ以外のいくつかの列の和,

       ak = ciai + cjaj + ・・・ + cmam

    として表現可能なとき,行列式の値は 0 になる.

3.4 行列式の展開

[定義] 行列式において,一つの要素を含む行と列を除いた残りの要素で作った行列式をその要素の小行列式という.たとえば,i 行 j 列要素の小行列式を Mij のように表す.また,

Aij = (-1)i+jMij

を,要素 (i,j) の余因数余因子)という.

  n が 2 や 3 の場合は,例 2.1 や例 2.2 のようにして行列式の値を計算できますが,n の値が大きくなると,可能な積の組み合わせ数が膨大になり,そのような方法で計算することはほとんど不可能になります.

  行列式 |A| は,余因子を使用して,任意の行 r(列 s)で以下のように展開可能です.この関係を利用し,できるだけ 0 である要素が多い行(列)で展開することによって,大きな n に対する行列式の値を計算することができます(余因子の次数が 3 より大きければ,さらにそれを展開する).

|A| = ar1Ar1 + ar2Ar2 + ・・・ + arnArn   第 r 行で展開
  = (-1)r+1ar1Mr1 + (-1)r+2ar2Mr2 + ・・・ + (-1)r+narnMrn

  = a1sA1s + a2sA2s + ・・・ + ansAns   第 s 列で展開
  = (-1)1+sa1sM1s + (-1)2+sa2sM2s + ・・・ + (-1)n+sansMns

  例として,3 次の行列式を第 1 行で展開してみます.


= a1b2c3 + a2b3c1 + a3b1c2 - a1b3c2 - a2b1c3 - a3b2c1

4.連立一次方程式と逆行列

4.1 連立一次方程式の解法 −掃き出し法(ガウスの消去法)−

  最初に,2.1 節で示した連立一次方程式 Ax = b,つまり,
2x +  y +  z = 7
 x +  y -  z = 2
3x + 2y - 2z = 5
		
を解いてみて下さい.恐らく,ある式を何倍かして他の式から引く等の処理によって,一つの式に含まれる変数の数を減らしながら解いていったかと思います.ここで述べる掃き出し法は,その処理を機械的に行い,与えられた方程式を最終的に,

のような形に変換し解を求めようとするものです.具体的に,上の例を使用して,掃き出し法によって解を求めてみます.まず,方程式の左辺の係数 A 及び右辺 b からなる以下に示すような行列を定義します.

この行列は,上の連立一次方程式を一つの行列で表現したものであり,この行列を操作することは,方程式自身を操作することと同等になります.以下に示すのが,具体的な手順です.

  1. 1 行目と 2 行目を入れ替える( 1 番目の式と 2 番目の式を入れ替える.以下同様)

  2. 1 行目の 2 倍を 2 行目から引く

  3. 1 行目の 3 倍を 3 行目から引く

  4. 2 行目を -1 倍する

  5. 1 行目から 2 行目を引く

  6. 3 行目に 2 行目を加える

  7. 3 行目を -2 でわる

  8. 3 行目の 2 倍を 1 行目から引く

  9. 3 行目の 3 倍を 2 行目に加える
  以上のように,目的とする形に変形でき,4 列目が与えられた方程式の解になります.

4.2 逆行列の定義

  2.3 節における行列の演算において,除算に関する説明をしませんでしたが,除算に相当するものが,ここで説明する逆行列です.

[定義] A が n×n の正方行列であり,AX = XA = I となるような正方行列 X が存在するとき,XA逆行列といい,A-1 で表す.このとき,正方行列 A正則であるといい,A正則行列という.逆行列が存在するための必要十分条件は,

|A| ≠ 0

となる.

4.3 逆行列の求め方

4.3.1 掃き出し法

 行列 A,および,その逆行列を,

とおくと,AA-1 = I であることから,逆行列を求めるためには,

のような 3 つの連立一次方程式を解けば良いことになります.具体的には,

の左側の 3 行 3 列部分が単位行列になるように掃き出し法を使用して変形してやれば,右側の 3 行 3 列部分が行列 A の逆行列になります.では,具体的に,4.1 節で使用した連立一次方程式の係数行列 A の逆行列を求めてみます.まず,行列 A と単位行列からなる

を定義し,以下に示すような手順を実行していきます.

  1. 1 行目と 2 行目を入れ替える( 1 番目の式と 2 番目の式を入れ替える.以下同様)

  2. 1 行目の 2 倍を 2 行目から引く

  3. 1 行目の 3 倍を 3 行目から引く

  4. 2 行目を -1 倍する

  5. 1 行目から 2 行目を引く

  6. 3 行目に 2 行目を加える

  7. 3 行目を -2 でわる

  8. 3 行目の 2 倍を 1 行目から引く

  9. 3 行目の 3 倍を 2 行目に加える

  この結果を利用して,先に挙げた連立一次方程式,
Ax = b
	
		
を解いてみます.この方程式の解は,
	x = A-1b
		
となりますので,上で求めた逆行列

b に掛けることによって,以下に示す解が得られます.

  コンピュータによって連立1次方程式を解くような場合,上に述べたように,行列 A の逆行列を求め,その結果を b に掛けるといったような操作は行いません.詳細については,「数値計算」の中の「1.連立 1 次方程式と逆行列」を参照して下さい.

4.3.2 余因子の利用

  行列 A の逆行列は,余因子を利用して,以下のようにしても計算できます

ただし,adj A は,A余因子行列といい,行列 A の i 行 j 列要素の余因子 Aij を j 行 i 列要素( i 行 j 列要素でないことに注意)とする行列です.

  例えば,

の場合,その逆行列は,以下のようになります.

具体的に,4.3.1 節で使用した行列,

の逆行列は以下のようにして求めることができます.

5.行列とベクトル

5.1 行列の階数

[定義] n×m の行列 A から,任意に r 個の行と r 個の列をとって,その交わりの上にある要素をそのままとって作った r 次の行列式をAの r 次の小行列式という.r 次の小行列式の中には 0 でないものが少なくとも一つあって,(r+1) 次以上の小行列式はいずれも 0 であるとき,行列 A階数ランク,または,)は r であるという.そして,A の階数を

r = Rank A

で表す.また,行列 A の階数は,行列 A の線形独立な列(行)ベクトルの数とも言える.従って,

Rank A ≦ n, m

という関係がある.

  例えば,2 つの行列

において,行列 A の場合は,1 列目,2 列目,1 行目,2 行目からなる小行列式の値が 0 ではありません.従って,その階数は 2 となります.行列 B の場合,いずれの列を組み合わせても,2 次の小行列式は 0 となってしまいます.しかし,明らかに,1 次の小行列式(各要素に相当)は 0 ではありません.従って,階数は 1 となります.

  次に,ベクトルの線形従属,線形独立の面から階数について検討してみます.行列 B の 1 列目と 2 列目のベクトル(他の列でも同様)を 2 次元平面上に描けば,2 つのベクトルは平行になります.つまり,2 列目のベクトルは,1 列目のベクトルを 2 倍することによって表現できます.このように,行列 B においては,線形独立なベクトルの数は 1 つだけです.従って,階数も 1 になります.また,行ベクトルの立場から見ても,1 行目と 2 行目は同じベクトルです.そのため,線形独立なベクトルの数は 1 となり,その階数も 1 となります.

  しかし,行列 A の 1 列目と 2 列目( 1 列目と 3 列目でも同様)のベクトルを 2 次元平面上に描けば,2 つのベクトルは平行とはならず,これらのベクトルは線形独立になります.しかし,3 列目のベクトルを含めると,それら 3 つのベクトルは線形独立にはなりません.従って,線形独立なベクトルの数は 2 となり,階数も 2 となります.また,行ベクトルの立場から見ても,1 行目と 2 行目は独立なベクトルとなるため階数も 2 となります.

  n 次の正方行列 A の行列式の値は,行列 A を構成する n 個の行ベクトル(列ベクトル)が,線形従属の時 0 になり,線形独立の時 0 以外の値になります.階数の立場からいえば,n 次の正方行列 A の行列式の値は,行列の階数が n 未満であるとき 0 になり,階数が n の時 0 以外の値になります.つまり,

|A| ≠ 0 ⇔ Rank A = n

のような関係が成立します.

  行列によっては,0 とならない小行列式を見つけにくい場合があります.そのような場合は,掃き出し法と似た方法によって対角要素より下にある要素を 0 とするような操作を繰り返すことによって階数を求めることができます.例えば,行列,

の階数を求める場合は以下のようになります.

  1. 3 行目から 1 行目の 2 倍を引く

  2. 3 行目に 2 行目を加える

5.2 線形写像(線形変換)

[定義] 線形写像(線形変換)  集合 V,W が R 上の線形空間(ベクトル空間)であるとき,写像 f : V → W が,任意の ab ∈ V,及び,k ∈ R に対して,以下の条件を満たす時,f を V から W への線形写像(線形変換)という.

  1. (1) f(a + b) = f(a) + f(b)

  2. (2) f(ka) = kf(a)

f(V) = { f(x) | x ∈ V }

は,線形空間 V 上の任意の元 x に対する線形写像 f による像の集合であり,一般的には,線形空間 W の部分空間となります.また,Rn を n 次元ベクトル空間,Rm を m 次元ベクトル空間とした時,線形写像 f : Rn → Rm に対して,m 行 n 列行列 A がただ一つ定まり,

y = f(x) = Ax  ( x ∈ Rny ∈ Rm

と表せます.このとき,行列 A を線形写像 f の表現行列と呼びます.

  一般的に,ベクトル x に行列 A を掛ける演算を行うと,ベクトルの向きや大きさが変化します.しかしながら,常にそのようになるとは限りません.ベクトルとそれにどのような性質の行列を掛けるかによって,その結果は異なってきます.例えば,ベクトルが 0 ベクトルの場合は,どのような行列を掛けても変化は起こりません.

  以下,様々なタイプの行列とその演算について考えてみます.最初に,以下に示すような行列 A による操作を取り上げます.

このようなタイプの行列の場合,下に示す例とその結果を示す右図から明らかなように,A が単位行列の場合(ケース(1))は,向き,大きさとも変化しません.A が対角行列で,かつ,対角要素の値が同じ場合(ケース(2))は,大きさだけが変化します.また,対角行列で,かつ,対角要素の値が異なる場合(ケース(3))は,ベクトルの対応する成分がその数値倍されます.このように,このタイプの行列の乗算はベクトルの拡大・縮小操作に対応します.

  ただし,a や d が負の場合は,拡大・縮小に加え,反転(鏡映)の操作が加わります.下に示す例において,(4) は y 軸に関した鏡映(左図の緑),また,(5) は x 軸に関した鏡映(左図の赤)になっています.

  (6)に示す例は,行列のタイプが異なっています.この操作を行うと,左図に示すような変換が行われます.この例では,行列要素の値が 2 ですので大きさも変化しますが,1 の場合は,(4) や (5) の場合のように鏡映になりますが,x 軸や y 軸ではなく,45 度の直線に対する鏡映になります.

  次に取り上げるのは,剪断(スキュー)操作です.剪断操作は,わかりにくい操作ですが,図形であれば,右図に示すように,平行性を保ったままひずませる操作です.変換前の四角形(右図における黒の四角形)の頂点の座標を,(0, 0),(2, 0),(2, 1),(0, 1) とすれば,原点を除いた他の頂点は次に示す例のように変換され,(7) の変換に対応するのが右図の緑の四角形,(8) の変換に対応するのが右図の赤の四角形になります.なお,図における tan(θ) が,各々,b または c の値となります.

  また,行列を掛けることによって,ベクトルの向きだけを変化させる演算も可能です.下に示す演算は(角度の単位は度),ベクトルを時計方向に 30 度回転(座標軸を反時計方向に 30 度回転)した結果となります(右図参照).

  今までの例に挙げた行列の場合,ベクトル x が 2 次元空間を張れば,つまり,2 次元空間のすべてのベクトルを表現できれば,ベクトル y も 2 次元空間を張ることになります.しかし,行列の種類によっては,かならずしもそのようにはなりません.例えば,(10) の例においては,2 次元空間上のすべてのベクトルが 45 度の直線上のベクトルに変換されます,つまり,45 度の直線上に射影されます.また,(11) の例においては,すべてのベクトルが y 軸上のベクトルに変換さます.一般的に,行列 A のランクが 2 より小さい場合は,2 次元空間の部分空間に射影されることになります.

5.3 アフィン変換

  以上述べた行列の性質は,アフィン変換という形で,コンピュータグラフィック( CG )の分野で多く利用されています.アフィン変換は,線型変換(回転,拡大・縮小,剪断)と平行移動の組み合わせです.一般的に,

Ax + t

の形で記述できます.ここで,t は平行移動量を表すベクトルです.なお,ユークリッド空間内のアフィン変換は以下に示すような性質を持ちます.

  一般に,2 次元ベクトルに対するアフィン変換は,下に示すように,次元を 1 つ上げた 3 次元の行列及びベクトルで表します.この行列の左上の 2 行 2 列が行列 A を,3 列目の上 2 つの要素がベクトル t に対応します.

  描画などの機能をその仕様に含んでいるほとんどのプログラミング言語には,アフィン変換を実行するためのクラスや関数(メソッド)が定義されています.例えば,

ActionScript における Transformクラス,Matrixクラス
Java における AffineTransformクラス,AffineTransformOpクラス
JavaScript おける transformメソッド

などが該当します.アフィン変換の例において,右側に示す緑色の図形は,左側に示す図形を,座標軸を (150, 0) に移動した後,30 度時計方向に回転して描いた図形です.この例においては,JavaScript におけるアフィン変換を実行するメソッド transform を使用しています.

6.行列の対角化

6.1 固有値と固有ベクトル

[定義] n 次の正方行列 A に対して,0 でないベクトル x があって,

Ax = λx

が成り立つとき( x0 の解をもつとき),λ を A固有値x固有ベクトル(一般的に,一意には決まらない.固有ベクトルをスカラー倍したものも固有ベクトルになる)という.したがって,固有値は,

|A - λI| = 0 (固有方程式,又は,特性方程式という)

の根となる.

  行列の演算の節で述べたように,ベクトルに行列を乗ずるとベクトルは様々に変化します.固有ベクトルは,乗数倍になるだけの非常に特殊なベクトルであるといえます.なお,実対称行列(要素がすべて実数の対称行列) A には,以下のような性質があります.

  1. 固有値はすべて実数である.

  2. 二つの異なる固有値に対する固有ベクトルは直交する.
    ベクトルの直交: 2 つのベクトルの内積が 0 ( 2 つのベクトルのなす角が 90 度)

  3. 適当な直交行列 L によって,LTAL が対角行列になるようにすることができる.

  先に述べた階数の面から見ると,階数は 0 でない固有値の数に一致し,行列のすべての列(行)ベクトルは,0 でない固有値に対応した線形独立な固有ベクトルの線形結合で表すことができます.

  以下,具体的な固有値の求め方について説明していきます.まず,行列,

の固有値を求めてみます.固有方程式,

より,行列 A の固有値は,λ = 3, 2 となります.まず,λ = 3 に対する固有ベクトル x = [a, b]Tは,式,

を満足します.この式より,

a - 2b = 0
a - 2b = 0

なる関係が得られます.しかし,これらの式は明らかに独立ではありません.従って,固有ベクトルは一意には決まりません.つまり,a = 2b という関係を満たすすべてのベクトル,

が固有値 3 に対する固有ベクトルになります.一般的には,単位ベクトルで表されることが多く,例えば,

のように表されます(各要素を -1 倍したものでも良い).同様に,λ = 2 に対する固有ベクトルは,上と同様の処理から得られる a = b という結果から,以下のようになります.

  次に,行列,

の固有値を求めてみます.固有方程式,

より,行列 A の固有値は,λ = 3, 2, 1 となります.まず,λ = 3 に対する固有ベクトル x = [a, b, c]Tは,式,

を満足します.この式より,

3a + b + c = 3a
b = 3b
2b + 2c = 3c

なる関係が得られます.先の場合と同様,固有ベクトルは一意には決まりません.b = c = 0 を満たすすべてのベクトル( a は任意)が固有値 3 に対する固有ベクトルになります.単位ベクトルで表せば,

となります.次に,λ = 2 に対する固有ベクトルは,上と同様の処理から得られる

3a + b + c = 2a
b = 2b
2b + 2c = 2c

という関係から,固有ベクトルは,

となります.さらに,λ = 1 に対する固有ベクトルは,同様の処理から得られる

3a + b + c = a
b = b
2b + 2c = c

という関係から,固有ベクトルは,

となります.

6.2 行列の対角化

[定理] n 次の正方行列 A が n 個の異なる固有値 λ1,λ2,・・・,λn を持ち,それぞれの固有値に対する固有ベクトルが x1x2,・・・,xn であったとする.このとき,これら n 個のベクトルを列に持つ行列 P = [x1x2,・・・,xn]によって,行列 A を以下に示すように対角行列に変換することができる.

  例えば,行列 A の固有値及び固有ベクトルは以下のようになります.

従って,以下のようにして対角化することができます.

  また,行列 B は実対称行列であり,その固有値及び固有ベクトルは以下のようになります(固有ベクトルは正規化してある).

5.1 節で述べましたように,実対称行列は,適当な直交行列 L によって,LTBL が対角行列になるようにすることができます.実際,上で得た固有ベクトルを列に持つ行列 P は直交行列になります.従って,以下のようにして対角化することができます.

  固有方程式が重根を持つ場合,つまり,複数の固有値が一致した場合は,常に対角化できるとは限りません.しかしながら,以下に示すような k 次の正方行列,

を導入することによって,この行列を対角要素に持つ行列に変換することができます.この変換された行列をジョルダン標準形と呼びます.例えば,3 次の正方行列の場合は,以下に示すいずれかのジョルダン標準形に変換することが可能です.このように,今まで述べたきた対角化は,ジョルダン標準形の特別な場合に相当します.その変換方法に関しては,割愛します.

  

6.3 二次形式

[定義] n 次の実対称行列 A と n 次元ベクトル x に対して,

A(x) = xTAx = ΣΣaijxixj

を行列 A に対する二次形式という.すべての x に対して,二次形式が非負であるとき,つまり,

xTAx ≧ 0,  ∀x ∈ Rn

のとき,A半正定値( positive semidefinite ),あるは,非負定値( nonnegative definite )であるという.また,すべての x0 に対して二次形式が正であるとき,つまり,

xTAx > 0,  ∀x0 ∈ Rn

のとき,A正定値( positive definite )であるという.正定値,及び,半正定値は,行列 A のすべての固有値が 0 より大きい,及び,0 以上であるということに対応する.

  例として,2 次の実対称行列で,すべての固有値が正の場合(多変量解析によく現れる分散共分散行列の場合は,このようになります)について検討します.そのような行列に対し,次のような二次形式を考えます.

xTAx = a11x2 + 2 a12xy + a22y2 = c > 0, ただし,x = [x y]T

  この式は,a122 - a11a22 < 0 で,かつ,a11(a11a22c - a122c) > 0 の場合,楕円の方程式になります.行列 A の固有値を,小さい方から λ1, λ2 とすると,楕円の長軸の方向が λ1 に対する固有ベクトルの方向,また,短軸の方向が λ2 に対する固有ベクトルの方向になります.さらに,短軸と長軸の長さの比が,(λ2 / λ1)0.5 となります.

  例えば,次に示すような行列について考えてみます.行列 A は実対称行列であるため,固有値は実数であり,かつ,二つの固有ベクトルが直交しているのが分かると思います.なお,固有ベクトルはその大きさが 1 になるように正規化してあります.

この例の場合,c = 1 とすると,

xTAx = x2 + xy + y2 = 1, ただし,x = [x y]T

  

のような楕円の方程式になります(下図参照).

  また,特殊な例として,次に示すような行列について考えてみます.

この例の場合,c = 1 とすると,

である楕円の方程式

x2 + 2y2 = 1

になります(右図参照).

  先の例においても,座標を適当に回転させれば上記のような表現に変換することができます.固有ベクトルを列とする行列 P による線形写像 x' = Px に対する二次形式は以下のようになります.

x'TAx' = (Px)TAPx = xTPTAPx = 1

行列 A は実対称行列であり,また,行列 P は直交行列であるため,PTAP によって対角化でき,上の式は以下のような結果になります.

結果からも明らかなように,座標軸を 45 度だけ回転させた結果になっています.実際,行列 P は,座標軸を 45 度だけ回転させる操作に対応しています.

静岡理工科大学 菅沼ホーム SE目次 索引