Собственно, нужно сравнить два простых способа решения системы при условии невырожденной матрицы (она предполагается квадратной) и сделать вывод, какой из методов более эффективен.
Первый - обычное приведение к ступенчатому виду матрицы.
Второй - разложение матрицы в произведение ортогональной и верхнетреугольной, затем домножение на обратную к ортогональной, после чего решение идет совершенно одинаково - имеем треугольную матрицу, умноженную на столбец неизвестных, результат - столбец чисел. То есть разницу стоит искать именно здесь.
Построение ортогональной и треугольной матриц идет так: берем столбцы исходной матрицы, считаем их базисными. Дальше этот базис постепенно ортогонализуем, не забывая нормировать при получении очередного вектора. В матрицу

пишем построчно координаты, в соответствующий столбец матрицы

- разложение очередного вектора по старому базису.
В итоге получим что-то в духе

, откуда извлечем, положив

,

Так вот, у меня получается, что для реализации второго метода надо солидно больше операций, где-то в полтора раза по самым скромным оценкам. Но мне говорили, что этот метод дает выигрыш в скорости. Неправильно говорили или проблемы все же у меня с оценками? Также буду рад, если подскажете, что почитать на эту тему.