特征向量代表了什么?在《线性代数真是神奇的东西,尤其是特征值分解》中一直针对二维实对称矩阵进行说明。一个二维实对称矩阵的二次型可以对应一个椭圆曲线方程。而这个矩阵的特征向量,正是这个椭圆的轴线的方向向量。
但是去年的深秋,我曾想像过另外一种特征向量的解释:
一个方阵与一个列向量相乘,实际上是一种坐标变换的过程,例如:
y = Ax
x代表原空间中的坐标,AT的每一个列向量则是一个新坐标系的各个坐标轴向量。x与A相乘后的向量y即是x在新的坐标系AT中的表示。可以说这样的乘法,其结果y是我们身处新空间AT中观察到的原空间中的x。对于矩阵A,其特征向量具有如下的性质:
Ax = λx
这说明,将特征向量x投影到AT所代表的空间之后,x的方向没有变化,仅仅是大小变了(与标量λ相乘)。也就是说,无论是在原空间还是在新空间AT中观察特征向量,其方向不变。有了这种想法之后,我在网上搜索了一下,发现百度知道里有人明确的说明了这种解释。
对于实对称矩阵,现在我们有了关于特征向量的两种几何解释:1、矩阵二次型代表的椭圆的轴线方向向量;2、变换到矩阵代表的空间后方向不发生变化的向量。我在想,这两种几何解释是否能够融合成一个。
一个椭圆的方程:
xTMx = C
M是实对称矩阵。我们将M表示成ATA(ATA是实对称的),则椭圆方程变成:
xTATAx = C
(Ax)TAx = C
令y = Ax
yTy = C (这是圆的方程)
从上面的这个式子我们可以想象出椭圆的来历:制造一个扭曲的空间AT,在这个扭曲的空间画圆,然后在原空间中会看到一个椭圆。
如何制造扭曲空间AT?先说明我们如何扭曲,使得扭曲空间中的圆对应原空间中的一个椭圆。
想像我们的二维空间是一个橡皮膜。沿着与x轴呈θ角的方向拉伸(或压缩橡皮膜),于此同时,沿着与x轴呈90°+θ角的方向拉伸(或压缩橡皮膜)。这样的扭曲对应的空间变换矩阵如下:

注意这是一个对称阵,以后要用到这个性质。
一个列向量与这样一个矩阵相乘相当于在扭曲的空间中观察这个列向量。矩阵中的θ说明了我们将沿着与原空间x轴呈θ角和θ+90°角两个方向把空间拉伸或者压缩;k1代表了在θ方向我们将以何种程度拉伸或者压缩,若k1>1,则说明向量在此方向的分量被放大了,即我们在此方向拉伸橡皮膜,若k1<1,则向量在此方向的分量变小,即我们在此方向压缩橡皮膜;k2对于θ+90°方向的效果与k1是一样的。
让我们试试,为了能够看出效果,先用正方形做实验。考虑到Matlab
plot在绘制复数据时,会将实部和虚部当作两个维度,所以下面的代码中我们用复数来表示二维图形。
先构造一个扭曲空间AT:
a = pi / 4;
k1 = 2;
k2 = 0.5;
sin_a = sin(a);
cos_a = cos(a);
sin2_a = sin(a)^2;
cos2_a = cos(a)^2;
sin_cos_a = sin_a*cos_a;
A = [k1*cos2_a+k2*sin2_a, k1*sin_cos_a-k2*sin_cos_a;
k1*sin_cos_a-k2*sin_cos_a,
k1*sin2_a+k2*cos2_a];
在原空间构造一个矩形:
temp = linspace(-1, 1, 32);
r = [temp, ones(1, 32), -temp, -ones(1, 32)] + ...
1i*[ones(1, 32), -temp, -ones(1, 32),
temp];
figure;
plot(r);
不要关闭打开的figure,输入下面的代码,我们在扭曲空间AT中观察这个矩形,看看
r_points = [real(r); imag(r)];
d_points = A * r_points;
d = d_points(1, :) + 1i * d_points(2,
:);
hold on;
plot(d, 'r')

红色的形状就是我们在扭曲空间AT中观察原来矩形的结果,AT的参数k1=2,
k2=0.5,
theta=pi/4说明,扭曲空间AT这样制造:我们将在与原空间x轴呈45°角的方向拉伸“橡皮膜”,135°方向挤压“橡皮膜”。上图完全符合我们的要求。
再用圆试试:
theta = linspace(0, 2*pi, 128);
c = exp(1i*theta);
figure;
plot(c);
c_points = [real(c); imag(c)];
e_points = A * c_points;
e = e_points(1, :) + 1i * e_points(2,
:);
hold on;
plot(e, 'r');

不难想象,我们如果在扭曲空间AT中画一个圆:
yTy = C
在原空间中观察,它将是一个椭圆,且它的轴线方向与空间被拉伸和挤压的方向相同:
xTATAx = C
ATA = M
xTMx = C
这个椭圆的轴线方向为θ和θ+90°。
现在考虑原空间中两类特殊的向量,它们的方向分别是θ和θ+90°,即它们与空间被拉伸(挤压)的方向相同,在扭曲空间AT中观察,它们的方向仍然是θ和θ+90°。这正是特征向量的性质!画个图来证实一下:
figure;
plot(r);
r_points = [real(r); imag(r)];
d_points = A * r_points;
d = d_points(1, :) + 1i * d_points(2,
:);
hold on;
plot(d, 'r')
v = [cos(a); sin(a)];
quiver(0, 0, v(1), v(2), 'k');
v2 = A * v;
quiver(0, 0, v2(1), v2(2), 'g');

可以看见绿色和黑色的两个向量方向重合了,它们分别是同一个向量(这个向量与特征向量同向)在不同的空间中观察的结果。
为什么不在拉伸和收缩方向上的向量在AT中观察方向会改变呢?其实很好理解。不在拉伸和收缩方向上的向量,会在拉伸和收缩这两个方向上存在非零的分量(投影),这两个分量一个被拉伸,一个被挤压,自然方向就会发生改变。力学上也是这样的,有两个方向垂直的力,如果一个力变大,一个力变小,合力方向当然会变。用图来说明:
figure;
plot(r);
r_points = [real(r); imag(r)];
d_points = A * r_points;
d = d_points(1, :) + 1i * d_points(2,
:);
hold on;
plot(d, 'r')
v = [1; 0];
quiver(0, 0, v(1), v(2), 'g');
v2 = A * v;
quiver(0, 0, v2(1), v2(2), 'k');

黑色和绿色两个向量是同一个向量(这个向量不与任何一个特征向量同向或反向)在不同空间观察的结果,可以看出,它们的方向不重合了。
这就是说A的特征向量方向正好与椭圆的轴线方向一致。但是之前的讨论中椭圆的轴线与二次型的矩阵M的特征向量是一致的。要融合这两种说法,就必须证明矩阵A和矩阵M=ATA特征向量方向相同。
假设A有特征向量x,即:
Ax =λx
前面给出A的定义式时说了,A是一个对称阵:
Mx = ATAx =λATx
=λAx = λ2x
即A的特征向量也是M的特征向量,A的特征值的平方是M的特征值。这样,我想我已经把关于椭圆轴线与特征值几何含义的两种解释串了起来。
|