计算矩阵幂对向量的作用的快速方法

计算科学 线性代数 参考请求
2021-12-04 21:08:10

对于整数k>0,众所周知,可以使用二进制取幂来评估矩阵幂Ak, 在哪里A是一个n×n矩阵。

但是,我不清楚该方法是否可以轻松修改以评估Akv, 在哪里v是维向量n. 当然,可以像往常一样形成幂,然后将其应用于向量,但是在这种情况下(例如,如果矩阵非常大),人们希望避免形成整个矩阵。(在最坏的情况下,可以使用几个大小相当的向量。)

有没有一种好方法来计算矩阵幂对整数指数向量的作用?我搜索文献的尝试都是空的,但也许我没有使用正确的关键字。

解决方案,或至少指向文献,将不胜感激。

1个回答

很难击败这两种幼稚的方法,迭代平方和重复应用从右关联A(A(A(Av))). 两者哪个更好取决于k,稀疏性等,如评论中所述。

如果您对近似值没问题,可能还有其他选择;例如,您可以:

(1) 将您的问题视为一般问题f(A)v, 在哪里f是一个标量函数。这开辟了一些策略,例如对角化或 Schur-Parlett 方法:改变基础以减少到对角线或三角形形式 + 明确解决三角形/对角线问题。这可能便于密集A和巨大的k因为它的复杂性不取决于k(除了计算k标量的 th 次方,通常可以在恒定时间内完成)。或稀疏的 Arnoldi 方法A,它同样对指数有非常温和的依赖性k. 这些在 Higham 的书Functions of matrices中得到处理。

(2) 近似A排名-r矩阵UVT,例如使用随机方法,然后使用(UVT)k=U(VTU)k1VT, 这让你拥有 a 的权力r×r矩阵而不是n×n一。例如,在流行的评论文章https://arxiv.org/abs/2002.01387中概述了这种随机近似的技术(双关语) 。请注意,上面建议的 Arnoldi 方法本质上也是一个等级-r以特殊方式计算的近似值。