*3.7 LU -분해(Factorization)

chapter 3. 행렬과 행렬대수 (전자책)


 동영상 강의 주소: http://youtu.be/lKJPnLCiAVU


이 절에서는 주어진 행렬의 REF를 구하는 과정에서 시작하여 (정사각) 행렬을 하삼각행렬과 상삼각행렬의 곱으로 나타내는 방법을 학습한다. 이 방법은 연립방정식의 해를 구하는데 큰 힘을 발휘한다. 이 내용이 수치적 선형대수학의 시작이다.


3.7 연습문제


[1-2] -분해가 된 아래 연립방정식을 풀어라.


1.

Ans ,

,

,      


2.

Ans ,

 ∴

,    


[3-4] 다음에 주어진 행렬에 대하여 -분해를 구하여라.


3.

Ans # 소프트웨어를 이용한 계산은 이것과 다를 수 있다.

A=matrix(CDF,2, 2, [3, -6, -2, 5]);A
# 행렬의 기본을 두는 공간이 중요하다. CDF

[ 3.0 -6.0]

[-2.0 5.0]


P, L, U=A.LU()# P*A=L*U, 여기서 P는 치환행렬이다.

P

[1.0 0]

[ 0 1.0]


[ 1.0 0 ]

[-0.666666666667 1.0]


[ 3.0 -6.0]

[ 0 1.0]


L*U# P가 단위 행렬이므로 L*U는 A와 같다.

[ 3.0 -6.0]

[-2.0 5.0]       


4.

Ans  


5. 행렬 에 대하여 -분해가 아래와 같이 로 나타날 때, 연립방정식 의 해를 구하여라.

, ,

[도움말 : 전진대입법과 후진대입법을 사용하면 된다.]

Ans

L=matrix(3, 3, [1, 0, 0, -1, 1, 0, 0, -1, 1]);L

[ 1 0 0]

[-1 1 0]

[ 0 -1 1]


b=vector([2, -3, 4]);b# 전진대입법

(2, -3, 4)


y=L.solve_right(b);y 

(2, -1, 3)


U=matrix(3, 3, [1, -1, 0, 0, 1, -1, 0, 0, 1]);U

[ 1 -1 0]

[ 0 1 -1]

[ 0 0 1]


x=U.solve_right(y);x 

(4, 2, 3)


6. 라고 하자.

(a) Gauss-Jordan 소거법을 이용하여 를 구하여라.

(b) -분해를 하여라.

(c) 를 기본행렬들의 곱으로 표현하여라.

(d) 의 역행렬을 구하여라.

Ans (a)

(b)

(c)

 

(d)  


7. 이라 하자. 다음 물음에 답하여라.

(a) 를 만족하는 ,를 구하여라.

(b) , 가 각각 다음과 같을 경우 위의 를 이용하여 , 의 해를 각각 구하여라.

,

(c) -분해하여라.

Ans (a) ,

(b) ,

(c) 이다.    


[8-9] 아래 행렬 에 대하여 되게 하는 치환행렬 를 구하여라.


8.

Ans  


9.

Ans  


토론과 발표


P1. 다음의 행렬연산을 살펴보자.

여기서 는 치환행렬이다. 이 행렬이 의 모양을 어떻게 바꾸었는지 서술하여라.

Ans 치환 에 해당하는 permutation matrix이다. 를 하면 4번 행, 3번 행, 2번 행, 1번 행의 순서대로 행렬의 그 순서가 바뀐다.


P2. 가 대칭행렬이고 가역이면, 의 존재성과 어떤 연관관계가 있는지 서술하여라.

Ans 가 대칭행렬이고 가역이면, 대각성분이 모두 이 아니다. 따라서 첫 번째 성분이 이 아니기 때문에 에 적당한 치환행렬을 가해주지 않아도 일반성을 잃지 않고 로 쓸 수 있다.     


P3. 예제 01을 이용하여 -분해가 유일하지 않다는 것을 증명하여라.

Ans -분해가 된 경우 의 각 행에 2를 곱해주고, 의 각 행을 2로 나누어주면 결과는 같다. 같은 방법으로 다양한 -분해를 얻을 수 있다.      


P4. 대칭행렬 의 경우 이면 이므로 로 쓸 수 있다. 이를 이용하여 다음에 주어진 대칭행렬에 대하여 로 표현할 수 있음을 확인하여라.

(a) (b)

Ans (a)

(b)

만일 이고 라면 로 분해를 하려면 이어야 한다 (i.e., ). 


P5. -분해 또는 PLU-분해를 이용하여 선형연립방정식 , , 을 풀어라.

, ,

Ans

A=matrix(CDF,4, 4, [6,2,-1,1,2,7,1,-1,3,-1,5,2,4,3,2,-8]);A

P, L, U=A.LU()# P*A=L*U, P는 치환행렬이다.

A=L*U

L.n(digits=3)# 유효숫자 3자리

P는 항등행렬이고, L이 프린트 된다.

U.n(digits=3)# 유효숫자 3자리

L이 프린트 된다.


L*U 

다시 A가 프린트 된다.

이 L과 U를 이용하여 를 푼다.



실습: