이 계산기로 할 수 있는 일
이 도구는 실수로 이루어진 n×n 정사각 행렬 A의 역행렬을 계산합니다. 역행렬 A⁻¹은 \(A \times A^{-1} = I\) 를 만족하는 유일한 행렬입니다. 단, 모든 행렬에 역행렬이 존재하는 것은 아닙니다. 정사각 행렬이면서 행렬식이 0이 아닌 행렬(비특이행렬)만 역행렬을 가집니다. 만약 입력한 행렬이 특이행렬이라면, 이 계산기는 의미 없는 숫자를 출력하는 대신 역행렬이 없다는 사실을 명확히 알려 줍니다.
사용 방법
먼저 드롭다운에서 행렬 크기 \(n\)을 선택하세요. 그러면 입력 격자가 n행 n열로 자동 조정됩니다. 행렬 A의 모든 칸에 실수 값을 입력합니다. 이어서 결과에 표시할 유효숫자 자릿수를 정하면, 역행렬과 행렬식, 그리고 사용된 계산 방법을 한눈에 확인할 수 있습니다. 유효숫자 설정은 화면에 표시되는 반올림 결과에만 영향을 줄 뿐, 내부 계산은 언제나 배정밀도(double precision) 전체로 수행됩니다.
계산 방법 자세히 보기
이 계산기는 부분 피벗팅(partial pivoting)을 적용한 LU 분해를 사용합니다. 먼저 행렬을 \(PA = LU\) 형태로 분해합니다.
$$P\,A = L\,U \quad\Longrightarrow\quad A^{-1} = U^{-1} L^{-1} P$$여기서 P는 가장 큰 피벗 값을 대각선에 두기 위해 행을 교환하는 치환행렬로, 수치적 안정성을 높이고 아주 작은 값으로 나누는 상황을 막아 줍니다. L은 대각 성분이 1인 하삼각행렬, U는 상삼각행렬입니다. 그다음 단위행렬의 각 열 \(e_k\)에 대해, 전진 대입(forward substitution)으로 \(L y = P e_k\) 를 풀고, 후진 대입(back substitution)으로 \(U x = y\) 를 풉니다. 이렇게 얻은 \(x\)가 바로 A⁻¹의 k번째 열이 됩니다. 행렬식은 U의 대각 성분을 모두 곱한 값에 행 치환의 부호를 곱해 구합니다.
$$\det(A) = (-1)^{s}\prod_{k=1}^{n} U_{kk}$$
예제로 살펴보기
\(A = \begin{bmatrix} 4 & 3 \\ 6 & 3 \end{bmatrix}\) 를 예로 들어 봅시다. 행렬식은
$$\det(A) = 4\times 3 - 3\times 6 = 12 - 18 = -6$$으로 0이 아니므로 A는 역행렬을 가집니다. 2×2 행렬의 공식을 쓰면,
$$A^{-1} = \frac{1}{\det} \times \begin{bmatrix} 3 & -3 \\ -6 & 4 \end{bmatrix} = \begin{bmatrix} -0.5 & 0.5 \\ 1 & -0.6666666667 \end{bmatrix}$$입니다. A에 이 역행렬을 곱하면 단위행렬이 나와 결과가 정확함을 확인할 수 있습니다.
자주 묻는 질문
행렬이 특이행렬이면 어떻게 되나요? 행렬식이 (아주 작은 허용 오차 범위 내에서) 0이면 역행렬이 존재하지 않으며, 계산기는 "특이행렬 / 역행렬 없음" 메시지를 표시합니다.
수반행렬(adjugate) 공식 대신 LU 분해를 쓰는 이유는? 부분 피벗팅 LU 분해는 큰 행렬에서 여인수 전개(cofactor expansion)보다 훨씬 수치적으로 안정적이고 효율적입니다. 여인수 전개는 계산량이 행렬 크기에 따라 팩토리얼로 폭증하기 때문입니다.
유효숫자 설정이 계산 결과 자체를 바꾸나요? 아니요. 계산은 항상 완전한 정밀도로 이루어지며, 이 설정은 표시되는 유효숫자 개수만 조절합니다.