기본 콘텐츠로 건너뛰기

라벨이 matrix_rank인 게시물 표시

[matplotlib]quiver()함수

[Linear Algebra]그람 슈미트(Gram-Schmidt) 과정

그람 슈미트(Gram-Schmidt) 과정 그람 슈미트 과정은 0이 아닌 $\mathbb{R}^n$의 부분공간에서 직교 또는 정규직교 기저 를 생성하는 단순한 알고리즘입니다. import numpy as np import numpy.linalg as LA from sympy import * 예 1) 부분공간 W = Span{x 1 , x 2 }일 때 W에 직교 기저인 {v 1 , v 2 }을 결정해 봅니다. $$x_1 =\begin{bmatrix}3\\6\\0\end{bmatrix},\quad x_2=\begin{bmatrix}1\\2\\2\end{bmatrix}$$ 그림 1은 두 기저벡터 x 1 과 x 2 에 의한 부분공간 W를 나타낸 것입니다. 즉, 두 벡터는 부분공간 W의 스판으로 W = Span{x 1 , x 2 }를 나타낸 것입니다. 그림 1. x 1 , x 2 를 기저벡터로 하는 부분공간 W. 그림 1에서 나타낸 것과 같이 부분공간 W에 직교벡터는 v 1 와 v 2 입니다. v 1 는 x 1 와 같으며 그 벡터 위로 x 2 의 정사영은 벡터 p입니다. 그러므로 x 2 는 식 2와 같이 계산됩니다. $$\tag{식 1}x_2 = v_2 + p$$ 기사 직교적 투영에서 소개한 식 4 와 5 를 적용하면 p와 v 2 는 식 2와 같이 계산됩니다. \begin{align} \tag{식 2} p&=\frac{x_2x_1}{x_1x_1}x_1\\v_2& = x_2- \frac{x_2x_1}{x_1x_1}x_1\end{align} 위 계산을 위한 코드는 다음과 같습니다. x1=np.array([3,6,0]).reshape(-1,1) print(x1) [[3] [6] [0]] x2=np.array([1,2,2]).reshape(-1,1) print(x2) [[1] [2] [2]] def orthoCoefS(x, y): x=np.dot(x.T, y) y=np.dot(y.T, y...

[Linear Algebra] 급수(Rank)

급수(Rank) 선형결합에 의해 생성되는 부분 공간 W의 차원 은 그 공간을 구성하는 기저(Basis) 벡터 의 수 입니다. 그 기저 벡터의 수를 급수(rank) 라고 합니다. 예 1) 다음 동차 방정식의 급수(rank)를 결정해 봅니다. 3x 1 + 6x 2 - x 3 + x 4 + 7x 5 = 0 x 1 - 2x 2 + 2x 3 + 3x 4 - x 5 = 0 2x 1 - x 2 + 5x 3 + 8x 4 - 4x 5 = 0 v1=np.array([3, 1, 2]) v2=np.array([6, -2, -1]) v3=np.array([-1, 2, 5]) v4=np.array([1, 3, 8]) v5=np.array([7, -1, -4]) c=np.zeros(3) aug=np.c_[v1, v2, v3, v4, v5, c] print(aug) [[ 3 6 -1 1 7 0] [ 1 -2 2 3 -1 0] [ 2 -1 5 8 -4 0]] print(np.array(Matrix(aug).rref()[0], dtype=float).round(2)) [[ 1. 0. 0. 0.45 2.03 0. ] [ 0. 1. 0. 0.18 -0.12 0. ] [ 0. 0. 1. 1.45 -1.64 0. ]] 위 결과에 의하면 피벗열은 0, 1, 2열이므로 이 열에 대응되는 열벡터들은 기저벡터가 됩니다. 그러므로 식 1과 같이 나타낼 수 있는 선형 시스템들은 모두 선형 독립 관계가 성립합니다. \begin{align}&\text{system 1}:\; \begin{bmatrix}3&6&-1\\1&-2&2\\2&-1&5\end{bmatrix}\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}=\begin{bmatrix}1\\3\\8\end{bmatrix}\\ ...