Здравствуйте. Всем доброго здоровья и хорошего настроения.
Посмотрел
видео решил реализовать итерационный метод нахождения SVD разложения.
На 25:38 лектор делает заметку о своей описке
![$v_{i}$ $v_{i}$](https://dxdy-01.korotkov.co.uk/f/0/7/a/07a0dda5713c478e5a796df8ad8aa55782.png)
вместо
![$v_{j}$ $v_{j}$](https://dxdy-02.korotkov.co.uk/f/d/b/d/dbd3bf646f121c8c16883490b0e6c87282.png)
в формуле для
![$u_{1}$ $u_{1}$](https://dxdy-03.korotkov.co.uk/f/e/d/0/ed027a7fa65d2be15351d9d99a2f75b982.png)
но результата это не дает.
(Оффтоп)
Вот реализация в маткаде (реализовано нахождение только одной пары векторов и соответствующего им сингулярного значения)
(Оффтоп)
A - исходная матрица для разложения.
![$svd(A)^{T}$ $svd(A)^{T}$](https://dxdy-03.korotkov.co.uk/f/2/a/9/2a9bbbfd0c1194bfe2d96cfd27d61fee82.png)
- разложение маткада для проверки.
Помогите пожалуйста разобраться в чем ошибка. Данный алгоритм не выдает ничего похожего на пару векторов и сингулярное значение, они не совпадает с маткадовским.
Попутные вопросы:
1) Как лучше реализовать начальную рандомизацию
![$u$ $u$](https://dxdy-03.korotkov.co.uk/f/6/d/b/6dbb78540bd76da3f1625782d42d6d1682.png)
?
2) Нужно ли нормировать векторы на каком либо этапе?
3) В конце лектор объясняет, что даже если мы прервали алгоритм, найдя некоторое количество первых векторов и сингулярных значений, то остатком матрицы
![$A$ $A$](https://dxdy-02.korotkov.co.uk/f/5/3/d/53d147e7f3fe6e47ee05b88b166bd3f682.png)
можно заполнить пространство матриц
![$U$ $U$](https://dxdy-03.korotkov.co.uk/f/6/b/a/6bac6ec50c01592407695ef84f45723282.png)
и
![$V$ $V$](https://dxdy-03.korotkov.co.uk/f/a/9/a/a9a3a4a202d80326bda413b5562d5cd182.png)
(в разложении
![$USV^{T}$ $USV^{T}$](https://dxdy-01.korotkov.co.uk/f/0/b/b/0bb824c5cc5e40bab1a2b00a30a4f64882.png)
) но как это сделать? Размерности то отличаются.
Ссылка на файл маткада