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



Дана квадратная матрица 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