- Ортогонализация Грама ― Шмидта
-
Процесс Грама ― Шмидта ― наиболее известный алгоритм ортогонализации, при котором по линейно независимой системе
строится ортогональная система
такая, что каждый вектор bi линейно выражается через
, то есть матрица перехода от {ai} к {bi} ― верхнетреугольная матрица. При этом можно добиться того, чтобы система {bi} была ортонормированной и чтобы диагональные элементы матрицы перехода были положительны; этими условиями система {bi} и матрица перехода определяются однозначно.
Этот процесс применим также и к счётной системе векторов.
Процесс Грама ― Шмидта может быть истолкован как разложение невырожденной квадратной матрицы в произведение ортогональной (или унитарной матрицы в случае эрмитова пространства) и верхнетреугольной матрицы с положительными диагональными элементами, что есть частный случай разложения Ивасавы.
Алгоритм
Полагают b1 = a1, и, если уже построены векторы
, то
Геометрический смысл описанного процесса состоит в том, что на каждом шагу вектор bi является перпендикуляром, восстановленным к линейной оболочке векторов
до конца вектора ai.
Нормируя полученные векторы bi,
- ci = bi / | bi |
получают искомую ортонормированную систему {ci}.
Реализация алгоритма
Данный скрипт, предназначенный для пакета { − 2,1,0}, { − 2,0,1}, { − 0.5, − 1,1}
Projection[v1_, v2_] := (v1.v2*v2)/v2.v2
MultipleProjection[v1_, vecs_] := Plus @@ (Projection[v1, #1] &) /@ vecs
GramSchmidt[mat_] := Fold[Join[#1, {#2 - MultipleProjection[#2, #1]}] &, {}, mat]
GramSchmidt[{{-2, 1, 0}, {-2, 0, 1}, {-0.5, -1, 1}}]
NullСвойства
- Произведение длин bi равно объёму параллелепипеда, построенного на векторах системы {ai}, как на рёбрах.
Wikimedia Foundation. 2010.