Advertisement
codisinmyvines

diagmatr

Sep 16th, 2020
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. Matrix2x2 Matrix2x2::stringchange()
  2. {
  3.     Matrix2x2 a;
  4.     a.matr[0][0] = matr[1][0];
  5.     a.matr[0][1] = matr[1][1];
  6.     a.matr[1][0] = matr[0][0];
  7.     a.matr[1][1] = matr[0][1];
  8.     return a;
  9. }
  10. Matrix2x2 Matrix2x2::equivalentDiagonal()
  11. {
  12.     Matrix2x2 a;
  13.     if (matr[0][0] == 0 && matr[1][1] == 0)
  14.     {
  15.         a = this->stringchange(); //просто меняем строки местами
  16.     }
  17.     else
  18.     {
  19.         if (matr[0][0] == 0 && matr[0][1] != 0)
  20.         {  
  21.             for (i = 0; i < 2; i++)
  22.                 for (j = 0; j < 2; j++)
  23.                     a.matr[i][j] = matr[i][j];
  24.             a.matr[1][1] = matr[0][1] * (-matr[1][1] / matr[0][1]) + matr[1][1];
  25.             a = a.stringchange();
  26.         }
  27.         else
  28.         {
  29.             if (matr[1][1] == 0 && matr[1][0] != 0)
  30.             {
  31.                 for (i = 0; i < 2; i++)
  32.                     for (j = 0; j < 2; j++)
  33.                         a.matr[i][j] = matr[i][j];
  34.                 a.matr[0][0] = matr[0][0] + (-matr[0][0] / matr[1][0]) * matr[1][0];
  35.                 a = a.stringchange();
  36.             }
  37.             else
  38.             {
  39.                 a.matr[1][0] = matr[0][0] * (-matr[1][0] / matr[0][0]) + matr[1][0];
  40.                 a.matr[1][1] = matr[0][1] * (-matr[1][0] / matr[0][0]) + matr[1][1];
  41.                 a.matr[0][0] = matr[0][0];
  42.                 a.matr[0][1] = matr[0][1] + (-matr[0][1] / a.matr[1][1]) * a.matr[1][1];
  43.             }
  44.         }
  45.     }
  46.     return a;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement