含可变标量的矩阵逆求解及影响分析技术问询
问题明确
我想搞明白:当标量$x$变动时,$N \times N$矩阵$(A + xB){-1}$会发生怎样的变化?已知$A$和$B$都是可逆矩阵——$A{-1}$和$B^{-1}$我都已经提前算好了。
补充背景(我的实际需求)
我正在嵌入式系统上实现一套控制算法,这里的$x$其实是轨迹规划里用到的时间步长变化量$\Delta t$。为了节省计算时间,我本来打算预计算相关矩阵,但又希望能通过调整$\Delta t$来改变预测时域。另外得提一句:$x$通常是小于1的,但矩阵$B$的规模可能会比这个值大。
实用解法与分析
针对你这种需要高效应对标量变化、还要适配嵌入式资源限制的场景,有两个非常实用的方法,都能利用你已经预计算好的$A^{-1}$,避免每次都重新求逆(嵌入式里矩阵求逆可是个计算量大户,能省则省):
方法1:小$x$场景优先用扰动展开
如果$x$确实很小(你的场景里$x<1$,而且只要$xB A^{-1}$的谱范数小于1),可以把$(A + xB)^{-1}$展开成幂级数:
$$(A + xB)^{-1} = A^{-1} - xA{-1}BA{-1} + x2A{-1}BA{-1}BA{-1} - x3A{-1}BA{-1}BA{-1}BA^{-1} + \dots$$
这个方法的优势是计算量极小,尤其是当$x$远小于$1/|A^{-1}B|$时,取前2-3项就能达到足够的精度,完全满足嵌入式系统的实时性要求。不过要注意,如果$xB A^{-1}$的范数接近或大于1,这个级数会发散,那就不能用这个方法了。
方法2:通用场景用Sherman-Morrison-Woodbury公式
不管$x$大小如何,只要$(A + xB)$可逆,都可以用这个公式:
$$(A + xB)^{-1} = A^{-1} - xA^{-1}B(I + xA{-1}B){-1}A^{-1}$$
这里的关键是,你可以提前预计算并存储$A^{-1}B$这个矩阵,每次调整$x$时,只需要计算$I + x(A^{-1}B)$,再求这个矩阵的逆,最后代入公式计算。对比每次重新构造$A+xB$再求逆,这种方式能节省不少重复计算的时间,尤其是当你需要频繁调整$x$的时候。
针对你嵌入式场景的额外建议
考虑到嵌入式系统计算资源有限,给你几个小tips:
- 先评估$x$的实际取值范围,如果$x$普遍很小,优先用扰动展开的前几项,速度最快;
- 提前把$A{-1}$和$A{-1}B$这两个矩阵预计算好存在内存里,每次调整$x$时只需要做简单的矩阵乘法和加法,避免重复计算固定项;
- 如果$B$规模大但$x$很小,扰动展开的收敛速度会更快,反而更适配;如果偶尔需要用到接近1的$x$,再切换到Sherman-Morrison-Woodbury公式。
备注:内容来源于stack exchange,提问作者Joseph Kenkel

