기본적인 문제 Ax=b 의 해를 구하기 위해, 대수적으로 방정식을 단순화 하여 문제를 해결하는 법을 알아본다.
n x n 행렬 A 와 n x 1 열벡터 b 가 있을때, x1 ~ xn−1 까지 소거해 Anxn=bn 을 얻고, 차례로 x2, x1 을 구할 수 있다.
이 과정을 랭크가 1인 행렬 관점에서 소거법을 살펴보면, 위의 과정은 행렬 lu∗ 를 제거하는 과정이다. 행렬 A는 랭크가 1 인 행렬들의 합이고 이는 A=LU로 표현할 수 있다. ( L : 하삼각행렬, U : 상삼각행렬 )
A=LU는 행교환이 없는 소거법 행렬의 표현으로, 대수학적 접근이다. ( 연립방정식 )
EX) [1−223][xy]=[19]
- 대수학적 접근 풀이.
x−2y=1 , 2x+3y=9 두 방정식을 연립해서 풀면, 두개의 직선이 만나는점 x=3, y=1 의 해를 구할수 있고,
미지수 x 를 제거하면 위의 식이 $ [1−207][xy] = [17] $ 이 된다.
이 방법은 n=2 에서는 시각화하기 쉬웠지만, n 이 높아질수록 시각화와 해를 찾기 어려워진다.
- 열 관점에서의 풀이.
Ax 은 A의 열들의 일차결합이다. 따라서 A 열들의 일차결합으로 b를 구한다.
x=3 , y=1 이라는 계수가 구해진다.
열들의 일차결합으로 푸는 경우에 해를 찾기 쉬워진다. 해가 하나 존재하려면, A에는 n개의 독립인 열들을 가져야한다.
즉 모든 열이 일차독립이라는 말은, Ax=0 의 유일한 해는 x=0 이다. 라는 말과 동일하다.
소거법을 이용한 Ax=b 풀이
Ax=0 의 해가 x=0 으로 유일하다면, 열의 일차결합이 b가 되는 유일한 x 를 구할 수 있다.
- 첫번째 추축을 정하고, 방정식을 이용해서 추축아래를 모두 0 으로 제거한다.
- 2 ~ n 열 까지 상삼각행렬 U를 찾을 때까지 계속 진행한다.
- 추축은 0 이 될수 없고, n개의 추축은 주 대각선 위에 있다.
- 마지막까지 진행한 행렬이 상삼각행렬 U 이다.
이런 방식의 소거법은 많은 곱셈과 덧셈을 수행하게 된다. 이를 해결하는 법이 A=LU 이다.
A=LU 분해
원래 행렬 A는 소거법 마지막에 구한 U 와 어떤 관계가 있을까?
소거법을 할때, 매 행에 l21=a21a11, l31=a31a11, ... 들을 곱해 소거함으로써 4 x 4 문제를 3 x 3 문제로 축소한다. 즉 랭크가 1 인 행렬 l1u∗1 를 분리한다.
A=l1u∗1+[0⋯⋮A2]
l1u∗1=[1 row][1l21⋯ln1]∗
이후 위와 비슷하게 랭크가 1 인 행렬 liu∗i 를 분리한다.
liu∗i=[i row][0⋯1⋯lni]∗
이 랭크가 1 인행렬들을 모아보면,
A=l1u∗1+⋯+lnu∗n=[10⋯0l211⋯0⋮⋮⋱⋮1n11n2⋯1]U=LU
소거법은 행렬 A=LU 를 하삼각행렬 L 과 상삼각행렬 U의 곱으로 분해한다.
- n−1 개의 방정식에서 x1을 제거하여 문제의 크기를 n 에서 n−1으로 줄인다.
- i 행 ( 추축행 ) 의 배수를 뺐고, 제거한 행렬의 랭크는 1 이다.
- n 단계 이후, 전체 행렬 A는 n 개의 랭크 1 행렬들의 합이다.
- 그 합은 L 과 U의 곱셈이다.
Ax=b 의 해법
Ax=b 의 해를 구하기위해해서 b 를 A의 열에 추가한 새로운행렬 [Ab] 으로 취급한다.
[Ab]=[LUb] 행렬에 소거법을 진행하여
[UL−1b]=[Uc] A 를 상삼각행렬 U 로 소거하는 단계중 b 느 c 로 바뀐다.
Ax=b 에서 소거법을 통해 역대입법 back subsitution 을 적용가능한 Ux=c 를 얻는다.
Ax=b 는 Lc=b 와 Ux=c 으로 나뉘어진다. 소거법으로 c 를 얻고 대입법으로 x 를 얻는다.
결국 x=U−1c=U−1L−1b=A−1b 인 해를 구할 수 있다.
여기서 모든 단계에서 추축은 0 이 아니어야 한다. 행렬 하삼각행렬 L 의 원소는 추축으로 나뉘기 때문이다.
그래서 기존 행렬의 행 순서대로 말고 행을 추축으로 지정하기위해서 치환행렬 P 를 도입한다.
행교환(치환)
코드로 구현할때, 보통 추축 지정은 가장 큰수로 지정한다. 가장 큰수로나눠야 오차가 적기 때문이다.
1 열의 추축행을 1 행이 아니라 다른 행으로 지정하고 소거법을 진행하면, A1 의 위치는 오른쪽아래가 아니라 다른 쪽에 위치하게 된다. 따라서 추축에 따라 행을 치환한 행렬 PA 를 만들고, PA=LU 를 만든다.
모든 n x n 가역행렬 A 는 PA=LU 를 만족한다. 이때 P 는 치환행렬이다.
EX) 1 행을 1 행으로, 2 행을 2 행으로, 3 행을 3 행으로 P123=[100010001]
EX) 3 행을 1 행으로, 1 행을 2 행으로, 2 행을 1 행으로 P312=[001100010]
모든 치환행렬의 역행렬은 PT 이고, 행교환은 Ax=b 양변에 곱해져 b 에도 적용된다. 컴퓨터에서는 행을 변경하지 않고, 치환행렬을 기억한다.
n x n 치환행렬은 n! 개 있고, 만일 A 에 종속인 행이 존재하면, 중간에 추축이 0 이 되어 소거법을 멈추게 된다.
https://jamboard.google.com/d/1a-sJf4RLP-UUd1ZwFA3KCWiouy8Lf0rrP8wojgBkjG0
로그인 - Google 계정
하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인
accounts.google.com
'선형머수학' 카테고리의 다른 글
6. 고유값과 고유벡터 (0) | 2022.04.11 |
---|---|
5. 직교행렬과 부분공간 (0) | 2022.04.09 |
3. 네 가지 기본 부분공간 (0) | 2022.04.06 |
2. 행렬 곱셈 AB (0) | 2022.04.05 |
1. 행렬 A 의 열을 이용한 곱셈 Ax (0) | 2022.04.04 |