LU 분해 (영어 : LU decomposition / factorization )는 행렬을 하삼각행렬 L 과 상삼각행렬 U 의 곱으로 표현하는 수치해석학 의 기술이다. 때때로 치환행렬 P 도 여기 추가하여 표현하기도 한다. 가우스 소거법 을 행렬로 표현한 것으로 이해할 수 있다. 컴퓨터가 연립 일차 방정식 문제를 풀 때 이 방식을 사용하며, 역행렬 과 행렬식 을 구할 때에도 사용한다. 1938년 폴란드 의 수학자 타데우스 바나히에비츠 (영어판 ) 에 의해 처음 사용되었으며, 앨런 튜링 에 의해 공학 분야에서 적극적으로 응용되기 시작했다.[ 1]
일반적인 정사각행렬 A 를 LU분해한다면 다음과 같이 쓸 수 있다.
A = LU
3x3 행렬
A
{\displaystyle \,A\,}
를 LU 분해하면 다음과 같이 되는 것이다.
[
a
11
a
12
a
13
a
21
a
22
a
23
a
31
a
32
a
33
]
=
[
l
11
0
0
l
21
l
22
0
l
31
l
32
l
33
]
[
u
11
u
12
u
13
0
u
22
u
23
0
0
u
33
]
{\displaystyle {\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{bmatrix}}={\begin{bmatrix}l_{11}&0&0\\l_{21}&l_{22}&0\\l_{31}&l_{32}&l_{33}\end{bmatrix}}{\begin{bmatrix}u_{11}&u_{12}&u_{13}\\0&u_{22}&u_{23}\\0&0&u_{33}\end{bmatrix}}}
행렬의 성분들을 적절하게 정렬해주지 않으면 LU 분해를 처음 의도한 목적대로 사용할 수 없게 될 수도 있다. 가령
a
11
=
0
{\textstyle a_{11}=0}
이라면
a
11
=
l
11
u
11
{\textstyle a_{11}=l_{11}u_{11}}
이므로
l
11
{\textstyle l_{11}}
과
u
11
{\textstyle u_{11}}
둘 중 하나는 0이 되어야 하는데, 이는 최소 L 이나 U 둘 중 하나는 비가역행렬이라는 것을 의미한다. 만일 A 가 가역행렬 이라면 불가능한 일이다. 이런 경우에 애당초 바로 LU 분해가 불가능하다. 따라서 A 의 첫 번째 성분에 0이 아닌 다른 수가 오도록 행교환을 해주어야 한다.
부분적 추축(partial pivoting)[ 편집 ]
위에서 살펴본 바와 같이 적절한 행 또는 열 교환이 필요한 경우, 치환행렬 P 를 추가하게 되며 이를 LUP 분해라고 한다. 기존의 A 가 바로 분해되지 않기 때문에 행을 교환하기 위해 P A 를 LU분해한다. 이 때
PA = LU
이렇게 쓸 수 있다. 모든 정사각행렬은 LUP가 가능하며,[ 2] 산술적인 결과도 잘 부합한다.[ 3]
완전 추축이라는 것은 열뿐만 아니라 행의 순서도 바꿔주는 것을 의미한다. 이 때 행을 바꿔주기 위한 치환행렬 Q 를 포함해서 다음과 같이 쓸 수 있다.
PAQ = LU [ 4]
LDU 분해는 대각 행렬 D 를 추가하여 다음과 같이 분해하는 것이다.
A = LDU
모든 정사각행렬 A 는 LUP 분해가 가능하다.[ 5] A 가 가역행렬 인 경우 모든 선도주소행렬식 (leading principal minor)이 0이 아닌 값을 가지게 되는데, 이런 경우 P 없이 LU 분해가 바로 가능하다.[ 6] 만일 A 가 랭크 k인 비가역 행렬이라면, 처음 k개의 선도주소행렬식이 0이 아닌 경우에 한해 LU 분해가 가능하다. 역은 성립하지 않는다.[ 7]
만일 정사각행렬이며 가역행렬인 A 가 LDU 분해될 수 있다면, 그 경우의 수는 유일하다.[ 6] 따라서 L이나 U 중 하나의 주대각선 이 1이어야 한다고 하면 LU 분해도 유일하다고 할 수 있다.
[
4
3
6
3
]
=
[
1
0
l
21
1
]
[
u
11
u
12
0
u
22
]
{\displaystyle {\begin{bmatrix}4&3\\6&3\end{bmatrix}}={\begin{bmatrix}1&0\\l_{21}&1\end{bmatrix}}{\begin{bmatrix}u_{11}&u_{12}\\0&u_{22}\end{bmatrix}}}
하삼각행렬 L 의 주대각선 을
1
{\displaystyle 1}
로 놓음으로써 다음과 같이 쓸 수 있다.
1
⋅
u
11
+
0
⋅
0
=
4
1
⋅
u
12
+
0
⋅
u
22
=
3
l
21
⋅
u
11
+
1
⋅
0
=
6
l
21
⋅
u
12
+
1
⋅
u
22
=
3
{\displaystyle {\begin{aligned}1\cdot u_{11}+0\cdot 0&=4\\1\cdot u_{12}+0\cdot u_{22}&=3\\l_{21}\cdot u_{11}+1\cdot 0&=6\\l_{21}\cdot u_{12}+1\cdot u_{22}&=3\end{aligned}}}
이를 차례로 계산하여 다음의 결과를 얻을 수 있다.
l
21
=
1.5
u
11
=
4
u
12
=
3
u
22
=
−
1.5
{\displaystyle {\begin{aligned}l_{21}&=1.5\\u_{11}&=4\\u_{12}&=3\\u_{22}&=-1.5\end{aligned}}}
따라서 다음과 같이 분해된다.
[
4
3
6
3
]
=
[
1
0
1.5
1
]
[
4
3
0
−
1.5
]
{\displaystyle {\begin{bmatrix}4&3\\6&3\end{bmatrix}}={\begin{bmatrix}1&0\\1.5&1\end{bmatrix}}{\begin{bmatrix}4&3\\0&-1.5\end{bmatrix}}}
L
U
{\displaystyle LU}
분해[ 편집 ]
사다리꼴행렬 을 이용한
L
U
{\displaystyle LU}
분해
I
=
(
1
0
0
0
1
0
0
0
1
)
,
A
=
(
2
1
1
4
−
6
0
−
2
7
2
)
{\displaystyle I={\begin{pmatrix}1&0&0\\0&1&0\\0&0&1\end{pmatrix}},A={\begin{pmatrix}2&1&1\\4&-6&0\\-2&7&2\end{pmatrix}}}
(
1
0
0
2
1
0
0
0
1
)
(
2
1
1
0
−
8
−
2
−
2
7
2
)
{\displaystyle {\begin{pmatrix}1&0&0\\2&1&0\\0&0&1\end{pmatrix}}{\begin{pmatrix}2&1&1\\0&-8&-2\\-2&7&2\end{pmatrix}}}
(
1
0
0
2
1
0
−
1
0
1
)
(
2
1
1
0
−
8
−
2
0
8
3
)
{\displaystyle {\begin{pmatrix}1&0&0\\2&1&0\\-1&0&1\end{pmatrix}}{\begin{pmatrix}2&1&1\\0&-8&-2\\0&8&3\end{pmatrix}}}
(
1
0
0
2
1
0
−
1
−
1
1
)
(
2
1
1
0
−
8
−
2
0
0
1
)
{\displaystyle {\begin{pmatrix}1&0&0\\2&1&0\\-1&-1&1\end{pmatrix}}{\begin{pmatrix}2&1&1\\0&-8&-2\\0&0&1\end{pmatrix}}}
L
=
(
1
0
0
2
1
0
−
1
−
1
1
)
U
=
(
2
1
1
0
−
8
−
2
0
0
1
)
{\displaystyle L={\begin{pmatrix}1&0&0\\2&1&0\\-1&-1&1\end{pmatrix}}U={\begin{pmatrix}2&1&1\\0&-8&-2\\0&0&1\end{pmatrix}}}
L
U
=
A
{\displaystyle LU=A}
이다.
가우스 소거법 을 사용해서,
다음과 같은 행렬
M
{\displaystyle M}
의 단위행렬
I
{\displaystyle I}
을 첨가 행렬 로 계산하면,
역행렬
M
−
1
{\displaystyle M^{-1}}
를 얻을수있다.
M
=
(
−
1
1
2
3
−
1
1
−
1
3
4
)
{\displaystyle M={\begin{pmatrix}-1&1&2\\3&-1&1\\-1&3&4\end{pmatrix}}}
기본행연산 을 가하면, 다음과 같다.
(
I
|
M
)
→
(
1
0
0
0
1
0
0
0
1
|
−
1
1
2
3
−
1
1
−
1
3
4
)
→
(
1
0
0
3
1
0
−
1
0
1
|
−
1
1
2
0
2
7
0
2
2
)
→
(
1
0
0
3
1
0
−
4
−
1
1
|
−
1
1
2
0
2
7
0
0
−
5
)
→
(
−
1
0
0
1.5
0.5
0
0.8
0.2
−
0.2
|
1
−
1
−
2
0
1
3.5
0
0
1
)
→
(
0.6
0.4
−
0.4
−
1.3
−
0.2
0.7
0.8
0.2
−
0.2
|
1
−
1
0
0
1
0
0
0
1
)
→
(
−
0.7
0.2
0.3
−
1.3
−
0.2
0.7
0.8
0.2
−
0.2
|
1
0
0
0
1
0
0
0
1
)
{\displaystyle {\begin{aligned}{\begin{pmatrix}\ I&\vert &M\end{pmatrix}}&\to \left(\left.{\begin{matrix}1&0&0\\0&1&0\\0&0&1\\\end{matrix}}\ \ \right|\ \ {\begin{matrix}-1&1&2\\3&-1&1\\-1&3&4\\\end{matrix}}\right)\\&\to \left(\left.{\begin{matrix}1&0&0\\3&1&0\\-1&0&1\\\end{matrix}}\right|{\begin{matrix}-1&1&2\\0&2&7\\0&2&2\\\end{matrix}}\right)\\&\to \left(\left.{\begin{matrix}1&{\color {red}{0}}&{\color {red}{0}}\\3&1&{\color {red}{0}}\\-4&-1&1\\\end{matrix}}\right|{\begin{matrix}-1&1&2\\{\color {red}{0}}&2&7\\{\color {red}{0}}&{\color {red}{0}}&-5\\\end{matrix}}\right)\\&\to \left(\left.{\begin{matrix}-1&{0}&{0}\\1.5&0.5&{0}\\0.8&0.2&-0.2\\\end{matrix}}\right|{\begin{matrix}1&-1&-2\\{0}&1&3.5\\{0}&{0}&1\\\end{matrix}}\right)\\&\to \left(\left.{\begin{matrix}0.6&0.4&-0.4\\-1.3&-0.2&0.7\\0.8&0.2&-0.2\\\end{matrix}}\ \ \right|\ \ {\begin{matrix}1&-1&0\\0&1&0\\0&0&1\\\end{matrix}}\right)\\&\to \left(\left.{\begin{matrix}-0.7&0.2&0.3\\-1.3&-0.2&0.7\\0.8&0.2&-0.2\\\end{matrix}}\ \ \right|\ \ {\begin{matrix}1&0&0\\0&1&0\\0&0&1\\\end{matrix}}\right)\end{aligned}}}
따라서
M
−
1
{\displaystyle M^{-1}}
은 다음과 같다.
M
−
1
=
(
−
0.7
0.2
0.3
−
1.3
−
0.2
0.7
0.8
0.2
−
0.2
)
{\displaystyle M^{-1}={\begin{pmatrix}-0.7&0.2&0.3\\-1.3&-0.2&0.7\\0.8&0.2&-0.2\end{pmatrix}}}
사다리꼴행렬의 역행렬 중간 과정은 유사한 LU 분해를 보여주지만
그러나, 이것은 완전한 LU 분해가 아니다.
(
1
0
0
3
1
0
−
4
−
1
1
|
−
1
1
2
0
2
7
0
0
−
5
)
=
(
1
0
0
3
1
0
−
4
−
1
1
)
(
−
1
1
2
0
2
7
0
0
−
5
)
≠
(
−
1
1
2
3
−
1
1
−
1
3
4
)
=
M
{\displaystyle \left(\left.{\begin{matrix}1&{\color {red}{0}}&{\color {red}{0}}\\3&1&{\color {red}{0}}\\-4&-1&1\\\end{matrix}}\right|{\begin{matrix}-1&1&2\\{\color {red}{0}}&2&7\\{\color {red}{0}}&{\color {red}{0}}&-5\\\end{matrix}}\right)={\begin{pmatrix}1&{\color {red}{0}}&{\color {red}{0}}\\3&1&{\color {red}{0}}\\-4&-1&1\\\end{pmatrix}}{\begin{pmatrix}-1&1&2\\{\color {red}{0}}&2&7\\{\color {red}{0}}&{\color {red}{0}}&-5\\\end{pmatrix}}\neq {\begin{pmatrix}-1&1&2\\3&-1&1\\-1&3&4\end{pmatrix}}=M}
그러나 이러한 역행렬 과정을 통해 추가적인 조작으로
L
U
{\displaystyle LU}
분해를 유도할 수 있다.
다음 선형 연립방정식이 주어져 있다.
A
x
=
b
{\displaystyle Ax=b}
계수 행렬
A
{\displaystyle A}
를 행 교환을 허용한 가우스 소거법을 통해 LU 분해하면 다음과 같은 꼴로 분해된다. 여기서
P
{\displaystyle P}
는 치환행렬 이다.
P
A
=
L
U
{\displaystyle PA=LU}
따라서 연립방정식은 다음과 같이 나타낼 수 있다.
P
A
x
=
P
b
⟺
L
U
x
=
P
b
{\displaystyle PAx=Pb\iff LUx=Pb}
연립방정식의 해는 2단계에 걸쳐서 풀이한다.
전진 대입 :
L
y
=
P
b
{\displaystyle Ly=Pb}
를 y에 대해 풀고,
후진 대입 :
U
x
=
y
{\displaystyle Ux=y}
를 x에 대해서 푼다.
LU 분해를 통한 풀이는 계수 행렬이 같고
b
{\displaystyle b}
만이 달라질 때, 매번 첨가행렬의 가우스 소거법을 통해 연립방정식의 해를 구하는 것보다 간편하다. 그러나 LU 분해를 하는 과정 자체는 가우스 소거법과 동일한 과정을 거치게 된다.
삼각행렬 의 행렬식 은 주대각 성분의 곱이 행렬식과 같다는 점을 이용하면 LU 분해를 통해 행렬식을 쉽게 계산할 수 있다. 치환행렬은
P
−
1
=
P
T
{\displaystyle P^{-1}=P^{T}}
를 만족하는 직교 행렬이므로
det
P
−
1
=
det
P
{\displaystyle \det {P^{-1}}=\det {P}}
이라는 점을 이용할 수 있다.
P
A
=
L
U
⟹
A
=
P
−
1
L
U
⟹
det
A
=
det
P
det
L
det
U
=
(
−
1
)
S
(
∏
i
=
1
n
l
i
i
)
(
∏
i
=
1
n
u
i
i
)
{\displaystyle PA=LU\implies A=P^{-1}LU\implies \det {A}=\det {P}\det {L}\det {U}=(-1)^{S}\left(\prod _{i=1}^{n}l_{ii}\right)\left(\prod _{i=1}^{n}u_{ii}\right)}
여기서 S 는 LU 분해를 할 때 행 교환을 시행한 횟수이다.