Skip to content

算法Algorithm

Schur–Parlett 矩阵函数算法

Schur–Parlett algorithm

从 TF=FT 推导块 Parlett 递推,把接近特征值留在同一块内,以局部函数求值和 Sylvester 方程恢复整个矩阵函数。

形式陈述 ​

已知一个上三角矩阵的对角元素,如何恢复整个 矩阵函数?Schur–Parlett 方法先作酉 Schur 分解 A=QTQ∗,计算 F=f(T),最后返回 QFQ∗。下面假设 f 在谱的邻域解析。

因为 f(T) 是 T 的多项式,TF=FT。对 i<j 比较元素,得到标量 Parlett 递推:

(tii−tjj)fij=tij(fii−fjj)+∑i<k<j(fiktkj−tikfkj),fii=f(tii).

按超对角距离 j−i=1,2,… 推进,右侧所需的函数元素均已完成。这个标量公式要求 tii≠tjj;接近的特征值也可能使分子相消后再除以小数,造成精度损失。

用块吸收接近的特征值 ​

将 Schur 形酉重排为块上三角矩阵,使需要共同处理的特征值落入同一对角块。先计算 Fii=f(Tii),然后按块超对角距离解

TiiFij−FijTjj=FiiTij−TijFjj+∑i<k<j(FikTkj−TikFkj).

每一步都是 Sylvester 方程。不同对角块的谱必须不交;要获得准确结果,还需关注 sep(Tii,Tjj),不能只检查两个最近特征值的距离。块乘法的左右顺序必须保持。

完整流程是:Schur 分解、酉重排与分块、对角块函数求值、块间 Sylvester 回代、酉变换还原。对角块较小时,可用局部展开;函数有专用算法时也可直接调用。三角 Sylvester 核可复用 Bartels–Stewart 算法中的回代阶段。

对角块的局部展开 ​

对一个 b×b 块,取 σ=tr(Tii)/b、M=Tii−σI。若 f 在包含 σ+σ(M) 的合适圆盘内有 Taylor 展开,则

f(Tii)=∑k≥0f(k)(σ)k!Mk.

重复特征值时,M 可能幂零,展开变成有限和。接近特征值时,对角部分小,但严格上三角部分仍可能很大,因此需要实际的截断界。不能看到一项很小或为零就停止:矩阵幂的范数可能交替变大变小,某些函数的若干导数也会周期性为零。

直觉

标量递推试图用两个几乎相同的函数值恢复导数,数值上容易丢失信息。把它们合成一块,就直接在该块内部计算导数效应;只有跨越足够分离的块时,才用差值关系恢复耦合。

图中前两个特征值被放在蓝色块内,红色小分母不再出现在块间求解中。绿色耦合列由已经完成的两个对角块决定。分块不是简单交换矩阵行列:任意置换可能破坏上三角结构,真正的 Schur 重排要同时更新酉变换。

例子与边界

一个连续走向 Jordan 块的矩阵族 ​

取

Tε=(12101+ε3004),0≤ε≤1,

计算指数。标量递推的第一项是

f12=2e1+ε−eε.

当 ε→0,它趋于 2e,不存在数学奇点;但直接相减会丢失有效数字。对存入双精度的 ε=10−12 例,脚本的直接差商约为 5.43694494,高精度参照约为 5.436563656920809。单个二阶块可以用 expm1 型标量公式保护;分块方法则提供可推广到更大块的路线。

将前两个指标合成一块。对指数,局部展开取

eT11=eσ∑k=0rMkk!+余项,‖余项‖1≤eσ+‖M‖1‖M‖1r+1(r+1)!,

这里 σ 为实数。脚本使用这个保守但明确的界,而不靠单项停止。对于本节脚本采用的 ε=10−12,它形成二十三次块幂更新后停止。

在极限 ε=0,二阶块的 M2=0,手算直接得到

F11=e(1201),F22=e4.

记右上耦合列为 x,则

((1201)−4I)x=e(1201)(13)−e4(13).

从第二行得 x2=e4−e,再由第一行得 x1=e4−3e。于是

eT0=(e2ee4−3e0ee4−e00e4).

重复特征值没有造成除零;其影响已经包含在对角块的导数项里。

分块也有代价和限制 ​

块太细,跨块 sep 可能很小;块太大,局部函数求值的代价和舍入风险可能增加。以特征值距离聚类可以提供启发,却不能为非正规块自动保证良好 sep。需要把聚类、局部求值误差与 Sylvester 敏感性一起考虑。

对数等非整函数还要检查展开圆盘是否避开分支切线。仅知道各特征值处有函数值,不足以证明所选 Taylor 展开可用。

推论与应用

Schur 分解、块重排及全部块间 Sylvester 求解通常是 O(n3) 级工作。若第 i 个对角块大小为 bi,局部 Taylor 使用 ri 次稠密块乘法,另需 O(∑iribi3)。ri 不一定是与维数无关的常数;整块幂零展开也可能需要随块长增长的项数,所以不能无条件把一般 Taylor 版本称为立方成本。

这个框架适合没有专用实现的解析函数,也能复用一次 Schur 分解计算多个函数。对指数、对数和平方根,专用算法往往能进一步利用函数结构;通用框架的价值在于清楚划分对角块求值与跨块耦合这两个任务。

参考资料
  • Philip I. Davies and Nicholas J. Higham, “A Schur–Parlett Algorithm for Computing Matrix Functions,” SIAM Journal on Matrix Analysis and Applications 25(2), 2003, pp. 464–485, §§1.1–2:块递推、局部 Taylor、停止准则和非单调项序列。作者版本
  • Nicholas J. Higham, “Functions of Matrices,” Handbook of Linear Algebra, 2nd ed., 2014, §17.8:Schur–Parlett 方法的结构与限制。作者版本
关系图谱11 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系