求解原理
定义: 设
A
A
A是
n
×
n
n \times n
n×n 方阵,如果有数
λ
\lambda
λ和
n
n
n维非零列向量
X
X
X,满足下式,则称
λ
\lambda
λ为
A
A
A的一个特征值,非零向量
X
X
X为与
λ
\lambda
λ对应的特征向量。
A
X
=
λ
X
AX = \lambda X
AX=λX
Step1:特征值求解
上式可写作
(
λ
E
−
A
)
X
=
0
\left( {\lambda E - A} \right)X = {\bf{0}}
(λE−A)X=0,其中
E
E
E 是
n
n
n 阶单位矩阵,从而得到下式,这是一个关于
λ
\lambda
λ的
n
n
n次多项式,也称为特征方程或特征多项式,从而解得
n
n
n个特征值
λ
1
,
λ
2
,
.
.
.
,
λ
n
{\lambda _1},{\lambda _2},...,{\lambda _n}
λ1,λ2,...,λn。
∣
λ
E
−
A
∣
=
∣
λ
−
a
11
−
a
12
⋯
−
a
1
n
−
a
21
λ
−
a
22
⋯
−
a
2
n
⋮
⋮
⋱
⋮
−
a
n
1
−
a
n
2
⋯
λ
−
a
n
n
∣
=
0
\left| {\lambda E - A} \right| = \left| \begin{matrix} \lambda - a_{11} & -a_{12} & \cdots & -a_{1n} \\ -a_{21} & \lambda - a_{22} & \cdots & -a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ -a_{n1} & -a_{n2} & \cdots & \lambda - a_{nn} \end{matrix} \right| = 0
∣λE−A∣=
λ−a11−a21⋮−an1−a12λ−a22⋮−an2⋯⋯⋱⋯−a1n−a2n⋮λ−ann
=0
Step2:特征向量求解
对于每一个特征值
λ
i
\lambda_i
λi,通过求解方程组
(
λ
i
E
−
A
)
X
i
=
0
\left( {\lambda_i E - A} \right)X_i = {\bf{0}}
(λiE−A)Xi=0,得到特征向量
X
i
X_i
Xi。这可以转化为齐次线性方程组求解问题,具体步骤如下:
- 将 λ i E − A \lambda_i E - A λiE−A 表示为增广矩阵形式。
- 对增广矩阵进行高斯消元,得到方程组的简化形式。
- 根据简化形式,利用回代法求解出特征向量
X
i
X_i
Xi。
基本性质
性质1: 矩阵
A
A
A的
n
n
n个特征值之和等于
A
A
A的
n
n
n个对角元素之和,也常被成为
A
A
A的迹,记作
t
r
(
A
)
tr(A)
tr(A),即
λ
1
+
λ
2
+
.
.
.
+
λ
n
=
a
11
+
a
22
+
.
.
.
+
a
n
n
=
t
r
(
A
)
{\lambda _1} + {\lambda _2} + ... + {\lambda _n} = {a_{11}} + {a_{22}} + ... + {a_{nn}} = tr\left( A \right)
λ1+λ2+...+λn=a11+a22+...+ann=tr(A)
性质2:矩阵
A
A
A的
n
n
n个特征值之积等于
A
A
A的行列式,即
λ
1
λ
2
.
.
.
λ
n
=
∣
A
∣
{\lambda _1}{\lambda _2}...{\lambda _n} = \left| A \right|
λ1λ2...λn=∣A∣
性质3:线性无关的特征向量可实现矩阵
A
A
A的相似对角化,记
P
=
[
X
1
X
2
.
.
.
X
n
]
P = \left[ {{X_1}{X_2}...{X_n}} \right]
P=[X1X2...Xn],则
P
−
1
A
P
=
d
i
a
g
(
λ
1
,
λ
2
,
.
.
.
,
λ
n
)
{P^{ - 1}}AP = diag\left( {{\lambda _1},{\lambda _2},...,{\lambda _n}} \right)
P−1AP=diag(λ1,λ2,...,λn)
性质4:特征值是唯一确定的,但是特征向量具有不同的形式。补充:一方面,特征向量可以选择不同的模长;另一方面,特征向量可以选择不同的基向量。例如,对于单重特征值,特征向量是一维的,可以选择两个方向,对于双重的特征值,特征向量是二维的,可以选择任意一组基向量作为特征向量,详见下述解析计算。
解析计算
对于矩阵
A
A
A:
A
=
[
−
1
1
1
1
−
1
1
1
1
−
1
]
A = \left[ \begin{array}{ccc} -1 & 1 & 1 \\ 1 & -1 & 1 \\ 1 & 1 & -1 \\ \end{array} \right]
A=
−1111−1111−1
Step1:特征值求解
展开方程
∣
λ
E
−
A
∣
=
0
\left| {\lambda E - A} \right| = 0
∣λE−A∣=0 得到:
∣
λ
E
−
A
∣
=
∣
λ
+
1
−
1
−
1
−
1
λ
+
1
−
1
−
1
−
1
λ
+
1
∣
=
0
\left| {\lambda E - A} \right| = \left| \begin{matrix} \lambda + 1 & -1 & -1 \\ -1 & \lambda + 1 & -1 \\ -1 & -1 & \lambda + 1 \\ \end{matrix} \right| = 0
∣λE−A∣=
λ+1−1−1−1λ+1−1−1−1λ+1
=0
展开行列式,得到关于
λ
\lambda
λ 的多项式:
(
λ
−
1
)
(
λ
+
2
)
2
=
0
(\lambda - 1)(\lambda + 2)^2 = 0
(λ−1)(λ+2)2=0
解这个特征多项式,得到特征值
λ
1
=
−
1
\lambda_1 = -1
λ1=−1 和
λ
2
=
λ
3
=
−
2
\lambda_2 = \lambda_3 = -2
λ2=λ3=−2。
Step2:特征向量求解
对于特征值 λ 1 = − 1 \lambda_1 = -1 λ1=−1,我们解方程组 ( λ 1 E − A ) X = 0 (\lambda_1 E - A)X = \mathbf{0} (λ1E−A)X=0,即:
(
0
−
1
−
1
−
1
0
−
1
−
1
−
1
0
)
X
=
(
0
0
0
)
\left( \begin{matrix} 0 & -1 & -1 \\ -1 & 0 & -1 \\ -1 & -1 & 0 \\ \end{matrix} \right) X = \left( \begin{matrix} 0 \\ 0 \\ 0 \\ \end{matrix} \right)
0−1−1−10−1−1−10
X=
000
对增广矩阵进行高斯消元,得到简化形式为:
(
1
0
1
0
1
1
0
0
0
)
X
=
(
0
0
0
)
\left( \begin{matrix} 1 & 0 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 0 \\ \end{matrix} \right) X = \left( \begin{matrix} 0 \\ 0 \\ 0 \\ \end{matrix} \right)
100010110
X=
000
这里有一个自由变量,我们令
x
3
=
t
x_3 = t
x3=t,其中
t
≠
0
t \neq 0
t=0,然后可以得到:
X
=
t
(
−
1
−
1
1
)
X = t \left( \begin{matrix} -1 \\ -1 \\ 1 \\ \end{matrix} \right)
X=t
−1−11
因此,对应于特征值
λ
1
=
−
1
\lambda_1 = -1
λ1=−1 的特征向量为
X
1
=
(
−
1
−
1
1
)
X_1 = \left( \begin{matrix} -1 \\ -1 \\ 1 \end{matrix} \right)
X1=
−1−11
。
对于特征值 λ 2 = λ 3 = − 2 \lambda_2 = \lambda_3 = -2 λ2=λ3=−2,我们解方程组 ( λ 2 E − A ) X = 0 (\lambda_2 E - A)X = \mathbf{0} (λ2E−A)X=0,即:
( − 1 − 1 − 1 − 1 − 1 − 1 − 1 − 1 − 1 ) X = ( 0 0 0 ) \left( \begin{matrix} -1 & -1 & -1 \\ -1 & -1 & -1 \\ -1 & -1 & -1 \\ \end{matrix} \right) X = \left( \begin{matrix} 0 \\ 0 \\ 0 \\ \end{matrix} \right) −1−1−1−1−1−1−1−1−1 X= 000
对增广矩阵进行高斯消元,得到简化形式为:
(
1
1
1
0
0
0
0
0
0
)
X
=
(
0
0
0
)
\left( \begin{matrix} 1 & 1 & 1 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \\ \end{matrix} \right) X = \left( \begin{matrix} 0 \\ 0 \\ 0 \\ \end{matrix} \right)
100100100
X=
000
这里有两个自由变量,我们令
x
2
=
s
x_2 = s
x2=s 和
x
3
=
t
x_3 = t
x3=t,其中
s
,
t
≠
0
s, t \neq 0
s,t=0,然后可以得到:
X
=
s
(
1
−
1
0
)
+
t
(
1
0
−
1
)
X = s \left( \begin{matrix} 1 \\ -1 \\ 0 \\ \end{matrix} \right) + t \left( \begin{matrix} 1 \\ 0 \\ -1 \\ \end{matrix} \right)
X=s
1−10
+t
10−1
因此,对应于特征值 λ 2 = λ 3 = − 2 \lambda_2 = \lambda_3 = -2 λ2=λ3=−2 的特征向量为 X 2 = ( 1 − 1 0 ) X_2 = \left( \begin{matrix} 1 \\ -1 \\ 0 \end{matrix} \right) X2= 1−10 和 X 3 = ( 1 0 − 1 ) X_3 = \left( \begin{matrix} 1 \\ 0 \\ -1 \end{matrix} \right) X3= 10−1 。
Matlab实现
实际过程中,可直接采用Matlab求解特征值和特征向量,示例代码如下所示。
% 给定矩阵 A
A = [-1, 1, 1; 1, -1, 1; 1, 1, -1];
% 求解特征值和特征向量
[V, D] = eig(A);
% 输出特征值和特征向量
disp('特征值:');
disp(diag(D)');
disp('特征向量:');
disp(V);
如下结果可以看出,求解所得特征值与解析计算是一致的,但特征向量的选择有所不同。一方面,Matlab进行了模长度的归一化(通过
λ
=
1
\lambda=1
λ=1的特征向量可以看出);另一方面,Matlab选择的是正交基作为
λ
=
2
\lambda=2
λ=2的特征向量。
参考文献
参考1:线性代数,特征值与特征向量