グラム・シュミットの正規直交化計算機

ベクトル集合から直交基底・正規直交基底を算出。

設定

ベクトル入力 ($v_1, v_2, \dots$)

グラム・シュミットの正規直交化法とは (Gram-Schmidt Process)

線形代数において、グラム・シュミットの正規直交化法は、内積空間内の線形独立なベクトルの集合(基底など)を、正規直交基底(Orthonormal Basis)に変換するためのアルゴリズムです。これにより、ベクトル空間の扱いが容易になり、行列のQR分解などに応用されます。

アルゴリズムの手順

与えられた線形独立なベクトル $v_1, v_2, \dots, v_k$ に対して、以下の手順で直交ベクトル $u_1, u_2, \dots, u_k$ を作り、最後に正規化して $e_1, e_2, \dots, e_k$ を得ます。

ステップ 1: 直交化 (Orthogonalization)

まず、最初のベクトルをそのまま採用します。

$$ u_1 = v_1 $$

次に、2番目のベクトルから、$u_1$ 方向の成分(射影)を取り除き、直交成分だけを残します。

$$ u_2 = v_2 - \text{proj}_{u_1}(v_2) = v_2 - \frac{\langle v_2, u_1 \rangle}{\langle u_1, u_1 \rangle} u_1 $$

一般に、$k$ 番目のベクトルについては、それまでに求めたすべての直交ベクトル $u_1, \dots, u_{k-1}$ への射影を引き去ります。

$$ u_k = v_k - \sum_{j=1}^{k-1} \text{proj}_{u_j}(v_k) = v_k - \sum_{j=1}^{k-1} \frac{\langle v_k, u_j \rangle}{\langle u_j, u_j \rangle} u_j $$

ステップ 2: 正規化 (Normalization)

得られた直交ベクトル $u_i$ を、それぞれの長さ(ノルム) $\|u_i\|$ で割ることで、長さが1の単位ベクトル $e_i$ にします。

$$ e_i = \frac{u_i}{\|u_i\|} $$

主な応用例

  • QR分解: 正方行列 $A$ を直交行列 $Q$ と上三角行列 $R$ の積に分解するために利用されます ($A=QR$)。
  • 最小二乗法: データフィッティングなどで、方程式の解を近似する際に利用されます。
  • 関数空間の基底: ルジャンドル多項式など、関数の直交系を作る際にも同様の考え方が使われます。

注意点

このアルゴリズムは、元のベクトル集合が「線形独立」であることを前提としています。もし線形従属なベクトルが含まれていた場合、途中で $u_k = 0$ となり、計算が破綻するか、そのベクトルをスキップする必要があります。また、コンピュータ計算においては、桁落ち誤差などが蓄積しやすいという数値的安定性の問題があるため、「修正グラム・シュミット法」が使われることもあります。