直交行列とユニタリ行列|長さを保つ行列の性質と、回転・鏡映の見分け方
長さを変えない行列を集めると、直交行列という一群になる。回転も鏡映もここに入る。
条件はこの 1 本だけである。ここから、逆行列が転置で書けること、行列式が に限ること、固有値の絶対値が 1 になることが順に出てくる。
直交行列の定義
実正方行列 が を満たすとき、 を直交行列という。転置がそのまま逆行列になっている、と読んでもよい。
正方行列では片側の逆行列がもう片側の逆行列でもあるので、 も自動的に成り立つ。行について言えることと列について言えることが、いつも対になる理由がここにある。
逆行列を求める手間がかからない点は、実用の上でも大きい。掃き出し法を回さず、成分を並べ替えるだけで済む。
列が正規直交基底になる
の 成分は、 の第 列と第 列の内積である。それが単位行列に等しいということは、列どうしの内積が次のようになることを意味する。
つまり、どの列も長さ 1 で、異なる列どうしは直交する。直交行列とは、正規直交基底を列に並べた行列だといえる。
からは、行についても同じことが言える。行と列のどちらから見ても正規直交である。
<svg viewBox="0 0 460 220" width="100%" style="max-width:460px;display:block;margin:0 auto">
<text x="230" y="24" font-size="11" fill="#9a9a9a" text-anchor="middle">列は長さ 1 で、たがいに直角に交わる</text>
<circle cx="200" cy="130" r="70" fill="none" stroke="#c8c8c8" stroke-width="1" stroke-dasharray="4 3"></circle>
<line x1="110" y1="130" x2="300" y2="130" stroke="#c8c8c8" stroke-width="1"></line>
<line x1="200" y1="40" x2="200" y2="200" stroke="#c8c8c8" stroke-width="1"></line>
<line x1="200" y1="130" x2="256" y2="88" stroke="#1b81e0" stroke-width="1.5"></line>
<polygon points="260,85 250,86 254,93" fill="#1b81e0"></polygon>
<line x1="200" y1="130" x2="158" y2="74" stroke="#1b81e0" stroke-width="1.5"></line>
<polygon points="155,70 157,80 164,76" fill="#1b81e0"></polygon>
<path d="M 214 119 L 205 107 L 193 116" fill="none" stroke="#d0562a" stroke-width="1"></path>
<text x="268" y="82" font-size="12" fill="#1b81e0">q1</text>
<text x="140" y="70" font-size="12" fill="#1b81e0">q2</text>
<text x="230" y="212" font-size="11" fill="#9a9a9a" text-anchor="middle">単位円の上に先端が乗り、なす角は直角になる</text>
</svg>例:定義にあてはめて確かめる
第 1 列は で、長さは である。第 2 列も同じく長さ 1 になる。
2 つの列の内積は で直交している。したがって が成り立ち、この行列は直交行列である。
成分の絶対値は 1 を超えない
列の長さが 1 なので、その列に属する成分はどれも絶対値 1 以下になる。1 つの成分だけで長さを使い切ってしまうからである。
等号が成り立つのは、その列が標準基底のどれかに一致するときに限る。先ほどの例では と が並び、2 乗の和がちょうど 1 になっていた。
成分が有界なので、直交行列は成分の意味でも暴れない。数値計算で扱いやすい理由の 1 つである。
長さと内積を保つ
直交行列を掛けても、ベクトルの長さは変わらない。転置と組にすると が現れて消えるからである。
内積についても同じ計算が通り、 になる。長さと内積が保たれるので、2 本のベクトルのなす角も変わらない。
図形に当てはめれば、形も大きさもそのままで動かす変換にあたる。伸び縮みやゆがみは起きない。
逆に、長さを保てば直交行列である
長さを保つ線形写像は、必ず直交行列で書ける。内積が長さだけから復元できることを使う。
右辺の 3 つの長さがどれも保たれるので、左辺の内積も保たれる。標準基底に当てはめれば、列が正規直交であることがそのまま出る。
長さを保つことと は、言い方が違うだけの同じ条件だと分かる。
行列式は 1 か -1
の両辺の行列式を取る。転置しても行列式は変わらないので、 となる。
実行列なので は実数であり、値は か に限られる。中間の値は取れない。
の場合を回転、 の場合を鏡映が混じった変換という。行列式の符号が、向きを保つかどうかを分けている。
<svg viewBox="0 0 460 210" width="100%" style="max-width:460px;display:block;margin:0 auto">
<text x="120" y="26" font-size="11" fill="#1f1f1f" text-anchor="middle">回転(行列式 1)</text>
<polygon points="60,140 150,140 150,80" fill="#1b81e0" fill-opacity="0.10" stroke="#1b81e0" stroke-width="1.5"></polygon>
<text x="52" y="154" font-size="11" fill="#1f1f1f">A</text>
<text x="154" y="154" font-size="11" fill="#1f1f1f">B</text>
<text x="156" y="76" font-size="11" fill="#1f1f1f">C</text>
<path d="M 96 118 A 26 26 0 0 0 118 96" fill="none" stroke="#d0562a" stroke-width="1"></path>
<polygon points="120,92 113,99 121,101" fill="#d0562a"></polygon>
<text x="120" y="186" font-size="11" fill="#9a9a9a" text-anchor="middle">A から C へ回る向きは変わらない</text>
<text x="340" y="26" font-size="11" fill="#1f1f1f" text-anchor="middle">鏡映(行列式 -1)</text>
<line x1="340" y1="60" x2="340" y2="160" stroke="#c8c8c8" stroke-width="1" stroke-dasharray="4 3"></line>
<polygon points="280,140 370,140 370,80" fill="#1b81e0" fill-opacity="0.10" stroke="#1b81e0" stroke-width="1.5"></polygon>
<polygon points="400,140 310,140 310,80" fill="#d0562a" fill-opacity="0.08" stroke="#d0562a" stroke-width="1.5"></polygon>
<text x="340" y="186" font-size="11" fill="#9a9a9a" text-anchor="middle">裏返るので、頂点の並ぶ向きが逆になる</text>
</svg>例:回転と鏡映で向きを見る
角 の回転と、 軸に関する鏡映を並べる。
の行列式は 、 の行列式は である。どちらも列は正規直交で、直交行列の条件を満たす。
三角形を で動かすと頂点の並ぶ向きは保たれ、 では裏返る。行列式の符号は、この裏返りの有無を表している。
固有値の絶対値は 1
固有ベクトル に対して だとする。長さが保たれるので、 が成り立つ。
は零ベクトルではないので、 が出る。複素固有値まで含めれば、固有値は複素平面の単位円上に並ぶ。
実の固有値は か しかない。 に属する固有ベクトルは動かない向き、 に属するものは反転する向きを表す。
例:回転行列の固有値は単位円上にある
角 の回転行列の固有多項式を書き下す。トレースが 、行列式が 1 なので次の形になる。
判別式は で、 が と の倍数でなければ実の解を持たない。解は である。
絶対値を計算すれば 1 になる。実の範囲では固有ベクトルが取れないことが、平面上で動かない向きがないことに対応している。
積と逆について閉じている
直交行列どうしの積は、また直交行列になる。転置を外側から順にはがしていけば確かめられる。
逆行列も直交行列である。 で、その転置は に戻るからである。
単位行列も直交行列なので、直交行列の全体は積について群をなす。これを直交群といい、行列式が 1 のものだけを集めたものを特殊直交群という。
2 次の直交行列は回転か鏡映しかない
2 次に限ると、直交行列は 2 つの型に尽きる。第 1 列を単位ベクトルとして と書くと、第 2 列はこれに直交する単位ベクトルなので 2 通りしかない。
左が回転で、行列式は 1 である。右は行列式が で、原点を通るある直線に関する鏡映になる。
高い次元では、この 2 型のような単純な分類にはならない。ただし行列式による向きの区別は、どの次元でも意味を持ち続ける。
例:対称な直交行列は鏡映になる
は対称であり、直交行列でもある。 を計算すると、対角成分が 、非対角成分が になる。
対称かつ直交なら である。2 回かけると元に戻るので、この変換は鏡映にあたる。
行列式は で、先ほどの分類の右側に入る。 を 45 度に取った形だと読める。
例:置換行列は直交行列
成分を並べ替える行列も、直交行列の仲間である。
各列は標準基底のどれかで、長さ 1 かつたがいに直交する。したがって が成り立つ。
行列式は並べ替えの符号で決まり、この例では偶置換なので 1 である。座標の順番を入れ替える操作が、長さを変えないことと結びついている。
ユニタリ行列の定義
複素行列では、転置の代わりに共役転置を使う。 を満たす複素正方行列をユニタリ行列という。
複素内積は片方の成分に共役を取るので、長さを と書く。実の場合とまったく同じ計算で、 が出る。
列が複素の意味で正規直交になることも、実の場合と同じである。共役を取る位置だけが違う。
例:複素成分のユニタリ行列
共役転置は第 1 行と第 2 行を入れ替え、 を に変えたものになる。積を計算すると、対角成分は になる。
非対角成分では と が打ち消し合って 0 である。したがって が成り立つ。
なお は対称だが、実行列ではないので鏡映とは限らない。実の直感をそのまま持ち込めない場面である。
実のユニタリ行列は直交行列にほかならない
成分がすべて実数なら、共役を取っても何も変わらない。共役転置はただの転置になり、ユニタリの条件は に一致する。
つまり直交行列は、ユニタリ行列の実数版である。実対称行列とエルミート行列の関係と、同じ並びになっている。
複素数まで広げると分類が見通しよくなる。実の範囲では固有ベクトルが取れない回転も、複素固有値まで許せば対角化できる。
行列式は絶対値が 1 になる
ユニタリ行列でも、 の行列式を取れば が出る。左辺は である。
したがって で、行列式は単位円上のどこかにくる。実の場合と違い、 に限られない。
行列式が 1 のものだけを集めると、特殊ユニタリ群になる。物理では、この形の行列が対称性を表す道具として使われる。
一般の直交行列の標準形
高い次元の直交行列も、基底を取り替えれば見やすい形になる。適当な直交行列で変換すると、対角に沿って 2 次の回転ブロックと が並ぶ形にできる。
複素固有値が共役の組で現れることが、2 次のブロックとして表に出ている。 と は、動かない向きと反転する向きにあたる。
3 次の場合は、行列式が 1 なら回転ブロック 1 つと が 1 つになる。軸のまわりの回転だという事実が、この形から読める。
数値計算に強い理由
直交行列は長さを変えないので、掛けても誤差が拡大しない。条件数がちょうど 1 で、これは取りうる最小の値である。
逆行列を求める必要がないことも効いてくる。転置を取るだけなので、桁落ちの起きる割り算が入らない。
QR 分解や特異値分解が数値計算で好まれるのは、この性質のためである。行列を直交行列で挟む形にしておけば、途中の誤差が暴れない。
例:直交行列で連立方程式を解く
係数行列が直交行列なら、連立方程式は転置を掛けるだけで解ける。 の両辺に を掛ければよい。
を計算すると と が並ぶ。解は である。
代入して確かめると となり、 に戻る。掃き出し法も逆行列の公式も使っていない。
他の話題とのつながり
対称行列は直交行列で対角化でき、エルミート行列はユニタリ行列で対角化できる。どこまでこの形にできるかを決めるのが、正規行列という条件である。
グラム・シュミットの正規直交化は、与えられた基底から直交行列を作る手続きだと読める。QR 分解はその結果を行列の形にまとめたものである。
回転行列は、行列式が 1 の直交行列の代表である。角の和や軸の取り方まで踏み込んだ話は、回転行列の記事で扱う。












