【重拾数学知识】矢量的点乘和叉乘

【重拾数学知识】矢量的点乘和叉乘

前言

在科学与工程中,数学是理解和解决问题的基础。矢量作为一种重要的数学工具,广泛应用于物理、计算机科学和工程等领域。本文将探讨矢量的两种基本运算:点乘和叉乘,并提供Python代码示例,帮助读者更好地理解这些概念。

什么是点乘

点乘(又称内积)是两个矢量的代数运算,结果是一个标量。

定义

对于两个矢量 A = ( a 1 , a 2 , a 3 ) \mathbf{A} = (a_1, a_2, a_3) A=(a1,a2,a3) B = ( b 1 , b 2 , b 3 ) \mathbf{B} = (b_1, b_2, b_3) B=(b1,b2,b3),它们的点乘计算公式为:

A ⋅ B = a 1 b 1 + a 2 b 2 + a 3 b 3 \mathbf{A} \cdot \mathbf{B} = a_1 b_1 + a_2 b_2 + a_3 b_3 AB=a1b1+a2b2+a3b3

几何意义

点乘的几何意义为:
A ⋅ B = ∣ A ∣ ∣ B ∣ cos ⁡ ( θ ) \mathbf{A} \cdot \mathbf{B} = |\mathbf{A}| |\mathbf{B}| \cos(\theta) AB=A∣∣Bcos(θ)
其中, ∣ A ∣ |\mathbf{A}| A ∣ B ∣ |\mathbf{B}| B 分别为矢量的模, θ \theta θ 为它们之间的夹角。

推导过程

  1. A \mathbf{A} A B \mathbf{B} B 的模分别为:
    ∣ A ∣ = a 1 2 + a 2 2 + a 3 2 |\mathbf{A}| = \sqrt{a_1^2 + a_2^2 + a_3^2} A=a12+a22+a32
    ∣ B ∣ = b 1 2 + b 2 2 + b 3 2 |\mathbf{B}| = \sqrt{b_1^2 + b_2^2 + b_3^2} B=b12+b22+b32

  2. 根据余弦定理,得出:
    cos ⁡ ( θ ) = A ⋅ B ∣ A ∣ ∣ B ∣ \cos(\theta) = \frac{\mathbf{A} \cdot \mathbf{B}}{|\mathbf{A}| |\mathbf{B}|} cos(θ)=A∣∣BAB

  3. 整理得:
    A ⋅ B = ∣ A ∣ ∣ B ∣ cos ⁡ ( θ ) \mathbf{A} \cdot \mathbf{B} = |\mathbf{A}| |\mathbf{B}| \cos(\theta) AB=A∣∣Bcos(θ)

什么是叉乘

叉乘(又称外积)是两个矢量的运算,结果是一个新的矢量,且与原来的两个矢量都垂直。

定义

对于两个矢量 A = ( a 1 , a 2 , a 3 ) \mathbf{A} = (a_1, a_2, a_3) A=(a1,a2,a3) B = ( b 1 , b 2 , b 3 ) \mathbf{B} = (b_1, b_2, b_3) B=(b1,b2,b3),它们的叉乘计算公式为:

A × B = ∣ i j k a 1 a 2 a 3 b 1 b 2 b 3 ∣ \mathbf{A} \times \mathbf{B} = \begin{vmatrix} \mathbf{i} & \mathbf{j} & \mathbf{k} \\ a_1 & a_2 & a_3 \\ b_1 & b_2 & b_3 \end{vmatrix} A×B= ia1b1ja2b2ka3b3

计算结果

经过行列式计算,叉乘的结果为:
A × B = ( a 2 b 3 − a 3 b 2 , a 3 b 1 − a 1 b 3 , a 1 b 2 − a 2 b 1 ) \mathbf{A} \times \mathbf{B} = (a_2 b_3 - a_3 b_2, a_3 b_1 - a_1 b_3, a_1 b_2 - a_2 b_1) A×B=(a2b3a3b2,a3b1a1b3,a1b2a2b1)

几何意义

叉乘的几何意义为:
∣ A × B ∣ = ∣ A ∣ ∣ B ∣ sin ⁡ ( θ ) |\mathbf{A} \times \mathbf{B}| = |\mathbf{A}| |\mathbf{B}| \sin(\theta) A×B=A∣∣Bsin(θ)
其中, θ \theta θ 为两个矢量之间的夹角。

推导过程

  1. ∣ A ∣ |\mathbf{A}| A ∣ B ∣ |\mathbf{B}| B 分别为:
    ∣ A ∣ = a 1 2 + a 2 2 + a 3 2 |\mathbf{A}| = \sqrt{a_1^2 + a_2^2 + a_3^2} A=a12+a22+a32
    ∣ B ∣ = b 1 2 + b 2 2 + b 3 2 |\mathbf{B}| = \sqrt{b_1^2 + b_2^2 + b_3^2} B=b12+b22+b32

  2. 根据正弦定理,得出:
    ∣ A × B ∣ = ∣ A ∣ ∣ B ∣ sin ⁡ ( θ ) |\mathbf{A} \times \mathbf{B}| = |\mathbf{A}| |\mathbf{B}| \sin(\theta) A×B=A∣∣Bsin(θ)

点乘与叉乘的区别

  • 结果类型

    • 点乘的结果是标量。
    • 叉乘的结果是矢量。
  • 几何意义

    • 点乘反映了两个矢量之间的夹角的余弦关系。
    • 叉乘反映了两个矢量之间的夹角的正弦关系,并且结果矢量垂直于原来的两个矢量。

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库来实现矢量的点乘和叉乘。

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洞明智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值