qwerty787788

gauss

May 10th, 2016
468
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.71 KB | None | 0 0
  1. void doGauss(double[][] a) {
  2.         int n = a.length, m = a[0].length;
  3.         int cur = 0;
  4.         for (int i = 0; i + 1 < m; i++) {
  5.             if (cur == n) {
  6.                 break;
  7.             }
  8.             int swap = cur;
  9.             for (int j = cur + 1; j < n; j++) {
  10.                 if (Math.abs(a[j][i]) > Math.abs(a[swap][i])) {
  11.                     swap = j;
  12.                 }
  13.             }
  14.             double[] tmp = a[cur];
  15.             a[cur] = a[swap];
  16.             a[swap] = tmp;
  17.             if (Math.abs(a[i][cur]) < 1e-9) {
  18.                 continue;
  19.             }
  20.             for (int j = 0; j < n; j++) {
  21.                 if (j != cur) {
  22.                     double mul = a[j][i] / a[cur][i];
  23.                     for (int k = 0; k < m; k++) {
  24.                         a[j][k] -= mul * a[cur][k];
  25.                     }
  26.                 }
  27.             }
  28.             double div = a[cur][i];
  29.             for (int j = 0; j < m; j++) {
  30.                 a[cur][j] /= div;
  31.             }
  32.             cur++;
  33.         }
  34.     }
Advertisement
Add Comment
Please, Sign In to add comment