点积(Dot Product)
点积是线性代数中的一种基本运算,用于两个向量的操作。它是将两个向量按分量相乘并求和的结果,用于衡量两个向量在同一方向上的相似性。
点积的定义
给定两个相同维度的向量 和 ,它们的点积定义为:
其中:
- 和 是两个向量对应位置的分量。
结果是一个标量值。
几何意义
点积也可以从几何的角度定义为:
其中:
- 和 是向量 和 的模(长度)。
- 是 和 之间的夹角。
通过点积可以判断:
- :向量夹角小于90°,方向相同。
- :向量正交,互相垂直。
- :向量夹角大于90°,方向相反。
性质
-
交换律:
-
分配律:
-
结合标量运算:
其中 k 是标量。
-
自身点积:
应用场景
-
向量投影: 点积用于计算一个向量在另一个向量上的投影:
-
相似性计算: 在机器学习中,用点积计算向量(如文本特征向量、图像特征向量)的相似性。
-
能量或功的计算: 力学中,点积用于计算力和位移的乘积(功)。
-
线性代数与神经网络: 神经网络中的全连接层核心运算是点积,用于权重和输入的线性组合。
Python实现
1. 基础实现
import numpy as np
# 定义两个向量
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 点积计算
dot_product = np.dot(a, b)
print(f"点积结果: {dot_product}")
运行结果
点积结果: 32
2. 几何应用
# 计算点积和夹角
import numpy as np
a = np.array([1, 2])
b = np.array([3, 4])
# 点积
dot = np.dot(a, b)
# 向量模
norm_a = np.linalg.norm(a)
norm_b = np.linalg.norm(b)
# 夹角
cos_theta = dot / (norm_a * norm_b)
theta = np.arccos(cos_theta)
print(f"点积: {dot}")
print(f"夹角(弧度): {theta}")
print(f"夹角(度数): {np.degrees(theta)}")
运行结果
点积: 11
夹角(弧度): 0.17985349979247847
夹角(度数): 10.304846468766044
总结
点积是一种简单而强大的运算,广泛应用于几何、物理和数据科学中。它不仅能描述向量间的相似性,还可以延伸到矩阵运算及其在机器学习中的核心应用。理解点积的几何意义和性质有助于解决复杂的实际问题。