JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

Gram-Schmidt:造出直角

取任意一組傾斜的基,把它扳正成乾淨的直角。Gram-Schmidt 透過減去投影來去掉重疊,再做歸一化——其結果正是 QR 分解裡的那個 Q。

問題:一組傾斜的基

一組只要相互獨立就夠了;它不必是垂直的。實踐中,你常常拿到的是一組完全合格、卻很傾斜的基,裡面的向量互相倚靠。它們仍然張成整個空間,但座標很彆扭,重疊也攪亂了圖景。我們更想要的是標準正交的黃金標準。

減去重疊,再歸一化

訣竅就是上一篇裡純粹的投影。把第一個向量留作你的第一個方向。對第二個向量,問一句:它已經有多少分量沿著第一個方向?把那部分投影減掉,剩下的誤差就垂直於第一個方向——正是我們想要的。對每個新向量重複此法,減去它與此前已固定的每個方向的重疊。

  1. 令 u1 = v1(保留第一個向量的方向)。
  2. 令 u2 = v2 - proj_u1(v2):減去 v2 與 u1 的重疊。
  3. 繼續下去:每個新的 u 都減去它在所有更早的 u 上的投影。
  4. 最後把每個 u 除以它的範數,使其成為單位長度:q = u / norm(u)。
v1=(1,1), v2=(2,0)
u1 = (1,1)
proj_u1(v2) = ((u1 dot v2)/(u1 dot u1)) * u1
            = (2/2)*(1,1) = (1,1)
u2 = v2 - (1,1) = (1,-1)
check: u1 dot u2 = 1*1 + 1*(-1) = 0   (perpendicular!)
q1 = (1,1)/sqrt(2),  q2 = (1,-1)/sqrt(2)
兩個傾斜的向量被扳成直角,再做歸一化。

這就是 QR 裡的 Q

Gram-Schmidt 不只是一道整潔的練習——它是一座工廠。把它跑在一個矩陣 A 的列上,你得到的標準正交向量就成為正交矩陣 Q 的列。「減掉了多少、又重新縮放了多少」這些帳目,自己記錄在一個上三角矩陣 R 裡,於是 A = Q R,這就是 QR 分解