点积,也叫内积,是向量运算中的一种。对于两个
维向量
和
,其点积可以表示为:
点积的本质是将两个向量投影在彼此上的结果相加。点积的值可以告诉我们两个向量的夹角的大小和它们在同一个方向上的程度。如果两个向量的点积为
,则它们是正交的(即,它们垂直于彼此)。点积还可以用来计算向量的模长和计算两个向量之间的距离。
假设有两个向量
和
,它们的点积定义为:
点积也可以写成矩阵乘法的形式,即:
下面通过矩阵乘法的性质来推导点积的式子。
首先,矩阵乘法的分配律告诉我们:
展开上式,得到:
接着,矩阵乘法的结合律告诉我们:
因此,点积的式子
得到了证明。
点积应用场景比较广泛,以下是一些典型的应用场景:
以下是几个点积的相关案例:
假设有一个力F和一个位移向量d,它们的点积可以用来计算力沿着位移向量的功(即工作)。用以下公式可以计算:W = F · d。
例如,如果一个力是10 N,一个物体向右移动5米,则力沿着物体移动的工作为50焦耳。
向量A和向量B垂直,当且仅当它们的点积为零,即A·B=0。例如,如果A = (1, 2, -3)和B = (-2, 1, 2),则它们不是垂直的,因为它们的点积为-4。
向量A在另一个向量B上的投影可以用点积来计算,如下所示:projB(A) = (A·B / ||B||²) · B,其中projB(A)表示A在B上的投影,||B||表示向量B的长度。
例如,如果A = (2, 4, 6)和B = (1, 0, 0),则A在B上的投影为projB(A) = (2, 0, 0)。
两个向量之间的夹角可以用点积来计算,如下所示:cosθ = A·B / (||A|| ||B||),其中θ是夹角,||A||和||B||分别是向量A和向量B的长度。
例如,如果A = (1, 2, 3)和B = (2, -1, 2),则它们之间的夹角为cosθ = (1×2 + 2×(-1) + 3×2) / (√(1² + 2² + 3²) × √(2² + (-1)² + 2²)) = 0.612。
这些案例展示了点积的实际应用。
点积函数是指对两个向量进行内积运算,输出一个标量。可以使用如下的代码实现:
def dot_product(v1, v2):
"""
计算两个向量的点积
:param v1: 第一个向量,列表类型
:param v2: 第二个向量,列表类型
:return: 两个向量的点积,标量类型
"""
if len(v1) != len(v2):
raise ValueError("向量长度不一致")
return sum([i*j for i,j in zip(v1,v2)])
该函数首先判断两个向量的长度是否一致,如果不一致,会抛出ValueError异常。然后使用zip函数对两个向量进行对应元素的相乘,并使用sum函数对所有元素相加。最终输出点积结果。
使用该函数的示例:
vector1 = [1, 2, 3]
vector2 = [4, 5, 6]
dot_product_res = dot_product(vector1, vector2)
print(dot_product_res) # 输出 32