Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.08 KB | None | 0 0
  1. using System;
  2.  
  3. namespace ConsoleCoreApp
  4. {
  5.     public static class Determinant
  6.     {
  7.         public static Int64 FindDeterminant(int[,] matrix)
  8.         {
  9.             int order = matrix.GetLength(0);
  10.             if (order == 1) return matrix[0, 0];
  11.             if (order == 2) return matrix[0, 0] * matrix[1, 1] - matrix[0, 1] * matrix[1, 0];
  12.  
  13.             Int64 det = 0;
  14.             for (int j = 0; j < order; j++)
  15.                 det += matrix[0, j] * FindAlgebraicAddition(0, j, matrix);
  16.  
  17.             return det;
  18.         }
  19.  
  20.         public static Int64 FindAlgebraicAddition(int i, int j, int[,] matrix)
  21.         {
  22.             if ((i + j) % 2 == 0) return FindMinor(i, j, matrix);
  23.             else return -FindMinor(i, j, matrix);
  24.         }
  25.  
  26.         public static Int64 FindMinor(int i, int j, int[,] matrix)
  27.         {
  28.             int orderMainMatrix = matrix.GetLength(0);
  29.             var subMatrix = new int[orderMainMatrix - 1, orderMainMatrix - 1];
  30.             var tempArray = new int[subMatrix.Length];
  31.             int tempIndex = 0;
  32.             for (int k = 0; k < orderMainMatrix; k++)
  33.             {
  34.                 for (int m = 0; m < orderMainMatrix; m++)
  35.                 {
  36.                     if (i != k && j != m)
  37.                     {
  38.                         tempArray[tempIndex] = matrix[k, m];
  39.                         tempIndex++;
  40.                     }
  41.                 }
  42.             }
  43.  
  44.             tempIndex = 0;
  45.             for (int k = 0; k < orderMainMatrix - 1; k++)
  46.             {
  47.                 for (int m = 0; m < orderMainMatrix - 1; m++)
  48.                 {
  49.                     subMatrix[k, m] = tempArray[tempIndex];
  50.                     tempIndex++;
  51.                 }
  52.             }
  53.  
  54.             return FindDeterminant(subMatrix);
  55.         }
  56.        
  57.         public static void Main()
  58.         {
  59.             var matrix = new int[,] {
  60.             {-2, 1, 3, 2},
  61.             {3, 0, -1, 2},
  62.             {-5, 2, 3, 0},
  63.             {4, -1, 2, -3}
  64.             };
  65.            
  66.             Console.WriteLine(FindDeterminant(matrix));
  67.         }
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement