Как рассчитать разложение A=P[I_r,0;0,0]Q в Python?

Учитывая матрицу A, возможно ли удобно получить обратимые матрицы P и Q, которые появляются в матричной эквивалентности и удовлетворяют A=P[I_r,0;0,0]Q при numpy или scipy?

1 ответ

Возможно, вы можете выполнить разложение по сингулярным числам (SVD), а затем умножить сингулярные значения на одно из унитарных матриц.

См. Определение SVD на http://en.wikipedia.org/wiki/Singular_value_decomposition

в основном вы получите унитарную матрицу, диагональную матрицу и другую унитарную матрицу. Диагональная матрица имеет число ненулевых элементов, равное рангу (A).

В коде Python это

P, S, Q = numpy.linalg.svd(A)
for i, row in enumerate(Q):
  row *= S[i]

См. Http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.svd.html о numpy.linalg.svd.

P, Q тогда станет именно тем, что вы хотите. Но имейте в виду, что нет уникального способа такого разложения.

Другие вопросы по тегам