public Matrice Inversa() { int n = a.GetLength(0); Matrice C = new Matrice(n, n); if (n != a.GetLength(1)) { Console.WriteLine("Doar matricile patratice pot avea inversa"); return(C); } CalculDeterminant(); if (determinant != 0) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { Matrice A = new Matrice(n - 1, n - 1); for (int k = 0; k < n - 1; k++) { for (int l = 0; l < n - 1; l++) { if (k >= i && l >= j) { A.a[l, k] = a[k + 1, l + 1]; } else if (k >= i && l < j) { A.a[l, k] = a[k + 1, l]; } else if (k < 1 && l >= j) { A.a[l, k] = a[k, l + 1]; } else { A.a[l, k] = a[k, l]; } } } A.Afisare(); A.CalculDeterminant(); C.a[i, j] = (int)Math.Pow(-1, i + j) * A.determinant; Console.WriteLine(C.a[i, j]); } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { C.a[i, j] *= 1f / determinant; } } } return(C); }
static void Main(string[] args) { Matrice A = new Matrice(3, 3); Matrice B = new Matrice(3, 3); A.Afisare(); B.Afisare(); Matrice C = new Matrice(3, 3); C = A.Adunare(B); C.Afisare(); C = A.Scadere(B); C.Afisare(); C = A.Inmultire(B); C.Afisare(); C = A.Putere(2); C.Afisare(); C = B.Inversa(); C.Afisare(); Console.ReadKey(); }