Loading [MathJax]/jax/output/CommonHTML/jax.js

선형머수학

4. 소거법과 A=LU

hwijin97 2022. 4. 9. 13:09

기본적인 문제 Ax=b 의 해를 구하기 위해, 대수적으로 방정식을 단순화 하여 문제를 해결하는 법을 알아본다.


n x n 행렬 An x 1 열벡터 b 가 있을때, x1 ~ xn1 까지 소거해 Anxn=bn 을 얻고, 차례로 x2, x1 을 구할 수 있다.

 

이 과정을 랭크가 1인 행렬 관점에서 소거법을 살펴보면, 위의 과정은 행렬 lu 를 제거하는 과정이다. 행렬 A는 랭크가 1 인 행렬들의 합이고 이는 A=LU로 표현할 수 있다.  ( L : 하삼각행렬, U : 상삼각행렬 )

A=LU는 행교환이 없는 소거법 행렬의 표현으로, 대수학적 접근이다. ( 연립방정식 )

 


EX) [1223][xy]=[19] 

 

  • 대수학적 접근 풀이.

x2y=1 , 2x+3y=9 두 방정식을 연립해서 풀면, 두개의 직선이 만나는점 x=3, y=1 의 해를 구할수 있고,

미지수 x 를 제거하면 위의 식이 $ [1207][xy] = [17] $  이 된다.

이 방법은 n=2 에서는 시각화하기 쉬웠지만, n 이 높아질수록 시각화와 해를 찾기 어려워진다.

 

  • 열 관점에서의 풀이.

AxA의 열들의 일차결합이다. 따라서 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=a21a11l31=a31a11, ... 들을 곱해 소거함으로써 4 x 4 문제를 3 x 3 문제로 축소한다. 즉 랭크가 1 인 행렬 l1u1 를 분리한다.

 

A=l1u1+[0A2] 

l1u1=[1 row][1l21ln1]

 

이후 위와 비슷하게 랭크가 1 인 행렬 liui 를 분리한다.

liui=[i row][01lni]

 

이 랭크가 1 인행렬들을 모아보면,

A=l1u1++lnun=[100l21101n11n21]U=LU 

 

소거법은 행렬 A=LU 를 하삼각행렬 L 과 상삼각행렬 U의 곱으로 분해한다.
  • n1 개의 방정식에서 x1을 제거하여 문제의 크기를 n 에서 n1으로 줄인다.
  • i 행 ( 추축행 ) 의 배수를 뺐고, 제거한 행렬의 랭크는 1 이다.
  • n 단계 이후, 전체 행렬 An 개의 랭크 1 행렬들의 합이다.
  • 그 합은 LU의 곱셈이다.

Ax=b 의 해법

 

Ax=b 의 해를 구하기위해해서  bA의 열에 추가한 새로운행렬 [Ab] 으로 취급한다.

[Ab]=[LUb] 행렬에 소거법을 진행하여

[UL1b]=[Uc] A 를 상삼각행렬 U 로 소거하는 단계중 bc 로 바뀐다.

Ax=b 에서 소거법을 통해 역대입법  back subsitution 을 적용가능한 Ux=c 를 얻는다.

Ax=bLc=bUx=c 으로 나뉘어진다. 소거법으로 c 를 얻고 대입법으로 x 를 얻는다.

결국 x=U1c=U1L1b=A1b 인 해를 구할 수 있다.

여기서 모든 단계에서 추축은 0 이 아니어야 한다. 행렬 하삼각행렬 L 의 원소는 추축으로 나뉘기 때문이다.

그래서 기존 행렬의 행 순서대로 말고 행을 추축으로 지정하기위해서 치환행렬 P 를 도입한다.


행교환(치환)

 

코드로 구현할때, 보통 추축 지정은 가장 큰수로 지정한다. 가장 큰수로나눠야 오차가 적기 때문이다. 

1 열의 추축행을 1 행이 아니라 다른 행으로 지정하고 소거법을 진행하면, A1 의 위치는 오른쪽아래가 아니라 다른 쪽에 위치하게 된다. 따라서 추축에 따라 행을 치환한 행렬 PA 를 만들고, PA=LU 를 만든다.

모든 n x n 가역행렬 APA=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