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

MATLAB Discussion :

Recherche d'un minimum par Levenberg Marquardt [Débutant]


Sujet :

MATLAB

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut Recherche d'un minimum par Levenberg Marquardt
    Bonjour tous,

    Comme mon titre l'indique je Recherche un minimum et je souhaiterai le faire par Levenberg Marquardt.

    Je m'explique sur mon calcul:

    1°) J'ai une fonction matlab qui prends en arguments deux parametres A et B et me donne en sortie un vecteur Y de 50 lignes

    => la fonction est pas une expression analytique mais des calculs recu d'un autre logiciel

    2°) J'ai des resultats experimentaux sous forme de vecteur de 50lignes aussi X

    3°) Je compare l'erreur de cette facon:

    residu=Y-X

    4°) L'erreur globale J est donc:

    J=residu'*residu

    5°) Je veux donc minimiser J en faisant une methode de levenberg marquardt qui me donnera les prochaines parametres A et B à utiliser

    ==> Le probleme c'est qu'ici je bloque car je ne sais pas si MATLAB à cette methode deja implémenter et si elle est faisable dans mon cas où je n'ai pas d'expression analytique de la fonction


    J'espere que vous pourrez m'aider....

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    Citation Envoyé par 21did21
    J'ai une fonction matlab qui prends en arguments deux parametres A et B et me donne en sortie un vecteur Y de 50 lignes

    => la fonction est pas une expression analytique mais des calculs recu d'un autre logiciel
    Tu peux préciser? c'est une fonction matlab qui appelle un autre logiciel qui fait le calcul en fonction de A et B et qui renvoie les résultats dans MATLAB?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par magelan Voir le message
    Bonjour,


    Tu peux préciser? c'est une fonction matlab qui appelle un autre logiciel qui fait le calcul en fonction de A et B et qui renvoie les résultats dans MATLAB?
    oui exactement

    (merci d'avoir repondu)

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Quel logiciel utilises-tu?
    Peux-tu nous montrer la fonction matlab en question?

    Rapidement, pour les fonctions de minimisation, dans les fonctions de référence il y a la fonction fminsearch. Je ne suis pas sur que cela fonctionne étant donné que tu appelles un logiciel extérieur à matlab...

    Pour des choses du genre Levenberg-marquardt, il faut soit avoir la toolbox optimisation, soit chercher sur internet (sur le fex?) ou bien le coder toi-même.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Membre confirmé
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Points : 487
    Points
    487
    Par défaut
    Salut.

    l faut aussi que tu saches quelle sont les dérivées de la fonction en fonction des paramètres A et B. Tu dis que "la fonction est pas une expression analytique mais des calculs reçu d'un autre logiciel". Donc tu ne sais absolument pas ce que fait l'autre logiciel, comment il te sort les valeurs, etc.. Si tu ne sais pas ça, ça va être difficile d'appliquer la méthode de Levenberg-Marquardt. Il vaudrait peut-être mieux se tourner vers un algo de minimisation un peu plus brutal. Tu fais varier tes paramètres un par un et tu regardes la valeur de ton J. S'il diminue par rapport à l'itération précédente, tu enregistres les nouveaux paramètres. Sinon tu gardes les anciens.

    ++
    Matlab 7.14.0.739 (R2012a)
    C/C++, python, R, SQL, Pig, MR

    Ma philosophie: Ne rien faire, mais le faire bien.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par Dam2227 Voir le message
    Salut.

    l faut aussi que tu saches quelle sont les dérivées de la fonction en fonction des paramètres A et B. Tu dis que "la fonction est pas une expression analytique mais des calculs reçu d'un autre logiciel". Donc tu ne sais absolument pas ce que fait l'autre logiciel, comment il te sort les valeurs, etc.. Si tu ne sais pas ça, ça va être difficile d'appliquer la méthode de Levenberg-Marquardt. Il vaudrait peut-être mieux se tourner vers un algo de minimisation un peu plus brutal. Tu fais varier tes paramètres un par un et tu regardes la valeur de ton J. S'il diminue par rapport à l'itération précédente, tu enregistres les nouveaux paramètres. Sinon tu gardes les anciens.

    ++
    en fait ce que je pensais et faire une approximation de la derivée, ce qui est faisable en faisant un peit ecart sur la variable et en appliquant l'approximation de la derivée ar la tangente.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par magelan Voir le message
    Quel logiciel utilises-tu?
    Peux-tu nous montrer la fonction matlab en question?

    Rapidement, pour les fonctions de minimisation, dans les fonctions de référence il y a la fonction fminsearch. Je ne suis pas sur que cela fonctionne étant donné que tu appelles un logiciel extérieur à matlab...

    Pour des choses du genre Levenberg-marquardt, il faut soit avoir la toolbox optimisation, soit chercher sur internet (sur le fex?) ou bien le coder toi-même.
    J'utilise un logiciel de simulation mais la fonction matlab n'a rien de special car elle demande juste de sortir un vecteur au logiciel.

    je vais regarder fminsearch, il n'y a pas une fonction du type levenbergmarquardt où cette algo serait deja programmé?

    merci tous de votre interet et de votre aide

  8. #8
    Membre confirmé
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Points : 487
    Points
    487
    Par défaut
    Ta solution pourrait marcher si tu as un signal qui n'a pas trop de bruit. Maintenant, je ne sais pas si ça sera suffisant pour avoir des résultats précis. Concernant ta question sur l'existence d'une "fonction du type levenbergmarquardt", il y en a une, appelée : lsqnonlin.

    Bon courage!
    Matlab 7.14.0.739 (R2012a)
    C/C++, python, R, SQL, Pig, MR

    Ma philosophie: Ne rien faire, mais le faire bien.

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par Dam2227 Voir le message
    des résultats précis. Concernant ta question sur l'existence d'une "fonction du type levenbergmarquardt", il y en a une, appelée : lsqnonlin.
    Fonction qui se trouve dans la toolbox optimisation.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Merci beaucoup à vous 2 je vais chercher de ce coté.

    A bientot


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/05/2007, 11h44
  2. Minimum par rapport à une variable
    Par Marcusss dans le forum MATLAB
    Réponses: 7
    Dernier message: 15/04/2007, 17h41
  3. [recherche] combat au tour par tour
    Par Satch dans le forum PC
    Réponses: 4
    Dernier message: 24/08/2006, 10h32
  4. Rechercher les occurences commencant par un chiffre
    Par tony slayer dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/05/2005, 14h48
  5. Levenberg Marquardt
    Par fraille dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 22/03/2005, 18h22

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