избегая полного разложения по единственному значению матрицы - PullRequest
0 голосов
/ 19 марта 2020

Мне нужно вычислить первое сингулярное значение матрицы с соответствующими левыми и правыми собственными векторами. Есть ли способ в Python избежать вычисления полного разложения матрицы по сингулярному значению для извлечения ее наибольшего сингулярного значения?

1 Ответ

0 голосов
/ 10 апреля 2020

Я не совсем уверен, что понимаю, что вы собираетесь получить. Вы имеете в виду одно из следующего?

1) Если вы хотите просто извлечь первое значение из продукта матрицы, это работает для меня:

Ua,Sa,Va=np.linalg.svd(A) #Changing A for your matrix.

U=Ua[1,0]
S=Sa[0]
V=Va[1,0]

2) Если, с другой стороны, то, что вы намереваетесь сделать, это приостановить SVD, как только оно найдет наибольшее единственное значение, я не думаю, что это будет возможно, учитывая, что декомпозиция сингулярного значения является произведением трех матриц, и даже если вы ищите самое высокое единственное значение, SVD должен был бы работать полностью, чтобы получить его. Кроме того, первый элемент диагональной матрицы SV не обязательно должен вычисляться первым.

...