Matrix 计算X=A-inv(B)*Y*inv(B)和X=Y+的可能方法;A';*投资部(B)*A

Matrix 计算X=A-inv(B)*Y*inv(B)和X=Y+的可能方法;A';*投资部(B)*A,matrix,inversion,Matrix,Inversion,我有两个问题。我必须计算两个方程式: X=A-存货(B)*Y*存货(B) 及 X=Y+A'*inv(B)*A 其中,A、B和Y是已知的p*p矩阵(p可以小,也可以大,取决于情况)。矩阵非常密集,没有任何结构(当然B是非奇异的除外) 不求矩阵B的逆解这些方程中的X有可能吗?我必须计算这些方程n次,n是数百或数千,所有的矩阵都会随着时间而变化 非常感谢。请记住inv(B)的大小,即仅在B发生变化时反转,并保持反转 如果对B的更改很小,可能您可以使用增量近似值。Memo ize inv(B),即仅在B

我有两个问题。我必须计算两个方程式:

X=A-存货(B)*Y*存货(B)

X=Y+A'*inv(B)*A

其中,A、B和Y是已知的p*p矩阵(p可以小,也可以大,取决于情况)。矩阵非常密集,没有任何结构(当然B是非奇异的除外)

不求矩阵B的逆解这些方程中的X有可能吗?我必须计算这些方程n次,n是数百或数千,所有的矩阵都会随着时间而变化

非常感谢。

请记住inv(B)的大小,即仅在B发生变化时反转,并保持反转

如果对B的更改很小,可能您可以使用增量近似值。

Memo ize inv(B),即仅在B更改时反转,并保持反转


如果对B的更改很小,可能可以使用增量近似值。

如果可以用以下术语表示对矩阵B的更新:

Bnew = B + u*s*v
然后,您可以使用谢尔曼·莫里森·伍德伯里公式明确表示对
inv(B)
的更新:

inv(B + u*s*v) = inv(B) - inv(B)*u*inv(s + v*inv(B)*u)*v*inv(B)
如果u和v是向量(分别为列和行),s是标量,则此表达式可简化:

inv(B + u*s*v) = inv(B) - inv(B)*u*v*inv(B)/(s + v*inv(B)*u)
您只需计算
inv(B)
一次,然后在它发生变化时更新它,而无需进行额外的反演


根据问题中“n”相对于“p”的大小,最好不要计算完全逆矩阵,只计算y和(ynew-y)或a和(anew-a)上的简单“矩阵除法”。

如果可以用以下术语表示对矩阵B的更新:

Bnew = B + u*s*v
然后,您可以使用谢尔曼·莫里森·伍德伯里公式明确表示对
inv(B)
的更新:

inv(B + u*s*v) = inv(B) - inv(B)*u*inv(s + v*inv(B)*u)*v*inv(B)
如果u和v是向量(分别为列和行),s是标量,则此表达式可简化:

inv(B + u*s*v) = inv(B) - inv(B)*u*v*inv(B)/(s + v*inv(B)*u)
您只需计算
inv(B)
一次,然后在它发生变化时更新它,而无需进行额外的反演


根据问题中“n”相对于“p”的大小,在y和(ynew-y)或a和(anew-a)上最好不要计算完全逆矩阵,只计算简单的“矩阵除法”。

一般情况下,我想不会,尽管我的代数fu可能更好。如果你给出更多的上下文(你需要X做什么?A和B之间有关系吗?),其中可能还有一些东西。数学相关,但与编程无关。有很多数学问答网站,伙计们,对不起:(我想一般情况下不会,虽然我的代数傅可能会更好。如果你提供更多的上下文(你需要X做什么?A和B之间有关系吗?)这里面可能还有一些东西。与数学有关,但与编程无关。外面有很多数学问答网站,各位,对不起:(