Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private BigDecimal[] gauss(BigDecimal[][] A, BigDecimal[] B) {
- BigDecimal[] X = new BigDecimal[64];
- Arrays.fill(X, BigDecimal.ZERO);
- int n = 64;
- for (int j = 0; j < n; ++j) {
- int bestI = j;
- for (int i = j + 1; i < n; ++i)
- if (A[i][j].abs().compareTo(A[bestI][j].abs()) > 0) {
- bestI = i;
- }
- BigDecimal[] tm = A[j];
- A[j] = A[bestI];
- A[bestI] = tm;
- BigDecimal tmp = B[j];
- B[j] = B[bestI];
- B[bestI] = tmp;
- for (int i = j + 1; i < n; ++i) {
- BigDecimal d = A[i][j].divide(A[j][j], mc);
- for (int t = 0; t < n; ++t) {
- A[i][t] = A[i][t].subtract(A[j][t].multiply(d, mc), mc);
- }
- B[i] = B[i].subtract(B[j].multiply(d, mc), mc);
- }
- }
- for (int i = n - 1; i >= 0; --i) {
- for (int j = i + 1; j < n; ++j) {
- B[i] = B[i].subtract(A[i][j].multiply(X[j], mc), mc);
- }
- X[i] = B[i].divide(A[i][i], mc);
- }
- return X;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement