Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 31

공학수치해석 1

LU Decomposition

2023.10.11.
20191860 이현우
목차
• 1. LU Decomposition
• 2. Code Review
• 3. Inverse Matrix
1. LU Decomposition

L -> Lower Triangular Matrix


A L U U -> Upper Triangular Matrix

[ [ ] ] ]
1 1 0 1
0
0 0
0
0 00 0
0.033 0 1
0 0.10
0
1
0
0
0
1

1
0
0
0
1
0
00
01
0
0
0 0 0 0
0
0 0
0
1 0.111
1 1
1. LU Decomposition
1. LU Decomposition
2. Code Review
2. Code Review

A x b
[0][0] [0][1] [0][2] [0][3] [0][4] [0] [0]

[1][0] [1][1] [1][2] [1][3] [1][4] [1] [1]

3 -0.1 -0.2 0.2 X1 8.25


[2][0] [2][1] [2][2] [2][3] [2][4] [2] [2]

0.1 7 -0.3 0.5 X2 -18.3


[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]

0.3 -0.2 10 20 X3 111.4


[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]

1 1 1 1 X4 9.5
2. Code Review

1) k 가 1 부터 3 까지 증가하는 동안
2) i 는 2 부터 4 까지 증가하고

3) i 번째 행의 j 번째 원소들을 각각 빼줌
2. Code Review
[0][0] [0][1] [0][2] [0][3] [0][4] [0] [0]

1) K =1 일때 , i = 2 부터 시작 a[2][1] 을 소거하기 위해
[1][0] [1][1] [1][2] a[2][1]/a[1][1]
[1][3] 을 factor 로 만들고
[1][4] [1] factor 를 저장 [1]

3 -0.1 -0.2 0.2 X1 8.25


[2][0] [2][1] [2][2] [2][3] [2][4] [2] [2]

0.1 7 -0.3 0.5 X2 -18.3


[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]

0.3 -0.2 10 20 X3 111.4


[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]

1 1 1 1 X4 9.5
2. Code Review
[0][0] [0][1] [0][2] [0][3] [0][4] [0] [0]

1) K =1 일때 , i = 2 부터 시작 a[2][1] 을 소거하기 위해
[1][0] [1][1] [1][2] a[2][1]/a[1][1]
[1][3] 을 factor 로 만들고
[1][4] [1] factor 를 a[2][1] [1]
자리에 저장 (factor = a[2][1] = 0.033)
3 -0.1 -0.2 0.2 X1 8.25
[2][0] [2][1] [2][2] [2][3] [2][4] [2] [2]

0.033 7.033 -0.233 0.493 X2’ -18.3


[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]
2) a[2][1] 을 소거하고
0.3 -0.2 10 3) 나머지 20 같은 열 계산X3 111.4
[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]

1 1 1 1 X4 9.5
2. Code Review
[0][0] [0][1] [0][2] [0][3] [0][4] [0] [0]

[1][0] [1][1] [1][2] [1][3] [1][4] [1] [1]

3 -0.1 일때 , i = 20.2
1) K =1-0.2 부터 시작 a[3][1]
X1 을 소거하기 위해 8.25
[2][0] [2][1] [2][2] a[3][1]/a[1][1]
[2][3] 을 factor 로 만들고
[2][4] [2] factor 를 a[3][1] [2]
자리에 저장 (factor = a[3][1] = 0.1)
0.033 7.033 -0.233 0.493 X2’ -18.3
[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]

0.1 -0.19 10.02 19.98 X3’ 111.4


[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]
2) a[3][1] 을 소거하고
3) 나머지 같은 열 계산
1 1 1 1 X4 9.5
2. Code Review
[0][0] [0][1] [0][2] [0][3] [0][4] [0] [0]

[1][0] [1][1] [1][2] [1][3] [1][4] [1] [1]

3 -0.1 -0.2 0.2 X1 8.25


[2][0] [2][1] [2][2] [2][3] [2][4] [2] [2]

0.033 7.033 -0.233 0.493 X2’ -18.3


[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]

0.1 -0.19 10.02 19.98 X3’ 111.4


[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]

0.333 1 1 1 X4 9.5
2. Code Review
[0][0] [0][1] [0][2] [0][3] [0][4] [0] [0]

[1][0] [1][1] [1][2] [1][3] [1][4] [1] [1]

3 -0.1 -0.21) K =20.2


일때 , i= 3 부터X1시작 a[3][2] 을 소거하기 8.25
위해
[2][0] [2][1] [2][2] [2][3] a[3][2]/a[2][2]
[2][4] 을 factor
[2] 로 만들고 factor 를 [2]
a[3][2]
자리에 저장 (factor = a[3][2] = -0.027)
0.033 7.033 -0.233 0.493 X2’ -18.3
[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]

0.1 -0.027 10.02 19.98 X3’ 111.4


[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]
2) a[3][2] 을 소거하고
3) 나머지 같은 열 계산
0.333 a’ a’’ a’’’’ X4 9.5
2. Code Review
[0][0] [0][1] [0][2] [0][3] [0][4] [0] [0]

[1][0] [1][1] [1][2] [1][3] [1][4] [1] [1]

3 -0.1 -0.2 0.2 X1 8.25


[2][0] [2][1] [2][2] [2][3] [2][4] [2] [2]

0.033 7.033 -0.233 0.493 X2’ -18.3


[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]

0.1 -0.027 10.02 19.98 X3’ 111.4


[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]

0.333 0.147 a’’ a’’’’ X4 9.5


2. Code Review
[0][0] [0][1] [0][2] [0][3] [0][4] [0] [0]

[1][0] [1][1] [1][2] [1][3] [1][4] [1] [1]

3 -0.1 -0.2 0.2 X1 8.25


[2][0] [2][1] [2][2] [2][3] [2][4] [2] [2]

0.033 7.033 -0.233 0.493 X2’ -18.3


[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]

0.1 -0.027 10.02 19.98 X3’ 111.4


[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]

0.333 0.147 a’’ a’’’’ X4 9.5


2. Code Review
[0][0] [0][1] [0][2] [0][3] [0][4] [0] [0]

[1][0] [1][1] [1][2] [1][3] [1][4] [1] [1]

3 -0.1 -0.2 0.2 X1 8.25


[2][0] [2][1] [2][2] [2][3] [2][4] [2] [2]

0.033 7.033 -0.233 0.493 X2’ -18.3


[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]

0.1 -0.027 1.001 19.993 X3’ 111.4


[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]

0.333 0.147 0.111 a’’’’ X4 9.5


2. Code Review
[0][0] [0][1] [0][2] [0][3] [0][4] [0] [0]

[1][0] [1][1] [1][2] [1][3] [1][4] [1] [1]

3 -0.1 -0.2 0.2 X1 8.25


[2][0] [2][1] [2][2] [2][3] [2][4] [2] [2]

0.033 7.033 -0.293 0.493 X2 -18.3


[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]

0.1 -0.027 1.001 19.993 X3 111.4


[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]

0.333 0.147 0.111 -1.356 X4 9.5


2. Code Review

[ ]
3 − 0.1 − 0.2 0.2
0.1 7 − 0.3 0.5
𝐴= = 𝐿𝑈
0.3 − 0.2 10 20
1 1 1 1

[ [ ] ]
1 0 0 3 −0.1
0 −0.2 0.2
0.033 1 0 0 7.033
0 −0.293 0.493
0.1 − 0.027 1 0 00 1.001 19.993

L U
0.333 0.147 0.111 0 10 0 −1.356
2. Code Review

1) b 에서 d 를 구하는 과정

2) d 를 통해 x 를 구하는 과정
2. Code Review
[0][0] [0][1] [0][2] [0][3] [0][4] [0] [0]

[1][0] [1][1] [1][2] [1][3] [1][4] [1] [1]

3 -0.1 -0.2 0.2 X1 8.25


1) A 행렬에서 뺀 만큼 b 벡터에서도 빼줌
[2][0] [2][1] [2][2] [2][3] [2][4] [2] [2]

0.033 7.033 -0.293 0.493 X2 -18.575


2) A 행렬에서 뺀 만큼 b 벡터에서도 빼줌
[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]

0.1 -0.027 1.001 19.993 X3 110.071


3) A 행렬에서 뺀 만큼 b 벡터에서도 빼줌
[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]

0.333 0.147 0.111 -1.356 X4 -2.712


2. Code Review

X
[0][0] [0][1] [0][2] [0][3] [0][4] [0] [0]

[1][0] [1][1] [1][2] [1][3] [1][4] [1] [1]

U d
3 -0.1 -0.2 0.2 3 8.25
[2][0] [2][1] [2][2] [2][3] [2][4] [2] [2]

0.033 7.033 -0.293 0.493 -2.5 -18.575

L
[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]

0.1 -0.027 1.001 19.993 7 110.071


[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]

0.333 0.147 0.111 -1.356 2 -2.712


2. Code Review
3. Inverse Matrix
3. Inverse Matrix AX = B = I
X=

[0][0]

[1][0]
[0][1]

[1][1] A
[0][2]

[1][2]
[0][3]

[1][3]
[0][4]

[1][4]
𝑥1 𝑏1 [0]

[1]
[0]

[1]

3 -0.1 -0.2 0.2 X1 1


[2][0] [2][1] [2][2] [2][3] [2][4] [2] [2]

0.1 7 -0.3 0.5 X2 0


[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]

0.3 -0.2 10 20 X3 0
[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]

1 1 1 1 X4 0
3. Inverse Matrix AX = B = I
X=

[0][0]

[1][0]
[0][1]

[1][1] A
[0][2]

[1][2]
[0][3]

[1][3]
[0][4]

[1][4]
𝑥 2 𝑏2[0]

[1]
[0]

[1]

3 -0.1 -0.2 0.2 X1 0


[2][0] [2][1] [2][2] [2][3] [2][4] [2] [2]

0.1 7 -0.3 0.5 X2 1


[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]

0.3 -0.2 10 20 X3 0
[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]

1 1 1 1 X4 0
3. Inverse Matrix AX = B = I
X=

[0][0]

[1][0]
[0][1]

[1][1] A
[0][2]

[1][2]
[0][3]

[1][3]
[0][4]

[1][4]
𝑥 3 𝑏3[0]

[1]
[0]

[1]

3 -0.1 -0.2 0.2 X1 0


[2][0] [2][1] [2][2] [2][3] [2][4] [2] [2]

0.1 7 -0.3 0.5 X2 1


[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]

0.3 -0.2 10 20 X3 1
[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]

1 1 1 1 X4 0
3. Inverse Matrix AX = B = I
X=

[0][0]

[1][0]
[0][1]

[1][1] A
[0][2]

[1][2]
[0][3]

[1][3]
[0][4]

[1][4]
𝑥 4 𝑏4[0]

[1]
[0]

[1]

3 -0.1 -0.2 0.2 X1 0


[2][0] [2][1] [2][2] [2][3] [2][4] [2] [2]

0.1 7 -0.3 0.5 X2 1


[3][0] [3][1] [3][2] [3][3] [3][4] [3] [3]

0.3 -0.2 10 20 X3 0
[4][0] [4][1] [4][2] [4][3] [4][4] [4] [4]

1 1 1 1 X4 1
3. Inverse Matrix

𝑥1𝑥 21𝑥 3𝑥 4
[0]

[1]
[0]

[1]
[0]

[1]
[0]

[1]

X1 X1 X1 X1

=X=
[2] [2] [2] [2]

X2 X2 X2 X2
[3] [3] [3] [3]

X3 X3 X3 X3
[4] [4] [4] [4]

X4 X4 X4 X4
3. Inverse Matrix

새로운 loop 를 만들어서 b 를 변화

구한 x 값을 첫번째 열에 저장
3. Inverse Matrix
Matlab 으로 구한 역행렬

C++ 로 구한 역행렬
감사합니다

You might also like