Линейная алгебра · Ортогональная проекция

Ортогональная проекция

Ортогональная проекция вектора b на подпространство — это точка p подпространства, ближайшая к b. Ошибка e = b − p перпендикулярна подпространству, а любая другая его точка q дальше: |b − q|² = |e|² + |p − q|².

Ортогональная проекция в этой визуализации

Ортогональная проекция находит в подпространстве точку, ближайшую к данному вектору. Здесь подпространство SS — плоскость или прямая через начало координат O, а вектор — b⃗\vec b. Его проекция p⃗\vec p лежит в SS, и ошибка e⃗=b⃗−p⃗\vec e = \vec b - \vec p перпендикулярна SS. Можно двигать b⃗\vec b и менять SS, сравнивать p⃗\vec p с любой другой точкой SS и наблюдать, когда тени b⃗\vec b на двух осях в сумме дают p⃗\vec p.

Почему прямой угол даёт ближайшую точку? Возьмите любую другую точку qq в SS. Отрезок от 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

Значит, b⃗\vec b находится дальше от qq, чем от p⃗\vec p, если только qq не совпадает с p⃗\vec p. Верно и обратное. Если бы e⃗\vec e наклонялся в каком-либо направлении внутри SS, небольшой сдвиг p⃗\vec p в этом направлении приблизил бы его к b⃗\vec b. Поэтому в плоскости ближайшая точка — та, в которой e⃗\vec e перпендикулярен и u⃗\vec u, и w⃗\vec w. На прямой достаточно перпендикулярности к 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: это один шаг процесса Грама–Шмидта. Плоскость остаётся прежней, но теперь её оси перпендикулярны, и сумма теней равна p⃗\vec p для любого b⃗\vec b.

Диагональ через (1,1,1)(1, 1, 1) даёт знакомый пример. Проецирование b⃗\vec b на эту прямую заменяет каждую координату b⃗\vec b средним всех его координат, а ∣e⃗∣2|\vec e|^2 равно сумме квадратов отклонений от этого среднего. Регрессия методом наименьших квадратов использует такой же вид проекции.

Управление

  • Точка на b⃗\vec b перемещает его параллельно SS, и p⃗\vec p следует за ним. Небольшое кольцо за точкой перемещает b⃗\vec b перпендикулярно SS, а p⃗\vec p остаётся на месте.
  • В режиме Плоскость векторы u⃗\vec u и w⃗\vec w можно перетаскивать только внутри их плоскости. Чтобы изменить плоскость, введите новые координаты или используйте клавиши значений.

Связанные темы