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 平行,二者朝同一方向,要张的平面便塌掉,垂直分量趋于零。那一刻造不出正交归一框架,于是弹出警告。这意味着几乎平行的基底无法被捋直。

格拉姆-施密特的结果取决于你从哪个向量出发,因为唯独第一个向量的方向被保留下来。用开关切换出发顺序。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 算法、数值线性代数的稳定性,全都立在这一个步骤上。再歪斜的基底,归根结底也能被捋直。
工程数学
如果有帮助,请支持我们