public static IR.RealNumber GetMinor(this RealMatrix matrix, int i, int j) { var minorMatrix = new RealMatrix(matrix.RowCount - 1, matrix.ColumnCount - 1); int row = -1; int column = -1; for (int k = 0; k < matrix.RowCount; k++) { if (k == i) { continue; } row++; for (int l = 0; l < matrix.ColumnCount; l++) { if (l == j) { continue; } column++; minorMatrix.M[row][column] = matrix.M[k][l]; } column = -1; } minorMatrix.PrintToConsole(); return(minorMatrix.GetDeterminant(isMinor: true)); }
public static RealMatrix GetInverse(this RealMatrix matrix) { if (!matrix.IsSquareMatrix) { Console.WriteLine("Non square matrices cannot be inversed."); return(null); } var identityMatrix = matrix.GetIdentityMatrix(); var newAugmentedMatrix = new RealMatrix(matrix.M, identityMatrix.M); newAugmentedMatrix.PrintToConsole(); newAugmentedMatrix.GetReducedRowEchelonForm(); return(new RealMatrix(newAugmentedMatrix.B)); }