Advertisement
Guest User

Untitled

a guest
Dec 18th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.36 KB | None | 0 0
  1.  void GaussPartialSparseMatrix(int n, vector<double> x, vector< vector<double> > a, vector<double> b){
  2.     printf("\n%-35s", "GAUSS PARTIAL FOR SPARSE MATRIX");  
  3.     for(int p = 0; p < n; p++){
  4.         // find pivot row and swap
  5.         int max = p; // indeks najwiekszego
  6.         for(int i = p+1; i < n; i++){
  7.             if(abs(a[i][p]) > abs(a[max][p]))
  8.                 max = i;
  9.         }
  10.    
  11.         a[p].swap(a[max]);
  12.         swap(b[p], b[max]);
  13.    
  14.    
  15.         // pivot within A and B
  16.         for(int i = p+1; i < n; i++){
  17.             // i wiersz
  18.             // sprawdzenie czy element zerowy jesli tak przejscie do nastepnego wiersza
  19.             if (a[i][p] == 0) continue;
  20.            
  21.             double alpha = a[i][p]/a[p][p];
  22.             b[i] = b[i] - (alpha * b[p]);
  23.            
  24.    
  25.             for(int j = p; j < n; j++){
  26.                 a[i][j] = a[i][j] - (alpha * a[p][j]);
  27.             }
  28.         }
  29.     }
  30.  
  31.     for(int i = n - 1; i >= 0; i--){
  32.         double sum = 0;
  33.         for(int j = i+1; j < n; j++){
  34.             sum += a[i][j] * x[j];
  35.         }
  36.         x[i] = (b[i] - sum)/a[i][i];
  37.     }
  38.  
  39.     WYNIK = x[0];
  40.     // cout<<"\nThe Solution is : \n";
  41.     // for(int i=0;i<n;i++) {
  42.     //     cout<<"\nx("<<i<<") = "<<x[i]<<"\n";
  43.     // }
  44.    
  45.     cout << ": x[0] = " << WYNIK;
  46.  
  47.     // cout << "====================\n";    
  48.     //getch();
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement