Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C] Обратная матрица


Автор: Fant87 14.2.2010, 18:51
Здравствуйте, помогите пожалуйста разобраться с готовым кодом поиска обратной матрицы.
Вот весь код программы:
Код

#include <stdio.h>
#include <stdlib.h>
main()
{
     int i,j,k,n;
     double a[5][5];
     double e[5][5];
     double tmp;
     printf("Vvedite razmerost: ");
     scanf("%d",&n);

     randomize();
     for (i=0;i<n;i++,printf("\n"))
     for (j=0;j<n;j++)
     printf("%.2lf ",a[i][j]=(random(10)+1)*0.94);


     // initializing matrix e
     for (i=0;i<n;i++)
     for (j=0;j<n;j++)
     e[i][j]=(i==j?1:0);

     // converting matrix to e
     for(i=0;i<n;i++)
     {
          // normalizing row (making first element =1)
          tmp=a[i][i];
          for(j=n-1;j>=0;j--)
          {
               e[i][j]/=tmp;
               a[i][j]/=tmp;
          }
          // excluding i-th element from each row except i-th one
          for(j=0;j<n;j++)
          if (j!=i)
          {
               tmp=a[j][i];
               for(k=n-1;k>=0;k--)
               {
                    e[j][k]-=e[i][k]*tmp;
                    a[j][k]-=a[i][k]*tmp;
               }
          }
     }
   printf("\n");
   for (i=0;i<n;i++,printf("\n"))
   for (j=0;j<n;j++)
   printf("%.2lf ",e[i][j]);
}



Объясните сам алгоритм обращения матрицы. Просто при сдаче программы необходимо будет рассказать по какой формуле(алгоритму) происходят все эти преобразования, а я не могу разобраться,т.к. недавно столкнулся с программированием.

Автор: Веталька 14.2.2010, 19:24
http://ru.wikipedia.org/wiki/Обратная_матрица

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)