线性代数 · 正交投影

正交投影

向量b在一个子空间上的正交投影,是子空间里离b最近的那个点p。误差e = b − p和子空间垂直,子空间里别的点q都更远:|b − q|² = |e|² + |p − q|²。

正交投影与本页画面

正交投影要找的是子空间里离给定向量最近的点。本页的子空间SS是过原点O的平面或直线,给定的向量是b⃗\vec b。b⃗\vec b的投影p⃗\vec p在SS里,误差e⃗=b⃗−p⃗\vec e = \vec b - \vec p和SS成直角。你可以移动b⃗\vec b、改变SS,拿SS里别的点和p⃗\vec p比较,也可以看b⃗\vec b在两根轴上的影子什么时候加起来正好是p⃗\vec p。

为什么直角对应最近?在SS里另取一点qq。从qq到p⃗\vec p的线段在SS里,所以和e⃗\vec e垂直。b⃗\vec b、p⃗\vec p、qq三点构成一个直角三角形,直角在p⃗\vec p处,由勾股定理得

S里别的点都更远
∣b⃗−q∣2=∣e⃗∣2+∣p⃗−q∣2|\vec b - q|^2 = |\vec e|^2 + |\vec p - q|^2

所以只要qq不是p⃗\vec p,b⃗\vec b到qq就比到p⃗\vec p远。反过来也一样:如果e⃗\vec e朝SS里某个方向倾斜,把p⃗\vec p往那边挪一点,就会离b⃗\vec b更近。因此在平面里,最近点就是e⃗\vec e同时垂直于u⃗\vec u和w⃗\vec w的那一点。在直线上,e⃗\vec e垂直于u⃗\vec u就够了。

求p⃗\vec p,就是解这几个直角条件。在直线上,p⃗\vec p是u⃗\vec u的倍数,由e⃗⋅u⃗=0\vec e\cdot\vec u = 0定出这个倍数:

投影到直线上
p⃗=u⃗⋅b⃗u⃗⋅u⃗ u⃗\vec p = \frac{\vec u\cdot\vec b}{\vec u\cdot\vec u}\,\vec u

在平面里,设p⃗=c1u⃗+c2w⃗\vec p = c_1\vec u + c_2\vec w。e⃗⋅u⃗=0\vec e\cdot\vec u = 0和e⃗⋅w⃗=0\vec e\cdot\vec w = 0这两个条件变成关于c1c_1、c2c_2的两个一次方程,叫作法方程:

法方程
(u⃗⋅u⃗) c1+(u⃗⋅w⃗) c2=u⃗⋅b⃗,(w⃗⋅u⃗) c1+(w⃗⋅w⃗) c2=w⃗⋅b⃗(\vec u\cdot\vec u)\,c_1 + (\vec u\cdot\vec w)\,c_2 = \vec u\cdot\vec b,\qquad (\vec w\cdot\vec u)\,c_1 + (\vec w\cdot\vec w)\,c_2 = \vec w\cdot\vec b

读数里,p⃗\vec p既写成坐标,也写成u⃗\vec u、w⃗\vec w的组合。在同一个平面里拖动u⃗\vec u和w⃗\vec w,系数会跟着变,p⃗\vec p却不动。投影只取决于子空间本身,和用哪两个向量来描述它无关。

u⃗\vec u和w⃗\vec w垂直时,两个方程互不牵连。每个系数只和一根轴有关,p⃗\vec p就是b⃗\vec b在两根轴上的影子之和:

只在两根轴垂直时成立
p⃗=b⃗⋅u⃗u⃗⋅u⃗ u⃗+b⃗⋅w⃗w⃗⋅w⃗ w⃗\vec p = \frac{\vec b\cdot\vec u}{\vec u\cdot\vec u}\,\vec u + \frac{\vec b\cdot\vec w}{\vec w\cdot\vec w}\,\vec w

轴是斜的,这个办法一般就不灵了。每个影子都当另一根轴不存在,加起来的ss通常落不到p⃗\vec p上。落不到时,读数也显示b⃗−s\vec b - s至少有一个直角不成立。“让w垂直于u”这个键把w⃗\vec w换成它垂直于u⃗\vec u的那部分,这是格拉姆–施密特正交化的一步。平面还是原来的平面,两根轴却垂直了,这时对任何b⃗\vec b,影子之和都正好是p⃗\vec p。

过(1,1,1)(1, 1, 1)的对角线是个熟悉的例子。把b⃗\vec b投影到这条直线上,b⃗\vec b的每个分量都换成了各分量的平均数,∣e⃗∣2|\vec e|^2就是各分量与平均数之差的平方和。最小二乘回归用的也是这种投影。

操作

  • 拖b⃗\vec b的实心点,b⃗\vec b平行于SS移动,p⃗\vec p跟着走。拖实心点外侧的小圈,b⃗\vec b垂直于SS移动,p⃗\vec p不动。
  • 选了“平面”时,u⃗\vec u和w⃗\vec w只能在所在的平面里拖。要换平面,键入新坐标或用数值键。

相关概念