让AI知识触手可及

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

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

前言

在科学与工程中,数学是理解和解决问题的基础。矢量作为一种重要的数学工具,广泛应用于物理、计算机科学和工程等领域。本文将探讨矢量的两种基本运算:点乘和叉乘,并提供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库来实现矢量的点乘和叉乘。

参考资料

声明:一起AI技术所有文章,如无特殊说明或标注,均为本站作者原创发布。任何个人或组织,在未征得作者同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
原创不易,内容版权受保护,感谢您的尊重与支持。
0 0 投票数
Article Rating
订阅评论
提醒
guest的头像
0 评论
内联反馈
查看所有评论
Picture of Dongming
Dongming
见天地,见众生,见自己。

分类文章

推荐活动

推荐文章

【产品体验】DeepSeek的三种接入使用方法
TeleAI “复杂推理大模型” 达竞赛级数学表现,评分超 o1-preview
【论文简读】DeepSeek LLM:以长远主义拓展开源语言模型
Just keep scaling!思维链作者Jason Wei 40分钟讲座剖析LLM扩展范式
【产品体验】趋动云上使用LLaMaFactory进行模型微调的流程体验
【课程总结】day24(上):大模型三阶段训练方法(LLaMa Factory)
【项目实战】通过LLaMaFactory+Qwen2-VL-2B微调一个多模态医疗大模型
【模型训练】在AutoDL上使用LLamaFactory进行模型训练
Meta、斯坦福等:AI的下一个前沿,正是陶哲轩说的形式化数学推理
自缘身在最高层?OpenAI o1 pro竞赛级评测结果新鲜出炉
0
希望看到您的想法,请您发表评论x
滚动至顶部