示例#1
0
        //Inverse la matrice avec l'affichage en sortie.
        public Matrice Inverse(out List <String> display)
        {
            if (IsInversible())
            {
                Matrice inverse;
                display = new List <string>();
                Matrice LPrime = InverseL();
                Matrice UPrime = InverseU();

                inverse = UPrime.Product(LPrime);

                //Permute les colonnes si il y a eu des permutation de lignes.
                for (int i = Swaps.GetLength(0) - 1; i >= 0; i--)
                {
                    if (Swaps[i, 0] != -1)
                    {
                        inverse.SwapCol(Swaps[i, 0], Swaps[i, 1]);
                        display.Add("Permutation de colonne : " + (Swaps[i, 0] + 1) + " <->" + (Swaps[i, 1] + 1));
                    }
                }
                return(inverse);
            }
            else
            {
                throw new Exception("La matrice n'est pas inversible : déterminant = 0");
            }
        }
示例#2
0
        //Inverse la matrice.
        public void Inverse()
        {
            if (IsInversible())
            {
                Matrice LPrime = InverseL();
                Matrice UPrime = InverseU();

                this.values = (UPrime.Product(LPrime)).values;

                //Permute les colonnes si il y a eu des permutation de lignes.
                for (int i = 0; i < Swaps.GetLength(0); i++)
                {
                    if (Swaps[i, 0] != -1)
                    {
                        SwapCol(Swaps[i, 0], Swaps[i, 1]);
                    }
                }
            }
            else
            {
                throw new Exception("La matrice n'est pas inversible : déterminant = 0");
            }
        }