sto scrivendo un metodo per calcolare il determinante di una matrice visto che con monodevelop sto avendo problemi ad usare matrix.Determinant...
mi sta facendo davvero impazzire, vi copio il codice:
codice:
using System;

namespace Matrix
{
    class MatrixUtilities
    {
        public static void Main(string[] args)
        {
            double[,] matrix =  {   {2,4,6,8},
                                            {1,3,5,7},
                                            {4,6,8,10},
                                            {3,5,7,9} };
            // numero di righe e di colonne                                
            int[] nRC = {4,4};
            

            double det = Determinant(matrix, nRC[0], nRC[1], 0);
            Console.Write("Determinante: " + det);

            Console.ReadLine();
        }

        // suppongo che la matrice sia quadrata
        // calcolo il determinante passando: matrice, numero di righe, numero di colonne, la colonna della sottomatrice da escludere
        public static double Determinant(double[,] matrix, int nR, int nC, int colonnaEsclusa)
        {
            double det = 0;

            if (nR == 1) // caso matrice 1x1
                det = matrix[0,0];

            if (nR == 2) // caso matrice 2x2
                det = (matrix[0,0] * matrix[1,1]) - (matrix[0,1] * matrix[1,0]);

            else // casi matrice 3x3 e maggiori
            {
                // dichiaro la sottomatrice con una riga e una colonna in meno
                double[,] tempMatrix = new double[nR - 1, nC - 1];

                // assegno i valori alla sottomatrice escludendo sempre la prima riga e una colonna
                for(int r = 1; r < nR; r++)
                {
                    for(int c = 0; c < nC; c++)
                    {
                        if(c == colonnaEsclusa)
                            c++;
                        tempMatrix[r,c] = matrix[r,c];
                    }
                }

                // moltiplico gli elementi della prima riga per i determinanti delle loro sottomatrici 
                for(int c = 0; c < nC; c++) // scorro tutta la prima riga
                    det = det + Math.Pow(-1, c) * matrix[0,c] * Determinant(tempMatrix, nR - 1, nC - 1, colonnaEsclusa + 1);
                    
            }

            return det;

        }
    }
}
questo codice genera l'errore:
" Unhandled Exception:
System.IndexOutOfRangeException: Array index is out of range.
at Matrix.MatrixUtilities.Determinant (System.Double[,] matrix, Int32 nR, Int32 nC, Int32 colonnaEsclusa) [0x00000] in <filename unknown>:0
at Matrix.MatrixUtilities.Main (System.String[] args) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.IndexOutOfRangeException: Array index is out of range.
at Matrix.MatrixUtilities.Determinant (System.Double[,] matrix, Int32 nR, Int32 nC, Int32 colonnaEsclusa) [0x00000] in <filename unknown>:0
at Matrix.MatrixUtilities.Main (System.String[] args) [0x00000] in <filename unknown>:0 "

se ho capito bene è l'indice che fuoriesce dalla matrice, ma non riesco a capire dove e perchè.
qualcuno sa come correggere questo errore?