Домой | Софт | Мастерская | Лирика | ЧаВО | Юмор | 197-577-902 |
Пусть А - исходная матрица, обратную к которой мы хотим найти.
n и k - кол-во строк и столбцов в ней соотвественно.
- Сначала проверим является ли А квадратной, т.е. совпадают ли n и k.
- Затем проверим равен ли определитель мартицы А нулю. Если он равен нулю, то обратной матрицы не существует.
- Создаем матрицу Inv равную единичной размерности nxn.
- А затем при помощи элементарных преобразований: сложения строк матрицы, умножения строки на число, перестановки столбцов и строк приведем матрицу A к единичной. Причем, параллельно, те же самые преобразования будем производить и с матрицей Inv (переставлять и складывать те же строки/столбцы, и умножать на это же число).
- В результате, матрица Inv - будет являться обратной матрицей к исходной матрице A.
Рассмотрим четвертый шаг алгоритма более подробно.
Это цикл по количеству строк матрицы А. Каждая итерация цикла устроена следующим образом:
- На каждой итерации мы смотрим на элемент A(i,i). Если он равен нулю, то мы ищем в матрице А ненулевой элемент. Причем ищем его только в прямоугольнике (i, i, n, n) матрицы A. Если он найден, и его координаты (i2, j2), то меняем местами i-ую строку с i2-ой, и j-ый столбец с j2-ым. Те же перестановки делаем в матрице Inv.
- Делим i-ую строку матриц А и Inv на элемент A(i, i) (делить можно, т.к. мы на шаге 1 позаботились о том, чтобы этот элемент не был равен 0).
Таким образом элемент A(i, i) теперь равен 1.- При помощи вычитания i-й строки матрицы А, с определенным коэффициентом, из остальных ее строк зануляем все элементы стоящие выше и ниже элемента с индексом (i, i). С тем же коэфициентом вычитаем i-ую строку матрицы Inv из ее остальных строк.
Припишем справа через черту матрицу Inv:
Вычтем из второй строки первую с коэффициентом 3:
Поделим вторую строку на -2:
Вычтем вторую строку из первой с коэффициентом 2:
Таким образом, обратная матрица равна:
Скачать уже реализованный класс "Матрица" с методом нахождения обратной матрицы вы можете отсюда.
Слава Антонов © 2002 — August 13, 2008 |
|