행렬을 가우스 행렬의 형태로 바꿀 때 곱하는 수를 기억해야 한다. 이때, 행렬 A의 주 대각 원소를 1로 바꾸기 위해 곱하는 수의 역수는 행렬 L의 주 대각 원소가 된다. 그리고 행렬 A의 주 대각 원소 아래에 위치한 원소를 0으로 만들기 위해 필요한 배수의 음수를 행렬 L의 위치에 놓는다.
1. 먼저 1행 1열의 원소를 1로 만들기 위해 1행에 1/2를 곱한다. 이를 계산하면 다음과 같다.
이는 주대각 원소를 1로 바꾸기 위한 연산이였으므로 앞서 곱한 수 1/2의 역수인 2가 행렬의 1행 1열 원소가 된다.
2. 3행 1열 원소를 0으로 만들기 위해 3행에 1행을 더한다. 이때, 1행에 따로 곱하는 수는 없으므로 배수는 1에 해당한다.
3행 1열의 원소는 주 대각 원소가 아닌 주 대각 원소 아래에 위치하므로 해당 원소를 0으로 만들기 위한 배수의 음수인 -1을 행렬의 3행 1열 원소에 넣는다.
3. 2행 2열 원소를 1로 만들기 위해 2행에 -1/2을 곱한다.
4. 3행 2열 원소를 0으로 만들기 위해 2행에 -4를 곱하고 3행에 더한다.
5. 마지막으로 3행 3열 원소를 1로 만들기 위해 3행에 1/5를 곱해준다.
위 행렬을 보면 기존 행렬 A를 가우스 행렬로 변형시킨 것을 알 수 있으며 위 행렬이 LU분해의 U행렬에 해당한다.
scipy 실습
import numpy as np
from scipy.linalg import lu
A=np.array([[2,-2,-2],[0,-2,2],[-1,5,2]])
P,L,U=lu(A)
print(L)
'''
[[ 1. 0. 0. ]
[-0.5 1. 0. ]
[ 0. -0.5 1. ]]
'''
print(U)
'''
[[ 2. -2. -2. ]
[ 0. 4. 1. ]
[ 0. 0. 2.5]]
'''
'Mathematics > Linear algebra' 카테고리의 다른 글
텐서 (0) | 2022.03.03 |
---|---|
행렬의 이차식 (0) | 2022.03.03 |
LU분해 (0) | 2022.03.03 |
기본 행렬 (0) | 2022.03.03 |
대각화, 고윳값 분해, 특이값 분해 (0) | 2022.03.01 |