Advertisement
Konnor95

Untitled

Sep 16th, 2014
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.11 KB | None | 0 0
  1. matrix Matrix::inversion(matrix m, int size)
  2. {
  3.     matrix a = new float*[];
  4.     for (int i = 0; i < size; i++)
  5.     {
  6.         a[i] = new float[size];
  7.         for (int j = 0; j < size; j++)
  8.         {
  9.             a[i][j] = m[i][j];
  10.         }
  11.     }
  12.     matrix e = new float*[];
  13.     for (int i = 0; i < size; i++)
  14.     {
  15.         e[i] = new float[size];
  16.         for (int j = 0; j < size; j++)
  17.         {
  18.             e[i][j] = i == j ? 1 : 0;
  19.         }
  20.     }
  21.     float temp;
  22.     for (int k = 0; k < size; k++)
  23.     {
  24.         temp = a[k][k];
  25.  
  26.         //делим каждый столбец строки на temp
  27.         for (int j = 0; j < size; j++)
  28.         {
  29.             a[k][j] /= temp;
  30.             e[k][j] /= temp;
  31.         }
  32.  
  33.         for (int i = k + 1; i < size; i++)
  34.         {
  35.             temp = a[i][k];
  36.  
  37.             for (int j = 0; j < size; j++)
  38.             {
  39.                 a[i][j] -= a[k][j] * temp;
  40.                 e[i][j] -= e[k][j] * temp;
  41.             }
  42.         }
  43.     }
  44.     for (int k = size - 1; k > 0; k--)
  45.     {
  46.         for (int i = k - 1; i >= 0; i--)
  47.         {
  48.             temp = a[i][k];
  49.  
  50.             for (int j = 0; j < size; j++)
  51.             {
  52.                 a[i][j] -= a[k][j] * temp;
  53.                 e[i][j] -= e[k][j] * temp;
  54.             }
  55.         }
  56.     }
  57.  
  58.     for (int i = 0; i < size; i++)
  59.         for (int j = 0; j < size; j++)
  60.             a[i][j] = e[i][j];
  61.     del(e, size);
  62.     return a;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement