微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用 numpy 在 Gram 矩阵上求解线性方程

如何解决用 numpy 在 Gram 矩阵上求解线性方程

考虑这样一种情况,给定一个 MxM 矩阵 A 和一个向量 b,我想解决 inv(A @ A.T) @ b 形式的问题(我知道 A 是可逆的)。 据我所知,使用 solve_* 而不是 inv 总是更快。还有一些变体可以使用 Cholesky 分解来更有效地求解 PSD 矩阵(必须是 A @ A.T)。

我的问题 - 因为我正在构造矩阵 A @ A.T 只是为了立即将其扔掉 - 是否有更专业的程序可以用 A 的克矩阵求解线性方程而无需构造它?

解决方法

您可以计算 A 的因式分解,然后使用它来求解您的系统。


假设我们要解决

A A^T x = b

对于x

计算 A=LU 的因式分解。 然后为 Ay=b 求解 y。 然后为 A^T x = y 求解 x

这样您就不必计算矩阵 A^T A


请注意,如果有 A=LU 的因式分解,则可以有效地求解 Ax=b 以及 A^T x=bx。 这是因为 A^T=U^T L^T 又是一个下三角矩阵的因式分解。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。