6.1 特征值与特征向量

特征向量:若A为n阶方阵,如果存在一个非零向量x使得Ax=λx<script type="math/tex" id="MathJax-Element-50">Ax=\lambda x</script>,则称标量λ<script type="math/tex" id="MathJax-Element-51">\lambda</script>为特征值(eigenvalue),称x为属于λ<script type="math/tex" id="MathJax-Element-52">\lambda</script>的特征向量(eigenvector)。

特征向量与零度空间:方程Ax=λx<script type="math/tex" id="MathJax-Element-53">Ax=\lambda x</script>可以写为(AλI)x=0<script type="math/tex" id="MathJax-Element-54">(A - \lambda I)x=0</script>,因此λ<script type="math/tex" id="MathJax-Element-55">\lambda</script>为特征值的充要条件是方程有一非平凡解,也即零度空间N(AλI)<script type="math/tex" id="MathJax-Element-56">N(A-\lambda I)</script>中不仅只有零解,其中任意非零向量均为属于λ<script type="math/tex" id="MathJax-Element-57">\lambda</script>的特征向量。子空间N(AλI)<script type="math/tex" id="MathJax-Element-58">N(A-\lambda I)</script>称为对应于λ<script type="math/tex" id="MathJax-Element-59">\lambda</script>的特征空间。

特征方程(AλI)x=0<script type="math/tex" id="MathJax-Element-60">(A - \lambda I)x=0</script>有非零解的充要条件是矩阵AλI<script type="math/tex" id="MathJax-Element-61">A-\lambda I</script>为奇异的,即det(AλI)=0<script type="math/tex" id="MathJax-Element-62">det(A-\lambda I)=0</script>,称此方程为特征方程。特征方程的根即A的特征值。如果方程有重根,且重根也计数,则特征方程恰有n个根,其中可能会有重复,也可能会是复数。

特征值的性质:

  • 矩阵A的行列式的值为所有特征值的积
  • 矩阵A的对角线元素和称为A的迹(trace)等于特征值的和

相似矩阵的特征值:若方阵A和B相似,则这两个矩阵有相同的特征多项式,且它们有相同的特征值。

使用numpy计算矩阵的特征值与特征向量:

import numpy as np
A=np.array([[3,2],[3,-2]])
w,v = np.linalg.eig(A) 
print w #4,-3 特征值
print v #对应的特征向量[[ 0.89442719, -0.31622777],
                        [ 0.4472136 ,  0.9486833 ]]

6.2 对角化

6.2.1 基本概念

定理:若λ1,λ2,...,λk<script type="math/tex" id="MathJax-Element-63">\lambda_1,\lambda_2,...,\lambda_k</script>为n阶矩阵A的不同特征值,相应的特征向量为x1,x2,...,xk<script type="math/tex" id="MathJax-Element-64">x_1,x_2,...,x_k</script>,则x1,x2,...,xk<script type="math/tex" id="MathJax-Element-65">x_1,x_2,...,x_k</script>线性无关。

可对角化:若存在一个非奇异的矩阵X和一个对角矩阵D,使用n阶方阵A满足

X1AX=D
<script type="math/tex; mode=display" id="MathJax-Element-66">X^{-1}AX = D</script> 则称A为可对角化(diagonalizable),称X将A对角化。X的列向量为A的特征向量,D的对角元素为A的相应的特征值。一般地有:
Ak=XDkX1=Xλk1λk2λknX1
<script type="math/tex; mode=display" id="MathJax-Element-67">A^k=XD^kX^{-1}=X\left[\matrix{ \lambda_1^k \cr & \lambda_2^k \cr & & \dots \cr & & & \lambda_n^k \cr } \right]X^{-1}</script>

定理:方阵A是可对角化的,当且仅当A有n个线性无关的特征向量。

退化矩阵:若n阶方阵A有少于n个线性无关的特征向量,则A是退化的(defective),退化矩阵不可对角化。

6.2.2 马尔可夫链

马尔可夫过程:对一个试验,若其每一步的输出都取决于概率,则称为一个随机过程(stochastic process)。马尔可夫过程(Markov process)是随机过程,它有如下性质:

  • 可能的输出集合或状态是有限的
  • 下一步输出的概率仅依赖于前一步的输出
  • 概率相对于时间是常数

马尔可夫链
状态之间的迁移概率可以表示为迁移矩阵A,其第i列表示由第i个状态向其他状态变迁的概率,A的每一列元素均为非负的,且和为1。

若初始状态集记为x0<script type="math/tex" id="MathJax-Element-68">x_0</script>,并记后续各次状态集为xi<script type="math/tex" id="MathJax-Element-69">x_i</script>,则后续状态集可通过矩阵乘法计算得到:xi=Aix0<script type="math/tex" id="MathJax-Element-70">x_i = A^ix_0</script>,并称xi<script type="math/tex" id="MathJax-Element-71">x_i</script>的序列是马尔可夫链。

定理:若一个马尔可夫链的转移矩阵为A,且其收敛到一个稳态向量x,则x为一个概率向量,λ=1<script type="math/tex" id="MathJax-Element-72">\lambda =1</script>为其一个特征值,且x为属于这个特征值的特征向量。

定理:若马尔可夫链的转移矩阵A的其他特征值均不大于1,且存在λ=1<script type="math/tex" id="MathJax-Element-73">\lambda=1</script>,称其主特征值(dominant eiganvalue),此时转移矩阵A可使用得马尔可夫链收敛到稳定向量。

马尔可夫过程的应用
PageRank算法将网页浏览过程看成马尔可夫过程,其转移矩阵A为n*n的,目前n超过200亿。

A的(i,j)元素表示从网站j到i的跳转概率(可由浏览历史统计出来),可证迁移矩阵存在稳态向量,随着浏览的进行最终可以达到惟一的稳态向量x,即到达某个站点k,向量中的元素xk<script type="math/tex" id="MathJax-Element-74">x_k</script>的确定了网站k的整体分级。

进行网页搜索时,首先寻找所有和关键字匹配的网页,然后将这些网页按照它们的网页分级递减的顺序列出来。

6.2.3 矩阵指数

由实数的泰勒级数展开式:

ex=1+x+12!x2+...+1n!xn
<script type="math/tex; mode=display" id="MathJax-Element-75">e^x=1+x+\frac{1}{2!}x^2+...+\frac{1}{n!}x^n</script>

若对任何的n*n矩阵A,可定义矩阵指数:

eA=I+A+12!A2+...+1n!An
<script type="math/tex; mode=display" id="MathJax-Element-76">e^A=I+A+\frac{1}{2!}A^2+...+\frac{1}{n!}A^n</script>

在对角矩阵的情况下,容易计算

eD=eλ1eλ2eλn
<script type="math/tex; mode=display" id="MathJax-Element-77">e^D=\left[ \matrix{ e^{\lambda_1} \cr & e^{\lambda_2} \cr & & \dots \cr & & & e^{\lambda_n} } \right]</script>

对一般的矩阵A,计算比较困难,但若A是可对角化的,则:eA=XeDX1<script type="math/tex" id="MathJax-Element-78">e^A=Xe^DX^{-1}</script>

6.4 埃尔米特矩阵

6.4.1 复内积

Cn<script type="math/tex" id="MathJax-Element-79">C^n</script>表示所有n元复数构成的向量空间,若α=a+bi<script type="math/tex" id="MathJax-Element-80">\alpha=a+bi</script>为标量,则其长度为|α|=a2+b2<script type="math/tex" id="MathJax-Element-81">|\alpha|=\sqrt{a^2+b^2}</script>。Cn<script type="math/tex" id="MathJax-Element-82">C^n</script>中的向量z=(z1,z2,...,zn)<script type="math/tex" id="MathJax-Element-83">z=(z_1,z_2,...,z_n)</script>的长度为

||z||=(i=1n|zi|)1/2=(zHz)1/2zHz
<script type="math/tex; mode=display" id="MathJax-Element-84">||z||=(\sum_{i=1}^n |z_i|)^{1/2}=(z^Hz)^{1/2} ,其中z^H为z的共轭的转置</script>

定义:令V为一复数域上的向量空间,V上的内积定义为关联一对向量z和w的复数

6.4.2 埃尔米特矩阵

令M为复矩阵,M<script type="math/tex" id="MathJax-Element-85">\overline M</script>为其共轭矩阵,MH<script type="math/tex" id="MathJax-Element-86">M^H</script>为M<script type="math/tex" id="MathJax-Element-87">\overline M</script>的转置,若M=MH<script type="math/tex" id="MathJax-Element-88">M=M^H</script>,则称它为埃尔米特矩阵(Hermitian)。实对称矩阵均为埃尔米特矩阵。

埃尔米特矩阵与特征向量:埃尔米特矩阵的特征值均为实的,且属于不同特征值的特征向量为正交的。

酉矩阵:若方阵U的列向量构成Cn<script type="math/tex" id="MathJax-Element-89">C^n</script>中的一个规范正交基,则称其为酉矩阵(unitary matrix)。U为酉矩阵的充要条件是UHU=I<script type="math/tex" id="MathJax-Element-90">U^HU=I</script>,实酉矩阵为正交矩阵。

若埃尔米特的对角化:若埃尔米特矩阵A的特征值互不相同,则存在一个酉矩阵U对角化A。

舒尔(schur)定理:对每一个方阵A,存在一个酉矩阵U,使得UHAU<script type="math/tex" id="MathJax-Element-91">U^HAU</script>为上三角矩阵。将A分解UHTU<script type="math/tex" id="MathJax-Element-92">U^HTU</script>称为舒尔分解。当A为埃尔米特矩阵时,T为对角矩阵。

谱定理:若A为埃尔米特矩阵,则存在一个酉矩阵U对角化A。
定理:若A为实对称矩阵,则存在一个正交矩阵Q对角化A,即QTAQ=D<script type="math/tex" id="MathJax-Element-93">Q^TAQ=D</script>,其中D是对角的。

正规矩阵:矩阵A若满足AAH=AHA<script type="math/tex" id="MathJax-Element-94">AA^H=A^HA</script>,则称A为正规矩阵。
定理:矩阵A是正规矩阵,当且仅当A有一个完备的规范正交特征向量集。

6.5 奇异值分解

SVD定理:若A为任意m*n矩阵,则A有一个奇异值分解
奇异值(SVD)分解:将m*n的矩阵A分解为乘积USVT<script type="math/tex" id="MathJax-Element-95">USV^T</script>,其中U是m*m的正交矩阵,V是一个n*n正交矩阵,S是一个m*n矩阵,其对角线下的元素均为0,且对角线元素满足:s1s2...sn0<script type="math/tex" id="MathJax-Element-96">s_1\ge s_2\ge ...\ge s_n\ge0</script>,通过分解可得惟一一组si<script type="math/tex" id="MathJax-Element-97">s_i</script>,称其为A的奇异值。

若A为一m*n矩阵,且Q为一m*m的正交矩阵,则||QA||F=||A||F<script type="math/tex" id="MathJax-Element-98">||QA||_F=||A||_F</script>

下面的代码显示了使用numpy对矩阵进行SVD分解的方法

import numpy as np
a = np.array([[1,1],[1,1],[0,0]])
s,v,d = np.linalg.svd(a)
print v.astype(int)  # [2,0] 奇异值向量
print s,d
'''
[[-0.70710678 -0.70710678  0.        ]
 [-0.70710678  0.70710678  0.        ]
 [ 0.          0.          1.        ]]
 [[-0.70710678 -0.70710678]
 [ 0.70710678 -0.70710678]]
 '''

SVD分解可以应用在数字图像压缩,主成分分析等领域,用于数据的压缩或降维。

数值秩:一个m*n的矩阵的数值秩(numberical rank)为矩阵的奇异值中大于s1max(m,n)ϵ<script type="math/tex" id="MathJax-Element-99">s_1 * max(m,n) * \epsilon</script>的个数。其中s1为A最大的奇异值,且ϵ<script type="math/tex" id="MathJax-Element-100">\epsilon</script>为计算机的单位舍入误差。在matlab或numpy中rank都计算的是数值秩。

6.6 二次型

6.6.1 二次型

定义:一个二次(quadratic)方程为两个变量x和y的方程

ax2+2bxy+cy2+dx+ey+f=0
<script type="math/tex; mode=display" id="MathJax-Element-101">ax^2+2bxy+cy^2+dx+ey+f=0</script>
可以写为
[xy][abbc][xy]+[de][xy]+f=0
<script type="math/tex; mode=display" id="MathJax-Element-102">\left[ \matrix{x & y} \right] \left[\matrix{a&b \cr b&c} \right] \left[ \matrix{x \cr y}\right] + \left[ \matrix{d & e} \right] \left[ \matrix{x \cr y}\right] +f =0 </script>
x=[xy]<script type="math/tex" id="MathJax-Element-103">x = \left[ \matrix{x \cr y} \right]</script> 和A=[abbc]<script type="math/tex" id="MathJax-Element-104">A=\left[\matrix{a&b \cr b&c} \right]</script>,则
xTAx=ax2+2bxy+cy2
<script type="math/tex; mode=display" id="MathJax-Element-105">x^TAx=ax^2+2bxy+cy^2</script>
称其为与二次方程相关的二次型。

上面的二次方程对应的图形为圆锥曲线(conic section)。圆,椭圆,双曲线,抛物线均可由其表示。

主轴定理:若A为一实对称的n*n矩阵,则存在一个变量变换u=QTx<script type="math/tex" id="MathJax-Element-106">u=Q^Tx</script>使得xTAx=uTDu<script type="math/tex" id="MathJax-Element-107">x^TAx = u^TDu</script>,其中D为一对角矩阵。

6.6.2 正定

定义:一个实对称矩阵A称

  • 正定的(positive definite),若对Rn<script type="math/tex" id="MathJax-Element-108">R^n</script>中所有非零向量x,xTAx>0<script type="math/tex" id="MathJax-Element-109">x^TAx>0</script>
  • 负定的(negative definite),若对Rn<script type="math/tex" id="MathJax-Element-110">R^n</script>中所有非零向量x,xTAx<0<script type="math/tex" id="MathJax-Element-111">x^TAx<0</script>
  • 半正定的(positive semidefinite),若对Rn<script type="math/tex" id="MathJax-Element-112">R^n</script>中所有非零向量x,xTAx0<script type="math/tex" id="MathJax-Element-113">x^TAx \ge 0</script>
  • 半负定的(negative semidefinite),若对Rn<script type="math/tex" id="MathJax-Element-114">R^n</script>中所有非零向量x,xTAx0<script type="math/tex" id="MathJax-Element-115">x^TAx \le 0</script>
  • 不定的(indefinite),若对Rn<script type="math/tex" id="MathJax-Element-116">R^n</script>中所有非零向量x,xTAx<script type="math/tex" id="MathJax-Element-117">x^TAx</script>有不同的符号

定理:若A为n阶实对称矩阵,A是正定的,当且仅当其特征值均为正

6.7 正定矩阵

前主子矩阵:给定n*n的矩阵A,令Ar<script type="math/tex" id="MathJax-Element-118">A_r</script>表示将A的最后n-r行和列删去后得到的矩阵,称其为A的r阶前主子矩阵(leading principal submatrix)。

对称正定矩阵的性质:

  • 若A为一对称正定矩阵,则A是非奇异的,det(A)>0
  • 若A为一对称正定矩阵,则A的前主子矩阵A1,A2,...,An<script type="math/tex" id="MathJax-Element-119">A_1,A_2,...,A_n</script>均为正定的。
  • 若A为一对称正定矩阵,则A可仅使用第三类行变换化为上三角矩阵,且主元全为正。
  • 若A为一对称正定矩阵,则A可分解为乘积LDLT<script type="math/tex" id="MathJax-Element-120">LDL^T</script>,其中L为下三角的,其对角线上元素为1,且D为一个对角矩阵,其对角元素均为正的。
  • 若A为一对称正定矩阵,则A可分解为一个乘积LLT<script type="math/tex" id="MathJax-Element-121">LL^T</script>,其中L为下三角的,其对角线元素均为正的。此分解称为cholesky分解。

下面的代码演示了使用numpy对矩阵进行cholesky分解的方法

a = np.array([[4,2],[2,10]])
l = np.linalg.cholesky(a)
print l #[[2,0],[1,3]]
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐