이번 시간에 다룰 내용은 행렬식(Determinant)과 역행렬(Inverse Matrix)의 관계, 그리고 크래머 공식(Cramer's Rule)에 관한 내용이다. 지난 Lecture 18, Lecture 19에 이어 행렬식을 다루는 세 번째 강의다. 앞의 내용을 잘 학습해 왔다면 어려움 없이 이해할 수 있을 것이다. 

 

1. 행렬식과 역행렬(Determinant and Inverse Matrix)

 

- Determinant with Inverse Matrix

 

행렬식(determinant)의 값은 해당 행렬에 관한 많은 정보를 압축하여 담고 있다. 이러한 determinant가 역행렬과 어떤 관계가 있는지 살펴보자. 우선 다음의 2x2 행렬 A의 역행렬에 관한 식을 살펴보자. 

 

 

식 (1)의 역행렬에 관한 공식은 이공계 학생이라면 한 번쯤 배웠던 공식일 것이다. 필자 역시 수업시간에 배웠다. 대각선 원소 위치를 서로 바꿔주고 b와 c에는 -부호 붙여주고 이 행렬을 ad-bc로 나눠주면 A의 역행렬이 나온다....라고 말이다... 그냥 이렇게 외워버렸다. 이유 따위는 필요 없고 그냥 이렇게 배웠고 이렇게 외워 왔다. 아마 많은 학생들이 이렇게 배워왔을 거라 생각한다. 이제 무작정 외우는 것은 그만하고 역행렬과 determinant가 어떤 관계인지 알아보도록 하자. 

 

식 (1)은 2x2행렬에 관한 식이다. 그런데 우리는 3x3, 4x4, 나아가 nxn의 행렬에 대한 일반적인 식을 알고싶을 것이다. 일단 2x2를 먼저 이해하면 3x3이나 nxn에 대한 실마리를 찾을 수 있다. 

 

식 (1)은 A의 역행렬에 대한 식이며 우변의 어떤 행렬을 A의 determinant로 나눠준다. 여기서 알 수 있는 것은 만약 determinant가 0이면 역행렬은 존재하지 않는다는 것이다. 우리는 지금까지 특이 행렬(singular matrix)인 경우, determinant가 0이 되고 역행렬은 존재하지 않는다고 배웠다. 이는 역행렬을 구할 때 determinant로 나누어주기 때문이다. 

 

이제 우변의 저 이상하게 생긴 행렬을 파악해 보자. 우변의 row1, col1에 위치한 d는 어디서부터 오게 된 것인가? 바로 cofactor이다. 우변의 d는 좌변의 a에 대한 cofactor인 것이다. 바로 지난 강의(Lecture 19)에서 배운대로 행렬 A의 a에 대한 cofactor를 구해보면 먼저 a를 선택하고 a를 중심으로 row와 column의 모든 원소를 지운다. 그럼 b와 c는 사라지고 d만 남는다. 이때 a는 row1, col1에 위치해있고(a11) 이 둘의 index를 더하면 1+1=2의 짝수가 되므로 부호는 +가 된다. 결국 a에 대한 cofactor가 우변의 a자리로 오게 된다. 

 

다음으로 좌변 행렬에서 row1, col2에 위치한 원소인 b의 cofactor를 구해보자. b를 중심으로 row와 column의 원소를 지우면 남는 것은 c인데, 이때 row1, col2이므로 index의 합이 1+2=3의 홀수가 된다. 따라서 b의 cofactor는 -c가 된다. 그런데 왠걸, b의 cofactor자리에는 -b가 자리잡고 있다. -c는 -b의 반대편 대각 원소에 위치해 있으며, -b는 c의 cofactor이다. 그렇다. 우변 행렬의 counter diagonal 원소들이 뒤집힌 것이다. 즉 우변의 행렬은 여인수 행렬(cofactor matrix)의 transpose이다. 식 (1)을 다시 써보면 아래와 같다. 

 

 

C는 원소들이 여인수(cofactor)들로 이루어진 여인수 행렬(cofactor matrix)이다. 원래는 A의 각 원소들의 cofactor가 C의 동일한 위치에 있어야 한다. 즉 a11의 cofactor는 C의 row1, col1에 위치해 있어야 하고, a12의 cofactor는 C의 row1, col2에 위치해 있어야 한다. 그러나 counter diagonal원소들은 전치(transpose)로 인해 뒤집혔다. 행렬 A에서 b의 cofactor는 우변 행렬에서 row2, col1의 위치로, c의 cofactor는 row1, col2의 위치로 말이다. 

 

2x2행렬인 경우엔 식 (2)가 맞음을 확인했다. 3x3인 경우엔 어떨지 확인해보자. 

 

 

식 (3)은 3x3행렬의 역행렬을 식 (2)를 통해 나타낸 것이다. 우변의 행렬은 여인수 행렬(cofactor matrix)이 이미 transpose가 된 행렬이다. 즉 원래의 C행렬에서 대각 원소들을 기준으로 상삼각 원소들과 하삼각 원소들이 뒤바뀐 것이다. 이와 같은 방식으로 nxn행렬의 역행렬도 구할 수 있다. 결국 식 (2)에서 det A부분은 n개 원소들의 곱들로 이루어져 있고, cofactor matrix는 (n-1)개의 원소들의 곱으로 형성된다. 다시말하면 식 (3)에서 det A는 aei -afh... 와 같이 3개 원소들의 곱들로 이루어져 있고, C는 ei-fh와 같이 2개 원소들의 곱으로 이루어진다. 

 

지난 강의(Lecture 3)에서 배운 역행렬(Inverse Matrix)계산 법을 기억하는가? 행렬 A의 우측에 단위 행렬(Identity)을 붙인 다음 가우스 소거(Gauss Elimination)를 통해 A가 단위 행렬이 될 때 까지 함께 소거를 하면, 처음에 붙였던 단위행렬이 A의 역행렬이 되는 방법 말이다. Lecture 3에서 배웠던 방법은 수치적(numerical) 알고리즘으로 역행렬을 구한 것이고, 식 (2)의 방법은 대수적(Algebraic)방법을 통해 구한 것이다. 결국 우리는 어떤 임의의 정방행렬의 역행렬에 대한 공식(Formula)을 구한 것이다. 

 

 

그렇다면 이 역행렬에 대한 공식은 어디서부터 유도 되었을까? 아래 식을 보도록 하자. 

 

 

식 (4)는 사실 식 (2)의 양변에 (det A)A 를 곱해준 식이다. 따라서 식 (4)가 참임을 증명해낸다면 식 (2)는 자연스레 증명이 된다. 일단 식 (4)를 행렬의 형태로 다시 써보면 아래와 같다.  

 

 

식 (5)에서 C transpose의 원소들은 transpose를 했을 때 원래의 원소들이 어디에 위치해 있는지를 표현한 것이다. 또한 일단 3x3으로 썼지만, nxn까지 확장해서 생각할 수 있다. A의 row1은 C transpose의 column 1과 곱해져서 det A가 된다. 이때 C의 column1은 원래는 C가 transpose되기 전의 C의 row1이며, 곧 A의 row1에 대한 cofactor들 이다. 결국 A의 row1과 C의 row1이 곱해져서 det A가 되는 것이며, 아래와 같이 쓸 수 있다. 

 

 

식 (6)을 자세히 보니 뭔가 익숙한 식이다. 바로 지난 강의에서 배웠던 cofactor로 표현한 A의 determinant에 대한 식이다. 결국 C를 transpose한 이유는 행렬의 계산식으로 표현하기 위함이다. 이때 식 (6)은 row1에 대한 determinant의 식이고, 지난 시간에 언급했듯이 어떠한 row라도 가능하다. 즉 A의 row2와 C transpose의 column 2, row3와 column 3와의 내적(dot product)도 동일하게 det A를 나타내는 식이다. 결국 row는 1에서 n까지 어떤 index를 통해서도 det A를 나타낼 수 있다. 

 

식 (6)을 자세히 보면 원소 a와 그의 cofactor를 곱할 때 column의 index는 각각 동일한 것을 볼 수 있다. 식 (5)를 기준으로 보면 대각 원소에 대한 곱은 det A를 나타내지만, column의 index가 다른 원소끼리의 내적은 0이 되는 것을 볼 수 있다. 즉 row1과 col2, row3와 col1과 같이 말이다. 대각 원소들을 제외한 나머지 원소끼리의 내적은 0이다. 왜일까? 왜 이런 일이 발생하는 것일까? 이는 서로 다른 index를 가진 row와 column을 곱하는 것은 똑같은 row를 두 개 이상 가진 특이 행렬(singular matrix)의 determinant를 구하는 것과 같기 때문이다. 맨 처음 2x2행렬에 대한 식 (1)을 식 (4)와 같이 표현해보자. 

 

 

식 (7.1)을 보면 counter diagonal원소들인 (det A)I12와 (det A)I21은 식 (7.2)와 같이 특이 행렬(singular matrix)의 determinant를 구하는 것과 결과가 같다. 따라서 A와 C transpose를 곱할 때 서로 다른 index를 가진 원소끼리 곱하는 것은 결국 어떤 행렬에서 동일한 row에 대한 cofactor를 구하는 것과 같기 때문에 0이 될 수 밖에 없는 것이다. 이는 2x2경우와 마찬가지로 3x3, nxn에서 동일한 규칙이 적용된다. A와 C transpose에 있어 다른 index를 가진 원소들의 내적은 식 (7.2)와 같이 동일한 row에 대해서 cofactor를 구한다는 것을 명심하자. 똑같은 말을 반복했지만,, 잘 이해하고 넘어가길 바란다. 

 

결과적으로 우리는 식 (4)가 옳다는 것을 증명했기 때문에 역행렬(inverse matrix)에 대한 대수적 공식(algebraic formula)인 식 (2)를 증명했다. 또한 우리는 식 (1)~(3)을 통해 다음의 사실도 알 수 있다. 

 

원래 행렬 A에서 어떤 원소 하나만 값이 바뀌어도 A의 역행렬에서 모든 원소가 영향을 받는다. 왜냐하면 determinant의 계산에는 A의 모든 원소의 값이 영향을 주고 있으며, 이 determinant로 여인수 행렬(cofactor matrix)의 모든 원소를 나누어 역행렬을 계산하기 때문이다

 

식 (2)를 잘 알아두자!

 

 

 

2. 크래머 공식(Cramer's Rule)

 

- Cramer's Rule

 

어떤 선형시스템 방정식(Linear system equation) Ax=b가 있다고 해보자. 우리가 구하고자 하는 해 x는 A행렬의 역행렬(Inverse Matrix)을 정의하여 아래와 같이 정의할 수 있다. 이때 앞서 배운 역행렬의 공식 (2)를 통해 역행렬을 다시 정리할 수 있다. (※ 역행렬 공식 (2)는 determinant를 이용하여 정의하기 때문에 정방행렬에만 해당 됨)

 

 

식 (8)과 같이 선형시스템 방정식의 해 x를 역행렬 공식을 통해 정리하였다. 해를 구하는데 있어 일단 determinant를 구해서 뒤의 모든 원소들을 나눠줘야 한다. 그렇다면 C transpose b가 의미하는 것이 무엇일까? 일단 식 (8)을 좀 더 풀어서 써보도록 하자. 

 

 

 

식 (9.1)에서 행렬 C는 transpose된 것을 표현한 것이니 혼동하지 않도록 하자. 이를 계산해보면 C transpose행렬의 row 원소들과 b원소들을 내적(dot product)한 것을 A의 determinant로 나눠준 것이다. 알다시피 C는 행렬 A의 여인수(cofactor)들의 원소들로 이루어져 있고, 결국 벡터 b와 cofactor들과의 내적을 한다. 이렇게 벡터 b와 cofactor들과 내021적을 하게 되면 어떤 식이 될까? 바로 b와 관련된 어떤 행렬 B의 determinant를 구하는 식이 된다. 결국 식 (9.2)와 같이 C transpose의 각 row와 b를 곱하여 x1, x2, ... xn까지 계산하고 해를 구할 수 있다. 그렇다면 이 B행렬은 어떤 행렬일까? 바로 A 행렬에서 하나의 column이 b로 대체된 행렬이다. 왜 그런지 아래 그림을 보자. 3x3행렬로 가정하고 예를 들어보도록 하겠다. 

 

 

x1에 대한 식을 보면 행렬 A에서 column 1이 b로 대체된 상태에서 determinant를 구하는 식이다. 애초에 (9.1)로부터 정리된 식 자체가 c11b1+c21b2+c31b3인데, c11은 사실 A의 a11에 대한 cofactor를 의미한다. a11의 cofactor는 a11을 기준으로하는 row와 column에 있는 원소들을 제외한 n-1크기의 나머지 원소들에 대한 determinant를 의미한다. 식 (10)의 행렬 A를 보면 a11의 cofactor인 c11은 a22a33-a23a32인데, det B1=c11b1+c21b2+c31b3와 같이 되려면 A의 column 1을 b로 교체한 형태의 식이 되어야만 식이 나올 수 있다. 

 

 

마찬가지로 x2와 x3, xn까지의 식들을 살펴보면 순서대로 행렬 A의 column이 순서대로 b로 대체된 형태어 되어야만 하는 것이다. 한 가지만 더 설명해보자면 x2의 식에서 det B2=c12b1+c22b2+c32b3을 보자. c22b2을 보면 c22은 행렬 A에서 a22에 대한 cofactor이다. 이는 식 (10)의 a22를 기준으로 한 row와 column 원소들을 제외한 나머지 원소들, a11, a13, a31, a33에 대한 determinant이다. 이와 같은 형태가 되기 위해선 x2를 구하기 위해선 A의 column 2가 b로 대체 되어야 하는 것이다. 3x3 행렬에 대한 역행렬 식인 (3)을 잘 살펴보면 이해에 도움이 될 것이다. 

 

정리해보면 크래머의 공식은 아래와 같이 정의할 수 있다. 

 



  •   크래머 공식(Cramer's Rule)
크래머 공식(Cramer's Rule)은 임의의 선형시스템 방정식(Linear System Equation) Ax=b의 해(solution) x를 행렬식(determinant)으로 유도된 공식을 통해 푸는 방법이다. 이때 determinant를 이용하여 해를 풀기 때문에 A는 정방행렬(square matrix)이어야 하며 특이 행렬(singular matrix)이 아니어야 한다. 


크래머 공식을 통해 해를 구하기 위해 먼저 아래와 같이 선형시스템 방정식에 대한 해를 A의 역행렬 대신 determinant와 여인수 행렬(cofactor matrix), 그리고 벡터 b의 곱으로 정의할 수 있다. 




해(solution) x의 각 원소들은 결과적으로 determinant들로 정의된 식으로 구할 수 있다. 여기서 det Bj는 원래 행렬 A의 각 column 벡터들을 순서대로 벡터 b로 대체한 행렬의 determinant를 의미하며, j는 1~n까지 지속된다. 



 

 

- Consideration of the Cramer's Rule

 

크래머의 공식은 행렬식(determinant)를 활용하여 A의 역행렬을 구하데에 그 목적이 있다. 역행렬을 구하는 방법 중 하나인 가우스 소거(Gauss Elimination)에 비해 대수적 공식(Algebraic Formula)으로 깔끔하게 정리된 것이다. 하지만 그 효율성 측면에 있어서 크래머 공식은 굉장히 비효율 적이다. 일단 행렬 A에 대한 determinant야 한 번만 계산해서 계속 써먹을 수 있다고 하지만, xn을 구하는 데에 있어서 A의 column을 순차적으로 b로 교체해서 최대 n번 만큼 determinant를 계속 구해야 하는 것이다. 만약 n이 100이라고 하면 최소 100번 이상 100x100짜리 determinant를 계산해야 한다. 아무리 빠른 컴퓨터로 계산한다고 해도 이는 너무 비효율적이다. 역행렬을 구하기엔 차라리 수치적 알고리즘(numerical algorithm)방법인 가우스 소거가 훨씬 빠르고 효율적이다. 따라서 이런 공식이 있다는 것 정도는 알아두면 좋지만, 실제 역행렬을 구할 때는 가우스 소거 방법을 사용하는 것을 추천한다. 

 

 

3. 마치며

 

이번 포스팅에선 행렬식(determinant)과 역행렬(Inverse Matrix)와의 관계를 알아봤다. 어떤 행렬 A의 역행렬은 A의 determinant와 여인수 행렬(cofactor matrix)을 이용하여 구할 수 있다. 이 관계로부터 선형방정식의 해 x를 대수적 방법(Algebraic way)으로 구할 수 있는 크래머 공식(Cramer's Rule)을 유도하였다. 크래머 공식은 determinant를 이용하여 해를 구하는 방법이며 기존의 가우스 소거 방법과는 달리 공식화해서 푸는 방법이다. 그러나 너무 많은 determinant를 계산해야 하기 때문에 계산 측면에서 비효율적이며 실제로는 많이 사용하지 않는다. 역행렬을 구하는 방법은 가우스 소거 방법이 훨씬 효율적이다. 

다음 시간엔 determinant에 대한 마지막 내용인 determinant의 기하학적 해석에 관한 내용을 다룰 예정이다. 

 

+ Recent posts