无需显式求逆矩阵的特定线性方程组求解方法咨询
嘿,这个问题挺有意思的——你不想显式求逆矩阵的思路特别合理,毕竟显式求逆不仅计算成本高,还容易引入不必要的数值误差。其实除了迭代法,我们可以先对原方程做代数变形,把那个讨厌的$(I+\frac{\hat{A}}{6})^{-1}$消掉,全程只用你允许的操作(解线性系统、矩阵-向量乘法)来求解。
先把你的原方程再明确一下:
$$\left(I-\frac{\hat{A}}{8}-\frac{3\hat{A}}{8}\left(I+\frac{\hat{A}}{6}\right)^{-1}\left(I-\frac{\hat{A}}{6}\right)\right)X=B$$
我们令$C = I + \frac{\hat{A}}{6}$,这样原方程里的逆矩阵就是$C{-1}$。现在给方程两边同时左乘$C$,这样就能直接消掉$C{-1}$,得到一个等价的无逆方程组:
$$C \cdot \left(I-\frac{\hat{A}}{8}-\frac{3\hat{A}}{8}C^{-1}\left(I-\frac{\hat{A}}{6}\right)\right)X = C B$$
展开左边的计算并化简后,最终会得到:
$$\left(I - \frac{\hat{A}}{3} + \frac{\hat{A}^2}{24}\right)X = B + \frac{\hat{A} B}{6}$$
右边的$B + \frac{\hat{A} B}{6}$只需要一次矩阵-向量乘法就能算出,完全没有求逆操作。
接下来你有两种可行的求解方向:
方向一:用Krylov子空间迭代法直接求解转化后的方程
令$N = I - \frac{\hat{A}}{3} + \frac{\hat{A}^2}{24}$,$D = B + \frac{\hat{A} B}{6}$,问题变为解$N X = D$。
- 计算$N$和任意向量$v$的乘积时,只需要做三次矩阵-向量乘法:$N v = v - \frac{1}{3}\hat{A}v + \frac{1}{24}\hat{A}(\hat{A}v)$,完全不需要求逆。
- 如果$\hat{A}$(或$N$)具有特殊结构(比如对称正定、稀疏),你可以用共轭梯度法(CG)、GMRES等迭代法,这些方法只依赖矩阵-向量乘法操作,非常适合你的需求。
方向二:构造不动点迭代,每次迭代仅需解线性系统
如果你更倾向于迭代思路,也可以基于原方程构造不需要显式求逆的迭代格式:
- 从原方程移项得到:$X = B + \frac{\hat{A}X}{8} + \frac{3\hat{A}}{8}C^{-1}(I-\frac{\hat{A}}{6})X$
- 令$Y_k = (I-\frac{\hat{A}}{6})X_k$,然后解线性系统$C Z_k = Y_k$(也就是$(I+\frac{\hat{A}}{6})Z_k = Y_k$),这一步不需要求逆,只是解一个线性方程组。
- 迭代更新公式为:$X_{k+1} = B + \frac{\hat{A}X_k}{8} + \frac{3}{8}Z_k$
每次迭代过程中,你只需要做两次矩阵-向量乘法(计算$Y_k$和$\hat{A}X_k$),以及解一次线性系统$C Z_k = Y_k$,完全符合你的限制条件。
备注:内容来源于stack exchange,提问作者Yuriy S




