QR 분해(QR decomposition)는 선형대수학에서 중요한 행렬 분해 기법 중 하나로, 주어진 행렬을 두 개의 행렬, 즉 직교 행렬과 상삼각 행렬의 곱으로 표현하는 방법이다. 이 절차는 행렬의 성질을 분석하고 계산을 간소화하는 데 사용되며, 다양한 수학적 및 공학적 문제에서 필수적인 도구로 활용된다. 이 절에서는 QR 분해의 기본 개념과 이를 수행하는 절차에 대해 상세히 다루겠다.

1. QR 분해의 정의

QR 분해는 실수 또는 복소수 행렬 \mathbf{A}를 다음과 같이 두 행렬의 곱으로 분해하는 방법이다:

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

여기서, - \mathbf{Q}직교 행렬(orthogonal matrix)로, 열 벡터들이 서로 직교하고 각 열 벡터의 길이가 1인 행렬이다. 즉, \mathbf{Q}^T \mathbf{Q} = \mathbf{I}를 만족한다. - \mathbf{R}상삼각 행렬(upper triangular matrix)로, 주대각선 아래의 모든 원소가 0인 행렬이다.

2. QR 분해의 기본 아이디어

QR 분해는 행렬 \mathbf{A}의 열 벡터들을 직교화하고, 그 결과를 상삼각 행렬과 곱하는 방식으로 표현한다. 이러한 분해는 다음과 같은 주요 이점들을 제공한다:

3. QR 분해의 직관적 이해

행렬 \mathbf{A}의 QR 분해는 다음과 같은 단계로 요약될 수 있다:

  1. 직교화(Orthogonalization): 행렬 \mathbf{A}의 열 벡터들을 직교 벡터 집합으로 변환한다. 이 과정에서 그람-슈미트 정규화(Gram-Schmidt normalization)와 같은 방법이 사용될 수 있다.

  2. 정규화(Normalization): 직교화된 벡터들을 단위 벡터로 변환하여 직교 행렬 \mathbf{Q}를 만든다. 이 단계에서 각 벡터의 크기를 1로 만든다.

  3. 상삼각 행렬 \mathbf{R}의 계산: \mathbf{R}은 원래 행렬 \mathbf{A}의 열 벡터가 \mathbf{Q}의 열 벡터에 얼마나 기여하는지를 나타내는 상삼각 행렬로, \mathbf{Q}^T \mathbf{A}를 통해 계산된다.

4. QR 분해의 절차 개요

QR 분해를 수행하는 일반적인 절차는 다음과 같다:

  1. 입력 행렬 \mathbf{A}: QR 분해를 수행할 행렬 \mathbf{A}를 정의한다. \mathbf{A}는 일반적으로 m \times n 크기의 행렬로 가정한다.

  2. 직교 행렬 \mathbf{Q}의 계산:

    • 행렬 \mathbf{A}의 열 벡터들을 순차적으로 직교화하여 새로운 직교 벡터들을 생성한다.
    • 각 직교 벡터를 정규화하여 단위 벡터를 만든다.
    • 이 단위 벡터들로 구성된 행렬이 바로 \mathbf{Q}이다.
  3. 상삼각 행렬 \mathbf{R}의 계산:

    • \mathbf{R}은 행렬 \mathbf{Q}\mathbf{A}의 관계를 표현하는 상삼각 행렬이다.
    • \mathbf{R}의 계산은 \mathbf{Q}^T \mathbf{A}로부터 얻어지며, 이는 행렬 \mathbf{Q}\mathbf{A}에 얼마나 기여하는지를 나타낸다.
  4. 결과 결합:

    • 마지막으로, 계산된 \mathbf{Q}\mathbf{R}을 곱하여 원래의 행렬 \mathbf{A}를 재구성할 수 있는지 확인한다.
    • 이 단계는 QR 분해가 올바르게 수행되었는지 검증하는 과정이다.

5. QR 분해의 예제

QR 분해를 보다 구체적으로 이해하기 위해 간단한 예제를 통해 그 절차를 살펴보겠다. 다음과 같은 2 \times 2 행렬 \mathbf{A}를 고려해보겠다:

\mathbf{A} = \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}

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{q}_1 = \frac{\mathbf{a}_1}{\|\mathbf{a}_1\|} = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 \\ 1 \end{pmatrix}

다음으로, \mathbf{a}_2에 대해 \mathbf{q}_1과 직교하도록 직교화한다:

\mathbf{u}_2 = \mathbf{a}_2 - (\mathbf{q}_1^T \mathbf{a}_2) \mathbf{q}_1
\mathbf{u}_2 = \begin{pmatrix} 1 \\ -1 \end{pmatrix} - \left(\frac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \end{pmatrix} \begin{pmatrix} 1 \\ -1 \end{pmatrix}\right) \mathbf{q}_1
\mathbf{u}_2 = \begin{pmatrix} 1 \\ -1 \end{pmatrix} - 0 \cdot \mathbf{q}_1 = \begin{pmatrix} 1 \\ -1 \end{pmatrix}

이제 \mathbf{u}_2를 정규화하여 \mathbf{q}_2를 구한다:

\mathbf{q}_2 = \frac{\mathbf{u}_2}{\|\mathbf{u}_2\|} = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 \\ -1 \end{pmatrix}

이렇게 해서 직교 행렬 \mathbf{Q}를 얻는다:

\mathbf{Q} = \begin{pmatrix} \mathbf{q}_1 & \mathbf{q}_2 \end{pmatrix} = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}

5.2 상삼각 행렬 \mathbf{R}의 계산

다음으로, 상삼각 행렬 \mathbf{R}을 계산한다. \mathbf{R}\mathbf{Q}^T \mathbf{A}로 계산된다:

\mathbf{R} = \mathbf{Q}^T \mathbf{A} = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix} \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix} = \begin{pmatrix} \sqrt{2} & 0 \\ 0 & \sqrt{2} \end{pmatrix}

이로써, QR 분해의 결과로 행렬 \mathbf{A}는 다음과 같이 분해된다:

\mathbf{A} = \mathbf{Q} \mathbf{R} = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix} \begin{pmatrix} \sqrt{2} & 0 \\ 0 & \sqrt{2} \end{pmatrix} = \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}

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}을 점진적으로 구성할 수 있다.