Advertisement
anoosykh95

Untitled

Jul 22nd, 2016
400
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.74 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef vector<long double> vec;
  5. typedef vector<vec> mat;
  6.  
  7. const long double EPS = 1e-13;
  8.  
  9. int deg[20];
  10.  
  11. vec GaussianElimination(const mat& A, const vec& b) {
  12.     int i, j, k, pivot, n = A.size();
  13.     mat B(n, vec(n+1));
  14.     vec x(n);
  15.     for(i = 0; i < n; i++) {
  16.         for(j = 0; j < n; j++) B[i][j] = A[i][j];
  17.         B[i][n] = b[i];
  18.     }
  19.     for(i = 0; i < n; i++) {
  20.         for(pivot = j = i; j < n; ++j) if(fabs(B[j][i]) > fabs(B[pivot][i])) pivot = j;
  21.         swap(B[i], B[pivot]);
  22.         if(fabs(B[i][i]) < EPS) return vec();
  23.         for(j = n; j >= i; --j) B[i][j] /= B[i][i];
  24.         for(j = 0; j < n; j++) if(i != j) for(k = i+1; k <= n; ++k) B[j][k] -= B[j][i] * B[i][k];
  25.     }
  26.     for(i = 0; i < n; i++) x[i] = B[i][n];
  27.     return x;
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement