Zen's Hermitage

[선형 대수 5] 행렬 심화 4

(Updated: 2026년 3월 22일)
linear-algebramath

행렬식과 확대율

행렬을 단순히 숫자표로만 보면 행렬식은 외워야 할 공식처럼 느껴진다. 하지만 행렬을 공간을 바꾸는 사상으로 보면, 행렬식은 훨씬 자연스럽게 읽힌다. 핵심은 아주 간단하다. 행렬식은 그 행렬이 면적이나 부피를 얼마나 키우거나 줄이는지를 나타내는 값이다.

즉, 행렬식은 계산을 위한 장식이 아니라, 공간이 얼마나 확대되거나 축소되는지를 말해 주는 숫자다. 이 관점이 잡히면 행렬식의 성질들도 따로 외우기보다 왜 그런지 이해하면서 받아들일 수 있다.

행렬식은 부피 확대율이다

평면에서 2×22 \times 2 행렬 AA는 벡터를 다른 벡터로 보내는 규칙이면서, 동시에 평면의 도형 전체를 변형하는 규칙이기도 하다. 이때 어떤 도형을 AA로 변환했다고 하자. 그러면 그 도형의 넓이는 보통 바뀐다.

중요한 점은, 도형이 어디에 있든, 어떤 모양이든, 넓이가 바뀌는 비율은 항상 같다는 것이다. 어떤 삼각형을 잡아도, 어떤 사각형을 잡아도, 심지어 이상한 다각형을 잡아도, 행렬 AA가 만들어내는 넓이의 비율은 똑같다. 이 일정한 비율을 바로 detA\det A라고 한다.

평면에서는 이것이 면적 확대율이고, 3차원에서는 부피 확대율이다. 더 일반적으로 n×nn \times n 정방행렬 AAnn차원 공간의 도형을 바꾸며, 그때 nn차원 부피가 얼마나 바뀌는지를 나타내는 값이 detA\det A이다.

예를 들어 어떤 행렬 AA가 모든 도형의 넓이를 3배로 만든다면,

detA=3\det A = 3

이다. 모든 도형의 넓이를 반으로 줄인다면,

detA=12\det A = \frac{1}{2}

이다.

그리고 도형이 뒤집히는 경우에는 부호가 음수가 된다. 예를 들어 넓이 자체는 2배가 되었지만 뒤집힘이 일어났다면,

detA=2\det A = -2

라고 쓴다.

왜 위치나 모양과 관계없이 확대율이 같은가

이 부분이 처음에는 조금 낯설다. 도형마다 생긴 모양이 다르면 넓이도 다르게 변할 것처럼 느껴지기 때문이다. 하지만 행렬은 선형사상이므로, 모든 부분을 같은 방식으로 늘이고 기울이고 섞는다. 그래서 어떤 도형을 잡아도 최종적으로 넓이나 부피가 바뀌는 비율은 같다.

예를 들어 종이에 그려진 작은 정사각형 하나를 생각하자. 이 정사각형이 어떤 행렬에 의해 평행사변형으로 바뀌었다면, 종이 위의 다른 작은 정사각형들도 모두 같은 비율로 평행사변형으로 바뀐다. 큰 도형은 이런 작은 조각들의 합으로 생각할 수 있으므로, 전체 도형도 같은 비율로 넓이가 바뀐다.

그래서 행렬식은 특정한 삼각형만의 넓이 변화가 아니라, 그 행렬이 만드는 전체 공간 변형의 공통된 확대율이다.

행렬식은 보통 다음 두 가지 방식으로 쓴다.

detA\det A

또는

A|A|

둘 다 매우 자주 쓰이므로 둘 다 익숙해지는 것이 좋다. 다만 A|A|는 문맥에 따라 절댓값처럼 보일 수 있어서, 설명이 엄밀해야 할 때는 detA\det A 표기가 더 분명한 경우도 많다.

2차원에서는 면적, 3차원에서는 부피

2×22 \times 2 정방행렬의 행렬식은 면적 확대율이다. 3×33 \times 3 정방행렬의 행렬식은 부피 확대율이다.

예를 들어 3×33 \times 3 행렬이 정육면체를 변형해서 부피를 5배로 만들었다면,

detA=5\det A = 5

이다. 만약 뒤집히면서 부피가 5배가 되었다면,

detA=5\det A = -5

이다.

더 일반적으로 n×nn \times n 정방행렬 AA에 대해 detA\det Ann차원 부피의 확대율이다. 여기서 nn차원 부피라는 말은 2차원에서는 넓이, 3차원에서는 보통 말하는 부피, 그보다 높은 차원에서는 그에 대응하는 일반화된 부피를 뜻한다.

음의 확대율과 뒤집힘

행렬식이 음수라는 말은 넓이나 부피가 음수라는 뜻이 아니다. 실제 넓이나 부피 자체는 음수가 될 수 없다. 여기서 음수 부호는 뒤집힘을 뜻한다.

예를 들어 평면에서 좌우를 거울처럼 뒤집는 변환을 생각해 보자. 넓이 자체는 그대로지만 방향이 뒤집힌다. 이런 경우 행렬식은 1-1이다. 즉, 크기는 유지되지만 방향이 반전되었다는 뜻이다.

일반적으로

  • detA>0\det A > 0이면 방향을 보존한다.
  • detA<0\det A < 0이면 방향을 뒤집는다.
  • detA=0\det A = 0이면 공간을 납작하게 눌러서 부피가 사라진다.

특히 detA=0\det A = 0인 경우는 매우 중요하다. 이때는 어떤 입체가 납작한 평면이나 선분 같은 더 낮은 차원의 것으로 눌려 버린다. 그래서 원래 정보를 되돌릴 수 없고, 역행렬도 존재하지 않는다.

행렬식의 성질

행렬이 사상이고, 행렬식이 부피 확대율이라는 관점에서 보면 행렬식의 여러 성질은 따로 외우지 않아도 자연스럽게 보인다. 중요한 성질들을 차례로 보자.

항등행렬의 행렬식

항등행렬 II는 아무것도 바꾸지 않는다. 길이도, 넓이도, 부피도 그대로다. 따라서 확대율은 1이다.

detI=1\det I = 1

두 변환을 연속으로 하면 확대율은 곱해진다

먼저 AA로 바꾸고, 그다음 BB로 바꾸면 전체 변환은 BABA이다. 이때 처음에 AA가 부피를 detA\det A배 바꾸고, 이어서 BB가 다시 detB\det B배 바꾸므로 전체 확대율은 곱이 된다.

det(BA)=detBdetA\det(BA) = \det B \det A

보통 순서를 익숙한 형태로 쓰면

det(AB)=detAdetB\det(AB) = \det A \det B

이다.

이 성질은 행렬식의 가장 핵심적인 성질 중 하나다. 확대율이라는 관점에서는 거의 당연하다. 2배 확대 후 3배 확대를 하면 전체는 6배 확대가 되기 때문이다.

역행렬의 행렬식

AA가 어떤 도형의 부피를 detA\det A배로 바꾸었다면, A1A^{-1}는 그 변환을 정확히 되돌린다. 따라서 확대율은 역수여야 한다.

det(A1)=1detA\det(A^{-1}) = \frac{1}{\det A}

물론 이것은 detA0\det A \neq 0일 때만 가능하다. 애초에 detA=0\det A = 0이면 납작하게 눌러 버렸으므로 되돌릴 수 없다.

스칼라배의 행렬식

n×nn \times n 행렬 AA를 상수 cc배 하면, 각 방향 길이가 cc배가 된다. 그러면 nn차원 부피는 cnc^n배가 된다. 따라서

det(cA)=cndetA\det(cA) = c^n \det A

이다.

예를 들어 2차원에서는 길이가 2배 되면 넓이는 4배가 되고, 3차원에서는 길이가 2배 되면 부피는 8배가 된다. 이 때문에 cnc^n이 나온다.

행 또는 열을 바꾸면 부호가 바뀐다

행렬에서 두 행을 서로 바꾸거나, 두 열을 서로 바꾸면 방향이 뒤집힌다. 그래서 행렬식의 부호가 바뀐다.

예를 들어 두 열을 교환하면

detAdetA\det A \mapsto -\det A

가 된다.

이것도 확대율 관점에서 보면 자연스럽다. 크기는 같은데 방향만 뒤집혔기 때문이다.

같은 행이나 같은 열이 있으면 행렬식은 0이다

두 행이 같거나 두 열이 같으면, 그 행렬은 공간을 충분히 펼치지 못한다. 결국 도형이 납작하게 눌려서 부피가 0이 된다. 따라서 행렬식은 0이다.

예를 들어 2×22 \times 2 행렬에서 두 열이 같은 경우를 생각하면, 두 기본 방향이 서로 다른 방향으로 가지 않고 같은 방향으로 가는 셈이다. 그러면 평면을 만들 수 없고, 결국 선분 하나로 눌린다.

유용한 성질

행렬식 계산에서 자주 쓰는 매우 유용한 성질이 있다.

어느 한 열에 다른 열의 정수배를 더해도 행렬식은 변하지 않는다

예를 들어 어떤 행렬의 첫째 열 C1C_1에 둘째 열 C2C_2kk배를 더한다고 하자.

C1C1+kC2C_1 \mapsto C_1 + k C_2

그러면 행렬식은 변하지 않는다.

이 성질은 소거법으로 행렬식을 계산할 때 아주 중요하다. 행렬을 더 계산하기 쉬운 형태로 바꾸면서도 행렬식 값은 유지할 수 있기 때문이다.

왜 그럴까. 직관적으로는, 이미 있는 방향으로 평행하게 밀어 주는 것은 높이를 바꾸지 않기 때문이다. 평행사변형을 생각하면 이해가 쉽다. 밑변에 평행한 방향으로 한 변을 미끄러뜨려도 넓이는 변하지 않는다. 입체에서도 마찬가지로 옆으로 비스듬히 밀어도 부피는 유지된다.

엄밀하게는 이것이 행렬식의 다중선형성과 교대성에서 나온다. 하지만 처음에는 “기울이기만 하고 높이는 안 바꾼다”는 기하적 관점으로 받아들이는 것이 가장 좋다.

상삼각행렬과 행렬식

행렬이 특별한 모양이면 행렬식을 훨씬 쉽게 구할 수 있다. 대표적인 것이 상삼각행렬이다.

상삼각행렬은 대각성분 아래쪽이 모두 0인 행렬이다. 예를 들면 다음과 같다.

[a11a12a130a22a2300a33]\begin{bmatrix} a_{11} & a_{12} & a_{13} \\ 0 & a_{22} & a_{23} \\ 0 & 0 & a_{33} \end{bmatrix}

이런 행렬의 행렬식은 대각성분의 곱이다.

detA=a11a22a33\det A = a_{11} a_{22} a_{33}

더 일반적으로 n×nn \times n 상삼각행렬이면

detA=a11a22ann\det A = a_{11} a_{22} \cdots a_{nn}

이다.

이것은 실제 계산에서 매우 중요하다. 행렬을 소거법으로 상삼각형 모양으로 만들면 행렬식을 쉽게 계산할 수 있기 때문이다.

하삼각행렬, 즉 대각성분 위쪽이 모두 0인 경우도 마찬가지로 대각성분의 곱이 행렬식이다.

전치행렬의 행렬식

전치행렬은 행과 열을 뒤바꾼 행렬이다. 그런데 행렬식의 성질은 행과 열을 바꾸어도 그대로 성립한다. 따라서

det(AT)=detA\det(A^T) = \det A

이다.

이것은 행렬식이 본질적으로 행에 대해서만 정의된 것도 아니고, 열에 대해서만 정의된 것도 아니라는 뜻이다. 행을 기준으로 보든 열을 기준으로 보든, 같은 확대율을 나타낸다.

예를 들어 어떤 행렬의 행벡터들이 만들어 내는 평행사변형과, 열벡터들이 만들어 내는 평행사변형은 행렬식의 절댓값이라는 같은 넓이를 가진다. 그래서 전치를 해도 행렬식 값은 변하지 않는다.

다중선형성

다중선형성은 행렬식을 이해할 때 매우 중요한 성질이다. 이름이 조금 딱딱하지만 뜻은 차근차근 읽으면 그렇게 어렵지 않다.

행렬식은 각 열에 대해 따로 보면 선형적으로 작동한다. 즉, 한 열만 바꾸고 나머지 열은 고정해 두면, 그 열에 대해서는 선형성이라는 좋은 성질을 가진다.

예를 들어 첫 번째 열이 u+vu+v라면,

det[u+v,,w,,z]=================det[u,,w,,z]+det[v,,w,,z]\det[u+v,, w,, z] ================= \det[u,, w,, z] + \det[v,, w,, z]

가 된다.

또 첫 번째 열에 상수 cc를 곱하면,

det[cu,,w,,z]================cdet[u,,w,,z]\det[cu,, w,, z] ================ c \det[u,, w,, z]

가 된다.

이런 성질이 첫 번째 열뿐 아니라 모든 열에서 각각 성립한다. 그래서 다중선형성이라고 부른다. 여러 자리 각각에 대해 선형이라는 뜻이다.

이 성질 덕분에 행렬식은 복잡한 열벡터들을 기본벡터 조합으로 풀어 계산할 수 있다. 그리고 한 열에 다른 열의 배를 더해도 값이 유지된다는 성질도 여기서 자연스럽게 나온다.

행렬식의 계산법 (1) 수식 계산

행렬식을 정의하는 방법 가운데 하나는 순열과 부호를 이용하는 공식이다. 처음 보면 조금 복잡해 보이지만, 무엇을 세고 있는지 알면 구조는 분명하다.

일반적인 n×nn \times n 정방행렬 A=(aij)A = (a_{ij})에 대해 행렬식은 다음과 같이 쓸 수 있다.

detA======σSnsgn(σ)i=1nai,σ(i)\det A ====== \sum_{\sigma \in S_n} \operatorname{sgn}(\sigma) \prod_{i=1}^{n} a_{i,\sigma(i)}

여기서

  • SnS_n1,2,,n{1,2,\dots,n}의 모든 순열의 집합
  • σ\sigma는 열 번호를 어떻게 뽑을지 정하는 순열
  • sgn(σ)\operatorname{sgn}(\sigma)는 그 순열의 부호

를 뜻한다.

이 식은 각 행에서 원소를 하나씩 고르되, 같은 열은 중복해서 고르지 않는 모든 방법을 다 더하는 것이다. 그리고 그때 순열의 부호에 따라 플러스나 마이너스를 붙인다.

3×33 \times 3 행렬에서는 이 공식이 보다 구체적으로 다음과 같은 형태로 펼쳐진다.

detA======i,j,k=13εijka1ia2ja3k\det A ====== \sum_{i,j,k=1}^{3} \varepsilon_{ijk} a_{1i} a_{2j} a_{3k}

여기서 εijk\varepsilon_{ijk}는 Levi-Civita 기호라고 부르는 부호 기호이다. 이 기호는 첨자의 순서에 따라 11, 1-1, 00 값을 준다.

기본적으로

ε123=1\varepsilon_{123} = 1

로 두고, 첨자를 한 번 교환할 때마다 부호가 바뀐다.

예를 들어

ε213=ε123=1\varepsilon_{213} = -\varepsilon_{123} = -1

이다. 왜냐하면 123123에서 1122를 한 번 바꾸면 213213이 되기 때문이다.

ε312=ε132=ε123=1\varepsilon_{312} = -\varepsilon_{132} = \varepsilon_{123} = 1

처럼 계산할 수 있다. 즉, 홀수 번 교환하면 1-1, 짝수 번 교환하면 11이 된다.

그리고 첨자에 같은 것이 있으면 0이다.

ε113=0,ε232=0,ε333=0\varepsilon_{113} = 0,\quad \varepsilon_{232} = 0,\quad \varepsilon_{333} = 0

이유는 간단하다. 같은 열을 두 번 고른 경우이기 때문이다. 행렬식에서는 각 행에서 하나씩 고르되, 같은 열을 중복해서 고르면 안 된다. 그런 항은 아예 기여하지 않으므로 0으로 처리한다.

좀 더 엄밀하게 쓰면,

εijk================={1if (i,j,k) is an even permutation of (1,2,3)1if (i,j,k) is an odd permutation of (1,2,3)0if any two indices are equal\varepsilon_{ijk} ================= \begin{cases} 1 & \text{if } (i,j,k) \text{ is an even permutation of } (1,2,3) \\ -1 & \text{if } (i,j,k) \text{ is an odd permutation of } (1,2,3) \\ 0 & \text{if any two indices are equal} \end{cases}

이다.

일반적인 nn차 정방행렬에서도 같은 생각이 이어진다. 결국 행렬식은 “행마다 하나씩, 열은 겹치지 않게 고른 항들의 합”이며, 순서가 뒤집힌 정도에 따라 부호를 붙이는 구조이다.

행렬식의 계산법 (2) 수치 계산

실제로 손으로 계산할 때는 위 순열 공식을 직접 쓰는 경우보다, 행 연산이나 열 연산을 이용해 더 간단한 모양으로 바꾸는 경우가 훨씬 많다.

대표적인 방법은 다음과 같다.

  1. 행 또는 열에 다른 행이나 열의 배를 더해도 행렬식은 변하지 않는다.
  2. 두 행 또는 두 열을 바꾸면 부호가 바뀐다.
  3. 한 행 또는 한 열을 상수배하면 행렬식도 그만큼 상수배된다.
  4. 상삼각행렬이나 하삼각행렬로 만들면 대각성분의 곱으로 계산할 수 있다.

예를 들어

A=[123258101]A = \begin{bmatrix} 1 & 2 & 3 \\ 2 & 5 & 8 \\ 1 & 0 & 1 \end{bmatrix}

의 행렬식을 계산해 보자.

둘째 행에서 첫째 행의 2배를 빼면

R2R22R1R_2 \mapsto R_2 - 2R_1

이므로

[123012101]\begin{bmatrix} 1 & 2 & 3 \\ 0 & 1 & 2 \\ 1 & 0 & 1 \end{bmatrix}

가 된다. 이 연산은 행렬식을 바꾸지 않는다.

이제 셋째 행에서 첫째 행을 빼면

R3R3R1R_3 \mapsto R_3 - R_1

이므로

[123012022]\begin{bmatrix} 1 & 2 & 3 \\ 0 & 1 & 2 \\ 0 & -2 & -2 \end{bmatrix}

가 된다.

다시 셋째 행에 둘째 행의 2배를 더하면

R3R3+2R2R_3 \mapsto R_3 + 2R_2

이므로

[123012002]\begin{bmatrix} 1 & 2 & 3 \\ 0 & 1 & 2 \\ 0 & 0 & 2 \end{bmatrix}

가 된다.

이제 상삼각행렬이 되었으므로

detA=112=2\det A = 1 \cdot 1 \cdot 2 = 2

이다.

이런 방식이 실제 손계산에서 가장 자주 쓰인다.

블록대각행렬의 경우

블록대각행렬처럼 특별한 형태에서도 행렬식을 쉽게 계산할 수 있다. 예를 들어

D=diag(A1,A2,,Am)D = \mathrm{diag}(A_1, A_2, \dots, A_m)

처럼 여러 블록이 대각선 위에 놓이고 나머지가 0인 경우에는

detD======detA1detA2detAm\det D ====== \det A_1 \det A_2 \cdots \det A_m

이다.

이유는 각 블록이 서로 독립적으로 부피 확대를 담당하기 때문이다. 전체 공간은 블록별 공간의 곱처럼 움직이고, 전체 확대율은 각 블록의 확대율을 곱한 것이 된다.

여인수 전개와 역행렬

행렬식을 더 깊게 다루다 보면 여인수와 여인수 전개가 등장한다. 이것은 행렬식을 특정 행이나 특정 열을 기준으로 펼쳐 쓰는 방법이며, 역행렬 공식과도 직접 연결된다.

소행렬식과 여인수

먼저 어떤 n×nn \times n 행렬 AAii행과 jj열을 지워서 남는 (n1)×(n1)(n-1) \times (n-1) 행렬을 생각하자. 이 남은 행렬의 행렬식을 MijM_{ij}라고 하고, 이것을 소행렬식이라고 부른다.

그다음 여기에 부호를 붙여

Cij=(1)i+jMijC_{ij} = (-1)^{i+j} M_{ij}

를 정의한다. 이것이 여인수이다.

즉, 여인수는 그냥 소행렬식이 아니라, 위치에 따라 플러스와 마이너스를 붙인 값이다.

부호는 체스판처럼 번갈아 간다.

[++++++]\begin{bmatrix} * & - & + & - \\ - & + & - & + \\ * & - & + & - \\ - & + & - & + \end{bmatrix}

이 부호판을 기억하면 도움이 된다.

여인수 전개란

여인수 전개는 행렬식을 어떤 한 행이나 한 열을 기준으로 펼쳐 쓰는 방법이다.

예를 들어 ii번째 행을 기준으로 전개하면

detA======ai1Ci1+ai2Ci2++ainCin\det A ====== a_{i1} C_{i1} + a_{i2} C_{i2} + \cdots + a_{in} C_{in}

이 된다.

jj번째 열을 기준으로 전개하면

detA======a1jC1j+a2jC2j++anjCnj\det A ====== a_{1j} C_{1j} + a_{2j} C_{2j} + \cdots + a_{nj} C_{nj}

이 된다.

즉, 한 행이나 한 열을 골라 그 칸의 원소와 그 칸의 여인수를 곱해서 모두 더하면 행렬식이 된다.

이 방법은 0이 많은 행이나 열을 골랐을 때 특히 강력하다. 0인 항들은 다 사라지므로 계산이 크게 줄어든다.

예를 들어

A=[120340567]A = \begin{bmatrix} 1 & 2 & 0 \\ 3 & 4 & 0 \\ 5 & 6 & 7 \end{bmatrix}

에서는 셋째 열로 전개하면

detA======0C13+0C23+7C33\det A ====== 0 \cdot C_{13} + 0 \cdot C_{23} + 7 \cdot C_{33}

이므로 사실상 하나만 계산하면 된다.

여인수 행렬

각 원소를 그 위치의 여인수로 바꿔 만든 행렬

[C11C12C1nC21C22C2nCn1Cn2Cnn]\begin{bmatrix} C_{11} & C_{12} & \cdots & C_{1n} \\ C_{21} & C_{22} & \cdots & C_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ C_{n1} & C_{n2} & \cdots & C_{nn} \end{bmatrix}

을 여인수 행렬이라고 한다.

그리고 이 행렬을 전치한 것을 수반행렬이라고 한다.

adj(A)=(Cij)T\operatorname{adj}(A) = (C_{ij})^T

수반행렬은 역행렬 공식에 바로 등장한다.

여인수와 역행렬

AA가 가역행렬이고 detA0\det A \neq 0이면, 역행렬은 다음과 같이 쓸 수 있다.

A1======1detAadj(A)A^{-1} ====== \frac{1}{\det A}\operatorname{adj}(A)

즉, 수반행렬을 만들고 행렬식으로 나누면 역행렬이 된다.

이 공식은 이론적으로 매우 중요하다. 실제 큰 행렬을 계산할 때는 가우스 소거법을 더 많이 쓰지만, 역행렬과 행렬식, 여인수가 어떻게 연결되는지 보여 주는 대표 공식이기 때문이다.

왜 이런 공식이 성립하느냐 하면, 여인수 전개를 이용하면

Aadj(A)=======================det(A)IA \operatorname{adj}(A) ======================= \det(A) I

가 되기 때문이다. 따라서 detA0\det A \neq 0이면 양변을 detA\det A로 나누어 역행렬 공식을 얻는다.