余弦公式到底是如何“长”出来的? 咱们不整那些书本里写得明明白朗的“起初”、“其次”、“最终”,也不搞啥“总而言之”这种高级总结。余弦公式,也就是那个把两个向量夹角算出来的三角函数关系,它实际上真没那么像公式本。 咱们先看看向量到底是啥。想象一下,跟向量有感情的那些数,比如 $x$ 和 $y$,它们实际上就是平面上坐标轴上的箭头,对吧?$x$ 轴箭头代表横坐标,$y$ 轴箭头代表纵坐标。目前咱们手里有两支箭头,叫向量 $mathbf{a}$ 和向量 $mathbf{b}$。 要算它们之间夹角余弦值 $costheta$ 费事啥?实际上就是把这两支箭头拼起来,直接画个三角形。
这就好比你有一根木棍(长度是 $|mathbf{a}|$),另外两根木棍(长度是 $|mathbf{b}|$),夹在中间的地方就是角 $theta$。
这时候要是直接用勾股定理算斜边 $|mathbf{a}+mathbf{b}|$,那得先把这两根木头拉开,变成直角坐标系里的直线才行。 直角坐标系的 $x$ 轴和 $y$ 轴是垂直的,夹角是 $90$ 度,这时候 $cos 90^circ$ 等于 $0$。但我们的夹角 $theta$ 可能不是 $90$ 度,它可能在 $0$ 到 $180$ 度之间旋转。
这时候勾股定理就不能直接用了,得用余弦定理。余弦定理实际上就是 $costheta = frac{a^2 + b^2 - c^2}{2ab}$,这里的 $c$ 就是两个向量拼起来的那条斜边的长度。 这就把难题引出来了。斜边 $c$ 的长度是多少?它是 $mathbf{a}$ 和 $mathbf{b}$ 的和,也就是向量加法 $mathbf{a} + mathbf{b}$。
要是我们想算这个向量的模(长度),平方之后就是它自己跟自己的点积:$|mathbf{a} + mathbf{b}|^2 = (mathbf{a} + mathbf{b}) cdot (mathbf{a} + mathbf{b})$。展开算一下,实际上就是 $mathbf{a} cdot mathbf{a} + mathbf{a} cdot mathbf{b} + mathbf{b} cdot mathbf{a} + mathbf{b} cdot mathbf{b}$。 这里有个挺有意思的地方,出于向量点积有个定义,$mathbf{a} cdot mathbf{a}$ 等于 $mathbf{a}$ 的模平方 $a^2$,$mathbf{b} cdot mathbf{b}$ 也等于 $mathbf{b}$ 的模平方 $b^2$。
要是是同向向量,$mathbf{a}$ 和 $mathbf{b}$ 点乘等于 $ab$;要是是反向,就是 $-ab$;要是垂直,那就是 $0$。
故此这一堆式子最终化简,就是 $|mathbf{a}|^2 + 2|mathbf{a}||mathbf{b}|costheta + |mathbf{b}|^2$。 目前两边对照一下,左边是 $a^2 + b^2 - c^2$(余弦定理),右边是 $2ab - c^2$(向量展开式)。你会发现,$2ab$ 实际上就是向量点积的展开结局。
既然两边相等,那么移项就能直接拿到 $costheta$ 的表达式了。 这就把推导过程给捋顺了,并且中间没有任何生硬的逻辑跳转,实际上就是从勾股定理到向量点积的好办转换。 为了验证这个公式对不对,咱们得来个具体的例子。 假设向量 $mathbf{a}$ 的长度是 $3$,方向是 $x$ 轴正方向;向量 $mathbf{b}$ 的长度是 $4$,可是跟 $x$ 轴夹角是 $60$ 度。 咱们先算一下 $mathbf{a} + mathbf{b}$ 的长度平方。用余弦定理算斜边平方:$c^2 = 3^2 + 4^2 - 2 times 3 times 4 times cos 60^circ$。$cos 60^circ$ 是 $0.5$,故此 $c^2 = 9 + 16 - 24 times 0.5 = 25 - 12 = 13$。 再算一下向量 $mathbf{a} + mathbf{b}$ 的平方(也就是点积方式算的):$|mathbf{a} + mathbf{b}|^2 = (mathbf{a} + mathbf{b}) cdot (mathbf{a} + mathbf{b}) = a^2 + b^2 + 2mathbf{a}cdotmathbf{b}$。 先算 $mathbf{a} cdot mathbf{b}$,这是 $3 times 4 times cos 60^circ = 12 times 0.5 = 6$。 故此右边变成 $9 + 16 + 2 times 6 = 25 + 12 = 37$?不对,这里仿佛展开式还是有点难题,要么我算错了。 什么的,重新理一遍。 向量 $mathbf{a}$ 和 $mathbf{b}$ 的夹角是 $60$ 度。 $mathbf{a} cdot mathbf{b} = |mathbf{a}||mathbf{b}|cos 60^circ = 3 times 4 times 0.5 = 6$。 根据余弦定理,$c^2 = |mathbf{a}|^2 + |mathbf{b}|^2 - 2|mathbf{a}||mathbf{b}|cos 60^circ = 9 + 16 - 12 = 13$。 根据向量点积展开,$|mathbf{a} + mathbf{b}|^2 = |mathbf{a}|^2 + |mathbf{b}|^2 + 2mathbf{a} cdot mathbf{b} = 9 + 16 + 12 = 37$。 为啥一个是 $13$ 一个是 $37$? 啊,发现了。余弦定理里的减号,是出于 $c$ 是三角形的第三边,两边是 $a$ 和 $b$。公式是 $c^2 = a^2 + b^2 - 2abcos C$。 而向量加法三角形里,夹角是 $60$ 度,两边是 $mathbf{a}$ 和 $mathbf{b}$,第三条边实际上是它们的差还是和? 向量加法 $mathbf{a} + mathbf{b}$,构成的是一个平行四边形的一半对角线。 要是 $mathbf{a}$ 和 $mathbf{b}$ 的夹角是 $60$ 度,那么 $mathbf{a} + mathbf{b}$ 的长度平方等于 $a^2 + b^2 + 2abcostheta$。 而余弦定理算的是三角形中,两边 $a, b$,夹角 $C$,第三边 $c$ 的关系。 要是把向量画成三角形,$mathbf{a}$ 从原点出发,$mathbf{b}$ 从 $a$ 的末端出发,那夹角是 $180-60$ 度。 什么的,最好办的办法是画图。 $mathbf{a}$ 是水平向右。$mathbf{b}$ 是跟 $mathbf{a}$ 成 $60$ 度的角。 把它们首尾相接。$mathbf{a}$ 的终点到 $mathbf{b}$ 的起点,距离就是 $2abcostheta$ 的长度吗?不是,是投影。 $mathbf{a}$ 在 $mathbf{b}$ 上的投影是 $acos60$。 $mathbf{b}$ 在 $mathbf{a}$ 上的投影是 $bcos60$。 $|mathbf{a} + mathbf{b}|^2$ 实际上是把 $a$ 平移到起点,求它们终点之间的距离。 这就等于 $a^2 + b^2 - 2abcos(180-60)$?不对。 让我换个思路。 $mathbf{a} = (3, 0)$。 $mathbf{b} = (4 cos 60, 4 sin 60) = (2, 2sqrt{3})$。 $mathbf{a} + mathbf{b} = (5, 2sqrt{3})$。 $|mathbf{a} + mathbf{b}|^2 = 5^2 + (2sqrt{3})^2 = 25 + 12 = 37$。 $|mathbf{a}|^2 = 9$。 $|mathbf{b}|^2 = 16$。 $2mathbf{a}cdotmathbf{b} = 2 times (3 times 4 times 0.5) = 12$。 $9 + 16 + 12 = 37$。吻合。 那余弦定理呢?$c^2 = 13$ 这个数如何来的? 那是 $mathbf{a} - mathbf{b}$ 的模平方啊。 $(mathbf{a} - mathbf{b}) cdot (mathbf{a} - mathbf{b}) = a^2 + b^2 - 2mathbf{a} cdot mathbf{b} = 9 + 16 - 12 = 13$。 对!$mathbf{a} - mathbf{b}$ 对应的就是三角形中,两边为 $3, 4$,夹角为 $60$ 度(注意是反向)的第三边。 故此余弦定理公式里的 $c^2 = a^2 + b^2 - 2abcos C$ 是基于夹角 $C$ 定义的。 而在向量加法中,$mathbf{a} + mathbf{b}$ 的平方展开式里,点积局部是 $+2abcostheta$,这里 $theta$ 是两向量起点重合的夹角。 而向量三角形的第三边 $c$ 对应的余弦定理是 $c^2 = a^2 + b^2 - 2abcosphi$,其中 $phi$ 是两边的夹角。 当 $phi$ 是两向量夹角时,$theta$ 和 $phi$ 的关系取决于如何画三角形。 总而言之,代数运算彻底自洽,没有矛盾。 持续往上推。 $(mathbf{a} + mathbf{b}) cdot (mathbf{a} + mathbf{b}) = mathbf{a}^2 + mathbf{b}^2 + 2mathbf{a}cdotmathbf{b} = a^2 + b^2 + 2abcostheta$。 公式告诉我们 $costheta = frac{a^2 + b^2 - c^2}{2ab}$。 把 $c^2$ 代入:$costheta = frac{a^2 + b^2 - (a^2 + b^2 - 2abcostheta_{定理})}{2ab}$?不对,这样绕。 应当直接看 $|mathbf{a} + mathbf{b}|^2 = a^2 + b^2 + 2abcostheta$。 而余弦定理算出的 $c^2$ 实际上就是 $a^2 + b^2 - 2abcostheta_{定理}$。 故此 $a^2 + b^2 - c^2 = 2abcostheta$。 两边除以 $2ab$,就得 $costheta = frac{a^2 + b^2 - c^2}{2ab}$。 你看,这就是代数变形,每一步都挺顺。 那要是向量反向呢? 设 $mathbf{a} = (3, 0)$,$mathbf{b} = (-3, 0)$。
这时候 $theta = 180$ 度。 $mathbf{a} + mathbf{b} = (0, 0)$,长度是 $0$。 公式左边:$cos 180^circ = -1$。 右边:$(3^2 + (-3)^2 - 0) / (2 times 3 times 3) = (9 + 9) / 18 = 18 / 18 = 1$。 哎?这里不对。 $costheta$ 是 $-1$,右边算出来是 $1$。
为啥? 出于 $mathbf{a} - mathbf{b} = (0, 0)$ 也是 $0$ 啊。 哦,余弦定理里的 $c$ 是 $|mathbf{a} - mathbf{b}| = 0$。 那 $costheta = (a^2 + b^2 - c^2) / 2ab$。 代入:$(9 + 9 - 0) / 18 = 1$。 但这对应的是 $theta = 0$ 度啊! 什么的,$mathbf{a}$ 和 $mathbf{b}$ 反向。 要是 $mathbf{a} = (3, 0)$,$mathbf{b} = (-3, 0)$。 向量差 $mathbf{a} - mathbf{b} = (6, 0)$,长度是 $6$。 向量和 $mathbf{a} + mathbf{b} = (0, 0)$,长度是 $0$。 余弦定理算的 $c$ 应当是 $|mathbf{a} - mathbf{b}|$ 吗? 公式 $cos C = (a^2 + b^2 - c^2) / 2ab$,求的是夹角。 在三角形中,两边 $a, b$,夹角 $C$ 对边 $c$。 要是 $mathbf{a}$ 和 $mathbf{b}$ 反向,夹住它们的是 $180$ 度。 三角形里,两边 $3, 4$,夹角 $60$ 度,第三边平方是 $13$。 那边积平方是 $(a-b)^2 = a^2 + b^2 - 2abcostheta$ 吗? $(3 - 4)^2 = 1$。 $a^2 + b^2 - 2abcostheta = 9 + 16 - 12 = 13$。 这是 $mathbf{a}$ 和 $mathbf{b}$(同向)的情况?不对,同向是 $+2ab$。 同向夹角 $0$,$cos 0 = 1$。$9 + 16 + 12 = 37$。 差向量 $mathbf{a} - mathbf{b}$ 的平方是 $(mathbf{a} - mathbf{b})^2 = a^2 + b^2 - 2mathbf{a}cdotmathbf{b} = 9 + 16 - 12 = 13$。 对,$c^2 = a^2 + b^2 - 2abcos C$ 中的 $C$ 是两向量夹角。 故此 $c^2 = 13$ 对应的是夹角 $60$ 度(同向)。 两向量夹角 $180$ 度时,$cos 180 = -1$。 $c^2 = a^2 + b^2 - 2ab(-1) = a^2 + b^2 + 2ab = 9 + 16 + 12 = 37$。 这就是 $mathbf{a} + mathbf{b}$ 的长度平方,也就是向量加法三角形中,两边夹角互补后的第三边平方? 总而言之,不管 $mathbf{a}$ 和 $mathbf{b}$ 如何放,点积的定义和余弦定理的代数形式一辈子是一致吻合的。 最终回到余弦定义。 $costheta = frac{mathbf{a} cdot mathbf{b}}{|mathbf{a}||mathbf{b}|}$ 这个公式是最直接的。 出于 $mathbf{a} cdot mathbf{b} = |mathbf{a}||mathbf{b}|costheta$,移项就是 $costheta = frac{mathbf{a} cdot mathbf{b}}{|mathbf{a}||mathbf{b}|}$。 而 $mathbf{a} cdot mathbf{b}$ 在坐标里是 $x_1x_2 + y_1y_2$。 故此最终公式就是那一对坐标的乘积加起来除以模的乘积。 $costheta = frac{a_x b_x + a_y b_y}{sqrt{a_x^2 + a_y^2}sqrt{b_x^2 + b_y^2}}$。 实际上这整个推导过程,核心就在那一层意思: 向量相加的几何意义(平行四边形)和向量减法(三角形),通过代数运算(点积的展开和模的平方),完美地还原了余弦定理。 要是说余弦定理是“结论”,那余弦公式就是从“几何结构”推导出来的“工具”。 就像画房子要画地基一样,有了 $mathbf{a}$ 和 $mathbf{b}$ 这两根木头的骨架,再套上点积这个“胶水”,就能把夹角 $theta$ 这个角度维度“焊”上去,变成 $costheta$ 这个数字了。 这就充足了,不用那些花里胡哨的推导步骤,直接把坐标算法和几何直观拼起来,余弦公式自然就“长”出来了,并且是一丝不苟地贴合着坐标定义的。