행렬식 계산기 쉽게 이해하기 — 개념과 원리
행렬식은 정사각행렬에서 계산되는 하나의 수입니다. 행렬의 역행렬이 존재하는지, 선형변환이 넓이나 부피를 몇 배로 바꾸는지, 연립일차방정식의 해가 하나로 정해지는지를 알려 줍니다. 이 계산기는 세미콜론(;)으로 행을 구분한 정사각행렬을 받아 행렬식, 대각합(trace), 가역 여부를 구해 줍니다. 선형대수 수업, 크라메르 공식, 고윳값 문제, 좌표변환과 공학 모델 등에 쓰입니다.
계산 방법
- 부분 피벗팅을 쓰는 가우스 소거법(LU 분해)으로 상삼각행렬을 만듭니다. 각 열에서 절댓값이 가장 큰 피벗이 있는 행을 위로 올리고, 아래 행에서 그 배수를 뺍니다.
- det(A) = (피벗의 곱) × (−1)^(행 교환 횟수)입니다.
- 대각합 = 대각성분의 합 a₁₁ + a₂₂ + … + aₙₙ입니다.
- |det(A)| > 10⁻¹²이면 가역, 아니면 특이행렬로 판정합니다.
원리
행렬식에는 세 가지 행 규칙이 있습니다. 한 행의 배수를 다른 행에 더해도 값이 변하지 않고, 두 행을 바꾸면 부호가 바뀌며, 삼각행렬의 행렬식은 대각성분의 곱입니다. 소거법은 앞의 두 연산만 쓰므로 삼각행렬로 만든 뒤 대각성분을 곱하면 됩니다. 이 방법은 약 n³/3번의 연산이면 되지만, 여인수 전개는 약 n!번이 필요해 큰 행렬에는 쓸 수 없습니다. 부분 피벗팅은 아주 작은 수로 나누는 일을 막아 반올림 오차를 줄입니다. 기하적으로 |det A|는 넓이(2×2)나 부피(3×3)의 배율이고, 음수이면 방향이 뒤집힙니다.
예제 풀이
- 기본 행렬의 행은 (2, −1, 0), (1, 3, 2), (0, 1, 4)입니다.
- 1열의 가장 큰 피벗 2가 이미 맨 위에 있습니다. 2행 − 0.5 × 1행 = (0, 3.5, 2)이고, 3행은 (0, 1, 4) 그대로입니다.
- 2열에서는 3.5가 1보다 크므로 교환하지 않습니다. 3행 − (1 ÷ 3.5) × 2행 = (0, 0, 3.428571)입니다.
- det = 2 × 3.5 × 3.428571 = 24입니다(행 교환이 없어 부호 변화 없음).
- 여인수 전개로 검산하면 2(12 − 2) + (4 − 0) = 24입니다.
- 대각합은 2 + 3 + 4 = 9이고, 24 ≠ 0이므로 가역 여부는 yes입니다.
결과 해석
det(A) = 0이면 행들이 일차종속이라 역행렬이 없고, Ax = b는 해가 없거나 무수히 많습니다. 0이 아니면 해가 하나로 정해집니다. 다만 행렬식의 크기만으로 특이행렬에 얼마나 가까운지 판단할 수는 없습니다. 3×3 행렬 A에 10을 곱하면 행렬식은 1,000배가 되기 때문이며, 그런 판단에는 조건수를 씁니다. 대각합은 고윳값의 합, 행렬식은 고윳값의 곱과 같습니다.
흔한 실수
- 정사각행렬이 아닌 행렬을 넣는 경우입니다. 행렬식은 n × n 행렬에만 있습니다.
- 손으로 계산할 때 행을 바꾸고 부호를 바꾸지 않는 경우입니다.
- det(A + B) = det A + det B라고 생각하는 경우입니다. 성립하는 것은 det(AB) = det A × det B입니다.
자주 묻는 질문
2×2 행렬식의 간단한 공식은 무엇인가요?
행이 (a, b), (c, d)이면 det = ad − bc입니다.
행렬식과 역행렬은 어떤 관계인가요?
det A ≠ 0일 때만 역행렬이 있고, det(A⁻¹) = 1 ÷ det A입니다. 예제에서는 1/24입니다.
전치행렬의 행렬식은 어떻게 되나요?
원래 행렬과 같습니다. det(Aᵀ) = det A입니다.
출처: Gilbert Strang, Introduction to Linear Algebra, Chapter 5 (determinants) · Gene H. Golub and Charles F. Van Loan, Matrix Computations, chapter on Gaussian elimination with pivoting