@AlexanderLyakh
Python

Есть ли алгоритм разложения матрицы?

Подскажите пожалуйста алгоритм разложения матрицы на произведение трансвекций ( элементарных матриц) и одной диагональной матрицы.
  • Вопрос задан
  • 372 просмотра
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Посмортите на метод Гаусса. Там получается диагональная матрица путем прибавления одной строки к другим и перестановки строк. Так вот - прибавление одной строки к другой с коэффициентом - это и есть домножение матрицы на трансвекцию.

Единственная проблема - надо переставлять строчки местами. Тут вам поможет класический пазл о помене двух чисел без использования вспомогательных переменных:
a = a + b;
b = a - b;
a = a - b;


Эти три операции поменяют местами a и b. При чем они уже выглядят как трансвекции - только вторая операция не совсем вида a += b*k.

Но можно чуть чуть поменять:
a = a + b;
b = b - a;
a = a + b;


Тут три трансвекции и строки меняются местами, только одна из них домножается на -1. Но это домножение метод гауса нисколько не меняет.

Вот и ваш алгоритм.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы