Всем привет!
Положим, у нас есть симметричная матрица размера NxN скалярных произведений единичных векторов друг на друга A_ij=(a_i, a_j)
. Хочется определить сколько из всех этих векторов линейно независимы и уложить их в пространство наименьшей возможной размерности. В принципе, алгоритм этот довольно просто составляется, но хотелось бы знать, есть ли уже реализации его в какой-нибудь из библиотек(С/С++)?
Вроде бы алгоритм такой:
1) берем любой вектор, говорим, что первая ось направлена вдоль него. соответственно, его координаты (1,0,...,0). У всех остальных векторов сразу известны проекции на эту ось A_1j.
2) проекция второго вектора на вторую ось: sqrt(1-A_12^2)
3) проекции остальных векторов на соответствующие оси получаются из решения простой линейной системы уравнений.
На выходе получаем квадратную нижнетреугольную матрицу координат векторов (с точностью до поворотов СК).