예제 #1
0
        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);
        }
예제 #2
0
        /// <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);
        }