기본 콘텐츠로 건너뛰기

라벨이 orthogonal인 게시물 표시

[matplotlib]quiver()함수

[Linear Algebra] 직교적 투영(Orthogonal Projection)

직교적 투영(Orthogonal Projection) 그림 1의 벡터 b proj 는 벡터 a위로 수직으로 조사된 빛에 의해 투영된 벡터 b의 그림자에 대한 위치벡터로 정사영(Orthogonal projection) 이라 합니다. 그림 1. 벡터 a에 대한 벡터 b의 정사영. a=np.array([[3], [3]]) q, r=la.qr(a) plt.figure(figsize=(3,2)) plt.arrow(0,0, a[0,0], a[1,0], head_width=0.09) plt.arrow(0, 0, -r[0,0], 0, alpha=0.6, head_width=0.09, color="brown") plt.arrow(0,0, 3, 0, lw=2, head_width=0.09, color="b") plt.vlines(3, 0, 3.2, ls="--", color="g") plt.text(2.5, 0.2, r"$90^o$", color="g") plt.text(0.3, 0.1, r"$\theta$", color="g") plt.text(1.7, 2, r"$\vec{b}$") plt.text(1.5, 0.15, r"$\vec{b_{proj}}$", color="b") plt.text(3.5, 0.15, r"$\vec{a}}$", color="brown", alpha=0.6) plt.show() 식 1을 적용하여 그림 1의 두 벡터 a와 b 각각의 노름과 내적 (a·b)의 비로 cos(θ)를 계산할 수 있습니다. 또한 cos(θ)는 벡터 b와 정사영 b proj 의 노름의 비로 나타낼 수 있습니다. \begin{align}u \cdot v &= \Vert{u}\Vert \Vert{v}\Vert...

[Linear Algebra] 직교집합(Orthogonal Set)과 선형결합

직교집합(Orthogonal Set)과 선형결합 ℝ n 차원에서 식 1과 같이 내적이 0인 모든 벡터들의 집합 u 1 , u 2 , …, u p 를 직교집합(orthogonal set) 이라고 합니다( 직교벡터(Orthogonal vectors) 참조 ). $$u_i\cdot u_j=0,\quad i \ne j$$ (식 1) 예 1) 다음 벡터 집합이 직교 집합인지를 결정해봅니다. $$u_1=\begin{bmatrix}3\\1\\1\end{bmatrix}\quad u_2=\begin{bmatrix}-1\\2\\1\end{bmatrix} \quad u_3=\begin{bmatrix}-\frac{1}{2}\\-2\\\frac{7}{2}\end{bmatrix}$$ u1=np.array([3.,1.,1.]).reshape(3,1) u2=np.array([-1.,2.,1.]).reshape(3,1) u3=np.array([-1/2,-2,7/2]).reshape(3,1) u=[u1,u2, u3] for i, j in itertools.combinations([0,1,2], 2): print(np.dot(u[i].T,u[j])) [[0.]] [[0.]] [[0.]] 위 결과에 의하면 벡터들 간의 내적이 모두 0이므로 세 벡터들은 모두 직교 상태입니다. 그 결과는 세 벡터를 나타낸 그림 1에서 확인할 수 있습니다. 그림 1. 직교관계인 세개의 벡터. 위 벡터들로 이루어진 동차선형결합 성립여부를 결정합니다. U=np.hstack([u1,u2,u3]) c=np.zeros([3,1]) au=np.hstack([U,c]) Matrix(au).rref() (Matrix([ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0]]), (0, 1, 2)) 확대 행렬(au)의 rref는 모든 열이 피벗 열 임을 나타내며 이 시스템의 모든 변수는 선도변수(leading variable)입니다( 기약행 사다리꼴 ...

[Linear Algebra]직교벡터(Orthogonal vectors)

직교벡터(Orthogonal vectors) 식 1에 의하면 두 벡터의 사잇각이 직각일 경우 정사영 의 노름(norm)은 0이 됩니다. 즉, 내적은 0으로 식 2와 같이 나타낼 수 있습니다. \begin{align}u\cdot v & = \Vert{u}\Vert \Vert{v}\Vert \cos(\theta)\\ \cos(\theta) &= \frac{u\cdot v}{\Vert{u}\Vert \Vert{v}\Vert}\end{align} (식 1) \begin{align}x·y &= \Vert{x}\Vert \Vert{y}\Vert \cos(90°)\\ &= 0\end{align} (식 2) 식 2가 성립하는 두 벡터들은 서로 직교벡터(Orthogonal vectors) 이며 직교성(orthogonality )을 가진다고 합니다. 그림 1에서 벡터 u 와 v , 그리고 벡터 u 와 -v 는 모두 직각관계를 나타냅니다. 그림 1. 직교벡터 fig, ax=plt.subplots(figsize=(2,2)) ax.arrow(0,0, 1,0,color="r", lw=2, head_width=0.05) ax.arrow(0,0, -1,0, color="b", lw=2, head_width=0.05) ax.arrow(0,0, 0, 1, color="g", lw=2, head_width=0.05) ax.arrow(-1, 0, 1, 1, ls="-.", color="b",alpha=0.3) ax.arrow(1, 0, -1, 1, ls="-.", color="r",alpha=0.3) ax.spines['left'].set_position(("data", 0)) ax.spines['bottom'].set_position(("data...

[Linear Algebra] 내적(inner product)

내적(Inner product) a, b 두 벡터의 내적(inner product, dot product) 은 식 1과 같이 정의합니다. \begin{align}a&=\begin{bmatrix} a_1\\a_2\end{bmatrix}\; b=\begin{bmatrix} b_1\\b_2\end{bmatrix}\\ a\cdot b& = a_1\times b_1 + a_2\times b_2\end{align} (식 1) 식 1의 결과와 같이 두 벡터의 내적은 스칼라입니다. 같은 인덱스를 가진 성분들사이의 곱들의 총합으로 식 2와 같이 나타낼 수 있습니다. 행렬은 두 개 이상의 벡터들로 구성된 객체로 두 행렬 사이에 내적을 계산할 수 있습니다. 행렬들 사이에 이루어지는 내적을 행렬곱(matrix product) 라고 하지만 구분없이 닷곱, 내적곱이라고 명명합니다. \begin{align}\text{dot prodcut}:&\;\begin{bmatrix} a_1& a_2\end{bmatrix}\begin{bmatrix} b_1\\b_2\end{bmatrix}= a_1 b_1 + a_2 b_2\\\text{matrix product}:&\; \begin{bmatrix} a_{11}& a_{12}\\a_{21}& a_{22}\end{bmatrix}\begin{bmatrix} b_{11}& b_{12}\\b_{21}& b_{22}\end{bmatrix}=\begin{bmatrix} a_{11}b_{11}+a_{12}b_{21} & a_{11}b_{12}+a_{12}b_{22} \\a_{21}b_{11}+a_{22}b_{21} & a_{21}b_{12}+a_{22}b_{22} \end{bmatrix}\end{align} (식 2) 식 2의 두 행렬의 내적 연산은 앞 객체의 행과 뒤 객체의 열의 사이에서 연산이 이루어집니다. 행렬의 행...