悪条件行列の生成(列同士がほぼ平行に近い状態)

悪条件行列の生成(列同士がほぼ平行に近い状態)

悪条件行列の生成(列同士がほぼ平行に近い状態)を詳しくリサーチ! 知っておきたい 情報と解説を凝縮して配信します。

難解に見えるグラムシュミットの直交化法 計算手順をマスターする最短ルートは、線形独立なベクトル群を直交基底へ変換し、最後に長さを1に揃える(正規化)という2段階の分離思考を徹底することです。最初から長さを1にしながら計算しようとすると、分母に無理数(根号)が頻出係数となり、手計算の難易度が跳ね上がります。

ここでは、線形代数の試験や演習問題で頻出する、3次元空間の具体例を用いてステップ・バイ・ステップで計算を進めます。

与えられた3つの線形独立なベクトルを以下とします。

$$x_1 = \begin{pmatrix} 1 \\ 1 \\ 0 \end{pmatrix}, \quad x_2 = \begin{pmatrix} 1 \\ 0 \\ 1 \end{pmatrix}, \quad x_3 = \begin{pmatrix} 0 \\ 1 \\ 1 \end{pmatrix}$$

ステップ1:第1のベクトルをそのまま基準に設定

最初の基準ベクトル $u_1$ は、与えられた $x_1$ をそのまま採用します。まだ直交すべき相手が存在しないためです。

$$u_1 = x_1 = \begin{pmatrix} 1 \\ 1 \\ 0 \end{pmatrix}$$

ステップ2:第2のベクトルから「$u_1$ 方向の影」を差し引く

$x_2$ から、$u_1$ への正射影成分を取り除いた垂直ベクトル $u_2$ を計算します。

内積は $\langle x_2, u_1 \rangle = 1 \times 1 + 0 \times 1 + 1 \times 0 = 1$、ノルムの2乗は $\|u_1\|^2 = 1^2 + 1^2 + 0^2 = 2$ です。

$$u_2 = x_2 - \frac{\langle x_2, u_1 \rangle}{\|u_1\|^2} u_1 = \begin{pmatrix} 1 \\ 0 \\ 1 \end{pmatrix} - \frac{1}{2} \begin{pmatrix} 1 \\ 1 \\ 0 \end{pmatrix} = \begin{pmatrix} 1/2 \\ -1/2 \\ 1 \end{pmatrix}$$

念のため検算すると、内積 $\langle u_1, u_2 \rangle = 1 \times (1/2) + 1 \times (-1/2) + 0 \times 1 = 0$ となり、直交性が成立していることが確認できます。

ステップ3:第3のベクトルから「$u_1$ および $u_2$ 方向の影」を差し引く

ここが計算の山場です。$x_3$ から、$u_1$ が張る影と、$u_2$ が張る影の両方を同時に引き算します。

必要な各数値を求めます。
$\langle x_3, u_1 \rangle = 0 \times 1 + 1 \times 1 + 1 \times 0 = 1$
$\langle x_3, u_2 \rangle = 0 \times (1/2) + 1 \times (-1/2) + 1 \times 1 = 1/2$
$\|u_2\|^2 = (1/2)^2 + (-1/2)^2 + 1^2 = 1/4 + 1/4 + 1 = 3/2$

これらを代入して $u_3$ を導出します。

$$u_3 = x_3 - \frac{\langle x_3, u_1 \rangle}{\|u_1\|^2} u_1 - \frac{\langle x_3, u_2 \rangle}{\|u_2\|^2} u_2$$

$$u_3 = \begin{pmatrix} 0 \\ 1 \\ 1 \end{pmatrix} - \frac{1}{2}\begin{pmatrix} 1 \\ 1 \\ 0 \end{pmatrix} - \frac{1/2}{3/2}\begin{pmatrix} 1/2 \\ -1/2 \\ 1 \end{pmatrix} = \begin{pmatrix} 0 \\ 1 \\ 1 \end{pmatrix} - \begin{pmatrix} 1/2 \\ 1/2 \\ 0 \end{pmatrix} - \begin{pmatrix} 1/6 \\ -1/6 \\ 1/3 \end{pmatrix} = \begin{pmatrix} -2/3 \\ 2/3 \\ 2/3 \end{pmatrix}$$

各成分の内積を検算すれば、$\langle u_1, u_3 \rangle = 0$ かつ $\langle u_2, u_3 \rangle = 0$ が綺麗に満たされています。これで直交基底 $\{u_1, u_2, u_3\}$ が完成しました。

ステップ4:各ベクトルの長さを1にする(正規化)

最後に、それぞれのベクトルを自身のノルム(長さ)で割ることで、目的の正規直交基底が得られます。

$\|u_1\| = \sqrt{2} \implies e_1 = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 \\ 1 \\ 0 \end{pmatrix}$
$\|u_2\| = \sqrt{3/2} = \frac{\sqrt{6}}{2} \implies e_2 = \frac{2}{\sqrt{6}} \begin{pmatrix} 1/2 \\ -1/2 \\ 1 \end{pmatrix} = \frac{1}{\sqrt{6}} \begin{pmatrix} 1 \\ -1 \\ 2 \end{pmatrix}$
$\|u_3\| = \sqrt{(-2/3)^2 + (2/3)^2 + (2/3)^2} = \sqrt{12/9} = \frac{2}{\sqrt{3}} \implies e_3 = \frac{3}{2\sqrt{3}} \begin{pmatrix} -2/3 \\ 2/3 \\ 2/3 \end{pmatrix} = \frac{1}{\sqrt{3}} \begin{pmatrix} -1 \\ 1 \\ 1 \end{pmatrix}$

このように、「直交化を分数で終わらせてから最後にルートで割る」手順を守るだけで、計算途中のミスを大幅に抑制できます。

伊藤 翔太
著者

伊藤 翔太

マネー知識やキャリア形成に役立つノウハウを、初心者にも分かりやすく解説するのが得意です。