Exemplo n.º 1
0
        //méthode de calcul du determinant
        private static double CalculDeterminant(Matrice matrice, int ordre)
        {
            {
                double  determinant = 0;
                Matrice temp        = new Matrice(new double[ordre, ordre]);

                if (ordre == 1)
                {
                    return(matrice[0, 0]);
                }
                else if (ordre == 2)
                {
                    determinant = (matrice[0, 0] * matrice[1, 1] - matrice[0, 1] * matrice[1, 0]);
                    return(determinant);
                }

                //pour matrice d'ordre > 2
                else
                {
                    for (int i = 0; i < ordre; i++)
                    {
                        Matrice mineure = new Matrice(new double[ordre - 1, ordre - 1]);
                        mineure = matrice.Mineure(0, i);
                        if (matrice.SigneComplement(1, i + 1) == true)
                        {
                            determinant += matrice[0, i] * CalculDeterminant(mineure, ordre - 1);
                        }
                        else
                        {
                            determinant -= matrice[0, i] * CalculDeterminant(mineure, ordre - 1);
                        }
                    }
                    return(determinant);
                }
            }
        }
Exemplo n.º 2
0
        //méthode de calcul du determinant
        private static double CalculDeterminant(Matrice matrice, int ordre)
        {
            {
                //int p, h, k, i, j;
                double  determinant = 0;
                Matrice temp        = new Matrice(new double[ordre, ordre]);

                if (ordre == 1)
                {
                    return(matrice[0, 0]);
                }
                else if (ordre == 2)
                {
                    determinant = (matrice[0, 0] * matrice[1, 1] - matrice[0, 1] * matrice[1, 0]);
                    Console.WriteLine(determinant);
                    return(determinant);
                }

                //pour matrice d'ordre > 2
                else
                {
                    for (int i = 0; i < ordre; i++)
                    {
                        int     ordreTmp = ordre - 1;
                        Matrice mineure  = new Matrice(new double[ordreTmp, ordreTmp]);
                        mineure = matrice.Mineure(0, i);
                        Console.WriteLine(mineure.AfficheMatrice());
                        if (matrice.SigneComplement(1, i + 1) == true)
                        {
                            determinant += matrice[0, i] * CalculDeterminant(mineure, ordreTmp);
                        }
                        else
                        {
                            determinant -= matrice[0, i] * CalculDeterminant(mineure, ordreTmp);
                        }
                    }
                    //for (p = 0; p < ordre; p++)
                    //{
                    //    h = 0;
                    //    k = 0;
                    //    for (i = 1; i < ordre; i++)
                    //    {
                    //        for (j = 0; j < ordre; j++)
                    //        {
                    //            if (j == p)
                    //            {
                    //                continue;
                    //            }
                    //            temp[h, k] = matrice[i, j];
                    //            k++;
                    //            if (k == ordre - 1)
                    //            {
                    //                h++;
                    //                k = 0;
                    //            }
                    //        }
                    //    }
                    //    determinant = determinant + matrice[0, p] * Math.Pow(-1, p) * CalculDeterminant(temp, ordre - 1);
                    //}
                    Console.WriteLine("" + ordre);
                    return(determinant);
                }
            }
        }