供參考和備忘用html
對數學家來講向量就是一個數字列表,對程序員來講向量能夠數組(Array)表示,但在計算機的圖形開發中咱們側重於向量的幾何表示。程序員
從幾何學上講,向量是具備大小和方向的有向線段。在圖形上經常使用箭頭(起點指向終點)表示,由於它捕獲了向量的兩個定義特徵:大小和方向。數組
- 向量的大小(Magnitude):是指向量的長度。向量的長度是非負的。
- 向量的方向(Direction):是指向量在空間中指向的方向。
向量是沒有位置的,只有大小和方向。它描述了從一個位置到另外一個位置的位移,是一種相對位置關係而不是絕對位置。ide
向量a可書寫爲:\(\vec a\)函數
在書寫向量時,有兩種表達方式:水平寫入和垂直寫入,水平寫入的向量稱爲行向量(Row Vector),垂直寫入的稱爲列向量(Column Vector)。spa
以下所示的一個三維行向量,各個數字間可用逗號或空格隔開:scala
以下所示的一個三維列向量:3d
向量的維度表示向量中元素的個數。一個元素就是一維向量,兩個數元素就是二維向量,三個元素就是三維向量......orm
份量用來表示向量中具體的某一個元素,好比向量中的第一個份量表示向量中的第一個元素。
表示方式:htm
- 使用下標,如:\(v_1\) 指的是向量 \(v\) 中的第一個元素。
- 使用字母,使用x、y來指代二維向量中的元素;使用x、y、z表示三維向量中的元素;使用x、y、z、w表示四維向量中的元素。
例如,以下向量中,\(a_1 = a_x = 1\)表示的都是向量 \(a\) 的第一個份量。
標量其實就是普通數字的技術術語,與咱們平常中使用的數字無異。
在二維笛卡爾座標中,X向右爲正,Y向上爲正。對於二維向量\([1.5,2]\),在二維笛卡爾座標系中可描述爲:向右移動1.5個單位而後向上移動兩個單位,或者向上移動兩個單位而後向右移動1.5個單位。
零向量表示沒有方向且長度爲0的向量。能夠將零向量看做是表達「無位移」概念的一種方式。
點用於指定位置,向量用於描述位移。
點的位置是相對的——相對於指定其座標的座標系的原點。
向量描述了一個位置到另外一個位置的位移,是一種相對位置關係。
因此,若是從原點(參考點)開始並按向量\([x,y]\)指定的量移動,那麼將最終到達點\((x,y)\)所描述的位置。也就是說向量\([x,y]\)給出了從原點(參考點)到點(x,y)的位移。好比,在二維笛卡爾座標系中,點:\((1,2)\),能夠表示爲向量:\([1,2]\),原點(0,0)開始,向右移動了1個單位,而後向上移動了2個單位,而後到達點\((1,2)\)。
世界上有不少東西都是很難創建「絕對」參考的東西。好比上面提到的點和向量。另外還有溫度、速度、音量等等。
好比咱們說體溫是:37.3℃,是相對於0℃(水的冰點)來講的。
負向量就是將向量的每個份量變爲其相反數。\(\vec a\)的負向量爲\(-\vec a\)
好比,向量:\([-3,2]\)的負向量爲:\(-[-3,2] = [3,-2]\)
使向量變負會產生大小相同但方向相反的向量。
被乘數通常放在算式的前面,乘數通常放在算式的後面。被乘數表示需重複相加的數,乘數表示需重複相加的次數。
如:\(4 \times 2 = 8\),4是被乘數,2是乘數。讀做:4 乘以 2 等於8,或者讀做:2 乘 4 等於8。表示2個4相加。
向量不能與標量相加,可是能夠將向量乘以標量。其實,向量乘以標量也能夠當作標量個向量相加的和。
其結果是一個與原始向量平行的向量,但具備不一樣的長度和可能相反的方向。也可理解爲:對原始向量進行長度爲標量的絕對值的縮放,若是標量小於0,則翻轉向量的方向。
計算方式:將標量與每個向量的份量相乘。如:
等價於向量乘以此標量的倒數。反過來,標量是不能夠除以向量的。向量也不能夠除以另外一個向量。
一些注意事項:
兩個向量相加或相減,它們必須具備相同的維度,不一樣維度不能相加減。
計算方式:將向量對應的份量相加便可。如:
向量的加法知足交換律,即:\(\vec a + \vec b = \vec b + \vec a\)
相應的份量相減便可。向量的減法能夠理解爲加上一個向量的負向量。即:\(\vec a - \vec b = \vec a + (- \vec b)\)。如:
向量的減法不知足交換律,即:\(\vec a - \vec b \neq \vec b - \vec a\),它們的結果長度相同但方向相反,因此,\(\vec a - \vec b = -(\vec b - \vec a)\)。
如上所示的向量加法,可描述爲:向右移動1個單位 -> 向上移動2個單位 -> 再向右移動3個單位 -> 在向上移動4個單位。
向量的大小也稱爲向量的長度(Length)。它的值是非負的。
表示方式:\(||向量||\)。如,\(\vec a\)的長度表示爲:\(||\vec a||\)。
計算方式:向量各個份量的平方和的平方根。如,\(\vec v = [3,4]\)的長度計算方式爲:
對於許多向量,咱們只關注其方向而不是大小(如:法線(Normal)),在這些狀況下,使用單位向量一般會很方便。
單位向量是大小爲1的向量。單位向量也被稱爲歸一化向量(Normalized Vector)。
任何非零向量的單位向量的計算方式:向量除以向量的長度,以下所示:
例如,向量\([3,4]\)的單位向量爲:
距離爲兩點之間的線段長度。因爲向量是有向線段,所以幾何上有意義的是,兩點之間的距離將等於從一點到另外一點的向量的長度。
求\(\vec a\)到\(\vec b\)間距離的計算方式:
例如,\(\vec a = [x,y]\),\(\vec b = [m,n]\)。求\(\vec a\)到\(\vec b\)的距離:
設,\(\vec d\)爲\(\vec a\)到\(\vec b\)的向量;則,\(\vec d = \vec b - \vec a\)
計算出:\(\vec d = [m-x,n-y]\)
因此距離爲:\(||\vec d|| = \sqrt{(m-x)^2 + (n-y)^2}\)
其實,計算兩個向量的距離就是計算兩個向量的差所得向量的長度。
點積也稱爲內積(Inner Product),點積的名稱來自向量乘積表示法中使用的點符號,且不能省略點符號。
向量\(\vec a\)與向量\(\vec b\)的點積表示爲:\(\vec a \cdot \vec b\)
計算方式:相應份量的乘積之和,獲得的是一個標量。以下所示:
點積知足交換律,也就是說:\(\vec a \cdot \vec b = \vec b \cdot \vec a\)
這裏有一個與之比較貼近現實的例子:
假設你有3噸小麥、4噸糖、2噸大米,則能夠表示爲:\([3,4,2]\)。
其中,1噸小麥162元,1噸糖558元,1噸大米495元,則能夠表示爲:\([162,558,495]\)。
那麼,你的總收入爲:\(3 \times 162 + 4 \times 558 + 2 \times 495 = 3798\)元。
來源:https://www.quora.com/Why-is-the-definition-of-the-dot-product-the-way-it-is
如何上圖所示,\(\vec a\)與\(\vec b\)的夾角爲\(\theta\),\(\vec c = \vec a - \vec b\),\(\vec a\)、\(\vec b\)、\(\vec c\)構成一個三角形。
由三角形餘弦定理可知:
假設:
由上方的 向量的大小 描述可知:
又:
因此:
化簡得:
因此咱們能夠推導出向量點積的另外一種計算方式:\(||\vec a||||\vec b||cos\theta\),也就是說:
\(||\vec b||cos\theta\)的另外一層含義是什麼?
由上圖和三角函數可知:\(m = ||\vec b||cos\theta\),因此:\(\vec a \cdot \vec b = ||\vec a||m\)
那麼,\(m\)是什麼?\(m\)是\(\vec b\)在\(\vec a\)上投影的長度。以下圖所示:
圖源:https://www.shuxuele.com/algebra/vectors-dot-product.html
因此兩個向量點積的幾何意義爲:一個向量在另外一個向量上投影的長度與另外一個向量長度的乘積。
\(\vec a \cdot \vec b\) | \(\theta\) | 角度爲 | \(\vec a\)和\(\vec b\)是 |
---|---|---|---|
>0 | \(0^\circ \leq \theta < 90^\circ\) | 銳角 | 主要指向同一方向 |
0 | \(\theta = 90^\circ\) | 直角 | 垂直 |
<0 | \(90^\circ < \theta \leq 180^\circ\) | 鈍角 | 主要指向反方向 |
幾何上證實:
由上圖所示:\(\vec d = \vec b + \vec c\),\(\vec b\)在\(\vec a\)向量上的投影長度爲\(x\),\(\vec c\)在\(\vec a\)向量上的投影長度爲\(y\),\(\vec d\)在\(\vec a\)向量上的投影長度爲\(z\),\(z = x+y\)。
可知:
又,\(z = x+y\),因此:
證實:
關於向量點積的一些參考連接:
https://www.shuxuele.com/algebra/vectors-dot-product.html
https://www.quora.com/Why-is-the-definition-of-the-dot-product-the-way-it-is
另,3Blue1Brown關於點積的筆記
叉積又叫外積或向量積(Vector Product),只能在三維中應用。結果是一個向量
向量\(\vec a\)與向量\(\vec b\)的叉積表示爲:\(\vec a \times \vec b\)
計算方式:
向量的叉積不知足交換律:\(\vec a \times \vec b \neq \vec b \times \vec a = -(\vec b \times \vec a)\)
向量的叉積不知足結合律:\((\vec a \times \vec b) \times \vec c \neq \vec a \times (\vec b \times \vec c)\)
假設\(\vec a\)和\(\vec b\)的叉積爲:\(\vec m\),也就是說:
那麼計算向量\(\vec m\)的長度的平方,\(||\vec m||^2\)爲:
展開後,可得:
等價於:
等價於:
等價於:
等價於:
因此:
那麼,\(||\vec b||sin\theta\)的另外一層含義是什麼?
由上圖可知,\(||\vec b||sin\theta = h\),而\(h\)垂直於\(\vec a\),那麼:
這能夠看做是:\(\vec a\)和\(\vec b\)構成的平行四邊形的面積(底乘以高)。
也就是說,\(\vec a \times \vec b\)的長度爲\(\vec a\)和\(\vec b\)構成的平行四邊形的面積。
叉積是個向量呀,如今知道了大小,那方向了?
首先,咱們知道:\(\vec m = \vec a \times\ \vec b\)
那麼咱們先來計算:\(\vec m \cdot \vec a\)
展開:
獲得:\(\vec m \cdot \vec a = 0\),這意味着:\(\vec m\)垂直於\(\vec a\) !!!
以一樣的方式計算\(\vec m \cdot \vec b\),依然會獲得相同的結果,也就是說:\(\vec m\)垂直於\(\vec b\) !!!
更進一步說:\(\vec m\)垂直於\(\vec a\)和\(\vec b\)構成的平面。
但是,垂直於平面的向量可能有兩個方向啊,如何肯定是哪一個方向了?
例如:\(\vec a \times\ \vec b\)
一、對於右手座標系
右手握拳,豎起大拇指。若是從你的視點\(\vec a\)到\(\vec b\)是逆時針旋轉,那麼大拇指的指向也就是叉積的方向指向你;順時針,則指向遠離你的方向。
二、對於坐手座標系
左手握拳,豎起大拇指。若是從你的視點\(\vec a\)到\(\vec b\)是順時針旋轉,那麼大拇指的指向也就是叉積的方向指向你;逆時針,則指向遠離你的方向。
關於向量叉積的一些參考連接:
https://www.shuxuele.com/algebra/vectors-cross-product.html
另,3Blue1Brown關於叉積的筆記