Exemplo n.º 1
0
        public static Matrice2D operator *(Matrice2D p_matrice1, Matrice2D p_matrice2)
        {
            if (p_matrice1.NombreDeColonnes != p_matrice2.NombreDeLignes)
            {
                throw new DimensionsNonConcordantesException();
            }

            Matrice2D resultat = new Matrice2D(p_matrice1.NombreDeLignes, p_matrice2.NombreDeColonnes);

            for (int indiceLigneResultat = 0; indiceLigneResultat < resultat.NombreDeLignes; indiceLigneResultat++)
            {
                for (int indiceColonneResultat = 0; indiceColonneResultat < resultat.NombreDeColonnes; indiceColonneResultat++)
                {
                    float valeur = 0.0f;
                    for (int indiceColonneLigne = 0; indiceColonneLigne < p_matrice1.NombreDeColonnes; indiceColonneLigne++)
                    {
                        valeur += p_matrice1[indiceLigneResultat, indiceColonneLigne] * p_matrice2[indiceColonneLigne, indiceColonneResultat];
                    }

                    resultat[indiceLigneResultat, indiceColonneResultat] = valeur;
                }
            }

            return(resultat);
        }
Exemplo n.º 2
0
        public static Matrice2D operator *(Matrice2D p_matrice1, float p_valeur)
        {
            Matrice2D resultat = new Matrice2D(p_matrice1.NombreDeLignes, p_matrice1.NombreDeColonnes);

            for (int indiceLigneResultat = 0; indiceLigneResultat < resultat.NombreDeLignes; indiceLigneResultat++)
            {
                for (int indiceColonneResultat = 0; indiceColonneResultat < resultat.NombreDeColonnes; indiceColonneResultat++)
                {
                    resultat[indiceLigneResultat, indiceColonneResultat] = p_matrice1[indiceLigneResultat, indiceColonneResultat] * p_valeur;
                }
            }

            return(resultat);
        }
Exemplo n.º 3
0
        public static Matrice2D Identite(int p_dimension)
        {
            if (p_dimension < 1)
            {
                throw new ArgumentOutOfRangeException(nameof(p_dimension));
            }

            Matrice2D matrice2D = new Matrice2D(p_dimension, p_dimension);

            for (int indiceLigneColonne = 0; indiceLigneColonne < p_dimension; indiceLigneColonne++)
            {
                matrice2D[indiceLigneColonne, indiceLigneColonne] = 1.0f;
            }

            return(matrice2D);
        }
Exemplo n.º 4
0
        public override bool Equals(object p_obj)
        {
            Matrice2D convMat2d = p_obj as Matrice2D;
            bool      egaux     =
                convMat2d != null &&
                this.NombreDeLignes == convMat2d.NombreDeLignes &&
                this.NombreDeColonnes == convMat2d.NombreDeColonnes
            ;

            for (int indiceLigne = 0; egaux && indiceLigne < this.NombreDeLignes; indiceLigne++)
            {
                for (int indiceColonne = 0; egaux && indiceColonne < this.NombreDeColonnes; indiceColonne++)
                {
                    // ici nous pouvons nous passer du si car les conditions des boucles inclus egaux
                    egaux = this[indiceLigne, indiceColonne] == convMat2d[indiceLigne, indiceColonne];
                }
            }

            return(egaux);
        }
Exemplo n.º 5
0
        public static Matrice2D operator -(Matrice2D p_matrice1, Matrice2D p_matrice2)
        {
            if (p_matrice1.NombreDeColonnes != p_matrice2.NombreDeColonnes ||
                p_matrice1.NombreDeLignes != p_matrice2.NombreDeLignes)
            {
                throw new DimensionsNonConcordantesException();
            }

            Matrice2D resultat = new Matrice2D(p_matrice1.NombreDeLignes, p_matrice1.NombreDeColonnes);

            for (int indiceLigneResultat = 0; indiceLigneResultat < resultat.NombreDeLignes; indiceLigneResultat++)
            {
                for (int indiceColonneResultat = 0; indiceColonneResultat < resultat.NombreDeColonnes; indiceColonneResultat++)
                {
                    resultat[indiceLigneResultat, indiceColonneResultat] = p_matrice1[indiceLigneResultat, indiceColonneResultat] - p_matrice2[indiceLigneResultat, indiceColonneResultat];
                }
            }

            return(resultat);
        }