计算 X = A - inv(B) * Y * inv(B) 和 X = Y + 的可能方法 一个' * inv(B) * A
我有两个问题。 我必须计算两个方程:
X = A - inv(B) * Y * inv(B)
和
X = Y + A' * inv(B) * A
其中,A、B 和 Y 是已知的 p*p 矩阵( p 可小可大,视情况而定)。 矩阵非常稠密,没有任何结构(当然除了 B 是非奇异的)。
是否可以在不反转矩阵 B 的情况下求解这些方程中的 X? 我必须计算这些方程 n 次,n 为数百或数千,并且所有矩阵都会随着时间而变化。
非常感谢。
I have two problems. I have to calculate two equations:
X = A - inv(B) * Y * inv(B)
and
X = Y + A' * inv(B) * A
where, A, B and Y are known p*p matrices (p can be small or large, depends the situation). Matrices are quite dense, without any structure (except B being non-singular of course).
Is it possible to solve X in those equations without inverting the matrix B? I have to calculate these equations n times, n being hundreds or thousands, and all the matrices change over time.
Thank you very much.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您可以用以下术语表达对矩阵 B 的更新:
那么您可以使用 Sherman-Morrison-Woodbury 公式显式表达对
inv(B)
的更新:如果 u 和 v 是向量 (分别为列和行)并且 s 是标量,则此表达式简化:
您只需计算一次 inv(B) ,然后在它发生变化时更新它,无需额外的反转。
最好不要计算完整的逆,仅计算 y 和 (ynew - y) 或 a 和 (anew - a) 上的简单“矩阵除法”,具体取决于问题中“n”相对于“p”的大小。
If you can express your updates to your matrix B in the following terms:
then you can express an update to
inv(B)
explicitly using the Sherman-Morrison-Woodbury formula:If u and v are vectors (column and row, respectively) and s is scalar, then this expression simplifies:
You would only have to calculate
inv(B)
once and then update it when it changes with no additional inversions.It may be preferable not to calculate the full inverse, just simple "matrix divisions" on y and (ynew - y) or a and (anew - a) depending on the size of "n" with respect to "p" in your problem.
Memo-ize inv(B),即仅在 B 发生变化时对其求逆,并保留其逆。
如果 B 的变化很小,您可能可以使用增量近似。
Memo-ize inv(B), i.e. only invert B when it changes, and keep the inverse around.
If changes to B are small, possibly you could use a delta-approximation.