グラムシュミットの正規直交化法の公式の意味と例題をわかりやすく解説

数学

線形独立な複数のベクトルから、互いに直交し、かつ長さが1のベクトル(正規直交基底)を作り出すアルゴリズムが「グラム・シュミットの正規直交化法」です。

この記事では、グラム・シュミットの正規直交化法の具体的な計算手順と、なぜその計算で直交化できるのかという導出を、簡潔に解説していきたいと思います(^^)/

計算手順に入る前に、目的となる「正規直交基底」の定義を確認します。

与えられたベクトルの集合 $\{ \mathbf{e}_1, \mathbf{e}_2, \dots, \mathbf{e}_n \}$ が正規直交基底であるとは、以下の2つの条件を満たす状態を指します。

  1. 直交している(内積が0)
    異なる2つのベクトルを選んだとき、その内積が常に $0$ になる。
    $$\langle \mathbf{e}_i, \mathbf{e}_j \rangle = 0 \quad (i \neq j)$$
  2. 正規化されている(長さが1)
    各ベクトルのノルム(大きさ)が $1$ である。
    $$\Vert{} \mathbf{e}_i \Vert{} = \sqrt{\langle \mathbf{e}_i, \mathbf{e}_i \rangle} = 1$$

元のベクトル集合 $\{ \mathbf{a}_1, \mathbf{a}_2, \dots, \mathbf{a}_n \}$ を、この条件を満たす $\{ \mathbf{e}_1, \mathbf{e}_2, \dots, \mathbf{e}_n \}$ に変換していくのがグラム・シュミットの直交化法です。

計算は「直交化」を行ってから、「正規化」を行うという2段階のステップを踏んでいきます。

与えられた線形独立なベクトルを $\mathbf{a}_1, \mathbf{a}_2, \dots, \mathbf{a}_n$ とします。

ステップ1:直交化

新しいベクトル $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n$ を順番に作成します。

  1. 最初のベクトルはそのまま使います。$$\mathbf{u}_1 = \mathbf{a}_1$$
  2. 2つ目以降のベクトルは、元のベクトルから「すでに作成したベクトル方向の成分」を引いていきます。$$\mathbf{u}_2 = \mathbf{a}_2 – \frac{\langle \mathbf{a}_2, \mathbf{u}_1 \rangle}{\langle \mathbf{u}_1, \mathbf{u}_1 \rangle} \mathbf{u}_1$$
  3. 3つ目のベクトルは、$\mathbf{u}_1$ と $\mathbf{u}_2$ の成分を引きます。$$\mathbf{u}_3 = \mathbf{a}_3 – \frac{\langle \mathbf{a}_3, \mathbf{u}_1 \rangle}{\langle \mathbf{u}_1, \mathbf{u}_1 \rangle} \mathbf{u}_1 – \frac{\langle \mathbf{a}_3, \mathbf{u}_2 \rangle}{\langle \mathbf{u}_2, \mathbf{u}_2 \rangle} \mathbf{u}_2$$
  4. これを一般化すると、$k$ 番目のベクトルは以下の式で求まります。$$\mathbf{u}_k = \mathbf{a}_k – \sum_{i=1}^{k-1} \frac{\langle \mathbf{a}_k, \mathbf{u}_i \rangle}{\langle \mathbf{u}_i, \mathbf{u}_i \rangle} \mathbf{u}_i$$

ステップ2:正規化

作成した直交ベクトル $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n$ を、それぞれのノルム(長さ)で割ります。

$$\mathbf{e}_k = \frac{1}{\Vert{} \mathbf{u}_k \Vert{}} \mathbf{u}_k$$

これで正規直交基底 $\{ \mathbf{e}_1, \mathbf{e}_2, \dots, \mathbf{e}_n \}$ の完成です。

計算式に現れる引き算の項が何を意味しているのか、その根拠を解説します。

空間ベクトルにおいて、あるベクトル $\mathbf{a}$ を別のベクトル $\mathbf{u}$ の方向に投影したベクトル(正射影ベクトル)は次のように表されます。

$$\text{proj}_{\mathbf{u}}(\mathbf{a}) = \frac{\langle \mathbf{a}, \mathbf{u} \rangle}{\langle \mathbf{u}, \mathbf{u} \rangle} \mathbf{u}$$

グラム・シュミットの直交化法の式 $\mathbf{u}_2 = \mathbf{a}_2 – \text{proj}_{\mathbf{u}_1}(\mathbf{a}_2)$ は、「ベクトル $\mathbf{a}_2$ から、$\mathbf{u}_1$ と平行な成分(正射影)を削り落とす」という操作を行っています。平行な成分を取り除けば、残るのは垂直な成分だけになるため、結果として $\mathbf{u}_2$ は $\mathbf{u}_1$ と直交します。

実際に内積を計算して、直交すること(内積が0になること)を証明してみます。

$\mathbf{u}_2$ と $\mathbf{u}_1$ の内積をとります。

$$\langle \mathbf{u}_2, \mathbf{u}_1 \rangle = \left\langle \mathbf{a}_2 – \frac{\langle \mathbf{a}_2, \mathbf{u}_1 \rangle}{\langle \mathbf{u}_1, \mathbf{u}_1 \rangle} \mathbf{u}_1, \mathbf{u}_1 \right\rangle$$

内積の線形性を用いて展開します。

$$\langle \mathbf{u}_2, \mathbf{u}_1 \rangle = \langle \mathbf{a}_2, \mathbf{u}_1 \rangle – \frac{\langle \mathbf{a}_2, \mathbf{u}_1 \rangle}{\langle \mathbf{u}_1, \mathbf{u}_1 \rangle} \langle \mathbf{u}_1, \mathbf{u}_1 \rangle$$

右辺の第2項で $\langle \mathbf{u}_1, \mathbf{u}_1 \rangle$ が約分されます。

$$\langle \mathbf{u}_2, \mathbf{u}_1 \rangle = \langle \mathbf{a}_2, \mathbf{u}_1 \rangle – \langle \mathbf{a}_2, \mathbf{u}_1 \rangle = 0$$

内積が $0$ になるため、この計算手続きによって確実に直交したベクトルが生成されることが数学的に保証されています。

では、最後に問題を解いていきましょう!(^^)!

[問題]

次の3つのベクトルから、正規直交基底を構成せよ。

$$\mathbf{a}_1 = \begin{pmatrix} 1 \\ 1 \\ 0 \end{pmatrix}, \quad \mathbf{a}_2 = \begin{pmatrix} 1 \\ 0 \\ 1 \end{pmatrix}, \quad \mathbf{a}_3 = \begin{pmatrix} 0 \\ 1 \\ 1 \end{pmatrix}$$

[解法]

直交化の計算

① $\mathbf{u}_1$ を求める

$$\mathbf{u}_1 = \mathbf{a}_1 = \begin{pmatrix} 1 \\ 1 \\ 0 \end{pmatrix}$$

② $\mathbf{u}_2$ を求める

必要な内積を計算します。

$\langle \mathbf{a}_2, \mathbf{u}_1 \rangle = 1\cdot 1 + 0\cdot 1 + 1\cdot 0 = 1$

$\langle \mathbf{u}_1, \mathbf{u}_1 \rangle = 1^2 + 1^2 + 0^2 = 2$

式に代入します。

$$\mathbf{u}_2 = \mathbf{a}_2 – \frac{1}{2}\mathbf{u}_1 = \begin{pmatrix} 1 \\ 0 \\ 1 \end{pmatrix} – \frac{1}{2}\begin{pmatrix} 1 \\ 1 \\ 0 \end{pmatrix} = \begin{pmatrix} \frac{1}{2} \\ -\frac{1}{2} \\ 1 \end{pmatrix}$$

③ $\mathbf{u}_3$ を求める

必要な内積を計算します。

$\langle \mathbf{a}_3, \mathbf{u}_1 \rangle = 0\cdot 1 + 1\cdot 1 + 1\cdot 0 = 1$

$\langle \mathbf{a}_3, \mathbf{u}_2 \rangle = 0\cdot \frac{1}{2} + 1\cdot \left(-\frac{1}{2}\right) + 1\cdot 1 = \frac{1}{2}$

$\langle \mathbf{u}_2, \mathbf{u}_2 \rangle = \left(\frac{1}{2}\right)^2 + \left(-\frac{1}{2}\right)^2 + 1^2 = \frac{3}{2}$

式に代入します。

$$\mathbf{u}_3 = \mathbf{a}_3 – \frac{1}{2}\mathbf{u}_1 – \frac{1/2}{3/2}\mathbf{u}_2 = \mathbf{a}_3 – \frac{1}{2}\mathbf{u}_1 – \frac{1}{3}\mathbf{u}_2$$

$$\mathbf{u}_3 = \begin{pmatrix} 0 \\ 1 \\ 1 \end{pmatrix} – \begin{pmatrix} \frac{1}{2} \\ \frac{1}{2} \\ 0 \end{pmatrix} – \begin{pmatrix} \frac{1}{6} \\ -\frac{1}{6} \\ \frac{1}{3} \end{pmatrix} = \begin{pmatrix} -\frac{2}{3} \\ \frac{2}{3} \\ \frac{2}{3} \end{pmatrix}$$

正規化の計算

直交化したベクトルそれぞれの大きさを $1$ にします。

  • $\Vert{} \mathbf{u}_1 \Vert{} = \sqrt{2}$$$\mathbf{e}_1 = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 \\ 1 \\ 0 \end{pmatrix}$$
  • $\Vert{} \mathbf{u}_2 \Vert{} = \sqrt{\frac{3}{2}}$$$\mathbf{e}_2 = \sqrt{\frac{2}{3}} \begin{pmatrix} \frac{1}{2} \\ -\frac{1}{2} \\ 1 \end{pmatrix} = \frac{1}{\sqrt{6}} \begin{pmatrix} 1 \\ -1 \\ 2 \end{pmatrix}$$
  • $\Vert{} \mathbf{u}_3 \Vert{} = \sqrt{\frac{4}{9} + \frac{4}{9} + \frac{4}{9}} = \frac{2}{\sqrt{3}}$$$\mathbf{e}_3 = \frac{\sqrt{3}}{2} \begin{pmatrix} -\frac{2}{3} \\ \frac{2}{3} \\ \frac{2}{3} \end{pmatrix} = \frac{1}{\sqrt{3}} \begin{pmatrix} -1 \\ 1 \\ 1 \end{pmatrix}$$

これで正規直交基底 $\{ \mathbf{e}_1, \mathbf{e}_2, \mathbf{e}_3 \}$ を求めることができました。

今回の内容のまとめです。

グラム・シュミットの直交化法

  • 直交化: 元のベクトルから「すでに作ったベクトルへの正射影成分」を引き算し、垂直な成分だけを取り出して直交ベクトルを作る。
  • 正規化: 作成した直交ベクトルをそれぞれの長さ(ノルム)で割り、ベクトルの大きさを1に揃える。

グラム・シュミットの直交化法は、複雑な公式に見えますが、手を動かして計算してみれば慣れてくると思います!(^^)!

今回の内容はこれで以上となります。

ではまた(^^)/~~~

タイトルとURLをコピーしました