QR 분해(QR decomposition)는 선형대수학에서 중요한 행렬 분해 기법 중 하나로, 주어진 행렬을 두 개의 행렬, 즉 직교 행렬과 상삼각 행렬의 곱으로 표현하는 방법이다. 이 절차는 행렬의 성질을 분석하고 계산을 간소화하는 데 사용되며, 다양한 수학적 및 공학적 문제에서 필수적인 도구로 활용된다. 이 절에서는 QR 분해의 기본 개념과 이를 수행하는 절차에 대해 상세히 다루겠다.
1. QR 분해의 정의
QR 분해는 실수 또는 복소수 행렬 \mathbf{A}를 다음과 같이 두 행렬의 곱으로 분해하는 방법이다:
여기서, - \mathbf{Q}는 직교 행렬(orthogonal matrix)로, 열 벡터들이 서로 직교하고 각 열 벡터의 길이가 1인 행렬이다. 즉, \mathbf{Q}^T \mathbf{Q} = \mathbf{I}를 만족한다. - \mathbf{R}은 상삼각 행렬(upper triangular matrix)로, 주대각선 아래의 모든 원소가 0인 행렬이다.
2. QR 분해의 기본 아이디어
QR 분해는 행렬 \mathbf{A}의 열 벡터들을 직교화하고, 그 결과를 상삼각 행렬과 곱하는 방식으로 표현한다. 이러한 분해는 다음과 같은 주요 이점들을 제공한다:
- 선형 독립성 확인: QR 분해를 통해 행렬 \mathbf{A}의 열 벡터들이 선형적으로 독립인지 확인할 수 있다. \mathbf{R}이 상삼각 행렬이므로, 대각 성분이 0이 아닌 한 \mathbf{A}의 열 벡터들은 선형적으로 독립이다.
- 계산의 단순화: QR 분해는 선형 시스템의 해를 구하는 데 있어서, 특히 최소 제곱 문제와 같은 응용에서 계산을 단순화시킨다.
3. QR 분해의 직관적 이해
행렬 \mathbf{A}의 QR 분해는 다음과 같은 단계로 요약될 수 있다:
-
직교화(Orthogonalization): 행렬 \mathbf{A}의 열 벡터들을 직교 벡터 집합으로 변환한다. 이 과정에서 그람-슈미트 정규화(Gram-Schmidt normalization)와 같은 방법이 사용될 수 있다.
-
정규화(Normalization): 직교화된 벡터들을 단위 벡터로 변환하여 직교 행렬 \mathbf{Q}를 만든다. 이 단계에서 각 벡터의 크기를 1로 만든다.
-
상삼각 행렬 \mathbf{R}의 계산: \mathbf{R}은 원래 행렬 \mathbf{A}의 열 벡터가 \mathbf{Q}의 열 벡터에 얼마나 기여하는지를 나타내는 상삼각 행렬로, \mathbf{Q}^T \mathbf{A}를 통해 계산된다.
4. QR 분해의 절차 개요
QR 분해를 수행하는 일반적인 절차는 다음과 같다:
-
입력 행렬 \mathbf{A}: QR 분해를 수행할 행렬 \mathbf{A}를 정의한다. \mathbf{A}는 일반적으로 m \times n 크기의 행렬로 가정한다.
-
직교 행렬 \mathbf{Q}의 계산:
- 행렬 \mathbf{A}의 열 벡터들을 순차적으로 직교화하여 새로운 직교 벡터들을 생성한다.
- 각 직교 벡터를 정규화하여 단위 벡터를 만든다.
- 이 단위 벡터들로 구성된 행렬이 바로 \mathbf{Q}이다.
-
상삼각 행렬 \mathbf{R}의 계산:
- \mathbf{R}은 행렬 \mathbf{Q}와 \mathbf{A}의 관계를 표현하는 상삼각 행렬이다.
- \mathbf{R}의 계산은 \mathbf{Q}^T \mathbf{A}로부터 얻어지며, 이는 행렬 \mathbf{Q}가 \mathbf{A}에 얼마나 기여하는지를 나타낸다.
-
결과 결합:
- 마지막으로, 계산된 \mathbf{Q}와 \mathbf{R}을 곱하여 원래의 행렬 \mathbf{A}를 재구성할 수 있는지 확인한다.
- 이 단계는 QR 분해가 올바르게 수행되었는지 검증하는 과정이다.
5. QR 분해의 예제
QR 분해를 보다 구체적으로 이해하기 위해 간단한 예제를 통해 그 절차를 살펴보겠다. 다음과 같은 2 \times 2 행렬 \mathbf{A}를 고려해보겠다:
5.1 직교 행렬 \mathbf{Q}의 계산
첫 번째 단계는 행렬 \mathbf{A}의 열 벡터들을 직교화하는 것이다. \mathbf{A}의 첫 번째 열 벡터를 \mathbf{a}_1 = \begin{pmatrix} 1 \\ 1 \end{pmatrix}, 두 번째 열 벡터를 \mathbf{a}_2 = \begin{pmatrix} 1 \\ -1 \end{pmatrix}라고 하겠다.
먼저, \mathbf{a}_1을 정규화하여 \mathbf{q}_1을 얻는다:
다음으로, \mathbf{a}_2에 대해 \mathbf{q}_1과 직교하도록 직교화한다:
이제 \mathbf{u}_2를 정규화하여 \mathbf{q}_2를 구한다:
이렇게 해서 직교 행렬 \mathbf{Q}를 얻는다:
5.2 상삼각 행렬 \mathbf{R}의 계산
다음으로, 상삼각 행렬 \mathbf{R}을 계산한다. \mathbf{R}은 \mathbf{Q}^T \mathbf{A}로 계산된다:
이로써, QR 분해의 결과로 행렬 \mathbf{A}는 다음과 같이 분해된다:
5.3 일반적인 절차의 적용
위의 예제는 2 \times 2 행렬을 사용하여 QR 분해의 기본 절차를 보여주었다. 이 과정은 더 큰 행렬에 대해서도 동일한 방식으로 적용될 수 있다. 즉, 열 벡터의 직교화, 정규화, 그리고 상삼각 행렬의 계산을 통해 복잡한 행렬의 분해가 가능한다.
6. QR 분해의 다양한 계산 방법 개요
QR 분해를 수행하는 데에는 여러 가지 방법이 있으며, 각 방법은 특정 상황에서의 효율성과 수치적 안정성을 고려하여 선택된다. 여기에서는 QR 분해의 주요 계산 방법들을 간략히 소개한다.
6.1 그람-슈미트 정규화
그람-슈미트 정규화는 가장 직관적인 QR 분해 방법이다. 이 방법은 행렬의 열 벡터들을 순차적으로 직교화하여 \mathbf{Q} 행렬을 생성하고, 그에 따라 \mathbf{R}을 계산한다. 그러나 이 방법은 수치적 안정성에서 다소 문제가 있을 수 있다. 특히, 큰 규모의 행렬에서는 계산 오차가 누적되어 결과의 정확성이 떨어질 수 있다.
6.2 하우스홀더 변환
하우스홀더 변환은 QR 분해에서 가장 널리 사용되는 방법 중 하나로, 직교 행렬 \mathbf{Q}를 생성하기 위해 하우스홀더 행렬을 반복적으로 적용하는 방식이다. 이 방법은 그람-슈미트 정규화에 비해 수치적으로 더 안정적이며, 대규모 행렬에 적합한다.
6.3 기븐스 회전
기븐스 회전은 \mathbf{Q} 행렬을 생성하기 위해 연속적인 회전 변환을 적용하는 방법이다. 이 방법은 주로 스파스 행렬이나 특정한 구조를 가진 행렬에 대해 효율적이다. 회전 변환을 통해 상삼각 행렬 \mathbf{R}을 점진적으로 구성할 수 있다.