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