新学期3门机器人专业课都会用到线性代数的基本知识,其中一门高等机构学还会更深入的将旋量代数和李群李代数的部分。所以抓紧开学初的时间再回顾一下基本的要熟悉的概念。今天在复习特征值和特征向量的过程中,对这个其作用和功能有了新的认知!(别人之前可能就有了…)对于其在我以往学过的知识和将来要学的部分的作用感悟到了其妙处。
特征值与特征向量从何而来?
我们课上学习到的是基本的定义式。不过如何从线性代数的本质———空间/坐标系变换(个人认为的)去理解特征值和特征向量呢?
用最简单的二维空间(平面坐标系)进行理解。我们在进行线性变换的时候,变换前的向量和变换后的向量在空间中往往会呈现出不同的关系,会将向量变换的到其他的点上。
但是其中有一种情况较为特殊,就是变换后的向量与变换前的向量共线。从更严谨的角度讲,变换后的向量落在了变换前向量张成的空间中。就像从初中学的一样,这也代表着,我们可以仅仅通过给原始向量乘一个系数就可以得到线性变换后的向量。
与初始向量共线的向量有无数个,他们就被称为特征向量,因为他们在线性变换的前后的始终在一条线上。而这一个可以代替线性变换矩阵的系数因子,被称为特征值。
这解释了这一关键式子:
A
v
⃗
=
λ
v
⃗
A\vec{v} = \lambda \vec{v}
Av=λv
A 代表了线性变换的矩阵
v
⃗
\vec{v}
v 代表了变换前后始终共线的向量,即特征向量
λ
\lambda
λ 代表的是与线性变换等效的缩放比例的过程,即特征值
特征值特征向量对我有什么用?
就像我前面说到的,我倾向于把线性代数看作一种对于空间的操作。因为我在学习机械、控制等知识时,常常遇到坐标变换的问题。拿三维空间中的变换举例。在三维空间中,当我们将一个线性变换应用于一空间中的向量后,意味着我们得到变换后的空间中该向量的坐标。我们在开始学习机械臂关节变换的时候就使用矩阵来代表关节的位置变化。
但在这些变换中,总存在着一条线,他在线性变换前后不发生改变任何绝对位置上的改变,而只会有大小比例上的改变。这就是特征向量长成的一维空间。由于他在变换中不发生位置上的改变,因此,我们可以用这根轴来当表示这个旋转过程,即该旋转变化是绕这根轴来进行的。这下一来,我们标识机器人的坐标变换就更加方便了,并且极大简化了我们的运算过程。
如何理解求特征值特征向量的过程?
A
v
⃗
=
λ
v
⃗
A\vec{v} = \lambda \vec{v}
Av=λv
这一式子的左边是矩阵数乘,右边则是向量数乘。为了让这个过程更符合我们的理解,我们将数乘(比例缩放)这一操作也转化为一个矩阵
λ
I
\lambda I
λI。
简单合并一下,得到:
(
A
−
λ
I
)
v
⃗
=
0
(A-\lambda I)\vec{v} = 0
(A−λI)v=0
因此我们求特征值的过程就是我们就是要找到向量
v
⃗
\vec{v}
v,可以让这个
(
A
−
λ
I
)
(A-\lambda I)
(A−λI)矩阵与
v
⃗
\vec{v}
v相乘得到零向量。显然零向量是满足的,但是对于我们应用没啥意义因为在空间中,零向量没有方向和长度。所以我们要找到的就是非零向量。
在
(
A
−
λ
I
)
(A-\lambda I)
(A−λI)矩阵把空间压缩到更低维度的时候,这个等式才等于零向量。而空间的伸缩对应着矩阵行列式的变换。这一点需要对行列式的几何意义有一定的认知,文字不好描述这一美妙的过程,我们可以简单理解为矩阵的行列式代表对矩阵空间的大小的伸缩。(二维对应面积/三维对应体积)。零向量的行列式为0 ,从空间大小的角度就更好理解了吧。
总之,
(
A
−
λ
I
)
(A-\lambda I)
(A−λI)要完成的就是空间压缩拉伸(面积/体积为0)
A
−
λ
I
=
[
a
−
λ
b
c
d
−
λ
]
=
x
⃗
A-\lambda I= \begin{bmatrix} a-\lambda & b\\ c & d-\lambda \end{bmatrix} = \vec{x}
A−λI=[a−λcbd−λ]=x
当变化
λ
\lambda
λ 时,左边的
x
⃗
\vec{x}
x 也在变换,我们需要让其等于零向量。结合刚才提到的行列式与非零解的关系,我们可以将求解的问题转化为:
d
e
t
(
A
−
λ
I
)
=
∣
a
−
λ
b
c
d
−
λ
∣
=
0
det(A-\lambda I)= \begin{vmatrix} a-\lambda & b\\ c & d-\lambda \end{vmatrix} = 0
det(A−λI)=∣
∣a−λcbd−λ∣
∣=0
因此我们只要通过多项式
(
a
−
λ
)
(
d
−
λ
)
=
0
(a-\lambda)(d-\lambda)=0
(a−λ)(d−λ)=0就可以得到特征值,带入矩阵,就可以得到特征向量
v
⃗
\vec{v}
v了。具体如何算,就没这么美妙了…各种方法就靠熟能生巧了。
特征值存在的美妙是我通过看机械臂的位置控制算法时感受到的。但其应用极为广泛,具体实例之后应该会再写一写。