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

Mathématiques Discussion :

probleme d'une matrice 100000*4


Sujet :

Mathématiques

  1. #21
    Membre habitué Avatar de abidineb
    Inscrit en
    Septembre 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 298
    Points : 132
    Points
    132
    Par défaut
    salut
    je vais réessayer maintenant
    merci de votre patience
    cordialement

  2. #22
    Membre habitué Avatar de abidineb
    Inscrit en
    Septembre 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 298
    Points : 132
    Points
    132
    Par défaut
    Salut M.Dut
    Je ne sais pas quoi dire, et ben parfait, ça marche enfin,
    Matlab 7.0:
    1.6592s
    0.8410s
    0.8312s
    0.0872s

    Matlab7.1:
    1.9409s
    0.9713s
    0.9818s
    0.0828s

    Encore une fois, je ne sais pas quoi dire,gros merci M. , et je vous souhaite une bonne continuation et de réussite dans votre travail.
    Je vais vous dire pourquoi ça n'as pas marche, j'ai copie le code directement, sans faire une fonction .m file pour être plus rapide, et quand j'ai crée la fonction, ça a marche, je comprend pas pourquoi cette difference??, je n'aurai jamais pense a ça; je m'excuse de ne pas le faire au début.

    Autre petit conseil que je vous demande, vous avez vu les résultats mentionnes la haut, me conseillez vous de travailler avec MATLAB7.0? pourtant la version 7.1 est plus récente mais donne pas aussi bon résultat que la version 7.0.
    Problème résolu alors

  3. #23
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 318
    Points : 52 958
    Points
    52 958
    Par défaut
    Citation Envoyé par abidineb Voir le message
    Autre petit conseil que je vous demande, vous avez vu les résultats mentionnes la haut, me conseillez vous de travailler avec MATLAB7.0? pourtant la version 7.1 est plus récente mais donne pas aussi bon résultat que la version 7.0.
    A priori, pour ce type de calcul, il n'y a pas beaucoup de différence entre les deux versions...

  4. #24
    Membre habitué Avatar de abidineb
    Inscrit en
    Septembre 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 298
    Points : 132
    Points
    132
    Par défaut
    Salut M.Dut
    Mais comme même je ne comprends pas pourquoi un exécutant le programme .m file(test.m) l'exécution se déroule plus rapidement qu'en copiant directement le code dans le window de matlab
    merci

  5. #25
    Membre habitué Avatar de abidineb
    Inscrit en
    Septembre 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 298
    Points : 132
    Points
    132
    Par défaut
    Salut
    Merci pour votre information supplémentaire, et pour votre confirmation, j'ai compris grâce a vous que 100% le problème viens du mon programme, et maintenant ça marche a merveille.
    merci
    juste une question en laissant le micro auparavant 4 jours allume sans l'éteindre, est ce que ceci ça n'as pas de risque sur mon pc?

  6. #26
    Membre habitué Avatar de abidineb
    Inscrit en
    Septembre 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 298
    Points : 132
    Points
    132
    Par défaut
    Bonjour
    Je voudrai revenir au problème car si j'augmente N=10000 (ou au lieu de 4 variables on a 100 par exemple); l'algorithme ralenti d'une façon extravagante, donc est ce qu'il n'y pas moyen ou même une idée, pour améliorer le temps d'exécution.
    merci pour votre contribution
    cordialement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    tic
    for i=1:N
        for j=i+1:N
            BBBB = exp(-((X(i,1)-X(j,1))^2 + ...
                (X(i,2)-X(j,2))^2 + ...
                (X(i,3)-X(j,3))^2 + ...
                (X(i,4)-X(j,4))^2));
        end
    end
    toc

  7. #27
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    déjà ne pas faire calculer d'adresses inutiles...


    Remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for i=1:N
        for j=i+1:N
            BBBB = exp(-((X(i,1)-X(j,1))^2 + ...
                (X(i,2)-X(j,2))^2 + ...
                (X(i,3)-X(j,3))^2 + ...
                (X(i,4)-X(j,4))^2));
        end
    end
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for i=1:N
        X1 = X(i,1);
        X2 = X(i,2);
        X3 = X(i,3);
        X4 = X(i,4);
     
        for j=i+1:N
            BBBB = exp(-((X1-X(j,1))^2 + ...
                (X2-X(j,2))^2 + ...
                (X3-X(j,3))^2 + ...
                (X4-X(j,4))^2));
        end
    end
    tu économises déjà 4*N calculs d'adresse inutiles à chaque boucle i..

    D'autre part, tes expressions m'ont tout l'air symétriques...

    Il y a donc quelque chose (sans doute à peu près la moitié) que tu n'as pas à calculer mais juste à trouver le bon indice pour le récupérer..

  8. #28
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Matlab est un logiciel magnifique, mais il ne faut pas le mettre à toutes les sauces. A mon avis, quand, comme toi, on est obligé de résoudre un problème aussi monstrueux que le tien, et qu'on a pas la possibilité d'en réduire la taille, il convient d'utiliser un outil mieux adapté parce que plus proche du hardware, c'est-à-dire le C ou le Fortran, voire même l'assembleur.
    Jean-Marc Blanc

  9. #29
    Membre habitué Avatar de abidineb
    Inscrit en
    Septembre 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 298
    Points : 132
    Points
    132
    Par défaut
    Bonjour Jean-Marc Blanc

    Merci beaucoup, mais oui bien sur je sais qu'effectivement avec le C ou C++ c'est mieux adapte a mon problème, mais je doit utiliser matlab c'est exige de la part de mon directeur.

    merci encore une fois, mais est ce qu'il n'y pas vraiment une autre astuce pour le rendre beaucoup plus rapide.
    Cordialement

  10. #30
    Membre habitué Avatar de abidineb
    Inscrit en
    Septembre 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 298
    Points : 132
    Points
    132
    Par défaut
    Merci Souviron34 pour ton idée concernant l'adressage qui n'était pas utile, mais il n' y pas une grande amélioration, pour l'astuce de la symétrie je l'ai utilise, elle est mentionee dans le code, j'ai commence a j=i+1.....

    Encore si c'est j'ai 100 variable
    comment je vais faire pour l'adressage, je doit écrire 100 fois?? mais est ce que vraiment y a pas de solution pour le rendre plus rapide. merci en attendant de votre précieuse réponse.
    Cordialement

  11. #31
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    mais je doit utiliser matlab c'est exige de la part de mon directeur.
    Il n'est pas interdit de lui demander pourquoi. Comme professeur, j'ai toujours estimé que je devais être capable de justifier mes exigences; il en va de même pour les directeurs. C'est une question de respect pour les étudiants ou les subordonnés.
    Jean-Marc Blanc

  12. #32
    Membre habitué Avatar de abidineb
    Inscrit en
    Septembre 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 298
    Points : 132
    Points
    132
    Par défaut
    Bonjour

    Parce que le problème est que l'astuce dans Matlab pour rendre cet algorithme rapide existe, juste je ne sais pas comment

    Merci

  13. #33
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 318
    Points : 52 958
    Points
    52 958
    Par défaut
    Je ne vois pas dut tout à quoi servent les modifications que tu as apportées...

    Sinon, comme Jean-Marc, je pense que MATLAB atteint ses limites ici. La taille du problème empêche la vectorisation du code (risque de Out of Memory élevé)

    Je ne vois que deux solutions :

    • paralléliser le calcul (les termes à l'intérieur de l'exponentielle sont indépendants)
    • passer par des fichiers MEX (C ou Fortan)


    Mais j'ai l'impression que, depuis le début, tu ne nous montre pas la vraie boucle que tu as à dans ton programme, si ?

  14. #34
    Membre habitué Avatar de abidineb
    Inscrit en
    Septembre 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 298
    Points : 132
    Points
    132
    Par défaut
    Bonjour M.Dut

    T'as tout a fait raison, parce que ce n'etait pas indispensable d'ecrire tout le code puisque j'ai ecris juste ceux qui retarde le déroulement, saisi??.

    Tu dit paralléliser le calcul (les termes à l'intérieur de l'exponentielle sont indépendants)? ça veut dire écrire une deuxième fonction pour calcul des exponentielle ou tu veut dire autre chose???

    Merci en l'attente de ta réponse.

    Cordialement

  15. #35
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    mais je doit utiliser matlab c'est exige de la part de mon directeur
    Un marteau est un excellent outil pour planter des clous; une brouette est un excellent outil pour transporter du sable. Mais essaie de planter des clous avec une brouette ou de transporter du sable avec un marteau.
    Si tu veux que ton travail avance, commence par montrer ce message à ton directeur.
    Jean-Marc Blanc

  16. #36
    Membre habitué Avatar de abidineb
    Inscrit en
    Septembre 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 298
    Points : 132
    Points
    132
    Par défaut
    Merci comme même. Je trouverai la solution, et je la posterai.
    Cordialement

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

Discussions similaires

  1. Probleme sur une matrice serpentin .. ou est donc l'erreur?
    Par Théophane dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/09/2012, 20h10
  2. probleme sur pointer d'une matrice 3D
    Par djaval0221 dans le forum C++
    Réponses: 2
    Dernier message: 26/05/2008, 21h39
  3. probleme d'affichage d'une matrice
    Par soujava dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 17/04/2008, 16h17
  4. inversion d'une matrice, probleme algebrique
    Par le_voisin dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 11/09/2006, 19h39
  5. [LG] Problème pour afficher une matrice
    Par phoebee dans le forum Langage
    Réponses: 4
    Dernier message: 11/08/2005, 22h41

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