CLASSE MATRICE

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 - 12 oct. 2005 à 08:59
freeben666 Messages postés 17 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 19 mai 2006 - 19 mai 2006 à 18:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34171-classe-matrice

freeben666 Messages postés 17 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 19 mai 2006
19 mai 2006 à 18:28
C'est vrai que ma classe est loin d'être optimisée, vu que c'est basé sur des algos pas étudiés pour les ordis mais pour les humains, mais vu que j'en connais pas d'autre et que à la base j'avais développé cette classe pour bosser sur des matrices 3x3, voir 4x4 au max....
struk1981 Messages postés 9 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 19 mai 2006 1
19 mai 2006 à 17:01
9a va, g compris mon probleme.
ENf ait, c'est un fonction recursive et donc, quand tu travails avec une matrice [12,12], ca te prend une plombe !!!!

J'en avais besoin pour résoudre un système d'equation mais finalement, j'ai utiliser le Singular Value Decomposition (SVD)
Merci
freeben666 Messages postés 17 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 19 mai 2006
19 mai 2006 à 16:01
Non rien de nouveau. En fait j'ai un peu laissé tomber le C# pour me concentrer sur le C++/SDL/OpenGL. Mais explique moi ton problème je pourrais peut-être t'aider.
struk1981 Messages postés 9 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 19 mai 2006 1
18 mai 2006 à 11:14
Hello,
aurais tu du nouveau code depuis ton dernier message???
J'ai qqu probleme avec ta methode Inverse.
Merci d'avance
freeben666 Messages postés 17 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 19 mai 2006
25 nov. 2005 à 19:54
Merci, je ne connaissais pas cette algo.
J'ai pas beaucoup touché à mon code depuis que je l'ai posté, vu qu'on a vu la diagonalisation/triangularisation y'a seulement une semaine...
pkrk_aprepa Messages postés 4 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 6 décembre 2005
25 nov. 2005 à 17:45
Salut, désolé de devoir être un peut négatif mais ta class, tu n'en feras pas grand chose tel quel.
Je m'explique :
Pour commencer, je suis plutôt d'accord avec sebmafate en ce qui concerne la différence entre méthode et propriété.

Le plus grave, c'est l'utilisation de la méthode des comatrices, si tu l'utilise sur une matrice [10,10] tu peux aller boire un café ! ! ! La complexité est de O(n !).
Utilise plutôt le pivot de gauss :
http://www.sciences.univ-nantes.fr/physique/perso/aloui/m_numeri/11syslin/11syslin.htm
Complexité O(n^2) (ou ^3 je ne sais plus).
C'est pas beaucoup plus compliquer à implémenter et la différence de rapidité est stupéfiante.
Bon courage ;-)
freeben666 Messages postés 17 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 19 mai 2006
4 nov. 2005 à 15:49
Nan j'ai jamais reussi à faire autre chose que des matrices 2x3 avec...
Enfin j'ai pas essayé longtemps..
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
4 nov. 2005 à 11:09
Pis System.Drawing.Drawing2D.Matrix ? Il est pas bien?
freeben666 Messages postés 17 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 19 mai 2006
18 oct. 2005 à 19:08
J'avais justement remarqué ça et c'est coorigé, mais je n'ai pas encore mis à jour sur le site. Je mettrait à jour une fois la doc et les commentaires finalisés, et je traque aussi les bugs dans le genre.
Merci beaucoup ;)
t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 2
18 oct. 2005 à 11:44
Salut, pour ce qui est des méthodes/propriétés je dirai que le déterminant serait plutôt une propriété mais que la transposée, l'inverse la comatrice, la matrice diagonale ... serait plutôt des méthodes.

Par contre j'ai un petit souci dans le code du calcul de l'inverse
tu écris Inverse = t_Comatrice * (1/det); et si le determinant est nul ? Je sais que ta classe inclut une proprité IsInversible mais bon si on passe outre on a un gros plantage.
freeben666 Messages postés 17 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 19 mai 2006
17 oct. 2005 à 21:50
je vois pas en quoi le calcul du déterminant serait une méthode. Pour moi le déterminant est quelque chose de propre à la matrice, qui le détermine (justement ^^), donc une propriété. Pareil pour tout le reste, du fait que ça n'agit pas sur la matrice en elle-même mais plutot que ça en retourne une nouvelle, en rapport avec certaines propriétés de la matrice d'origine, je ne considère pas ça comme une méthode. Mais j'ai peut-être mal compri la différence méthode/propriété.
t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 2
13 oct. 2005 à 08:18
Salut, c'est noté
allez une bonne note pour t'encourager
freeben666 Messages postés 17 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 19 mai 2006
12 oct. 2005 à 18:42
Merci pour vos commentaires.
J'essayerai de rajouter des fonctionnalités, mais ce n'est pas à l'ordre du jour. Pour le moment je m'occupe surtout de l'optimisation/simplification du code ( merci Sebmafate ) et de sa documentation.
Je rajouterais surement des fonction telles que les valeurs propre et la diagonalisation plus tard, d'ici un mois pas avant.

Encore merci ^^
t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 2
12 oct. 2005 à 12:48
Salut, bon code pas mal du tout
Perso j'autrai ajouté le calcul des valeurs propres, vu que tu calcul le déterminant et la trace il n'y a plus grand chose à faire.
Dans le même ordre d'idée j'aurai ajouté une propriété indiquant si la matrice est diagonalisable, et éventuellement une méthode de diagonalisation mais là c'est plus long.
Je dis tout ça parce que en robotique, les matrices de déplacement sont complexes, et donc il est plus simple de bosser avec des matrices diagonales
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
12 oct. 2005 à 08:59
Bon code... mais quelques remarques...
Tes méthodes 'Initialise' n'ont rien à faire en public... passe les en private.

Evite ce genre de syntaxe :
public bool IsCarree
{
get {
if ( this._nbLignes == this._nbColonnes ) { return true; }
else { return false; }
}
}

pour ceci :
public bool IsCarre {
get { return this._nbLignes == this._nbColonnes; }
}
tout aussi lisible.

enfin, pour moi le calcul du déterminant, la transposition, l'inverse des matrices ne sont pas des propriétés... mais plutot des méthodes.

Bon courage pour la suite.
Rejoignez-nous