LU 분해(행렬 분해) 계산기
정사각행렬을 아래삼각 L과 위삼각 U로 쪼개고 행 교환을 담은 치환행렬 P까지 함께 보여 줍니다. PA = LU를 실제로 곱해 검산하며, 같은 분해로 우변만 바꿔 가며 연립방정식을 풀 수 있습니다.
줄마다 한 행씩. 8×8까지 다루며 모자란 자리는 0으로 채웁니다. 지금 3×3입니다.
행렬식 det(A)
-16
U의 대각선을 모두 곱하고 행 교환 1번만큼 부호를 뒤집은 값입니다. PA − LU의 최대 오차는 0.00e+0입니다.
L (아래삼각, 대각선 1)
| 1 | 0 | 0 |
| 0.5 | 1 | 0 |
| -0.5 | 1 | 1 |
U (위삼각)
| 4 | -6 | 0 |
| 0 | 4 | 1 |
| 0 | 0 | 1 |
P (치환행렬)
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 0 | 0 | 1 |
원래 행렬 A
| 2 | 1 | 1 |
| 4 | -6 | 0 |
| -2 | 7 | 2 |
행 순서: 2 → 1 → 3번째 행이 위에서부터 놓였습니다.
같은 분해로 우변만 바꿔 가며 풀 수 있습니다. 이것이 LU 분해를 쓰는 이유입니다.
계산 방법
- 1행렬을 줄마다 한 행씩 넣습니다.
- 2L·U·P를 확인하고 PA − LU 잔차가 0에 가까운지 봅니다.
- 3우변 b를 넣어 Ax = b의 해를 구합니다.
- 4우변만 바꿔 가며 같은 분해로 여러 번 풀어 봅니다.
- 5피벗을 끄고 켜 가며 행 교환이 정확도에 얼마나 영향을 주는지 견줍니다.
자주 묻는 질문
정사각행렬을 아래삼각행렬 L과 위삼각행렬 U의 곱으로 쪼개는 것입니다. 실제로는 행을 바꿔 가며 하므로 A가 아니라 PA = LU 꼴이 되며, P는 어느 행을 어디로 보냈는지 적어 둔 치환행렬입니다.
가우스 소거법은 한 번 푸는 것이고, LU 분해의 존재 이유는 같은 행렬에 우변만 바꿔 가며 여러 번 풀 때 분해를 재사용하는 것입니다. 분해에 드는 계산은 n³/3쯤이지만 전진·후진 대입은 n²쯤이라, 우변이 100개면 소거를 100번 하는 대신 분해 한 번에 대입 200번이면 됩니다. 구조해석이나 회로해석처럼 같은 계에 하중만 바꿔 푸는 곳에서 차이가 큽니다.
피벗이 0이면 나눌 수 없고, 0이 아니어도 아주 작으면 오차가 폭발하기 때문입니다. 이 도구에서 피벗을 꺼 보면 확인할 수 있습니다. 왼쪽 위가 1e-12인 2×2 행렬에서 행을 바꾸지 않고 풀면 오차가 천만 배로 커지고, 1e-17까지 작아지면 아예 특이행렬처럼 보입니다.
U의 대각선을 모두 곱하고 행 교환 횟수만큼 부호를 뒤집으면 됩니다. 삼각행렬의 행렬식이 대각선 곱이고 L의 대각선이 모두 1이기 때문입니다. 여인수 전개로 세면 n!번이 드는 계산이 n³/3으로 줄어듭니다.
특이행렬(행렬식이 0)이면 소거 중에 피벗이 0이 되어 분해가 끝나지 않습니다. 이 도구는 그 경우를 알려 주고 연립방정식도 풀지 않습니다. 해가 없거나 무수히 많은 경우이기 때문입니다.
분해한 뒤 PA와 LU를 실제로 곱해 견준 잔차를 함께 보여 줍니다. 이 값이 0에 가깝지 않다면 분해가 잘못된 것입니다. 행렬식도 여인수 전개로 구한 값과 대조해 테스트로 고정했습니다.
전송되지 않습니다. 계산은 모두 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.
알아두면 좋은 점
- PA = LU를 계산 안에서 직접 검산합니다. P와 A를 곱한 것과 L과 U를 곱한 것의 차이 중 가장 큰 값을 잔차로 보여 주며, 무작위 행렬 100개에서 이 값이 1e-9보다 작은 것을 테스트로 고정했습니다.
- 행렬식은 여인수 전개(n!번이 드는 다른 방법)로 구한 값과 무작위 행렬 60개에서 대조했습니다.
- 연립방정식의 해는 원래 행렬에 다시 넣어 우변이 나오는지 확인합니다.
- 피벗을 끄는 문을 남겨 둔 것은 왜 행을 바꿔야 하는지 화면에서 견주기 위해서입니다. 실제 계산에는 켜 두어야 합니다.
- 0인지 보는 잣대는 행렬에서 가장 큰 값에 맞춥니다. 절대값 하나로 두면 성분이 모두 아주 작은 멀쩡한 행렬을 특이행렬로 잘못 보게 됩니다.
- 행렬은 8×8까지 다룹니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.