하우스홀더 변환을 이용한 QR 분해는 고전적인 그람-슈미트 정규화 방법보다 더 수치적으로 안정적이며, 특히 대규모 행렬을 다룰 때 유리한 방법이다. 하우스홀더 변환은 주어진 벡터를 특정 방향으로 반사(reflection)시켜 원하는 형태의 행렬을 생성하는 데 사용된다.
하우스홀더 변환의 정의
하우스홀더 변환은 벡터 \mathbf{v}를 다른 벡터 \mathbf{u}로 반사시키는 직교 변환으로 정의된다. 이 변환은 주어진 벡터를 특정 평면에 대해 대칭적으로 반사하는 과정을 통해 이루어진다.
하우스홀더 변환 행렬 \mathbf{H}는 다음과 같이 정의된다:
여기서: - \mathbf{I}는 단위 행렬(identity matrix)이다. - \mathbf{u}는 반사 방향을 정의하는 벡터로, \mathbf{u} = \mathbf{v} - \mathbf{e}_1 \|\mathbf{v}\|로 설정할 수 있다. - \mathbf{e}_1은 첫 번째 기저 벡터이다.
하우스홀더 변환의 성질
하우스홀더 변환은 다음과 같은 중요한 성질을 가진다:
- 직교성: \mathbf{H}는 직교 행렬이다. 즉, \mathbf{H}^\top \mathbf{H} = \mathbf{I}가 성립한다.
- 대칭성: \mathbf{H}는 대칭 행렬이다. 즉, \mathbf{H}^\top = \mathbf{H}가 성립한다.
- 역행렬: 하우스홀더 변환의 역행렬은 자기 자신이다. 즉, \mathbf{H}^{-1} = \mathbf{H}이다.
QR 분해에 하우스홀더 변환 적용
하우스홀더 변환을 이용해 주어진 행렬 \mathbf{A}를 QR 분해하는 과정은 다음과 같다. 여기서 \mathbf{A}는 m \times n 행렬이고, 이 때 m \geq n을 가정한다.
- 첫 번째 열에 대한 변환:
- 첫 번째 열 벡터 \mathbf{a}_1에 대해, 이 벡터를 특정 방향으로 반사시키는 하우스홀더 변환 \mathbf{H}_1을 계산한다.
-
이 때 \mathbf{H}_1 \mathbf{A}는 첫 번째 열이 \|\mathbf{a}_1\|을 제외하고 모두 0인 형태가 된다.
-
다음 열에 대한 반복적 변환:
- 하우스홀더 변환은 반복적으로 적용되어, 각각의 열 벡터에 대해 동일한 과정이 수행된다.
- 각 단계에서 \mathbf{H}_k가 계산되고, 새로운 행렬 \mathbf{H}_k \cdots \mathbf{H}_1 \mathbf{A}가 계산된다.
-
이 과정을 통해 상삼각 행렬 \mathbf{R}이 만들어진다.
-
최종 QR 분해:
- 최종적으로 \mathbf{A} = \mathbf{Q}\mathbf{R}로 분해된다.
- 여기서 \mathbf{Q}는 각 단계에서 계산된 하우스홀더 행렬의 곱으로 주어지며, 직교 행렬이다.
- \mathbf{R}은 상삼각 행렬이다.
하우스홀더 변환의 예시
예를 들어, 3 \times 3 행렬 \mathbf{A}가 주어졌다고 하자:
- 첫 번째 열 벡터 \mathbf{a}_1 = \begin{bmatrix} 4 \\ 2 \\ 1 \end{bmatrix}에 대해 하우스홀더 벡터 \mathbf{u}_1를 계산한다:
-
하우스홀더 변환 행렬 \mathbf{H}_1를 계산하고, 이를 \mathbf{A}에 적용하여 첫 번째 열을 변환한다.
-
다음으로, \mathbf{A}_2의 두 번째 열에 대해 동일한 과정을 반복한다.
-
이 과정이 모두 끝나면, 상삼각 행렬 \mathbf{R}과 직교 행렬 \mathbf{Q}가 계산된다.
하우스홀더 변환의 구체적 계산 과정
하우스홀더 변환을 이용한 QR 분해의 구체적인 계산 과정을 3 \times 3 행렬 \mathbf{A}에 대해 자세히 살펴보자.
주어진 행렬 \mathbf{A}는 다음과 같다:
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{v}_1을 다음과 같이 구할 수 있다:
하우스홀더 변환 행렬 \mathbf{H}_1은 다음과 같다:
여기서 \mathbf{v}_1\mathbf{v}_1^\top는 다음과 같이 계산된다:
따라서 \mathbf{H}_1는 다음과 같다:
\mathbf{H}_1을 \mathbf{A}에 적용하여 첫 번째 열을 변환하면, 다음과 같은 행렬 \mathbf{A}_1이 얻어진다:
이제 첫 번째 열이 목표하는 형태인 \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{H}_2'를 계산하여 \mathbf{A}_1에 적용하면 다음과 같은 행렬 \mathbf{R}이 얻어진다:
최종 QR 분해 결과
최종적으로, \mathbf{Q} 행렬은 하우스홀더 변환 행렬의 곱으로 구성되며, \mathbf{R} 행렬은 상삼각 행렬이다. 이와 같이 QR 분해가 완성된다:
여기서:
결론적으로 하우스홀더 변환을 통해 얻어진 QR 분해는 \mathbf{A}를 직교 행렬 \mathbf{Q}와 상삼각 행렬 \mathbf{R}의 곱으로 표현하며, 특히 수치적 안정성과 효율성이 요구되는 상황에서 유용하다.