如何在Python中计算分解A=P[I_r,0;0,0]Q?

如何在Python中计算分解A=P[I_r,0;0,0]Q?,python,numpy,scipy,linear-algebra,equivalence,Python,Numpy,Scipy,Linear Algebra,Equivalence,给定矩阵A,是否可以方便地得到出现在中的可逆矩阵p和Q,并用numpy或scipy满足A=p[I_r,0;0,0]Q?也许您可以进行奇异值分解(SVD),然后将奇异值乘以一个酉矩阵 请参见第页的SVD定义 基本上你会得到一个酉矩阵,一个对角矩阵和另一个酉矩阵。对角矩阵的非零元素数等于秩(A) 在python代码中,它是 P, S, Q = numpy.linalg.svd(A) for i, row in enumerate(Q): row *= S[i] 请参阅关于numpy.linal

给定矩阵A,是否可以方便地得到出现在中的可逆矩阵p和Q,并用numpy或scipy满足A=p[I_r,0;0,0]Q?

也许您可以进行奇异值分解(SVD),然后将奇异值乘以一个酉矩阵

请参见第页的SVD定义

基本上你会得到一个酉矩阵,一个对角矩阵和另一个酉矩阵。对角矩阵的非零元素数等于秩(A)

在python代码中,它是

P, S, Q = numpy.linalg.svd(A)
for i, row in enumerate(Q):
  row *= S[i]
请参阅关于numpy.linalg.svd的信息


P、 然后成为你想要的。但是请记住,这种分解并不是唯一的方法。

您知道在没有python的情况下如何计算分解吗?如果是,则应提供必要的工具,以在python中实现该功能。您所说的[I_r,0;0,0]是什么意思?@Dschoni它是一个块矩阵,几乎是一个单位矩阵,但只有
r
1's@Dschoni我可以用手动的方式来做,但我想知道是否有内置的方法。这对于计算所有广义矩阵逆很重要。我通过LU分解解决了这个问题,但我认为这更好。