Возникла необходимость искать сингулярное разложение матрицы на C++, сразу оговорюсь, что геометрическую подноготную я к сожалению не понимаю, знаю лишь что для найденного разложения должно выполняться следующее соотношение в матричном виде A = U*W*V^T, где матрицы U, W, V являются результатом разложения SVD(A), а ^T операция транспонирования.
Нашел готовую имплементацию
здесь. Для матрицы
![MvIhgEDZds.png](http://pastexen.com/i/MvIhgEDZds.png)
она выдает следующее
результат
![TFqrdM6M0t.png](http://pastexen.com/i/TFqrdM6M0t.png)
.
Однако mathcad несогласен и считает немного иначе, так:
![3SmGE61FRy.png](http://pastexen.com/i/3SmGE61FRy.png)
Вопрос в следующем - почему данная имплементация верно считает цифры, но путает их местами и мудрит со знаками? Если она не рабочая, то где можно найти рабочую?