古典几何时期
余弦定理最早应用于平面几何,用于解三角形。向量概念的引入使其形式更加简洁统一。
在解析几何、线性代数以及计算机图形学中,向量求余弦值是一个极其基础且核心的概念。它不仅用于衡量两个向量之间的相似度,更是判断空间位置关系、计算投影长度以及进行机器学习算法(如余弦相似度)的关键工具。本文将深入解析向量夹角余弦公式,提供详细的推导过程、计算步骤以及Python代码实现,帮助您彻底掌握这一数学工具。
其中 a · b 为向量的数量积,|a| 和 |b| 分别为向量的模(长度)。
设二维或三维空间中有两个非零向量 a 和 b,它们的夹角为 θ (0 ≤ θ ≤ π)。则向量 a 与 b 的夹角余弦值可以通过以下公式计算:
这是最通用的定义形式,适用于任何维度的向量空间:
| 符号 | 含义 | 说明 |
|---|---|---|
| cosθ | 夹角余弦值 | 取值范围 [-1, 1],表示向量方向的相似程度 |
| a · b | 数量积(点积) | a₁b₁ + a₂b₂ + ... + aₙbₙ |
| |a| | 向量 a 的模 | √(a₁² + a₂² + ... + aₙ²) |
| |b| | 向量 b 的模 | √(b₁² + b₂² + ... + bₙ²) |
若向量 a = (x₁, y₁, z₁),向量 b = (x₂, y₂, z₂),则公式可展开为:
对于二维向量,只需忽略 z 轴分量即可。这一公式是解决大多数数学题和编程问题的基础。
理解公式的来源比死记硬背更重要。向量夹角余弦公式本质上是余弦定理在向量形式下的体现。
考虑由向量 a、b 和 a-b 构成的三角形。根据余弦定理:
|a-b|² = |a|² + |b|² - 2|a||b|cosθ
展开左边:|a-b|² = (a-b)·(a-b) = |a|² - 2a·b + |b|²
联立两式:
|a|² - 2a·b + |b|² = |a|² + |b|² - 2|a||b|cosθ
化简得:2a·b = 2|a||b|cosθ
即:cosθ = (a·b) / (|a||b|)
cosθ 越接近 1,说明两个向量方向越一致;越接近 -1,方向越相反;接近 0 则说明两向量几乎垂直。
a·b = |a| (|b|cosθ),其中 |b|cosθ 正是向量 b 在向量 a 方向上的投影长度(带符号)。
若 cosθ = 0,则 a·b = 0,两向量正交(垂直)。这是线性代数中判断基底是否正交的重要依据。
为了更清晰地展示如何应用向量求余弦值的公式,我们通过选项卡展示不同维度的计算案例。
题目:已知向量 a = (1, 0),向量 b = (1, 1),求 cosθ。
步骤:
结论:夹角 θ = 45° (π/4)。
题目:已知 a = (1, 2, 2),b = (2, -2, 1),求 cosθ。
步骤:
结论:cosθ = 0,说明向量 a 与 b 垂直。
题目:已知 a = (3, 4),b = (-6, -8),求 cosθ。
步骤:
结论:cosθ = -1,说明两向量 方向相反,夹角为 180°。
从欧几里得几何到现代人工智能,向量求余弦值的应用场景不断拓展。以下是其发展与应用的关键节点:
余弦定理最早应用于平面几何,用于解三角形。向量概念的引入使其形式更加简洁统一。
在高维向量空间中,余弦相似度成为衡量向量间相关性的标准方法,不再局限于物理空间的角度。
TF-IDF算法结合余弦相似度,用于计算文档间的相似性,是搜索引擎和推荐系统的基石。
在Word2Vec、BERT等NLP模型中,词向量与句子向量的余弦相似度用于语义匹配、聚类分析和情感分析。
在实际工程中,我们通常使用NumPy库来高效计算向量余弦值。以下是标准实现代码:
import numpy as np
def cosine_similarity(vec1, vec2):
# 计算点积
dot_product = np.dot(vec1, vec2)
# 计算模长
norm1 = np.linalg.norm(vec1)
norm2 = np.linalg.norm(vec2)
# 避免除以零
if norm1 == 0 or norm2 == 0:
return 0
# 计算余弦值
cos_val = dot_product / (norm1 norm2)
return cos_val
示例
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(f"余弦相似度: {cosine_similarity(a, b)}")
向量夹角余弦值的取值范围是 [-1, 1]。当值为1时,两向量同向;值为-1时,两向量反向;值为0时,两向量垂直。
通过计算向量的数量积 a·b 来判断。若 a·b > 0,则夹角为锐角(或0度);若 a·b < 0,则夹角为钝角(或180度);若 a·b = 0,则夹角为直角。
方向余弦是指向量与坐标轴正方向夹角的余弦值。对于向量 a=(x,y,z),其方向余弦分别为 cosα=x/|a|, cosβ=y/|a|, cosγ=z/|a|,且满足 cos²α+cos²β+cos²γ=1。
零向量没有确定的方向,因此与其他向量的夹角是未定义的。在计算余弦值时,若遇到零向量,分母为零,公式失效。实际应用中需单独处理。