QR 분해란?
QR 분해(QR factorization, QR decomposition)는 선형대수에서 가장 기본이 되는 기법으로, 행렬 A를 두 행렬의 곱 \(\mathbf{A} = \mathbf{Q}\,\mathbf{R}\) 형태로 나타내는 방법입니다. 여기서 Q는 직교행렬(열벡터들이 서로 수직인 단위벡터라서 \(\mathbf{Q}^{\mathsf{T}}\mathbf{Q} = \mathbf{I}\)를 만족)이고, R은 상삼각행렬입니다. 이 분해는 특정 국가나 표기 관습과 무관하게 모든 실수 행렬에 적용되며, 전 세계 수치 계산 분야에서 표준적으로 쓰입니다.
$$\mathbf{A} = \mathbf{Q}\,\mathbf{R}, \quad \mathbf{Q}^{\mathsf{T}}\mathbf{Q} = \mathbf{I},\ \ \mathbf{R}\ \text{upper triangular}$$
QR 분해는 선형 연립방정식을 풀거나, 최소제곱(least-squares) 회귀를 구하거나, QR 알고리즘을 통해 고윳값을 찾을 때 폭넓게 활용됩니다. 행렬을 직접 역행렬로 구하는 것보다 수치적으로 훨씬 안정적이기 때문에, 다양한 과학·공학 소프트웨어에 빠짐없이 등장합니다.
계산기 사용법
행렬 입력 방법은 아주 간단합니다.
- 한 행 안의 값들은 쉼표(,)로 구분합니다.
- 각 행은 파이프 기호( | )로 구분합니다.
- 예를 들어 (1, 2) 행과 (3, 4) 행으로 이루어진 행렬은
1,2|3,4로 입력합니다.
입력 후 계산을 실행하면 직교행렬 Q와 상삼각행렬 R이 함께 출력되므로, 둘을 곱했을 때 원래 행렬이 그대로 복원되는지 직접 확인할 수 있습니다.
공식 풀이
가장 널리 쓰이는 방법은 그람–슈미트(Gram–Schmidt) 과정입니다. 행렬 A의 열벡터 \(a_1, a_2, \ldots\)가 주어지면, 알고리즘은 다음과 같이 정규직교(orthonormal) 벡터 집합을 만들어 나갑니다.
- 첫 번째 열벡터를 정규화하여 \(q_1\)을 구합니다.
- 이후의 각 열벡터에서는 이미 구해 둔 q 벡터들로의 사영(projection)을 빼낸 뒤, 남은 부분을 정규화합니다.
- R의 원소는 내적 \(r_{ij} = q_i \cdot a_j\)로 계산됩니다. 앞쪽 q 벡터가 뒤쪽 열에 의존하지 않기 때문에 R은 자연스럽게 상삼각행렬이 됩니다.
예제 풀이
A = 1,1|0,1|1,0(3×2 행렬)를 살펴봅시다. 첫 번째 열을 정규화하면 \(q_1 = (0.707, 0, 0.707)\)이 됩니다. 두 번째 열에서 이 \(q_1\) 방향 사영을 빼고 정규화하면 \(q_2\)를 얻습니다. 그 결과 열벡터가 모두 단위 길이이면서 서로 수직인 직교행렬 Q가 만들어지고, R에는 사영 계수가 담깁니다. \(Q \times R\)을 계산하면 원래의 A가 그대로 복원되어 분해가 올바르게 이루어졌음을 확인할 수 있습니다.
자주 묻는 질문
행렬이 반드시 정사각형이어야 하나요? 아닙니다. QR 분해는 \(m \geq n\)인 모든 m×n 행렬에 적용됩니다. 바로 이 점 덕분에 미지수보다 방정식이 더 많은 최소제곱 문제에서 특히 유용하게 쓰입니다.
QR 분해는 유일한가요? R의 대각 원소 부호를 제외하면 유일합니다. 보통은 R의 대각 원소를 양수로 고정하여 답을 하나로 정합니다.
역행렬을 구하는 대신 QR을 쓰는 이유는? QR 분해는 수치적으로 더 안정적이며, 역행렬을 직접 계산할 때 생기는 반올림 오차를 피할 수 있어 결과의 신뢰도가 높아집니다.