グラムシュミット わかりやすく
二つのベクトルが斜めに寄り添っているとしましょう。同じ平面を張りますが、互いに直角でもなく長さもまちまちで、計算には不便です。グラム・シュミットは、このゆがんだ基底をまっすぐに伸ばす手順です。最初の向きはそのまま残し、第二のベクトルからは第一のほうへ落ちる影、つまり射影を引きます。すると第一に垂直な成分だけが残ります。最後に両方の長さを 1 に合わせると、直角に交わる単位フレームが出ます。傾いた二つのベクトルが正規直交になる過程を、段階の図が踏んでいきます。こうして伸ばした枠が、QR 分解の Q です。金色が射影で、橙色が引いた残りです。緑が、先に長さを合わせた単位ベクトルです。
ボタンで段階を踏みます。0 段階は、斜めの入力 a1、a2 のままです。1 段階は a1 を長さ 1 に縮めて、最初の緑の単位ベクトル u1 を作ります。2 段階は a2 が u1 のほうへ落とす影、つまり射影 (a2·u1)u1 を金色で描きます。a2 の中に u1 方向がどれだけ入っているかを示します。3 段階は a2 からその射影を引いて残った垂直成分 w を橙色にし、長さを 1 に合わせて第二の単位ベクトル u2 を得ます。いま u1 と u2 はちょうど直角に交わります。ゆがんだ二つが、まっすぐな正規直交の一組に伸びます。
グラム・シュミットの中心の動作だけを取り上げます。u1 を x 軸上の単位ベクトルに固定し、青いベクトル a2 をドラッグします。金色の矢印は、a2 が u1 の上に落とす射影 (a2·u1)u1 です。a2 の中にある u1 成分だけを取り出したものです。橙色の矢印は、その射影を引いた残り、a2 から射影を引いたものです。a2 をどこへ引いても、この橙色の残りはいつも u1 とちょうど直角をなします。射影を引くと平行な成分が消え、垂直な成分だけが残るからです。この一回の引き算が、ゆがんだ第二のベクトルを立てる心臓です。残りの橙色が、第二の向きです。
入力がどれほどゆがんでも、出力はまっすぐだということを見ます。a1 は固定し、スライダーで a2 の傾きの角を回します。薄い二つのベクトルが斜めの入力 a1、a2 で、濃く描いた直角の単位フレーム u1、u2 がグラム・シュミットの出力です。入力をどれほど傾けても、出力の u1 と u2 はいつも長さ 1 で互いに直角を保ちます。危ない場所が一つあります。a2 を a1 とほぼ平行にすると張る平面が消え、垂直成分が 0 に近づきます。その瞬間、正規直交フレームは作れず警告が出ます。ほぼ平行な基底は、まっすぐに伸ばせません。警告が出る場所は、二つの矢印が重なる場所です。青い矢印を回すほど、金色の射影の長さが変わります。ボタンの順が手順の順で、数字板の列は図の二つの矢印と同じです。橙色の残りが第二の方向を作り、緑の列と橙の列がその二つの単位ベクトルです。
グラム・シュミットは、どのベクトルから出発するかで結果が変わります。最初のベクトルの向きはそのまま残るからです。ボタンで出発の順を変えます。a1 を先にすると u1 が a1 の向きをたどり、u2 はそれに直角に立ちます。a2 を先にすると u1 が a2 の向きをたどり、u2 がその直角になります。同じ二つの入力で同じ平面を張っても、できた正規直交フレームは互いに違って回っています。どちらも正しい正規直交基底です。最初の向きを錨にする手順なので、誰を第一と呼ぶかが答えを決めます。
伸ばした二つの単位ベクトルを一つの行列に集めます。ボタンで u1、u2 を一つずつ点けると、それぞれ行列 Q の 1 列と 2 列に座ります。下の数字板にその 2×2 の Q が出て、緑の列が u1、橙の列が u2 です。Q の二列は互いに直角な単位ベクトルなので、Q は長さも角度も触らない回転、つまり直交行列です。だから Qᵀ Q = I が成り立ちます。こうして集めた Q が QR 分解の Q です。どの行列 A も A = QR に割れ、Q はグラム・シュミットで伸ばしたこの正規直交の列、R はその過程で引いた射影の係数を入れた上三角行列です。