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
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
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
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.
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.
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=n003134aEnvoyé par j.p.mignot
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!
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.Envoyé par j.p.mignot
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 -
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.
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 -
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 !!!
Ah, OK
C'est la méthode de NR ou c'est une autre ?
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
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
Peut-être que cette publi peut être utile : http://ietfec.oxfordjournals.org/cgi/reprint/E88-A/7/1971
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:
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part Real MaFonction(Real a[], Real x);
A quoi sert le premier code et comment l'utiliser ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Fit_ma_fonction(...,TableauY[], TableauX[],...);
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
On interpole quand on prédit une valeur dans l'intervalle des observations, par
exemple si tes x_i sont dans l'intervalle [-1,1], tu peux interpoler la
valeur de y pour x=0,27865.
On extrapole losque l'on cherche à prédire en dehors de l'intervalle ou l'on
a recueilli des observations. Extrapoler à partir d'un fit polynomial n'a pas de
sens. Il faut un modèle. Par exemple en marketing il existe une loi de vie
des produits dites "loi logistique". On peut à partir des ventes passées et
de ce modèle essayer de prédire les ventes à venir.
Un modèle est donc une loi qui s'applique à ton problème.
Bon courage
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager