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