内容目录

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

前言

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

什么是点乘

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

定义

对于两个矢量 \mathbf{A} = (a_1, a_2, a_3)\mathbf{B} = (b_1, b_2, b_3),它们的点乘计算公式为:

\mathbf{A} \cdot \mathbf{B} = a_1 b_1 + a_2 b_2 + a_3 b_3

几何意义

点乘的几何意义为:

\mathbf{A} \cdot \mathbf{B} = |\mathbf{A}| |\mathbf{B}| \cos(\theta)

其中,|\mathbf{A}||\mathbf{B}| 分别为矢量的模,\theta 为它们之间的夹角。

推导过程

  1. \mathbf{A}\mathbf{B} 的模分别为:

    |\mathbf{A}| = \sqrt{a_1^2 + a_2^2 + a_3^2}
    |\mathbf{B}| = \sqrt{b_1^2 + b_2^2 + b_3^2}
  2. 根据余弦定理,得出:

    \cos(\theta) = \frac{\mathbf{A} \cdot \mathbf{B}}{|\mathbf{A}| |\mathbf{B}|}
  3. 整理得:

    \mathbf{A} \cdot \mathbf{B} = |\mathbf{A}| |\mathbf{B}| \cos(\theta)

什么是叉乘

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

定义

对于两个矢量 \mathbf{A} = (a_1, a_2, a_3)\mathbf{B} = (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}

计算结果

经过行列式计算,叉乘的结果为:

\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)

几何意义

叉乘的几何意义为:

|\mathbf{A} \times \mathbf{B}| = |\mathbf{A}| |\mathbf{B}| \sin(\theta)

其中,\theta 为两个矢量之间的夹角。

推导过程

  1. |\mathbf{A}||\mathbf{B}| 分别为:

    |\mathbf{A}| = \sqrt{a_1^2 + a_2^2 + a_3^2}
    |\mathbf{B}| = \sqrt{b_1^2 + b_2^2 + b_3^2}
  2. 根据正弦定理,得出:

    |\mathbf{A} \times \mathbf{B}| = |\mathbf{A}| |\mathbf{B}| \sin(\theta)

点乘与叉乘的区别

  • 结果类型

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

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

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

参考资料

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

分类文章

personal_logo
Dongming
自由职业者

推荐活动

推荐文章

【操作攻略】GPU云环境的使用介绍
【项目实战】通过LLaMaFactory+Qwen2-VL-2B微调一个多模态医疗大模型
【课程总结】day19(中):Transformer架构及注意力机制了解
【重拾数学知识】矢量的点乘和叉乘
【课程总结】Day11(上):手势图像识别实战(LeNet模型)
【课程总结】day34:多模态大模型之ViT模型、CLIP模型论文阅读理解
【目录】AI知识学习路线图
【课程总结】day33:文生图StableDiffusion模型初步了解以及部署体验
【课程总结】day32(下):Xinference部署向量化模型
【课程总结】day31:多模态大模型初步了解
内容目录
滚动至顶部