//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"); } }
//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"); } }