응집 방법(condensation method)을 통한 행렬식 계산

written by jjycjn   2020. 9. 14. 11:35

주어진 n×n 정사각행렬 A의 행렬식(determinant)|A| 나타내기로 하자. 이번 글에서는 2×2 행렬의 행렬식을 구하는 계산만을 반복하여 A의 행렬식을 구하는 도지슨의 응집 방법(condensation method)에 대하여 알아볼 것이다. 여기서 찰스 럿위지 도지슨(Charles Lutwidge Dodgson)은 소설 "이상한 나라의 앨리스(Alice's Adventures in Wonderland)"의 저자로 잘 알려진 루이스 캐럴(Lewis Carroll)의 본명이다.



도지슨의 응집 방법(condensation method)

도지슨의 응집 방법(condensation method)은 주어진 행렬쌍 k×k 정사각행렬 A와 어떤 원소도 0이 아닌 (k1)×(k1) 정사각행렬 B가 주어졌을 때, 행렬쌍 (A,B)로 부터 (A,B)을 구하는 과정을 알려준다.
  1. A(i,j) 원소는 다음과 같이 계산된다.
    Ai,j=Ai,jAi+1,j+1Ai,j+1Ai+1,jBi,jfori,j=1,2,,k1
    이 과정을 통해 (k1)×(k1) 정사각행렬 A을 얻는다. 여기서 좌변의 분자를 보면 행렬 [Ai,jAi,j+1Ai+1,jAi+1,j+1]의 행렬식과 같음을 알 수 있다.
  2. B(i,j) 원소는 다음과 같이 계산된다.
    Bi,j=Ai+1,j+1fori,j=1,2,,k2
    즉, B은 행렬 A의 제일 처음과 마지막 행과 열을 제외한 (k2)×(k2) 정사각행렬이다. 이 행렬 BA의 내부(interior) int(A)로 정의하기도 하는데, 이 경우 B=int(A)이다.
위 과정을 예를 통해서 살펴보도록 하자. 만약
A=[531311131],B=[1121]
과 같이 주어졌다면,
A=[4442],B=[1]
으로 계산된다. 예를 들어 A(2,1) 원소인 4의 경우,
A2,1=|A2,1A2,2A3,1A3,2|B2,1=|3113|2=(3)(3)(1)(1)2=4

와 같이 계산되는 식이다.


n×n 정사각행렬 A=[Ai,j]가 주어졌을 때 대하여 행렬식 |A|의 값을 구하는 과정은 다음과 같다. 우선 A(1)=A로 정의하고, B(1)은 모든 원소가 1(n1)×(n1) 정사각행렬로 정의하자. 그 다음으로는 귀납적으로 A(i+1)=(A(i)), B(i+1)=(B(i))=int(A(i))와 같이 정의한다. 그러면 A(1),A(2),를 구해감에 따라 행렬의 크기가 1씩 줄어드므로, A(n)1×1 행렬이 됨을 알 수 있는데, 이 값이 우리가 구하고자 하는 |A|의 값이 된다. 이 과정을 예를 들어 보면 다음과 같다.

A(1)=[1213211212130112]B(1)=[111111111],A(2)=[531311131]B(2)=[1121],A(3)=[4442]B(3)=[1],A(4)=[8],B(4)=

따라서 이 경우, |A|=8을 얻을 수 있다.


도지슨의 응집 방법의 장점은 다음과 같다.

  • 행렬 A의 모든 원소가 정수라면, 도지슨의 응집 방법을 통한 계산 과정에서 나타나는 모든 수들 또한 정수이다. 이는 A의 행렬식을 컴퓨터가 아닌 손으로 직접 구해야 할 때 장점이 될 수 있다.
  • 라플라스 전개(Laplace expansion)을 통해서 행렬 A의 행렬식을 구하는 것보다 계산량이 훨씬 적다. 라플라스 전개 또한 2×2 행렬의 행렬식을 구하는 계산을 반복하여 A의 행렬식을 구하게 되는데, 라플라스 전개는 최악의 경우 n!2번의 2×2 행렬식을 구해야 하는 반면, 도지슨의 응집 방법의 경우 16n(n1)(2n1)2×2 행렬식 계산만을 필요로 한다.
위와 같은 장점에도 불구하고 도지슨의 응집 방법이 널리 이용되지 않는 이유는 다음과 같다. 주어진 행렬 A에 대하여 int(A)0인 원소를 가지고 있거나, 응집 방법을 사용하면서 계산되는 행렬 B(i), 즉, 행렬 int(A(i+1))0인 원소를 단 하나라도 가지고 있으면 더 이상 이 방법을 진행할 수 없다. 예를 들어 아래와 같이 주어진 행렬 A=A(1)에 응집 방법을 적용하면,
A(1)=[1212122021112131]B(1)=[111111111],A(2)=[064302442]B(2)=[2211],A(3)=[96128]B(3)=[0],??
이므로 더이상 응집 방법을 진행할 수 없게 된다. 이러한 경우, 처음 시작하는 행렬 A(1)=A의 행 또는 열을 적당히 교환함으로써 B(i)0인 원소를 포함하지 않도록 해 줄 수 있다. 예를 들어 위와 같은 경우, 3번의 행 연산을 통하여 행렬 A의 첫번째 행을 마지막으로 보내고 나머지 행들은 한 행씩 위로 올린 행렬 A¯을 구한 후에 응집 방법을 적용하면 다음의 결과를 얻는다.
A¯(1)=[1220211121311212]B¯(1)=[111111111],A¯(2)=[302442555]B¯(2)=[1113],A¯(3)=[128010]B¯(3)=[4],A¯(4)=[30],B(4)=

따라서 det(A¯)=30이고 det(A)=(1)3det(A¯)=30을 얻는다.


하지만 다음과 같이 주어진 행렬

A=[1030010111200201]
의 경우, 모든 행과 열에 0인 원소를 가지고 있기 때문에, 행 또는 열을 어떻게 교환하더라도 int(A)0인 원소가 항상 존재하게 되고 따라서 응집 방법을 적용할 수 없다. (참고로 det(A)=3이며, 라플라스 전개등을 통해 간단히 계산할 수 있다.)


  ::  
  • 공유하기  ::