zoukankan      html  css  js  c++  java
  • MIT Linear Algebra#5 Eigenvalues and Eigenvectors

    特征值/特征向量

    矩阵作用于列向量(x)得到列向量(Ax),矩阵的作用相当于函数,对于大部分列向量(Ax),其方向是不同于(x)的,我们感兴趣的是其中平行于(x)的:(Ax=lambda x,x eq0)。即:向量(x)在矩阵(A)的作用下,方向不变,只进行比例系数为(lambda)的伸缩。
    特征向量所在直线上的向量都是特征向量,并且包含了所有特征向量,组成了特征空间。如果我们不断左乘矩阵(A),得到的列向量会越来越贴合最大特征值对应的特征空间(只对实数而言)。
    对于二阶投影矩阵(P)而言:如果(x)已经在列空间的平面上,那么(Px=x,lambda=1);如果(x)垂直于列空间的平面,则(Px=0,lambda=0),除此之外, 没有任何(x)可以在投影后与原(x)平行。
    (A)是奇异阵,那么(Ax=0)必有非零解,所以(lambda=0)必是一个特征值。
    特征值还有两条简单的性质:

    [Sigma_{i=1}^{n}lambda_i=trace(A),lambda_1...lambda_n=det(A) ]

    有了理解后,求解(lambda,x)也很自然:

    [(A-lambda I)x=0有非零解,A-lambda I必奇异 ]

    [特征方程det(A-lambda I)=0 ]

    解出(lambda),进而求出((A-lambda I)x=0)的零空间即可。
    举个交换阵的例子:(A=egin{bmatrix} 0 & 1 \ 1 & 0\ end{bmatrix}),从物理意义上,交换(x_1=egin{bmatrix} 1\ 1\ end{bmatrix})的两行仍然与原向量平行,此时(lambda=1);类似地,交换(x_2=egin{bmatrix} 1\ -1\ end{bmatrix})的两行仍然与原向量平行,只是变成了相反向量,此时(lambda=-1)
    如果再看(A+3I=egin{bmatrix} 3 & 1 \ 1 & 3\ end{bmatrix}),特征值变为了(lambda+3=2,4),特征向量没有改变。
    接着可以看看特征值不为实数的例子:对于反对称矩阵(egin{bmatrix} 0 & -1 \ 1 & 0\ end{bmatrix})(lambda=i,-i),从几何上看:该矩阵的作用是将向量旋转90度,旋转之后的向量不可能与之前的平行,所以也就没有实数特征值。

    对角化

    这一节的前提是(A)(n)个线性无关的特征向量,这样后面由特征向量组成的矩阵(S)才可逆。
    对于满足前提的矩阵:

    [AS=Aegin{bmatrix} x_1&...& x_n \ end{bmatrix}=egin{bmatrix} lambda_1x_1&...& lambda_nx_n \ end{bmatrix}=egin{bmatrix} x_1&...& x_n \ end{bmatrix}egin{bmatrix} lambda_1 & ... & 0 \ ... & ... & ...\ 0 & ... & lambda_n \ end{bmatrix}=SLambda]

    这样(S^{-1}AS=Lambda)
    如果(A)的所有特征值互异,必可对角化;如果有重复特征值,那么不一定(n)个线性无关的特征向量,也不一定可以对角化。

    (A)可以被分解为(A=SLambda S^{-1})。由此不难得到(A)的幂:(A^K=SLambda^K S^{-1}),特征值加倍,但特征向量不变。
    (K ightarrow+infin),如果所有(|lambda_i|<1),那么(A^K ightarrow0)
    (A)的幂有一个应用:一阶差分方程(u_{k+1}=Au_k),通过递推不难发现(u_k=A^ku_0),如果直接用(A^K=SLambda^K S^{-1})求解,求逆开销是不可忽视的,所以我们换一种方式:
    我们知道,线性无关的特征向量可以作为基表示其它向量:

    [u_0=c_1x_1+...+c_nx_n=Sc,Au_0=SLambda S^{-1}u_0=SLambda S^{-1}Sc=SLambda c ]

    [A^ku_o=c_1lambda_1^{k}x_1+...+c_nlambda_n^{k}x_n=SLambda^{k}c ]

    很清楚地看到:(u_k)的增长速度由(Lambda)决定,并且越大的特征值起的作用越大。
    因此求解差分方程需要三步:

    1. 求解矩阵(A)的特征值和特征向量;
    2. (u_0)在特征向量上展开,求出向量(c)
    3. 按照(u_k=SLambda^{k}c)计算即可。

    这里非常经典的例子就是斐波那契数列

    微分方程

    我们知道:对于常系数线性微分方程(frac{dy}{dt}=lambda y),其解为(y(t)=Ce^{lambda t})。现在要研究的是未知函数是向量的情况:(frac{du}{dt}=Au),不难验证(u(t)=e^{lambda t}x)是特解,并且微分方程组满足线性性质。
    举例来看:

    [egin{cases} frac{du_1}{dt}=-u_1+2u_2& ext{}\ frac{du_2}{dt}=u_1-2u_2& ext{}\ end{cases},u(0)=egin{bmatrix} 1\ 0\ end{bmatrix} ]

    (A=egin{bmatrix} -1 & 2 \ 1 & -2\ end{bmatrix}),求解出(lambda=0,-3),从特征值可以看出:(lambda=-3)的项会随着(t)的增加而消失,(lambda=0)的项最终会是稳态。
    特征向量(x_1=egin{bmatrix} 2\ 1\ end{bmatrix},x_2=egin{bmatrix} 1\ -1\ end{bmatrix}),这样可以写出通解:

    [u(t)=c_1e^{lambda_1 t}x_1+c_2e^{lambda_2 t}x_2=frac{1}{3}egin{bmatrix} 2\ 1\ end{bmatrix}+frac{1}{3}e^{-3t}egin{bmatrix} 1\ -1\ end{bmatrix} ]

    (t ightarrow+infin)(frac{1}{3}egin{bmatrix} 2\ 1\ end{bmatrix})这一项将是稳态。
    因此从特征值的角度,(||e^{(-3+6i)t}||=e^{-3t})(||e^{6it}||=1),在单位圆上运动,所以最终的状态取决于特征值的实部:

    • (Re(lambda)<0,e^{lambda t} ightarrow0,u(t) ightarrow0)
    • 某个特征值为0,其余实部小于0,最终收敛于常量
    • (Re(lambda)>0),无法收敛

    回头去看上述的微分方程,(u_1)(u_2)耦合在一起,下面我们尝试用特征向量解耦
    (u=Sv),则微分方程变为(Sfrac{dv}{dt}=ASv,frac{dv}{dt}=S^{-1}ASv=Lambda v),那么:

    [egin{cases} frac{dv_1}{dt}=lambda_1v_1& ext{}\ frac{dv_2}{dt}=lambda_2v_2& ext{}\ ... end{cases} ]

    换种思路,如果直接求解(frac{dv}{dt}=Lambda v),那么类似于标量的答案(v(t)=v(0)e^{Lambda t},u(t)=Sv(t)=Se^{Lambda t}S^{-1}u(0)=e^{At}u(0)),这里就得到了一个新的概念:矩阵指数(e^{At})
    如果你还记得高数里的泰勒展开:

    [frac{1}{1-x}=sumlimits_{n=0}^{infin}x^n,e^x=sumlimits_{n=0}^{infin}frac{x^n}{n!} ]

    那么矩阵指数同样可以展开:

    [(I-At)^{-1}=I+At+(At)^2+...,e^{At}=I+At+frac{1}{2}(At)^2+...+frac{(At)^n}{n!}+... ]

    (e^{At})一定是收敛的,因为阶乘的增长速度远远大于其它运算,接着将它写成矩阵形式:

    [e^{At}=I+SLambda S^{-1}t+frac{1}{2}SLambda^2S^{-1}t^2+...=Se^{Lambda t}S^{-1} ]

    (e^{Lambda t})也是一个矩阵指数,可以写作(egin{bmatrix} e^{lambda_1t} & ... & 0 \ ... & ... & ...\ 0 & ... & e^{lambda_nt} \ end{bmatrix}),这里也可以有相似的收敛性:

    • 对于矩阵指数(e^{Lambda t}),若(Re(lambda)<0),则收敛;
    • 对于矩阵幂(A^K=SLambda^K S^{-1}),若(||lambda||<1),则收敛。

    微分方程也可以像上一节一样,将二阶(y''+by'+ky=0)转为一阶,构造:

    [egin{cases} y''+by'+ky=0& ext{}\ y'=y'& ext{}\ end{cases} ]

    (u=egin{bmatrix} y'\ y\ end{bmatrix}),则(u'=egin{bmatrix} y''\ y'\ end{bmatrix}=egin{bmatrix} -b & -k \ 1 & 0\ end{bmatrix}egin{bmatrix} y'\ y\ end{bmatrix}=Au)

    实对称阵/正定阵

    实对称矩阵的特征值必为实数,特征向量正交。证明略。对于复矩阵,只有(A=ar A^T(共轭转置)),性质才成立。
    上一节我们知道:如果(A)(n)个线性无关的特征向量,那么可以被分解成(A=SLambda S^{-1})。对于正交阵而言(Q^T=Q^{-1}),故(A=QLambda Q^{-1}=QLambda Q^{T}),如果进一步计算:

    [A=egin{bmatrix} q_1&...& q_n \ end{bmatrix}egin{bmatrix} lambda_1 & ... & 0 \ ... & ... & ...\ 0 & ... & lambda_n \ end{bmatrix}egin{bmatrix} q_1^T\ ...\ q_n^T\ end{bmatrix}=lambda_1q_1q_1^T+...+lambda_nq_nq_n^T ]

    (q_iq_i^T)是投影矩阵,实对称矩阵可以由投影矩阵线性组合而来,这些投影矩阵我个人感觉非常像矩阵的基,也就是说实对称阵可以完全由其特征值和特征向量确定。

    接着我们来看正定阵,正定阵的前提是对称阵,有3个充要条件:

    • (lambda_i>0)
    • (pivot_i>0)
    • 所有子行列式为正

    实际上,(#正主元=#正特征值),并且(Pi pivot=Pilambda_i=det(A))
    利用正定阵可以研究二次型的最小值:

    [f(x,y)=x^TAx=ax^2+2bxy+cy^2 ]

    如果(A)正定,那么(除(0,0)外,f(x,y)>0)
    (A=egin{bmatrix} 2 & 6 \ 6 & 20\ end{bmatrix}),那么(f(x,y)=2x^2+12xy+20y^2),配方(f(x,y)=2(x+3y)^2+2y^2>0),注意各项的系数:两个平方项前的系数是(A)的两个主元,括号中的3是矩阵消元时所用的乘数。如果把(A)做LU分解会看得更清楚:(A=LU=egin{bmatrix} 1 & 0 \ 3 & 1\ end{bmatrix}egin{bmatrix} 2 & 6 \ 0 & 2\ end{bmatrix})
    从几何上看,(f(x,y))就像是一个的形状,在((0,0))处取极小值0,(f(x,y)=1)则是椭圆截面。
    对于三阶的情况:(A=egin{bmatrix} 2 & -1 & 0 \ -1 & 2 & -1 \ 0 & -1 & 2 \ end{bmatrix}),可以求得(lambda=2-sqrt2,2,2+sqrt2),那么此时

    [f=x^TAx>0 ]

    这在几何上已经上升到四维,必然有3个轴,并且轴的方向由相应的特征向量决定,轴的长度由特征值决定,(f=1)是一个椭球。

    最后,如果(A_{mn})的各列线性无关,那么(A^TA)必然正定,证明可以从(x^TAx>0)入手。

    相似阵

    前面我们见过(S^{-1}AS=Lambda),那么(AsimLambda)。比较正式的说法是:存在可逆阵M,使得(B=M^{-1}AM),则称(Asim B)。相似阵可以看作一个家族,这个家族的共同点就是特征值相同
    之前我们知道:如果(A)(n)个不同的特征值,那么必可相似对角化。如果有重复的特征值,未必可以对角化:
    现在考虑(lambda_1=lambda_2=4)的情况,满足条件的矩阵有很多,比如(A=egin{bmatrix} 4 & 0 \ 0 & 4\ end{bmatrix}),但如果我们去找(A)的相似阵,我们尝试用(M^{-1}AM=A),无论任何(M),最终的结果都是(A)自己,不会增加任何新的矩阵,矩阵(A)单独组成了一个家族。
    如果去看其余满足条件的矩阵,比如(B=egin{bmatrix} 4 & 1 \ 0 & 4\ end{bmatrix},C=egin{bmatrix} 4 & 0 \ 17 & 4\ end{bmatrix}...),这些只有1个特征向量的矩阵虽然不能对角化,但是我们可以找一个最接近对角阵的,也就是(B),称为Jordan Form。
    对于(egin{bmatrix} 0 & 1 & 0 & 0 \ 0 & 0 & 1 & 0 \ 0 & 0 & 0 & 0 \ 0 & 0 & 0 & 0 \ end{bmatrix}和egin{bmatrix} 0 & 1 & 0 & 0 \ 0 & 0 & 0 & 0 \ 0 & 0 & 0 & 1 \ 0 & 0 & 0 & 0 \ end{bmatrix}),尽管特征值全为0,但并不相似。只有2个线性无关的特征向量,所以就有2个Jordan Block,每个Jordan Block长这样:

    [J_i=egin{bmatrix} lambda_i & 1 &...& 0 \ 0 & lambda_i & 1 & ...\ ...&...&...&...\ 0 & 0 & lambda_i & 1 \ 0 & 0 & 0 & lambda_i \ end{bmatrix} ]

    每个块只能有1个特征向量,这样做的意义在于任意的矩阵(A),即使不能相似对角化,但是都有(Asim J=egin{bmatrix} J_1 & ... & 0 \ ... & ... & ...\ 0 & ... & J_d \ end{bmatrix})

    SVD分解

    假设我们在行空间有一组标准正交基(v_1,v_2,...,v_r),左乘矩阵(A)进入列空间,将结果表示为列空间中的一组标准正交基(u_1,u_2,...,u_r)

    [AV=Aegin{bmatrix} v_1&...& v_r \ end{bmatrix}=egin{bmatrix} u_1&...& u_r \ end{bmatrix}egin{bmatrix} sigma_1 & ... & 0 \ ... & ... & ...\ 0 & ... & sigma_r \ end{bmatrix}=USigma ]

    (A)可以分解为(A=USigma V^T)
    如果(A=egin{bmatrix} 4 & 4 \ -3 & 3\ end{bmatrix}),试着分解下,关键问题就是如何求得等式右边的3个矩阵。
    先来搞定(V),最好能去掉(U),我们的技巧是用(A^TA)

    [A^TA=VSigma^TU^TUSigma V^T=Vegin{bmatrix} sigma_1^2 & ... & 0 \ ... & ... & ...\ 0 & ... & sigma_r^2 \ end{bmatrix}V^T ]

    由于(A^TA)实对称,所以我们得到了(QLambda Q^{T})的形式,接下来只要搞定(A^TA)的特征值和特征向量即可得到(V)(Sigma)
    同样地,为了求(U),最好先搞掉(V)

    [AA^T=USigma V^TVSigma^TU^T=Uegin{bmatrix} sigma_1^2 & ... & 0 \ ... & ... & ...\ 0 & ... & sigma_r^2 \ end{bmatrix}U^T ]

    只要求得(AA^T)的特征值和特征向量即可得(U)

    作业

    Suppose we have the rank-r svd of a rank 1 matrix (A = USigma V^T). Describe the nullspace of (A) in terms of possibly (U), (Σ), and (V).
    Answer: The nullspace of (A) is the same as the nullspace of (V^T). Since (A) is rank 1, (V) is a vector. So the nullspace of (V^T) is a hyperplane given by (V^Tx=0), i.e., the space of all the vectors that are perpendicular to (V).

  • 相关阅读:
    PowerDesigner 找不到Identity列的解决方法
    C# DataTable 和List之间相互转换的方法
    解决Win8无法升级.NET Framework 3.5.1 提示错误0x800F0906
    C#虚方法和抽象方法区别
    VS自带WCF测试客户端
    asp.net读取Excel数据
    输出用户的IP地址,并且判断用户的IP地址是否在192.168.1.100 --- 192.168.1.150之间
    验证电子邮箱正则表达式
    用PHP实现冒泡排序将数组$a=array()按照从小到大的方式排序
    打开a.txt文件在文件中最前面加上hello
  • 原文地址:https://www.cnblogs.com/EIMadrigal/p/13021123.html
Copyright © 2011-2022 走看看