Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace ConsoleCoreApp
- {
- public static class Determinant
- {
- public static Int64 FindDeterminant(int[,] matrix)
- {
- int order = matrix.GetLength(0);
- if (order == 1) return matrix[0, 0];
- if (order == 2) return matrix[0, 0] * matrix[1, 1] - matrix[0, 1] * matrix[1, 0];
- Int64 det = 0;
- for (int j = 0; j < order; j++)
- det += matrix[0, j] * FindAlgebraicAddition(0, j, matrix);
- return det;
- }
- public static Int64 FindAlgebraicAddition(int i, int j, int[,] matrix)
- {
- if ((i + j) % 2 == 0) return FindMinor(i, j, matrix);
- else return -FindMinor(i, j, matrix);
- }
- public static Int64 FindMinor(int i, int j, int[,] matrix)
- {
- int orderMainMatrix = matrix.GetLength(0);
- var subMatrix = new int[orderMainMatrix - 1, orderMainMatrix - 1];
- var tempArray = new int[subMatrix.Length];
- int tempIndex = 0;
- for (int k = 0; k < orderMainMatrix; k++)
- {
- for (int m = 0; m < orderMainMatrix; m++)
- {
- if (i != k && j != m)
- {
- tempArray[tempIndex] = matrix[k, m];
- tempIndex++;
- }
- }
- }
- tempIndex = 0;
- for (int k = 0; k < orderMainMatrix - 1; k++)
- {
- for (int m = 0; m < orderMainMatrix - 1; m++)
- {
- subMatrix[k, m] = tempArray[tempIndex];
- tempIndex++;
- }
- }
- return FindDeterminant(subMatrix);
- }
- public static void Main()
- {
- var matrix = new int[,] {
- {-2, 1, 3, 2},
- {3, 0, -1, 2},
- {-5, 2, 3, 0},
- {4, -1, 2, -3}
- };
- Console.WriteLine(FindDeterminant(matrix));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement