본문 바로가기

Studying/자연과학

수학 상식 : 행렬식 (determinant)과 역행렬

이번 포스팅에서는 행 (row)과 열 (column)의 갯수가 같은 정사각행렬이 주어졌을때, 행렬식 (determinant)과 역행렬을 구하는 방법에 대해서 알아봅시다. 행렬식을 위한 점화식 (recurrence relation)이 어떤 형태를 띠는지 살펴보고, 이와 더불어 행렬식이 가지는 기하학적인 의미에 대해서도 짚어보겠습니다.

 

반응형

 

벡터의 내적과 외적을 통해 행렬식이 가지는 기하학적인 의미를 이해해볼텐데요. 여러 개의 성분을 가진 두 벡터를 곱하는 내적과 외적은 각각 스칼라곱과 벡터곱이라고도 불립니다. 내적과 외적의 정의와 특징에 대해서는 다음 포스팅에 더 자세한 내용이 소개되어 있습니다.

 

 

수학 상식 : 벡터의 덧셈과 곱셈 (내적, 외적)

이번 포스팅에서는 두 개의 벡터 (vector)의 덧셈 및 곱셈 연산인 내적 (inner product)과 외적 (exterior product)의 정의와 특징에 대해 간략히 짚어보겠습니다. 벡터의 각 성분들을 가지고 이 연산들을 어

swstar.tistory.com

 

여기서 다루게 될 역행렬은 정사각행렬의 곱셈의 역원입니다. 다시 말해서 임의의 정사각행렬과 그 역행렬을 곱하면 항등원인 단위행렬이 나오게 되는 것입니다. 행렬의 곱셈이 어떻게 정의되는지에 대한 더 자세한 내용은 다음 포스팅에 소개되어 있습니다.

 

 

수학 상식 : 행렬 (matrix)의 덧셈과 곱셈

이번 포스팅에서는 수학 및 과학 분야에서 널리 쓰이는 개념인 행렬의 연산에 대한 기본적인 내용을 알아봅시다. 행렬의 덧셈과 곱셈이 어떻게 정의되는지와 더불어, 교환자 (commutator) 및 반교

swstar.tistory.com

 

고등학교 수학 교과서에 벡터와 행렬 (matrix)이 나오던 때가 있었습니다. 행렬은 여러개의 숫자가 사각형 모양으로 배열된 일종의 집합체로서, 가로로 나열되는 숫자들을 행 (row)이라고 부르고 세로로 나열된 숫자들을 열 (column)이라고 하죠. 행의 갯수와 열의 갯수가 같은 경우 이를 두고 정사각행렬이라고 부릅니다.

 

가장 간단한 예시로서 행과 열이 2개인 정사각행렬의 역행렬을 구하는 방법에 대해서도 배웠었는데요. 주어진 행렬과 그 역행렬을 곱하면 단위 행렬이 나오는 것이 특징입니다. 단위 행렬에 대해 간단히 말하자면, 대각선 위의 성분들만 1이고 나머지는 전부 0인 정사각행렬이라고 할 수 있습니다. 다시 말해서 i번째 행과 j번째 열에 있는 숫자는 ij가 같은 때 1이 되고, 그렇지 않으면 0입니다.

 

크기가 2인 정사각행렬의 역행렬을 구하는 과정에서 등장하는 것 중의 하나가 행렬식입니다. 이는 두 개의 대각 성분들을 곱한 것에다가 나머지 두 개의 성분의 곱을 뺀 것으로 주어집니다. 이러한 정의를 더 큰 행렬에 대해 확장하기 위해서 레비치비타 (Levi-Civita) 기호라는 것을 도입할 필요가 있습니다.

 

formulae to define the determinant of a square matrix in terms of Levi-Civita symbol. The simplest case of 2 by 2 matrix is generalized to larger matrix.

 

레비치비타 기호는 보통 그리스 문자 엡실론 (epsilon)에다가 아래첨자로 여러개의 숫자들이 붙어있는 형태를 띠고 있는데요. 아래첨자로 붙는 숫자의 갯수는 정사각행렬의 크기와 동일합니다. 다시 말해서 행과 열의 갯수만큼 숫자가 나열되어 있고, 이 숫자들의 값에 따라서 레비치비타 기호의 값이 1, -1 또는 0 이 될 수 있습니다.

 

정사각행렬의 크기가 N인 경우, 1부터 N까지의 숫자가 차례대로 배열되어 있다면 레비치비타 기호의 값은 1이 됩니다. 그리고 아래첨자로 들어가는 숫자 두 개를 임의로 골라서 맞바꾸면 -1이 곱해지는 반대칭 (totally anti-symmetric) 관계가 있습니다. 따라서 이런 바꿔치기를 짝수번 하면 본래의 값으로 돌아오겠죠. 그리고 반대칭성 덕분에 아래첨자로 들어가는 숫자들 중에 2개 이상이 같으면 레비치비타 기호의 값은 0이 됩니다.

 

레비치비타 기호를 사용해서 임의의 크기를 가진 정사각행렬에 대한 행렬식을 급수로 표현할 수 있습니다. 여기서 한발 더 나아가 행렬식이 만족시키는 점화식 혹은 재귀식이 어떤 것인지를 살펴볼 수 있고, 이로부터 역행렬을 계산하는 방법도 알아볼 수 있습니다.

 

schematics of determinant and inverse matrix, showing the recurrence relation in terms of determinants of sub-matrices

 

행렬식에 대한 점화식은 부분 행렬을 고려함으로써 얻을 수 있는데요. 임의의 성분을 골랐을 때, 그 성분이 위치한 행과 열을 제외한 나머지 성분들로 이루어진 행렬을 생각해볼 수 있습니다. 성분들이 배치되는 순서는 동일하지만, 특정한 행과 열이 생략된다는 차이점이 있죠. 따라서 새로 만들어진 행렬은 여러개의 부분 행렬의 복합체이고, 그 크기는 원래 주어진 행렬보다 1 작다는 특징이 있습니다.

 

원래 주어진 행렬의 행렬식을 급수 표현으로 나타낼 수 있습니다. 특정한 행이나 열을 고르고 그걸 따라가면서, 본래 행렬의 성분값에다가 나머지 성분들로 이루어진 행렬의 행렬식을 곱하고 이를 더해나가는 것인데요. 여기서 1과 -1이 번갈아가며 곱해진다는 점은 주의해야 합니다. 레비치비타 기호의 반대칭성으로 인해 파생되는 결과 중 하나라고 하겠습니다.

 

행렬식에 대한 점화식에 입각해서, 역행렬의 각 성분들이 어떻게 주어지는지도 알아낼 수 있습니다. 뿐만 아니라 행렬식이 분모에 들어간다는 사실로부터, 행렬식이 0이 되면 역행렬이 정의되지 않는다는 것 역시도 유추가 가능하죠.

 

마지막으로 행렬식이 기하학적으로 어떤 의미를 가지는지에 대해 알아봅시다. 가장 간단한 예시로서 2차원 정사각행렬의 행렬식은 평행사변형의 넓이에 대응되고 이는 더 고차원 공간으로 확장이 가능합니다.

 

geometric interpretation of determinant in 3-dimensional space, which is given by volume of a parallelepiped. It can be also written in terms of product of three column vectors.

 

여러개의 벡터들이 주어졌을 때 각 벡터들의 성분들을 세로로 나열한 것을 하나의 열로 상정하고, 모든 벡터들의 열들을 가로로 나열해서 행렬을 구성할 수 있는데요. 벡터의 차원 만큼의 갯수를 가지고 있다면 정사각행렬이 등장할 것입니다. 예를 들어서 2차원 평면에서는 2개의 벡터가 필요하고, 3차원 공간에서는 3개의 벡터가 필요한 식입니다.

 

정사각행렬의 행렬식이 주어진 벡터들을 변으로 하는 평행사변형의 넓이나 부피가 된다는 것을 볼 수 있습니다. 3차원 공간의 경우 벡터들의 내적과 외적을 통해서도 이를 계산할 수 있는데요. 이렇게 벡터들의 곱셈을 이용하는 방식을 더 고차원으로 확장하기는 어렵습니다. 반면에 벡터들을 나열한 정사각행렬의 행렬식을 사용하면, 고차원에 대해서도 일반화할 수 있죠. 4차원 평행사변형 같은 것을 머릿속에서 상상하기는 어렵지만, 수학적으로는 가능한 것입니다.

 


 

정사각행렬의 크기가 큰 경우 행렬식과 역행렬을 손으로 계산하기는 힘들고, 컴퓨터의 도움을 받는것이 좋습니다. 이 때 생각해볼 수 있는 방법중 하나는 함수가 스스로를 호출하는 재귀호출을 통해 점화식을 구현하는 것입니다. 구체적인 원리에 대한 더 자세한 내용은 다음 포스팅에 소개되어 있습니다.

 

 

C/C++ 함수가 스스로를 부르는 재귀호출

여기서는 C언어 또는 C++ 프로그램에서의 재귀호출 (recursive call)에 대해서 다뤄보겠습니다. 재귀호출에 대해 간단히 말하자면, 특정한 함수가 스스로를 호출하는 과정을 말하는데요. 재귀호출의

swstar.tistory.com