在线性代数中,特征(eigen-)向量(eigenvector or characteristic vector)v 用矩阵 A 做线性变换之后,得到的结果与 v 在同一条直线上,但是长度和方向也许会改变。
如果 T 是域 F 上的向量空间 V 到其本身的线性变换,v 是 V 中的非零向量,那么当 T(v) 是 v 的标量倍时,称 v 是 T 的一个特征向量。此条件可以表达成:
T(v)=λv
如果向量空间 V 是有穷维的,那么 T 可以被表示为方阵 A,向量 v 可以被表示为列向量,上述条件可以写为:
Av=λv
v: 矩阵 A 的特征向量(非零)
λ: 与特征向量 v 对应,矩阵 A 的特征值
在一定条件下(矩阵形式为实对称矩阵的线性变换),一个变换可以由其特征值和特征向量完全表述,也就是说:所有的特征向量组成了这向量空间的一组基底。一个特征空间(eigenspace)是具有相同特征值的特征向量与一个同维数的零向量的集合,可以证明该集合是一个线性子空间,比如 Eλ={u∈V∣Au=λu} 即为线性变换 A 中以 λ 为特征值的特征空间。
特征值解法
形式计算
Av(A−λI)v=λv=0
等价于行列式:
pA(λ)=det(A−λI)=0
称 pA(λ) 为 A 的特征多项式。求解矩阵的特征值就是求特征多项式的零点。求得特征值之后,特征向量可以通过下面的方程得到:
(A−λI)v=0
如果 A 是一个 n×n 矩阵,则 pA 是 n 次多项式(因为只有在主对角线有 λ),因此 A 最多有 n 个特征值。反过来,如果 A 的系数是在一个代数闭域里面(比如说复数域),那么代数基本定理说明这个方程刚好有 n 个根(如果重根也计算在内的话)。所有奇数次的多项式必有一个实数根,因此当 n 为奇数的时候,每个 n 维实系数矩阵至少有一个实数特征值。当矩阵系数是实数的时候,非实数的特征值会成共轭对出现。
n 为偶数时,则不一定有实数特征值。比如对于以下的矩阵 A(表示二维平面上的顺时针 90° 的一个旋转变换,A(0,1)=(1,0)):
分母上除以分子向量的模是为了归一化,使得最终求解的特征向量不会碎迭代次数增加而变大。可以将 A 换为 (A−μI)−1 以求得特征值最接近 μ 的特征向量。
这个序列几乎总是收敛于最大绝对值的特征值所对应的特征向量。这个算法很简单,但是本身不是很有用。但是,像 QR 算法这样的算法正是以此为基础的。
计算得到特征向量之后,利用下面的方程解得特征值:
λ=v∗vv∗Av
其中 v∗ 是 v 的共轭转置。
现代算法
QR algorithm, 1961 可以准确地计算任意矩阵的特征值和特征向量。MARLAB 中就利用了 QZ 算法(The algorithm is an analog of the QR algorithm (see §7.3) for the generalized eigenvalue problem. [Direct Methods])。