EssayAI
Блог
Блог
Математика и алгоритмы

Метод Хаусхолдера отражения: схема и пример

16 мая 2026Время чтения: 7 минут
#метод Хаусхолдера#QR-разложение#матрица отражения#ортогональные преобразования#численная устойчивость
Метод Хаусхолдера отражения: схема и пример

Метод Хаусхолдера отражения - это способ за конечное число ортогональных преобразований превратить произвольный столбец (а затем и всю матрицу) в нужный вид, обнуляя выбранные элементы. Геометрически каждое преобразование Хаусхолдера - это зеркальное отражение вектора относительно гиперплоскости, проходящей через начало координат. Благодаря тому, что отражение сохраняет длины и углы, метод Хаусхолдера отражения численно устойчив и служит стандартным инструментом для построения QR-разложения, приведения матрицы к верхней хессенберговой или трёхдиагональной форме и для решения задач наименьших квадратов. Ниже разберём, как строится матрица отражения, как с её помощью обнуляются поддиагональные элементы столбца, и пройдём весь алгоритм на конкретном примере.

Что такое преобразование Хаусхолдера

Преобразование Хаусхолдера задаётся вектором v0v \neq 0 и определяет матрицу отражения

H=I2vvvv,H = I - 2\frac{v v^{\top}}{v^{\top} v},

где II - единичная матрица. Такая матрица обладает двумя ключевыми свойствами: она симметрична (H=HH^{\top} = H) и ортогональна (HH=IH^{\top} H = I), а значит H1=HH^{-1} = H - повторное применение возвращает исходный вектор. Действие HH на произвольный вектор xx есть его отражение относительно гиперплоскости с нормалью vv. При этом норма сохраняется: Hx2=x2\|Hx\|_2 = \|x\|_2. Именно ортогональность отвечает за хорошую обусловленность: метод Хаусхолдера отражения не усиливает ошибки округления так, как это делает исключение Гаусса с делением на малый ведущий элемент.

Дальше - интерактивный построитель: задайте вектор или матрицу, выберите задачу, и модель построит матрицу отражения и выполнит шаги метода Хаусхолдера с подробными выкладками.

Как обнулить столбец одним отражением

Базовая задача метода Хаусхолдера отражения - найти такое HH, чтобы для заданного вектора xx результат HxHx был коллинеарен первому орту, то есть имел вид αe1\alpha e_1. Поскольку отражение сохраняет длину, обязательно α=x2|\alpha| = \|x\|_2. Вектор отражения выбирается как

v=xαe1,α=±x2.v = x - \alpha e_1, \qquad \alpha = \pm\|x\|_2.

Тогда Hx=αe1Hx = \alpha e_1, и все компоненты вектора, кроме первой, обращаются в ноль. Знак α\alpha выбирают противоположным знаку первой компоненты x1x_1, то есть α=sign(x1)x2\alpha = -\operatorname{sign}(x_1)\|x\|_2. Это критически важно для численной устойчивости: при таком выборе разность x1αx_1 - \alpha не подвержена катастрофической потере значащих цифр, которая возникла бы при вычитании двух близких чисел. Нормировать vv не обязательно - формула для HH инвариантна к масштабу vv, но на практике часто используют нормировку v1=1v_1 = 1 и хранят коэффициент β=2/(vv)\beta = 2/(v^{\top} v).

QR-разложение методом Хаусхолдера отражения

Главное применение - построение QR-разложения матрицы ARm×nA \in \mathbb{R}^{m \times n}, то есть представление A=QRA = QR с ортогональной QQ и верхней треугольной RR. Идея: последовательно применять отражения H1,H2,,HnH_1, H_2, \ldots, H_n так, чтобы каждое обнуляло поддиагональные элементы очередного столбца.

На шаге kk берётся подстолбец a(k)a^{(k)} от диагонали вниз и строится отражение HkH_k, обнуляющее всё ниже диагонали в kk-м столбце:

HnH2H1A=R.H_n \cdots H_2 H_1 A = R.

Поскольку каждое HkH_k ортогонально, произведение Q=HnH1Q^{\top} = H_n \cdots H_1 тоже ортогонально, и тогда

Q=H1H2Hn,A=QR.Q = H_1 H_2 \cdots H_n, \qquad A = QR.

Важная деталь реализации: матрицы HkH_k в явном виде не перемножают. Применение отражения к матрице AA выполняется как HA=Av(βvA)H A = A - v(\beta\, v^{\top} A), то есть через два матрично-векторных произведения за O(mn)O(mn) операций вместо O(m2n)O(m^2 n) при явном умножении. Это делает метод Хаусхолдера отражения экономичным: полное QR-разложение стоит примерно 2n2(mn/3)2n^2(m - n/3) флопов. По сравнению с алгоритмом LU-разложения метод Хаусхолдера отражения дороже, но зато сохраняет ортогональность и не требует выбора ведущего элемента для устойчивости. Подробнее о треугольных факторизациях см. в разборе LU-разложения матрицы.

Пошаговый пример

Возьмём первый столбец x=(3,4)x = (3, 4)^{\top}. Тогда x2=5\|x\|_2 = 5, а знак первой компоненты положителен, поэтому α=5\alpha = -5. Вектор отражения:

v=xαe1=(34)(5)(10)=(84).v = x - \alpha e_1 = \begin{pmatrix} 3 \\ 4 \end{pmatrix} - (-5)\begin{pmatrix} 1 \\ 0 \end{pmatrix} = \begin{pmatrix} 8 \\ 4 \end{pmatrix}.

Считаем vv=64+16=80v^{\top} v = 64 + 16 = 80 и матрицу отражения:

H=I280vv=(1001)140(64323216)=(0.60.80.80.6).H = I - \frac{2}{80} v v^{\top} = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} - \frac{1}{40}\begin{pmatrix} 64 & 32 \\ 32 & 16 \end{pmatrix} = \begin{pmatrix} -0.6 & -0.8 \\ -0.8 & 0.6 \end{pmatrix}.

Проверка: Hx=(30.640.8,  30.8+40.6)=(5,0)=αe1Hx = (-3\cdot0.6 - 4\cdot0.8,\; -3\cdot0.8 + 4\cdot0.6)^{\top} = (-5, 0)^{\top} = \alpha e_1. Поддиагональный элемент обнулился, а норма сохранилась (5=5|-5| = 5). Для матрицы n×nn \times n эту процедуру повторяют для каждого столбца, работая каждый раз с уменьшающимся подблоком: на шаге kk отражение действует только на строки и столбцы с индексами от kk до nn, а уже обнулённая часть RR остаётся нетронутой. Если нужна сама матрица QQ, её собирают, применяя отражения в обратном порядке к единичной матрице, либо хранят все векторы vkv_k в компактном виде в обнулённой нижней части AA - так поступают библиотечные реализации (LAPACK), экономя память. При решении системы Ax=bAx = b или задачи наименьших квадратов матрицу QQ вообще не формируют: достаточно последовательно применить отражения к правой части bb, получить QbQ^{\top} b и затем решить треугольную систему Rx=QbRx = Q^{\top} b обратной подстановкой.

Связь с другими ортогональными методами

Метод Хаусхолдера отражения - не единственный способ ортогонального обнуления. Вращения Гивенса обнуляют по одному элементу за раз и удобны для разреженных матриц или дообновления QR, когда к уже разложенной матрице добавляется строка или столбец. Процесс Грама–Шмидта строит ортонормированный базис напрямую, но его классическая версия численно неустойчива из-за накопления ошибок ортогональности; модифицированный Грам–Шмидт лучше, но всё равно уступает отражениям по качеству ортогонализации. Для плотных матриц метод Хаусхолдера отражения - стандарт де-факто: он за один шаг обнуляет целый столбец и сохраняет ортогональность с машинной точностью.

Помимо QR-разложения, отражения Хаусхолдера используют и как первый этап более сложных алгоритмов. Перед поиском собственных значений симметричную матрицу сначала приводят к трёхдиагональной форме серией двусторонних преобразований HAHH A H, а несимметричную - к верхней хессенберговой форме; обе процедуры опираются на те же отражения, что и QR. Аналогично строится двухдиагональная форма как подготовительный шаг к сингулярному разложению. Во всех этих задачах метод Хаусхолдера отражения ценят за то, что он выполняет обнуление за конечное число шагов и не накапливает ошибку, в отличие от итерационных схем.

Частые ошибки

  • Неправильный выбор знака α\alpha: при α=+sign(x1)x\alpha = +\operatorname{sign}(x_1)\|x\| разность x1αx_1 - \alpha теряет точность; всегда берите знак, противоположный x1x_1.
  • Явное перемножение матриц HkH_k: это лишние O(m2)O(m^2) операций на шаг; применяйте отражение как Av(βvA)A - v(\beta v^{\top} A).
  • Нормировка vv на ноль: если столбец уже имеет нулевые поддиагональные элементы, vv может выйти нулевым - этот случай надо обрабатывать отдельно (отражение не нужно).
  • Путаница Q=H1HnQ = H_1\cdots H_n и Q=HnH1Q^{\top} = H_n\cdots H_1: порядок множителей при сборке QQ обратен порядку применения.
  • Забытое деление на vvv^{\top} v: формула H=I2vv/(vv)H = I - 2 vv^{\top}/(v^{\top}v) требует нормирующего знаменателя, иначе HH не будет ортогональной.

FAQ

Чем метод Хаусхолдера отражения лучше вращений Гивенса? Одно отражение обнуляет сразу весь поддиагональный кусок столбца, тогда как одно вращение Гивенса обнуляет лишь один элемент. Для плотных матриц Хаусхолдер требует меньше операций; Гивенс выигрывает на разреженных задачах и при инкрементальном обновлении.

Почему метод численно устойчив? Все преобразования ортогональны, Hx2=x2\|Hx\|_2 = \|x\|_2, поэтому относительные ошибки округления не растут. В отличие от исключения Гаусса, здесь нет деления на потенциально малый ведущий элемент.

Можно ли применять отражения к прямоугольным матрицам? Да. Для ARm×nA \in \mathbb{R}^{m\times n} при mnm \ge n получается «тонкое» QR-разложение, которое используют для решения переопределённых систем методом наименьших квадратов.

Коротко

Метод Хаусхолдера отражения строит ортогональную матрицу H=I2vv/(vv)H = I - 2vv^{\top}/(v^{\top}v), которая отражает вектор так, чтобы обнулить все его компоненты ниже выбранной. Последовательное применение таких отражений к столбцам матрицы даёт устойчивое QR-разложение A=QRA = QR без выбора ведущего элемента. Ключ к точности - выбор знака α=sign(x1)x2\alpha = -\operatorname{sign}(x_1)\|x\|_2 и применение отражений без явного перемножения матриц.

Доверьте текст нейросети EssayAI

Открыть EssayAI

Бесплатно, на русском языке и без VPN

Читайте также