当 Inverse 不可能时计算哪个伪逆?(没有线性求解)

计算科学 线性代数
2021-11-30 17:50:29

让我们假设我们有一个函数,它依赖于A^{-1}但是,由于某些机器精度限制,我使用的编程语言无法反转A即使它具有Det(A)>0所以,我正在考虑使用伪逆。f(A)=vec(A1)BA1ADet(A)>0

但是,我不知道真逆和伪逆之间是否存在“距离”关系。我只知道当有一个逆时,两者都是相等的。但它会很好,当原始矩阵 A 和 A 的“扰动/截断”版本接近时,伪逆接近原始矩阵的逆......

我还在研究有一种相对简单有效的计算方法的伪逆。

有什么建议?

编辑:dim(A)=DT×DTdim(B)=D2T2×D2

根据 Federico Poloni 的评论,我想我实际上可以将上面的函数重新计算为

[Tr(LinearSolve(A,Ci))]1×i=1,...,D2
其中Ci=ReshapeDT×DT(Column(B,i))

1个回答

伪逆通常将通过一些截断过程来计算以确定秩,因此它们并不接近原始逆。示例: 具有精确(伪)逆 但任何数值程序都必须采取排名的决定,并且可能会将其中一个或两个对角线条目截断为零,例如返回 (取决于截断阈值),

A=Q[110121018]Q
A+=A1=Q[110121018]Q,
B=Q[110120]Q,
B=Q[100]Q,
A+. 这是一个固有的限制,我认为你无法克服它。这是设计使然:通常,当一个人写作时,他pinv(A)想要,而不是如果您真的想要,那么只需使用并忘记警告。BA1A1inv(A)

但可能是时候回到黑板上,想想在这些边缘情况下你真正需要什么,看看是否有更稳定的替代表达方式。如果您的问题的确切解决方案是病态的,那么它可能甚至不是您最终想要的。