행렬

1 여럿이 줄지어 가는 것

한자로는 行列이라고 쓰는데, 수학의 행렬과 한자는 같다. 가족관계에서 쓰이는 항렬도 한자는 동일.[1] 기차놀이와는 관련이 있…을까?


2 수학의 matrix

대수학
이론
기본대상방정식부등식산술
수 체계실수 · 복소수 · 사원수
구조와 관심대상
군(Group)군의 작용, 실로우 정리
환(Ring)가환대수학
체(Field)갈루아 이론
가군(Module)
대수(Algebra)
정리
대수학의 기본정리 · 나머지 정리
다항식 · 유클리드 호제법 · 대수#s-1 · 노름
분야와 관심대상
대수학
정수론대수적 정수론 · 해석적 정수론
선형대수학벡터 · 행렬 · 선형변환
대수기하학스킴 · 모티브 · 사슬 복합체

matrix(行列)

1개 이상의 수나 식을 사각형의 배열로 나열한 것. 가로를 행(row), 세로를 열(column)이라고 부른다. 아서 케일리윌리엄 로원 해밀턴이 발명했다. 역사적으로 본다면 행렬은 연립 일차 방정식의 풀이를 어떻게 하면 될까라고 고민한데서 시작했다. 아서 케일리가 연구하던 중에 [math] ad - bc [/math] 의 값에 따라 연립 방정식의 해가 다르게 나오는 것을 보고 얘네가 해의 존재 여부(궁극적으로는 행렬의 가역 여부)를 판별한다는 관점에서 determinant라고 부른 데서 행렬식이 탄생했고, 윌리엄 로원 해밀턴이 '야, 그러면 연립 방정식의 계수랑 변수를 따로 떼어내서 쓰면 어떨까?'라는 생각에서 행렬이 탄생했다. 즉 역사적으로 보면 행렬식이 행렬보다 먼저 탄생했다.

사실 그 존재가치는 함수 내지는 사상(寫像, map)을 표현하기 위한 도구라는 데 있다. 모든 선형 변환(일차 변환)은 행렬로 표현할 수 있고 그 역도 성립한다. 즉, 행렬은 선형 변환과 같다. 이를 선형대수학의 기본정리라고 한다. 행렬의 곱셈을 덧셈이나 뺄셈처럼 안 하고 복잡하게 정의해 놓은 이유도 여기 있다. 참고로 정확히 말하면 차원이 [math]n[/math][math]F[/math]-벡터공간에서 차원이 [math]m[/math][math]F[/math]-벡터공간으로 가는 선형변환의 집합과 [math]F[/math] 위의 [math]n\times m[/math] 행렬의 집합이 [math]F[/math]-대수(algebra)로서 동형(isomorphic)인 것인데, 선형대수학 수준에서는 증명은 다 하면서도 어물쩡 넘긴다.

독립변수 1개, 종속변수 1개인 일반적인 일변수함수는 행렬 개념을 쓰지 않고도 수로 직관적으로 설명할 수 있지만, 정의역이나 공역의 차원이 둘 이상이 되기 시작하면 그 때부터는 수가 아니라 행렬로 함수를 표현해야 한다(행렬로 연립방정식을 풀어 본 사람이라면 감이 올 것이다. 이게 정의역이 두 개 이상인 함수의 맛보기). 예컨대 정의역이 2차원이고 공역이 3차원인 함수(=대응)를 표현하는 행렬은 3×2 행렬이다. 중/고급 수학의 핵심 개념.

계산 노가다가 행 하나, 열 하나 더해질 때마다 무지막지하게 늘어난다.[2] 다만 컴퓨터 연산에 매우 친화적이라서 슈퍼컴퓨터의 점수놀음은 대부분 행렬 연산에 기반을 둔 애플리케이션의 실행 시간으로 행해진다. 이는 컴퓨터에서 하나의 연산을 빠르게 하는 건 어렵지만 같은 시간에 더 많은 데이터에 대해 동일한 연산을 일률적으로 처리하는 건 쉽기 때문이다. 대표적인 예로 인텔CPU의 MMX나 SSE, 요즘 슈퍼컴퓨팅에서 핫한 GPGPU와 FPGA가 그런 전략을 쓴다. 이런 것과 별도로 병렬 프로그래밍을 써서 멀티코어나 MPI나 Hadoop MapReduce등을 활용하는 것도 결국 이 원리에 해당한다. 덧셈, 뺄셈, 곱셈은 쉬울 줄 알았지? 그러니까 행렬 계산되는 공학계산기를 사용해야 합니다.

[math]\mathbf{x} = \begin{bmatrix} x_1 \\ x_2 \\ ... \\ x_m \end{bmatrix} , \mathbf{x} = \begin{bmatrix} x_1 \quad x_2 \quad ... \quad x_m \end{bmatrix} [/math]

하나의 열로만 구성되면 열벡터, 하나의 행으로만 구성되면 행벡터라고 한다. 보통 책에는 조판이 귀찮아서 열벡터는 행벡터를 transpose[3]를 이용해 나타내는 경우가 있다. 행과 열 모두가 둘 이상이면 텐서가 된다.

보통 이과 학생들은 대학에서 선형대수학을 배우면서[4] 미지수가 2개 이상인 방정식이나, 둘 이상의 변수로 정의되는 함수를 표현하려면 행렬이 필수적이다. 물론 수학과 학생들은 이런 '행렬 활용법'에 가까운 공대 선형대수 이상의 원론적인 개념으로 행렬에 대해 접근하게 된다.

행렬은 다음 두 형태 중 하나를 골라서 그린다.
[math]\begin{bmatrix} x_{11} \quad x_{12} \\ x_{21} \quad x_{22} \end{bmatrix} = \begin{pmatrix} x_{11} \quad x_{12} \\ x_{21} \quad x_{22} \end{pmatrix} [/math]
공통수학과정이 아닌 선형대수학에서 행렬을 쓸 때는 보통 좌변의 형태를 많이 쓴다. 행렬 연산의 중첩이 많다 보니 일반 괄호 '( )'와 헷갈림을 방지하기 위해서라고. 공과 계열에서는 벡터 형태의 변수를 나타낼 때에는 일반 괄호를 쓰고 함수를 의미하는 행렬을 나타낼 때에는 대괄호를 씀으로써 항의 의미를 명확히 하는 경우도 종종 있다. 예컨대 연립일차상미분방정식이나 고차상미분방정식에서 볼 수 있는 [math] \dot{x} = Ax [/math] 꼴의 수식을 [math] \begin{pmatrix}\dot{x_1}\\\dot{x_2}\end{pmatrix} = \begin{bmatrix} a_{11} \quad a_{12} \\ a_{21} \quad a_{22} \end{bmatrix}\begin{pmatrix}x_1\\x_2\end{pmatrix} [/math]로 표기하는 것을 볼 수 있을 것이다.

간단히는 다음과 같이 쓴다.

[math]\left(x_{ij}\right)[/math]

2.1 행렬의 연산

행렬의 연산은 다음과 같다.

  • 덧셈, 뺄셈
대응하는 원소끼리 더하고 뺀다. 행렬의 크기가 서로 같은 경우에만 할 수 있다.
[math]\begin{bmatrix} x_{11} \quad x_{12} \ x_{21} \quad x_{22} \end{bmatrix} \pm \begin{bmatrix} y_{11} \quad y_{12} \ y_{21} \quad y_{22} \end{bmatrix} = \begin{bmatrix} x_{11} \pm y_{11} \quad x_{12} \pm y_{12} \ x_{21} \pm y_{21} \quad x_{22} \pm y_{22} \end{bmatrix}[/math]

기호로 간단히 표현하자면, 다음과 같다.
[math]\left(x_{ij}\right)+\left(y_{ij}\right)=\left(x_{ij}+y_{ij}\right)[/math]

  • 상수배
마찬가지로 모든 원소에 해당 상수를 곱해 주면 된다.
[math] c \begin{bmatrix} x_{11} \quad x_{12} \ x_{21} \quad x_{22} \end{bmatrix} = \begin{bmatrix} cx_{11} \quad cx_{12} \ cx_{21} \quad cx_{22} \end{bmatrix} [/math]
기호로 간단히 다음과 같이 표현한다.
[math]c\left(x_{ij}\right)=\left(cx_{ij}\right)[/math]
  • 곱셈
역시 ‘크기가 맞는’ 경우에만 할 수 있는데, 행렬의 곱셈에서 ‘크기가 맞다’는 것은 앞 행렬의 열의 수(=한 행이 몇 개의 숫자로 되어 있는지)와 뒤 행렬의 행의 수(=한 열이 몇 개의 숫자로 되어 있는지)가 같다는 것이다. 아래 곱셈의 정의를 보면 명확할 것이다. 곱셈 결과 나오는 행렬의 크기는 (앞 행렬의 의 수)×(뒤 행렬의 의 수)가 된다. 즉, 앞 행렬이 [math]m\times n[/math] 크기이고 뒤 행렬이 [math]n\times r[/math] 크기인 경우 곱은 [math]m \times r[/math] 크기의 행렬이 된다.
행렬의 곱셈을 각 성분 관점에서 보면 곱셈과 덧셈이 아울러 이루어지는데, 이 과정에서 앞 행렬의 행과 뒤 행렬의 열이 대응되는 특성이 있기 때문에 일반적으로 교환법칙이 성립하지 않는다. 다르게 말하면 앞 행렬의 행벡터와 뒤 행렬의 열 벡터의 내적값을 스칼라로 가지는 새로운 행렬을 얻는 과정이 바로 행렬의 곱셈이다.
[math] \begin{bmatrix} x_{11} \quad x_{12} \ x_{21} \quad x_{22} \end{bmatrix} \begin{bmatrix} y_{11} \quad y_{12} \ y_{21} \quad y_{22} \end{bmatrix} = \begin{bmatrix} x_{11}y_{11} + x_{12}y_{21} \quad x_{11}y_{12}+x_{12}y_{22} \ x_{21}y_{11} + x_{22}y_{21} \quad x_{21}y_{12}+x_{22}y_{22} \end{bmatrix} \neq \begin{bmatrix} y_{11} \quad y_{12} \ y_{21} \quad y_{22} \end{bmatrix} \begin{bmatrix} x_{11} \quad x_{12} \ x_{21} \quad x_{22} \end{bmatrix} = \begin{bmatrix} x_{11}y_{11} + x_{21}y_{12} \quad x_{12}y_{11} + x_{22}y_{12} \ x_{11}y_{21} + x_{21}y_{22} \quad x_{12}y_{21}+x_{22}y_{22} \end{bmatrix} [/math]
기호로 간단히 표현하자면, 다음과 같다.
[math]\left(x_{ij}\right)\left(y_{ij}\right)=\left(\sum_{k}x_{ik}y_{kj}\right)[/math]
  • 전치(transpose)
행렬 내의 원소를 대각선축을 기준으로 서로 위치를 바꾼 것. 즉 [math]m\times n[/math] 행렬의 전치행렬은 [math]n\times m[/math] 행렬이 된다. 텐서곱 연산의 필수요소다.
[math] \begin{bmatrix} x_{11} \quad x_{12} \ x_{21} \quad x_{22} \end{bmatrix}^{T} = \begin{bmatrix} x_{11} \quad x_{21} \ x_{12} \quad x_{22} \end{bmatrix} [/math]
기호로는 간단히 다음과 같이 표현한다.
[math]\left(x_{ij}\right)^{T}=\left(x_{ji}\right)[/math]


2.2 역행렬

정사각행렬 [math]A[/math]의 곱셈에 대한 역원[math]A^{-1}[/math]을 말한다. 후술할 단위행렬은, 곱셈에 대한 항등원이다. 즉,[math]A^{-1}A=I=AA^{-1}[/math]을 만족하는 유일한 [math]A^{-1}[/math]을 말한다[5]. 전술했듯이, [math]A[/math]행렬식[math]0[/math]이 아닌 경우에만 가능함이 알려져 있다.
그렇다면 주어진 행렬이 언제 가역이 되는지가 문제이다.[math]2\times2[/math] 행렬의 경우에는 아래 식에 따라 행렬식( [math] x_{11}x_{22} - x_{12}x_{21} [/math] )이 [math]0[/math]이 아니면 가역이 됨을 알 수 있다. 크기가 이보다 큰 행렬에서도 (전술했듯) 마찬가지로 행렬식만 보면 알 수 있다. 일반적으로 [math]R[/math][math]1[/math]을 갖는 가환환일 때, [math]R[/math] 위의 정사각행렬이 가역인 것과 그 행렬식이 가역인 것은 동치이다(!). 문제는 일반적인 [math]n\times n[/math] 행렬의 행렬식을 어떻게 정의하느냐 하는 것이고, 이것이 학부 선형대수학의 전반부 대부분을 차지하는 내용이다.
[math]\displaystyle A^{-1}=\frac{1}{\left|A\right|}\text{adj}A[/math]이고, 구체적으로는 다음과 같다.[6]
  • [math]2\times 2[/math]
[math]\displaystyle \begin{bmatrix} x_{11} \quad x_{12} \ x_{21} \quad x_{22} \end{bmatrix}^{-1} = \frac{1}{x_{11}x_{22} - x_{12}x_{21}} \begin{bmatrix} x_{22} \quad -x_{12} \ -x_{21} \quad x_{11} \end{bmatrix} [/math]
  • [math]3\times 3[/math]
[math]\displaystyle \begin{bmatrix} x_{11} \quad x_{12} \quad x_{13} \ x_{21} \quad x_{22} \quad x_{23} \ x_{31} \quad x_{32} \quad x_{33} \end{bmatrix}^{-1} = {1 \over x_{11}x_{22}x_{33} - x_{11}x_{23}x_{32} - x_{12}x_{21}x_{33} + x_{12}x_{23}x_{31} + x_{13}x_{21}x_{32} - x_{13}x_{22}x_{31}} \begin{bmatrix} x_{22}x_{33} - x_{23}x_{32} \quad x_{13}x_{32} - x_{12}x_{33} \quad x_{12}x_{23} - x_{13}x_{22} \ x_{23}x_{31} - x_{21}x_{33} \quad x_{11}x_{33} - x_{13}x_{31} \quad x_{13}x_{21} - x_{11}x_{23} \ x_{21}x_{32} - x_{22}x_{31} \quad x_{12}x_{31} - x_{11}x_{32} \quad x_{11}x_{22} - x_{12}x_{21} \end{bmatrix} [/math]
  • [math]4\times 4[/math]

공식이 있긴 하지만 복잡하므로 잘 쓰지 않고, 기타 여러 가지 방법으로 역행렬을 구할수 있다.
3차도 잘 안쓰는데?! 안쓰긴 뭘 안써


2.2.1 첨가 행렬로 역행렬 구하기

Augmented Matrix
행렬에 다른 행렬을 첨가한 형태의 행렬이다.


[math] A^{-1} = \begin{bmatrix} x_{11} \quad x_{12} \quad x_{13} \quad x_{14} \ x_{21} \quad x_{22} \quad x_{23} \quad x_{24} \ x_{31} \quad x_{32} \quad x_{33} \quad x_{34} \ x_{41} \quad x_{42} \quad x_{43} \quad x_{44} \end{bmatrix}^{-1} [/math] 을 구하기 위해서 [math] \begin{bmatrix} x_{11} \quad x_{12} \quad x_{13} \quad x_{14} \ x_{21} \quad x_{22} \quad x_{23} \quad x_{24} \ x_{31} \quad x_{32} \quad x_{33} \quad x_{34} \ x_{41} \quad x_{42} \quad x_{43} \quad x_{44} \end{bmatrix} [/math] 를 A행렬이라고 하자, 그리고 4x4 단위행렬을 [math]I[/math] 라 하면 [math] [ A \quad I ] = \begin{bmatrix} x_{11} \quad x_{12} \quad x_{13} \quad x_{14} \quad 1 \quad 0 \quad 0 \quad 0 \ x_{21} \quad x_{22} \quad x_{23} \quad x_{24} \quad 0 \quad 1 \quad 0 \quad 0\ x_{31} \quad x_{32} \quad x_{33} \quad x_{34} \quad 0 \quad 0 \quad 1 \quad 0 \ x_{41} \quad x_{42} \quad x_{43} \quad x_{44} \quad 0 \quad 0 \quad 0 \quad 1 \end{bmatrix} [/math] 로 표현이 가능하다.


이 행렬을 적절히 조작해서 [math] [ I \quad A^{-1}] [/math] 형태로 바꿀수 있으면 역행렬이 존재, 바꿀수 없으면 역행렬은 없음.

예시)

[math] A= \begin{bmatrix} 1 \quad 2 \quad 1 \quad 0 \\1 \quad 0 \quad 0 \quad 1 \\ 2 \quad 0 \quad 1 \quad 2 \\ 1 \quad 1 \quad 2 \quad 1 \end{bmatrix}[/math]의 역행렬을 구한다고 하자. 그러면 [math] [ A \quad I ] = \begin{bmatrix} 1 \quad 2 \quad 1 \quad 0 \quad 1 \quad 0 \quad 0 \quad 0 \\1 \quad 0 \quad 0 \quad 1 \quad 0 \quad 1 \quad 0 \quad 0\\ 2 \quad 0 \quad 1 \quad 2 \quad 0 \quad 0 \quad 1 \quad 0 \\ 1 \quad 1 \quad 2 \quad 1 \quad 0 \quad 0 \quad 0 \quad 1 \end{bmatrix} [/math] 로 표현가능하다. 여기서 한 행을 상수배해서 다른 행과 적절히 덧셈 뺄셈 연산을 하면 된다.

[math] \begin{bmatrix} 1 \quad 2 \quad 1 \quad 0 \quad 1 \quad 0 \quad 0 \quad 0 \\1 \quad 0 \quad 0 \quad 1 \quad 0 \quad 1 \quad 0 \quad 0 \\ 2 \quad 0 \quad 1 \quad 2 \quad 0 \quad 0 \quad 1 \quad 0 \\ 1 \quad 1 \quad 2 \quad 1 \quad 0 \quad 0 \quad 0 \quad 1 \end{bmatrix} \sim[/math][math] \left [ \begin{array} {cccccccc} 1 \quad & 2 \quad & 1 \quad & 0 \quad & 1 \quad & 0 \quad & 0 \quad & 0 \\ 0 \quad & -2 \quad & -1 \quad & 1 \quad & -1 \quad & 1 \quad & 0 \quad & 0 \\ 0 \quad & -4 \quad & -1 \quad & 2 \quad & -2 \quad & 0 \quad & 1 \quad & 0 \\ 1 \quad & 0 \quad & -1 \quad & 1 \quad & -1 \quad & 0 \quad & 0 \quad & 1 \end{array} \right] \sim[/math]

[math] \left [ \begin{array} {cccccccc} 1 \quad & 0 \quad & 0 \quad & 1 \quad & 0 \quad & 1 \quad & 0 \quad & 0 \\ 0 \quad & -2 \quad & -1 \quad & 1 \quad & -1 \quad & 1 \quad & 0 \quad & 0 \\ 0 \quad & 0 \quad & 1 \quad & 0 \quad & 0 \quad & -2 \quad & 1 \quad & 0 \\ 0 \quad & -1 \quad & 1 \quad & 1 \quad & -1 \quad & 0 \quad & 0 \quad & 1 \end{array} \right] \sim [/math][math] \left [ \begin{array} {cccccccc} 1 \quad & 0 \quad & 0 \quad & 1 \quad & 0 \quad & 1 \quad & 0 \quad & 0 \\ 0 \quad & 0 \quad & -3 \quad & -1 \quad & 1 \quad & 1 \quad & 0 \quad & -2 \\ 0 \quad & 0 \quad & 1 \quad & 0 \quad & 0 \quad & -2 \quad & 1 \quad & 0 \\ 0 \quad & -1 \quad & 1 \quad & 1 \quad & -1 \quad & 0 \quad & 0 \quad & 1 \end{array} \right] \sim[/math]

[math] \left [ \begin{array} {cccccccc} 1 \quad & 0 \quad & 0 \quad & 1 \quad & 0 \quad & 1 \quad & 0 \quad & 0 \\ 0 \quad & 0 \quad & 0 \quad & -1 \quad & 1 \quad & -5 \quad & 3 \quad & -2 \\ 0 \quad & 0 \quad & 1 \quad & 0 \quad & 0 \quad & -2 \quad & 1 \quad & 0 \\ 0 \quad & -1 \quad & 1 \quad & 1 \quad & -1 \quad & 0 \quad & 0 \quad & 1 \end{array} \right] \sim [/math][math] \left [ \begin{array} {cccccccc} 1 \quad & 0 \quad & 0 \quad & 0 \quad & 1 \quad & -4 \quad & 3 \quad & -2 \\ 0 \quad & 0 \quad & 0 \quad & 1 \quad & -1 \quad & 5 \quad & -3 \quad & 2 \\ 0 \quad & 0 \quad & 1 \quad & 0 \quad & 0 \quad & -2 \quad & 1 \quad & 0 \\ 0 \quad & 1 \quad & 0 \quad & 0 \quad & 0 \quad & 3 \quad & -2 \quad & 1 \end{array} \right] \sim[/math]

[math] \left [ \begin{array} {cccccccc} 1 \quad & 0 \quad & 0 \quad & 0 \quad & 1 \quad & -4 \quad & 3 \quad & -2 \\ 0 \quad & 1 \quad & 0 \quad & 0 \quad & 0 \quad & 3 \quad & -2 \quad & 1 \\ 0 \quad & 0 \quad & 1 \quad & 0 \quad & 0 \quad & -2 \quad & 1 \quad & 0 \\ 0 \quad & 0 \quad & 0 \quad & 1 \quad & -1 \quad & 5 \quad & -3 \quad & 2 \end{array} \right] [/math]


위 행렬은 [math] [ I \quad A^{-1}] [/math] 형태 이므로 A의 역행렬 [math] A^{-1} = \begin{bmatrix} 1 \quad -4 \quad 3 \quad -2 \\ 0 \quad 3 \quad -2 \quad 1 \\ 0 \quad -2 \quad 1 \quad 0 \\ -1 \quad 5 \quad -3 \quad 2 \end{bmatrix}[/math] 이다.

다만 지금 상태론 완전한 역행렬 계산 방법을 소개했다고 할 수 없다. 매우 쉬운 예로, [math] A = \left[ \begin{array} {ccc} 0 \quad & 1 \\ 1 \quad & 0 \end{array} \right] [/math]의 역행렬 [math] A^{-1} [/math][math] A [/math]와 같으며, row exchange없이 단순히 gaussian elimination을 적용할 수 없는 사례가 이처럼 존재한다. 다만 [math] A [/math]에 대한 row exchange는 [math] P [/math]라는 row exchange matrix를 이용하여 [math] PA [/math]처럼 행렬 곱으로 나타낼 수 있다.

그런데 정작 중요한 [math] P [/math]는 어떻게 구하는가? [math] i [/math]행과 [math] j [/math]행을 교환했다면 항등 행렬 [math] I [/math][math] i [/math]행과 [math] j [/math]행을 교환한 게 row exchange matrix이며, 여기선 구체적으로 [math] P_{ij} [/math]라고 칭하면 편리하다. 만약 row exchange를 [math] k [/math]행과 [math] l [/math]행에 대해 추가로 더 진행하면 [math] P = P_{kl}P_{ij} [/math]가 될 것이다.

[math] P [/math]는 정의를 잘 곱씹어보면 [math] P [/math]의 transpose(행과 열을 교환; 즉, [math] A [/math][math] i [/math][math] j [/math]열 항이 [math] A^T [/math]에서는 [math] j [/math][math] i [/math]열 항으로 정의된다.)인 [math] P^T [/math][math] P^{-1} [/math]임을 알 수 있는데, 이는 [math] P^T [/math][math] P [/math]가 한 일을 반대 순서로 하는 것이며[7], 따라서 항등행렬 [math] I [/math][math] P [/math][math] P^T [/math]를 순서대로 적용하면 [math] P^TPI = I [/math]가 성립하기 때문이다.

따라서 row exchange를 통해 gaussian elimination이 가능하게 만든 후, [math] A [/math]가 아닌 [math] PA [/math]에 대해서 gaussian elimination을 수행하여 얻은 역행렬은 [math] (PA)^{-1} = A^{-1}P^{-1} = A^{-1}P^T [/math]임을 알 수 있으며, 위 과정에서 우측에 얻은 [math] A^{-1}P^T [/math]의 뒤에 [math] P [/math]를 곱하면 우리가 원하는 [math] A^{-1}P^TP = A^{-1} [/math]를 구하게 된다.

마지막으로, 열심히 계산하다보니 어떤 행의 항들이 전부 0이 되는 경우가 있을 수 있는데, 이는 해당 행은 다른 행들의 linear combination으로 나타낼 수 있다는 것을 의미한다. 그런 경우는 역행렬이 절대 없으므로 계산을 그만두면 된다.

2.2.2 Cramer's Rule로 역행렬 구하기

행렬 [math] A [/math] 의 역행렬 [math]A^{-1}[/math] 는 간단히 다음과 같은 수식으로 나타낼 수 있다.

  • [math]\displaystyle A^{-1}=\frac{1}{\text{det}\left(A\right)}C^T[/math]
  • [math]C[/math]는 cofactor matrix라고 불리며, [math]C_{ij}[/math][8][math]\left(-1\right)^{i+j}\text{det}\left(M_{ij}\right)[/math]이다.
  • [math]M_{ij}[/math][math]\left(i,j\right)[/math] minor of [math]A[/math]라고 불리며 A의 [math]i[/math][math]j[/math]열을 제거한 행렬이다.
  • [math]\displaystyle \text{det}\left(A\right)[/math]는 determinant of A라고 하며 흔히 [math]2\times 2[/math] 행렬에서 [math]ad-bc[/math]라는 공식으로 알려진 그거다. 구체적인 식은 [math]n\times n[/math] 행렬 [math]A[/math][math]i[/math][math]j[/math]열을 [math]a_{ij}[/math]라고 할 때 [math]\sum_{i=1}^n a_{ij}C_{ij}[/math]이다. [math]j[/math][math]1[/math]에서 [math]n[/math]까지 아무 열이나 마음에 드는 걸로 고르면 된다. 혹은 위 식처럼 열을 고정하지 않고, 행을 고정하고 모든 열에 대해 합하는 식도 가능하다. 참고로 그 유명한 eigen value는 [math] \text{det}\left(A-\lambda I\right) = 0 [/math]을 만족하는 [math] \lambda [/math]를 일컫는다.

결과적으로 [math]A[/math]의 역행렬을 구하려면, [math]i[/math][math]j[/math]열을 [math]A[/math]에서 날리고 그것의 determinant를 구하는 것을 모든 [math]i,j[/math]조합에 대해 수행해야 한다. 식 자체가 재귀적이므로 언젠가는 계산이 끝나게 되어 있으며, 재귀 호출 프로그래밍으로 컴퓨터에서 깔끔하게 구현 가능하다. 다만 정말 상용 소프트웨어는 이 방식을 사용하지 않는데, 부동 소수점 연산의 정확도 한계 때문에 determinant가 실제로는 [math]0[/math]으로 계산되어야 하는 경우에 [math]0[/math]이 되지 않고 결과가 발산해버리기 때문이다.

아래 예제를 보자. 간단하게 아래와 같이 [math]3\times[/math] 행렬 [math]A[/math]를 정의하자.

[math] A = \left[ \begin{array} {ccc} 1 \quad & 2 \quad & 2 \\ 2 \quad & 1 \quad & 2 \\ 2 \quad & 2 \quad & 1 \end{array} \right] [/math]


그리고 cofactor matrix를 열심히 구한다...

[math] C_{11} = \left(-1\right)^{1+1} \text{det}\left(M_{11}\right) = \left| \begin{array} {ccc} 1 \quad & 2 \\ 2 \quad & 1 \end{array} \right| = 1\cdot1 - 2\cdot2 = -3 [/math]

[math] C_{12} = \left(-1\right)^{1+2} \text{det}\left(M_{12}\right) = -\left| \begin{array} {ccc} 2 \quad & 2 \\ 2 \quad & 1 \end{array} \right| = -\left(2\cdot1 - 2\cdot2\right) = 2 [/math]

[math] C_{13} = \left(-1\right)^{1+3} \text{det}\left(M_{13}\right) = \left| \begin{array} {ccc} 2 \quad & 1 \\ 2 \quad & 2 \end{array} \right| = 2\cdot2 - 1\cdot2 = 2 [/math]


[math] C_{21} = \left(-1\right)^{2+1} \text{det}\left(M_{21}\right) = -\left| \begin{array} {ccc} 2 \quad & 2 \\ 2 \quad & 1 \end{array} \right| = -\left(2\cdot1 - 2\cdot2\right) = 2 [/math]

[math] C_{22} = \left(-1\right)^{2+2} \text{det}\left(M_{22}\right) = \left| \begin{array} {ccc} 1 \quad & 2 \\ 2 \quad & 1 \end{array} \right| = 1\cdot1 - 2\cdot2 = -3 [/math]

[math] C_{23} = \left(-1\right)^{2+3} \text{det}\left(M_{23}\right) = -\left| \begin{array} {ccc} 1 \quad & 2 \\ 2 \quad & 2 \end{array} \right| = -\left(1\cdot2 - 2\cdot2\right) = 2 [/math]


[math] C_{31} = \left(-1\right)^{3+1} \text{det}\left(M_{31}\right) = \left| \begin{array} {ccc} 2 \quad & 2 \\ 1 \quad & 2 \end{array} \right| = 2\cdot2 - 2\cdot1 = 2 [/math]

[math] C_{32} = \left(-1\right)^{3+2} \text{det}\left(M_{32}\right) = -\left| \begin{array} {ccc} 1 \quad & 2 \\ 2 \quad & 2 \end{array} \right| = -\left(1\cdot2 - 2\cdot2\right) = 2 [/math]

[math] C_{33} = \left(-1\right)^{3+3} \text{det}\left(M_{33}\right) = \left| \begin{array} {ccc} 1 \quad & 2 \\ 2 \quad & 1 \end{array} \right| = 1\cdot1 - 2\cdot2 = -3 [/math]


참고로 [math] \text{det}\left(A\right) [/math]의 계산은 위의 cofactor matrix에서 아무 열이나 골라서 사용하면 된다. 여기선 간단히 첫번째 열을 골랐다.

[math] \text{det}\left(A\right) = a_{11}C_{11} + a_{21}C_{21} + a_{31}C_{31} = 1\cdot-3 + 2\cdot2 + 2\cdot2 = 5 [/math]


계산 완료.

[math]\displaystyle A^{-1} = \frac{1}{5} \left[ \begin{array} {ccc} -3 \quad & 2 \quad & 2 \\ 2 \quad & -3 \quad & 2 \\ 2 \quad & 2 \quad & -3 \end{array} \right] [/math]


검증차 원래 행렬과 곱해서 identity matrix가 나오나 확인도 해보자.

[math]\displaystyle A^{-1}A = \frac{1}{5} \left[ \begin{array} {ccc} 1 \quad & 2 \quad & 2 \\ 2 \quad & 1 \quad & 2 \\ 2 \quad & 2 \quad & 1 \end{array} \right] \left[ \begin{array} {ccc} -3 \quad & 2 \quad & 2 \\ 2 \quad & -3 \quad & 2 \\ 2 \quad & 2 \quad & -3 \end{array} \right] = \frac{1}{5} \left[ \begin{array} {ccc} 5 \quad & 0 \quad & 0 \\ 0 \quad & 5 \quad & 0 \\ 0 \quad & 0 \quad & 5 \end{array} \right] = I [/math]

이게 뭔 개고생이람...

여기선 [math]3\times 3[/math]이라 cofactor matrix의 각 항을 쉽게 계산했지만, 크기가 커지면 determinant 계산 자체가 recursive하게 된다. 쉽게 말해 노가다라든가 노가다라든가 노가다 같은 게 된다는 의미 어쨌든 아무리 커도 계산이 가능한 것은 사실이다.

2.3 특수한 행렬

  • 영행렬(zero matrix)
모든 성분이 [math]0[/math]인 행렬로, [math]O[/math]로 적는다. 덧셈의 항등원(즉 [math]A+O = O+A = A[/math])이므로, 행렬환#s-3이나 행렬벡터공간의 영원이 된다. 크기가 맞는 임의의 행렬과 곱하면 영행렬이 된다.[9]
[math] \begin{bmatrix} 0 \quad 0 \ 0 \quad 0 \end{bmatrix} \begin{bmatrix} x_{11} \quad x_{12} \ x_{21} \quad x_{22} \end{bmatrix} = \begin{bmatrix} x_{11} \quad x_{12} \ x_{21} \quad x_{22} \end{bmatrix} \begin{bmatrix} 0 \quad 0 \ 0 \quad 0 \end{bmatrix} = \begin{bmatrix} 0 \quad 0 \ 0 \quad 0 \end{bmatrix} [/math]
  • 제곱근행렬(Square root matrix)
수의 제곱근처럼, 행렬도 제곱근을 정의할 수 있다. 그런데 행렬의 특성상 제곱근이 되는 행렬이 엄청나게 많다. 2×2단위행렬도 아래와 같이 제곱근행렬이 8개나 된다무수히 많다. 다른 행렬의 제곱근은 다 적기에는 여백이 부족해서 굳이 언급하지 않겠다(...)
[math]\displaystyle \sqrt{\begin{bmatrix} 1 \quad 0 \ 0 \quad 1 \end{bmatrix}} = {1 \over h} {\begin{bmatrix} b \quad a \ a \quad -b \end{bmatrix}}, {1 \over h} {\begin{bmatrix} -b \quad -a \ -a \quad b \end{bmatrix}}, {1 \over h} {\begin{bmatrix} -b \quad a \ a \quad b \end{bmatrix}}, {1 \over h} {\begin{bmatrix} b \quad -a \ -a \quad -b \end{bmatrix}}, \begin{bmatrix} 1 \quad 0 \ 0 \quad 1 \end{bmatrix}, \begin{bmatrix} 1 \quad 0 \ 0 \quad -1 \end{bmatrix}, \begin{bmatrix} -1 \quad 0 \ 0 \quad 1 \end{bmatrix}, \begin{bmatrix} -1 \quad 0 \ 0 \quad -1 \end{bmatrix} [/math]
여기서 [math] a, b, h [/math]피타고라스의 정리( [math] a^{2} + b^{2} = h^{2} [/math] )를 만족하는 자연수이다.

아래 내용은 정사각행렬에 관한 것이다. 정사각행렬을 모두 모으면 행렬[math]M{n}\left(F\right)[/math]을 이룬다. 특히, 이 행렬환은 수학사적으로 의미가 매우 깊다. 흔히 대수학의 해방이라 일컬어지는 대수학의 인식전환의 계기가 되었다. 그 전까지 모든 대수적 대상에서 교환법칙이 성립하는 줄 알았는데, 해밀턴의 사원수와 더불어, 교환법칙이 성립하지 않는 대수였기 때문이다. 그리고, 행렬환은 환들 중에서 조건이 가장 열악하기 때문에, 많은 반례들을 여기서 찾을 수 있다.

주대각선은 모두 1이고 나머지 성분은 모두 0인 행렬로, I 또는 E로 적는다. 단위행렬을 곱하여도 행렬에는 변화가 없다(즉 A I = A, I B = B[10]). 따라서 행렬환의 단위원, 즉 곱셈의 항등원이 된다.
[math] E = I = \begin{bmatrix} 1 \quad 0 \ 0 \quad 1 \end{bmatrix}, \begin{bmatrix} 1 \quad 0 \quad 0 \ 0 \quad 1 \quad 0 \ 0 \quad 0 \quad 1 \end{bmatrix}, \begin{bmatrix} 1 \quad 0 \quad 0 \quad 0 \ 0 \quad 1 \quad 0 \quad 0 \ 0 \quad 0 \quad 1 \quad 0 \ 0 \quad 0 \quad 0 \quad 1 \end{bmatrix} ... [/math]
기호로 간단히 표현하자면 다음과 같다.
[math]E=I=\left(\delta_{ij}\right)[/math][11]
한편, 기본행렬(elementary matrix)과 단위행렬과 다르다. 기본행렬은 단위행렬에 기초행 연산을 한 번 적용한 행렬로서, 기본행렬을 왼쪽에 곱하는 것은 대응하는 기초행 연산을 한 것과 동일한 결과가 된다.


2.4 고등학교 교육 과정

  • 7차 교육과정 · 2007 개정 교육 과정 : 수학Ⅰ(2007) (수능 출제 범위)
  • 2009 개정 교육 과정 : 고급 수학Ⅰ (수능 미출제)
  • 2015 개정 교육 과정 : 고급 수학Ⅰ (수능 미출제)


2.5 더 보기

  1. 이 때문에 '대수학은 댓수(代數)와 항렬(行列)을 공부하므로 족보학의 일부'(이인석, 학부 대수학 강의 II: 대수학, 서울대학교출판부)라는 드립도 있다(...).
  2. 예를 들어 행렬식을 구하는 경우, 3차 정사각행렬은 2차의 3배의 계산을, 4차 정사각행렬은 3차의 4배의 계산을 필요로 한다. 5차 정도 되면 맨손으로는 도저히 못 푼다. 뭐 다행스럽게도 실제로 풀 때는 그렇게 야만스럽게(...) 계산하라고 하진 않고, 가우스 소거법으로 어찌저찌 잘 풀 수는 있다. 물론 머리 아프기는 마찬가지.
  3. \ 방향을 축으로 해서 원소의 위치를 서로 바꿔치기하는 것
  4. 이공계에서 선형대수학은 정말 활용도가 높은 과목이기에 몇몇 특수한 학과(예를 들어 산업 디자인 학과. 이 학과의 경우 행렬은 커녕 수포자 수준으로 고등학교 수학을 몰라도 전공을 배우는데 문제가 없다 카더라.)가 아닌 이상 전부 이를 배우게 된다. 왜냐하면 실제 세계를 수식으로 모델링 할 때는 필연적으로 여러 개의 방정식을 동시에 만족시키는 해 또는 근사를 구해야 하고, 이를 위한 방법론 중 가장 대표격이 선형대수학이기 때문이다.
  5. 사실 [math]AA^{-1}=I[/math][math]A^{-1}A=I[/math] 둘 중 하나만 만족해도 상관없다. 증명은 행렬식을 이용하거나 elementary row (column) operation을 이용한다.
  6. [math]\left|A\right|[/math]는 행렬식 [math]\text{adj}A[/math]는 (고전적) 수반행렬((classical) adjoint)이다.
  7. [math] (P_{i_1i_2}P_{i_3i_4}P_{i_5i_6} \cdots)^T = \cdots P_{i_5i_6}^TP_{i_3i_4}^TP_{i_1i_2}^T = \cdots P_{i_5i_6}P_{i_3i_4}P_{i_1i_2} [/math]; 혹시나 해서 말하지만 증명에서 사용한 두 가지 성질 [math] (AB)^T = B^TA^T [/math][math] P_{ij}^T = P_{ij} [/math]는 쉽게 증명할 수 있다. 다음 수업 시간까지 증명을 제출하도록!
  8. [math]C[/math][math]i[/math][math]j[/math]열 요소
  9. 새로운 영행렬은 물론 크기가 달라질 수 있다.
  10. 여기서 AB는 크기만 맞으면 되지 정사각행렬일 필요가 없다는 데 유의하여야 한다.
  11. [math]\delta_{ij}[/math]는 Kronecker delta 함수로 [math]i=j[/math]이면 [math]\delta_{ij}=1[/math], 그렇지 않으면 [math]\delta_{ij}=0[/math]이다.