説明 修正グラム・シュミット法は、基底の 3 つの線形独立な非直交ベクトルに対して実行されます。R 3 {\displaystyle \mathbb {R} ^{3}} 画像をクリックすると詳細が表示されます。修正方法については、この記事の「数値安定性」のセクションで説明しています。 ベクトルのベクトル射影 v {\displaystyle \mathbf {v} } ゼロでないベクトル上u {\displaystyle \mathbf {u} } [ 注1 ] と定義される。プロジェクト u ( v ) = ⟨ v 、 u ⟩ ⟨ u 、 u ⟩ u 、 {\displaystyle \operatorname {proj} _{\mathbf {u} }(\mathbf {v} )={\frac {\langle \mathbf {v} ,\mathbf {u} \rangle }{\langle \mathbf {u} ,\mathbf {u} \rangle }}\,\mathbf {u} ,} どこ⟨ v 、 u ⟩ {\displaystyle \langle \mathbf {v} ,\mathbf {u} \rangle } ベクトルの内積 を表すu {\displaystyle \mathbf {u} } そしてv {\displaystyle \mathbf {v} } これはつまりプロジェクト u ( v ) {\displaystyle \operatorname {proj} _{\mathbf {u} }(\mathbf {v} )} は、 v {\displaystyle \mathbf {v} } 線上にu {\displaystyle \mathbf {u} } 。 もしu {\displaystyle \mathbf {u} } はゼロベクトルなので、プロジェクト u ( v ) {\displaystyle \operatorname {proj} _{\mathbf {u} }(\mathbf {v} )} はゼロベクトルとして定義される。
与えられたk {\displaystyle k} 非ゼロの線形独立ベクトルv 1 、 … 、 v k {\displaystyle \mathbf {v} _{1},\ldots ,\mathbf {v} _{k}} グラム・シュミット法はベクトルを定義するu 1 、 … 、 u k {\displaystyle \mathbf {u} _{1},\ldots ,\mathbf {u} _{k}} 次のように: u 1 = v 1 、 e 1 = u 1 ‖ u 1 ‖ u 2 = v 2 − プロジェクト u 1 ( v 2 ) 、 e 2 = u 2 ‖ u 2 ‖ u 3 = v 3 − プロジェクト u 1 ( v 3 ) − プロジェクト u 2 ( v 3 ) 、 e 3 = u 3 ‖ u 3 ‖ u 4 = v 4 − プロジェクト u 1 ( v 4 ) − プロジェクト u 2 ( v 4 ) − プロジェクト u 3 ( v 4 ) 、 e 4 = u 4 ‖ u 4 ‖ ⋮ ⋮ u k = v k − ∑ j = 1 k − 1 プロジェクト u j ( v k ) 、 e k = u k ‖ u k ‖ 。 {\displaystyle {\begin{aligned}\mathbf {u} _{1}&=\mathbf {v} _{1},&\!\mathbf {e} _{1}&={\frac {\mathbf {u} _{1}}{\|\mathbf {u} _{1}\|}}\\\mathbf {u} _{2}&=\mathbf {v} _{2}-\operatorname {proj} _{\mathbf {u} _{1}}(\mathbf {v} _{2}),&\!\mathbf {e} _{2}&={\frac {\mathbf {u} _{2}}{\|\mathbf {u} _{2}\|}}\\\mathbf {u} _{3}&=\mathbf {v} _{3}-\operatorname {proj} _{\mathbf {u} _{1}}(\mathbf {v} _{3})-\operatorname {proj} _{\mathbf {u} _{2}}(\mathbf {v} _{3}),&\!\mathbf {e} _{3}&={\frac {\mathbf {u} _{3}}{\|\mathbf {u} _{3}\|}}\\\mathbf {u} _{4}&=\mathbf {v} _{4}-\operatorname {proj} _{\mathbf {u} _{1}}(\mathbf {v} _{4})-\operatorname {proj} _{\mathbf {u} _{2}}(\mathbf {v} _{4})-\operatorname {proj} _{\mathbf {u} _{3}}(\mathbf {v} _{4}),&\!\mathbf {e} _{4}&={\mathbf {u} _{4} \over \|\mathbf {u} _{4}\|}\\&{}\ \ \vdots &&{}\ \ \vdots \\\mathbf {u} _{k}&=\mathbf {v} _{k}-\sum _{j=1}^{k-1}\operatorname {proj} _{\mathbf {u} _{j}}(\mathbf {v} _{k}),&\!\mathbf {e} _{k}&={\frac {\mathbf {u} _{k}}{\|\mathbf {u} _{k}\|}}.\end{aligned}}}
シーケンスu 1 、 … 、 u k {\displaystyle \mathbf {u} _{1},\ldots ,\mathbf {u} _{k}} は必要な直交ベクトルのシステムであり、正規化されたベクトルはe 1 、 … 、 e k {\displaystyle \mathbf {e} _{1},\ldots ,\mathbf {e} _{k}} 正規直交系 を形成する。数列の計算u 1 、 … 、 u k {\displaystyle \mathbf {u} _{1},\ldots ,\mathbf {u} _{k}} これはグラム・シュミット直交化 として知られており、数列の計算はe 1 、 … 、 e k {\displaystyle \mathbf {e} _{1},\ldots ,\mathbf {e} _{k}} これはグラム・シュミット直交化 として知られています。
これらの式が直交数列を生成することを確認するには、まず以下を計算します。⟨ u 1 、 u 2 ⟩ {\displaystyle \langle \mathbf {u} _{1},\mathbf {u} _{2}\rangle } 上記の式を代入してu 2 {\displaystyle \mathbf {u} _{2}} : ゼロになります。次にこれを使用して計算します⟨ u 1 、 u 3 ⟩ {\displaystyle \langle \mathbf {u} _{1},\mathbf {u} _{3}\rangle } 再び式を代入してu 3 {\displaystyle \mathbf {u} _{3}} : 結果はゼロになります。任意のk {\displaystyle k} 証明は数学的帰納法 によって行われる。
幾何学的には、この方法は次のように進みます。u 私 {\displaystyle \mathbf {u} _{i}} それは予測するv 私 {\displaystyle \mathbf {v} _{i}} 部分空間に直交するU {\displaystyle U} によって生成されましたu 1 、 … 、 u 私 − 1 {\displaystyle \mathbf {u} _{1},\ldots ,\mathbf {u} _{i-1}} これは、によって生成される部分空間と同じです。v 1 、 … 、 v 私 − 1 {\displaystyle \mathbf {v} _{1},\ldots ,\mathbf {v} _{i-1}} ベクトルu 私 {\displaystyle \mathbf {u} _{i}} は、次の差として定義されます。v 私 {\displaystyle \mathbf {v} _{i}} そしてこの射影は、部分空間内のすべてのベクトルに対して直交することが保証されている。U {\displaystyle U} 。
グラム・シュミット法は、線形独立な可算無限 列{ v i } i にも適用されます。結果として得られるのは、自然数nに対して次のようになる直交(または正規直交)列 { u i } i です。v 1 、 … 、 v n {\displaystyle \mathbf {v} _{1},\ldots ,\mathbf {v} _{n}} は、u 1 、 … 、 u n {\displaystyle \mathbf {u} _{1},\ldots ,\mathbf {u} _{n}} 。
グラム・シュミット法を線形従属な数列に適用すると、0 ベクトルが出力されます。私 {\displaystyle i} ステップ1では、v 私 {\displaystyle \mathbf {v} _{i}} は、v 1 、 … 、 v 私 − 1 {\displaystyle \mathbf {v} _{1},\ldots ,\mathbf {v} _{i-1}} 直交基底を生成する場合、アルゴリズムは出力中のゼロベクトルを検査し、ゼロベクトルの倍数の長さが1になることはないため、それらを破棄する必要があります。アルゴリズムによって出力されるベクトルの数は、元の入力によって張られる空間の次元になります。
(場合によっては非可算な)無限列のベクトルに適用された、超限再帰 を用いたグラム・シュミット法の変種( v α ) α < λ {\displaystyle (v_{\alpha })_{\alpha <\lambda }} 正規直交ベクトルの集合が得られる( u α ) α < κ {\displaystyle (u_{\alpha })_{\alpha <\kappa }} とκ ≤ λ {\displaystyle \kappa \leq \lambda } 任意のα ≤ λ {\displaystyle \alpha \leq \lambda } 区間の 完成{ u β : β < ミニ ( α 、 κ ) } {\displaystyle \{u_{\beta }:\beta <\min(\alpha ,\kappa )\}} は、{ v β : β < α } {\displaystyle \{v_{\beta }:\beta <\alpha \}} 特に、ヒルベルト空間の(代数的)基底(あるいはより一般的には、任意の稠密部分空間の基底)に適用すると、 ( 関数解析的)正規直交基底が得られます。一般の場合、厳密な不等式がしばしば成り立つことに注意してください。κ < λ {\displaystyle \kappa <\lambda } 開始セットが線形独立で、スパンが( u α ) α < κ {\displaystyle (u_{\alpha })_{\alpha <\kappa }} は、のスパンの部分空間である必要はない。( v α ) α < λ {\displaystyle (v_{\alpha })_{\alpha <\lambda }} (むしろ、それはその完成空間の部分空間である。)
不動産 で表すGS ( v 1 、 … 、 v k ) {\displaystyle \operatorname {GS} (\mathbf {v} _{1},\dots ,\mathbf {v} _{k})} グラム・シュミット法をベクトルの集合に適用した結果v 1 、 … 、 v k {\displaystyle \mathbf {v} _{1},\dots ,\mathbf {v} _{k}} これにより地図が生成されますGS : ( R n ) k → ( R n ) k {\displaystyle \operatorname {GS} \colon (\mathbb {R} ^{n})^{k}\to (\mathbb {R} ^{n})^{k}} 。
次のような特性を持っています。
それは継続的である それは、次のような意味で方向を保持する。 または ( v 1 、 … 、 v k ) = または ( GS ( v 1 、 … 、 v k ) ) {\displaystyle \operatorname {or} (\mathbf {v} _{1},\dots ,\mathbf {v} _{k})=\operatorname {or} (\operatorname {GS} (\mathbf {v} _{1},\dots ,\mathbf {v} _{k}))} 。 直交写像と可換である。 させてg : R n → R n {\displaystyle g\colon \mathbb {R} ^{n}\to \mathbb {R} ^{n}} (与えられた内積に関して)直交する。すると、次のようになる。 GS ( g ( v 1 ) 、 … 、 g ( v k ) ) = ( g ( GS ( v 1 、 … 、 v k ) 1 ) 、 … 、 g ( GS ( v 1 、 … 、 v k ) k ) ) {\displaystyle \operatorname {GS} (g(\mathbf {v} _{1}),\dots ,g(\mathbf {v} _{k}))=\left(g(\operatorname {GS} (\mathbf {v} _{1},\dots ,\mathbf {v} _{k})_{1}),\dots ,g(\operatorname {GS} (\mathbf {v} _{1},\dots ,\mathbf {v} _{k})_{k})\right)}
さらに、グラム・シュミット過程のパラメータ化されたバージョンは、一般線形群の(強い)変形収縮をもたらす。 G L ( R n ) {\displaystyle \mathrm {GL} (\mathbb {R} ^{n})} 直交群へO ( R n ) {\displaystyle O(\mathbb {R} ^{n})} 。
数値安定性 このプロセスがコンピュータ上で実行されると、ベクトルはu k {\displaystyle \mathbf {u} _{k}} 丸め誤差 のため、必ずしも直交しているとは限りません。上述のグラム・シュミット法(「古典的グラム・シュミット法」と呼ばれることもあります)では、この直交性の喪失が特に深刻です。そのため、(古典的)グラム・シュミット法は数値的に不安定で あると言われています。
グラム・シュミット法は、わずかな修正を加えることで安定化させることができます。このバージョンは、修正グラム・シュミット 法(MGS)と呼ばれることもあります。この手法は、厳密な計算においては元の公式と同じ結果を与え、有限精度計算においてはより小さな誤差をもたらします。
ベクトルu k を 計算する代わりにu k = v k − プロジェクト u 1 ( v k ) − プロジェクト u 2 ( v k ) − ⋯ − プロジェクト u k − 1 ( v k ) 、 {\displaystyle \mathbf {u} _{k}=\mathbf {v} _{k}-\operatorname {proj} _{\mathbf {u} _{1}}(\mathbf {v} _{k})-\operatorname {proj} _{\mathbf {u} _{2}}(\mathbf {v} _{k})-\cdots -\operatorname {proj} _{\mathbf {u} _{k-1}}(\mathbf {v} _{k}),} 計算方法は以下のとおりです。 u k ( 1 ) = v k − プロジェクト u 1 ( v k ) 、 u k ( 2 ) = u k ( 1 ) − プロジェクト u 2 ( u k ( 1 ) ) 、 ⋮ u k ( k − 2 ) = u k ( k − 3 ) − プロジェクト u k − 2 ( u k ( k − 3 ) ) 、 u k ( k − 1 ) = u k ( k − 2 ) − プロジェクト u k − 1 ( u k ( k − 2 ) ) 、 e k = u k ( k − 1 ) ‖ u k ( k − 1 ) ‖ {\displaystyle {\begin{aligned}\mathbf {u} _{k}^{(1)}&=\mathbf {v} _{k}-\operatorname {proj} _{\mathbf {u} _{1}}(\mathbf {v} _{k}),\\\mathbf {u} _{k}^{(2)}&=\mathbf {u} _{k}^{(1)}-\operatorname {proj} _{\mathbf {u} _{2}}\left(\mathbf {u} _{k}^{(1)}\right),\\&\;\;\vdots \\\mathbf {u} _{k}^{(k-2)}&=\mathbf {u} _{k}^{(k-3)}-\operatorname {proj} _{\mathbf {u} _{k-2}}\left(\mathbf {u} _{k}^{(k-3)}\right),\\\mathbf {u} _{k}^{(k-1)}&=\mathbf {u} _{k}^{(k-2)}-\operatorname {proj} _{\mathbf {u} _{k-1}}\left(\mathbf {u} _{k}^{(k-2)}\right),\\\mathbf {e} _{k}&={\frac {\mathbf {u} _{k}^{(k-1)}}{\left\|\mathbf {u} _{k}^{(k-1)}\right\|}}\end{aligned}}}
この方法は、前のアニメーションで中間段階で使用されました。v 3 ′ {\displaystyle \mathbf {v} '_{3}} 青いベクトルを直交化する際にベクトルが使用されますv 3 {\displaystyle \mathbf {v} _{3}} 。
以下に、修正されたアルゴリズムの別の説明を示します。ベクトルが与えられた場合v 1 、 v 2 、 … 、 v n {\displaystyle \mathbf {v} _{1},\mathbf {v} _{2},\dots ,\mathbf {v} _{n}} まず最初のステップでは、ベクトルを生成します。v 1 、 v 2 ( 1 ) 、 … 、 v n ( 1 ) {\displaystyle \mathbf {v} _{1},\mathbf {v} _{2}^{(1)},\dots ,\mathbf {v} _{n}^{(1)}} 方向に沿ってコンポーネントを取り除くことによってv 1 {\displaystyle \mathbf {v} _{1}} 数式では、v k ( 1 ) := v k − ⟨ v k 、 v 1 ⟩ ⟨ v 1 、 v 1 ⟩ v 1 {\displaystyle \mathbf {v} _{k}^{(1)}:=\mathbf {v} _{k}-{\frac {\langle \mathbf {v} _{k},\mathbf {v} _{1}\rangle }{\langle \mathbf {v} _{1},\mathbf {v} _{1}\rangle }}\mathbf {v} _{1}} このステップの後、目的の直交ベクトルが2つ得られます。u 1 、 … 、 u n {\displaystyle \mathbf {u} _{1},\dots ,\mathbf {u} _{n}} すなわちu 1 = v 1 、 u 2 = v 2 ( 1 ) {\displaystyle \mathbf {u} _{1}=\mathbf {v} _{1},\mathbf {u} _{2}=\mathbf {v} _{2}^{(1)}} しかし、私たちはv 3 ( 1 ) 、 … 、 v n ( 1 ) {\displaystyle \mathbf {v} _{3}^{(1)},\dots ,\mathbf {v} _{n}^{(1)}} すでに直交しているu 1 {\displaystyle \mathbf {u} _{1}} 次に、残りのベクトルを直交化します。u 2 = v 2 ( 1 ) {\displaystyle \mathbf {u} _{2}=\mathbf {v} _{2}^{(1)}} これは、私たちが計算することを意味しますv 3 ( 2 ) 、 v 4 ( 2 ) 、 … 、 v n ( 2 ) {\displaystyle \mathbf {v} _{3}^{(2)},\mathbf {v} _{4}^{(2)},\dots ,\mathbf {v} _{n}^{(2)}} 引き算によってv k ( 2 ) := v k ( 1 ) − ⟨ v k ( 1 ) 、 u 2 ⟩ ⟨ u 2 、 u 2 ⟩ u 2 {\displaystyle \mathbf {v} _{k}^{(2)}:=\mathbf {v} _{k}^{(1)}-{\frac {\langle \mathbf {v} _{k}^{(1)},\mathbf {u} _{2}\rangle }{\langle \mathbf {u} _{2},\mathbf {u} _{2}\rangle }}\mathbf {u} _{2}} これでベクトルを保存しましたv 1 、 v 2 ( 1 ) 、 v 3 ( 2 ) 、 v 4 ( 2 ) 、 … 、 v n ( 2 ) {\displaystyle \mathbf {v} _{1},\mathbf {v} _{2}^{(1)},\mathbf {v} _{3}^{(2)},\mathbf {v} _{4}^{(2)},\dots ,\mathbf {v} _{n}^{(2)}} 最初の3つのベクトルはすでにu 1 、 u 2 、 u 3 {\displaystyle \mathbf {u} _{1},\mathbf {u} _{2},\mathbf {u} _{3}} 残りのベクトルはすでに直交していますu 1 、 u 2 {\displaystyle \mathbf {u} _{1},\mathbf {u} _{2}} 。これで明らかになったように、次のステップでは直交化します。v 4 ( 2 ) 、 … 、 v n ( 2 ) {\displaystyle \mathbf {v} _{4}^{(2)},\dots ,\mathbf {v} _{n}^{(2)}} に対してu 3 = v 3 ( 2 ) {\displaystyle \mathbf {u} _{3}=\mathbf {v} _{3}^{(2)}} このようにして、直交ベクトルの完全なセットを見つける。u 1 、 … 、 u n {\displaystyle \mathbf {u} _{1},\dots ,\mathbf {u} _{n}} 正規直交ベクトルが必要な場合は、減算式の分母が1になるように、処理を進めながら正規化します。
アルゴリズム 以下のMATLAB アルゴリズムは、古典的なグラム・シュミット直交化を実装します。ベクトルv 1 、 ...、v k (行列の列)VはV(:,j)、j {\displaystyle j} ( 番目のベクトル)は、U同じ部分空間を張る正規直交ベクトル( の列)に置き換えられます。
関数 U = グラムシュミット ( V ) [ n , k ] = size ( V ); U = zeros ( n , k ); U (:, 1 ) = V (:, 1 ) / ノルム ( V (:, 1 )); for i = 2 : k U (:, i ) = V (:, i ); for j = 1 : i - 1 U (:, i ) = U (:, i ) - ( U (:, j ) '* U (:, i )) * U (:, j ); end U (:, i ) = U (:, i ) / norm ( U (:, i )); end end The cost of this algorithm is asymptotically O(nk 2 ) floating point operations, where n is the dimensionality of the vectors.
Via Gaussian elimination If the rows {v 1 , ..., v k } are written as a matrix A {\displaystyle A} , then applying Gaussian elimination to the augmented matrix [ A A T | A ] {\displaystyle \left[AA^{\mathsf {T}}|A\right]} will produce the orthogonalized vectors in place of A {\displaystyle A} . However the matrix A A T {\displaystyle AA^{\mathsf {T}}} must be brought to row echelon form , using only the row operation of adding a scalar multiple of one row to another.[ 3] For example, taking v 1 = [ 3 1 ] , v 2 = [ 2 2 ] {\displaystyle \mathbf {v} _{1}={\begin{bmatrix}3&1\end{bmatrix}},\mathbf {v} _{2}={\begin{bmatrix}2&2\end{bmatrix}}} as above, we have [ A A T | A ] = [ 10 8 3 1 8 8 2 2 ] {\displaystyle \left[AA^{\mathsf {T}}|A\right]=\left[{\begin{array}{rr|rr}10&8&3&1\\8&8&2&2\end{array}}\right]}
And reducing this to row echelon form produces [ 1 .8 .3 .1 0 1 − .25 .75 ] {\displaystyle \left[{\begin{array}{rr|rr}1&.8&.3&.1\\0&1&-.25&.75\end{array}}\right]}
The normalized vectors are then e 1 = 1 .3 2 + .1 2 [ .3 .1 ] = 1 10 [ 3 1 ] {\displaystyle \mathbf {e} _{1}={\frac {1}{\sqrt {.3^{2}+.1^{2}}}}{\begin{bmatrix}.3&.1\end{bmatrix}}={\frac {1}{\sqrt {10}}}{\begin{bmatrix}3&1\end{bmatrix}}} e 2 = 1 .25 2 + .75 2 [ − .25 .75 ] = 1 10 [ − 1 3 ] , {\displaystyle \mathbf {e} _{2}={\frac {1}{\sqrt {.25^{2}+.75^{2}}}}{\begin{bmatrix}-.25&.75\end{bmatrix}}={\frac {1}{\sqrt {10}}}{\begin{bmatrix}-1&3\end{bmatrix}},} as in the example above.
The result of the Gram–Schmidt process may be expressed in a non-recursive formula using determinants .
e j = 1 D j − 1 D j | ⟨ v 1 , v 1 ⟩ ⟨ v 2 , v 1 ⟩ ⋯ ⟨ v j , v 1 ⟩ ⟨ v 1 , v 2 ⟩ ⟨ v 2 , v 2 ⟩ ⋯ ⟨ v j , v 2 ⟩ ⋮ ⋮ ⋱ ⋮ ⟨ v 1 , v j − 1 ⟩ ⟨ v 2 , v j − 1 ⟩ ⋯ ⟨ v j , v j − 1 ⟩ v 1 v 2 ⋯ v j | {\displaystyle \mathbf {e} _{j}={\frac {1}{\sqrt {D_{j-1}D_{j}}}}{\begin{vmatrix}\langle \mathbf {v} _{1},\mathbf {v} _{1}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{1}\rangle &\cdots &\langle \mathbf {v} _{j},\mathbf {v} _{1}\rangle \\\langle \mathbf {v} _{1},\mathbf {v} _{2}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{2}\rangle &\cdots &\langle \mathbf {v} _{j},\mathbf {v} _{2}\rangle \\\vdots &\vdots &\ddots &\vdots \\\langle \mathbf {v} _{1},\mathbf {v} _{j-1}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{j-1}\rangle &\cdots &\langle \mathbf {v} _{j},\mathbf {v} _{j-1}\rangle \\\mathbf {v} _{1}&\mathbf {v} _{2}&\cdots &\mathbf {v} _{j}\end{vmatrix}}}
u j = 1 D j − 1 | ⟨ v 1 , v 1 ⟩ ⟨ v 2 , v 1 ⟩ ⋯ ⟨ v j , v 1 ⟩ ⟨ v 1 , v 2 ⟩ ⟨ v 2 , v 2 ⟩ ⋯ ⟨ v j , v 2 ⟩ ⋮ ⋮ ⋱ ⋮ ⟨ v 1 , v j − 1 ⟩ ⟨ v 2 , v j − 1 ⟩ ⋯ ⟨ v j , v j − 1 ⟩ v 1 v 2 ⋯ v j | {\displaystyle \mathbf {u} _{j}={\frac {1}{D_{j-1}}}{\begin{vmatrix}\langle \mathbf {v} _{1},\mathbf {v} _{1}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{1}\rangle &\cdots &\langle \mathbf {v} _{j},\mathbf {v} _{1}\rangle \\\langle \mathbf {v} _{1},\mathbf {v} _{2}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{2}\rangle &\cdots &\langle \mathbf {v} _{j},\mathbf {v} _{2}\rangle \\\vdots &\vdots &\ddots &\vdots \\\langle \mathbf {v} _{1},\mathbf {v} _{j-1}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{j-1}\rangle &\cdots &\langle \mathbf {v} _{j},\mathbf {v} _{j-1}\rangle \\\mathbf {v} _{1}&\mathbf {v} _{2}&\cdots &\mathbf {v} _{j}\end{vmatrix}}}
where D 0 = 1 {\displaystyle D_{0}=1} and, for j ≥ 1 {\displaystyle j\geq 1} , D j {\displaystyle D_{j}} is the Gram determinant
D j = | ⟨ v 1 , v 1 ⟩ ⟨ v 2 , v 1 ⟩ ⋯ ⟨ v j , v 1 ⟩ ⟨ v 1 , v 2 ⟩ ⟨ v 2 , v 2 ⟩ ⋯ ⟨ v j , v 2 ⟩ ⋮ ⋮ ⋱ ⋮ ⟨ v 1 , v j ⟩ ⟨ v 2 , v j ⟩ ⋯ ⟨ v j , v j ⟩ | . {\displaystyle D_{j}={\begin{vmatrix}\langle \mathbf {v} _{1},\mathbf {v} _{1}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{1}\rangle &\cdots &\langle \mathbf {v} _{j},\mathbf {v} _{1}\rangle \\\langle \mathbf {v} _{1},\mathbf {v} _{2}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{2}\rangle &\cdots &\langle \mathbf {v} _{j},\mathbf {v} _{2}\rangle \\\vdots &\vdots &\ddots &\vdots \\\langle \mathbf {v} _{1},\mathbf {v} _{j}\rangle &\langle \mathbf {v} _{2},\mathbf {v} _{j}\rangle &\cdots &\langle \mathbf {v} _{j},\mathbf {v} _{j}\rangle \end{vmatrix}}.}
Note that the expression for u k {\displaystyle \mathbf {u} _{k}} is a "formal" determinant, i.e. the matrix contains both scalars and vectors; the meaning of this expression is defined to be the result of a cofactor expansion along the row of vectors.
The determinant formula for the Gram-Schmidt is computationally (exponentially) slower than the recursive algorithms described above; it is mainly of theoretical interest.
Expressed using geometric algebra Expressed using notation used in geometric algebra , the unnormalized results of the Gram–Schmidt process can be expressed as u k = v k − ∑ j = 1 k − 1 ( v k ⋅ u j ) u j − 1 , {\displaystyle \mathbf {u} _{k}=\mathbf {v} _{k}-\sum _{j=1}^{k-1}(\mathbf {v} _{k}\cdot \mathbf {u} _{j})\mathbf {u} _{j}^{-1}\ ,} which is equivalent to the expression using the proj {\displaystyle \operatorname {proj} } operator defined above. The results can equivalently be expressed as[ 4] u k = v k ∧ v k − 1 ∧ ⋅ ⋅ ⋅ ∧ v 1 ( v k − 1 ∧ ⋅ ⋅ ⋅ ∧ v 1 ) − 1 , {\displaystyle \mathbf {u} _{k}=\mathbf {v} _{k}\wedge \mathbf {v} _{k-1}\wedge \cdot \cdot \cdot \wedge \mathbf {v} _{1}(\mathbf {v} _{k-1}\wedge \cdot \cdot \cdot \wedge \mathbf {v} _{1})^{-1},} which is closely related to the expression using determinants above.
References ↑ Cheney Jr., Elliot Ward ; Kincaid, David (2009). Linear Algebra: Theory and Applications . Sudbury, Ma: Jones and Bartlett. pp. 544, 558. ISBN 978-0-7637-5020-6 .↑ Pursell, Lyle; Trimble, SY (1991年1月1日). "ガウス消去法によるグラム・シュミット直交化". The American Mathematical Monthly . 98 (6): 544–549 . doi : 10.2307/2324877 . JSTOR 2324877 . ↑ ドーラン、クリス JL ; ラセンビー、アンソニー (2007). 物理学者のための幾何代数 . ケンブリッジ大学出版局. p. 124. ISBN 978-0-521-71595-9 。↑ Pursell, Yukihiro; et al. (2011). "Kコンピュータ上での10万原子からなるシリコンナノワイヤの電子状態の第一原理計算". 2011年高性能コンピューティング、ネットワーキング、ストレージ、分析に関する国際会議議事録 . pp. 1:1–1:11. doi : 10.1145/2063384.2063386 . ISBN 9781450307710 . S2CID 14316074 . ↑ マーティン・グレッチェル ; Lovász, ラスロー ; Schrijver, Alexander (1993)、 「幾何学的アルゴリズムと組み合わせ最適化」 、アルゴリズムと組み合わせ、第 1 巻。 2 (第 2 版)、Springer-Verlag、ベルリン、 土井 : 10.1007/978-3-642-78240-4 、 ISBN 978-3-642-78242-8 MR 1261419
注記 ↑ 複素数の場合、これは内積が最初の引数に関して線形であり、2番目の引数に関して共役線形であると仮定しています。物理学では、2番目の引数に関して線形であるという慣例がより一般的であり、その場合、次のように定義します。プロジェクト u ( v ) = ⟨ u 、 v ⟩ ⟨ u 、 u ⟩ u 。 {\displaystyle \operatorname {proj} _{\mathbf {u} }(\mathbf {v} )={\frac {\langle \mathbf {u} ,\mathbf {v} \rangle }{\langle \mathbf {u} ,\mathbf {u} \rangle }}\,\mathbf {u} .}
情報源 Bau III, David; Trefethen, Lloyd N. (1997), Numerical linear algebra , Philadelphia: Society for Industrial and Applied Mathematics, ISBN 978-0-89871-361-9 。Golub, Gene H. ; Van Loan, Charles F. (1996), Matrix Computations (3rd ed.), Johns Hopkins, ISBN 978-0-8018-5414-9 。グリューブ、ヴェルナー(1975)、『線形代数 (第4 版)』、シュプリンガー 。Soliverez, CE; Gagliano, E. (1985)、「平面上の直交化:幾何学的アプローチ」(PDF) 、Mex. J. Phys. 、31 (4):743–758 、 2014年3月7日にオリジナル(PDF) からアーカイブ、2013年6月22日 に取得 。
外部リンク 「直交化」、数学百科事典 、EMS Press 、2001年 [1994年] ハーベイ・マッド大学数学チュートリアル:グラム・シュミットのアルゴリズム 数学用語の最も古い使用例: G「グラム・シュミット直交化」の項目には、この方法の起源に関する情報と参考文献があります。 デモ:平面上のグラム・シュミット法と空間上のグラム・シュミット法 グラム・シュミット直交化アプレット n個のm次ベクトルのNAGグラム・シュミット直交化ルーチン 証明:Raymond Puzio、Keenan Kidwell。「グラム・シュミット直交化アルゴリズムの証明」(バージョン8)。PlanetMath.org。