Advertisement
Guest User

Untitled

a guest
Apr 6th, 2020
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. #include <vector>
  2. #include <iostream>
  3.  
  4. std::vector<double> gauss(std::vector<std::vector<double>> X, std::vector<double> Y)
  5. {
  6.     // Uwaga funkcja zmienia wartości X i Y
  7.     // Dlatego polecam używać wywoływania przez wartość
  8.     // Samo stworzy ładną kopię
  9.  
  10.     const int n = X.size();
  11.  
  12.     for(int i{0}; i<n-1; i++)
  13.     {
  14.         for(int row{i+1}; row<n; row++)
  15.         {
  16.             double ulamek = X[row][i] / X[i][i];
  17.             Y[row] -= ulamek * Y[i];
  18.            
  19.             for (int col{0}; col<n; col++)
  20.                 X[row][col] -= ulamek * X[i][col];
  21.         }
  22.     }
  23.  
  24.     // Tablica na xi
  25.     std::vector<double> xi{};
  26.     // Domyślnie ustawia wartości na 0
  27.     xi.resize(n);
  28.  
  29.     xi[n-1] = Y[n-1]/X[n-1][n-1];
  30.  
  31.     for (int i{n-2}; i>-1; i--)
  32.     {
  33.         double x = Y[i];
  34.         for (int j{n-1}; j>-1; j--)
  35.             x -= X[i][j] * xi[j];
  36.  
  37.         xi[i] = x/X[i][i];
  38.     }
  39.    
  40.     return xi;
  41. }
  42.  
  43.  
  44. int main()
  45. {
  46.     std::vector<std::vector<double>> X {
  47.         {1,2,-1},
  48.         {3,4,1},
  49.         {2,-2,3}
  50.     };
  51.  
  52.     std::vector<double> Y = {5, 9, -1};
  53.     auto xi{ gauss(X,Y) };
  54.     for (const auto& x: xi)
  55.         std::cout << x << std::endl;
  56.  
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement