선형 독립과 선형 종속
ℝ 공간의 벡터들(v1, v2, …, vp)과 스칼라(c1, c2, …, cp)의 동차선형결합(Homogeneous Linear Combination)은 식 1과 같이 행렬 방정식의 형태로 나타낼 수 있습니다.
\begin{align}v_1c_1+v_2c_2+\cdots+v_pc_p &=0\\ \Rightarrow\begin{bmatrix}v_{11}& v_{12}& \cdots & v_{1p}\\ v_{21}& v_{22}& \cdots & v_{2p}\\ \vdots& \vdots& \ddots& \vdots\\ v_{n1}& v_{n2}& \cdots & v_{np}\end{bmatrix} \begin{bmatrix} c_1\\c_2\\\vdots\\c_p\end{bmatrix} &= \begin{bmatrix} 0\\0\\\vdots\\0\end{bmatrix}\end{align} | (식 1) |
동차 선형 결합이 자명한 해(trivial solution)를 갖는다면 선형 독립(linear independent)라고 하고 위 식을 만족시키기 위한 자명하지 않은 해(nontrivial solution)을 갖는다면 선형 종속(linear dependent)이라고 합니다.
예 1)
다음시스템의 선형 독립성을 결정합니다.
\begin{align}3x_1 + 5x_2 - 4x_3 &= 0\\ -3x_1 - 2x_2 + 4x_3 &= 0\\ 6x_1 + x_2 - 8x_3 &= 0\end{align} |
다음 코드에서 객체 aug와 같이 각 식을 벡터로 전환하여 행기준으로 결합하면 확대행렬이 됩니다. aug에서 상수항을 제외하면 표준행렬(A)이 됩니다.
v1=np.array([1, 2, 3]) v2=np.array([4, 5, 6]) v3=np.array([2, 1, 0]) c=np.array([0, 0, 0]) aug=np.c_[v1, v2, v3, c] print(aug)
[[1 4 2 0] [2 5 1 0] [3 6 0 0]]
A=aug[:,:-1] print(A)
[[1 4 2] [2 5 1] [3 6 0]]
la.det(A).round(3)
-0.0
행렬 A는 3×3 정방 행렬이므로 행렬식을 계산할 수 있지만 그 결과는 0이므로 역행렬은 존재하지 않습니다. 이는 고유한 해가 없음을 의미합니다. 기약행사다리꼴(rref)을 적용하여 확인할 수 있습니다.
Matrix(aug).rref()
(Matrix([ [1, 0, -2, 0], [0, 1, 1, 0], [0, 0, 0, 0]]), (0, 1))
위 결과에 의하면 2개의 선도 변수와 1개의 자유 변수가 존재합니다. 즉, 다음과 같이 나타낼 수 있습니다.
x1 = 2x3, x2 = -x3
위 시스템은 변수 x3에 따라 다양한 해를 가질 수 있습니다. 결과적으로 자명하지 않은 해를 가지므로 선형 종속입니다.
예 2)
행렬 B의 선형 독립 여부를 결정하여 봅니다.
$$B=\begin{bmatrix} 0& 1& 4\\ 1& 2& -1\\5& 8& 0\end{bmatrix}$$
행렬 B는 정방 행렬이므로 가역행렬이라면 함수 np.linalge.solve()에 의해 해집합을 계산할 수 있습니다.
B=np.array([[0,1,4],[1,2,-1],[5,8,0]]) round(la.det(B), 3)
-13.0
행렬 B의 행렬식은 0이 아닙니다. 이 결과는 B의 역행렬이 존재하며 다음 결과와 같이 그 행렬에 의한 선형 결합의 유일해가 존재함을 의미합니다.
c=np.array([0,0,0]).reshape(-1,1) print(la.solve(B, c))
[[ 0.] [ 0.] [-0.]]
미지수의 수와 식의 수가 동일한 선형시스템이라면 표준 행렬의 역행렬의 존재는 그 시스템이 독립임을 의미합니다. 즉, 가역행렬과 독립은 동치입니다.
표준행렬이 정방행렬이고 가역적이면 다음과 동치입니다.
⇒ 자명한 해(trivial solution) ≡ 선형 독립
예 3)
다음 선형 시스템의 경우는 식의 수가 변수의 수보다 많은 상태로서 표준 행렬이 정방 행렬이 아닌 경우입니다. 선형 독립 여부를 결정하여봅니다.
\begin{align}-3x_2 + 9x_3& = 0\\ 2x_1 + x_2 - 7x_3& = 0\\ -x_1 + 4x_2 - 5x_3& = 0\\ x_1 - 4x_2 + 2x_3& = 0\end{align} |
v1=np.array([0,-3, 9, 0]) v2=np.array([2, 1, -7, 0]) v3=np.array([-1, 4, -5, 0]) v4=np.array([1, -4, 2, 0]) aug=np.vstack([v1, v2, v3, v4]) print(aug)
[[ 0 -3 9 0] [ 2 1 -7 0] [-1 4 -5 0] [ 1 -4 2 0]]
Matrix(aug).rref()
(Matrix([ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 0]]), (0, 1, 2))
위 결과에 의하면 피봇열이 3개이므로 선형결합의 변수의 수와 같습니다. 즉, 변수 x1, x2, x3의 해는 모두 0으로 유일한 해 집합을 가지므로 자명한 해를 가지므로 선형독립입니다.
예 4)
다음 예는 변수의 수가 식의 수보다 많은 경우 입니다. 선형 독립 여부를 결정하여봅니다.
\begin{align}x_1 + 4x_2 - 3x_3& = 0\\ -2x_1 - 7x_2 + 5x_3 + x_4& = 0\\ -4x_1 - 5x_2 + 7x_3 + 5x_4& = 0\end{align} |
v1=np.array([1, -2, -4]) v2=np.array([4, -7, -5]) v3=np.array([-3, 5, 7]) v4=np.array([0, 1, 5]) c=np.array([0, 0, 0]) aug=np.c_[v1, v2, v3, v4, c] print(aug)
[[ 1 4 -3 0 0] [-2 -7 5 1 0] [-4 -5 7 5 0]]
Matrix(aug).rref()
(Matrix([ [1, 0, 0, -3, 0], [0, 1, 0, 0, 0], [0, 0, 1, -1, 0]]), (0, 1, 2))
위 결과와 같이 확대행렬의 기약행사다리꼴에서 1개의 자유변수(x4)가 존재합니다. 그러므로 나머지 변수는 그 자유변수 값에 따라 결정되어집니다. 즉, 다음과 같이 나타낼 수 있습니다.
행렬 V에 대응되는 변수 벡터 x는 다음과 같이 4×1의 형태이어야 합니다.
x1 = x4, x2 = 0, x3 = x4
결론적으로 자명하지 않은 해(nontrivial solution)가 존재하므로 선형 종속 관계에 있습니다.
자명한 해와 자명하지 않은 해는 각각 선형독립과 종속임을 의미합니다. 다음과 같이 정리될 수 있습니다.
(행의 수 > 열의 수) ∩ (자유변수가 없음) ⇔ 자명한 해가 존재하므로 선형 독립 |
(행의 수 < 열의 수) ∩ (자유변수 존재) ⇔ 자명하지 않은 해를 가지므로 선형종속 |
댓글
댓글 쓰기