{{위키데이터 속성 추적}}
[[선형대수학]]에서 '''가역 행렬'''(可逆行列, {{llang|en|invertible matrix}}) 또는 '''정칙 행렬'''(正則行列, {{llang|en|regular matrix}}) 또는 '''비특이 행렬'''(非特異行列, {{llang|en|non-singular matrix}})은 그와 곱한 결과가 [[단위 행렬]]인 [[행렬]]을 갖는 행렬이다. 이를 그 행렬의 '''역행렬'''(逆行列, {{llang|en|inverse matrix}})이라고 한다.

== 정의 ==
[[체 (수학)|체]] <math>K</math> 위에서 정의된 <math>n\times n</math> 행렬 <math>A,B</math>에 대하여, 다음 세 조건이 서로 동치이다. 이 조건이 성립할 경우 <math>B</math>를 <math>A</math>의 '''역행렬'''이라고 하며, <math>B</math>를 <math>A^{-1}</math>와 같이 표기한다.
*<math>AB=I_{n}</math>
*<math>BA=I_{n}</math>
*<math>AB=BA=I_{n}</math>
[[체 (수학)|체]] <math>K</math> 위에서 정의된 <math>n \times n</math> 행렬 <math>A</math>에 대하여, 다음 조건들이 서로 동치이며, 이를 만족시키는 <math>A</math>를 '''가역 행렬'''이라고 한다.
* 역행렬을 갖는다.
* 유일한 역행렬을 갖는다.
* 유한 개의 [[기본 행렬]]의 곱이다.
* [[단위 행렬]]과 [[행동치]]이다.
* 단위 행렬과 [[열동치]]이다.
* 단위 행렬과 [[동치 행렬|동치]]이다.
* 방정식 <math>Ax=0</math>의 해는 <math>x=\mathbf{0}</math>뿐이다. 즉 <math>\ker A = \left\{ \mathbf{0} \right\}</math>이다.
* 방정식 <math>Ax=b</math>의 해는 <math>b</math>의 값과 무관하게 항상 유일하다.
* <math>A</math>의 열이 <math>K^n</math>의 [[기저 (선형대수학)|기저]]를 이룬다.
* <math>\det A\ne0</math> (여기서 <math>\det</math>는 [[행렬식]]이다.)
* <math>\operatorname{rank}A=n</math> (여기서 <math>\operatorname{rank}</math>는 [[계수 (선형대수학)|계수]]이다.)
* <math>\operatorname{null} A = 0</math> (여기서 <math>\operatorname{null} A:=\dim {\ker A}</math>이다.)
* 0을 [[고윳값]]으로 가지지 않는다.

== 성질 ==
=== 전치 행렬과의 관계 ===
체 <math>K</math> 위에서 정의된 <math>n\times n</math> 행렬 <math>A</math>에 대하여, 다음 조건들이 서로 동치이다.
* <math>A</math>는 가역 행렬이다.
* <math>A^\operatorname T</math>는 가역 행렬이다.
* <math>AA^\operatorname T</math>는 가역 행렬이다.

=== 항등식 ===
체 <math>K</math> 위에서 정의된 <math>n\times n</math> 행렬 <math>A,B</math>에 및 스칼라 <math>k\in K</math>에 대하여, 다음과 같은 항등식들이 성립한다.
* <math>(A^{-1})^{-1}=A</math>
* <math>(kA)^{-1}=k^{-1}A^{-1}</math>
* <math>(AB)^{-1}=B^{-1}A^{-1}</math>
즉, 체 <math>K</math> 위의 <math>n\times n</math> 가역 행렬의 집합은 [[군 (수학)|군]]을 이루며, 이를 [[일반선형군]] <math>\operatorname{GL}(n;K)</math>이라고 한다. 또한, 역행렬은 일반선형군의 [[자기 반대 동형]]을 정의한다.

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

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

:<math>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}</math> <br>여기서 <math>i + j</math>가 홀수일 때 이고(<math>C_{ji}= -M_{ji}</math>) <math>i + j</math>가 짝수일 때 (<math>C_{ji}= M_{ji}</math>)이다. 즉,<math>C_{ji}=(-1)^{i+j}M_{ji}</math>이다.
여기서 <math>|A|</math>는 <math>A</math>의 [[행렬식]]을 가리키고 <math>C_{ij}</math>는 행렬의 공통인자,<math>M_{ij}</math>는 행렬의 소행렬식, <math>A^T</math>는 <math>A</math>의 [[전치행렬]]을 가리킨다.

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

=== 2 × 2 행렬의 역행렬 ===
위의 공통인자 방정식에서 <math>n</math>이 2일 경우 다음과 같은 식을 유도할 수 있다.
:<math>A^{-1} = \begin{bmatrix}
a & b \\ c & d \\
\end{bmatrix}^{-1} =
\frac{1}{ad - bc} \begin{bmatrix}
d & -b \\ -c & a \\
\end{bmatrix}</math>

2 × 2 행렬의 역행렬은 위 방법을 통해 빠르게 계산할 수 있다.

=== 3 × 3 행렬의 역행렬 ===
위의 공통인자 방정식에서 <math>n</math>이 3일 경우 다음과 같은 식을 유도할 수 있다.

:<math>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}</math>

:<math>|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) \ </math>

=== 작은 블록으로 나눠서 계산하는 법 ===
다음과 같은 식을 이용하면 행렬을 몇 개의 작은 [[블록 행렬]]로 나누어 계산할 수 있다.

:<math>\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}</math>

<math>A, B, C, D</math>는 행렬의 임의의 작은 블록이다. 이 방법은 <math>A</math>가 대각행렬이고 <math>A</math>의 [[슈어 보수행렬]] <math>(D-CA^{-1}B)</math>이 작은 크기일 때 특히 유용하다. 두 개의 행렬에 대한 역행렬만 계산하면 되기 때문이다. 이 방법은 행렬을 더 빠르게 곱하는 [[슈트라센 알고리즘]]의 개발자 [[포커 슈트라센]]이 발견했다.
<!--슈어 보완 행렬(Schur complement matrix) , [[슈어 보행렬]](Schur complement matrix) -->

== 역행렬의 도함수 ==
행렬 <math>A</math>가 <math>t</math>라는 변수에 따라 변한다고 하자. 이때 <math>A</math>의 역행렬의 [[도함수]]는 다음과 같다.

:<math> \frac{\mathrm{d}A^{-1}}{\mathrm{d}t} = - A^{-1} \frac{\mathrm{d}A}{\mathrm{d}t} A^{-1}. </math>

==역행렬과 행렬의 나눗셈==
행렬<math>A</math> 와 <math>B</math>에서,
:<math>{{A}\over{B}}= A \cdot B^{-1}</math> 이고, <math>A \cdot B^{-1}  \neq  B^{-1}  \cdot A</math>이다.
:<math>{{A}\over{B^{-1}}}= A \cdot B</math>이다.
[[스칼라 행렬]]<math>k</math>는,
:<math>{{A}\over{k}}= A \cdot k^{-1}</math> 이고, <math>A \cdot k^{-1} = k^{-1}  \cdot A</math>이다.

[[대각화행렬]]에서는
:임의의 행렬 A를 예약하고 [[고윳값 행렬]] P를 조사하고  P의 역행렬 P<sup>-1</sup>를 통해서,
:<math>P^{-1}AP = A^{D}</math>
대각화 행렬 A<sup>D</sup>를 얻을수있다. 여기서,
:<math>AP =  {{ A^{D}}\over {P^{-1}}}</math>
:<math>AP = {P} { A^{D}}</math>
처럼 대각화행렬에서는 역행렬의 나눗셈 성질을 갖는다.

== 같이 보기 ==
* [[크라메르 공식]]
* [[전치행렬]]
* [[대칭행렬]]
* [[사다리꼴행렬]]
* [[특이값 분해]]
* [[QR 분해]]
* [[치환행렬]]

== 외부 링크 ==
* [http://www.easycalculation.com/matrix/matrix-inverse.php 역행렬 계산기]

{{선형대수학}}

[[분류:선형대수학]]
[[분류:행렬]]
[[분류:행렬식]]
[[분류:행렬론]]