MCP로 연결 →

계산 입력

정사각 행렬의 원소를 행 단위로 입력하세요. 크기 n을 벗어난 빈 칸은 무시됩니다.

공식

공식: 부분 피벗팅을 적용한 LU 분해 계산기
Show calculation steps (1)
  1. Determinant

    Determinant: 부분 피벗팅을 적용한 LU 분해 계산기

    Determinant from the permutation sign and the product of U's diagonal entries.

광고

결과

Determinant det(A) = sign(P) × product of U diagonal
-16

하삼각 행렬 L

1 0 0
0.5 1 0
-0.5 1 1

상삼각 행렬 U

4 -6 0
0 4 1
0 0 1

행 피벗 벡터 P (0부터 시작)

P = ( 1, 0, 2 )

Because of partial pivoting, L·U equals the 행이 재배열된 matrix A (reorder A's rows by P first), so P·A = L·U. A naive L·U product will not reproduce the original A unless you apply the permutation P.

방법 부분 피벗팅(행 피벗팅)을 적용한 둘리틀(Doolittle) LU 분해
행렬 크기 3 x 3

부분 피벗팅 LU 분해란?

LU 분해는 정사각 행렬 A를 하삼각 행렬 L(대각 원소가 모두 1)과 상삼각 행렬 U의 곱으로 나누는 방법입니다. 여기에 부분 피벗팅(행 피벗팅)을 적용하면 행 순서를 바꾸는 치환 벡터 P가 함께 생성되어 \(P \cdot A = L \cdot U\)를 만족하게 됩니다. 피벗팅은 절댓값이 가장 큰 원소가 있는 행을 피벗 위치로 교환하는 과정으로, 0으로 나누는 상황을 피하고 수치적 안정성을 크게 높여 줍니다. 이는 순수한 선형대수 연산이므로 어느 나라에서나 동일하게 적용됩니다.

$$P \cdot A = L \cdot U$$
행렬 P×A가 L×U와 같고 L은 하삼각, U는 상삼각임을 보여주는 도표
부분 피벗팅은 치환 행렬 \(P \cdot A\)를 하삼각 행렬 L과 상삼각 행렬 U로 분해합니다.

계산기 사용 방법

먼저 행렬 크기 \(n\)(2부터 5까지)을 선택하고, 정사각 행렬의 원소를 행 단위로 입력한 뒤 표시할 유효 숫자 자릿수를 정합니다. 계산 버튼을 누르면 L, U, 피벗 벡터 P(0부터 시작하는 인덱스), 그리고 행렬식이 출력됩니다. 선택한 크기를 벗어난 칸은 무시됩니다.

알고리즘

각 열 \(k\)에 대해 \(|M[p][k]|\)가 최대가 되는 행 \(p\)(\(p \ge k\))를 찾아 \(k\)행과 교환합니다. 그런 다음 \(k\) 아래의 모든 행 \(i\)에 대해 곱셈 인수 \(\text{factor} = M[i][k] / M[k][k]\)를 계산해 하삼각 부분에 저장하고, 나머지 원소를 \(M[i][j] \mathrel{-}= \text{factor} \cdot M[k][j]\)로 갱신합니다. 모든 열을 처리한 뒤 M의 엄밀한 하삼각 부분에 단위 대각을 더한 것이 L, 대각을 포함한 상삼각 부분이 U가 됩니다. 행렬식은 치환의 부호와 U 대각 원소들의 곱을 곱한 값과 같습니다.

$$\det(A) = \operatorname{sign}(P) \prod_{i} U_{ii}$$
광고
열에서 절댓값이 가장 큰 피벗을 선택하고 행을 교환하는 부분 피벗팅 흐름도
각 단계에서 피벗 열의 절댓값이 가장 큰 행을 선택해 아래를 소거하기 전에 맨 위로 교환합니다.

예제로 풀어보기

\(A = [[2,1,1],[4,-6,0],[-2,7,2]]\)인 경우, 첫 번째 피벗은 1행입니다(\(|4|\)가 가장 큼). 따라서 P는 \((1,0,2)\)가 됩니다. 소거를 진행하면 \(L = [[1,0,0],[0.5,1,0],[-0.5,1,1]]\), \(U = [[4,-6,0],[0,4,1],[0,0,1]]\)이 나옵니다. 행 교환이 한 번 일어났으므로 부호는 \(-1\)이고, $$\det(A) = -1 \times (4 \cdot 4 \cdot 1) = -16$$이 됩니다.

자주 묻는 질문

왜 L·U가 원래 행렬 A와 같지 않나요? 피벗팅 때문입니다. L·U는 P에 따라 행이 재배열된 A와 같습니다. P 순서대로 A의 행을 먼저 정렬한 뒤 L·U와 비교하면 일치합니다.

행렬이 특이행렬(singular)이면 어떻게 되나요? U의 대각에 0이 나타나고 행렬식은 0이 됩니다. 이 경우에도 분해 결과는 그대로 출력됩니다.

피벗 벡터는 0부터 시작하나요? 네. \(P[i]\)는 결과의 \(i\)행에 들어간 원래 A 행의 인덱스를 나타냅니다.

최종 업데이트: