행렬의 크기(2×2~4×4)를 고르고 칸에 성분을 입력하세요. 역행렬은 정사각행렬(행의 개수 = 열의 개수)에서만 생각할 수 있고, 행렬식이 0이 아닐 때만 존재합니다(0일 때는 ‘없음’으로 표시합니다).
이 페이지에서 할 수 있는 것
- 2×2·3×3·4×4 정사각행렬의 역행렬 \(A^{-1}\)를 바로 계산할 수 있습니다
- 행렬식 \(\det(A)\)의 값과, 역행렬이 존재하는지(가역인지)의 판정도 함께 보여 줍니다
- 2×2는 공식 ‘\(A^{-1} = \dfrac{1}{ad-bc}\begin{pmatrix} d & -b \\ -c & a \end{pmatrix}\)’, 3×3·4×4는 수반행렬을 이용하는 방법으로 풀이 과정을 보여 줍니다
- 공식의 쉬운 해설과 Excel·Google 스프레드시트(MINVERSE)·Python용 복사해서 쓰는 수식도 이 페이지에 정리되어 있습니다
이 계산은 어디에 쓰일까요?
미지수와 식의 개수가 같은 연립일차방정식은 계수를 늘어놓은 행렬 \(A\)를 써서 \(A\boldsymbol{x} = \boldsymbol{b}\)로 쓸 수 있습니다. 양변의 왼쪽에 \(A^{-1}\)를 곱하면 \(\boldsymbol{x} = A^{-1}\boldsymbol{b}\)가 되므로, 역행렬만 구해 두면 곱셈 한 번으로 해가 나옵니다.
특히 오른쪽의 \(\boldsymbol{b}\)만 바꿔 가며 같은 연립방정식을 여러 번 풀 때(구조 계산이나 회로 해석 등) 큰 힘을 발휘합니다. 역행렬이 존재하지 않을(행렬식이 0일) 때는 해가 하나로 정해지지 않는다는 신호입니다.
3D 그래픽, 게임, 로봇 제어에서는 회전·확대·이동 같은 변환을 행렬의 곱셈으로 계산합니다. 변환한 뒤의 좌표에서 변환하기 전의 좌표로 되돌릴 때 쓰는 것이 역행렬입니다.
예를 들어 카메라에서 본 좌표와 세계 전체의 좌표를 오가거나(뷰 행렬), 화면에서 클릭한 점이 3D 공간의 어디에 있는지 계산할 때 거의 매 프레임마다 역행렬을 씁니다.
문자를 수로 바꾸고 행렬을 곱하면 문장이 암호문이 됩니다(힐 암호). 받는 사람은 열쇠 행렬의 역행렬을 곱해서 원래 문장으로 되돌립니다.
‘행렬이 하는 일을 역행렬이 되돌린다’는 관계가 그대로 암호화와 복호화의 관계가 되므로, 역행렬의 생각을 가장 직접적으로 보여 주는 예입니다(실제로는 26으로 나눈 나머지로 다루기 때문에, 열쇠는 그 수 체계에서 역행렬을 가지는 행렬이어야 합니다).
‘자동차 생산이 늘면 철강이나 전기를 얼마나 더 생산해야 하는가’ 같은 산업 사이의 파급 효과는, 산업 간 거래를 행렬 \(A\)로 정리하고 레온티예프 역행렬 \((E - A)^{-1}\)를 곱해서 계산합니다.
한국은행이 펴내는 산업연관표나 정부·지방자치단체가 공공사업·축제 등의 경제 효과를 발표할 때 쓰는 대표적인 방법으로, 역행렬이 공공의 의사 결정을 뒷받침하는 대표적인 예입니다.
광고비와 매출처럼 데이터에 ‘가장 잘 맞는 직선’을 긋는 회귀분석(최소제곱법)은 그 해를 역행렬을 써서 \(\hat{\boldsymbol{\beta}} = (X^{\mathsf{T}}X)^{-1}X^{\mathsf{T}}\boldsymbol{y}\)(정규방정식의 해)로 나타냅니다.
통계나 머신러닝 교과서에 반드시 나오는 식으로, AI가 데이터에서 경향을 배우는 구조의 출발점에 역행렬이 있습니다.
공식
용어·기호 해설
기호
| \(A\) | 에이 | 행렬에 붙이는 이름입니다. 행렬은 알파벳 대문자로 나타내는 것이 관례입니다. |
| \(A^{-1}\) | 에이 인버스, A의 역행렬 | 행렬 \(A\)의 역행렬입니다. 오른쪽 위의 \(-1\)은 ‘−1제곱’의 표기로, 수의 역수 \(a^{-1} = \dfrac{1}{a}\)과 같은 발상의 기호입니다(다만 행렬을 \(\dfrac{1}{A}\)처럼 분수로 쓰지는 않습니다). |
| \(E\) | 이, 단위행렬 | 단위행렬입니다. 왼쪽 위에서 오른쪽 아래로 가는 대각선의 성분이 1이고 나머지가 모두 0인 정사각행렬입니다. 어떤 행렬에 곱해도 상대를 바꾸지 않는 ‘수의 1’ 역할을 합니다. 외국에서는 \(I\)(아이)로 쓰는 경우가 많습니다. |
| \(\det(A),\ |A|\) | 데트 에이, A의 행렬식 | 행렬 \(A\)의 행렬식입니다. 이 값이 0이 아니면 역행렬이 존재하고, 0이면 존재하지 않습니다. \(|A|\)처럼 세로 막대로 쓰는 방법도 자주 쓰입니다. |
| \(\operatorname{adj}(A)\) | 어드조인트 에이, A의 수반행렬 | 행렬 \(A\)의 수반행렬입니다. 각 성분의 여인수를 늘어놓고 전치한 행렬로, 영어 adjugate(옛 이름은 adjoint)의 앞 세 글자를 따서 adj로 씁니다. |
| \(a_{ij}\) | 에이 아이 제이, A의 (i, j) 성분 | 행렬 \(A\)의 \(i\)행 \(j\)열의 성분(위에서 \(i\)번째 행, 왼쪽에서 \(j\)번째 열에 있는 수)입니다. 오른쪽 아래의 작은 글자(첨자)가 ‘자리’를 나타냅니다. |
용어
| 역행렬 | 곱하면 단위행렬이 되는 상대 행렬입니다. 수의 ‘역수’의 행렬 버전으로, \(A^{-1}\)로 씁니다. 행렬식이 0이 아닌 정사각행렬에만 존재하며, 연립일차방정식을 풀거나 변환을 원래대로 되돌리는 데 쓰입니다. |
| 단위행렬 | 대각선(왼쪽 위에서 오른쪽 아래)이 1이고 나머지가 모두 0인 정사각행렬입니다. 어떤 행렬에 곱해도 상대를 바꾸지 않으므로 수의 ‘1’에 해당합니다. |
| 정사각행렬 | 행의 개수와 열의 개수가 같은(정사각형 모양의) 행렬입니다. 역행렬과 행렬식은 정사각행렬에서만 생각합니다. |
| 행렬식 | 정사각행렬에서 정해지는 하나의 수입니다. \(\det(A) \neq 0\)이면 역행렬이 존재한다는 판정에 쓸 수 있습니다. 구하는 법은 자매 페이지 ‘행렬식 계산기’에서 자세히 설명합니다. |
| 가역행렬 | 행렬식이 0이 아닌 정사각행렬입니다. 정칙행렬이라고도 하며, 역행렬이 존재합니다. 행렬식이 0인 행렬은 특이행렬이라고 부르며 역행렬이 없습니다. |
| 여인수 | 행렬에서 \(i\)번째 행과 \(j\)번째 열을 지운 작은 행렬의 행렬식(소행렬식)에 부호 \((-1)^{i+j}\)을 곱한 것입니다. 수반행렬의 재료가 됩니다. |
| 수반행렬 | 각 자리의 여인수를 늘어놓고 행과 열을 바꾼(전치한) 행렬입니다. \(\operatorname{adj}(A)\)로 쓰며, 행렬식으로 나누면 역행렬이 됩니다. 다만 수준 높은 교재에서는 ‘수반행렬’이 다른 행렬(켤레전치행렬)의 뜻으로 쓰이는 경우도 많으니 주의하세요. |
| 가우스-조르당 소거법 | 행렬 \(A\)와 단위행렬 \(E\)를 나란히 놓고 행 변형을 되풀이해 왼쪽 절반을 \(E\)로 만들면, 오른쪽 절반이 \(A^{-1}\)가 되는 방법입니다. 큰 행렬에서는 이 방법이 주로 쓰입니다. |
| 선형대수학 | 행렬과 벡터를 다루는 수학 분야입니다. 대학 1학년 필수 과목으로 배우는 경우가 많고, 컴퓨터 그래픽·통계·AI 등 응용의 토대가 됩니다. |
먼저 알아 두면 좋은 내용
이 페이지의 계산을 ‘뜻을 알고’ 쓸 수 있도록, 먼저 알아 두면 좋은 내용을 정리했습니다.
| 정수와 유리수의 사칙계산(중학교 1학년) |
|
| 역수(중학교 1학년) |
|
| 행렬의 기초와 곱셈(고등학교 1학년 공통수학1, 대학 선형대수학) |
|
| 행렬식(대학 선형대수학) |
|
Excel로 계산하는 방법
| 행렬 A의 1행 | 4 | 7 |
| 행렬 A의 2행 | 2 | 6 |
| 역행렬 A⁻¹ | =MINVERSE(B1:C2) |
| 행렬 A의 1행 | 1 | 2 | 3 |
| 행렬 A의 2행 | 0 | 1 | 4 |
| 행렬 A의 3행 | 5 | 6 | 0 |
| 역행렬 A⁻¹ | =MINVERSE(B1:D3) |
첫 번째 표는 1행이 0.6, -0.7, 2행이 -0.2, 0.4가 됩니다. 두 번째 표는 1행이 -24, 18, 5, 2행이 20, -15, -4, 3행이 -5, 4, 1이 됩니다.
행렬식이 0인 행렬(역행렬이 없는 행렬)을 MINVERSE에 넣으면 #NUM! 오류가 됩니다. 행렬식 자체는 MDETERM 함수로 확인할 수 있습니다.
Google 스프레드시트로 계산하는 방법
| 행렬 A의 1행 | 4 | 7 |
| 행렬 A의 2행 | 2 | 6 |
| 역행렬 A⁻¹ | =MINVERSE(B1:C2) |
| 행렬 A의 1행 | 1 | 2 | 3 |
| 행렬 A의 2행 | 0 | 1 | 4 |
| 행렬 A의 3행 | 5 | 6 | 0 |
| 역행렬 A⁻¹ | =MINVERSE(B1:D3) |
첫 번째 표는 1행이 0.6, -0.7, 2행이 -0.2, 0.4이고, 두 번째 표는 1행이 -24, 18, 5, 2행이 20, -15, -4, 3행이 -5, 4, 1이 됩니다.
Python으로 계산하는 방법
from fractions import Fraction
A = [[4, 7], [2, 6]]
def determinant(matrix): # 행렬식(1행에 대한 여인수 전개를 재귀로 계산)
n = len(matrix)
if n == 1:
return matrix[0][0]
total = 0
for j in range(n):
minor = [row[:j] + row[j + 1:] for row in matrix[1:]] # 1행과 j열을 지운 소행렬
total += (-1) ** j * matrix[0][j] * determinant(minor)
return total
def inverse(matrix): # 역행렬(수반행렬을 행렬식으로 나눔)
n = len(matrix)
det = Fraction(determinant(matrix))
if det == 0:
return None # 행렬식이 0이면 역행렬이 없음
inverse_rows = []
for i in range(n):
row = []
for j in range(n):
# (i, j) 성분 = j행과 i열을 지운 소행렬식 x 부호 / 행렬식(전치까지 포함)
minor = [r[:i] + r[i + 1:] for k, r in enumerate(matrix) if k != j]
row.append((-1) ** (i + j) * determinant(minor) / det)
inverse_rows.append(row)
return inverse_rows
inverse_matrix = inverse(A)
if inverse_matrix is None:
print("역행렬이 존재하지 않습니다(det(A) = 0)")
else:
for row in inverse_matrix:
print([float(x) for x in row])
LaTeX 등 수식 언어로 쓰는 법(복사 가능)
AA⁻¹ = A⁻¹A = E
A A^{-1} = A^{-1} A = E
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>A</mi>
<msup><mi>A</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup>
<mo>=</mo>
<msup><mi>A</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup>
<mi>A</mi>
<mo>=</mo>
<mi>E</mi>
</mrow>
</math>
A A^-1 = A^-1 A = E
A . Inverse[A]
A . LinearAlgebra:-MatrixInverse(A);
E = A * inv(A);
AA^(-1) = A^(-1)A = E
A⁻¹ = 1/(ad − bc) × [d, −b; −c, a]
A^{-1} = \frac{1}{ad - bc} \begin{pmatrix} d & -b \\ -c & a \end{pmatrix}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msup><mi>A</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mrow><mi>a</mi><mi>d</mi><mo>-</mo><mi>b</mi><mi>c</mi></mrow>
</mfrac>
<mrow>
<mo>(</mo>
<mtable>
<mtr><mtd><mi>d</mi></mtd><mtd><mrow><mo>-</mo><mi>b</mi></mrow></mtd></mtr>
<mtr><mtd><mrow><mo>-</mo><mi>c</mi></mrow></mtd><mtd><mi>a</mi></mtd></mtr>
</mtable>
<mo>)</mo>
</mrow>
</mrow>
</math>
A^-1 = 1/(ad - bc) [[d, -b], [-c, a]]
Inverse[{{a, b}, {c, d}}]
LinearAlgebra:-MatrixInverse(Matrix([[a, b], [c, d]]));
B = inv(A);
A^(-1) = 1/(ad − bc) (■(d&−b@−c&a))
A⁻¹ = adj(A)/det(A)
A^{-1} = \frac{1}{\det(A)} \operatorname{adj}(A)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msup><mi>A</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mrow><mi>det</mi><mo>⁡</mo><mrow><mo>(</mo><mi>A</mi><mo>)</mo></mrow></mrow>
</mfrac>
<mi>adj</mi><mo>⁡</mo><mrow><mo>(</mo><mi>A</mi><mo>)</mo></mrow>
</mrow>
</math>
A^-1 = 1/(det(A)) "adj"(A)
Inverse[A]
LinearAlgebra:-MatrixInverse(A);
B = inv(A);
A^(-1) = adj(A)/det(A)
ChatGPT 에게 물어서 계산하는 방법
당신은 행렬 계산 도우미입니다. 다음 계산을 실제로 Python 코드를 실행해서 하고, 실행 결과의 수치만을 근거로 답하세요(암산이나 추측으로 답하지 마세요). 다음 두 정사각행렬의 역행렬을 각각 구하세요. 1. A = [[4, 7], [2, 6]] 2. B = [[1, 2], [2, 4]] 각각 먼저 행렬식의 값과 역행렬이 존재하는지를 보여 주고, 존재하면 역행렬의 성분을 보여 주세요. 마지막으로 원래 행렬과 역행렬의 곱이 단위행렬이 되는지 확인하는 계산도 실행하세요.
사용법
-
1숫자 입력계산하고 싶은 숫자를 입력란에 입력합니다
-
2계산‘계산’ 버튼을 누릅니다
-
3결과 확인계산 결과가 바로 표시됩니다. 계산의 원리와 공식 해설도 같은 페이지에서 확인할 수 있습니다
DataChef의 특징
전문 지식 없이도 직관적이고 간단하게 사용
개인정보를 등록하지 않고도 이용할 수 있습니다
"다운로드"를 누르면 파일이 자동으로 삭제됩니다
출처 표기 불필요
상업적 이용 허가 연락도 필요 없습니다