public void MergeMatrixBig(float[,] A, int RowCol) { //Buoc Giai A^-1 CreatedMatrixI(RowCol); for (int i = 0; i < RowCol; i++) { for (int j = 0; j < RowCol; j++) { C[i, j] = A[i, j]; } } for (int i = 0; i < RowCol; i++) { for (int j = 0; j < RowCol; j++) { C[i, j + RowCol] = mI[i, j]; } } //Add_MatrixRe(RowCol, RowCol * 2, 1); // Xuat(C, 8); //Buoc 2 Giai A^-1 //Xuat(C, RowCol); for (int i = 0; i < RowCol - 1; i++) { int nho = i; for (int x = i; x < RowCol; x++) { if (C[x, i] != 0) { nho = x; break; } } if (nho != i) { for (int j = i; j < RowCol; j++) { C[i, j] += C[nho, j]; } C[i, nho + RowCol] += 1; } for (int t = 1; t < RowCol - i; t++) { float k = C[i + t, i] / C[i, i]; for (int j = i; j < RowCol * 2; j++) { C[i + t, j] = C[i + t, j] - k * C[i, j]; } } } //Add_MatrixRe(RowCol, RowCol * 2, 2); //Xuat(C, RowCol); //Buoc 3 for (int i = 0; i < RowCol; i++) { float k = 1 / C[i, i]; for (int j = i; j < RowCol * 2; j++) { C[i, j] *= k; } } //Buoc RowCol for (int i = RowCol - 1; i > 0; i--) { for (int k = i - 1; k >= 0; k--) { float x = C[k, i]; for (int j = i; j < RowCol * 2; j++) { C[k, j] -= (x * C[i, j]); } } } //Add_MatrixRe(RowCol, RowCol * 2, 3); for (int i = 0; i < RowCol; i++) { for (int j = RowCol; j < RowCol * 2; j++) { GlobalsMatrix.setMatrixRe(i, j - RowCol, C[i, j]); } ; } }