7.8 역행렬. Gauss-Jordan 소거법

21 days 전, namy0727 작성

7.8 역행렬. Gauss-Jordan 소거법

 

예제 1 Gauss-Jordan 소거법으로 역행렬 구하기

행렬 $A$

A=matrix(RDF, 3, 3, [-1, 1, 2, 3, -1, 1, -1, 3, 4]) print "A=" show(A) 
       
A=
A=

역행렬이 존재하는지 확인.

print "Is A invertible?" A.is_invertible() 
       
Is A invertible?
True
Is A invertible?
True

행렬식 $\det A \neq 0 $을 확인. $\Rightarrow$ 역행렬이 존재함.

print "det(A)=", A.det() 
       
det(A)= 10.0
det(A)= 10.0

내장함수를 이용해서 역행렬을 찾음.

invofA=A.inverse() print "A^(-1)=" show(invofA) 
       
A^(-1)=
A^(-1)=

단위행렬 $I$

I=identity_matrix(3) print "I=" show(I) 
       
I=
I=

첨가행렬 $[A|I]$

AI=A.augment(I) print "[A:I] = " show(AI) 
       
[A:I] = 
[A:I] = 

1단계. 첫 번째 행의 주축 아래를 $0$으로 만든다.

$$R_2 + 3R_1$$

$$ R_3 - R_1$$ 

AI.add_multiple_of_row(1,0,3) AI.add_multiple_of_row(2,0,-1) print "[U:H] = " show(AI) 
       
[U:H] = 
[U:H] = 

2단계. 두 번째 행의 주축 아래를 $0$으로 만든다.

$$R_3 - R_2$$

AI.add_multiple_of_row(2,1,-1) print "[U:H] = " show(AI) 
       
[U:H] = 
[U:H] = 

3단계. 변형된 첨가행렬 $[U | H]$에서 위삼각행렬 $U$를 단위행렬 $I$로 변형하기 위해 주대각선 성분을 $1$로 만든다.

$$-R_1, \quad \frac{1}{2} R_2, \quad -\frac{1}{5}R_3$$

AI.rescale_row(0,-1) AI.rescale_row(1,0.5) AI.rescale_row(2,-0.2) print "[U:H] = " show(AI) 
       
[U:H] = 
[U:H] = 

4단계. $U$의 마지막 행의 제일 오른쪽 성분을 주축으로 삼는다. 주축 위를 $0$으로 만든다.

$$R_2 - 3.5 R_3 $$

$$R_1 + 2 R_3 $$

AI.add_multiple_of_row(0,2,2) AI.add_multiple_of_row(1,2,-3.5) print "[U:H] = " show(AI) 
       
[U:H] = 
[U:H] = 

5단계. $U$의 두 번째 행의 주축 위를 $0$으로 만든다.

$$R_1 + R_2 $$

AI.add_multiple_of_row(0,1,1) print "[I:A^(-1)]=" show(AI) 
       
[I:A^(-1)]=
[I:A^(-1)]=

6단계. 첨가행렬 $[A | I]$에서 $A \rightarrow I$로 변형되었으므로 $I \rightarrow A^{-1}$로 변형되었다. 역행렬 $A^{-1}$의 추출.

invA=AI[0:3,3:6] print "A^(-1)=" show(invA) 
       
A^(-1)=
A^(-1)=

$A A^{-1} = I$ 와 $A^{-1} A = I$를 확인

E = invA*A I = E.n(digits=2) print "I=" show(I) 
       
I=
I=

예제 4 대각행렬의 역행렬

행렬 $A$

A=matrix(QQ, 3, 3, [-0.5, 0, 0, 0, 4, 0, 0, 0, 1]) print "A=" show(A) 
       
A=
A=

역행렬 $A^{-1}$는 $A$의 대각원소 각각의 역수를 취하여 구한다.

invA=A.inverse() print "A^(-1)=" show(invA) 
       
A^(-1)=
A^(-1)=