내용
벡터공간
이 글은 선형시스템 또는 선형결합에 대한 지식이 필요합니다.
벡터들과 스칼라간의 연산에 의해 선형결합의 성립될 수 있으며 그 결과벡터는 연산에 사용된 벡터들이 존재하는 공간의 부분으로 존재합니다. 이렇게 벡터들이 존재하는 공간을 벡터 공간(Vector space)이라고 합니다.
선형결합에 의한 벡터 공간에서 벡터와 스칼라 간에 다음과 같은 다양한 연산 법칙이 성립됩니다.
- u, v ∈ Vector → u+v ∈ Vector
- u, v가 모두 벡터이면 그들의 합은 벡터(u+v)
- α ∈ scalar, u ∈ Vector → ;αu ∈ Vector
- α가 스칼라(C)이고 u가 벡터라면 이 둘의 곱인 αu는 벡터
- u + v = v + u
- 벡터들의 합은 교환법칙 성립
- u + (v + w) = ( u + v) + w
- 벡터들의 합은 결합법칙 성립
- 모든 요소가 0인 0벡터(zero vector)가 존재
- u가 벡터이고 -u 역시 벡터라면 u + (-u) = 0
- α, β ∈ scalar, u ∈ Vector → α(βu) = (α β) u
- 스칼라 배수 법칙 성립
- α ∈ scalar and u ∈ Vector → α(u + v) = α u + α v
- 스칼라와 벡터의 곱에서 분배법칙이 성립
- α, β ∈ scalar u ∈ Vector → (α + β)u = α u + β u
- 두 개의 스칼라와 한 개의 벡터사이에 분배법칙이 성립
- u ∈ V → 1·u = u
부분공간
일반적으로 벡터 공간 (Vector space)은 벡터들로 구성된 집합을 의미합니다. 위에서 소개한 벡터 공간에서 여러 연산들을 통해 새로운 벡터를 생성할 수 있습니다. 생성된 벡터들은 피연산 벡터들에 의해 형성되는 공간내에 존재합니다. 다시 말하면 결과벡터의 공간은 피연산 벡터들의 부분공간(subspace)이라고 합니다. 이 부분공간은 집합의 부분집합과 유사한 개념입니다.
예를 들어 벡터 공간에 V, W가 존재하며 W ⊆ V 즉, W가 V의 부분집합이라면 W는 V의 부분공간(subspace, H)이라고 합니다.
부분공간은 다음 3가지 특성을 가집니다.
- 모든 벡터 공간(V)내의 0벡터는 부분 공간(H)이 됩니다.
- u, v ∈ H → u + v ∈ H
- v ∈ H → cv ∈ H
u와 v는 벡터(Vector)이고 c는 스칼라(Scalar)를 나타냅니다.
그러므로 벡터들 간의 연산의 결과인 벡터사이에 선형결합이 성립되는 것입니다. 즉 선형결합이 성립하면 결과벡터는 피연산 벡터들의 부분공간이 됩니다.
실수 $\mathbb{R}^n$의 부분 공간은 다음 중 하나를 의미합니다.
- 동차 선형 시스템의 모든 해(solution)집합
- 특정한 벡터들의 모든 선형 결합의 집합
예)
다음 선형 결합의 성립 여부를 결정하여 봅니다.
import numpy as np import numpy.linalg as la import sympy as sp import matplotlib.pyplot as plt
A=np.array([[ 1, -3], [-1, 1], [ 1, 0], [0, 1]]) c=np.zeros([4,1]) au=np.hstack([A, c]) au
array([[ 1., -3., 0.], [-1., 1., 0.], [ 1., 0., 0.], [ 0., 1., 0.]])
sp.Matrix(au).rref()[0]$\color{navy}{\left[\begin{matrix}1 & 0 & 0\\0 & 1 & 0\\0 & 0 & 0\\0 & 0 & 0\end{matrix}\right]}$
위 결과에서 자유 변수가 없으므로 자명한 해가 존재합니다. 즉, 벡터 u, v의 선형 결합이 성립합니다. 그러므로 그 선형 결합의 결과를 H라고 하면 H는 벡터 u, v가 존재하는 벡터 공간의 부분 공간이 되며 u, v는 H의 스판이 됩니다.
위의 결과는 다음과 같이 정리할 수 있습니다.
v1, v2, …, vp ⊂ V(벡터공간)이면 그 벡터들에 의한 선형 결합의 결과 H는 벡터공간 V의 부분공간이 됩니다.
다음과 같이 span으로 나타낼 수 있습니다.
예)
다음 세 개의 벡터 v1, v2, v3가 모두 3차원 벡터 공간에 존재한다면 벡터 y 역시 동일한 벡터 공간의 부분공간이 되기 위한 h값을 결정해 봅니다.
벡터들 사이에 선형 결합이 성립하는지를 결정하는 것입니다. 그러나 벡터 y에 미지수 h가 포함되어 있습니다. 미지수가 포함된 연산은 sympy 라이브러리의 symbols()
함수를 사용합니다. 이 함수는 기호를 연산할 수 있는 미지수로 변환하기 때문에 미지수를 포함하는 다양한 연산이 가능합니다.
v1=np.array([1,-2,-2]).reshape(-1,1) v2=np.array([5,-4, -7]).reshape(-1,1) v3=np.array([-3, 1, 0]).reshape(-1,1) V=np.hstack([v1,v2,v3]) V
array([[ 1, 5, -3], [-2, -4, 1], [-2, -7, 0]])
h=sp.symbols("h") y=sp.Matrix([[-4], [3], [h]]) y$\color{navy}{\left[\begin{matrix}-4\\3\\h\end{matrix}\right]}$
au=sp.Matrix(V).row_join(y) au$\color{navy}{\left[\begin{matrix}1 & 5 & -3 & -4\\-2 & -4 & 1 & 3\\-2 & -7 & 0 & h\end{matrix}\right]}$
au.rref()[0]$\color{navy}{\left[\begin{matrix}1 & 0 & 0 & \frac{h}{3} - \frac{5}{3}\\0 & 1 & 0 & \frac{10}{21} - \frac{5 h}{21}\\0 & 0 & 1 & \frac{11}{7} - \frac{2 h}{7}\end{matrix}\right]}$
위 결과에 의하면 자유 변수가 존재하지 않습니다. 즉, h 값에 관계없이 벡터들의 선형 관계는 성립합니다. 그러므로 벡터 v1, v2, v3 변형에 의해 y를 나타낼 수 있으므로 그 벡터들은 y의 span이 되며 세 벡터가 존재하는 3차원 벡터 공간의 부분 공간이 됩니다.
예)
H가 4차원의 좌표(a, b, c, d)에서 다음 식들을 만족하는 모든 벡터들의 집합이라고 한다면 H가 4차원의 부분 공간인지를 확인합니다.
A=np.array([[1,-2,5,-1],[-1, -1, 1, 0]]) c=np.zeros([2,1]) au=np.hstack([A, c]) au
array([[ 1., -2., 5., -1., 0.], [-1., -1., 1., 0., 0.]])
sp.N(sp.Matrix(au).rref()[0], 3)$\color{navy}{\left[\begin{matrix}1.0 & 0 & 1.0 & -0.333 & 0\\0 & 1.0 & -2.0 & 0.333 & 0\end{matrix}\right]}$
위 결과는 2개의 자유 변수가 존재합니다. 즉, 변수 a와 b는 c, d 값들에 의존하므로 자명하지 않은(non trivial) 해를 갖습니다. 즉, 이 결합은 선형 종속입니다. 결과적으로 위 동차 선형 결합은 성립하므로 표준 행렬에 의해 생성되는 벡터 [[a], [b], [c], [d]]는 4차원의 부분 공간이 됩니다.
부분공간의 차원
위 예의 결과는 4차원의 부분 공간이기는 하지만 그 부분공간의 차원이 4차원일까요? 만약에 위 선형 결합이 선형 독립이라면 부분공간 H 역시 4차원이 될 것입니다. 그 결과는 다음과 같이 정리할 수 있습니다.
$$\begin{bmatrix}a\\b\\c\\d \end{bmatrix}=\begin{bmatrix}-c+\frac{d}{3}\\2c-\frac{d}{3}\\c\\d\end{bmatrix}$$H의 구성 부분인 a, b와 c, d는 상호 의존 관계가 됩니다. 즉, a, b에 대응하는 벡터로 c 또는 d와 선형 결합이 성립될 수 있습니다. 위 예의 표준 행렬 A의 각 벡터 A1, A2, A3, A4는 각각 변수 a, b, c, d에 대응합니다. 그러므로 다음의 선형 결합이 선형 독립인지를 확인해 봅니다.
$$\begin{aligned} aA_1 + bA_2 &= c\\ aA_1 + bA_2 &= d\end{aligned}$$A1=np.array([1,-1]).reshape(-1,1) A2=np.array([-2,-1]).reshape(-1,1) A3=np.array([5,1]).reshape(-1,1) A4=np.array([-1,0]).reshape(-1,1)
위 코드의 결과 즉, 각 벡터는 다음과 같습니다.
$$A_1=\begin{bmatrix} 1\\-1\end{bmatrix} \quad \;A_2=\begin{bmatrix}1\\-1 \end{bmatrix} \quad A_3=\begin{bmatrix} 5\\1\end{bmatrix} \quad A_4=\begin{bmatrix} -1\\0\end{bmatrix} $$# A1·a+A2·b= A3 A_123=sp.Matrix(np.hstack([A1,A2,A3])).rref()[0] A_123$\color{navy}{\left[\begin{matrix}1 & 0 & 1\\0 & 1 & -2\end{matrix}\right]}$
# A1·a+A2·b= A4 A_124=sp.Matrix(np.hstack([A1,A2,A4])).rref()[0] A_124$\color{navy}{\left[\begin{matrix}1 & 0 & - \frac{1}{3}\\0 & 1 & \frac{1}{3}\end{matrix}\right]}$
위 결과에 의하면 두 선형 결합 모두 선형 독립입니다. 즉, 4개의 벡터 A1, A2, A3, A4 중에서 선형 독립인 벡터들을 나타내는 기저 벡터(basis vector)는 A1, A2이므로 이 예의 스판(Span)은 다음과 같이 나타낼 수 있습니다.
$$\begin{aligned} H &= \text{Span}\{A_1, A_2\}\\ &= \text{Span} \left\{\begin{bmatrix}1\\-1\end{bmatrix}, \quad \begin{bmatrix}-1\\-1\end{bmatrix}\right\}\end{aligned}$$모든 선형 독립인 선형 결합을 표현할 수 있는 벡터들을 기저 벡터라고 하며 대상이 되는 모든 벡터들의 기약행사다리꼴 형태에서 피벗 열(pivot column)에 해당하는 벡터와 같습니다.
위의 A1·a+A2·b= A3을 그래프로 작성해 봅시다.
$$\begin{align}&a+b=5\\&-a-b=1\end{align}$$a=np.linspace(-3, 3, 100) b1=(a-5)/2 b2=-a-1 plt.figure(dpi=100) plt.plot(a, b1, label="a-2b=5") plt.plot(a, b2, label="-a-b=1") plt.scatter(1, -2, color="red", label="solution") plt.legend(loc="best", prop={'weight':'bold'}) plt.xlabel("a", weight='bold') plt.ylabel("b", weight='bold') plt.grid(True) plt.show()
위 그림에서 두 식의 해 (1, -2)는 두 직선에 의해 형성되는 공간에 포함됩니다. 그러므로 해(solution)는 두 직선들을 새로운 축으로 설정하여 나타낼 수 있습니다. 축의 갯수는 그 벡터의 차원이 됩니다.
그러므로 유일한 해는 기저벡터들의 결과이고 이는 결과에 대한 스판(Span)이므로 기저벡터들의 수, 즉 스판의 수가 그 부분공간(해)의 차원이 됩니다. 이 예의 경우 부분공간 H는 2차원이 됩니다.
- 피벗 열(pivot column)이 기저 벡터가 됩니다.
- 스판(Span)은 기저 벡터로 구성되며 기저 벡터의 수가 부분 공간의 차원이 됩니다.
예)
다음 벡터들에 의한 부분 벡터의 기저와 그 부분 공간의 차원을 계산합니다.
위 각 벡터들의 결합에 의한 행렬 A는 다음과 같습니다. 그 행렬의 기약행사다리꼴의 피벗열이 기저가 되며 그 기저의 수가 부분행렬의 차원이 됩니다.
A=sp.Matrix([[1,-3, 2, -4],[-3, 9, -1, 5], [2, -6, 4, -3],[-4, 12, 2, 7]]) A$\color{navy}{\left[\begin{matrix}1 & -3 & 2 & -4\\-3 & 9 & -1 & 5\\2 & -6 & 4 & -3\\-4 & 12 & 2 & 7\end{matrix}\right]}$
A_rref=A.rref() A_rref[0]$\color{navy}{\left[\begin{matrix}1 & -3 & 0 & 0\\0 & 0 & 1 & 0\\0 & 0 & 0 & 1\\0 & 0 & 0 & 0\end{matrix}\right]}$
결과에 의하면 0, 2, 4열이 피벗열이며 이 벡터들에 의해 생성되는 부분공간은 선형결합을 만족하는 것으로서 다음과 같이 나타낼 수 있습니다.
$$\begin{bmatrix} 1& 2 &-4 \\ -3& -1& 5 \\ 2 & 4 &-3 \\ -4 & 2 & 7 \end{bmatrix} \begin{bmatrix} x_1\\x_2\\x_3\end{bmatrix}= \begin{bmatrix}0\\0\\0 \end{bmatrix}$$위 식들은 3개의 피벗열, 즉 3개의 기저벡터를 가집니다. 그러므로 부분공간의 차원은 3입니다.
댓글
댓글 쓰기