기본 콘텐츠로 건너뛰기

라벨이 qr()인 게시물 표시

[matplotlib]quiver()함수

[Linear Algebra] QR 분해(Decomposition)

QR 분해(Decomposition) 임의의 벡터와 관련된 직교 벡터를 계산하기 위해 Gram-Schmidt 과정을 적용하였습니다. 이 과정을 사용하여 식 1과 같이 행렬을 구성하는 벡터들의 직교벡터들로 구성된 직교행렬과 그에 대응하는 행렬로 분해될 수 있습니다. 이러한 분해를 QR 분해(Decomposition) 라고 합니다. 즉, m × n 형태의 행렬 A가 선형독립이라면 식 1과 같이 분해할 수 있습니다. $$\begin{align}\tag{식 1} \text{A} = \text{QR} \end{align}$$ Q: 열공간 A에 정규직교인 m×n 차원의 행렬 (Col A) R: n×n 차원의 상삼각 역행렬, 대각원소는 양수입니다. 예 1) 다음 행렬 A의 QR 분해를 계산합니다. $$A=\begin{bmatrix} 1& 0 & 0 \\1& 1& 0\\1& 1& 1\\1& 1 & 1 \end{bmatrix}$$ 행렬 A를 구성하는 열 벡터들이 기저벡터인지를 확인합니다. 즉, 선형독립인지를 확인합니다. rref() 메서드를 적용합니다. import numpy as np import numpy.linalg as la from sympy import * A=np.array([[1,0,0],[1,1,0],[1,1,1], [1,1,1]]) Matrix(A).rref() (Matrix([ [1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 0, 0]]), (0, 1, 2)) 위 결과에 의하면 A의 모든 열벡터들이 기저 벡터 입니다. 각 벡터들에 직교 기저는 Gram-Schmidt 과정 을 적용하여 계산할 수 있습니다. a1, a2, a3=A[:,0], A[:,1], A[:,2] v1=a1 v2=a2-(a2@v1)/(v1@v1)*v1 print(v1) print(v2) [1 1 1 1] [-0.75 0.2...