Span, Vector Projection

17193 ワード

ソース:https://www.youtube.com/watch?v=9F4PZ_1orF0
xy座標系のベースベクトル:i^,j^hat{i},hat ji^,j^ベースベクトル.
スカラーを変更することで、他の2 Dベクトルを得ることができます.
ここで、スカラーを変更して別のベクトルを得るプロセスを、2つのベクトルの線形結合と呼ぶ.
2つのベースベクトルが同じ直線上にある場合、結果ベクトルの端点は原点を通る直線に制限されます.
2つのベクトルがゼロベクトルの場合→原点に閉じ込められる.

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
与えられた配向量対の線形組合せについて、可能なすべての異なる結果ベクトルの集合を2つのベクトルの生成(線形生成、span)と呼ぶ.
2つのベクトルが1つの直線上にある場合、それらのspanは1つの直線にすぎません.

せんけいそうかんじゅうぞくかんけい


u⃗=av⃗+bw⃗\vec{u} = a\vec{v} + b\vec{w}u=av+bw
spanを収縮することなくベクトルを除去できる場合.
1つのベクトルは、他のベクトルのspanに属しているため、他のベクトルの線形組合せとして表すことができる.

せんけいかんけい


u͈≠avvec{u}neqavec{v}u57=av(すべてのaについて)
u͈≠av840+bwvec{u}neqavec{v}+bvec{w}u=av+bw(すべてのaに対して、b)
ソース:[Linear Algebra]図9線形独立、Span、基板、次元

Vector Projection


2つのベクトルのうち、2つの1つで戦死!

(R 2mathbb{R}^{2}R 2空間における)近距離投影
任意の2つのベクトルa,bvec a,vec ba,bがある場合、bvec bbにおける投影ベクトルの長さμ⃗\vec\muμそう言いましょう.
この2つの間の角度.θ\thetaθ余弦の法則によって
cos⁡θ=下の長さ:∣μ∣a∣∣cos{theta}={以下長さ}over{斜辺}={vecmu|over{vec a|}}cosθ=雨上がりの長さ=∣a∣∣∣μ∣=a∣b∣a∣∣b∣\vec{a}\vec b}\\over\\vec a\\cdot|\\vec\\\a\∣a?a?b?
このときμ⃗∣|\vec\mu|∣μゞ对∣进行整理,∣μ⃗∣=a⃗⋅b⃗∣b⃗∣|\vec\mu| = {\vec a\cdot\vec b\over |\vec b|}∣μ∣b∣a∣b.
この場合、bvec bb方向の単位ベクトルb^hat bb^,b^=を求めるμ^=1∣b⃗∣⋅b⃗{\hat b} = {\hat\mu} = {{1\over{|\vec b|}}\cdot{\vec b}}b^=μ^=∣b∣1∣bなので、最終的に!
μ⃗=a⃗⋅b⃗∣b⃗∣2⋅b⃗{\vec\mu }= {{\vec {a}\cdot\vec {b}\over {|\vec b|^2} }\cdot{\vec b}}μ=∣b∣a∣b∣b∣
ここで、前のa⃑b⃙b⃙2vec acdotvec b\over\vec{b\\\\b?bはスカラー値です!

2 Dベクトル投影を試みる


y=xy=xy=xをベクトルに投影します.
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
v\8407=(7,4)\vecv=(7,4)v=(7,4)v=(5,5)(5,5)(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)