文章目录
Toggle【重拾数学知识】矢量的点乘和叉乘
前言
在科学与工程中,数学是理解和解决问题的基础。矢量作为一种重要的数学工具,广泛应用于物理、计算机科学和工程等领域。本文将探讨矢量的两种基本运算:点乘和叉乘,并提供Python代码示例,帮助读者更好地理解这些概念。
什么是点乘
点乘(又称内积)是两个矢量的代数运算,结果是一个标量。
定义
对于两个矢量 A=(a1,a2,a3)
和 B=(b1,b2,b3)
,它们的点乘计算公式为:
A⋅B=a1b1+a2b2+a3b3
几何意义
点乘的几何意义为:
A⋅B=∣A∣∣B∣cos(θ)
其中,∣A∣
和 ∣B∣
分别为矢量的模,θ
为它们之间的夹角。
推导过程
-
设
A
和B
的模分别为:∣A∣=a12+a22+a32
∣B∣=b12+b22+b32
-
根据余弦定理,得出:
cos(θ)=∣A∣∣B∣A⋅B
-
整理得:
A⋅B=∣A∣∣B∣cos(θ)
什么是叉乘
叉乘(又称外积)是两个矢量的运算,结果是一个新的矢量,且与原来的两个矢量都垂直。
定义
对于两个矢量 A=(a1,a2,a3)
和 B=(b1,b2,b3)
,它们的叉乘计算公式为:
A×B=∣∣∣∣∣∣∣ia1b1ja2b2ka3b3∣∣∣∣∣∣∣
计算结果
经过行列式计算,叉乘的结果为:
A×B=(a2b3−a3b2,a3b1−a1b3,a1b2−a2b1)
几何意义
叉乘的几何意义为:
∣A×B∣=∣A∣∣B∣sin(θ)
其中,θ
为两个矢量之间的夹角。
推导过程
-
设
∣A∣
和∣B∣
分别为:∣A∣=a12+a22+a32
∣B∣=b12+b22+b32
-
根据正弦定理,得出:
∣A×B∣=∣A∣∣B∣sin(θ)
点乘与叉乘的区别
-
结果类型:
- 点乘的结果是标量。
- 叉乘的结果是矢量。
-
几何意义:
- 点乘反映了两个矢量之间的夹角的余弦关系。
- 叉乘反映了两个矢量之间的夹角的正弦关系,并且结果矢量垂直于原来的两个矢量。
Python代码实现
使用NumPy实现
import numpy as np
# 定义两个矢量
A = np.array([1, 2, 3])
B = np.array([4, 5, 6])
# 计算点乘
dot_product = np.dot(A, B)
print("点乘结果:", dot_product)
# 计算叉乘
cross_product = np.cross(A, B)
print("叉乘结果:", cross_product)
# 矩阵的点乘
matrix_A = np.array([[1, 2], [3, 4]])
matrix_B = np.array([[5, 6], [7, 8]])
matrix_dot_product = np.dot(matrix_A, matrix_B)
print("矩阵点乘结果:\n", matrix_dot_product)
运行结果:
点乘结果: 32
叉乘结果: [-3 6 -3]
矩阵点乘结果:
[[19 22]
[43 50]]
使用PyTorch实现
import torch
# 定义两个矢量
A = torch.tensor([1.0, 2.0, 3.0])
B = torch.tensor([4.0, 5.0, 6.0])
# 计算点乘
dot_product = torch.dot(A, B)
print("点乘结果:", dot_product.item())
# 计算叉乘
cross_product = torch.cross(A, B)
print("叉乘结果:", cross_product)
# 矩阵的点乘
matrix_A = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
matrix_B = torch.tensor([[5.0, 6.0], [7.0, 8.0]])
matrix_dot_product = torch.mm(matrix_A, matrix_B)
print("矩阵点乘结果:\n", matrix_dot_product)
运行结果:
点乘结果: 32.0
叉乘结果: tensor([-3., 6., -3.])
矩阵点乘结果:
tensor([[19., 22.],
[43., 50.]])
内容小结
- 点乘(又称内积)是两个矢量的代数运算,结果是一个标量。
- 叉乘(又称外积)是两个矢量的运算,结果是一个新的矢量,且与原来的两个矢量都垂直。
- Python中可以使用NumPy和PyTorch库来实现矢量的点乘和叉乘。