Обратная матрица. Метод Гаусса-Жордана
Дана квадратная матрица A.
Найти такую матрицу B, что AB=E, где E - единичная матрица.
Допишем справа от A единичную матрицу. Приведём полученную матрицу к диагональному виду, а потом приведём к единичной матрице (Диагональной и единичной будет только левая половина матрицы). В результате правая половина матрицы будет равна обратной матрице матрицы A.
Асимптотика O(N3).
Листинг C++
// обратная матрица, метод Гаусса-Жордана
matrix invertibleMatrix (matrix & a)
{
matrix E = matrix (a.N (), a.N (), 1);
matrix c = a.concateMatrix (E);
c = diagonal (c);
if (c.N () == 0)
return c;
for (int i = 0; i < a.N (); ++ i)
for (int k = a.N () + a.N () - 1; k >= 0; -- k)
c[i][k] /= c[i][i];
return c.eraseColumns (0, a.N () - 1);
}
Создана 17:57 04.01.2011
Изменена 17:57 04.01.2011
По всем вопросам обращаться: rumterg@gmail.com