역행렬(Inverse matrix)
- $AA^{-1} = A^{-1}A = E$
- 선형대수학에서 가역행렬(Invertible matrix)은 그와 곱한 결과가 단위행렬인 행렬$A^{-1}$을 갖는 행렬$A$를 말한다.
- 이 행렬$A^{-1}$를 행렬 $A$의 역행렬이라고 한다.
- 고등학교 행렬 문제에서는 교환법칙의 성립 유/무를 묻는 문제가 많이 나온다.
- 수능 유형 예시)
$$A(A+B)=E \rightarrow AB = BA$$
$$put) A(A + B) = E = (A+B)A\ \rightarrow \ A^2+AB=E=A^2+BA \ \rightarrow \ AB=BA$$
1. 역행렬을 구하는 방법
- 행렬 A가 이차 정사각 행렬일 땐 다음 방법으로 구할 수 있다.
$$A = \begin{pmatrix} a & b\\ c & d \end{pmatrix},\ \ \ A^{-1}=\frac{1}{ad-bc}\begin{pmatrix} d & -b\\ -c & a \end{pmatrix}$$
- 위 역행렬을 구하는 방법에서 $ad-bc=0$인 경우, 분모가 0이 되므로 역행렬을 만들 수 없다.
- 즉, $ad-bc$의 값을 통해 역행렬이 존재하는지를 확인할 수 있다.
- $ad-bc \neq 0$: $A^{-1}$이 존재한다.
- $ad-bc = 0$: $A^{-1}$이 존재하지 않는다.
- Python으로 역행렬을 구해보자.
>>> mat = np.array([[2, 1, 5],[0,0,1],[-1,0,2]])
>>> inv_mat = np.linalg.inv(mat)
>>> np.dot(mat, inv_mat)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
- 만약 역행렬이 존재하지 않는 행렬이라면, 다음과 같은 오류를 반환한다.
>>> mat = np.array([[2, 1],[2,1]])
>>> inv_mat = np.linalg.inv(mat)
---------------------------------------------------------------------------
LinAlgError Traceback (most recent call last)
<ipython-input-12-72ac304bfc31> in <module>
1 mat = np.array([[2, 1],[2,1]])
----> 2 inv_mat = np.linalg.inv(mat)
...
---> 88 raise LinAlgError("Singular matrix")
89
90 def _raise_linalgerror_nonposdef(err, flag):
LinAlgError: Singular matrix
2. 이차 정사각행렬 역행렬 공식의 증명
- 역행렬 공식의 증명은 가우스 조던 소거법(Gauss-Jordan elimination method)로 구하는 방법과 전치행렬, 소행렬, 여인자를 이용해서 구하는 방법 두 가지가 있다.
- 그러나 이차 정사각행렬은 비교적 공식이 간단하므로, 옳바른 증명 방법은 아니긴 하지만, 위 기법들을 사용하지 않고도 구할 수 있다.
- 행렬 $A$와 역행렬 $A^{-1}$을 다음과 같이 정의하자.
$$A=\begin{pmatrix} a & b\\ c & d \end{pmatrix},\ \ A^{-1}=\begin{pmatrix} x & y\\ z & r \end{pmatrix}$$
$$AA^{-1}=E \rightarrow \begin{pmatrix} a & b\\ c & d \end{pmatrix}\begin{pmatrix} x & y\\ z & r \end{pmatrix} = \begin{pmatrix}1 & 0\\ 0 & 1 \end{pmatrix}$$
$$ax + bz = 1 \cdots ①$$
$$ay + br = 0 \cdots ②$$
$$cx + dz = 0 \cdots ③$$
$$cy + dr = 1 \cdots ④$$
- 위 식을 기반으로 $(ad-bc)$가 만들어지도록 4개의 식을 유도해보자
$$①*c - ③*a = (acx+bcz-c)-(acx+adz)=0\ \rightarrow \ (bc-ad)z = c \cdots ⑤$$
$$①*d-③*b = (adx+bdz-d)-(bcx+bdz)=0\ \rightarrow \ (ad-bc)x = d \cdots ⑥$$
$$②*c-④*a=(acy+bcr)-(acy+adr-a)=0\ \rightarrow \ (bc-ad)r = -a \cdots ⑦$$
$$②*d-④*b=(ady+bdr)-(bcy+bdr-b)=0\ \rightarrow \ (ad-bc)y = -b \cdots ⑧$$
- ⑤, ⑥, ⑦, ⑧을 볼 때, $ad-bc \neq 0$이다.
- $ad-bc=0$인 경우, 행렬 $A$가 영행렬이기 때문에 전제가 성립하지 않는다.
- ⑤, ⑥, ⑦, ⑧의 양변을 $ad-bc$로 나눠보자.
$$⑤ \rightarrow z = \frac{-c}{ad-bc}$$
$$⑥ \rightarrow x = \frac{d}{ad-bc}$$
$$⑦ \rightarrow r = \frac{a}{ad-bc}$$
$$⑧ \rightarrow y = \frac{-b}{ad-bc}$$
- ⑤, ⑥, ⑦, ⑧으로부터 유도된 $x,y,z,r$를 $A^{-1}$에 대입하자.
$$A^{-1}=\frac{1}{ad-bc} \begin{pmatrix} d & -b\\ -c & a \end{pmatrix}$$
- 이차 정사각행렬의 역행렬을 구하는 공식이 유도 되었다.
3. 역행렬의 성질
3.1. $(A^{-1})^{n} = (A^{n})^{-1}$
- $A$의 역행렬이 존재하면, $A^n$의 역행렬도 존재한다.
- 즉, $A^{100}$의 역행렬이 존재한다면, $A^{20}$의 역행렬도 존재한다는 소리다.
3.2. $(kA)^{-1} = \frac{1}{k}A^{-1}$
- 역원의 개념이므로, 상수 k가 뒤집어진다.
- $k=0$인 경우, 어차피 영행렬이므로, 역행렬이 존재하지 않는다.
3.3. $(AB)^{-1} = B^{-1}A^{-1},\ \ (APB)^{-1} = B^{-1}P^{-1}A^{-1}$
3.4. 차수가 같은 두 행렬 A,B 모두 역행렬이 존재한다면, AB역시 역행렬이 존재한다.
- 역, 대우 모두가 참인 성질이다.
- 역) A, B중 적어도 하나가 역행렬이 존재하지 않는다면, AB의 역행렬 또한 존재하지 않는다.
- 대우) AB가 역행렬이 없으면, A, B 중 적어도 하나는 반드시 역행렬이 존재하지 않는다.
'Python으로 하는 기초 수학 > 행렬' 카테고리의 다른 글
연립일차방정식과 가우스 소거법(Gaussian elimination) (0) | 2021.02.26 |
---|---|
영인자(Zero Divisor) (0) | 2021.02.25 |
행렬의 성질 (0) | 2021.02.25 |
행렬(Matrix) (0) | 2021.02.25 |