기본 콘텐츠로 건너뛰기

벡터와 행렬에 관련된 그림들

[Linear Algebra] 선형독립과 선형종속

선형 독립과 선형 종속

ℝ 공간의 벡터들(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)가 존재하므로 선형 종속 관계에 있습니다.

자명한 해와 자명하지 않은 해는 각각 선형독립과 종속임을 의미합니다. 다음과 같이 정리될 수 있습니다.

(행의 수 > 열의 수) ∩ (자유변수가 없음)
 ⇔ 자명한 해가 존재하므로 선형 독립
(행의 수 < 열의 수) ∩ (자유변수 존재)
 ⇔ 자명하지 않은 해를 가지므로 선형종속

댓글

이 블로그의 인기 게시물

[Linear Algebra] 유사변환(Similarity transformation)

유사변환(Similarity transformation) n×n 차원의 정방 행렬 A, B 그리고 가역 행렬 P 사이에 식 1의 관계가 성립하면 행렬 A와 B는 유사행렬(similarity matrix)이 되며 행렬 A를 가역행렬 P와 B로 분해하는 것을 유사 변환(similarity transformation) 이라고 합니다. $$\tag{1} A = PBP^{-1} \Leftrightarrow P^{-1}AP = B $$ 식 2는 식 1의 양변에 B의 고유값을 고려한 것입니다. \begin{align}\tag{식 2} B - \lambda I &= P^{-1}AP – \lambda P^{-1}P\\ &= P^{-1}(AP – \lambda P)\\ &= P^{-1}(A - \lambda I)P \end{align} 식 2의 행렬식은 식 3과 같이 정리됩니다. \begin{align} &\begin{aligned}\textsf{det}(B - \lambda I ) & = \textsf{det}(P^{-1}(AP – \lambda P))\\ &= \textsf{det}(P^{-1}) \textsf{det}((A – \lambda I)) \textsf{det}(P)\\ &= \textsf{det}(P^{-1}) \textsf{det}(P) \textsf{det}((A – \lambda I))\\ &= \textsf{det}(A – \lambda I)\end{aligned}\\ &\begin{aligned}\because \; \textsf{det}(P^{-1}) \textsf{det}(P) &= \textsf{det}(P^{-1}P)\\ &= \textsf{det}(I)\end{aligned}\end{align} 유사행렬의 특성 유사행렬인 두 정방행렬 A와 B는 'A ~ B' 와 같...

[sympy] Sympy객체의 표현을 위한 함수들

Sympy객체의 표현을 위한 함수들 General simplify(x): 식 x(sympy 객체)를 간단히 정리 합니다. import numpy as np from sympy import * x=symbols("x") a=sin(x)**2+cos(x)**2 a $\sin^{2}{\left(x \right)} + \cos^{2}{\left(x \right)}$ simplify(a) 1 simplify(b) $\frac{x^{3} + x^{2} - x - 1}{x^{2} + 2 x + 1}$ simplify(b) x - 1 c=gamma(x)/gamma(x-2) c $\frac{\Gamma\left(x\right)}{\Gamma\left(x - 2\right)}$ simplify(c) $\displaystyle \left(x - 2\right) \left(x - 1\right)$ 위의 예들 중 객체 c의 감마함수(gamma(x))는 확률분포 등 여러 부분에서 사용되는 표현식으로 다음과 같이 정의 됩니다. 감마함수는 음이 아닌 정수를 제외한 모든 수에서 정의됩니다. 식 1과 같이 자연수에서 감마함수는 factorial(!), 부동소수(양의 실수)인 경우 적분을 적용하여 계산합니다. $$\tag{식 1}\Gamma(n) =\begin{cases}(n-1)!& n:\text{자연수}\\\int^\infty_0x^{n-1}e^{-x}\,dx& n:\text{부동소수}\end{cases}$$ x=symbols('x') gamma(x).subs(x,4) $\displaystyle 6$ factorial 계산은 math.factorial() 함수를 사용할 수 있습니다. import math math.factorial(3) 6 a=gamma(x).subs(x,4.5) a.evalf(3) 11.6 simpilfy() 함수의 알고리즘은 식에서 공통사항을 찾아 정리하...

sympy.solvers로 방정식해 구하기

sympy.solvers로 방정식해 구하기 대수 방정식을 해를 계산하기 위해 다음 함수를 사용합니다. sympy.solvers.solve(f, *symbols, **flags) f=0, 즉 동차방정식에 대해 지정한 변수의 해를 계산 f : 식 또는 함수 symbols: 식의 해를 계산하기 위한 변수, 변수가 하나인 경우는 생략가능(자동으로 인식) flags: 계산 또는 결과의 방식을 지정하기 위한 인수들 dict=True: {x:3, y:1}같이 사전형식, 기본값 = False set=True :{(x,3),(y,1)}같이 집합형식, 기본값 = False ratioal=True : 실수를 유리수로 반환, 기본값 = False positive=True: 해들 중에 양수만을 반환, 기본값 = False 예 $x^2=1$의 해를 결정합니다. solve() 함수에 적용하기 위해서는 다음과 같이 식의 한쪽이 0이 되는 형태인 동차식으로 구성되어야 합니다. $$x^2-1=0$$ import numpy as np from sympy import * x = symbols('x') solve(x**2-1, x) [-1, 1] 위 식은 계산 과정은 다음과 같습니다. $$\begin{aligned}x^2-1=0 \rightarrow (x+1)(x-1)=0 \\ x=1 \; \text{or}\; -1\end{aligned}$$ 예 $x^4=1$의 해를 결정합니다. solve() 함수의 인수 set=True를 지정하였으므로 결과는 집합(set)형으로 반환됩니다. eq=x**4-1 solve(eq, set=True) ([x], {(-1,), (-I,), (1,), (I,)}) 위의 경우 I는 복소수입니다.즉 위 결과의 과정은 다음과 같습니다. $$x^4-1=(x^2+1)(x+1)(x-1)=0 \rightarrow x=\pm \sqrt{-1}, \; \pm 1=\pm i,\; \pm1$$ 실수...