하우스홀더 변환을 이용한 QR 분해는 고전적인 그람-슈미트 정규화 방법보다 더 수치적으로 안정적이며, 특히 대규모 행렬을 다룰 때 유리한 방법이다. 하우스홀더 변환은 주어진 벡터를 특정 방향으로 반사(reflection)시켜 원하는 형태의 행렬을 생성하는 데 사용된다.

하우스홀더 변환의 정의

하우스홀더 변환은 벡터 \mathbf{v}를 다른 벡터 \mathbf{u}로 반사시키는 직교 변환으로 정의된다. 이 변환은 주어진 벡터를 특정 평면에 대해 대칭적으로 반사하는 과정을 통해 이루어진다.

하우스홀더 변환 행렬 \mathbf{H}는 다음과 같이 정의된다:

\mathbf{H} = \mathbf{I} - 2\frac{\mathbf{u}\mathbf{u}^\top}{\mathbf{u}^\top \mathbf{u}}

여기서: - \mathbf{I}는 단위 행렬(identity matrix)이다. - \mathbf{u}는 반사 방향을 정의하는 벡터로, \mathbf{u} = \mathbf{v} - \mathbf{e}_1 \|\mathbf{v}\|로 설정할 수 있다. - \mathbf{e}_1은 첫 번째 기저 벡터이다.

하우스홀더 변환의 성질

하우스홀더 변환은 다음과 같은 중요한 성질을 가진다:

  1. 직교성: \mathbf{H}는 직교 행렬이다. 즉, \mathbf{H}^\top \mathbf{H} = \mathbf{I}가 성립한다.
  2. 대칭성: \mathbf{H}는 대칭 행렬이다. 즉, \mathbf{H}^\top = \mathbf{H}가 성립한다.
  3. 역행렬: 하우스홀더 변환의 역행렬은 자기 자신이다. 즉, \mathbf{H}^{-1} = \mathbf{H}이다.

QR 분해에 하우스홀더 변환 적용

하우스홀더 변환을 이용해 주어진 행렬 \mathbf{A}를 QR 분해하는 과정은 다음과 같다. 여기서 \mathbf{A}m \times n 행렬이고, 이 때 m \geq n을 가정한다.

  1. 첫 번째 열에 대한 변환:
  2. 첫 번째 열 벡터 \mathbf{a}_1에 대해, 이 벡터를 특정 방향으로 반사시키는 하우스홀더 변환 \mathbf{H}_1을 계산한다.
  3. 이 때 \mathbf{H}_1 \mathbf{A}는 첫 번째 열이 \|\mathbf{a}_1\|을 제외하고 모두 0인 형태가 된다.

  4. 다음 열에 대한 반복적 변환:

  5. 하우스홀더 변환은 반복적으로 적용되어, 각각의 열 벡터에 대해 동일한 과정이 수행된다.
  6. 각 단계에서 \mathbf{H}_k가 계산되고, 새로운 행렬 \mathbf{H}_k \cdots \mathbf{H}_1 \mathbf{A}가 계산된다.
  7. 이 과정을 통해 상삼각 행렬 \mathbf{R}이 만들어진다.

  8. 최종 QR 분해:

  9. 최종적으로 \mathbf{A} = \mathbf{Q}\mathbf{R}로 분해된다.
  10. 여기서 \mathbf{Q}는 각 단계에서 계산된 하우스홀더 행렬의 곱으로 주어지며, 직교 행렬이다.
  11. \mathbf{R}은 상삼각 행렬이다.

하우스홀더 변환의 예시

예를 들어, 3 \times 3 행렬 \mathbf{A}가 주어졌다고 하자:

\mathbf{A} = \begin{bmatrix} 4 & 1 & 3 \\ 2 & 4 & 1 \\ 1 & 2 & 3 \end{bmatrix}
  1. 첫 번째 열 벡터 \mathbf{a}_1 = \begin{bmatrix} 4 \\ 2 \\ 1 \end{bmatrix}에 대해 하우스홀더 벡터 \mathbf{u}_1를 계산한다:
\mathbf{u}_1 = \mathbf{a}_1 - \mathbf{e}_1 \|\mathbf{a}_1\|
  1. 하우스홀더 변환 행렬 \mathbf{H}_1를 계산하고, 이를 \mathbf{A}에 적용하여 첫 번째 열을 변환한다.

  2. 다음으로, \mathbf{A}_2의 두 번째 열에 대해 동일한 과정을 반복한다.

  3. 이 과정이 모두 끝나면, 상삼각 행렬 \mathbf{R}과 직교 행렬 \mathbf{Q}가 계산된다.

하우스홀더 변환의 구체적 계산 과정

하우스홀더 변환을 이용한 QR 분해의 구체적인 계산 과정을 3 \times 3 행렬 \mathbf{A}에 대해 자세히 살펴보자.

주어진 행렬 \mathbf{A}는 다음과 같다:

\mathbf{A} = \begin{bmatrix} 4 & 1 & 3 \\ 2 & 4 & 1 \\ 1 & 2 & 3 \end{bmatrix}

1단계: 첫 번째 하우스홀더 변환

첫 번째 열 벡터 \mathbf{a}_1 = \begin{bmatrix} 4 \\ 2 \\ 1 \end{bmatrix}에 대해, 벡터 \mathbf{a}_1을 단위 벡터 \mathbf{e}_1 = \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} 방향으로 반사하는 하우스홀더 변환 행렬 \mathbf{H}_1을 계산한다.

우선, \mathbf{u}_1을 다음과 같이 정의한다:

\mathbf{u}_1 = \mathbf{a}_1 - \mathbf{e}_1 \|\mathbf{a}_1\| = \begin{bmatrix} 4 \\ 2 \\ 1 \end{bmatrix} - \begin{bmatrix} 5 \\ 0 \\ 0 \end{bmatrix} = \begin{bmatrix} -1 \\ 2 \\ 1 \end{bmatrix}

\mathbf{u}_1의 크기를 계산하자:

\|\mathbf{u}_1\| = \sqrt{(-1)^2 + 2^2 + 1^2} = \sqrt{6}

따라서 \mathbf{v}_1을 다음과 같이 구할 수 있다:

\mathbf{v}_1 = \frac{\mathbf{u}_1}{\|\mathbf{u}_1\|} = \frac{1}{\sqrt{6}}\begin{bmatrix} -1 \\ 2 \\ 1 \end{bmatrix}

하우스홀더 변환 행렬 \mathbf{H}_1은 다음과 같다:

\mathbf{H}_1 = \mathbf{I} - 2\mathbf{v}_1\mathbf{v}_1^\top

여기서 \mathbf{v}_1\mathbf{v}_1^\top는 다음과 같이 계산된다:

\mathbf{v}_1\mathbf{v}_1^\top = \frac{1}{6}\begin{bmatrix} 1 & -2 & -1 \\ -2 & 4 & 2 \\ -1 & 2 & 1 \end{bmatrix}

따라서 \mathbf{H}_1는 다음과 같다:

\mathbf{H}_1 = \mathbf{I} - \begin{bmatrix} \frac{1}{3} & -\frac{2}{3} & -\frac{1}{3} \\ -\frac{2}{3} & \frac{4}{3} & \frac{2}{3} \\ -\frac{1}{3} & \frac{2}{3} & \frac{1}{3} \end{bmatrix} = \begin{bmatrix} \frac{2}{3} & \frac{2}{3} & \frac{1}{3} \\ \frac{2}{3} & -\frac{2}{3} & \frac{2}{3} \\ \frac{1}{3} & \frac{2}{3} & -\frac{2}{3} \end{bmatrix}

\mathbf{H}_1\mathbf{A}에 적용하여 첫 번째 열을 변환하면, 다음과 같은 행렬 \mathbf{A}_1이 얻어진다:

\mathbf{A}_1 = \mathbf{H}_1 \mathbf{A} = \begin{bmatrix} 5 & 1 & 3 \\ 0 & 4 & 1 \\ 0 & 2 & 3 \end{bmatrix}

이제 첫 번째 열이 목표하는 형태인 \begin{bmatrix} 5 \\ 0 \\ 0 \end{bmatrix}으로 변환되었다.

2단계: 두 번째 하우스홀더 변환

다음으로, \mathbf{A}_1의 두 번째 열에 대해 하우스홀더 변환을 적용한다. 이때 두 번째 열의 하위 2 \times 1 서브벡터 \mathbf{a}_2' = \begin{bmatrix} 4 \\ 2 \end{bmatrix}에 대해 반사를 수행한다.

이 벡터를 단위 벡터 \mathbf{e}_1 = \begin{bmatrix} 1 \\ 0 \end{bmatrix} 방향으로 반사하는 하우스홀더 변환 행렬 \mathbf{H}_2'를 계산한다.

벡터 \mathbf{u}_2를 다음과 같이 정의한다:

\mathbf{u}_2 = \mathbf{a}_2' - \mathbf{e}_1 \|\mathbf{a}_2'\| = \begin{bmatrix} 4 \\ 2 \end{bmatrix} - \begin{bmatrix} \sqrt{20} \\ 0 \end{bmatrix} = \begin{bmatrix} 4 - \sqrt{20} \\ 2 \end{bmatrix}

이제 \mathbf{H}_2'를 계산하여 \mathbf{A}_1에 적용하면 다음과 같은 행렬 \mathbf{R}이 얻어진다:

\mathbf{R} = \mathbf{H}_2' \mathbf{A}_1 = \begin{bmatrix} 5 & 1 & 3 \\ 0 & \sqrt{20} & r_{23} \\ 0 & 0 & r_{33} \end{bmatrix}

최종 QR 분해 결과

최종적으로, \mathbf{Q} 행렬은 하우스홀더 변환 행렬의 곱으로 구성되며, \mathbf{R} 행렬은 상삼각 행렬이다. 이와 같이 QR 분해가 완성된다:

\mathbf{A} = \mathbf{Q}\mathbf{R}

여기서:

\mathbf{Q} = \mathbf{H}_1^\top \mathbf{H}_2^\top \quad \text{및} \quad \mathbf{R} = \mathbf{H}_2' \mathbf{A}_1

결론적으로 하우스홀더 변환을 통해 얻어진 QR 분해는 \mathbf{A}를 직교 행렬 \mathbf{Q}와 상삼각 행렬 \mathbf{R}의 곱으로 표현하며, 특히 수치적 안정성과 효율성이 요구되는 상황에서 유용하다.