仅有大小的量称为数量,也称为标量,例如温度、面积等;既有大小又有方向的量,称为向量,例如位移、速度等。
终点与起点重合的向量称为零向量,其大写形式一般记为斜体加黑的大写英文字母 O ,小写形式一般记为正体加黑的阿拉伯数字 0 。
在机器视觉讨论的三维空间中,向量可以表示为
a =( a 1 , a 2 , a 3 ) T
其中, a 1 , a 2 , a 3 为向量的坐标。向量另一种等价表示方式是
a =( a cos α , a cos β , a cos γ ) T
其中, a 为向量的模即长度, α 、 β 、 γ 为向量的方向角,cos α 、cos β 、cos γ 称为向量的方向余弦。
向量
a
与向量
b
的内积记作
a
·
b
,也称为点积或者数量积,定义为向量的模
和
与两向量夹角
θ
的余弦之积。即
它与以下代数定义是等价的:向量 a =( a 1 , a 2 , a 3 ) T 和 b =( b 1 , b 2 , b 3 ) T 的内积为
非零向量 a 与 b 内积为零,等价于向量 a 和 b 垂直。即
a ⊥ b ⇔ a · b =0
向量
a
与向量
b
的外积记作
a
×
b
,也称为叉积或者向量积,定义为垂直于两向量所在平面、方向由右手规则决定的向量,其大小为
和
与两向量夹角正弦之积。即
它与以下代数定义是等价的:向量 a =( a 1 , a 2 , a 3 ) T 与 b =( b 1 , b 2 , b 3 ) T 的外积为
非零向量 a 与 b 外积为零,等价于向量 a 和 b 平行。即
a ‖ b ⇔ a × b =0
点积和叉积均具有极其明确的物理意义:点积描述了投影关系,叉积描述了旋转关系。
对于向量 a =( a 1 , a 2 , a 3 ) T 和 b =( b 1 , b 2 , b 3 ) T ,式(1-4)的叉积 a × b 可以写成如下矩阵形式:
其中,矩阵( a ) × 对角线上的元素为零,对角线两侧的对称元素反号,称为由向量 a 确定的反对称矩阵。通过反对称矩阵,两向量的叉积可以表示为矩阵和向量的乘积。
反对称矩阵( a ) × 具有一些好的性质:
(1)
;
(2)∀ a ≠ 0 ⇒rank( a ) × =2;
(3)向量的叉积可以表示为矩阵与向量相乘,∀ a , b ∈ R 3 ⇒ a × b =( a ) × b ;
(4)向量 a 既是( a ) × 的右零空间( a ) × a =0,也是( a ) × 的左零空间 a ( a ) × =0;
(5)∀ a , b ∈ R 3 ⇒ b T ( a ) × b =0。
反对称矩阵通过 R 3×3 ∋( a ) × ↔ a ∈ R 3 在矩阵和向量之间建立双向联系,在空间旋转的轴-角表示、立体视觉标定的罗德里格斯分解以及李群和李代数求解位姿变换中均有广泛应用。
给定函数 R n → R m :
(1)如果 m =1,函数称为数量值函数,一般表示为白体 f (·);
(2)如果 m >1,函数称为向量值函数,一般表示为黑体 f (·)。
多元 数量值函数 f : R n → R 的一阶偏导数称为 f 的梯度向量,记作▽ f 。
注意: 本书梯度向量▽ f 定义为行向量。
程序设计中可以将▽ f 根据读音命名为nabla_f。
也有部分资料将梯度向量定义成列向量,这通常可以通过上下文确定,一般不会引起混淆;梯度向量定义成行向量还是列向量,仅是表示的约定,并无本质不同。
多元 向量值函数 f : R n → R m 的一阶偏导数称为 f 的雅可比矩阵,记作 J f 或 J ( f )。
数量值函数 f : R n → R 的梯度▽ f ,是向量值函数▽ f : R n → R n ;该向量值函数▽ f 的雅可比矩阵 J (▽ f ),称为数量值函数 f 的Hessian矩阵,记作 H f 或 H ( f )。
可见数量值函数 f : R n → R 的Hessian矩阵 H f 就是 f 的二阶偏导▽ 2 f 。
一元数量值函数使用导数
描述函数值
f
对自变量
x
的变化率,多元数量值函数使用偏导数
描述函数值
f
沿坐标轴
x
i
方向的变化率,它们都仅仅提供了有限几个特定方向(坐标轴方向)的变化率。
如果需要了解函数在非坐标轴方向上的变化,需要引入方向导数。方向导数即函数在任意给定方向的导数,其作为偏导数的推广,可以描述函数沿任意方向的变化率。
注意,方向导数是一个数量值。
以二维平面场为例,给定
R
2
→
R
的二元数量值函数
z
=
f
(
x
,
y
)和某一点
M
0
(
x
0
,
y
0
),自
M
0
引出一条射线
L
,记射线
L
与
x
轴和
y
轴的夹角分别为
α
和
β
,则射线
L
的单位向量为
;在射线
L
上任取异于
M
0
的另一点
M
(
x
0
+Δ
x
,
y
0
+Δ
y
),令点
M
沿着射线
L
趋近
M
0
,将
的极限定义为函数
f
在点
M
0
处沿方向
L
的方向导数,记作
、
或grad
L
f
(
M
0
)。
可以证明,如果函数 z = f ( x , y ): R 2 → R 在点 M 0 ( x 0 , y 0 )可微,则函数 f 在 M 0 处沿任意方向 L 的方向导数都存在。
其中, α , β 为射线 L 的方向角。
借用梯度向量
,并利用方向余弦,可以将射线
L
的单位向量记为
e
=(cos
α
,cos
β
,…),则方向导数就是梯度▽
f
在方向
e
的投影。
上述结论可以推广到更高维的 n 维数量值函数 f : R n → R ,从而得到多元函数 f 的方向导数:函数 f 的梯度▽ f 在方向 L 的单位投影,称为函数 f 在 M 0 沿 L 的方向导数。
函数在某点的梯度向量方向上的方向导数为最大,即梯度向量是函数值的最快上升方向,反方向是最快下降方向,与梯度向量正交的方向上变化率为零。
对于多入多出的多元向量值函数,使用分项形式将会导致表达式松散而烦琐,因此通常采用整体的向量/矩阵形式,以下为部分常用公式。
(1)自变量求导:对于 x ∈ R n ,有
( x ) ' =( x T ) '
(2)函数求导:记 f ( x )= Ax ,其中 x ∈ R n , A ∈ R m × n 为固定的常值矩阵,则
(3)复合函数求导:记 f (·)=( f 1 ( h ), f 2 ( h ),…, f F ( h ))T: R H → R F , h (·)=( h 1 ( x ), h 2 ( x ),…, h H ( x )) T : R N → R H , x =( x 1 , x 2 ,…, x N ) T ∈ R N ,则
(4)函数四则运算求导:以乘法为例,此时函数 f 与函数 g 的维数需要一致,记该维数为 H , f =( f 1 ( x ), f 2 ( x ),…, f H ( x )) T : R N → R H , g =( g 1 ( x ), g 2 ( x ),…, g H ( x )) T : R N → R H , x =( x 1 , x 2 ,…, x N ) T ∈ R N ,则数量值函数 f T g ( x ): R N → R 的导数为
以上的 f 和 g 均为列向量函数,先不对行向量 f T 求导,求导结果保持行向量形式。
再如 f ( x )= x T ABx ,其中 A ∈ R n × p 和 B ∈ R p × n 为固定的常值矩阵, x ∈ R n ,则可以将 x T ABx 视作函数 x T A 与函数 Bx 的复合运算,有
或者将 x T ABx 视作函数 x T 与函数 ABx 的复合运算,有
两者结果是相同的。
当然实际计算中需要满足矩阵满秩约束,否则只是在形式上的成立。
(5)工程实现中通常存在假设:例如常见的二次型 f = x T Qx ,其中 x ∈ R n , Q ∈ R n × n 为常值矩阵,有
其中, Q 一般不是对称矩阵。但是,在很多工程问题和软件代码实现中,基于某种先验知识,默认其为对称矩阵,从而有( x T Qx ) ' =2 x T Q T ,或者, J ( x T Qx )=2 Qx ,因此应该注意,式(1-12)的成立需要对矩阵 Q 的性质进行加强,即 Q = Q T 。