seegongsik
工業数学 わかりやすく

グラムシュミット わかりやすく

歪んだ基底から射影を引いて直交正規基底を作る、QR の Q がまさにこれだ

二つのベクトルが斜めに寄り添っているとしましょう。同じ平面を張りますが、互いに直角でもなく長さもまちまちで、計算には不便です。グラム・シュミットは、このゆがんだ基底をまっすぐに伸ばす手順です。最初の向きはそのまま残し、第二のベクトルからは第一のほうへ落ちる影、つまり射影を引きます。すると第一に垂直な成分だけが残ります。最後に両方の長さを 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 はその過程で引いた射影の係数を入れた上三角行列です。

実際に使うグラム・シュミットは、斜めの基底 a1、a2、… を正規直交基底 u1、u2、… に伸ばす手順です。最初のベクトルは長さだけ 1 に縮めて u1 とし、次のベクトルごとに、それまでに作った u 方向への射影を引いてから長さを合わせます。射影を引く一動作が平行成分を消し、垂直成分だけを残して直角の単位フレームを作ります。出発ベクトルによって結果は変わり、最初の向きは残ります。二つの入力がほぼ平行なら張る次元がなく、手順は崩れます。伸ばした u を列に集めると直交行列 Q、つまり Qᵀ Q = I になり、これが QR 分解の Q です。最小二乗、QR アルゴリズム、数値線形代数の安定は、この手順の上に立ちます。ゆがんだ基底も、まっすぐに伸ばせます。
← 工業数学 わかりやすく
このページがお役に立ったなら支援する