2009년 11월 26일 목요일

3 by 3 matrix 역행렬 구하기

3by3행렬 A =


(a11 a12 a13
a21 a22 a23
a31 a32 a33


라고 할때, 행렬식은

det(A) = a11*(a22*a33 - a23*a32) -a12*(a21*a33 - a23*a31) + a13*(a21*a32 -
a22*a31)


a1행의 열들의 성분을 선두로 정리하면

A = a11*det(M11) - a12*det(M12) + a13*det(M13)

여기서 Mij :

ij위치의 값을 제외한 소행렬


이것으로 Aij의 여인자값 Cij = ((-1)^(i+j)) * det(Mij) 을 구할 수 있고,

이 여인자 값들로 여인자 행렬 C를 구할 수 있다.


C =


(C11 C12 C13
C21 C22 C23
C31 C32 C33)
=


det(M11) -det(M12) det(M13)

-det(M21) det(M22) -det(M23)

det(M31) -det(M32) det(M33)


여인자 행렬의 전치행렬 transpose(C) = adj(A) 라고 하고, 수반행렬이라고 부른다.

전치라는 말을 풀어보면 Aij에서 핸과 열을 바꾼
Aji를 의미한다.

역행렬 A` = ( 1/det(A) ) * adj(A) 로 구할 수 있다.


A의 여인자 행렬 C를 구하고

이것의 행렬의 성분 ij위치를 ji로 바꾸는 것이다.

즉 a11은 a11 그대로 위치이고

a12는 a21이 되면서 위치가 바뀌고,

a13은 a31,

a21은 a12, . . .

a32는 a23,

a33은 a33 위치로 바뀌는 것이다.


정리해보자면 A의 여인자 행렬 C =

|

(a22*a33 - a23*a32) -(a21*a33 - a23*a31) (a21*a32 - a22*a31)

-(a12*a33 - a13*a32) (a11*a33 - a13*a31) -(a11*a32 - a12*a31)

(a12*a23 - a13*a22) -(a11*a23 - a13*a32) (a11*a22 - a12*a21)

|


이며, A의 전치행렬 adj(A) =

|

(a22*a33 - a23*a32) -(a12*a33 - a13*a32) (a12*a23 - a13*a22)

-(a21*a33 - a23*a31) (a11*a33 - a13*a31) -(a11*a23 - a13*a32)

(a21*a32 - a22*a31) -(a11*a32 - a12*a31) (a11*a22 - a12*a21)

|


이므로 (1/det(A) ) * adj(A) = A` 으로 역행렬을 구할 수 있다.


자, 이제는 예제를 하나 만들어 풀어보자.


A = (1 2 3
0 1 0
2 3 1)


의 역행렬을 구해보자.



det(A)=(1 2 3
0 1 0
2 3 1)


A 행렬값을 구하기 위해

여인자 전개를 사용하기 위해서

무조건 윗 식을 그대로 사용하기 전에

선두에 오는 값이 되도록 0이거나 그에 가까운 숫자가 많은 행을 선택하는 것이 행렬값을 빨리 풀 수 있다.

그래서 선두 행을 2 행으로 정하고 풀어 보겠다.


det(A) =0*c1 + 1*c2 + 0*c3

여기서 c1과 c3은 구할 필요가 없다.

어차피 0이 되므로.


c2 = (-1)^(2+2) * |1 3
2 1|
= -5


고로 det(A)=1*(-5)= -5 가 구하는 값이다.


전치행렬 adj(A) 를 구하자.

|

(a22*a33 - a23*a32) -(a12*a33 - a13*a32) (a12*a23 - a13*a22)

-(a21*a33 - a23*a31) (a11*a33 - a13*a31) -(a11*a23 - a13*a32)

(a21*a32 - a22*a31) -(a11*a32 - a12*a31) (a11*a22 - a12*a21)

|


=

|

(1*1 - 0) -(2*1 -3*3) (2*0 - 3*1)

-(0 - 0) (1*1 - 3*2) -(1*0 - 0)

(0 - 1*2) -(1*3 - 2*2) (1*1 - 0)

|


=

(

1 7 -3

0 -5 0

-2 1 1

)


자 이제

A*A~ = I 가 되는지 살펴보자.


(1 2 3
0 1 0
2 3 1)


*


(1 7 -3
0 -5 0
-2 1 1)


* -(1/5)

=


i11=1*1+2*0+3*(-2) = -5

i12=1*7+2*(-5)+3*1=0

i13=1*(-3)+0+3*1=0

i21=0+0+0= 0

i22=0-5+0 = -5

i23=0+0+0= 0

i31=2*1+01*(-2)= 0

i32=2*7+3*(-5)+1*1= 0

i33=2*(-3)+0+1*1 = -5


I = (-1/5) * i = 1

고로

전치행렬과 det(A)를 곱하고 A를 곱하면
단위행렬 I가 만들어짐을 알 수 있을것이다.

그러므로

역행렬 A~은


-(1/5) * |1 7 -3
0 -5 0
-2 1 1)


이다.

참고한 site는
http://kin3d.net/tt/index.php?page=7&md=pl&PHPSESSID=2d9586c49a90fb29ac252dfaa55
6b80f


입니다.

송운배 http://kr.geocities.com/hmac62

댓글 없음:

댓글 쓰기