|
|||||
Математика: Операции с матрицами.Обращение матрицы методом Гаусса-Жордана.© Кантор И. Наша задача: ( 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 Вверх по странице, к оглавлению и навигации.
|