【線形空間編】正規直交基底と直交行列

こんにちは、おぐえもん(@oguemon_com)です。

前回の記事では、線形空間における内積・ベクトルの大きさなどが今までの概念と大きく異なる話をしました。

今回は、「正規直交基底」と呼ばれる特別な基底を取り上げ、どんなものなのか、そしてどうやって作るのかなどについて解説します!

正規直交基底

正規直交系と正規直交基底

線形空間VVの中にあるrr個のベクトルa1\boldsymbol{a_1}ar\boldsymbol{a_r}が、それぞれ長さ 1 で、かつどのような異なる 2 ベクトルを選んでもその内積がゼロになる(つまり直交する)とき、これらのベクトルを正規直交系といいます。

ちなみに、これを数式を用いて表現するとこんな感じ。

正規直交系

線形空間VVの中にあるrr個のベクトルa1\boldsymbol{a_1}ar\boldsymbol{a_r}が、

(ai,aj)=δij(\boldsymbol{a_i},\boldsymbol{a_j})=\delta_{ij}

を満たすとき、a1\boldsymbol{a_1}ar\boldsymbol{a_r}正規直交系という。

ここで、δij\delta_{ij}は、クロネッカーのデルタと呼ばれるもので、i=ji=jならば「1」を、iji \neq jならば「0」を取ります(まさに単位行列のiijj列成分です)。上の式は、同じベクトルの内積ならば、「1」を返し(長さが 1)、異なるベクトルの内積ならば「0」を返す(直交する)というウマい構造になっています。

さて、次に「正規直交基底」とは何かって話ですが、これは簡単で、「正規直交系」かつ「基底」であるベクトルの組のことです。読んで字のごとくって感じですね。

正規直交基底

線形空間VVの次元がnnで、nn個のベクトルa1\boldsymbol{a_1}ar\boldsymbol{a_r}VVの基底でありかつ、正規直交系であるとき、a1\boldsymbol{a_1}ar\boldsymbol{a_r}正規直交基底という。

正規直交基底の作り方

さて、そんな正規直交基底ですが、内積が定義されている線形空間(計量線形空間)ならば、絶対に正規直交基底を作ることができます。なぜそんなことが言えるのかと言うと、計量線形空間の基底を使って正規直交基底を作る方法が存在するからなんですね。そんな夢の方法の 1 つがグラム・シュミットの正規直交化法と呼ばれるものです。

シュミットの直交化法

線形空間VVの次元がnnで、a1\boldsymbol{a_1}an\boldsymbol{a_n}VVの基底であるとします。これを使って正規直交基底を作ろう!

Step1. ベクトル達を直交化する

次の数式を用いて、新しいベクトルx1\boldsymbol{x_1}xn\boldsymbol{x_n}を順番に生成していきます。

x1a1x2a2(a2,x1)(x1,x1)x1x3a3((a3,x1)(x1,x1)x1+(a3,x2)(x2,x2)x2)...xnank=1n1(an,xk)(xk,xk)xk\begin{aligned} \boldsymbol{x_1} &\leftarrow \boldsymbol{a_1} \\ \boldsymbol{x_2} &\leftarrow \boldsymbol{a_2} - \frac{(\boldsymbol{a_2},\boldsymbol{x_1})}{(\boldsymbol{x_1},\boldsymbol{x_1})}\boldsymbol{x_1} \\ \boldsymbol{x_3} &\leftarrow \boldsymbol{a_3} - \Bigl(\frac{(\boldsymbol{a_3},\boldsymbol{x_1})}{(\boldsymbol{x_1},\boldsymbol{x_1})}\boldsymbol{x_1} + \frac{(\boldsymbol{a_3},\boldsymbol{x_2})}{(\boldsymbol{x_2},\boldsymbol{x_2})}\boldsymbol{x_2}\Bigr) \\ &... \\ \boldsymbol{x_n} &\leftarrow \boldsymbol{a_n} - \sum_{k=1}^{n-1}\frac{(\boldsymbol{a_n},\boldsymbol{x_k})}{(\boldsymbol{x_k},\boldsymbol{x_k})}\boldsymbol{x_k} \end{aligned}

この作り方によって、x1\boldsymbol{x_1}xn\boldsymbol{x_n}は、全て互いに直交するベクトルの組となります。(本当に直交するの?と思う人は、内積を順番に計算して確かめてみましょう。)

Step2. ベクトル達を正規化する

x1\boldsymbol{x_1}xn\boldsymbol{x_n}の長さを1に揃えます。方法は簡単で、ベクトルに対して、そのベクトルの大きさを割る(つまり逆数をスカラー倍する)だけです。

xi1xixi (i=1,2,...,n)\boldsymbol{x_i} \leftarrow \frac{1}{|\boldsymbol{x_i}|}\boldsymbol{x_i} \ (i=1,2,...,n)

これで、x1\boldsymbol{x_1}xn\boldsymbol{x_n}は、正規直交基底になりましたとさ、めでたしめでたし。

x1\boldsymbol{x_1}xn\boldsymbol{x_n}のどれかが零ベクトルになる(つまり長さで割れない)ことってないの?って疑問に思う人がいるかもしれません。Step1 の式を見ればわかる通り、ベクトルx1\boldsymbol{x_1}xn\boldsymbol{x_n}を生み出す式は、結局のところベクトルa1\boldsymbol{a_1}an\boldsymbol{a_n}の 1 次結合の形に過ぎません。a1\boldsymbol{a_1}an\boldsymbol{a_n}は基底であり 1 次独立である前提があります。xi\boldsymbol{x_i}が零ベクトルになるということは、a1\boldsymbol{a_1}an\boldsymbol{a_n}の 1 次独立と矛盾するためあり得ません。

正規直交基底の成分と「自然な内積」

正規直交基底の1次結合で内積を取るとスッキリ

正規直交基底を用いた成分表示について考えます。次元nnの計量線形空間VVについて、ある正規直交基底に基づいて、2 つのベクトルa\boldsymbol{a}b\boldsymbol{b}を次の通り成分表記するとします。

a=(a1,a2,...,an)b=(b1,b2,...,bn)\begin{aligned} \boldsymbol{a}&=(a_1,a_2,...,a_n) \\ \boldsymbol{b}&=(b_1,b_2,...,b_n) \end{aligned}

このとき、両者の内積(a,b)(\boldsymbol{a},\boldsymbol{b})は次式のようになります。

(a,b)=i=1naibi(\boldsymbol{a},\boldsymbol{b})=\sum_{i=1}^{n}a_ib_i

実際に内積を計算すると、基底をなすベクトル同士の内積がたくさん出てきてカオスな式となります。しかし、正規直交基底では異なるベクトルの内積が 0 に、同じベクトルの内積(つまり長さの 2 乗)が 1 になるので、最終的に上のようなスッキリとした形に落ち着くのです。

計量線形空間は「自然な内積」に通じる

さて、この内積の形、どこかで見たことがあると思います。そう、前の記事で扱った、nn個の実数を並べて作る「nn次元数線形空間RnR^n」における「自然な内積」と同じですよね。

実は、どんなnn次元の線形空間であっても、内積さえ定義されていれば、正規直交基底を取ってこれの成分表記で捉えることで、実質的に「nn次元数線形空間RnR^n」と同じものとして扱うことができるんです!全ての計量線形空間は、RnR^nに帰着するんですね。

正規直交基底を変換する

以前の記事で述べた通り、線形空間の基底は、「変換の行列」というものを用いた演算を通じて、異なる基底を生み出すことができます。

ここでは、正規直交基底から別の正規直交基底に変換するときに使う変換の行列の性質について考えます。

まず、線形空間VVの次元はnnで、2 つのベクトルの組「a1\boldsymbol{a_1}an\boldsymbol{a_n}」と「b1\boldsymbol{b_1}bn\boldsymbol{b_n}」は共にVVの正規直交基底とします。

変換の行列をP=[pij]P=[p_{ij}]としてa1\boldsymbol{a_1}an\boldsymbol{a_n}からb1\boldsymbol{b_1}bn\boldsymbol{b_n}を生み出せるとします。つまり、前の記事みたく、次式の関係があります。

bj=p1ja1+p2ja2+...+pnjan=k=1npkjak\begin{aligned} \boldsymbol{b_j} &=p_{1j}\boldsymbol{a_1}+p_{2j}\boldsymbol{a_2}+...+p_{nj}\boldsymbol{a_n}\\ &=\sum_{k=1}^{n}p_{kj}\boldsymbol{a_k} \end{aligned}

さて、行列PPはどんな行列なんでしょうか。

a1\boldsymbol{a_1}an\boldsymbol{a_n}が正規直交基底であることを利用すると、次のような式を導き出せます。

(bi,bj)=(k=1npkiak,l=1npljal)=k=1nl=1npkiplj(ak,al)=k=1npkipkj\begin{aligned} (\boldsymbol{b_i},\boldsymbol{b_j}) &=(\sum_{k=1}^{n}p_{ki}\boldsymbol{a_k},\sum_{l=1}^{n}p_{lj}\boldsymbol{a_l}) \\ &=\sum_{k=1}^{n}\sum_{l=1}^{n}p_{ki}p_{lj}(\boldsymbol{a_k},\boldsymbol{a_l}) \\ &=\sum_{k=1}^{n}p_{ki}p_{kj} \end{aligned}

1 段目から 2 段目の変形は、内積がもつ分配法則の性質に基づいて愚直に展開しただけです。そして、a1\boldsymbol{a_1}an\boldsymbol{a_n}が正規直交基底であることを利用して、2 段目の中から異なるベクトルの内積を 0 として消し去り、同じベクトルの内積を 1 として成分のみを残した結果、3 段目の式が得られます。

ところで、3 段目の式って、ある 2 行列の積の成分を表してそうじゃないですか?

実際、PPの転置行列tP^{t}Pの成分をpij(=pji)p'_{ij}(=p_{ji})とすると、当たり前な話

k=1npkipkj=k=1npikpkj\sum_{k=1}^{n}p_{ki}p_{kj}=\sum_{k=1}^{n}p'_{ik}p_{kj}

が成立します。これの右辺って積tPP^{t}PPiijj列成分そのものですよね?

さて、正規直交基底の定義から、基底b1\boldsymbol{b_1}bn\boldsymbol{b_n}が正規直交系であること(つまり正規直交基底である)と、次の式の成立は同値でした。

(bi,bj)=δij(\boldsymbol{b_i},\boldsymbol{b_j})=\delta_{ij}

つまり、これらから次の等式が成り立ちます。

k=1npikpkj=δij\sum_{k=1}^{n}p'_{ik}p_{kj}=\delta_{ij}

クロネッカーのデルタδij\delta_{ij}は単位行列iijj列成分に相当すると言いました。つまり、この式はtPP^{t}PPが単位行列に等しいことを表しているのです。

以上をまとめると次のようになります。

正規直交基底a1\boldsymbol{a_1}an\boldsymbol{a_n}に対して変換の行列PPを用いて別の基底b1\boldsymbol{b_1}bn\boldsymbol{b_n}を作るとき、次の命題が成立する。

tPP=Eb1,...,bnは正規直交基底^{t}PP=E \Leftrightarrow \boldsymbol{b_1},...,\boldsymbol{b_n}\text{は正規直交基底}

ちなみに、tPP=E^{t}PP=Eを満たす行列PPのことを直交行列と呼びます。さらに、直交行列PPの中でも、その行列式P|P|が 1 であるようなもののことを特に回転行列と呼びます。

おわり

今回は、正規直交基底の定義やその作り方、そして正規直交基底から別の正規直交基底に変換するときの変換の行列の性質について学習しました。

次回は、グラム・シュミットの正規直交化法についてもう少し解説して見たいと思います。

▲ トップへ戻る