출처 : https://www.youtube.com/watch?v=9F4PZ_1orF0
xy좌표계의 basis vector : $\hat{i} , \hat j$ 기저벡터.
스칼라를 달리함으로써 다른 2차원벡터를 다 얻을 수 있어.
여기서 스칼라를 달리하면서 다른벡터를 얻는 과정을 두 벡터의 선형결합이라고 부른다.
두 basis vector가 같은 직선상에 위치한다면, 결과벡터의 끝점이 원점을 지나는 한 직선으로 제한되어버린다.
두 벡터가 영벡터인경우 → 원점에 갇힘
span
The set of all possible vectors that you can reach with a linear combination of a given pair of vectors called the span of those two vectors
주어진 벡터 쌍의 선형결합으로 다다를 수 있는 모든 결과벡터의 집합을 두 벡터의 생성(선형생성, span)이라고 한다.
두 벡터가 일직선위에 있다면 그들의 span은 단지 직선이다.
Linearly dependent 선형 종속
$\vec{u} = a\vec{v} + b\vec{w}$
벡터들 중 span의 축소 없이 하나를 제거해도 되는경우
벡터 중 하나가 다른 벡터들의 선형결합으로 표현될 수 있다는 말 (그 벡터는 이미 다른 벡터들의 span에 속하므로)
Linearly independent 선형 독립
$\vec{u} \neq a\vec{v}$ (모든 a에 대하여)
$\vec{u} \neq a\vec{v} + b\vec{w}$ (모든 a, b에 대하여)
출처 : [Linear Algebra] Lecture 9 선형 독립(Linear independence), Span, 기저(Basis) 그리고 차원(Dimension)
Vector Projection
두개의 벡터에서 둘 중 하나로 전사시키는것!
($\mathbb{R}^{2}$ 공간에서의) Linear Projections
임의의 두 벡터 $\vec a, \vec b$ 가 있을 때, $\vec b$에 Projection된 벡터의 길이를 $\vec \mu$ 라고하자.
이 둘 사이의 각도를 $\theta$라고 하면, 코사인법칙에 의하여
$$\cos{\theta} ={{아래길이}\over {빗변} } = {|\vec \mu| \over {|\vec a|} } ={\vec {a}\cdot{\vec b}\over{|\vec a|\cdot|\vec{b}|}} $$ 이다.
이때, $|\vec \mu|$에 대하여 정리하면, $|\vec \mu| = {\vec a \cdot \vec b \over |\vec b|}$ 이다.
일단 이 상황에서, $\vec b$방향의 단위벡터 $\hat b$ 를 구하면, ${\hat b} = {\hat \mu} = {{1\over{|\vec b|}}\cdot{\vec b}}$ 이므로, 최종 !!
$${\vec \mu }= {{\vec {a} \cdot \vec {b} \over {|\vec b|^2} }\cdot{\vec b}}$$ 이다.
여기서 앞부분의 ${{\vec a \cdot \vec b \over {|\vec{ b}|^2} }}$ 은 스칼라값이다.!
2차원 벡터 프로젝션해보기
$y=x$ 라는 벡터에 projection한다.
v = [7, 4]
def vecmul(w,v):
try: return np.array(list(map(lambda x : x[0]*x[1], zip(w,v))))
except:
if type(w)!=list: return list(map(lambda x :w*x , v))
else: return list(map(lambda x : v*x, w))
def vecdot(w,v):
try: return sum(list(map(lambda x : x[0]*x[1], zip(w,v))))
except:
if type(w)!=list: return sum(list(map(lambda x: w*x, v)))
elif type(v)!=list: return sum(list(map(lambda x: v*x, w)))
def vecdiv(w,v):
return np.array(list(map(lambda x : x[0]/x[1], zip(w,v))))
def myProjection(w , v=[1,1] ) :
# 채우세요.
w_prime = vecmul( vecdot(w,v) / vecdot(v,v) , v )
return w_prime
# myProjection([7,4])
vprime = myProjection(v)
vprime
$\vec v = (7,4)$가 $(5,5)$가 되었다
plt.figure(figsize=(10,10))
x_minus_proj = list(map(lambda x : x[1]-x[0], zip(v,vprime)))
plt.plot(x_vals,y_vals,'--',color='r')
plt.xlim(-1,10)
plt.ylim(-1,10)
plt.arrow(0,0,v[0],v[1], head_width=.2, linewidth=3,head_length=.2, color='b')
plt.arrow(0,0,vprime[0],vprime[1], ls='--', head_width=.2, head_length=.2, color='g',linewidth=3)
plt.arrow(v[0],v[1],x_minus_proj[0],x_minus_proj[1], head_width=.2 , head_length=.2, color='y',linewidth=2)
plt.grid()
# axes.figure.figsize=(20,20)
'Linear Algebra' 카테고리의 다른 글
Vector, Scalar (0) | 2021.02.07 |
---|