출처 : https://www.youtube.com/watch?v=9F4PZ_1orF0
xy좌표계의 basis vector : 기저벡터.
스칼라를 달리함으로써 다른 2차원벡터를 다 얻을 수 있어.
여기서 스칼라를 달리하면서 다른벡터를 얻는 과정을 두 벡터의 선형결합이라고 부른다.
두 basis vector가 같은 직선상에 위치한다면, 결과벡터의 끝점이 원점을 지나는 한 직선으로 제한되어버린다.
두 벡터가 영벡터인경우 → 원점에 갇힘
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은 단지 직선이다.
벡터들 중 span의 축소 없이 하나를 제거해도 되는경우
벡터 중 하나가 다른 벡터들의 선형결합으로 표현될 수 있다는 말 (그 벡터는 이미 다른 벡터들의 span에 속하므로)
(모든 a에 대하여)
(모든 a, b에 대하여)
출처 : [Linear Algebra] Lecture 9 선형 독립(Linear independence), Span, 기저(Basis) 그리고 차원(Dimension)
두개의 벡터에서 둘 중 하나로 전사시키는것!
( 공간에서의) Linear Projections
임의의 두 벡터 가 있을 때, 에 Projection된 벡터의 길이를 라고하자.
이 둘 사이의 각도를 라고 하면, 코사인법칙에 의하여
= 이다.
이때, 에 대하여 정리하면, 이다.
일단 이 상황에서, 방향의 단위벡터 를 구하면, 이므로, 최종 !!
이다.
여기서 앞부분의 은 스칼라값이다.!
라는 벡터에 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
가 가 되었다
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)