• 特征多项式与常系数齐次线性递推


    定义

    对于 n 阶矩阵,若存在非零列向量 x 和数 λ 满足 Ax=λx,则称 λx 为一组对应的特征值和特征向量。

    在确定了特征值之后,可以得到对应的无穷多个解。

    求解特征值和特征向量

    求解特征值和特征向量:

    容易发现,λ 是一个特征值,只需要满足 Ax=λx 有解,以 x 为元容易列出方程,其常数项为均 0,系数矩阵为。

    [λA1,1A1,2A1,3A1,nA2,1λA2,2A2,3A2,nA3,1A3,2λA3,3A3,nAn,1An,2An,3λAn,n]=λIA

    其中I是单位矩阵。

    这个方程有非零解的充要条件是:det(λIA)=0 (因为如果不为 0,则矩阵满秩,所有向量线性无关,无法得到0向量)

    det(λIA) 是一个 n 次多项式 p(λ),称为特征多项式,所有的特征值 λ 就是 p(λ) 的根。

    应用

    加速矩阵乘法:

    Ax=λx,迭代该式可以得到 Anx=λnx

    特殊矩阵的特征值

    上三角矩阵

    λIA=[λA1,1A1,2A1,3A1,n0λA2,2A2,3A2,n00λA3,3A3,n000λAn,n]

    带入行列式即可知道 det(λIA)=(λAi,i)

    也就是说,主对角线上所有的 Ai,i 都是 det(λIA)=0 的根。

    零化多项式

    对于一个矩阵 A,它的一个零化多项式 φ(λ) 是满足 φ(A)=0 的多项式,定义域包含矩阵。

    最小多项式:次数最低的零化多项式。

    Cayley-Hamilton 定理

    特征多项式:p(λ)=|λIA|λ 定义域不止是 R,还可以是矩阵。

    Cayley-Hamilton 定理指出:矩阵的特征多项式也是它的零化多项式。

    即令:

    φ(λ)=det(λIA)=λn+a1λn1++an1λ+an

    则有:

    φ(A)=An+a1An1++an1A+an=O

    证明:

    φ(λ) 改写为:

    φ(λ)=(λλ1)(λλ2)(λλn)

    由定理:任意的 n 阶矩阵都能相似为上三角矩阵 可知,存在可逆矩阵 P,使得:

    PAP1=[λ1λ2λn]

    PAP1 代入 φ(λ) 得到:

    φ(PAP1)=(PAP1λ1I)(PAP1λ2I)(PAP1λnI)

    计算:

    [0λ2λ1λnλ1]×[λ1λ20λnλ2]××[λ1λnλ2λn0]=O

    φ(PAP1)=Pφ(A)P1=O,故有 φ(A)=O

    求解特征多项式

    带入 n 个数,求出得 det(xInA),得到 n 个矩阵,通过高斯消元可以 O(n3) 地求出行列式。

    然后可 O(n2) 拉格朗日插值求出原来的多项式,总复杂度受限于高斯消元,为 O(n4)

    求解最小多项式

    构造矩阵序列 ai=Ai

    求出它的一个线性递推 ri,即:

    j=0mrjaij=j=0mrjAij=(j=0mrmjAj)Aim=0j=0mrmjAj=0

    所以可以由 ri 翻转得到 f(λ)

    求解 ain 项的复杂度受限于矩阵乘法为 O(n4),求解递推式的复杂度为 O(n3)

    考虑到实际求解递推式时,随机生成了两个向量 u,v

    实际是计算标量序列 {uAiv} 的递推式,所以实际每次求出 uAi 复杂度应为 O(n2)

    求这个递推式需要用到 ai2n 项,求解复杂度为 O(n3)

    因此总复杂度为 O(n3)

    (但是如果只是求出来并没有什么用,因为求解方法是随机的,甚至连检查一次保证正确都需要 O(n2(n+e)) 的时间(e 为矩阵非 0 位置个数))

    求解稀疏方程组

    设方程系数用矩阵 A 表示,右侧每个方程的常数用向量 b 表示,答案用向量 x 表示,则满足关系式

    Ax=b,即 x=A1b

    求出 {Aib} 线性递推式,反推出 A1b 即可。

    反推方法:

    带入线性递推的 m 项,则 i=0mAmibri=0

    两边同乘 A1,得到 A1brm+i=0m1Amibri=0

    求解矩阵 k 次幂

    我们要求解 Ak,常规做法是直接用快速幂

    设矩阵 A 的一个零化多项式是 f(λ) ,显然,Ak 可以用一个多项式表示 Ak=0kwiAi

    {wi} 构成了一个 k+1 次多项式 Fk(x)

    存在一种合法的表示是 Fk(x)=xk

    f(A)=0i,f(A)Ai=0

    所以对于任意实数 TGk(x)=xkTf(x) 也合法,也就是相当于我们要求出 xk 对于 f(x) 这个 n+1 多项式取模。

    显然可以通过类似快速幂的方式倍增求解这个多项式,每次对 f(x) 取模复杂度是 O(nlogn) ,总时间复杂度 O(nlogmlogn)

    最后得到的 F(x) 是一个 n 次多项式,带入就可以快速求出 Ak,可以认为这个复杂度是受限于求解 A0,A1,,An1O(n4)

    对于元矩阵 A 为稀疏矩阵的情况,设其包含 e 个非零位置。

    那么求解 BA 的过程是 O(ne) 的,求解 A0,A1,,An1 的过程,是 O(n2e) 的。

    求解零化多项式的复杂度也是 O(n2(n+e)) 的,因此总复杂度为 O(n2(n+e))

    而一般的矩阵快速幂是 O(n3logk) 的,这种方法适用情况非常特殊。

    另外,对于并不需要知道整个矩阵的答案,并且 A0,A1,,An1 特殊的具体问题,这个方法也十分有效。

    求解常系数线性齐次递推

    问题是要求数列 fi=j=1najfij

    给出 f0,f1,,fn1,求第 k 项的值。

    线性递推显然可以用初始向量列与转移矩阵的幂次的乘积表示,即fi=(SAi)n,其中A为转移矩阵,S为初始向量列,我们求的是第n项。

    对于n=4的情况,我们的转移矩阵。

    A=(a41a31a21a1)

    鉴于它的特殊性,我们可以直接求出它的特征多项式表达式。

    λInA=(λa41λa31λa21λa1)

    带入行列式最暴力的求法

    枚举一个排列pi,设排列p的逆序对为f(p)|A|=(1)f(p)ΠAi,pi

    实际上合法的排列只有n个,就是

    枚举pi=n

    那么

    pj={jj<inj=ij1j>i

    i=n 时,(1)f(p)ΠAi,pi=λna1λn1

    i=1 时,f(p)=ni

    ΠAi,pi=(1)ni+1λiani+1

    (1)f(p)ΠAi,pi=λiani+1

    综上,转移矩阵A的特征多项式有简单的表达

    p(λ)=|λInA|=λna1λn1a2λn2an

    假设有f0这一项(不需要知道是多少),那么认为初始向量列为S=(f(n1),f(n2),,f0)

    这个问题,我们要求的是 SAk 的第 n 项,不需要知道整个矩阵

    类似求出 Ak 的过程,求出 Fk(x)modp(λ)

    我们要求解 (SAk)n=1n[xi]F(x)(SAi)n

    (SAi)n=fi 已知,求出 F(x) 后直接带入即可

    需要用到多项式取模,求解这个表达式是 O(nlognlogk) 的,求完直接带入即可

  • 相关阅读:
    基于ssm高校档案管理系统源码
    Shell基础— 变量定义的规则和分类
    外贸公司保密协议
    SpringBoot 中使用布隆过滤器 Guava、Redission实现
    VMware Tanzu 和 Spring 更新
    二叉树的Morris遍历
    java毕业设计旅游网站设计mybatis+源码+调试部署+系统+数据库+lw
    【Bug—eNSP】华为eNsp路由器设备启动一直是0解决方案!
    实现α-β剪枝的算法实例
    Granular Ball Computing (GBC)
  • 原文地址:https://www.cnblogs.com/A-Quark/p/16439889.html