從加箭頭到乘箭頭
在上一篇裡,你學會把 向量 當成一支有方向、有長度的箭頭,並把兩支首尾相接地相加。加箭頭感覺很自然。但你能把兩支箭頭 相乘 嗎?不能照數字相乘的方式來——並沒有一支單一的「乘積箭頭」會如你所願地表現。取而代之的,是兩種真正有用的乘積,各自捕捉不同的幾何事實。第一種,也是兩者中較溫和的,是 點積,寫作 u . v。它接受兩個向量,回傳的不是一個向量,而是一個普通的數——一個純量。
把兩支箭頭變成一個數有什麼用?因為對的那個數可以把角度編碼進去。點積的整個重點在於:它把兩支箭頭的兩個長度和它們之間的夾角,捆成一個整潔的量,而由這一個量你就能反推夾角、判斷兩支箭頭是否垂直,或量出一支箭頭有多少分量指向另一支。這是把好多幾何,塞進了一次乘加運算裡。
同一公式的兩張臉
點積有兩個看起來截然不同、卻永遠一致的定義。分量定義 說:把對應的座標相乘,再把結果相加。對 u = (u_1, u_2, u_3) 與 v = (v_1, v_2, v_3),點積是 u . v = u_1*v_1 + u_2*v_2 + u_3*v_3——每個軸一次乘法,再做一次加總。它快、它機械,而且除了你手上已有的 分量 之外什麼都不需要。
幾何定義 說的,聽起來則毫不相干:u . v = |u| * |v| * cos theta,其中 |u| 與 |v| 是兩個長度,theta 是兩支箭頭之間的夾角。這個版本把意義寫在臉上——它是用長度和角度搭起來的,是幾何最原始的材料。安靜的奇蹟在於:這兩個公式,一個是座標苦工、一個是長度乘餘弦,每一次都給出相同的數。這個相等是一條貨真價實的定理(它可由 餘弦定理 推出),不是巧合,也正是讓你能從座標算出角度的那座橋。
Two definitions of the dot product (always equal): Components: u . v = u_1*v_1 + u_2*v_2 + u_3*v_3 Geometric: u . v = |u| * |v| * cos theta Example: u = (3, 0, 0), v = (0, 4, 0) Components: 3*0 + 0*4 + 0*0 = 0 So cos theta = 0, theta = 90 degrees -- the arrows are perpendicular.
把角度讀出來
把兩個定義設成相等、解出角度,你就得到最有用的單一推論:cos theta = (u . v) / (|u| * |v|)。用分量便宜地算出點積,除以兩個長度的乘積,結果就是兩支箭頭之間夾角的餘弦。取反餘弦,你就得到 theta 本身。這就是電腦「看見」角度的方式——不靠量角器,而靠一次乘法、一次加法、一次除法。
- 由分量算出點積:u . v = u_1*v_1 + u_2*v_2 + u_3*v_3。
- 算出兩個長度:|u| = sqrt(u_1^2 + u_2^2 + u_3^2),|v| 同理。
- 相除:cos theta = (u . v) / (|u| * |v|)。這個數永遠落在 -1 與 1 之間。
- 取反餘弦得到 theta。點積為正表示銳角,為零表示直角,為負表示鈍角。
光是點積的正負號,在你還沒做除法之前,就已經在說故事了。因為長度 |u| 與 |v| 永遠為正,u . v 的正負號與 cos theta 的正負號一致。所以 正的 點積表示夾角小於 90 度——兩支箭頭方向大致一致。負的 點積表示鈍角——它們大致相反。而恰為 零 的點積表示 cos theta = 0,也就是 theta = 90 度。垂直變成了一個單一的算術檢驗:u 與 v 垂直,恰恰就在 u . v = 0 之時。
向量與自己點積:長度再現
這裡有個小巧卻優美的特例。u . u 是什麼——一個向量和自己點積?經由幾何定義,一個向量和自己所成的夾角是 0 度,而 cos 0 = 1,所以 u . u = |u| * |u| * 1 = |u|^2。經由分量定義,同一個量是 u_1^2 + u_2^2 + u_3^2。把它們設成相等,得到 |u| = sqrt(u_1^2 + u_2^2 + u_3^2)——空間中的長度公式,而它不過是把 畢氏定理 用了兩次,一次量地板、一次量高度。
所以長度並不是栓在點積旁邊的另一個獨立想法——它就住在點積 裡面。範數 |u| 不過是 u 和自己點積後再開根號。這就是為什麼 單位向量(長度恰為 1 的向量)滿足俐落的關係 u . u = 1:它的長度平方是 1。一旦你看出長度是點積的化身,那些原本看似不相干的公式,就開始像是同一個家族的成員了。
投影:一支箭頭投在另一支上的影子
點積另一份大禮是 投影。想像向量 v 躺在地上,太陽從正上方把另一個向量 u 的影子投到 v 所在的直線上。那道影子——u 有多少分量指向 v——就是 u 在 v 上的投影。它回答一個處處出現的問題:在整個 u 之中,有哪一部分是沿著 v 方向跑的?點積算的正是這份重疊。
那道影子的長度,即 純量投影,是 (u . v) / |v|。你可以直接從幾何定義讀出它:u . v = |u| * |v| * cos theta,而 |u| * cos theta 正是直角三角形的鄰邊——u 影子的長度。把點積除以 |v| 剝掉多餘的那個 |v| 因子,留下的就是影子長度。若你要的是作為完整 向量 的投影、而不只是它的長度,就把這個純量乘上 v 方向的單位向量 v / |v|,得到 (u . v / |v|^2) * v。
留意正負號,並誠實面對它的意義。若 theta 是鈍角,cos theta 為負,所以純量投影為負——影子沿著 v 的直線指向 相反 那邊。這不是要藏起來的錯誤;這是投影忠實地報告 u 偏離了 v。這正是把任一向量拆成「沿某選定方向的分量」與「與其垂直的分量」背後的引擎——當你走到平面、力,以及之後記錄向量對每個軸如何傾斜的 方向餘弦 時,你會不斷倚靠這個分解。
誠實的習慣與一個前瞻
幾個誠實的提醒能讓點積保持可信。第一,它是 可交換的:u . v = v . u,因為把分量相乘、再對調哪個向量是哪個,什麼都不會改變。第二,它對加法有分配律,u . (u + w) 寫法即 u . (v + w) = u . v + u . w,這正是讓你能自由展開算式的根據。但第三——這會絆倒人——根本談不上 結合律,因為 (u . v) . w 毫無意義:u . v 已經是一個數,而你不能拿一個數去和一個向量點積。永遠記住:點積吃掉兩個向量,就把向量的世界拋在身後了。
也值得把點積做不到的事說清楚。它告訴你兩支箭頭之間的夾角,卻從不告訴你該往哪邊轉才能從一支轉到另一支——它無法區分 +theta 與 -theta,因為 cos theta = cos(-theta)。面積與定向,它最多只能間接給你、甚至給不了。要得到轉動方向、兩向量張成的平行四邊形的有號面積,以及一支同時垂直於兩者的向量,你需要一個完全不同的工具。
那個工具就是 外積,也就是下一篇的主題。點積把兩支箭頭壓成一個與角度相連的數,外積卻從兩支箭頭造出一支與面積、方向相連的全新箭頭。同時把這兩者放在心裡——一個給純量、一個給向量——正是通往前方一切三維幾何的鑰匙:直線、平面、體積,以及它們在空間中如何彼此契合。