Поиск по сайту.


Другие алгоритмы.

Математика: Операции с матрицами.

Обращение матрицы методом Гаусса-Жордана.

© Кантор И.

Наша задача:

  ( a11 a12 a13 )( y11 y12 y13 )   ( 1 0 0 )
  ( a21 a22 a23 )( y21 y22 y23 ) = ( 0 1 0 )
  ( a31 a32 a33 )( y31 y32 y33 )   ( 0 0 1 )

По данной матрице А найти матрицу Y, обратную к данной. Здесь записано уравнение 3x3, но метод решения, естественно, будет общим.

Мы будем пользоваться следующими очевидными фактами:

1. Если поменять местами любые две строки матрицы А и проделать ту же операцию с еденичной матрицей E, то обратная матрица Y не изменится.

2. Меняя местами любые два столбца матрицы А, мы одновременно переставляем соответствующие строки в обратной матрице Y.

3. Любую из строк матрицы A можно заменить на линейную комбинацию этой строки и любых других, делая то же с еденичной матрицей.

В результате этих операций еденичная матрица, естественно, перестанет быть таковой. В процессе преобразования матрицы A к еденичной, бывшая еденичная будет автоматически преобразована в обратную.

Метод Гаусса-Жордана с полным центрированием.

Применим центрирование: выбор максимального элемента для текущей строки. Это позволит минимизировать возможную ошибку округления и получить наиболее точный результат.

Для всех элементов aii, начиная с a11 и продвигаясь по диагонали вправо-вниз:

1. Ищем максимальный элемент среди всех элементов того же столбца и строки

2. Переставляем местами строки и столбцы так, чтобы этот элемент оказался слева вверху.

3. Из всех строк, кроме данной, вычитаем текущую, умноженную на соответствующее число, чтобы обнулить всю колонку. Увеличивая i, переходим на Шаг 1.

В результате этих операций А будет постепенно, колонка за колонкой преобразована к еденичной. При этом передвижения колонок в решении необходимо отслеживать в нужных векторах /перестановка/.

Вообще говоря, вместо еденичной матрицы справа может быть матрица ширины m из векторов B, тогда, выполняя аналогичные операции, кроме получения A-1, мы преобразуем эту матрицу в m решений соответствующих систем линейных уравнений (СЛУ).

Исходник, реализующий обе функции позволит Вам быстрее понять, что к чему, а также разобраться в деталях реализации: gaussf.c




Вверх по странице, к оглавлению и навигации.