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 :

Méthode d'interpolation a partir d"une série de valeurs


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    on cherche à minimiser sigma ( Yobs. - Ymodel)^2 tout le travail consiste à faire varier correctement les n paramères du modèle afin de converger. J'utilise moi même cet algorithme depuis l'époque de mon doctorat où je l'ai développé ( en fortran à cette époque ) pour des affinements de structures cristallines à partir de spectres de diffraction RX et de neutrons. Les intensités diffractées font appels entre autres aux modues des facteurs de structures, et on est rapidement en présence de centaines de paramètres à fitter dans leurs ensembe. Je lai aussi utilisé sur des spectres Mössbauer, des lois d'approches à saturation en magnétisme, de l'imagerie médicale, ...
    Je pense qu'il est assez sur quant à l'approche. Par contre n'étant pas informaticien je ne pourrais garantir qu'il soit optimal du point de vue de ses divers implémentations ( j'ai proposé Pascal et C, l'initiateur de ce débat en a aussi fait une macro exel VB qui fonctionne - félicitations - mais dont je ne puis juger du degré d'optiomisation
    J'entends par optimisation: temps de calcul, choix automatic du meilleur codage pour eviter under/over flow, mémoire occupée, espace sur la stack, ...
    Je remercie d'avence toutes remarques et suggestions car j'utilise toujours ce code en maintes occasions.

  2. #2
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    OK, je vois Mais je n'avais jamais entendu parlé de calcul variationnel, j'ai l'habitude plutôt des méthodes classiques comme les dérivées de la méthode de Newton

  3. #3
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    Pour information il existe un EXCELLENT "tool kit" du nom de Numerical Recipes.
    On peut acheter un livre d'accompagnement ( + de 1000 pages ! ) de la + grande valeur. Il est à mon avis de + grand interet que le CD. Le CD permet de programmer rapidement en C ou C++, le livre, avec un peu de temps, de comprendre!
    "Numerical Recipes in C++" The art of scientific computing 2nd edition cambridge university press.
    ISBN 0-521-75033-4
    Ce livre achetable sur le WEB. Prix de l'ordre de 100$ à vérifier mais son rapport qualité prix est infiniment supérieur à celui de bien d'autres. Par ailleurs son titre est trompeur: on y trouve bien des bases mathématiques sérieuses pour l'ensemble des algorithmes décrits.
    Parmi des centaines de problèmes, il y est décrit de nombreuses méthodes de moindres carrés ( chap 15 pages 661 à 711 )
    La Méthode dont j'ai fourni 1 source code s'inspire de la méthode Levenberg-Marquardt dont on trouve une présentation exaustive page 688 à 693

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Par défaut
    On peut aussi le télcharger chapitre par chapitre sur le site de l'éditeur. Mais c'est un tel régal qu'il vaut l'achat.

  5. #5
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    BRAVO!
    C'est une bible! et j'en félicite les auteurs. Il y a là une maitrise tout à fait certaine et qui mérite un grand respect.

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par j.p.mignot
    Pour information il existe un EXCELLENT "tool kit" du nom de Numerical Recipes.
    Il y a une revue de ce livre sur le site de l'ACCU qui met un bémol... J'espère que le lien est permanent: http://www.accu.org/cgi-bin/accu/rvo...&file=n003134a

  7. #7
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    Je ne connaissais pas cet article qui semble du plus garnd interet. Ma réaction à chaud sur la conclusion
    "I would recommend this book for its coverage of numerical algorithms while issuing strong caveats on source code quality. However I most strongly recommend that purchasers of this book be willing to completely re-implement the code from basics both for IPR reasons and for quality."
    En fait, je ne me sens pas directement concerné. En effet dans la totalité des cas où j'ai eu à utiliser NR, j'ai avant tout étudié la méthodologie et l'argumentaion qui l'accompagnait. Leurs sources codes m'a quelques fois aidé à m'orienter mais j'ai chaque fois réécrit le code dans le cadre de mes applications. La méthodologie, elle, n'est pas sujet à liscences - surtout si elle est du domaine publique -
    J'ai à prioris une meilleures appréciation de NR sur la maitrise et la vue globales des algorithmes que sur les implémenttaions qu'ils proposent ( commentaires pour Delphi/Pascal que je connais assez bien et pas pour C++ que j'utilise sans plus )

    Il n'en reste pas moins vrai que je vai étudier plus en détail cet article qui - si ce n'est du point de vue scientifique - du point de vuu légal et commercial peut être du + grand intérêt

    Merci!

  8. #8
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par j.p.mignot
    Pour information il existe un EXCELLENT "tool kit" du nom de Numerical Recipes.
    Parmi des centaines de problèmes, il y est décrit de nombreuses méthodes de moindres carrés ( chap 15 pages 661 à 711 )
    La Méthode dont j'ai fourni 1 source code s'inspire de la méthode Levenberg-Marquardt dont on trouve une présentation exaustive page 688 à 693
    Au niveau algorithmique, il présente des techniques de base, c'est vrai, mais anciennes tout de même, enfin c'est mon avis ! En plus le code qu'il donne est de très mauvaise qualité, sans aucune explication, rien.

    Levenberg-Marquardt > C'est un affinage sur le mu que tu as dans ta version ? Tu le mets à jour de quelle manière ? - c'est surtout ça qui est intéressant je trouve -

  9. #9
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    Je vous serais grés d'expliciter un peu plus votre définition de µ dans votre mail. Je ne saurais donner suite à votre remarque sans cela!
    J'ai utilisé les articles de NR aibsi que ceux, après recherche bibiliographique, des références citées - ou implicites -
    Miantenant je n'ai pas la prétention d'affirmer que se soit la "méthode absolue" elle m'a permi de résoudre des affinement de cristallographie ( RX, Neutrons ) de trouver des solutions à mes spectres Mössbauer et mes courbes magnétiques lors de mes études. Depuis j'utilise le même type d'algorithme pour de la reconnaissance vocale, de la reconnaissance d'écriture ...
    Si vous avez une approche + éfficace - et que vous la mettiez à disposition- je serais le 1er à vous en être reconnaissant.

  10. #10
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Ah, pardon
    Le µ est la constante ajoutée à la diagonale de la matrice du hessien dans la minimisation. La méthode de base consiste à prendre un µ constant, mais plusieurs raffinements peuvent être effectués surtout près de la fin de la convergence afin d'améliorer celle-ci - avec un µ, on a plutôt une version descente du gradient, tandis qu'un µ petit implique une méthode plutôt de Gauss-Newton -

  11. #11
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    Sorry, j'ai l'habitude d'appeler cette constante Lambda!. J'utilise un µ "adaptatif". J'essaie d'accroitre µ mais si on "tombe" dans un minimum j'essaie de relaxer les contraintes afin d'assayer d'echapper + un faux minimum
    tentative parfoi déséspéréE si les coef de départ sont vraiment farfelus ou si on libère trop de variables peu significatives dès le départ !!!

  12. #12
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Ah, OK
    C'est la méthode de NR ou c'est une autre ?

  13. #13
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    Il s'aggit du calcul de la matrice du Hessian simplifiée ( c.a.d sans les dérivées secondes ) Cette hypothèse est valide si on part d'1 jeu de paramètres proches de la réalité et tant que le système converge car leurs coef dépend de la différence entre y obs et Y model. Par contre de temps en temps mon algorithme diverge et je me demande si cette simplification n'en est pas la cause. En effet au départ on peut être loin de la solution, avoir des delta y assez grands quant à supposer que y'' soit intrinsèquement petit, suivant le modèle, cela peut être osé!. Pour cela, lors de l'implémentation de cette méthode dans le cadre d'1 programme, je prend le + grand soin à estimer correctement le point de départ ce qui peut dans cetains cas être une réelle difficulté.
    J'ai essayé d'introduire y'' dans le calcul mais sans succès: la + part du temps le fit devient instable mais, faute de temps, je n'ai jamais insisté.
    Au départ j'avais utilisé cette matrice de covariance telle qu'elle. Je n'ai que récemment tenté d'utiliser un passage "smooth" entre la méthode Gauss à la méthode du gradient en 'surévaluant' les coefficients diagonaux ceci après lecture du livre en question. C'est dans cet état que se situe le code proposé. - Attention : son calcul des erreurs standards me semble faux dans l'implémentation actuelle!
    J'utilise cette méthode depuis pas mal de temps avec succès en général mais je n'ai + guère le temps d'y revenir en tant que telle. Je suis donc très interessé à tout comment, detection de bug, amélioration ( gestion intelligente de µ plutôt qu'1 passage logarithmique 'à prioris' ) que vous pourriez me suggerer

  14. #14
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Ah, OK
    C'est donc un quasi-Newton avec Levenberg-Marquardt, intéressant !
    J'ai vu quelques propositions de choix de la "constante" de manière adaptative, si je trouve qqch de plus explicite - formule et tout ça -, je l'indiquerai ici

  15. #15
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Peut-être que cette publi peut être utile : http://ietfec.oxfordjournals.org/cgi/reprint/E88-A/7/1971

  16. #16
    Invité de passage
    Inscrit en
    Mars 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 1
    Par défaut Programme C++ pour le fit d'une courbe
    Ce message s'adresse principalement à J.P. Mignot, mais servira peut-être à d'autres aussi.

    En effet,je travaille sur la détection d'un maximum d'une fonction. J'ai donc fait un fit de cette fonction puis cherché le maximum, mais je bute sur la précision de cette détection en raison de mon "fit" plus qu'approximatif (méthode de triangulisation utilisé).

    J'ai donc recherché sur le net si il existait des personnes qui avait développé des fonctions C qui permettent de faire un "fit" de courbe plus proprement que moi.

    C'est ainsi que je suis tombé sur votre soft LESS2 qui permet de faire ce fit proprement. Merci à lui pour cette contribution qui m'enlève une sacré épine du pieds !!

    Toutefois, je n'arrive pas à implémenter cette librairie dans mon programme. En fait, je bute sur l'appel de la fontion: j'ai l'impression qu'il y a deux appels:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Real MaFonction(Real a[], Real x);
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fit_ma_fonction(...,TableauY[], TableauX[],...);
    A quoi sert le premier code et comment l'utiliser ?

    Je pose peut-être une question hors sujet -> me répondre par MP à ce moment-là.

    Et je pose peut-être une question idiote -> je m'en excuse à l'avance !

    Toute aide me sera bien utile, si vous avez un moment pour me répondre.

    Cordialement

    Xavier

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/01/2013, 17h22
  2. Réponses: 8
    Dernier message: 30/01/2009, 15h32
  3. Chercher une série de valeurs dans un multiset.
    Par undercrash dans le forum SL & STL
    Réponses: 1
    Dernier message: 24/10/2007, 10h18
  4. Une série de valeurs pour obtenir une valeur X
    Par Geno312 dans le forum Mathématiques
    Réponses: 22
    Dernier message: 01/10/2007, 22h09
  5. Evaluer une série de valeurs dans une StringGrid
    Par fermat dans le forum Delphi
    Réponses: 1
    Dernier message: 24/09/2006, 18h35

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