선형대수학에서 **가역 행렬**(可逆行列, 영어: invertible matrix) 또는 **정칙 행렬**(正則行列, 영어: regular matrix) 또는 **비특이 행렬**(非特異行列, 영어: non-singular matrix)은 그와 곱한 결과가 단위 행렬인 행렬을 갖는 행렬이다. 이를 그 행렬의 **역행렬**(逆行列, 영어: inverse matrix)이라고 한다.

정의
--

체 K 위에서 정의된 n\times n 행렬 A,B에 대하여, 다음 세 조건이 서로 동치이다. 이 조건이 성립할 경우 B를 A의 **역행렬**이라고 하며, B를 {\displaystyle A^{-1}}와 같이 표기한다.

* {\displaystyle AB=I\_{n}}
* {\displaystyle BA=I\_{n}}
* {\displaystyle AB=BA=I\_{n}}

체 K 위에서 정의된 n\times n 행렬 A에 대하여, 다음 조건들이 서로 동치이며, 이를 만족시키는 A를 **가역 행렬**이라고 한다.

* 역행렬을 갖는다.
* 유일한 역행렬을 갖는다.
* 유한 개의 기본 행렬의 곱이다.
* 단위 행렬과 행동치이다.
* 단위 행렬과 열동치이다.
* 단위 행렬과 동치이다.
* 방정식 {\displaystyle Ax=0}의 해는 {\displaystyle x=\mathbf {0} }뿐이다. 즉 {\displaystyle \ker A=\left\{\mathbf {0} \right\}}이다.
* 방정식 {\displaystyle Ax=b}의 해는 b의 값과 무관하게 항상 유일하다.
* A의 열이 K^{n}의 기저를 이룬다.
* \det A\neq 0 (여기서 {\displaystyle \det }는 행렬식이다.)
* {\displaystyle \operatorname {rank} A=n} (여기서 \operatorname {rank}는 계수이다.)
* {\displaystyle \operatorname {null} A=0} (여기서 {\displaystyle \operatorname {null} A:=\dim {\ker A}}이다.)
* 0을 고윳값으로 가지지 않는다.

성질
--

### 전치 행렬과의 관계

체 K 위에서 정의된 n\times n 행렬 A에 대하여, 다음 조건들이 서로 동치이다.

* A는 가역 행렬이다.
* {\displaystyle A^{\operatorname {T} }}는 가역 행렬이다.
* {\displaystyle AA^{\operatorname {T} }}는 가역 행렬이다.

### 항등식

체 K 위에서 정의된 n\times n 행렬 A,B에 및 스칼라 {\displaystyle k\in K}에 대하여, 다음과 같은 항등식들이 성립한다.

* {\displaystyle (A^{-1})^{-1}=A}
* {\displaystyle (kA)^{-1}=k^{-1}A^{-1}}
* {\displaystyle (AB)^{-1}=B^{-1}A^{-1}}

즉, 체 K 위의 n\times n 가역 행렬의 집합은 군을 이루며, 이를 일반선형군 \operatorname {GL} (n;K)이라고 한다. 또한, 역행렬은 일반선형군의 자기 반대 동형을 정의한다.

계산
--

### 가우스 소거법

가우스 소거법은 어떤 행렬이 가역행렬인지를 판단하고 그 행렬의 역행렬을 구할 수 있는 알고리즘이다. LU 분해를 이용해 두 개의 삼각행렬로 분해하면 가우스 소거법을 더 빨리 계산할 수 있다. 또는 {\displaystyle mn\times mn} 행렬을 n\times n을 원소로 갖는 m\times m 행렬로 나누어 재귀적으로 계산하면 행렬의 특성에 따라 더 빠른 계산이 가능하다.

### 수치해석적 방법

행렬의 공통인자로 이루어진 행렬을 구해 계산하면 작은 크기의 행렬에 대해서는 더 빨리 계산할 수도 있다. (큰 행렬에 대해서는 적당치 않을수있다) 다음과 같이 공통인자 행렬을 구한다.

{\displaystyle A^{-1}={1 \over {\begin{vmatrix}A\end{vmatrix}}}\left(C\_{ij}\right)^{T}={1 \over {\begin{vmatrix}A\end{vmatrix}}}{\begin{pmatrix}C\_{11}&C\_{21}&\cdots &C\_{j1}\\C\_{12}&\ddots &&C\_{j2}\\\vdots &&\ddots &\vdots \\C\_{1i}&\cdots &\cdots &C\_{ji}\\\end{pmatrix}}}   
여기서 {\displaystyle i+j}가 홀수일 때 이고({\displaystyle C\_{ji}=-M\_{ji}}) {\displaystyle i+j}가 짝수일 때 ({\displaystyle C\_{ji}=M\_{ji}})이다. 즉,{\displaystyle C\_{ji}=(-1)^{i+j}M\_{ji}}이다.
여기서 |A|는 A의 행렬식을 가리키고 C\_{{ij}}는 행렬의 공통인자,{\displaystyle M\_{ij}}는 행렬의 소행렬식, {\displaystyle A^{T}}는 A의 전치행렬을 가리킨다.

수치 해석에서 대부분의 경우 선형 시스템을 풀기 위해 역행렬을 구할 필요는 없기 때문에 이 방법으로 실제로 역행렬을 구하는 경우는 별로 없다.

### 2 × 2 행렬의 역행렬

위의 공통인자 방정식에서 n이 2일 경우 다음과 같은 식을 유도할 수 있다.

{\displaystyle A^{-1}={\begin{bmatrix}a&b\\c&d\\\end{bmatrix}}^{-1}={\frac {1}{ad-bc}}{\begin{bmatrix}d&-b\\-c&a\\\end{bmatrix}}}
2 × 2 행렬의 역행렬은 위 방법을 통해 빠르게 계산할 수 있다.

### 3 × 3 행렬의 역행렬

위의 공통인자 방정식에서 n이 3일 경우 다음과 같은 식을 유도할 수 있다.

{\displaystyle A^{-1}={\begin{bmatrix}a&b&c\\d&e&f\\g&h&i\\\end{bmatrix}}^{-1}={\frac {1}{|A|}}{\begin{bmatrix}ei-fh&-(bi-ch)&bf-ce\\-(di-fg)&ai-cg&-(af-cd)\\dh-eg&-(ah-bg)&ae-bd\end{bmatrix}}={\frac {1}{|A|}}{\begin{bmatrix}ei-fh&ch-bi&bf-ce\\fg-di&ai-cg&cd-af\\dh-eg&bg-ah&ae-bd\end{bmatrix}}}
{\displaystyle |A|=a(ei-fh)-b(di-fg)+c(dh-eg)=-d(bi-ch)+e(ai-cg)-f(ah-bg)=g(bf-ce)-h(af-cd)+i(ae-bd)\ }
### 작은 블록으로 나눠서 계산하는 법

다음과 같은 식을 이용하면 행렬을 몇 개의 작은 블록 행렬로 나누어 계산할 수 있다.

{\displaystyle {\begin{bmatrix}A&B\\C&D\end{bmatrix}}^{-1}={\begin{bmatrix}A^{-1}+A^{-1}B(D-CA^{-1}B)^{-1}CA^{-1}&-A^{-1}B(D-CA^{-1}B)^{-1}\\-(D-CA^{-1}B)^{-1}CA^{-1}&(D-CA^{-1}B)^{-1}\end{bmatrix}}}
{\displaystyle A,B,C,D}는 행렬의 임의의 작은 블록이다. 이 방법은 A가 대각행렬이고 A의 슈어 보수행렬 {\displaystyle (D-CA^{-1}B)}이 작은 크기일 때 특히 유용하다. 두 개의 행렬에 대한 역행렬만 계산하면 되기 때문이다. 이 방법은 행렬을 더 빠르게 곱하는 슈트라센 알고리즘의 개발자 포커 슈트라센이 발견했다.

역행렬의 도함수
--------

행렬 A가 t라는 변수에 따라 변한다고 하자. 이때 A의 역행렬의 도함수는 다음과 같다.

{\displaystyle {\frac {\mathrm {d} A^{-1}}{\mathrm {d} t}}=-A^{-1}{\frac {\mathrm {d} A}{\mathrm {d} t}}A^{-1}.}

역행렬과 행렬의 나눗셈
------------

행렬A 와 B에서,

{\displaystyle {{A} \over {B}}=A\cdot B^{-1}} 이고, {\displaystyle A\cdot B^{-1}\neq B^{-1}\cdot A}이다.
{\displaystyle {{A} \over {B^{-1}}}=A\cdot B}이다.
스칼라 행렬k는,

{\displaystyle {{A} \over {k}}=A\cdot k^{-1}} 이고, {\displaystyle A\cdot k^{-1}=k^{-1}\cdot A}이다.
대각화행렬에서는

임의의 행렬 A를 예약하고 고윳값 행렬 P를 조사하고 P의 역행렬 P-1를 통해서,
{\displaystyle P^{-1}AP=A^{D}}
대각화 행렬 AD를 얻을수있다. 여기서,

{\displaystyle AP={{A^{D}} \over {P^{-1}}}}
{\displaystyle AP={P}{A^{D}}}
처럼 대각화행렬에서는 역행렬의 나눗셈 성질을 갖는다.