[게임 수학] #9 | 역행렬(Inverse Matrix)

2023. 11. 23. 18:09Computer Sciences/Game Mathemathics

인프런 <게임 엔진을 지탱하는 게임수학, 이득우 교수님> 강의를 듣고 공부한 글입니다.

 

 

1. 역행렬(Inverse Matrix)의 개념

역행렬이라고 하는 것은 역함수(Inverse Function)에 해당하는 개념이며, 행렬이란 것도 결국에는 선형 변환의 큰 관점에서 함수와 동일하기에, 역함수와 동일한 개념이라고 볼 수 있습니다. 잠깐 다시 이전 개념들을 복습해 보면, 역함수라는 것은 공역에서 정의역으로 대응되는 관계를 나타낸 함수이며, 오로지 전단사 함수일 때에만 역함수가 존재함을 보장받는다고 하였습니다. 이때, 어떤 전단사 함수와 그 역함수와의 합성 함수항등 함수가 된다는 걸 봤었죠.

 

/*

공역으로 넘어간 대응 관계가 다시 정의역으로 넘어가면서, 원래 자기 자신에게로 대응되기 때문입니다.

*/

 

$$ f \circ f^{-1} = i $$

 

 

항등 함수라는 것은 정의역과 치역의 결과물이 항상 동일한 값으로 대응되는 함수를 뜻하였습니다.

 

항등함수

 

즉, 해석해보면 변환 전과 변환 후의 결과가 동일하다는 것이 핵심이겠습니다. 행렬에도 이러한 항등 함수 개념과 동일하게, 항등 행렬이란 것이 존재합니다. 한 번 알아보도록 하죠.

 

 

항등 행렬(Identity Matrix)이란?

어떤 공간과 선형 변환된 공간의 값이 동일한 행렬입니다. 즉, 선형 변환의 결과가 변함이 없는 행렬이죠. 원래 기존 공간의 표준 기저 벡터였던 \(e_1, \ e_2 \) 의 값이 동일하게 유지되도록 만들면 되기에, 다음과 같이 구성할 수 있습니다.

 

$$ \begin{align} I = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \end{align} $$

 

이를 임의의 행렬로 선형 변환을 적용해 보겠습니다.

 

$$ \begin{align} \begin{bmatrix} a & b \\ c & d \end{bmatrix} \cdot \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} &= \begin{bmatrix} a & b \\ c & d \end{bmatrix} \end{align} $$

 

 

동일한 결괏값이 만들어지는 것을 볼 수 있습니다. 이 항등 행렬에다가 어떠한 벡터를 곱하더라도 동일한 벡터가 만들어지게 됩니다. 이러한 항등 행렬을 통해 역행렬의 개념을 정립할 수 있게 됩니다.

 

 

역행렬(Inverse Matrix)이란?

선형 변환된 결과를 거꾸로 되돌려주는 선형 변환을 의미합니다. 

 

 

위를 보시면, 기존 공간의 표준 기저 벡터인 \( (1, 0), (0, 1)\) 에다가 \(A\) 행렬을 통해 선형 변환을 진행하였습니다. 그리고, 이 선형 변환된 기저 벡터 \( (a, c), (b, d) \) 를 다시 원래 표준 기저 벡터로 되돌리게 하는 A의 역행렬, \( A^{-1} \) 이 있을 겁니다.

 

어떤 전단사 함수와 그 역함수의 합성 함수는 항등 함수가 된다고 했었죠? 행렬에서도 동일하게 적용됩니다. 어떤 행렬과 그 역행렬의 합성한 결과는 항등 행렬이 됩니다. 이러한 특성을 통해, 역행렬을 계산할 수 있을 겁니다.

 

$$ f^{-1} \circ f = i $$

$$ A^{-1} \circ A = I$$

 

 


2. 역행렬의 계산 방법

항등 행렬이 \(A\) 행렬에 대한 역행렬 \(A^{-1}\) 을 구하는 열쇠가 된다는 것을 알게 되었습니다. 그렇다면, 이걸 가지고 역행렬을 어떻게 계산할 수 있을까요? 계산하는 법을 알기 전에 알아야 하는 개념이 있습니다. 바로 행렬식(Determinant)입니다.

 

 

행렬식(Determinant)

행렬식은 행렬이 가지고 있는 속성이라고 볼 수 있습니다. 다음과 같은 2차원 정방 행렬 \(A\) 가 있다고 한다면,

 

$$ \begin{align} A = \begin{bmatrix} a & b \\ c & d \end{bmatrix} \end{align} $$

 

이 행렬에 대한 행렬식은 다음과 같이 정의할 수 있습니다.

 

$$ det(A) = ad - bc$$ 

 

그렇다면, 이런 행렬식은 어떠한 때에 쓰이는 걸까요? 바로, 해가 존재하지 않는 조건을 판별해낼 때 쓰입니다. 다음과 같은 연립 방정식이 있다고 가정해 보죠.

 

$$ \begin{cases} 2x + y = 5 \\ x + 0.5y = 4 \end{cases} $$

 

위 식은 사실상 해가 존재하지 않는 방정식이죠. 소거법을 위해 \( 2 \cdot (x + 0.5y = 8)\) 을 해버리면, \(x\) 와 \(y\) 둘 다 삭제가 되어 버리니까요. 이를 행렬로 표현하면 다음과 같습니다.

 

$$ \begin{align} \begin{bmatrix} 2 & 1 \\ 1 & 0.5 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} 5 \\ 4 \end{bmatrix} \end{align} $$

 

행렬에 대해서도 방정식에서 했던 것처럼 해가 존재하지 않음을 증명해 낼 수 없을까요? 있습니다. 그 역할을 하는 게 바로 행렬식입니다.

 

위 행렬에 대해 행렬식을 적용하면, \( ad - bc = (2 \cdot 0.5) - (1 \cdot 1) = 0 \) 이 나오게 됩니다. 이는 어떤 의미일까요? 위 변환을 분석하면, 표준 기저 벡터 \(e_1, \ e_2\) 는 각각 \((2, 1), \ (1, 0.5) \) 로 변환되었다고 볼 수 있는데, 이 둘은 같은 기울기를 가지고 있습니다. \( (1, 0.5) \) 를 2배 하면 \( (2, 1) \) 이 나오기 때문이죠.

 

같은 기울기를 가지고 있다는 것은 두 벡터가 선형 독립이 아닌, 선형 의존 관계라는 것을 뜻하게 됩니다. 다음 그림과 같이, 서로 다른 기울기를 가지고 있던 벡터가 같은 기울기를 가지는 공간으로 변화된 경우라고 볼 수 있습니다.

 

선형 변환을 통해, 선형 독립에서 선형 의존 관계로 변해버린 경우

 

위와 같이 변화되어 버리게 되면, 변환된 공간에서는 2차원 벡터 모든 공간의 점이 아닌, 같은 기울기상의 점만 생성할 수 있게 됩니다. 즉, 2차원 평면이 1차원 직선으로 소멸된 안 좋은 변환이라고 볼 수 있습니다. 이러한 경우에는 1차원에서 2차원으로 돌아갈 수 있는 역행렬이 존재하지 않게 되고요.

 

차원이 변해버렸기 때문에 돌아갈 방법이 존재하지 않는다.

 

이러한 상황처럼 역행렬이 존재할 수도, 없을 수도 있는 상황이 있기에 이를 판별할 수 있게 해주는 것행렬식입니다. 그러면, 왜 \(ad - bc = 0 \)이면 차원이 소멸되는 것일까요?

 

 

\(ad - bc = 0 \) 이 가지는 의미

표준 기저 벡터 \(e_1(1, 0), \ e_2(0, 1) \) 이 있고, 이 공간의 넓이는 1이었습니다. 이 표준 기저 벡터를 각각 \(e_1'(a, c), \ e_2'(b, d) \)로 변환한다고 가정해 봅시다. 그러면, 다음과 같은 평행사변형이 형성될 겁니다.

 

선형 변환된 공간

 

위 공간의 사각형 넓이는 \( (a + b) \cdot (c + d) \) 가 되겠습니다. 위 사각형 영역 내부에 회색으로 칠해진 평행사변형 넓이를 구해보겠습니다.

 

$$ (a+b)(c+d)-2bc-bd-ac=ac+bd+bc+bd-2bc-bd-ac = ad-bc $$

 

네, 그렇습니다. \(ad - bc \) 라는 식은 바로 선형 변환된 공간의 넓이라는 것이라는 거죠. \(ad - bc = 0 \) 이라는 것은 곧 선형 변환된 공간의 넓이, 즉 이 평행사변형의 넓이가 0이라는 것을 뜻하고, 그것은 변환된 두 기저 벡터가 같은 직선상에 있다는 것을 의미하게 되므로 선형 의존이라고 볼 수 있게 되는 것이죠.

 

이러한 의미를 가지고 있기 때문에 \(ad - bc = 0 \) 이라면, 선형 의존이므로 역행렬이 존재할 수 없다고 판별하는 것입니다.

 

 

역행렬 계산하기

\(ad - bc = 0 \) 이 무슨 의미인지 알아봤고, 역행렬이 존재하기 위해서는 \(ad - bc \ne 0 \) 이어야 한다는 것을 이해했습니다. 그렇다면, 역행렬을 어떻게 구할 수 있을까요?

 

다음과 같은 변환을 생각하면, 기존 공간 넓이가 행렬식 값만큼 달라진 것을 알 수 있습니다.

 

 

이를 원래대로 되돌리기 위해서는, 달라진 크기의 역수만큼 변하면 되겠습니다.

 

 

이를 통해, 행렬식이라는 것은 역행렬의 존재 여부 판별뿐만 아니라, 변환된 공간의 넓이가 얼만큼의 변화가 있었는지 파악하는 데에도 유용하게 사용된다는 것을 알 수 있습니다.

 

 


3. 역행렬의 활용

연립방정식의 해를 구할 때 유용하게 사용할 수 있습니다. 예를 들어, 아래 식에서 선형 변환 \(A\)변환된 벡터 \(v'\) 만 알고 있다고 가정하겠습니다. \(A^{-1} \) 을 구할 수 있다면, 양변에 곱함으로써 변환되기 전 벡터 \(v\)를 구할 수 있습니다.

 

$$ A \cdot v = v' $$

$$ A^{-1} \cdot A \cdot v = A^{-1} \cdot v' $$

$$ I \cdot v = A^{-1} \cdot v' $$

$$ v = A^{-1} \cdot v' $$

 

 

복잡한 정방 행렬의 역행렬을 구하기 위한 방법으로 가우스 소거법(Gaussian elimination), 크라메르 공식(Cramer's rule)이 있는데, 여기에선 다루지 않고 직관적으로 역행렬을 구하는 법을 보겠습니다.

 

 

크기 행렬의 역행렬

표준 기저 벡터 \(e_1\) 을 \(a\) 배만큼, \(e_2\) 를 \(b\) 배만큼 늘리는 행렬 \(S\) 가 있다고 합시다. 변환된 공간을 다시 기존 공간 \((1, 0), (0, 1) \)로 돌아오게 하려면 어떻게 해야 할까요?

 

 

늘린만큼 다시 줄이면 됩니다. 즉, 다음 행렬이 \(S\)의 역행렬이 되겠습니다.

 

$$ \begin{bmatrix} 1\over a & 0\\0 & 1\over b \end{bmatrix} $$

 

 

밀기 행렬의 역행렬

\(y\) 축을 \(x\) 축 방향으로 \( a \) 만큼 밀었던 걸 원래대로 되돌리려면 어떻게 해야 할까요? 반대 방향으로, 즉 \(-a\) 만큼 다시 밀어주면 됩니다.

 

 

$$ \begin{bmatrix} 1 & -a\\0 & 1 \end{bmatrix} $$

 

 

회전 행렬의 역행렬

\(\theta\) 만큼 회전한 결과에 대해서 원래대로 돌리려면 어떻게 해야 할까요? \(- \theta\) 만큼 회전해주면 다시 원래대로 돌아가겠죠?

 

 

\(\theta\) 만큼 회전하기 위한 선형 변환 행렬은 다음과 같았습니다.

 

$$ R_\theta =\begin{bmatrix} cos\theta & -sin\theta\\ sin\theta & cos\theta \end{bmatrix}  $$

 

여기에 \(- \theta \)를 대신 넣어주면 되겠습니다. 코사인 함수우함수, 사인 함수기함수이니, 이 성질을 이용하여 정리하면 다음과 같습니다.

 

$$ R_{(-\theta)} =\begin{bmatrix} cos(-\theta) & -sin(-\theta)\\sin(-\theta) & cos(-\theta) \end{bmatrix}=\begin{bmatrix} cos(\theta) & sin(\theta)\\-sin(\theta) & cos(\theta) \end{bmatrix} $$

 

 

그런데 자세히 살펴보면, \(R_\theta\) 와 \(R_{(-\theta)}\) 가 서로 전치 관계를 이루고 있다는 것을 알 수 있습니다.

이를 통해, 회전 행렬의 역행렬은 전치 행렬이 됨을 알 수 있겠네요.

 

$$ R_{(-\theta)}=R_\theta^{-1}=R_\theta^T $$

 

 

728x90
반응형