公式,以及它的直觉
到目前为止,向量一直是可以相加和缩放的箭头。点积 是第一个能比较两个箭头、并返回一个数字告诉你它们有多指向同一方向的工具。配方很简单:对应坐标相乘,再全部加起来。
u = (3,4) v = (1,2) u dot v = 3*1 + 4*2 = 3 + 8 = 11
点积是一个更一般想法的日常版本——内积,也就是任何把两个向量相乘成一个数的合理方式。对平面或空间里的普通箭头来说,「内积」和「点积」是同一回事。
读懂符号
最有用的一个习惯,是在看点积的大小之前先看它的符号。结果为正,表示两个向量朝同一边倾斜;结果为负,表示它们指向相反;而结果恰好为零,则表示它们成直角。
(1,0) dot (1,0) = 1 same direction (+) (1,0) dot (0,1) = 0 right angle (0) (1,0) dot (-1,0)= -1 opposite (-)
长度与角度由此得出
把一个向量和它自己做点积,会发生一件好事:交叉项消失,剩下的就是各坐标的平方和。这个和的平方根,就是向量的长度,也就是它的范数。这不过是披上新外衣的勾股定理。
v = (3,4) v dot v = 3*3 + 4*4 = 9 + 16 = 25 norm(v) = sqrt(25) = 5
长度和符号合起来,就是完整的几何定律:u dot v = norm(u) * norm(v) * cos(theta),其中 theta 是它们之间的夹角。把它反过来解,你就能仅凭坐标还原出夹角——根本不需要量角器。
- 计算 u dot v(对应坐标相乘后相加)。
- 用「与自身点积」的技巧算出 norm(u) 和 norm(v)。
- 于是 cos(theta) = (u dot v) / (norm(u) * norm(v));取反余弦即得 theta。