IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

[Matrices] Comment calculer le Déterminant d'une matrice 4x4


Sujet :

Algorithmes et structures de données

  1. #61
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Mais tu as infiniment plus de divisions que DrTopos...

  2. #62
    Membre averti Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Points : 417
    Points
    417
    Par défaut
    Oui mais j'ai moins de multiplications.... Il reste à voir si le temps qui est gagné sur les multiplications n'est pas perdu sur les divisions, c'est vrai.
    Première grosse démo en construction :
    http://bitbucket.org/rafy/exo2/

  3. #63
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Points : 230
    Points
    230
    Par défaut
    En plus du temps, tes divisions induiront inévitablement des arrondis qui peuvent produire des erreurs monstrueuses. Fais confiance à DrTopos.

  4. #64
    Membre averti Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Points : 417
    Points
    417
    Par défaut
    Je ne remettais du tout en cause ce que disais DrTopos, j'essayai juste de défendre un point de vue différent.
    De toute façon ça revient au même, car lui il stocke le 1/a11 et l'applique pour chaque terme de la ligne, alors que moi je stock le a21/a11 et l'applique pour chaque terme de la ligne...
    C'est pas si différent...
    Pour ce qui est des erreurs je l'ai déjà dis il faut trier les lignes, regarder la ligne avec le plus petit pivot, on divisera alors par un nombre plus petit on aura moins d'erreur, que si on prend un pivot au pif.
    Première grosse démo en construction :
    http://bitbucket.org/rafy/exo2/

  5. #65
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Points : 230
    Points
    230
    Par défaut
    Je ne vois pas de division chez DrTopos, et c'est justement ça la force de sa méthode.

    Car il y a des matrices où, quels que soient le pivot que tu choisis, tu obtiens un résultat où l'erreur est énorme (en fait, aussi grande qu'on veut. Si je me rappelle bien, ça s'appelle des matrices mal conditionnées).

  6. #66
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 417
    Points : 372
    Points
    372
    Par défaut
    Dans la méthode du pivot, le choix du pivot est important évidemment. Il me semble toutefois que le meilleur choix consiste à prendre le coefficient dont la valeur absolue est la plus proche possible de 1, et non pas le plus petit ou le plus grand. En effet, 1 (ou -1) est un pivot idéal, car il ne provoque pas de division. Diviser par quelquechose de proche de 1 provoque moins de variation et donc moins de dégats dans la précision. De toute façon je crois que la situation est symétrique en ce qui concerne zéro et l'infini.

  7. #67
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Points : 342
    Points
    342
    Par défaut
    Citation Envoyé par DrTopos
    En effet, 1 (ou -1) est un pivot idéal, car il ne provoque pas de division.
    C'est en lisant ce genre de remarques, pleines de bon sens mais auxquelles je n'ai pas pensé, que je me rends compte à quel point j'ai perdu depuis mes études de maths... Ah làlà, quelle misère !

  8. #68
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 417
    Points : 372
    Points
    372
    Par défaut
    Citation Envoyé par alveric
    ... je me rends compte à quel point j'ai perdu depuis mes études de maths... Ah làlà, quelle misère !
    Je ne crois pas que le problème soit tellement lié aux maths. C'est plutôt une façon de penser en général, quand il s'agit de disciplines ou intervient une certaine dose de formalisme (math, info, physique, etc...). Notre intuition peut être guidée soit par les règles formelles (souvent tout simplement des règles syntaxiques, ou des règles de calcul), soit par des considérations sémantiques (par exemple géométriques, visuelles, expérimentales, etc...). Je crois qu'on a trop tendance à n'intuiter que sur des bases sémantiques, alors qu'une intuition plus formelle donne souvent de meilleures idées. C'est le cas de l'exemple, puisque le fait que diviser par 1 consiste à ne rien faire est une règle de calcul.

    Combien ai-je vu d'étudiants restant secs sur des démonstrations, parce qu'ils essayaient d'avoir des visions géométriques du problème (souvent érronées d'ailleurs) , alors qu'en fait l'application de règles simples et systématiques (relatives par exemple à l'usage des quantificateurs) donne tout de suite la solution. Je crois qu'il faut se méfier des modèles mentaux, surtout visuels, pour se concentrer plus sur les méthodes.

  9. #69
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Mais en informatique, si on utilise des flottants, diviser par 1.04 ou par 2.08 donnera la même précision, tout se passe "modulo" 2

  10. #70
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 417
    Points : 372
    Points
    372
    Par défaut
    Citation Envoyé par Miles
    Mais en informatique, si on utilise des flottants, diviser par 1.04 ou par 2.08 donnera la même précision, tout se passe "modulo" 2
    Tu sous-entends donc que diviser par 2 est une opération qui ne peut pas provoquer de perte de données. En fait la division par 2, dans la représentation par mantisse et exposant, consiste à soustraire 1 à l'exposant. Or l'exposant étant stocké sur un nombre fini de bits, il arrive un moment où ce n'est plus possible d'où risque de perte de données quand même. Evidemment, il faut aller très loin, puisque dans un nombre sur 64 bits, l'exposant dispose d'un nombre confortable de bits.

    Ceci dit, l'expression ``tout se passe modulo 2'' n'est pas adéquate ici. Ce qui est sûr est que le calcul sur des entiers de 32 bits (type int ou long en C) se fait modulo 2^32 (et non pas modulo 2; heureusement d'ailleurs). Parler de ``modulo'' pour des flottants n'a pas à ma connaissance de définition précise.

  11. #71
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est pour cette raison que jai mis des guillemets ce n'est pas un vrai modulo, mais un modulo sur l'erreur de calcul, on peut dire. Jusqu'à ce qu'on arrive à des nombres très grands ou des nombres très petits où ça plante complètement !

+ Répondre à la discussion
Cette discussion est résolue.
Page 4 sur 4 PremièrePremière 1234

Discussions similaires

  1. [Lazarus] Calcul du déterminant d'une matrice
    Par ElodyE dans le forum Lazarus
    Réponses: 3
    Dernier message: 26/01/2015, 09h22
  2. Calculer le determinant d'une matrice carrée
    Par NThierry dans le forum C
    Réponses: 15
    Dernier message: 27/08/2006, 11h31
  3. Inversion et déterminant d'une matrice
    Par coline dans le forum Algorithmes et structures de données
    Réponses: 16
    Dernier message: 23/06/2006, 09h01
  4. calcul du determinant d'une matrice
    Par gautret dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 17/03/2006, 21h30
  5. [Débutant] Calculer le déterminant d'une matrice
    Par v4np13 dans le forum Mathématiques
    Réponses: 7
    Dernier message: 30/05/2005, 17h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo