向量各种积的定义与说明

内积外积都是一种广义的称呼,我们最常见的内积是点积(数量积、标量积和点积定义相同),即对应元素乘然后累加;

但是,我们最容易弄错外积的定义,我们理解的两个向量运算得到第三个向量,且其方向垂直于另外两个向量的运算严格上叫叉积、叉乘或向量积,而非外积。外积有其单独定义,其对向量运算的结果为矩阵


那么假设有两个向量:
a = [ a 1 a 2 a 3 ] ; b = [ b 1 b 2 b 3 ] a=\left[\begin{array}{c} a_1 \\ a_2 \\ a_3 \end{array}\right]; b= \left[\begin{array}{c} b_1 \\ b_2 \\ b_3 \end{array}\right] a= a1a2a3 ;b= b1b2b3

内积(Inner Product)

欧几里得空间(Euclidean space)是内积空间(inner product space)的一个特例。在实数域且有限维的内积空间(Inner product space)被称作欧几里得空间(Euclidean space)

欧式空间的本质性,是其平面性.

一句话总结:欧几里得空间就是在对现实空间的规则抽象和推广(从n<=3推广到有限n维空间)。欧几里得几何就是中学学的平面几何、立体几何,在欧几里得几何中,平行线任何位置的间距相等

内积最常见的形式是欧氏空间中的内积,也就是常说的点积(dot product),点积也被称为数量积(scalar product)。

内积的表示形式

那么内积的计算结果是一个标量,其计算形式有两种:
a ⋅ b = ∣ a ∣ ∣ b ∣ c o s ( θ ) = a 1 b 1 + a 2 b 2 + a 3 b 3 \begin{align} a \cdot b &= |a||b|cos(\theta) \\ &= a_1b_1+a_2b_2+a_3b_3 \end{align} ab=a∣∣bcos(θ)=a1b1+a2b2+a3b3

内积的意义

  1. 几何关系:点积可以用来描述一个向量在另一个向量方向上的投影,同时还可以用来计算向量之间的夹角(仅对二维空间有效)。

  2. 相关性:内积可以理解为表示了两个向量之间的相干性,若两个向量正交(无相干性),则点积为0;而点积越大表示两个向量的相干性越强。

外积(Outer Product)

外积是更广义的说法,宽松的说,他在一定的语境中和叉积叉乘向量积都表示求垂直于两个向量的新向量,但是在更严格的语境中,外积还是不等价于上述三种乘积的。严格意义上来说,外积划分情况如下:

外积的表示形式

外积可以分为以下几种含义,维基百科中注明了这几个的差别:

  • External product,又名**叉积(英语:cross product)和向量积**(英语:vector product),常写为 a × b a \times b a×b
  • Outer product,见**外积 (张量积)**,常写为 a ⊗ b a \otimes b ab
  • Exterior product,又名**楔积**(英语:wedge product),常写为 a ∧ b a \wedge b ab;(不常见,不做讨论)

External Product

数学向量代数领域(也就是解析几何领域),外积(external product)又称叉积(cross Product)、叉乘向量积,是对三维空间中的两个向量的二元运算(即两个向量的法向量)。

英文中的 external , cross , vector product 均为此定义, 同时也是最广为人知的一个外积的定义(于中学课本中常见),此外积仅在三维空间中定义

那么其表示形式为:
KaTeX parse error: Expected 'EOF', got '&' at position 13: a \times b &̲= \left|\begin{…
该法向量的模表示为 ∣ a × b ∣ = ∣ a ∣ ∣ b ∣ s i n ( θ ) |a \times b|=|a||b|sin(\theta) a×b=a∣∣bsin(θ)

Outer Product

Outer Product是线性代数中的外积,也就是张量积。(这也就是中学中学习的普通矩阵/向量的计算)

在线性代数中一般指两个向量的张量积,其结果为矩阵,其表示为:
a ⊗ b = [ a 1 a 2 a 3 ] ⊗ [ b 1    b 2    b 3 ] = [ a 1 b 1 a 1 b 2 a 1 b 3 a 2 b 1 a 2 b 2 a 2 b 3 a 3 b 1 a 3 b 2 a 3 b 3 ] a \otimes b = \left[\begin{array}{c} a_1 \\ a_2 \\ a_3 \end{array}\right] \otimes [b_1 \; b_2 \; b_3] =\left[\begin{array}{c} a_1b_1 & a_1b_2 & a_1b_3 \\ a_2b_1 & a_2b_2 & a_2b_3 \\ a_3b_1 & a_3b_2 & a_3b_3 \end{array}\right] ab= a1a2a3 [b1b2b3]= a1b1a2b1a3b1a1b2a2b2a3b2a1b3a2b3a3b3

外积是将结果的维度扩张到二维,而内积呢,其结果将维度缩减到了标量(所以可以从这个点理解外积和内积)

torch中使用 torch.mm()torch.matmul()

补充1:Kronecker Product

外积是一种特殊的克罗内克积(kronecker product)。为什么这样说呢?因为数学上,克罗内克积是两个任意大小的矩阵间的运算。

A A A矩阵是一个 m × n m \times n m×n的矩阵,而 B B B是一个 p × q p \times q p×q的矩阵,那么克罗内克积则是一个维度为 ( m n ) × ( p q ) (mn) \times (pq) (mn)×(pq)的分块矩阵。具体的计算形式可以看这篇博客

numpy中 使用np.kron实现。

克罗内克积的表示形式为 A ⊗ B A \otimes B AB

补充2:Hadamard Product

矩阵元素积(element-wise product, point-wise product),又称作哈达玛积(hadamard product),对应元素相乘,结果还是向量/矩阵,那么这样就要求两个相乘的向量/矩阵必须行列数相同

numpy中 使用np.multiply*实现元素积。

torch中 使用*torch.mul

元素积表示形式为 A ⊙ B A \odot B AB

Note:深度学习论文中,矩阵的计算一般为张量积和哈达玛积,即 ⊗ \otimes 就是普通的矩阵乘法 ⊙ \odot 表示矩阵对应位置元素相乘

参考

  1. 真一文搞懂:内积、外积及其衍生(内积:点积、数量积、标量积;外积:叉积、叉乘、向量积、张量积) - 我头上有犄角的文章 - 知乎
  2. 带你一次搞懂点积(内积)、叉积(外积)
  3. 内积与外积(Inner/Outer/Interior/Exterior)Product 及在计算机中的概念
### 向量定义 向量(内或数量)是指两个向量通过特定运算得到的一个标量值。其代数定义为 \( a \cdot b = |a||b|\cos\theta \),其中 \( \theta \) 是两向量之间的夹角[^2]。 另一方面,向量(外向量)的结果是一个新的向量,该向量的方向垂直于原两向量所在的平面,而其大小由公式 \( |a \times b| = |a||b|\sin\theta \) 给定[^3]。 ### 计算方法 #### 点计算 对于给定向量 \( a = (a_1, a_2, ..., a_n) \) 和 \( b = (b_1, b_2, ..., b_n) \),它们的点可按如下方式计算: \[ a \cdot b = a_1b_1 + a_2b_2 + ... + a_nb_n \] 此外,当采用矩阵形式表达时,点也可视为一个行向量其对应列向量相乘的结果[^2]。 ```python import numpy as np # 示例代码展示如何计算点 vector_a = np.array([1, 2, 3]) vector_b = np.array([4, 5, 6]) dot_product = np.dot(vector_a, vector_b) print(dot_product) # 输出应为 32 ``` #### 叉计算 设三维空间中的向量 \( a = (a_x, a_y, a_z) \), \( b = (b_x, b_y, b_z) \),则叉可通过行列式展开求得: \[ a \times b = ((a_yb_z - a_zb_y)i - (a_xb_z - a_zb_x)j + (a_xb_y - a_yb_x)k) \] 这里 i,j,k 分别代表标准正交基底方向上的单位向量[^4]。 ```python # 示例代码展示如何计算叉 cross_product = np.cross(vector_a, vector_b) print(cross_product) # 结果取决于输入的具体数值 ``` ### 应用场景 - **点的应用** - 测量投影:用于判断一个物体相对于另一物体现在的位置关系。 - 物理学中功的计算:力F作用下位移s所做的功W=F·S。 - **叉的应用** - 面计算:利用平行四边形面等于两边构成的向量模长这一特性。 - 力矩计算:扭矩τ=r×F,在刚体转动分析中有重要作用。 - 法线确定:在计算机图形学里用来构建表面法向量以便光照效果渲染[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值