public Matrice Multiplie(Matrice mat) { int n = this.matrice.GetLength(0); int m = mat.matrice.GetLength(1); // vérification des tailles if (n != mat.matrice.GetLength(1) || m != this.matrice.GetLength(0)) { throw new MatriceException("Nombre de lignes et de colonnes incompatibles"); } Matrice result = new Matrice(new int[n, m]); result.ParcourirMatrice((int i, int j) => { // récupérer la ligne i sur this (A) int[] lignesDeA = this.matrice.GetLine(i); // récupérer la colone j sur mat (B) int[] colonnesDeB = mat.matrice.GetColumn(j); // somme des produits ligne et colonne int cumul = 0; lignesDeA.Parcourir(k => cumul += lignesDeA[k] * colonnesDeB[k]); result[i, j] = cumul; }); return(result); }
/// <summary> /// Retourne une matrice, résultat de l'addition entre la matrice this, et celle en paramètre /// </summary> /// <param name="m">Matrice à ajouter à this</param> /// <returns>Le résultat de l'addition des deux matrice</returns> public Matrice Ajout(Matrice mat) { int m = mat.matrice.GetLength(0); int n = mat.matrice.GetLength(1); if (m != matrice.GetLength(0) || n != matrice.GetLength(1)) { throw new MatriceException("Les deux matrices doivent avoir la même taille"); } Matrice result = new Matrice(new int[m, n]); ParcourirMatrice((i, j) => result.matrice[i, j] = matrice[i, j] + mat.matrice[i, j]); return(result); }