向量 | 内积 / 外积 / 点积 / 叉积 | 几何意义 / 应用

注:本文为 “向量内积与外积” 相关合辑。
略排未全校去重。
如有内容异常,请看原文。


向量点乘(即内积)和叉乘(即外积、向量积)区别与意义分析

Lu_gl 于 2022-01-05 20:20:54 发布

向量之间的叉乘和点乘,概念易混淆,现对其进行详细分析介绍。

首先,向量(Vector) 是几乎所有几何问题中的一个基本点。向量的定义包含方向和一个数(长度)。

在二维空间中,一个向量可用一对 x x x y y y 来表示。向量:既有方向又有大小的量。 通常情况下会将向量放到坐标系中,常用的是笛卡尔坐标系,向量起始点通常放到原点(注:没有固定的起点,只要方向相同,大小相等,就认为两向量是相同的,但为了用数值坐标来表示向量,将起始点放到原点)。

一、点乘 (Dot Product)

向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。点乘,也叫数量积。结果是一个向量在另一个向量方向上投影的长度,是一个标量。

假设向量 a \mathbf{a} a 和向量 b \mathbf{b} b

a = [ a 1 , a 2 , … a n ] b = [ b 1 , b 2 , … b n ] \begin{align*} & a=\left[ {{a}_{1}},{{a}_{2}},\ldots {{a}_{n}} \right] \\ & b=\left[ {{b}_{1}},{{b}_{2}},\ldots {{b}_{n}} \right] \\ \end{align*} a=[a1,a2,an]b=[b1,b2,bn]

a \mathbf{a} a b \mathbf{b} b 的点积公式(要求一维向量 a \mathbf{a} a 和向量 b \mathbf{b} b 的行列数相同)为:

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

对应点乘的几何意义为

点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在 b \mathbf{b} b 向量在 a \mathbf{a} a 向量方向上的投影,有公式:

a ⋅ b = ∥ a ∥ ∥ b ∥ cos ⁡ ( θ ) \mathbf{a} \cdot \mathbf{b} = \|\mathbf{a}\| \|\mathbf{b}\| \cos(\theta) ab=a∥∥bcos(θ)

θ \theta θ 是向量 a \mathbf{a} a 和向量 b \mathbf{b} b 之间的夹角。这里 ∥ a ∥ \|\mathbf{a}\| a 我们称为向量 a \mathbf{a} a 的模(norm),也就是 a \mathbf{a} a 的长度,在二维空间中就是 ∥ a ∥ = x 2 + y 2 \|\mathbf{a}\| = \sqrt{x^2 + y^2} a=x2+y2 。这样就可以很容易计算两条线的夹角:

cos ⁡ ( θ ) = a ⋅ b ∥ a ∥ ∥ b ∥ \cos(\theta) = \frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\| \|\mathbf{b}\|} cos(θ)=a∥∥bab

向量差的模长与向量夹角推导

对于推导过程可以稍微利用余弦定理如下:

首先看一下向量组成:

在这里插入图片描述

设向量关系为 c = a − b \mathbf{c} = \mathbf{a} - \mathbf{b} c=ab a \mathbf{a} a b \mathbf{b} b c \mathbf{c} c 均为向量), θ \theta θ a \mathbf{a} a b \mathbf{b} b 的夹角(取值范围 [ 0 , π ] [0, \pi] [0,π]), ∥ a ∥ \|\mathbf{a}\| a ∥ b ∥ \|\mathbf{b}\| b ∥ c ∥ \|\mathbf{c}\| c 分别表示三个向量的模长(非负实数)。

  1. 由三角形余弦定理建立关系
    a \mathbf{a} a b \mathbf{b} b c \mathbf{c} c 构成三角形(或共线)时,根据三角形余弦定理, c \mathbf{c} c 的模长平方满足:
    ∥ c ∥ 2 = ∥ a ∥ 2 + ∥ b ∥ 2 − 2 ∥ a ∥ ∥ b ∥ cos ⁡ θ \|\mathbf{c}\|^2 = \|\mathbf{a}\|^2 + \|\mathbf{b}\|^2 - 2\|\mathbf{a}\|\|\mathbf{b}\|\cos\theta c2=a2+b22∥a∥∥bcosθ

  2. 用向量点积展开 ∥ c ∥ 2 \|\mathbf{c}\|^2 c2
    c = a − b \mathbf{c} = \mathbf{a} - \mathbf{b} c=ab,结合“向量模长的平方等于向量自身的点积”(即 ∥ x ⃗ ∥ 2 = x ⃗ ⋅ x ⃗ \|\vec{x}\|^2 = \vec{x} \cdot \vec{x} x 2=x x ),得:
    ∥ c ∥ 2 = ( a − b ) ⋅ ( a − b ) \|\mathbf{c}\|^2 = (\mathbf{a} - \mathbf{b}) \cdot (\mathbf{a} - \mathbf{b}) c2=(ab)(ab)

    按点积分配律、交换律展开,并利用 a ⋅ a = ∥ a ∥ 2 \mathbf{a} \cdot \mathbf{a} = \|\mathbf{a}\|^2 aa=a2 b ⋅ b = ∥ b ∥ 2 \mathbf{b} \cdot \mathbf{b} = \|\mathbf{b}\|^2 bb=b2 化简:
    ( a − b ) ⋅ ( a − b ) = a ⋅ a − 2 a ⋅ b + b ⋅ b = ∥ a ∥ 2 + ∥ b ∥ 2 − 2 a ⋅ b (\mathbf{a} - \mathbf{b}) \cdot (\mathbf{a} - \mathbf{b}) = \mathbf{a} \cdot \mathbf{a} - 2\mathbf{a} \cdot \mathbf{b} + \mathbf{b} \cdot \mathbf{b} = \|\mathbf{a}\|^2 + \|\mathbf{b}\|^2 - 2\mathbf{a} \cdot \mathbf{b} (ab)(ab)=aa2ab+bb=a2+b22ab

  3. 求解向量夹角 θ \theta θ
    联立步骤1与步骤2的结果,消去 ∥ c ∥ 2 \|\mathbf{c}\|^2 c2 并约去同类项,结合点积的几何定义 a ⋅ b = ∥ a ∥ ∥ b ∥ cos ⁡ θ \mathbf{a} \cdot \mathbf{b} = \|\mathbf{a}\|\|\mathbf{b}\|\cos\theta ab=a∥∥bcosθ,整理得夹角余弦值:
    cos ⁡ θ = a ⋅ b ∥ a ∥ ∥ b ∥ \cos\theta = \frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\|\|\mathbf{b}\|} cosθ=a∥∥bab

    若需明确夹角 θ \theta θ,可通过反余弦函数求解:
    θ = arccos ⁡ ( a ⋅ b ∥ a ∥ ∥ b ∥ ) \theta = \arccos\left(\frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\|\|\mathbf{b}\|}\right) θ=arccos(a∥∥bab)

根据这个公式就可以计算向量 a \mathbf{a} a 和向量 b \mathbf{b} b 之间的夹角。 从而就可以进一步判断这两个向量是否是同一方向,是否正交(也就是垂直)等方向关系,具体对应关系为:

a ⋅ b > 0 方向基本相同,夹角在  0 ∘  到  9 0 ∘  之间 a ⋅ b = 0 正交,相互垂直 a ⋅ b < 0 方向基本相反,夹角在  9 0 ∘  到  18 0 ∘  之间 \begin{array}{ccl} \mathbf{a} \cdot \mathbf{b} &> 0 & \quad \text{方向基本相同,夹角在 } 0^\circ \text{ 到 } 90^\circ \text{ 之间} \\ \mathbf{a} \cdot \mathbf{b} &= 0 & \quad \text{正交,相互垂直} \\ \mathbf{a} \cdot \mathbf{b} &< 0 & \quad \text{方向基本相反,夹角在 } 90^\circ \text{ 到 } 180^\circ \text{ 之间} \end{array} ababab>0=0<0方向基本相同,夹角在 0  90 之间正交,相互垂直方向基本相反,夹角在 90  180 之间

总结就是:

假如向量 a \mathbf{a} a ( x 1 , y 1 ) (x_1, y_1) (x1,y1),向量 b \mathbf{b} b ( x 2 , y 2 ) (x_2, y_2) (x2,y2)

点积(也叫内积)结果为 a ⋅ b = x 1 x 2 + y 1 y 2 = ∥ a ∥ ∥ b ∥ cos ⁡ ( θ ) \mathbf{a} \cdot \mathbf{b} = x_1 x_2 + y_1 y_2 = \|\mathbf{a}\| \|\mathbf{b}\| \cos(\theta) ab=x1x2+y1y2=a∥∥bcos(θ),可以理解为向量 a \mathbf{a} a 在向量 b \mathbf{b} b 上投影的长度乘以向量 b \mathbf{b} b 的长度。

应用:

在这里插入图片描述

二、叉乘(cross product)

两个向量的叉乘,又叫向量积、外积、叉积,叉乘的运算结果是一个向量而不是一个标量,并且两个向量的叉积与这两个向量组成的坐标平面垂直。

对于向量 a \mathbf{a} a 和向量 b \mathbf{b} b

a = ( x 1 , y 1 , z 1 ) b = ( x 2 , y 2 , z 2 ) \begin{align*} & a=\left( {{x}_{1}},{{y}_{1}},{{z}_{1}} \right) \\ & b=\left( {{x}_{2}},{{y}_{2}},{{z}_{2}} \right) \\ \end{align*} a=(x1,y1,z1)b=(x2,y2,z2)

a \mathbf{a} a b \mathbf{b} b 的叉乘公式为,其中 i = ( 1 , 0 , 0 ) \mathbf{i} = (1,0,0) i=(1,0,0) j = ( 0 , 1 , 0 ) \mathbf{j} = (0,1,0) j=(0,1,0) k = ( 0 , 0 , 1 ) \mathbf{k} = (0,0,1) k=(0,0,1)

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

根据 i \mathbf{i} i j \mathbf{j} j k \mathbf{k} k 间关系,有:

a × b = ( a 2 b 3 − a 3 b 2 ) i − ( a 1 b 3 − a 3 b 1 ) j + ( a 1 b 2 − a 2 b 1 ) k \mathbf{a} \times \mathbf{b} = (a_2 b_3 - a_3 b_2) \mathbf{i} - (a_1 b_3 - a_3 b_1) \mathbf{j} + (a_1 b_2 - a_2 b_1) \mathbf{k} a×b=(a2b3a3b2)i(a1b3a3b1)j+(a1b2a2b1)k

对应叉乘的几何意义为

在三维几何中,向量 a \mathbf{a} a 和向量 b \mathbf{b} b 的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于 a \mathbf{a} a b \mathbf{b} b 向量构成的平面。 叉乘的结果是个向量,方向在 z z z 轴上,在二维空间里,让我们暂时忽略它的方向,将结果看成一个向量,那么这个结果类似于上述的点积,有公式:

a × b = ∥ a ∥ ∥ b ∥ sin ⁡ ( θ ) \mathbf{a} \times \mathbf{b} = \|\mathbf{a}\| \|\mathbf{b}\| \sin(\theta) a×b=a∥∥bsin(θ)

然而角度 θ \theta θ 和上面点乘的角度有一点点不同,它是有正负的,是指从 a \mathbf{a} a b \mathbf{b} b 的角度。因此,向量的外积不遵守乘法交换率,因为 a × b = − b × a \mathbf{a} \times \mathbf{b} = -\mathbf{b} \times \mathbf{a} a×b=b×a。在物理学中,已知力与力臂求外积,就是向量的外积,即叉乘。

在 3D 图像学中,叉乘的概念非常有用,可以通过两个向量的叉乘,生成第三个垂直于 a \mathbf{a} a b \mathbf{b} b 的法向量,从而构建 X X X Y Y Y Z Z Z 坐标系。 如下图所示:

在这里插入图片描述

在二维空间中,叉乘还有另外一个几何意义就是: a × b \mathbf{a} \times \mathbf{b} a×b 等于由向量 a \mathbf{a} a 和向量 b \mathbf{b} b 构成的平行四边形的面积。

在这里插入图片描述

叉积的绝对值就是 A \mathbf{A} A B \mathbf{B} B 为两边说形成的平行四边形的面积。也就是 A B \mathbf{AB} AB 所包围三角形面积的两倍。在计算面积时,我们要经常用到叉积。

方向判定:

向量 c \mathbf{c} c 的方向与 a \mathbf{a} a b \mathbf{b} b 所在的平面垂直,且方向要用“右手法则”判断。判断方法如下:

  1. 右手掌张开,四指并拢,大拇指垂直于四指指向的方向。
  2. 伸出右手,四指弯曲,四指与 A \mathbf{A} A 旋转到 B \mathbf{B} B 方向一致,那么大拇指指向为 C \mathbf{C} C 向量的方向。

在这里插入图片描述

总结就是:

假如向量 a \mathbf{a} a ( x 1 , y 1 ) (x_1, y_1) (x1,y1),向量 b \mathbf{b} b ( x 2 , y 2 ) (x_2, y_2) (x2,y2)

叉积(也叫外积)的模为 a × b = x 1 y 2 − x 2 y 1 = ∥ a ∥ ∥ b ∥ sin ⁡ ( θ ) \mathbf{a} \times \mathbf{b} = x_1 y_2 - x_2 y_1 = \|\mathbf{a}\| \|\mathbf{b}\| \sin(\theta) a×b=x1y2x2y1=a∥∥bsin(θ),可以理解为平行四边形的有向面积(三维以上为体积)。外积的方向垂直于这两个方向。

应用:

在这里插入图片描述


带你一次搞懂点积(内积)、叉积(外积)

隐私无忧 已于 2022-10-09 20:47:37 修改

1. 向量的点积与叉积

1.1 向量的点积

数量积又称标量积(Scalar product)点积(Dot product),在欧几里得空间(Euclidean space)中称为内积(Inner product),对应元素相乘相加,结果是一个标量(即一个数)

对于向量 a = ( a 1 , a 2 ) \mathbf{a} = (a_1, a_2) a=(a1,a2) b = ( b 1 , b 2 ) \mathbf{b} = (b_1, b_2) b=(b1,b2),两者的数量积为:

a ⋅ b = a 1 b 1 + a 2 b 2 \mathbf{a} \cdot \mathbf{b} = a_1 b_1 + a_2 b_2 ab=a1b1+a2b2

a ⋅ b \mathbf{a} \cdot \mathbf{b} ab 的几何意义是 a \mathbf{a} a b \mathbf{b} b 方向上的投影(仅在二维、三维空间向量有意义):

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 分别为向量 a \mathbf{a} a b \mathbf{b} b 的模, θ \theta θ 为向量 a \mathbf{a} a b \mathbf{b} b 的夹角。

对于 n n n 维向量 a = ( a 1 , a 2 , … , a n ) \mathbf{a} = (a_1, a_2, \dots, a_n) a=(a1,a2,,an) b = ( b 1 , b 2 , … , b n ) \mathbf{b} = (b_1, b_2, \dots, b_n) b=(b1,b2,,bn),两者的数量积为:

a ⋅ b = a 1 b 1 + a 2 b 2 + ⋯ + a n b n \mathbf{a} \cdot \mathbf{b} = a_1 b_1 + a_2 b_2 + \dots + a_n b_n ab=a1b1+a2b2++anbn

numpy 中使用 np.dotnumpy.inner() 实现向量的点积

举例

a = ( 1 , 2 , 3 ) , b = ( 4 , 5 , 6 ) \mathbf{a} = (1, 2, 3), \quad \mathbf{b} = (4, 5, 6) a=(1,2,3),b=(4,5,6)

a ⋅ b = 1 × 4 + 2 × 5 + 3 × 6 = 32 \mathbf{a} \cdot \mathbf{b} = 1 \times 4 + 2 \times 5 + 3 \times 6 = 32 ab=1×4+2×5+3×6=32

import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
## 数量积  使用 np.dot 或 np.inner
print(np.dot(a, b))

1.2 向量的叉积

向量积又称矢量积(Vector product)叉积(Cross product)外积(Outer product)结果是一个向量

对于向量 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 \mathbf{a} a b \mathbf{b} b 的法向量,该向量垂直于 a \mathbf{a} a b \mathbf{b} b 构成的平面:

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 2 b 3 − b 2 a 3 ) i − ( a 1 b 3 − b 1 a 3 ) j + ( a 1 b 2 − b 1 a 2 ) k = (a_2 b_3 - b_2 a_3) \mathbf{i} - (a_1 b_3 - b_1 a_3) \mathbf{j} + (a_1 b_2 - b_1 a_2) \mathbf{k} =(a2b3b2a3)i(a1b3b1a3)j+(a1b2b1a2)k

其中, i \mathbf{i} i j \mathbf{j} j k \mathbf{k} k 分别是 X X X Y Y Y Z Z Z 轴方向的单位向量。

该向量的模:

∥ a × b ∥ = ∥ a ∥ ∥ b ∥ sin ⁡ ( θ ) \|\mathbf{a} \times \mathbf{b}\| = \|\mathbf{a}\| \|\mathbf{b}\| \sin(\theta) a×b=a∥∥bsin(θ)

其中, ∥ a ∥ \|\mathbf{a}\| a ∥ b ∥ \|\mathbf{b}\| b 分别为向量 a \mathbf{a} a b \mathbf{b} b 的模, θ \theta θ 为向量 a \mathbf{a} a b \mathbf{b} b 的夹角。

即,叉积的长度 ∥ a × b ∥ \|\mathbf{a} \times \mathbf{b}\| a×b 为向量 a \mathbf{a} a b \mathbf{b} b 共起点时,构成平行四边形的面积。

numpy 中使用 np.cross 实现向量的叉积

举例

a = ( 1 , 2 , 3 ) , b = ( 4 , 5 , 6 ) \mathbf{a} = (1, 2, 3), \quad \mathbf{b} = (4, 5, 6) a=(1,2,3),b=(4,5,6)

a × b = ( 2 × 6 − 3 × 5 , 4 × 3 − 1 × 6 , 1 × 5 − 2 × 4 ) = ( − 3 , 6 , − 3 ) \mathbf{a} \times \mathbf{b} = (2 \times 6 - 3 \times 5, 4 \times 3 - 1 \times 6, 1 \times 5 - 2 \times 4) = (-3, 6, -3) a×b=(2×63×5,4×31×6,1×52×4)=(3,6,3)

import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
## 叉积  使用 np.cross
print(np.cross(a, b))

点积与叉积小结:

名称点积 / 数量积 / 标量积 / 内积 /叉积 / 向量积 / 矢量积 / 外积 /
输入(以 R 3 R^3 R3 为例) 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 = ( 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 = ∣ 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 ∣ cos ⁡ ( θ ) |\mathbf{a}| |\mathbf{b}| \cos(\theta) a∣∣bcos(θ)向量(矢量): ∣ a ∣ ∣ b ∣ sin ⁡ ( θ ) |\mathbf{a}| |\mathbf{b}| \sin(\theta) a∣∣bsin(θ)

注:数量、向量常用于数学;而标量、矢量常用于物理

2 矩阵的点积与叉积

2.1 矩阵的点积

对于 A A A 矩阵( m × s m \times s m×s 阶), B B B 矩阵( s × n s \times n s×n 阶)( A A A 的列数与 B B B 的行数相等),

A = [ a 11 a 12 ⋯ a 1 s a 21 a 22 ⋯ a 2 s ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m s ] , B = [ b 11 b 12 ⋯ b 1 n b 21 b 22 ⋯ b 2 n ⋮ ⋮ ⋱ ⋮ b s 1 b s 2 ⋯ b s n ] A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1s} \\ a_{21} & a_{22} & \cdots & a_{2s} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{ms} \end{bmatrix}, \quad B = \begin{bmatrix} b_{11} & b_{12} & \cdots & b_{1n} \\ b_{21} & b_{22} & \cdots & b_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ b_{s1} & b_{s2} & \cdots & b_{sn} \end{bmatrix} A= a11a21am1a12a22am2a1sa2sams ,B= b11b21bs1b12b22bs2b1nb2nbsn

两者的点积,即矩阵相乘的结果 C = A B C = AB C=AB m × n m \times n m×n 阶矩阵,

C = A B = [ c 11 c 12 ⋯ c 1 n c 21 c 22 ⋯ c 2 n ⋮ ⋮ ⋱ ⋮ c m 1 c m 2 ⋯ c m n ] C = AB = \begin{bmatrix} c_{11} & c_{12} & \cdots & c_{1n} \\ c_{21} & c_{22} & \cdots & c_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ c_{m1} & c_{m2} & \cdots & c_{mn} \end{bmatrix} C=AB= c11c21cm1c12c22cm2c1nc2ncmn

其中,矩阵 C C C 中的元素满足

c i j = ∑ k = 1 s a i k b k j c_{ij} = \sum_{k=1}^{s} a_{ik} b_{kj} cij=k=1saikbkj

举例

A 1 = [ 1 2 3 4 ] , B 1 = [ 5 6 7 8 ] A_1 = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad B_1 = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} A1=[1324],B1=[5768]

A 2 = [ 1 2 3 1 2 3 ] , B 2 = [ 1 2 3 ] A_2 = \begin{bmatrix} 1 & 2 & 3 \\ 1 & 2 & 3 \end{bmatrix}, \quad B_2 = \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix} A2=[112233],B2= 123

A 1 B 1 = [ 19 22 43 50 ] , A 2 B 2 = [ 14 14 ] A_1 B_1 = \begin{bmatrix} 19 & 22 \\ 43 & 50 \end{bmatrix}, \quad A_2 B_2 = \begin{bmatrix} 14 \\ 14 \end{bmatrix} A1B1=[19432250],A2B2=[1414]

numpy 实现

import numpy as np
A1 = np.array([[1, 2], [3, 4]])
B1 = np.array([[5, 6], [7, 8]])
A2 = np.array([[1, 2, 3], [1, 2, 3]])
B2 = np.array([1, 2, 3])
## 数量积  使用 np.dot
print(np.dot(A1, B1))
print(np.dot(A2, B2))

此外,numpy 提供了 numpy.inner() 函数,从字面意思理解是内积,其针对向量 numpy.inner()numpy.dot() 输出一致,但针对矩阵有所不同。

print(np.inner(A1, B1))

输出为

[ 17 23 39 53 ] \begin{bmatrix} 17 & 23 \\ 39 & 53 \end{bmatrix} [17392353]

其中,

17 = 1 × 5 + 2 × 6 , 23 = 1 × 7 + 2 × 8 17 = 1 \times 5 + 2 \times 6, \quad 23 = 1 \times 7 + 2 \times 8 17=1×5+2×6,23=1×7+2×8

39 = 3 × 5 + 4 × 6 , 53 = 3 × 7 + 4 × 8 39 = 3 \times 5 + 4 \times 6, \quad 53 = 3 \times 7 + 4 \times 8 39=3×5+4×6,53=3×7+4×8

print(np.inner(A2, B2))

输出为

[ 14 14 ] \begin{bmatrix} 14 \\ 14 \end{bmatrix} [1414]

2.2 矩阵的叉积

针对矩阵并不存在叉积的概念,numpy 中针对矩阵的叉积运算是按照向量的叉积进行运算。

举例

A 1 = [ 1 2 3 4 ] , B 1 = [ 5 6 7 8 ] A_1 = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad B_1 = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} A1=[1324],B1=[5768]

A 2 = [ 1 2 3 1 2 3 ] , B 2 = [ 1 2 3 ] A_2 = \begin{bmatrix} 1 & 2 & 3 \\ 1 & 2 & 3 \end{bmatrix}, \quad B_2 = \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix} A2=[112233],B2= 123

A 1 × B 1 = [ − 4 − 4 ] , A 2 × B 2 = [ 0 0 0 0 0 0 ] A_1 \times B_1 = \begin{bmatrix} -4 \\ -4 \end{bmatrix}, \quad A_2 \times B_2 = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} A1×B1=[44],A2×B2= 000000

numpy 实现

import numpy as np
A1 = np.array([[1, 2], [3, 4]])
B1 = np.array([[5, 6], [7, 8]])
A2 = np.array([[1, 2, 3], [1, 2, 3]])
B2 = np.array([1, 2, 3])
## 叉积  使用 np.cross
print(np.cross(A1, B1))
print(np.cross(A2, B2))

3. 元素积

元素积(element-wise product, point-wise product) 又称 哈达玛积(Hadamard product)舒尔积逐项积,对应元素相乘,结果还是向量/矩阵。

对于 n n n 维向量 a = ( a 1 , a 2 , … , a n ) \mathbf{a} = (a_1, a_2, \dots, a_n) a=(a1,a2,,an) b = ( b 1 , b 2 , … , b n ) \mathbf{b} = (b_1, b_2, \dots, b_n) b=(b1,b2,,bn),两者的元素积为:

a ∗ b = ( a 1 b 1 , a 2 b 2 , … , a n b n ) \mathbf{a} * \mathbf{b} = (a_1 b_1, a_2 b_2, \dots, a_n b_n) ab=(a1b1,a2b2,,anbn)

对于同阶矩阵 A A A m × n m \times n m×n 阶), B B B m × n m \times n m×n 阶),两者的哈达玛积为:

A ∘ B = [ a 11 b 11 a 12 b 12 ⋯ a 1 n b 1 n a 21 b 21 a 22 b 22 ⋯ a 2 n b 2 n ⋮ ⋮ ⋱ ⋮ a m 1 b m 1 a m 2 b m 2 ⋯ a m n b m n ] A \circ B = \begin{bmatrix} a_{11} b_{11} & a_{12} b_{12} & \cdots & a_{1n} b_{1n} \\ a_{21} b_{21} & a_{22} b_{22} & \cdots & a_{2n} b_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} b_{m1} & a_{m2} b_{m2} & \cdots & a_{mn} b_{mn} \end{bmatrix} AB= a11b11a21b21am1bm1a12b12a22b22am2bm2a1nb1na2nb2namnbmn

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

举例

向量

a = ( 1 , 2 , 3 ) , b = ( 4 , 5 , 6 ) \mathbf{a} = (1, 2, 3), \quad \mathbf{b} = (4, 5, 6)\\ a=(1,2,3),b=(4,5,6)

a ∘ b = ( 4 , 10 , 18 ) \mathbf{a} \circ \mathbf{b} = (4, 10, 18) ab=(4,10,18)

矩阵

A 1 = [ 1 2 3 4 ] , B 1 = [ 5 6 7 8 ] A_1 = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad B_1 = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} A1=[1324],B1=[5768]

A 2 = [ 1 2 3 1 2 3 ] , B 2 = [ 1 2 3 ] A_2 = \begin{bmatrix} 1 & 2 & 3 \\ 1 & 2 & 3 \end{bmatrix}, \quad B_2 = \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix} A2=[112233],B2= 123

A 1 ∘ B 1 = [ 5 12 21 32 ] , A 2 ∘ B 2 = [ 1 4 9 1 4 9 ] A_1 \circ B_1 = \begin{bmatrix} 5 & 12 \\ 21 & 32 \end{bmatrix}, \quad A_2 \circ B_2 = \begin{bmatrix} 1 & 4 & 9 \\ 1 & 4 & 9 \end{bmatrix} A1B1=[5211232],A2B2=[114499]

numpy 实现

import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
A1 = np.array([[1, 2], [3, 4]])
B1 = np.array([[5, 6], [7, 8]])
A2 = np.array([[1, 2, 3], [1, 2, 3]])
B2 = np.array([1, 2, 3])
## 元素积  使用 np.multiply 或 *
print(np.multiply(a, b))
print(np.multiply(A1, B1))
print(np.multiply(A2, B2))  # 阶数不一致的,numpy 将进行广播确保一致

4. 克罗内克积

克罗内克积(Kronecker product)是 两个任意大小的矩阵间的运算

对于 A A A 矩阵( m × n m \times n m×n 阶), B B B 矩阵( p × q p \times q p×q 阶):

A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m n ] , B = [ b 11 b 12 ⋯ b 1 q b 21 b 22 ⋯ b 2 q ⋮ ⋮ ⋱ ⋮ b p 1 b p 2 ⋯ b p q ] A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix}, \quad B = \begin{bmatrix} b_{11} & b_{12} & \cdots & b_{1q} \\ b_{21} & b_{22} & \cdots & b_{2q} \\ \vdots & \vdots & \ddots & \vdots \\ b_{p1} & b_{p2} & \cdots & b_{pq} \end{bmatrix} A= a11a21am1a12a22am2a1na2namn ,B= b11b21bp1b12b22bp2b1qb2qbpq

两者的克罗内克积 C = A ⊗ B C = A \otimes B C=AB m p × n q mp \times nq mp×nq 阶的分块矩阵:

C = A ⊗ B = [ a 11 B a 12 B ⋯ a 1 n B a 21 B a 22 B ⋯ a 2 n B ⋮ ⋮ ⋱ ⋮ a m 1 B a m 2 B ⋯ a m n B ] C = A \otimes B = \begin{bmatrix} a_{11} B & a_{12} B & \cdots & a_{1n} B \\ a_{21} B & a_{22} B & \cdots & a_{2n} B \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} B & a_{m2} B & \cdots & a_{mn} B \end{bmatrix} C=AB= a11Ba21Bam1Ba12Ba22Bam2Ba1nBa2nBamnB

更具体而言:

C = [ a 11 b 11 a 11 b 12 ⋯ a 11 b 1 q ⋯ ⋯ a 1 n b 11 a 1 n b 12 ⋯ a 1 n b 1 q a 11 b 21 a 11 b 22 ⋯ a 11 b 2 q ⋯ ⋯ a 1 n b 21 a 1 n b 22 ⋯ a 1 n b 2 q ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ ⋱ ⋮ a 11 b p 1 a 11 b p 2 ⋯ a 11 b p q ⋯ ⋯ a 1 n b p 1 a 1 n b p 2 ⋯ a 1 n b p q ⋮ ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ a m 1 b 11 a m 1 b 12 ⋯ a m 1 b 1 q ⋯ ⋯ a m n b 11 a m n b 12 ⋯ a m n b 1 q a m 1 b 21 a m 1 b 22 ⋯ a m 1 b 2 q ⋯ ⋯ a m n b 21 a m n b 22 ⋯ a m n b 2 q ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ ⋱ ⋮ a m 1 b p 1 a m 1 b p 2 ⋯ a m 1 b p q ⋯ ⋯ a m n b p 1 a m n b p 2 ⋯ a m n b p q ] C = \begin{bmatrix} a_{11} b_{11} & a_{11} b_{12} & \cdots & a_{11} b_{1q} & \cdots & \cdots & a_{1n} b_{11} & a_{1n} b_{12} & \cdots & a_{1n} b_{1q} \\ a_{11} b_{21} & a_{11} b_{22} & \cdots & a_{11} b_{2q} & \cdots & \cdots & a_{1n} b_{21} & a_{1n} b_{22} & \cdots & a_{1n} b_{2q} \\ \vdots & \vdots & \ddots & \vdots & & & \vdots & \vdots & \ddots & \vdots \\ a_{11} b_{p1} & a_{11} b_{p2} & \cdots & a_{11} b_{pq} & \cdots & \cdots & a_{1n} b_{p1} & a_{1n} b_{p2} & \cdots & a_{1n} b_{pq} \\ \vdots & \vdots & & \vdots & \ddots & & \vdots & \vdots & & \vdots \\ \vdots & \vdots & & \vdots & & \ddots & \vdots & \vdots & & \vdots \\ a_{m1} b_{11} & a_{m1} b_{12} & \cdots & a_{m1} b_{1q} & \cdots & \cdots & a_{mn} b_{11} & a_{mn} b_{12} & \cdots & a_{mn} b_{1q} \\ a_{m1} b_{21} & a_{m1} b_{22} & \cdots & a_{m1} b_{2q} & \cdots & \cdots & a_{mn} b_{21} & a_{mn} b_{22} & \cdots & a_{mn} b_{2q} \\ \vdots & \vdots & \ddots & \vdots & & & \vdots & \vdots & \ddots & \vdots \\ a_{m1} b_{p1} & a_{m1} b_{p2} & \cdots & a_{m1} b_{pq} & \cdots & \cdots & a_{mn} b_{p1} & a_{mn} b_{p2} & \cdots & a_{mn} b_{pq} \end{bmatrix} C= a11b11a11b21a11bp1am1b11am1b21am1bp1a11b12a11b22a11bp2am1b12am1b22am1bp2a11b1qa11b2qa11bpqam1b1qam1b2qam1bpqa1nb11a1nb21a1nbp1amnb11amnb21amnbp1a1nb12a1nb22a1nbp2amnb12amnb22amnbp2a1nb1qa1nb2qa1nbpqamnb1qamnb2qamnbpq

numpy 中使用 np.kron 实现

举例

A 1 = [ 1 2 3 ] , B 1 = [ 4 5 6 ] A_1 = \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix}, \quad B_1 = \begin{bmatrix} 4 \\ 5 \\ 6 \end{bmatrix} A1= 123 ,B1= 456

A 2 = [ 1 2 3 4 ] , B 2 = [ 5 6 7 8 ] A_2 = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad B_2 = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} A2=[1324],B2=[5768]

A 3 = [ 1 2 3 1 2 3 ] , B 3 = [ 1 2 3 ] A_3 = \begin{bmatrix} 1 & 2 & 3 \\ 1 & 2 & 3 \end{bmatrix}, \quad B_3 = \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix} A3=[112233],B3= 123

A 1 ⊗ B 1 = [ 4 5 6 8 10 12 12 15 18 ] A_1 \otimes B_1 = \begin{bmatrix} 4 & 5 & 6 \\ 8 & 10 & 12 \\ 12 & 15 & 18 \end{bmatrix} A1B1= 48125101561218

A 2 ⊗ B 2 = [ 5 6 10 12 7 8 14 16 15 18 20 24 21 24 28 32 ] A_2 \otimes B_2 = \begin{bmatrix} 5 & 6 & 10 & 12 \\ 7 & 8 & 14 & 16 \\ 15 & 18 & 20 & 24 \\ 21 & 24 & 28 & 32 \end{bmatrix} A2B2= 5715216818241014202812162432

A 3 ⊗ B 3 = [ 1 2 3 2 4 6 3 6 9 1 2 3 2 4 6 3 6 9 ] A_3 \otimes B_3 = \begin{bmatrix} 1 & 2 & 3 & 2 & 4 & 6 & 3 & 6 & 9 \\ 1 & 2 & 3 & 2 & 4 & 6 & 3 & 6 & 9 \end{bmatrix} A3B3=[112233224466336699]

numpy 实现

import numpy as np
A1 = np.array([1, 2, 3])
B1 = np.array([4, 5, 6])
A2 = np.array([[1, 2], [3, 4]])
B2 = np.array([[5, 6], [7, 8]])
A3 = np.array([[1, 2, 3], [1, 2, 3]])
B3 = np.array([1, 2, 3])
## 克罗内克积  使用 np.kron
print(np.kron(A1, B1))
print(np.kron(A2, B2))
print(np.kron(A3, B3))

点积、叉积、内积、外积【汇总对比】

Dust_Evc 于
2022-10-24 21:39:26 发布

点积(Dot Product)

又称标量积、数量积(Scalar Product)。它是两个数字序列对应条目乘积的和。在欧几里得几何里,两个向量笛卡尔坐标的点积应用广泛。它常被称作欧几里得空间的内积(或极少被称为投影积),是内积的一种特殊情形,不过并非是能在欧几里得空间上定义的唯一内积。

从代数角度看,点积是两个数字序列对应条目乘积的和;从几何角度看,它是两个向量的欧几里得模长与它们夹角余弦的乘积。当使用笛卡尔坐标时,这两种定义是等价的。在现代几何中,欧几里得空间通常借助向量空间来定义。此时,点积被用于定义长度(向量的长度是该向量自身点积的平方根)和角度(两个向量夹角的余弦等于它们的点积与它们模长乘积的商)。

代数定义

img

几何定义

img

与内积的关系

img

叉积(Cross Product)

向量积(Vector Product)(有时也称为有向面积积,以突出其几何意义),是在三维有向欧几里得向量空间中定义的运算,用符号

× \times × 表示。给定两个线性无关的向量 a \mathbf{a} a b \mathbf{b} b ,叉积 a × b \mathbf{a} \times \mathbf{b} a×b (读作“ a a a cross b b b ”)是一个垂直于 a \mathbf{a} a b \mathbf{b} b 的向量,因而也垂直于包含它们的平面。

定义

img

下图为使用 Sarrus 规则得到

a \mathbf{a} a
b \mathbf{b} b 的叉积:

img

叉积也可表示为形式行列式:

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

该行列式可通过 Sarrus 规则或余子式展开来计算。利用 Sarrus 规则,其展开式为:

a × b = ( a 2 b 3 i + a 3 b 1 j + a 1 b 2 k ) − ( a 3 b 2 i + a 1 b 3 j + a 2 b 1 k ) = ( a 2 b 3 − a 3 b 2 ) i + ( a 3 b 1 − a 1 b 3 ) j + ( a 1 b 2 − a 2 b 1 ) k \begin{align*} \mathbf{a}\times \mathbf{b} & =({{a}_{2}}{{b}_{3}}\mathbf{i}+{{a}_{3}}{{b}_{1}}\mathbf{j}+{{a}_{1}}{{b}_{2}}\mathbf{k})-({{a}_{3}}{{b}_{2}}\mathbf{i}+{{a}_{1}}{{b}_{3}}\mathbf{j}+{{a}_{2}}{{b}_{1}}\mathbf{k}) \\ & =({{a}_{2}}{{b}_{3}}-{{a}_{3}}{{b}_{2}})\mathbf{i}+({{a}_{3}}{{b}_{1}}-{{a}_{1}}{{b}_{3}})\mathbf{j}+({{a}_{1}}{{b}_{2}}-{{a}_{2}}{{b}_{1}})\mathbf{k} \end{align*} a×b=(a2b3i+a3b1j+a1b2k)(a3b2i+a1b3j+a2b1k)=(a2b3a3b2)i+(a3b1a1b3)j+(a1b2a2b1)k

沿第一行用余子式展开,展开式为:

a × b = ∣ a 2 a 3 b 2 b 3 ∣ i − ∣ a 1 a 3 b 1 b 3 ∣ j + ∣ a 1 a 2 b 1 b 2 ∣ k = ( a 2 b 3 − a 3 b 2 ) i − ( a 1 b 3 − a 3 b 1 ) j + ( a 1 b 2 − a 2 b 1 ) k \begin{align*} \mathbf{a} \times \mathbf{b} &= \begin{vmatrix} a_2 & a_3 \\ b_2 & b_3 \end{vmatrix} \mathbf{i} - \begin{vmatrix} a_1 & a_3 \\ b_1 & b_3 \end{vmatrix} \mathbf{j} + \begin{vmatrix} a_1 & a_2 \\ b_1 & b_2 \end{vmatrix} \mathbf{k} \\ &= (a_2 b_3 - a_3 b_2)\mathbf{i} - (a_1 b_3 - a_3 b_1)\mathbf{j} + (a_1 b_2 - a_2 b_1)\mathbf{k} \end{align*} a×b= a2b2a3b3 i a1b1a3b3 j+ a1b1a2b2 k=(a2b3a3b2)i(a1b3a3b1)j+(a1b2a2b1)k

这直接给出了结果的分量。

几何意义

img

内积(Inner Product)

空间中两个向量的内积是一个标量,通常用尖括号(如 $\langle \cdot,

\cdot \rangle$ )表示。内积空间是欧几里得向量空间的推广,在欧几里得向量空间中,内积就是笛卡尔坐标的点积或标量积。

无穷维内积空间在泛函分析中应用广泛。复数域上的内积空间有时被称为酉空间。向量空间中内积概念的首次使用归功于朱塞佩·皮亚诺(Giuseppe Peano),于1898年提出。

img

使用内积定义的两个向量之间角度的几何解释( $\vert \mathbf{x}

\vert$ 与 ∣ y ∣ \vert \mathbf{y} \vert y 为范数在二维、三维空间的表现)。

定义

img

例子

img

外积(Outer Product)

在线性代数里,两个坐标向量的外积是一个矩阵。若这两个向量的维度分别为 n n n m m m ,那么它们的外积是一个 n × m n \times m n×m 的矩阵。更一般地,给定两个张量(多维数字数组),它们的外积是张量。张量的外积也被称为张量积,可用于定义张量代数。

定义

img

与欧几里得内积对比

img

张量的外积

img


向量的内积与外积

木木 发布于 2019-11-11 23:18

一、向量的内积和几何意义(点乘)

对于向量 a \mathbf{a} a 和向量 b \mathbf{b} b

a = [ a 1 , a 2 , … a n ] b = [ b 1 , b 2 , … b n ] \begin{align*} & a=\left[ {{a}_{1}},{{a}_{2}},\ldots {{a}_{n}} \right] \\ & b=\left[ {{b}_{1}},{{b}_{2}},\ldots {{b}_{n}} \right] \\ \end{align*} a=[a1,a2,an]b=[b1,b2,bn]

  1. a \mathbf{a} a b \mathbf{b} b 的内积公式为:

    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 \mathbf{a} a 和向量 b \mathbf{b} b 的行列数相同。

  2. 内积的几何意义

    点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在 b \mathbf{b} b 向量在 a \mathbf{a} a 向量方向上的投影。

二、向量的外积和几何意义(叉乘)

两个向量的外积,又叫向量积、叉乘等。外积的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量组成的坐标平面垂直。

对于向量 a \mathbf{a} a 和向量 b \mathbf{b} b

a = ( x 1 , y 1 , z 1 ) b = ( x 2 , y 2 , z 2 ) \begin{align*} & a=\left( {{x}_{1}},{{y}_{1}},{{z}_{1}} \right) \\ & b=\left( {{x}_{2}},{{y}_{2}},{{z}_{2}} \right) \\ \end{align*} a=(x1,y1,z1)b=(x2,y2,z2)

  1. a \mathbf{a} a b \mathbf{b} b 的外积公式为:

    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

    其中:

    i = ( 1 , 0 , 0 ) , j = ( 0 , 1 , 0 ) , k = ( 0 , 0 , 1 ) \mathbf{i} = (1, 0, 0), \quad \mathbf{j} = (0, 1, 0), \quad \mathbf{k} = (0, 0, 1) i=(1,0,0),j=(0,1,0),k=(0,0,1)

    根据 i \mathbf{i} i j \mathbf{j} j k \mathbf{k} k 间关系,有:

    a × b = ( a 2 b 3 − a 3 b 2 ) i − ( a 1 b 3 − a 3 b 1 ) j + ( a 1 b 2 − a 2 b 1 ) k \mathbf{a} \times \mathbf{b} = (a_2 b_3 - a_3 b_2) \mathbf{i} - (a_1 b_3 - a_3 b_1) \mathbf{j} + (a_1 b_2 - a_2 b_1) \mathbf{k} a×b=(a2b3a3b2)i(a1b3a3b1)j+(a1b2a2b1)k

  2. 叉乘几何意义

    在三维几何中,向量 a \mathbf{a} a 和向量 b \mathbf{b} b 的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于 a \mathbf{a} a b \mathbf{b} b 向量构成的平面。


真一文搞懂:内积、外积及其衍生(内积:点积、数量积、标量积;外积:叉积、叉乘、向量积、张量积)

我头上有犄角 编辑于 2024-03-08 09:44・广东

首先说明一下,内积外积 都是一种 广义的称呼,我们 最常见的内积是点积(数量积、标量积和点积定义相同),即对应元素乘然后累加;而我们最容易弄错外积的定义,我们理解的两个向量运算得到第三个向量,且其方向垂直于另外两个向量的运算严格上叫叉积、叉乘、向量积。

而非外积,外积有其单独定义,其对向量运算的结果为矩阵

首先假设有以下两个向量:

a = [ a 1 a 2 a 3 ] , b = [ b 1 b 2 b 3 ] \mathbf{a} = \begin{bmatrix} a_1 \\ a_2 \\ a_3 \end{bmatrix}, \quad \mathbf{b} = \begin{bmatrix} b_1 \\ b_2 \\ b_3 \end{bmatrix} a= a1a2a3 ,b= b1b2b3

一、内积(点积、数量积、标量积)

欧氏空间中 内积 的定义一般没有什么歧义,比较相似的 内乘 一词定义为向量空间和外代数中,和流型相关。而点积和内积的具体关系如下:

img

内积定义比点积宽泛,内积在欧氏空间中则被称为点积。

在线性代数中,内积是定义在向量空间上的一种运算,它通常满足对称性、线性性和正定性。内积 最常见的形式是 欧氏空间 中的内积,也就是常说的 点积(dot product),点积也被称为 数量积标量积

注:以下我们所提到的内积均指的是欧氏空间中的内积,即点积。

1. 内积的表示

dot ( a , b ) = a 1 b 1 + a 2 b 2 + a 3 b 3 \text{dot}(\mathbf{a}, \mathbf{b}) = a_1 b_1 + a_2 b_2 + a_3 b_3 dot(a,b)=a1b1+a2b2+a3b3

还有一种表示形式为

dot ( a , b ) = ∥ a ∥ ∥ b ∥ cos ⁡ ( θ ) \text{dot}(\mathbf{a}, \mathbf{b}) = \|\mathbf{a}\| \|\mathbf{b}\| \cos(\theta) dot(a,b)=a∥∥bcos(θ)

2. 内积的意义

投影和分解:点积可以用来描述一个向量在另一个向量方向上的投影。给定两个向量 a \mathbf{a} a b \mathbf{b} b,它们的点积 a ⋅ b \mathbf{a} \cdot \mathbf{b} ab 表示 a \mathbf{a} a b \mathbf{b} b 方向上的投影的长度,或者 b \mathbf{b} b a \mathbf{a} a 方向上的投影的长度。这在物理学和工程学中经常用于分解力、速度、加速度等向量。

几何关系:点积可以用来计算向量之间的夹角, a ⋅ b = ∥ a ∥ ∥ b ∥ cos ⁡ ( θ ) \mathbf{a} \cdot \mathbf{b} = \|\mathbf{a}\| \|\mathbf{b}\| \cos(\theta) ab=a∥∥bcos(θ),其中 cos ⁡ ( θ ) \cos(\theta) cos(θ) a \mathbf{a} a b \mathbf{b} b 之间的夹角。通过这个公式可以比较容易地计算出两个向量之间的角度。

相关性:内积可以理解为表示了两个向量之间的相干性,若两个向量正交(无相干性),则点积为 0;而点积越大表示两个向量的相干性越强(但局限性是这点相干性只和角度有关,和 a \mathbf{a} a b \mathbf{b} b 的长度值无关)。在信号处理和模式识别以及深度学习方法中常用到这种方式来计算信号之间的相似度或相关性。

基向量:通过投影这种方式我们可以将一个向量从一个基投影到另一个基,假如一个向量本身在三维空间(三个基),它原本的基为

二、外积(叉积、叉乘、向量积)

外积是更广义的说法,宽松的说,它在一定的语境中和叉积、叉乘、向量积都表示求垂直于两个向量的新向量,但是在更严格的语境中

img

广义上外积的分类

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

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

接下来我们一个一个区分它们

1. 叉积、叉乘、向量积

数学向量代数 领域,外积(external product)又称 叉积叉乘向量积,是对 三维空间 中的两个向量的二元运算,英文中的 (external, cross, vector) product 均为此定义,同时也是最广为人知的一个外积的定义,此外积仅在三维空间中定义。

外积 a × b \mathbf{a} \times \mathbf{b} a×b 是与 a \mathbf{a} a b \mathbf{b} b 都垂直的向量。其方向由右手定则决定,模长等于以两个向量为边的平行四边形的面积。公式定义为:

a × b = ∥ a ∥ ∥ b ∥ sin ⁡ ( θ ) n \mathbf{a} \times \mathbf{b} = \|\mathbf{a}\| \|\mathbf{b}\| \sin(\theta) \mathbf{n} a×b=a∥∥bsin(θ)n

其中 n \mathbf{n} n 表示垂直于 a \mathbf{a} a b \mathbf{b} b 的单位向量 ( i \mathbf{i} i, j \mathbf{j} j, k \mathbf{k} k),具体来说,其结果为以下行列式:

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 ) i − ( a 1 b 3 − a 3 b 1 ) j + ( a 1 b 2 − a 2 b 1 ) k \mathbf{a} \times \mathbf{b} = (a_2 b_3 - a_3 b_2) \mathbf{i} - (a_1 b_3 - a_3 b_1) \mathbf{j} + (a_1 b_2 - a_2 b_1) \mathbf{k} a×b=(a2b3a3b2)i(a1b3a3b1)j+(a1b2a2b1)k

2. 楔积

此定义为外代数中的内容,一种将两个向量(或更高阶的对象)结合成一个新的几何对象的运算。楔积的结果可以表示 面积、体积更高维形式 的概念,在 几何物理学微分几何 中有广泛的应用。

对于两个向量 a \mathbf{a} a b \mathbf{b} b,它们的楔积 a ∧ b \mathbf{a} \wedge \mathbf{b} ab 可以表示为一个二阶外积(2-形式),它携带了这两个向量所张成的平行四边形的面积和方向信息。在三维空间中,楔积的结果可以通过如下矩阵的行列式来计算:

a ∧ b = ∣ i j k a x a y a z b x b y b z ∣ \mathbf{a} \wedge \mathbf{b} = \begin{vmatrix} \mathbf{i} & \mathbf{j} & \mathbf{k} \\ a_x & a_y & a_z \\ b_x & b_y & b_z \end{vmatrix} ab= iaxbxjaybykazbz

其中 i \mathbf{i} i j \mathbf{j} j k \mathbf{k} k 是单位向量, a x a_x ax, a y a_y ay, a z a_z az b x b_x bx, b y b_y by, b z b_z bz 分别是向量 a \mathbf{a} a b \mathbf{b} b 的分量。

楔积(外积)和 叉积 虽然在三维空间中可以给出相似的几何信息,但它们在本质上是不同的数学对象,具有不同的属性和应用范围。这里是它们之间的一些 主要区别

1. 数学性质

  • 楔积:楔积是一种在外代数中定义的运算,它可以应用于任意维度的空间,并且可以用来定义高阶的几何对象。楔积的结果是一个外积或外形式,不局限于向量,且在维度大于 3 时依然有效。楔积具有反对称性,即 a ∧ b = − b ∧ a \mathbf{a} \wedge \mathbf{b} = -\mathbf{b} \wedge \mathbf{a} ab=ba
  • 叉积:叉积是一种特定于三维空间的运算,结果是一个新的向量,该向量垂直于原始两个向量所在的平面。叉积遵循右手定则,用于确定结果向量的方向。与楔积不同,叉积的结果并不在高维空间中有直接的对应。

2. 结果的性质

  • 楔积的结果 是一种代表有向面积的几何对象,称为 2-形式,在三维空间中它不直接等同于一个向量,但与由原向量构成的平面有关。
  • 叉积的结果 是一个向量,这个向量自身有长度和方向,其长度可以代表原来两个向量形成的平行四边形的面积,方向垂直于这两个向量构成的平面,根据右手规则确定。

3. 应用领域

  • 楔积 在数学中的应用范围更广,特别是在微分几何、代数拓扑和物理中的某些领域,如电磁学和流体动力学。楔积用于定义和计算多维空间中的有向体积元素。
  • 叉积 主要用于三维几何和物理学中,如用于计算力的矩、角动量以及在三维空间中寻找垂直于两个给定向量的向量。

3. 外积、张量积

外积(outer product),在线性代数中一般指两个向量的 张量积,其结果为一 矩阵;与外积相对,两向量的内积结果为 标量

外积是一种 克罗内克积 的特殊情况,给定 m × 1 m \times 1 m×1 列向量 a \mathbf{a} a 1 × n 1 \times n 1×n 行向量 b \mathbf{b} b,它们的外积 a ⊗ b \mathbf{a} \otimes \mathbf{b} ab 被定义为 m × n m \times n m×n 矩阵 C \mathbf{C} C,结果为:

a ⊗ b = C = a b \mathbf{a} \otimes \mathbf{b} = \mathbf{C} = \mathbf{a} \mathbf{b} ab=C=ab

这里的外积即为张量积,张量积就是向量的乘法,使用坐标表示如下:

[ b 1 b 2 b 3 b 4 ] ⊗ [ a 1 a 2 a 3 ] = [ a 1 b 1 a 2 b 1 a 3 b 1 a 1 b 2 a 2 b 2 a 3 b 2 a 1 b 3 a 2 b 3 a 3 b 3 a 1 b 4 a 2 b 4 a 3 b 4 ] \begin{bmatrix} b_1 \\ b_2 \\ b_3 \\ b_4 \end{bmatrix} \otimes \begin{bmatrix} a_1 & a_2 & a_3 \end{bmatrix} = \begin{bmatrix} a_1 b_1 & a_2 b_1 & a_3 b_1 \\ a_1 b_2 & a_2 b_2 & a_3 b_2 \\ a_1 b_3 & a_2 b_3 & a_3 b_3 \\ a_1 b_4 & a_2 b_4 & a_3 b_4 \end{bmatrix} b1b2b3b4 [a1a2a3]= a1b1a1b2a1b3a1b4a2b1a2b2a2b3a2b4a3b1a3b2a3b3a3b4

外积是将结果的维度扩张到二维,而内积呢,其结果将维度缩减到了标量。

4. 补充:克罗内克积

数学上,克罗内克积是两个任意大小的矩阵间的运算。克罗内克积是张量积的特殊(拓展)形式,以德国数学家利奥波德·克罗内克命名。

A ⊗ B \mathbf{A} \otimes \mathbf{B} AB,如果 A \mathbf{A} A 是一个 m × n m \times n m×n 的矩阵,而 B \mathbf{B} B 是一个 p × q p \times q p×q 的矩阵,克罗内克积则是一个 m p × n q mp \times nq mp×nq 的分块矩阵

A ⊗ B = [ a 11 B ⋯ a 1 n B ⋮ ⋱ ⋮ a m 1 B ⋯ a m n B ] \mathbf{A} \otimes \mathbf{B} = \begin{bmatrix} a_{11} \mathbf{B} & \cdots & a_{1n} \mathbf{B} \\ \vdots & \ddots & \vdots \\ a_{m1} \mathbf{B} & \cdots & a_{mn} \mathbf{B} \end{bmatrix} AB= a11Bam1Ba1nBamnB

更具体而言:

A ⊗ B = [ a 11 b 11 a 11 b 12 ⋯ a 11 b 1 q ⋯ ⋯ a 1 n b 11 a 1 n b 12 ⋯ a 1 n b 1 q a 11 b 21 a 11 b 22 ⋯ a 11 b 2 q ⋯ ⋯ a 1 n b 21 a 1 n b 22 ⋯ a 1 n b 2 q ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ ⋱ ⋮ a 11 b p 1 a 11 b p 2 ⋯ a 11 b p q ⋯ ⋯ a 1 n b p 1 a 1 n b p 2 ⋯ a 1 n b p q ⋮ ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ a m 1 b 11 a m 1 b 12 ⋯ a m 1 b 1 q ⋯ ⋯ a m n b 11 a m n b 12 ⋯ a m n b 1 q a m 1 b 21 a m 1 b 22 ⋯ a m 1 b 2 q ⋯ ⋯ a m n b 21 a m n b 22 ⋯ a m n b 2 q ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ ⋱ ⋮ a m 1 b p 1 a m 1 b p 2 ⋯ a m 1 b p q ⋯ ⋯ a m n b p 1 a m n b p 2 ⋯ a m n b p q ] \mathbf{A} \otimes \mathbf{B} = \begin{bmatrix} a_{11} b_{11} & a_{11} b_{12} & \cdots & a_{11} b_{1q} & \cdots & \cdots & a_{1n} b_{11} & a_{1n} b_{12} & \cdots & a_{1n} b_{1q} \\ a_{11} b_{21} & a_{11} b_{22} & \cdots & a_{11} b_{2q} & \cdots & \cdots & a_{1n} b_{21} & a_{1n} b_{22} & \cdots & a_{1n} b_{2q} \\ \vdots & \vdots & \ddots & \vdots & & & \vdots & \vdots & \ddots & \vdots \\ a_{11} b_{p1} & a_{11} b_{p2} & \cdots & a_{11} b_{pq} & \cdots & \cdots & a_{1n} b_{p1} & a_{1n} b_{p2} & \cdots & a_{1n} b_{pq} \\ \vdots & \vdots & & \vdots & \ddots & & \vdots & \vdots & & \vdots \\ \vdots & \vdots & & \vdots & & \ddots & \vdots & \vdots & & \vdots \\ a_{m1} b_{11} & a_{m1} b_{12} & \cdots & a_{m1} b_{1q} & \cdots & \cdots & a_{mn} b_{11} & a_{mn} b_{12} & \cdots & a_{mn} b_{1q} \\ a_{m1} b_{21} & a_{m1} b_{22} & \cdots & a_{m1} b_{2q} & \cdots & \cdots & a_{mn} b_{21} & a_{mn} b_{22} & \cdots & a_{mn} b_{2q} \\ \vdots & \vdots & \ddots & \vdots & & & \vdots & \vdots & \ddots & \vdots \\ a_{m1} b_{p1} & a_{m1} b_{p2} & \cdots & a_{m1} b_{pq} & \cdots & \cdots & a_{mn} b_{p1} & a_{mn} b_{p2} & \cdots & a_{mn} b_{pq} \end{bmatrix} AB= a11b11a11b21a11bp1am1b11am1b21am1bp1a11b12a11b22a11bp2am1b12am1b22am1bp2a11b1qa11b2qa11bpqam1b1qam1b2qam1bpqa1nb11a1nb21a1nbp1amnb11amnb21amnbp1a1nb12a1nb22a1nbp2amnb12amnb22amnbp2a1nb1qa1nb2qa1nbpqamnb1qamnb2qamnbpq

例如:

[ 1 2 3 1 ] ⊗ [ 0 3 2 1 ] = [ 1 ⋅ 0 1 ⋅ 3 2 ⋅ 0 2 ⋅ 3 1 ⋅ 2 1 ⋅ 1 2 ⋅ 2 2 ⋅ 1 3 ⋅ 0 3 ⋅ 3 1 ⋅ 0 1 ⋅ 3 3 ⋅ 2 3 ⋅ 1 1 ⋅ 2 1 ⋅ 1 ] = [ 0 3 0 6 2 1 4 2 0 9 0 3 6 3 2 1 ] \begin{bmatrix} 1 & 2 \\ 3 & 1 \end{bmatrix} \otimes \begin{bmatrix} 0 & 3 \\ 2 & 1 \end{bmatrix} = \begin{bmatrix} 1 \cdot 0 & 1 \cdot 3 & 2 \cdot 0 & 2 \cdot 3 \\ 1 \cdot 2 & 1 \cdot 1 & 2 \cdot 2 & 2 \cdot 1 \\ 3 \cdot 0 & 3 \cdot 3 & 1 \cdot 0 & 1 \cdot 3 \\ 3 \cdot 2 & 3 \cdot 1 & 1 \cdot 2 & 1 \cdot 1 \end{bmatrix} = \begin{bmatrix} 0 & 3 & 0 & 6 \\ 2 & 1 & 4 & 2 \\ 0 & 9 & 0 & 3 \\ 6 & 3 & 2 & 1 \end{bmatrix} [1321][0231]= 10123032131133312022101223211311 = 0206319304026231

克罗内克积有很多矩阵乘法没有的性质,具体感兴趣可以自行搜索,百科记录都很全。


via:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值