행렬식 보조정리(Matrix Determinant Lemma)

written by jjycjn   2017. 6. 17. 11:49

어떤 행렬에 대한 계산을 필요로 하는 소스코드를 작성중이라 해보자. 이제 코딩을 하던 중에 어떤 반복문을 작성해야 하는데, 일단 행렬 An이 주어져 있고 이 행렬 An의 행렬식(determinant)역행렬을 계산했다고 하자. 이제 이 반복문에서 행렬이 계수(rank)가 1인 행렬 unvnT에 의해 An+1=An+unvnT로 갱신되었다고 한다면 (즉, 행렬 An이 rank one update가 되었다면), 이 새로운 행렬 An+1의 행렬식과 역행렬을 어떻게 하면 비교적 빠르게 구할 수 있을까?


물론 An+1의 행렬식과 역행렬을 직접 구할 수도 있다. 하지만 행렬식이나 역행렬을 구하는 계산복잡도(computational complexity)가 일반적으로 O(n3) 정도이기 때문에, 각각의 반복문에서 새로운 행렬 An+1의 행렬식과 역행렬을 매번 구해야만 한다면, 그만큼 코딩의 처리 속도가 늦어지게 될 것이다. 하지만, 현재 행렬 An의 행렬식과 역행렬을 미리 알고 있다는 가정 하에, 새롭게 갱신된 행렬 An+1의 행렬식과 역행렬을 An의 행렬식과 역행렬을 이용하여 표현할 수 있는 방법이 있다면, 계산복잡도를 상당히 줄일 수 있을 것이다.


이번 글에서는 먼저 주어진 행렬 A에 대하여, A가 계수가 1인 행렬 uvT에 의해 갱신되었을 때의 행렬식을 비교적 빠르게 구하는 방법을 알려주는 행렬식 보조정리(matrix determinant lemma)에 대해서 알아볼 것이다. 이 새로운 행렬의 역행렬을 구하는 셔먼-모리슨 공식(Sherman–Morrison formula)에 대해서는 다음 글에서 천천히 다뤄보도록 하자.


행렬식 보조정리(Matrix Determinant Lemma)

먼저 다음의 두 사실을 증명 없이 받아 들이기로 하자.

  1. 두 행렬의 곱의 행렬식은 두 행렬의 행렬식의 곱과 같다: 임의의 행렬 A,BRn×n에 대하여,
    det(AB)=det(A)det(B).
  2. 임의의 행렬 ARm×m, BRm×n, CRn×m, DRn×n와 영행렬 ORm×n에 대하여,
    det(AOCD)=det(A)det(D)=det(ABOTD).


정리. 행렬식 보조정리(Matrix Determinant Lemma)

ARn×n가 가역행렬(invertible matrix)이고, u,vRn가 열벡터라 하자. 그러면 다음 등식이 성립한다.

det(A+uvT)=det(A)(1+vTA1u).


증명. x,yRn가 임의의 열벡터이고 0Rn이 영벡터라 하자. 그러면 직접 계산을 통해 아래의 등식이 성립함을 간단히 확인할 수 있다.

(I0yT1)(I+xyTx0T1)(I0yT1)=(Ix0T1+yTx).

이제 위 등식의 양변에 행렬식 연산을 적용하자. 그러면 좌변의 첫 행렬과 마지막 행렬은 (대각 원소들이 모두 1인 삼각 행렬이므로) 행렬식 1을 갖는다. 또한 좌변의 가운데 행렬의 행렬식은 det(I+xyT)임을 알 수 있다. 또한 우변의 행렬식은 1+xTy와 같으므로, 이를 종합하면

det(I+xyT)=1+yTx

를 얻는다.

이제 임의의 가역행렬 ARn×n와 열벡터 u,vRn에 대하여,

det(A+uvT)=det(A(I+A1uvT))=det(A)det(I+A1uvT)=det(A)(1+vTA1u).

따라서 위 정리가 성립한다.



위 정리로부터 다음의 따름 정리를 얻는다.


따름정리.

ARn×n가 임의의 행렬이고 (꼭 가역행렬이 아니어도 된다), u,vRn가 열벡터라 하자. 그러면 다음 등식이 성립한다.

det(A+uvT)=det(A)+vTadj(A)u.

이 때, adj(A)A의 딸림행렬(adjoint matrix)를 나타낸다.


증명. 먼저 A가 가역행렬이라고 가정하자. 그러면 det(A)A1=adf(A)이므로,

det(A+uvT)=det(A)(1+vTA1u)=det(A)+det(A)vTA1u=det(A)+vT(det(A)A1)u=det(A)+vTadj(A)u.

따라서 임의의 가역행렬 A에 대하여 위 따름정리가 성립한다.

만약 A가 가역행렬이 아니라면, A를 가역행렬들의 수열 (An)의 극한으로 생각할 수 있다. 이제 딸림행렬을 하나의 함수로 이해해 보자. 즉, 함수 adj:Rn×nRn×n에 대하여, 행렬 A의 함숫값 adj(A)는 각 원소가 A의 여인수(cofactor)들로 이루어진 행렬히다. 이 때, 각각의 여인수들은 A(n1)×(n1) 소행렬(submatrix)의 행렬식에 1 또는 1이 곱해진 형태이기 때문에, 모두 다항함수라 생각할 수 있다. 따라서 adj(A)의 각 원소들은 A의 원소들에 대한 다항함수의 형태로 수어지기 때문에, adj는 연속함수임을 알 수 있다. 따라서 AnA일 때, adj(An)adj(A)가 성립하고,

det(A+uvT)=limndet(An+uvT)=limndet(An)+vTadj(An)u=det(A)+vTadj(A)u

가 성립한다.



예제. α1, α1n을 만족하는 임의의 실수 α에 대하여,

A=(α1111α1111α1111α)

가 가역행렬임을 증명하여라.

풀이. IRn×n이 단위행렬, eRn가 모든 성분이 1인 열벡터라 하자. 그러면 A=(α1)I+eeT와 같이 나타낼 수 있다. 이제 eTe=n이라는 사실을 이용하면

det(A)=det((α1)I+eeT)=det((α1)I)(1+eT((α1)I)1e)=(α1)ndet(I)(1+1α1eTe)=(α1)n(1+nα1)=(α1)n1(α+n1)

여기서 α1, α1n이므로, det(A)0이고 따라서 A는 가역행렬이다.

  ::  
  • 공유하기  ::