변환을 되돌리는 변환(역행렬)은 언제 있고 어떻게 구할까요? 이 장에서는 역행렬의 뜻과 구하는 방법을 다루고, 소거 과정을 행렬 두 개의 곱 A = LU로 기록해 두면 같은 행렬로 여러 방정식을 빠르게 풀 수 있다는 것을 봅니다. 실제 계산 프로그램은 역행렬을 직접 구하기보다 LU 분해를 씁니다.
9.1 변환을 되돌리기
질문. 행렬 A A A 가 평면을 어떤 방식으로 움직였습니다. 그 움직임을 정확히 되돌리는 행렬 B B B 가 있을까요? 있다면 어떻게 구할까요? 그리고 그런 B B B 가 없는 행렬은 어떤 행렬일까요?
6장에서 2 × 2 2 \times 2 2 × 2 행렬의 경우를 보았습니다. det A ≠ 0 \det A \ne 0 det A = 0 이면 A A A 를 되돌리는 행렬이 있었고, det A = 0 \det A = 0 det A = 0 이면 평면이 납작해져 되돌릴 수 없었습니다. 이 장에서는 n × n n \times n n × n 으로 일반화하고, 8장의 소거를 이용해 역행렬을 계산합니다. 그리고 소거 자체를 행렬의 곱 A = L U A = LU A = LU 로 기록하는 방법을 배웁니다.
9.2 역행렬
정의 9.1 (역행렬). n × n n \times n n × n 행렬 A A A 에 대하여
A B = I 이고 B A = I AB = I \quad \text{이고} \quad BA = I A B = I 이고 B A = I
인 n × n n \times n n × n 행렬 B B B 가 존재하면 A A A 를 가역 (invertible)이라 하고, B B B 를 A A A 의 역행렬 (inverse matrix)이라 합니다. 가역이 아닌 정사각행렬을 특이행렬 (singular matrix)이라 합니다.
변환으로 읽으면 B A = I BA = I B A = I 는 “A A A 를 한 뒤 B B B 를 하면 제자리”, A B = I AB = I A B = I 는 “B B B 를 한 뒤 A A A 를 하면 제자리”입니다. 0장의 역함수의 정의(정의 0.22 )와 똑같습니다. 정리 0.23 에 의해 A A A 가 가역인 것은 변환 x ↦ A x \mathbf{x} \mapsto A\mathbf{x} x ↦ A x 가 전단사인 것과 같습니다.
정리 9.2 (역행렬은 하나뿐입니다). A A A 의 역행렬은 존재하면 유일합니다.
증명. B B B 와 C C C 가 모두 A A A 의 역행렬이라 합시다. 결합법칙에 의해
B = B I = B ( A C ) = ( B A ) C = I C = C . B = BI = B(AC) = (BA)C = IC = C. B = B I = B ( A C ) = ( B A ) C = I C = C .
■
유일하므로 A A A 의 역행렬을 A − 1 A^{-1} A − 1 로 씁니다. 증명에서는 B A = I BA = I B A = I 와 A C = I AC = I A C = I 만 썼습니다. 즉 “왼쪽 역”과 “오른쪽 역”이 둘 다 있으면 둘은 같습니다.
9.2.1 이미 아는 역행렬들
2 × 2 2 \times 2 2 × 2 : det A = a d − b c ≠ 0 \det A = ad - bc \ne 0 det A = a d − b c = 0 이면 A − 1 = 1 a d − b c [ d − b − c a ] A^{-1} = \dfrac{1}{ad - bc}\begin{bmatrix} d & -b \\ -c & a \end{bmatrix} A − 1 = a d − b c 1 [ d − c − b a ] (정리 6.4 ).
대각행렬: diag ( d 1 , … , d n ) − 1 = diag ( 1 / d 1 , … , 1 / d n ) \operatorname{diag}(d_1, \ldots, d_n)^{-1} = \operatorname{diag}(1/d_1, \ldots, 1/d_n) diag ( d 1 , … , d n ) − 1 = diag ( 1/ d 1 , … , 1/ d n ) . 모든 d i ≠ 0 d_i \ne 0 d i = 0 이어야 합니다.
소거행렬: E i j E_{ij} E ij 는 행i i i 에서 행j j j 의 ℓ \ell ℓ 배를 뺍니다. 되돌리려면 ℓ \ell ℓ 배를 다시 더합니다. E i j − 1 E_{ij}^{-1} E ij − 1 은 − ℓ -\ell − ℓ 자리를 + ℓ +\ell + ℓ 로 바꾼 행렬입니다.
치환행렬: 행을 섞은 것을 다시 원래대로 섞습니다. P − 1 = P T P^{-1} = P^T P − 1 = P T (문제 9.4).
회전: R θ − 1 = R − θ = R θ T R_\theta^{-1} = R_{-\theta} = R_\theta^T R θ − 1 = R − θ = R θ T .
9.3 역행렬의 성질
정리 9.3 (역행렬의 성질). A A A , B B B 가 같은 크기의 가역행렬이면
A − 1 A^{-1} A − 1 도 가역이고 ( A − 1 ) − 1 = A (A^{-1})^{-1} = A ( A − 1 ) − 1 = A .
A B AB A B 도 가역이고 ( A B ) − 1 = B − 1 A − 1 (AB)^{-1} = B^{-1}A^{-1} ( A B ) − 1 = B − 1 A − 1 .
A T A^T A T 도 가역이고 ( A T ) − 1 = ( A − 1 ) T (A^T)^{-1} = (A^{-1})^T ( A T ) − 1 = ( A − 1 ) T .
증명. 각각 후보를 곱해서 I I I 가 됨을 확인하면 됩니다(역행렬은 유일하므로). (1) A − 1 A = I A^{-1}A = I A − 1 A = I , A A − 1 = I AA^{-1} = I A A − 1 = I 는 “A A A 가 A − 1 A^{-1} A − 1 의 역”이라는 말이기도 합니다. (2) ( A B ) ( B − 1 A − 1 ) = A ( B B − 1 ) A − 1 = A A − 1 = I (AB)(B^{-1}A^{-1}) = A(BB^{-1})A^{-1} = AA^{-1} = I ( A B ) ( B − 1 A − 1 ) = A ( B B − 1 ) A − 1 = A A − 1 = I 이고, 반대 순서도 같습니다. (3) A T ( A − 1 ) T = ( A − 1 A ) T = I T = I A^T(A^{-1})^T = (A^{-1}A)^T = I^T = I A T ( A − 1 ) T = ( A − 1 A ) T = I T = I 이고, 반대 순서도 같습니다. 정리 5.13 을 썼습니다. ■
(2)에서 순서가 뒤집힙니다. 양말(B B B )을 신고 신발(A A A )을 신었으면, 벗을 때는 신발을 먼저(A − 1 A^{-1} A − 1 ), 양말을 나중에(B − 1 B^{-1} B − 1 ) 벗습니다.
9.3.1 역행렬과 연립방정식
A A A 가 가역이면 A x = b A\mathbf{x} = \mathbf{b} A x = b 의 양변에 A − 1 A^{-1} A − 1 을 곱해
x = A − 1 b \mathbf{x} = A^{-1}\mathbf{b} x = A − 1 b
를 얻습니다. 해는 정확히 하나입니다. 그러나 실제 계산에서 연립방정식을 풀려고 A − 1 A^{-1} A − 1 을 구하지는 않습니다. A − 1 A^{-1} A − 1 을 구하는 데는 소거보다 약 3배의 계산이 들고, 수치 오차도 커집니다. A − 1 A^{-1} A − 1 은 생각의 도구로 쓰고, 계산은 9.6절의 L U LU LU 로 합니다.
▶ 문제 9.1–9.5
9.4 가우스–요르단 소거
질문. 3 × 3 3 \times 3 3 × 3 행렬의 역행렬은 어떻게 계산할까요?
A A − 1 = I AA^{-1} = I A A − 1 = I 를 열 단위로 보면, A − 1 A^{-1} A − 1 의 제j j j 열 x j \mathbf{x}_j x j 는 A x j = e j A\mathbf{x}_j = \mathbf{e}_j A x j = e j 의 해입니다. 따라서 n n n 개의 연립방정식을 동시에 풀면 됩니다. 첨가행렬의 오른쪽에 e 1 , … , e n \mathbf{e}_1, \ldots, \mathbf{e}_n e 1 , … , e n 을 모두 붙인 [ A ∣ I ] \left[\, A \mid I \,\right] [ A ∣ I ] 에 소거를 합니다.
정의 9.4 (가우스–요르단 소거). [ A ∣ I ] \left[\, A \mid I \,\right] [ A ∣ I ] 에 행 연산을 하여
피벗 아래를 0으로 만들고 (가우스 소거),
피벗 위도 0으로 만들고,
각 행을 피벗으로 나누어 피벗을 1로 만듭니다.
왼쪽이 I I I 가 되면 오른쪽이 A − 1 A^{-1} A − 1 입니다. 이 과정을 가우스–요르단 소거 (Gauss–Jordan elimination)라 합니다.
예제 9.5. A = [ 2 − 1 0 − 1 2 − 1 0 − 1 2 ] A = \begin{bmatrix} 2 & -1 & 0 \\ -1 & 2 & -1 \\ 0 & -1 & 2 \end{bmatrix} A = 2 − 1 0 − 1 2 − 1 0 − 1 2 .
[ 2 − 1 0 1 0 0 − 1 2 − 1 0 1 0 0 − 1 2 0 0 1 ] → 행2 + 1 2 행1 [ 2 − 1 0 1 0 0 0 3 2 − 1 1 2 1 0 0 − 1 2 0 0 1 ] → 행3 + 2 3 행2 [ 2 − 1 0 1 0 0 0 3 2 − 1 1 2 1 0 0 0 4 3 1 3 2 3 1 ] \left[\begin{array}{ccc|ccc} 2 & -1 & 0 & 1 & 0 & 0 \\ -1 & 2 & -1 & 0 & 1 & 0 \\ 0 & -1 & 2 & 0 & 0 & 1 \end{array}\right] \xrightarrow{\text{행2} + \frac12\text{행1}} \left[\begin{array}{ccc|ccc} 2 & -1 & 0 & 1 & 0 & 0 \\ 0 & \frac32 & -1 & \frac12 & 1 & 0 \\ 0 & -1 & 2 & 0 & 0 & 1 \end{array}\right] \xrightarrow{\text{행3} + \frac23\text{행2}} \left[\begin{array}{ccc|ccc} 2 & -1 & 0 & 1 & 0 & 0 \\ 0 & \frac32 & -1 & \frac12 & 1 & 0 \\ 0 & 0 & \frac43 & \frac13 & \frac23 & 1 \end{array}\right] 2 − 1 0 − 1 2 − 1 0 − 1 2 1 0 0 0 1 0 0 0 1 행 2 + 2 1 행 1 2 0 0 − 1 2 3 − 1 0 − 1 2 1 2 1 0 0 1 0 0 0 1 행 3 + 3 2 행 2 2 0 0 − 1 2 3 0 0 − 1 3 4 1 2 1 3 1 0 1 3 2 0 0 1
피벗 2 , 3 2 , 4 3 2, \frac32, \frac43 2 , 2 3 , 3 4 이 모두 0이 아니므로 가역입니다. 이제 위쪽을 소거합니다.
→ 행2 + 3 4 행3 [ 2 − 1 0 1 0 0 0 3 2 0 3 4 3 2 3 4 0 0 4 3 1 3 2 3 1 ] → 행1 + 2 3 행2 [ 2 0 0 3 2 1 1 2 0 3 2 0 3 4 3 2 3 4 0 0 4 3 1 3 2 3 1 ] \xrightarrow{\text{행2} + \frac34\text{행3}} \left[\begin{array}{ccc|ccc} 2 & -1 & 0 & 1 & 0 & 0 \\ 0 & \frac32 & 0 & \frac34 & \frac32 & \frac34 \\ 0 & 0 & \frac43 & \frac13 & \frac23 & 1 \end{array}\right] \xrightarrow{\text{행1} + \frac23\text{행2}} \left[\begin{array}{ccc|ccc} 2 & 0 & 0 & \frac32 & 1 & \frac12 \\ 0 & \frac32 & 0 & \frac34 & \frac32 & \frac34 \\ 0 & 0 & \frac43 & \frac13 & \frac23 & 1 \end{array}\right] 행 2 + 4 3 행 3 2 0 0 − 1 2 3 0 0 0 3 4 1 4 3 3 1 0 2 3 3 2 0 4 3 1 행 1 + 3 2 행 2 2 0 0 0 2 3 0 0 0 3 4 2 3 4 3 3 1 1 2 3 3 2 2 1 4 3 1
각 행을 피벗으로 나누면
A − 1 = [ 3 4 1 2 1 4 1 2 1 1 2 1 4 1 2 3 4 ] = 1 4 [ 3 2 1 2 4 2 1 2 3 ] . A^{-1} = \begin{bmatrix} \frac34 & \frac12 & \frac14 \\ \frac12 & 1 & \frac12 \\ \frac14 & \frac12 & \frac34 \end{bmatrix} = \frac14\begin{bmatrix} 3 & 2 & 1 \\ 2 & 4 & 2 \\ 1 & 2 & 3 \end{bmatrix}. A − 1 = 4 3 2 1 4 1 2 1 1 2 1 4 1 2 1 4 3 = 4 1 3 2 1 2 4 2 1 2 3 .
검산: A A A 의 첫째 행과 A − 1 A^{-1} A − 1 의 첫째 열의 내적은 1 4 ( 6 − 2 + 0 ) = 1 \frac14(6 - 2 + 0) = 1 4 1 ( 6 − 2 + 0 ) = 1 , 둘째 열과는 1 4 ( 4 − 4 + 0 ) = 0 \frac14(4 - 4 + 0) = 0 4 1 ( 4 − 4 + 0 ) = 0 .
다음 단계를 누르면 [A | I]에서 아래쪽, 위쪽 순서로 소거하고 피벗으로 나누어 오른쪽에 역행렬을 만듭니다 이 위젯은 JavaScript가 필요합니다
직관. 가우스–요르단이 왜 A − 1 A^{-1} A − 1 을 줄까요? 모든 행 연산을 합친 행렬을 E E E 라 합시다. 왼쪽 블록에서 E A = I EA = I E A = I 가 되었습니다. 같은 연산이 오른쪽 블록에는 E I = E EI = E E I = E 를 만듭니다. E A = I EA = I E A = I 이므로 E E E 가 A A A 를 되돌리는 행렬, 즉 A − 1 A^{-1} A − 1 입니다.
예제에서 A A A 는 대칭이고 A − 1 A^{-1} A − 1 도 대칭입니다(문제 9.8). A A A 에는 0이 많은데 A − 1 A^{-1} A − 1 에는 0이 하나도 없습니다. 희소한 행렬의 역행렬은 보통 꽉 차 있습니다. 이것이 계산에서 A − 1 A^{-1} A − 1 을 피하는 또 하나의 이유입니다.
▶ 문제 9.6–9.8
9.5 가역성의 판정
정리 9.6 (가역성의 동치 조건). n × n n \times n n × n 행렬 A A A 에 대하여 다음은 동치입니다.
A A A 는 가역입니다.
(행 교환을 허용한) 소거에서 피벗이 n n n 개 나옵니다.
A x = 0 A\mathbf{x} = \mathbf{0} A x = 0 의 해는 x = 0 \mathbf{x} = \mathbf{0} x = 0 뿐입니다.
모든 b \mathbf{b} b 에 대해 A x = b A\mathbf{x} = \mathbf{b} A x = b 의 해가 정확히 하나 있습니다.
B A = I BA = I B A = I 인 B B B 가 있습니다.
A C = I AC = I A C = I 인 C C C 가 있습니다.
증명. (1)⇒(5), (1)⇒(6): 역행렬이 B B B 이자 C C C 입니다.
(5)⇒(3): A x = 0 A\mathbf{x} = \mathbf{0} A x = 0 이면 x = B A x = B 0 = 0 \mathbf{x} = BA\mathbf{x} = B\mathbf{0} = \mathbf{0} x = B A x = B 0 = 0 .
(3)⇒(2): 피벗이 n n n 개보다 적다고 합시다. 그러면 피벗이 없는 열이 있습니다. 소거 후의 U x = 0 U\mathbf{x} = \mathbf{0} U x = 0 에서 그 열의 미지수를 1로, 피벗이 없는 다른 열의 미지수를 0으로 정하고 피벗이 있는 미지수들을 후진대입으로 구하면, x ≠ 0 \mathbf{x} \ne \mathbf{0} x = 0 인 해가 나옵니다. 행 연산은 해를 바꾸지 않으므로(정리 8.5 ) 이것은 A x = 0 A\mathbf{x} = \mathbf{0} A x = 0 의 해이기도 합니다. (3)에 모순.
(2)⇒(1): 피벗이 n n n 개이면 가우스–요르단이 끝까지 진행되어 E A = I EA = I E A = I 인 E E E (행 연산 행렬들의 곱)를 얻습니다. 각 행 연산 행렬은 가역이므로 E E E 도 가역(정리 9.3 )이고, A = E − 1 ( E A ) = E − 1 A = E^{-1}(EA) = E^{-1} A = E − 1 ( E A ) = E − 1 입니다. 가역행렬의 역은 가역이므로 A A A 는 가역입니다.
(1)⇒(4): x = A − 1 b \mathbf{x} = A^{-1}\mathbf{b} x = A − 1 b 가 해이고, 다른 해 y \mathbf{y} y 가 있으면 A ( x − y ) = 0 A(\mathbf{x} - \mathbf{y}) = \mathbf{0} A ( x − y ) = 0 에서 양변에 A − 1 A^{-1} A − 1 을 곱해 x = y \mathbf{x} = \mathbf{y} x = y .
(4)⇒(3): b = 0 \mathbf{b} = \mathbf{0} b = 0 일 때 해가 하나뿐이고 0 \mathbf{0} 0 이 해입니다.
(6)⇒(1): A C = I AC = I A C = I 이면 C T A T = I C^TA^T = I C T A T = I 이므로 A T A^T A T 에 대해 (5)가 성립합니다. 앞에서 보인 (5)⇒(3)⇒(2)⇒(1)에 의해 A T A^T A T 가 가역이고, 정리 9.3 (3)을 A T A^T A T 에 적용하면 A = ( A T ) T A = (A^T)^T A = ( A T ) T 도 가역입니다. ■
(5)와 (6)의 동치는 정사각행렬에서만 성립하는 놀라운 사실입니다. 한쪽에서 곱해서 I I I 가 되는 행렬을 찾으면, 반대쪽에서도 자동으로 I I I 가 됩니다. 직사각행렬에서는 그렇지 않습니다(18장의 유사역행렬). 15장에서 이 목록에 “det A ≠ 0 \det A \ne 0 det A = 0 ”이 추가되고, 12장에서 “열들이 일차독립”, 16장에서 “0이 고윳값이 아닙니다”가 추가됩니다.
▶ 문제 9.9–9.10
9.6 A = LU: 소거의 기록
질문. 같은 A A A 로 우변 b \mathbf{b} b 만 바꿔 가며 연립방정식을 여러 번 풀어야 합니다. 매번 처음부터 소거해야 할까요?
소거 과정 E 32 E 31 E 21 A = U E_{32}E_{31}E_{21}A = U E 32 E 31 E 21 A = U 를 뒤집으면
A = E 21 − 1 E 31 − 1 E 32 − 1 U = L U . A = E_{21}^{-1}E_{31}^{-1}E_{32}^{-1}U = LU. A = E 21 − 1 E 31 − 1 E 32 − 1 U = LU .
여기서 L = E 21 − 1 E 31 − 1 E 32 − 1 L = E_{21}^{-1}E_{31}^{-1}E_{32}^{-1} L = E 21 − 1 E 31 − 1 E 32 − 1 은 대각성분이 1인 아래삼각행렬입니다. 놀라운 점은 L L L 의 성분이 승수 그 자체라는 것입니다(문제 8.10).
정리 9.7 (LU 분해). 행 교환 없이 소거가 끝나는 n × n n \times n n × n 행렬 A A A 는
A = L U A = LU A = LU
로 쓸 수 있습니다. U U U 는 소거의 결과인 위삼각행렬(대각성분이 피벗), L L L 은 대각성분이 1이고 ( i , j ) (i, j) ( i , j ) 성분(i > j i > j i > j )이 승수 ℓ i j \ell_{ij} ℓ ij 인 아래삼각행렬입니다.
증명. 소거의 제i i i 행은 최종적으로
( U 의 행 i ) = ( A 의 행 i ) − ∑ j < i ℓ i j ( U 의 행 j ) (U\text{의 행}i) = (A\text{의 행}i) - \sum_{j < i} \ell_{ij}\,(U\text{의 행}j) ( U 의 행 i ) = ( A 의 행 i ) − j < i ∑ ℓ ij ( U 의 행 j )
입니다. 행i i i 에서 빼는 것은 언제나 이미 완성된 피벗 행(U U U 의 행j j j )의 배수이기 때문입니다. 정리하면
( A 의 행 i ) = ∑ j < i ℓ i j ( U 의 행 j ) + 1 ⋅ ( U 의 행 i ) . (A\text{의 행}i) = \sum_{j < i} \ell_{ij}\,(U\text{의 행}j) + 1 \cdot (U\text{의 행}i). ( A 의 행 i ) = j < i ∑ ℓ ij ( U 의 행 j ) + 1 ⋅ ( U 의 행 i ) .
우변은 정리 5.5 (3)에 의해 L U LU LU 의 제i i i 행입니다. ■
예제 9.8. 예제 8.2의 A = [ 2 4 − 2 4 9 − 3 − 2 − 3 7 ] A = \begin{bmatrix} 2 & 4 & -2 \\ 4 & 9 & -3 \\ -2 & -3 & 7 \end{bmatrix} A = 2 4 − 2 4 9 − 3 − 2 − 3 7 은 승수가 ℓ 21 = 2 \ell_{21} = 2 ℓ 21 = 2 , ℓ 31 = − 1 \ell_{31} = -1 ℓ 31 = − 1 , ℓ 32 = 1 \ell_{32} = 1 ℓ 32 = 1 이었습니다.
[ 2 4 − 2 4 9 − 3 − 2 − 3 7 ] = [ 1 0 0 2 1 0 − 1 1 1 ] [ 2 4 − 2 0 1 1 0 0 4 ] . \begin{bmatrix} 2 & 4 & -2 \\ 4 & 9 & -3 \\ -2 & -3 & 7 \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ -1 & 1 & 1 \end{bmatrix}\begin{bmatrix} 2 & 4 & -2 \\ 0 & 1 & 1 \\ 0 & 0 & 4 \end{bmatrix}. 2 4 − 2 4 9 − 3 − 2 − 3 7 = 1 2 − 1 0 1 1 0 0 1 2 0 0 4 1 0 − 2 1 4 .
셋째 행을 확인하면 − 1 ⋅ ( 2 , 4 , − 2 ) + 1 ⋅ ( 0 , 1 , 1 ) + 1 ⋅ ( 0 , 0 , 4 ) = ( − 2 , − 3 , 7 ) -1 \cdot (2, 4, -2) + 1 \cdot (0, 1, 1) + 1 \cdot (0, 0, 4) = (-2, -3, 7) − 1 ⋅ ( 2 , 4 , − 2 ) + 1 ⋅ ( 0 , 1 , 1 ) + 1 ⋅ ( 0 , 0 , 4 ) = ( − 2 , − 3 , 7 ) .
9.6.1 LU로 풀기
A x = b A\mathbf{x} = \mathbf{b} A x = b 는 L ( U x ) = b L(U\mathbf{x}) = \mathbf{b} L ( U x ) = b 입니다. c = U x \mathbf{c} = U\mathbf{x} c = U x 로 두면 두 단계로 나뉩니다.
L c = b L\mathbf{c} = \mathbf{b} L c = b 를 위에서부터 풉니다(전진대입 (forward substitution)).
U x = c U\mathbf{x} = \mathbf{c} U x = c 를 아래에서부터 풉니다(후진대입).
두 단계 모두 삼각행렬이라 약 n 2 / 2 n^2/2 n 2 /2 번의 계산이면 됩니다. A = L U A = LU A = LU 를 한 번 구해 두면(n 3 / 3 n^3/3 n 3 /3 ), 새 b \mathbf{b} b 마다 n 2 n^2 n 2 정도로 풀 수 있습니다. 첫째 단계는 원래 소거에서 우변에 하던 일을 나중에 하는 것과 같습니다.
예제 9.9. 위 예에서 b = ( 2 , 8 , 10 ) \mathbf{b} = (2, 8, 10) b = ( 2 , 8 , 10 ) 이면 L c = b L\mathbf{c} = \mathbf{b} L c = b : c 1 = 2 c_1 = 2 c 1 = 2 , 2 c 1 + c 2 = 8 2c_1 + c_2 = 8 2 c 1 + c 2 = 8 에서 c 2 = 4 c_2 = 4 c 2 = 4 , − c 1 + c 2 + c 3 = 10 -c_1 + c_2 + c_3 = 10 − c 1 + c 2 + c 3 = 10 에서 c 3 = 8 c_3 = 8 c 3 = 8 . 예제 8.2에서 소거 후 우변이 ( 2 , 4 , 8 ) (2, 4, 8) ( 2 , 4 , 8 ) 이었던 것과 같습니다. 이어서 U x = c U\mathbf{x} = \mathbf{c} U x = c 를 풀면 x = ( − 1 , 2 , 2 ) \mathbf{x} = (-1, 2, 2) x = ( − 1 , 2 , 2 ) .
9.6.2 LDU와 대칭행렬
U U U 의 각 행을 피벗으로 나누면 U = D U ′ U = DU' U = D U ′ (D D D 는 피벗의 대각행렬, U ′ U' U ′ 은 대각성분이 1인 위삼각)로 쓸 수 있습니다. 그러면 A = L D U ′ A = LDU' A = L D U ′ 입니다. A A A 가 대칭이면 U ′ = L T U' = L^T U ′ = L T 가 되어
A = L D L T A = LDL^T A = L D L T
입니다(문제 9.12). 대칭행렬의 소거는 계산이 절반으로 줄고, 17장에서 이 분해가 “양정치”를 판정하는 데 쓰입니다.
9.6.3 행 교환이 필요할 때
소거 중에 행 교환이 필요하면 미리 그 순서로 행을 바꿔 놓은 행렬 P A PA P A 에 대해 소거하면 됩니다.
P A = L U . PA = LU. P A = LU .
모든 가역행렬은 적당한 치환행렬 P P P 에 대해 이렇게 분해됩니다. 실제 컴퓨터 계산에서는 0이 아니더라도 절댓값이 가장 큰 성분을 피벗으로 고르기 위해 일부러 행을 바꿉니다. 작은 피벗으로 나누면 반올림 오차가 커지기 때문입니다(30장).
▶ 문제 9.11–9.13
쓰이는 곳. 논문에서 A − 1 b A^{-1}b A − 1 b 라고 쓰더라도 실제 구현은 역행렬을 구하지 않고 LU(또는 숄레스키) 분해로 A x = b Ax = b A x = b 를 풉니다. 같은 행렬로 여러 번 풀어야 하는 시뮬레이션에서 특히 중요합니다.
이 장의 요약
A B = B A = I AB = BA = I A B = B A = I 이면 B = A − 1 B = A^{-1} B = A − 1 . 역행렬은 유일합니다. 가역 ⟺ \iff ⟺ 변환이 전단사.
( A B ) − 1 = B − 1 A − 1 (AB)^{-1} = B^{-1}A^{-1} ( A B ) − 1 = B − 1 A − 1 , ( A T ) − 1 = ( A − 1 ) T (A^T)^{-1} = (A^{-1})^T ( A T ) − 1 = ( A − 1 ) T .
가우스–요르단: [ A ∣ I ] → [ I ∣ A − 1 ] \left[\, A \mid I \,\right] \to \left[\, I \mid A^{-1} \,\right] [ A ∣ I ] → [ I ∣ A − 1 ] .
정사각행렬에서: 가역 ⟺ \iff ⟺ 피벗 n n n 개 ⟺ \iff ⟺ A x = 0 A\mathbf{x} = \mathbf{0} A x = 0 의 해는 0 \mathbf{0} 0 뿐 ⟺ \iff ⟺ 한쪽 역이 있습니다.
A = L U A = LU A = LU : L L L 은 승수를 담은 아래삼각, U U U 는 피벗을 담은 위삼각. 풀이는 전진대입 후 후진대입.
대칭이면 A = L D L T A = LDL^T A = L D L T . 행 교환이 필요하면 P A = L U PA = LU P A = LU .
문제
9.1 [계산] · 확인 문제
역행렬을 구합니다. 각각 “무엇을 되돌리는가”로 답을 설명합니다.
(a) [ 3 5 1 2 ] (b) [ 2 0 0 0 − 1 0 0 0 1 3 ] (c) [ 1 0 0 0 1 0 − 4 0 1 ] (d) R 30 ∘ \text{(a)}\ \begin{bmatrix} 3 & 5 \\ 1 & 2 \end{bmatrix} \qquad \text{(b)}\ \begin{bmatrix} 2 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & \frac13 \end{bmatrix} \qquad \text{(c)}\ \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ -4 & 0 & 1 \end{bmatrix} \qquad \text{(d)}\ R_{30^\circ} (a) [ 3 1 5 2 ] (b) 2 0 0 0 − 1 0 0 0 3 1 (c) 1 0 − 4 0 1 0 0 0 1 (d) R 3 0 ∘ 표에는 (a)와 (d)의 역행렬 성분을 적습니다((d)는 소수 셋째 자리까지). (b), (c)는 풀이에서 확인합니다.
1행 1열
1행 2열
2행 1열
2행 2열
(a)
[?]
[?]
[?]
[?]
(d)
[?]
[?]
[?]
[?]
정답 2
-5
-1
3
0.866
0.5
-0.5
0.866
풀이 (a) det = 1 \det = 1 det = 1 , [ 2 − 5 − 1 3 ] \begin{bmatrix} 2 & -5 \\ -1 & 3 \end{bmatrix} [ 2 − 1 − 5 3 ] . (b) diag ( 1 2 , − 1 , 3 ) \operatorname{diag}(\frac12, -1, 3) diag ( 2 1 , − 1 , 3 ) : 각 축의 배율을 역수로.
(c) [ 1 0 0 0 1 0 4 0 1 ] \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 4 & 0 & 1 \end{bmatrix} 1 0 4 0 1 0 0 0 1 : 행3에서 행1의 4배를 뺀 것을 다시 더합니다.
(d) R − 30 ∘ = [ 3 2 1 2 − 1 2 3 2 ] R_{-30^\circ} = \begin{bmatrix} \frac{\sqrt3}{2} & \frac12 \\ -\frac12 & \frac{\sqrt3}{2} \end{bmatrix} R − 3 0 ∘ = [ 2 3 − 2 1 2 1 2 3 ] : 반대 방향으로 30 ∘ 30^\circ 3 0 ∘ .
9.2 [계산] · 확인 문제
A = [ 1 1 0 1 ] A = \begin{bmatrix} 1 & 1 \\ 0 & 1 \end{bmatrix} A = [ 1 0 1 1 ] , B = [ 2 0 0 1 ] B = \begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix} B = [ 2 0 0 1 ] 에 대해 A − 1 A^{-1} A − 1 , B − 1 B^{-1} B − 1 , ( A B ) − 1 (AB)^{-1} ( A B ) − 1 을 구합니다. ( A B ) − 1 (AB)^{-1} ( A B ) − 1 이 B − 1 A − 1 B^{-1}A^{-1} B − 1 A − 1 과 같고 A − 1 B − 1 A^{-1}B^{-1} A − 1 B − 1 과는 다름을 확인합니다.
1행 1열
1행 2열
2행 1열
2행 2열
( A B ) − 1 (AB)^{-1} ( A B ) − 1
[?]
[?]
[?]
[?]
A − 1 B − 1 A^{-1}B^{-1} A − 1 B − 1
[?]
[?]
[?]
[?]
정답 풀이 A − 1 = [ 1 − 1 0 1 ] A^{-1} = \begin{bmatrix} 1 & -1 \\ 0 & 1 \end{bmatrix} A − 1 = [ 1 0 − 1 1 ] , B − 1 = [ 1 2 0 0 1 ] B^{-1} = \begin{bmatrix} \frac12 & 0 \\ 0 & 1 \end{bmatrix} B − 1 = [ 2 1 0 0 1 ] . A B = [ 2 1 0 1 ] AB = \begin{bmatrix} 2 & 1 \\ 0 & 1 \end{bmatrix} A B = [ 2 0 1 1 ] , ( A B ) − 1 = 1 2 [ 1 − 1 0 2 ] = [ 1 2 − 1 2 0 1 ] = B − 1 A − 1 (AB)^{-1} = \frac12\begin{bmatrix} 1 & -1 \\ 0 & 2 \end{bmatrix} = \begin{bmatrix} \frac12 & -\frac12 \\ 0 & 1 \end{bmatrix} = B^{-1}A^{-1} ( A B ) − 1 = 2 1 [ 1 0 − 1 2 ] = [ 2 1 0 − 2 1 1 ] = B − 1 A − 1 . 한편 A − 1 B − 1 = [ 1 2 − 1 0 1 ] A^{-1}B^{-1} = \begin{bmatrix} \frac12 & -1 \\ 0 & 1 \end{bmatrix} A − 1 B − 1 = [ 2 1 0 − 1 1 ] .
9.3 [증명]
A A A 가 가역이라 합시다. (a) A B = A C AB = AC A B = A C 이면 B = C B = C B = C 임을 보입니다. (5.4절의 “약분 실패”와 비교합니다.) (b) A 2 = A A^2 = A A 2 = A 이면 A = I A = I A = I 임을 보입니다.
풀이 (a) 양변 왼쪽에 A − 1 A^{-1} A − 1 : B = A − 1 A B = A − 1 A C = C B = A^{-1}AB = A^{-1}AC = C B = A − 1 A B = A − 1 A C = C .
(b) A 2 = A I A^2 = AI A 2 = A I 이므로 (a)에서 A = I A = I A = I .
9.4 [증명]
치환행렬 P P P 에 대해 P T P = I P^TP = I P T P = I 임을 보입니다. 따라서 P − 1 = P T P^{-1} = P^T P − 1 = P T 입니다.
힌트. P P P 의 열들은 e 1 , … , e n \mathbf{e}_1, \ldots, \mathbf{e}_n e 1 , … , e n 을 순서만 바꾼 것입니다. 문제 5.11을 씁니다.
풀이 ( P T P ) i j = ( P 의 열 i ) ⋅ ( P 의 열 j ) (P^TP)_{ij} = (P\text{의 열}i) \cdot (P\text{의 열}j) ( P T P ) ij = ( P 의 열 i ) ⋅ ( P 의 열 j ) . 열들은 서로 다른 표준기저벡터이므로 i = j i = j i = j 이면 1, 아니면 0.
9.5 [도전]
A 3 = O A^3 = O A 3 = O 인 정사각행렬 A A A 에 대해 I − A I - A I − A 는 가역이고 ( I − A ) − 1 = I + A + A 2 (I - A)^{-1} = I + A + A^2 ( I − A ) − 1 = I + A + A 2 임을 보입니다. 실수에서 1 1 − x = 1 + x + x 2 + ⋯ \frac{1}{1 - x} = 1 + x + x^2 + \cdots 1 − x 1 = 1 + x + x 2 + ⋯ 과 비교합니다.
풀이 ( I − A ) ( I + A + A 2 ) = I + A + A 2 − A − A 2 − A 3 = I − A 3 = I (I - A)(I + A + A^2) = I + A + A^2 - A - A^2 - A^3 = I - A^3 = I ( I − A ) ( I + A + A 2 ) = I + A + A 2 − A − A 2 − A 3 = I − A 3 = I . 반대 순서도 같은 계산. 실수의 등비급수가 x 3 = 0 x^3 = 0 x 3 = 0 에서 끊긴 것과 같습니다.
9.6 [계산] · 확인 문제
가우스–요르단 소거로 역행렬을 구합니다. (a) [ 1 2 3 7 ] \begin{bmatrix} 1 & 2 \\ 3 & 7 \end{bmatrix} [ 1 3 2 7 ] (b) [ 1 1 1 0 1 1 0 0 1 ] \begin{bmatrix} 1 & 1 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 1 \end{bmatrix} 1 0 0 1 1 0 1 1 1 . 표에는 역행렬의 성분을 행 순서대로 적습니다.
1행 1열
1행 2열
1행 3열
2행 1열
2행 2열
2행 3열
3행 1열
3행 2열
3행 3열
(a)
[?]
[?]
-
[?]
[?]
-
-
-
-
(b)
[?]
[?]
[?]
[?]
[?]
[?]
[?]
[?]
[?]
정답 7
-2
-3
1
1
-1
0
0
1
-1
0
0
1
풀이 (a) [ 1 2 1 0 3 7 0 1 ] → \left[\begin{array}{cc|cc} 1 & 2 & 1 & 0 \\ 3 & 7 & 0 & 1 \end{array}\right] \to [ 1 3 2 7 1 0 0 1 ] → 행2 − 3 - 3 − 3 행1 → [ 1 2 1 0 0 1 − 3 1 ] → \to \left[\begin{array}{cc|cc} 1 & 2 & 1 & 0 \\ 0 & 1 & -3 & 1 \end{array}\right] \to → [ 1 0 2 1 1 − 3 0 1 ] → 행1 − 2 - 2 − 2 행2 → [ 1 0 7 − 2 0 1 − 3 1 ] \to \left[\begin{array}{cc|cc} 1 & 0 & 7 & -2 \\ 0 & 1 & -3 & 1 \end{array}\right] → [ 1 0 0 1 7 − 3 − 2 1 ] . A − 1 = [ 7 − 2 − 3 1 ] A^{-1} = \begin{bmatrix} 7 & -2 \\ -3 & 1 \end{bmatrix} A − 1 = [ 7 − 3 − 2 1 ] .
(b) 행2 − - − 행3, 행1 − - − 행3, 행1 − - − 행2 순서로 하면 [ 1 − 1 0 0 1 − 1 0 0 1 ] \begin{bmatrix} 1 & -1 & 0 \\ 0 & 1 & -1 \\ 0 & 0 & 1 \end{bmatrix} 1 0 0 − 1 1 0 0 − 1 1 .
9.7 [계산] · 확인 문제
가우스–요르단 소거로 [ 2 1 1 4 − 6 0 − 2 7 2 ] \begin{bmatrix} 2 & 1 & 1 \\ 4 & -6 & 0 \\ -2 & 7 & 2 \end{bmatrix} 2 4 − 2 1 − 6 7 1 0 2 의 역행렬을 구하고, 원래 행렬과 곱해 I I I 가 되는지 한 열 이상 확인합니다.
1열
2열
3열
1행
[?]
[?]
[?]
2행
[?]
[?]
[?]
3행
[?]
[?]
[?]
정답 3/4
-5/16
-3/8
1/2
-3/8
-1/4
-1
1
1
풀이 소거: 행2 − 2 - 2 − 2 행1 = ( 0 , − 8 , − 2 ) = (0, -8, -2) = ( 0 , − 8 , − 2 ) , 행3 + 행1 = ( 0 , 8 , 3 ) = (0, 8, 3) = ( 0 , 8 , 3 ) , 행3 + 행2 = ( 0 , 0 , 1 ) = (0, 0, 1) = ( 0 , 0 , 1 ) . 피벗 2 , − 8 , 1 2, -8, 1 2 , − 8 , 1 . 위쪽 소거와 스케일 후
A − 1 = [ 3 4 − 5 16 − 3 8 1 2 − 3 8 − 1 4 − 1 1 1 ] . A^{-1} = \begin{bmatrix} \frac34 & -\frac{5}{16} & -\frac38 \\ \frac12 & -\frac38 & -\frac14 \\ -1 & 1 & 1 \end{bmatrix}. A − 1 = 4 3 2 1 − 1 − 16 5 − 8 3 1 − 8 3 − 4 1 1 . 확인(첫째 열): ( 2 , 1 , 1 ) ⋅ ( 3 4 , 1 2 , − 1 ) = 1 (2, 1, 1) \cdot (\frac34, \frac12, -1) = 1 ( 2 , 1 , 1 ) ⋅ ( 4 3 , 2 1 , − 1 ) = 1 , ( 4 , − 6 , 0 ) ⋅ ( 3 4 , 1 2 , − 1 ) = 0 (4, -6, 0) \cdot (\frac34, \frac12, -1) = 0 ( 4 , − 6 , 0 ) ⋅ ( 4 3 , 2 1 , − 1 ) = 0 , ( − 2 , 7 , 2 ) ⋅ ( 3 4 , 1 2 , − 1 ) = 0 (-2, 7, 2) \cdot (\frac34, \frac12, -1) = 0 ( − 2 , 7 , 2 ) ⋅ ( 4 3 , 2 1 , − 1 ) = 0 .
9.8 [증명]
A A A 가 가역인 대칭행렬이면 A − 1 A^{-1} A − 1 도 대칭임을 보입니다.
풀이 ( A − 1 ) T = ( A T ) − 1 = A − 1 (A^{-1})^T = (A^T)^{-1} = A^{-1} ( A − 1 ) T = ( A T ) − 1 = A − 1 (정리 9.3 (3)과 A T = A A^T = A A T = A ).
9.9 [계산] · 확인 문제
다음 행렬이 가역인지 소거로 판정합니다. 가역이 아니면 A x = 0 A\mathbf{x} = \mathbf{0} A x = 0 인 x ≠ 0 \mathbf{x} \ne \mathbf{0} x = 0 을 하나 찾습니다. 표에는 가역이면 O, 아니면 X를 적습니다.
(a) [ 1 2 3 2 4 6 1 0 1 ] (b) [ 0 1 1 1 0 1 1 1 0 ] (c) [ 1 2 2 4 ] \text{(a)}\ \begin{bmatrix} 1 & 2 & 3 \\ 2 & 4 & 6 \\ 1 & 0 & 1 \end{bmatrix} \qquad \text{(b)}\ \begin{bmatrix} 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \end{bmatrix} \qquad \text{(c)}\ \begin{bmatrix} 1 & 2 \\ 2 & 4 \end{bmatrix} (a) 1 2 1 2 4 0 3 6 1 (b) 0 1 1 1 0 1 1 1 0 (c) [ 1 2 2 4 ]
정답 풀이 (a) 행2 = 2 × = 2\times = 2 × 행1이므로 소거하면 영행이 생겨 피벗이 2개. 특이. x + 2 y + 3 z = 0 x + 2y + 3z = 0 x + 2 y + 3 z = 0 , x + z = 0 x + z = 0 x + z = 0 에서 x = ( 1 , 1 , − 1 ) \mathbf{x} = (1, 1, -1) x = ( 1 , 1 , − 1 ) .
(b) 행1 ↔ 행2 후 소거하면 피벗 1 , 1 , − 2 1, 1, -2 1 , 1 , − 2 . 가역.
(c) 피벗 1개. 특이. x = ( 2 , − 1 ) \mathbf{x} = (2, -1) x = ( 2 , − 1 ) .
9.10 [도전]
n × n n \times n n × n 행렬 A A A 에 대하여 다음을 보입니다. (a) A 2 = O A^2 = O A 2 = O 이면 A A A 는 가역이 아닙니다. (b) x ≠ y \mathbf{x} \ne \mathbf{y} x = y 인데 A x = A y A\mathbf{x} = A\mathbf{y} A x = A y 이면 A A A 는 가역이 아닙니다. (c) A A A 의 두 열이 같으면 A A A 는 가역이 아닙니다.
풀이 (a) 가역이면 A = A − 1 A 2 = A − 1 O = O A = A^{-1}A^2 = A^{-1}O = O A = A − 1 A 2 = A − 1 O = O 인데 O O O 는 가역이 아닙니다. 모순.
(b) A ( x − y ) = 0 A(\mathbf{x} - \mathbf{y}) = \mathbf{0} A ( x − y ) = 0 이고 x − y ≠ 0 \mathbf{x} - \mathbf{y} \ne \mathbf{0} x − y = 0 이므로 정리 9.6 의 (3)이 깨집니다.
(c) 열 i i i 와 열 j j j 가 같으면 x = e i − e j ≠ 0 \mathbf{x} = \mathbf{e}_i - \mathbf{e}_j \ne \mathbf{0} x = e i − e j = 0 에 대해 A x = 0 A\mathbf{x} = \mathbf{0} A x = 0 .
9.11 [계산] · 확인 문제
L U LU LU 분해를 구합니다. (a) [ 2 1 6 8 ] \begin{bmatrix} 2 & 1 \\ 6 & 8 \end{bmatrix} [ 2 6 1 8 ] (b) [ 1 1 1 1 2 2 1 2 3 ] \begin{bmatrix} 1 & 1 & 1 \\ 1 & 2 & 2 \\ 1 & 2 & 3 \end{bmatrix} 1 1 1 1 2 2 1 2 3 . 표에는 (a)를 적고 (b)는 풀이에서 확인합니다.
(a)
1행 1열
1행 2열
2행 1열
2행 2열
L L L
1
0
[?]
1
U U U
[?]
[?]
0
[?]
정답 풀이 (a) ℓ 21 = 3 \ell_{21} = 3 ℓ 21 = 3 . [ 2 1 6 8 ] = [ 1 0 3 1 ] [ 2 1 0 5 ] \begin{bmatrix} 2 & 1 \\ 6 & 8 \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 3 & 1 \end{bmatrix}\begin{bmatrix} 2 & 1 \\ 0 & 5 \end{bmatrix} [ 2 6 1 8 ] = [ 1 3 0 1 ] [ 2 0 1 5 ] .
(b) 문제 8.3의 승수가 모두 1이었으므로 L = [ 1 0 0 1 1 0 1 1 1 ] L = \begin{bmatrix} 1 & 0 & 0 \\ 1 & 1 & 0 \\ 1 & 1 & 1 \end{bmatrix} L = 1 1 1 0 1 1 0 0 1 , U = [ 1 1 1 0 1 1 0 0 1 ] U = \begin{bmatrix} 1 & 1 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 1 \end{bmatrix} U = 1 0 0 1 1 0 1 1 1 .
9.12 [계산]
a ≠ 0 a \ne 0 a = 0 일 때 대칭행렬 A = [ a b b c ] A = \begin{bmatrix} a & b \\ b & c \end{bmatrix} A = [ a b b c ] 를 A = L D L T A = LDL^T A = L D L T 꼴로 씁니다. 곱해서 확인합니다.
풀이 ℓ 21 = b / a \ell_{21} = b/a ℓ 21 = b / a , 둘째 피벗 c − b 2 / a c - b^2/a c − b 2 / a .
A = [ 1 0 b a 1 ] [ a 0 0 c − b 2 a ] [ 1 b a 0 1 ] . A = \begin{bmatrix} 1 & 0 \\ \frac ba & 1 \end{bmatrix}\begin{bmatrix} a & 0 \\ 0 & c - \frac{b^2}{a} \end{bmatrix}\begin{bmatrix} 1 & \frac ba \\ 0 & 1 \end{bmatrix}. A = [ 1 a b 0 1 ] [ a 0 0 c − a b 2 ] [ 1 0 a b 1 ] . 곱하면 [ a b b b 2 a + c − b 2 a ] = A \begin{bmatrix} a & b \\ b & \frac{b^2}{a} + c - \frac{b^2}{a} \end{bmatrix} = A [ a b b a b 2 + c − a b 2 ] = A .
9.13 [계산] · 확인 문제
문제 9.11(b)의 L U LU LU 를 써서 A x = ( 3 , 5 , 6 ) A\mathbf{x} = (3, 5, 6) A x = ( 3 , 5 , 6 ) 을 전진대입과 후진대입으로 풉니다.
첫째
둘째
셋째
c \mathbf{c} c (L c = b L\mathbf{c} = \mathbf{b} L c = b )
[?]
[?]
[?]
x \mathbf{x} x (U x = c U\mathbf{x} = \mathbf{c} U x = c )
[?]
[?]
[?]
정답 풀이 L c = b L\mathbf{c} = \mathbf{b} L c = b : c 1 = 3 c_1 = 3 c 1 = 3 , c 2 = 5 − 3 = 2 c_2 = 5 - 3 = 2 c 2 = 5 − 3 = 2 , c 3 = 6 − 3 − 2 = 1 c_3 = 6 - 3 - 2 = 1 c 3 = 6 − 3 − 2 = 1 . U x = c U\mathbf{x} = \mathbf{c} U x = c : z = 1 z = 1 z = 1 , y = 2 − 1 = 1 y = 2 - 1 = 1 y = 2 − 1 = 1 , x = 3 − 1 − 1 = 1 x = 3 - 1 - 1 = 1 x = 3 − 1 − 1 = 1 . 검산: A ( 1 , 1 , 1 ) = ( 3 , 5 , 6 ) A(1, 1, 1) = (3, 5, 6) A ( 1 , 1 , 1 ) = ( 3 , 5 , 6 ) .