도구스학업·수학

촐레스키 분해 계산기

대칭 행렬을 A = L·Lᵀ로 쪼개고 되돌려 곱해 원래 행렬이 나오는지 보여 줍니다. 분해가 되는지 여부 자체가 양의 정부호 판정이라, 실패하면 어느 대각에서 왜 멈췄는지도 함께 짚어 줍니다.

한 줄에 한 행씩. 공백이나 쉼표로 칸을 나눕니다. 6×6까지.

3×3 대칭 행렬

양의 정부호 — 분해됩니다

A = L·Lᵀ 로 쪼갰습니다. 되돌려 곱한 값과 원래 행렬의 차이가 최대 0.0e+0로, 실수 연산의 반올림 오차 수준입니다. 행렬식은 대각의 곱 6의 제곱인 36입니다.

크기3×3
대칭
양의 정부호
행렬식 det(A)36
∏ L[j][j]6
(∏ L[j][j])²36
|A − L·Lᵀ| 최대0.0e+0

L — 아래삼각행렬

200
610
-853

위쪽은 전부 0입니다. 파랗게 칠한 대각의 곱이 √det(A)이고, 그래서 det(A) = (∏ L[j][j])²입니다.

L·Lᵀ — 원래 행렬로 돌아온다

412-16
1237-43
-16-4398

입력한 A와 같은 값이 나와야 합니다. 이 계산기에서는 두 행렬의 차이가 최대 0.0e+0입니다.

왼쪽 위부터 한 칸씩 채워 나가기

L[1][1] = √4= 2
L[2][1] = 12 / L[1][1]= 6
L[3][1] = -16 / L[1][1]= -8
L[2][2] = √(37 − 36.0000)= 1
L[3][2] = (-43 − -48.0000) / L[2][2]= 5
L[3][3] = √(98 − 89.0000)= 3

A = L·Lᵀ의 (i, j) 성분을 적어 보면 a[i][j] = Σk≤j L[i][k]·L[j][k]이고, 여기서 아직 모르는 것은 L[i][j] 하나뿐입니다. 그래서 왼쪽 위부터 차례로 값이 정해집니다.

실베스터 판정법 — 선행 주소행렬식

왼쪽 위 k×k행렬식양수인가
1×14양수
2×24양수
3×336양수

선행 주소행렬식이 전부 양수인 것도 양의 정부호의 필요충분조건입니다. 촐레스키와는 아예 다른 길이라 서로를 검산해 줍니다. 위 두 판정이 어긋나면 어느 한쪽이 틀린 것입니다.

LU 분해는 L과 U 두 개를 구하지만 촐레스키는 하나만 구하므로 연산량이 대략 절반입니다 — 촐레스키가 n³/3, LU가 2n³/3입니다. 대칭이라는 정보를 쓰면 절반이 공짜로 사라지는 셈입니다.
대각이 모두 양수라고 양의 정부호인 것은 아닙니다. 위 예시의 「대각은 양수지만」을 눌러 보면 [[1, 2], [2, 1]]의 대각이 둘 다 1인데도 두 번째 대각에서 제곱근 안이 1 − 4 = −3이 되어 멈춥니다. 이 행렬의 고윳값은 3과 −1입니다.

계산 방법

  1. 1대칭 행렬을 한 줄에 한 행씩 적습니다. 공백이나 쉼표로 칸을 나눕니다. 6×6까지 다룹니다.
  2. 2L을 왼쪽 위부터 한 칸씩 채워 나가는 과정을 단계 표에서 확인합니다.
  3. 3L·Lᵀ 칸에서 원래 행렬이 그대로 돌아오는지 봅니다.
  4. 4분해가 실패하면 어느 대각에서 제곱근 안이 음수가 됐는지 나옵니다. 그것이 양의 정부호가 아니라는 증명입니다.

자주 묻는 질문

대칭 양의 정부호 행렬 A를 아래삼각행렬 L 하나로 A = L·Lᵀ 꼴로 쪼개는 것입니다. LU 분해가 L과 U 두 개를 구하는 데 비해 하나만 구하면 되므로 연산량이 대략 절반입니다 — 촐레스키는 n³/3, LU는 2n³/3입니다. 대칭이라는 정보를 쓰면 절반이 공짜로 사라지는 셈입니다.

A = L·Lᵀ의 (i, j) 성분을 적어 보면 a[i][j] = Σ_{k≤j} L[i][k]·L[j][k]이고, 여기서 아직 모르는 것은 L[i][j] 하나뿐입니다. 그래서 왼쪽 위부터 차례로 L[j][j] = √(a[j][j] − Σ_{k<j} L[j][k]²), L[i][j] = (a[i][j] − Σ_{k<j} L[i][k]·L[j][k]) / L[j][j]로 한 칸씩 채워 나가면 됩니다.

그 행렬이 양의 정부호가 아니라는 뜻입니다. 대각을 채울 때 제곱근 안이 음수가 되는 순간이 곧 그 증명입니다. 고윳값을 구하거나 소행렬식을 따로 셀 필요가 없어서, 실무에서는 양의 정부호인지 볼 때 촐레스키를 그냥 돌려 보는 방법을 흔히 씁니다. 값이 정확히 0이면 양의 준정부호로, 여기서도 나눗셈이 불가능해 멈춥니다.

아닙니다. [[1, 2], [2, 1]]은 대각이 둘 다 1이지만 고윳값이 3과 −1이라 양의 정부호가 아닙니다. 이 행렬을 넣어 보면 두 번째 대각에서 제곱근 안이 1 − 4 = −3이 되어 멈춥니다. 대각만 보고 판단할 수 없다는 것을 눈으로 확인할 수 있는 예입니다.

선행 주소행렬식(왼쪽 위 k×k 부분행렬의 행렬식)이 전부 양수인 것도 양의 정부호의 필요충분조건입니다. 촐레스키와는 아예 다른 길이라 서로를 검산해 줍니다. 이 계산기는 두 값을 나란히 보여 주며, 덧붙여 det(A) = (∏ L[j][j])²이므로 L의 대각만 곱해도 행렬식이 나옵니다.

A = L·Lᵀ의 오른쪽이 언제나 대칭이기 때문입니다. (L·Lᵀ)ᵀ = L·Lᵀ이므로 대칭이 아닌 행렬은 이 꼴로 쓸 수 없습니다. 대칭이 아닌 행렬에는 LU 분해나 QR 분해를 씁니다.

최소제곱의 정규방정식 AᵀA x = Aᵀb에서 AᵀA가 대칭 양의 정부호라 곧바로 쓰이고, 공분산 행렬을 L·Lᵀ로 쪼개 두면 표준정규난수 z에 L을 곱하는 것만으로 그 공분산을 갖는 표본을 만들 수 있습니다. 칼만 필터나 몬테카를로 시뮬레이션에서 자주 보이는 이유가 이것입니다.

전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 검증은 두 갈래로 했습니다. 첫째, B·Bᵀ + I 꼴로 만든 무작위 대칭 양의 정부호 행렬 400벌에서 언제나 분해되고 L·Lᵀ가 원래 행렬로 돌아오는 것을 확인했습니다. 둘째, 무작위 대칭 행렬 600벌에서 촐레스키의 성공 여부와 실베스터 판정법(선행 주소행렬식이 전부 양수)이 언제나 같은 답을 내는 것을 확인했습니다. 두 방법은 서로 독립이라 서로를 검산해 줍니다.
  • 무작위 검사에서 양의 정부호인 경우와 아닌 경우가 각각 충분히 나오는지도 함께 세었습니다. 한쪽만 나오면 대조가 의미 없기 때문입니다.
  • 선행 주소행렬식은 실수 LU로 내지만, 정수 행렬에서는 나눗셈 없는 베어라이스 알고리즘으로 낸 값과도 대조했습니다.
  • det(A) = (∏ L[j][j])² 항등식을 무작위 300벌에서 LU로 낸 행렬식과 대조해 고정했습니다.
  • 실수 연산이라 제곱근 안이 아슬아슬하게 0인 경우는 반올림 오차로 부호가 흔들립니다. 그래서 행렬 크기와 성분 크기에 비례한 작은 문턱값을 두고 그 아래는 0으로 봅니다.
  • 6×6까지 다룹니다. 단계별 과정과 L·Lᵀ를 함께 보이는 것이 목적이라 그보다 크면 화면이 읽히지 않습니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.