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 :

Erreur sur Fsolve (levenberg-marquardt algorithm)


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Février 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 34
    Par défaut Erreur sur Fsolve (levenberg-marquardt algorithm)
    Bonjour,
    J'utilise l'algorithme 'levenberg-marquardt' pour la résolution d'un système d'équations non-linéaires...
    J'ai déjà pu avoir de bons résultats avec le même programme, mais à partir d'un certain moment j'ai ce message:
    No solution found.
    
    fsolve stopped because the problem appears to be locally singular.
    
    <stopping criteria details>
    
    
    fsolve stopped because the regularization parameter, 5.000000e+016, exceeds 1e16.
    Voici la commande que j'utilise pour Fsolve:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    a= fsolve(@myfun,a0,optimset('Display','iter','TolFun',1e-25,'MaxFunEvals',10000000,'MaxIter',10000000,'Algorithm',{'levenberg-marquardt',.005}, 'TolX',1e-25, 'TolFun',1e-25));
    C'est quoi ce paramètre de régulation? et comment changer sa valeur de manière à ne plus avoir cette erreur?

    Merci à l'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Montre nous le code de myfun

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Février 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 34
    Par défaut
    Le voilà...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
     
    function f = myfun(a)
    %UNTITLED Summary of this function goes here
    %   Detailed explanation goes here
     
    load('M');
    load('K');
    load('B');
     
     
    p=9;
     
    Amp=0.05;
     
    X(1)=Amp;
    X(2)=a(2);
    X(3)=a(3);
    X(4)=a(4);
    X(5)=a(5);
    X(6)=a(6);
    X(7)=a(7);
    X(8)=a(8);
    X(9)=a(9);
     
     
     
     
     
     
    Provisoire=zeros(p,p,p,p);
     
    for i=1:p
        for j=1:p
            for k=1:p
                for l=1:p
                    Provisoire(i,j,k,l)=X(k)*X(l)*B(i,j,k,l);
                end
            end
        end
    end
     
    S1=sum(Provisoire,4);
    BA=sum(S1,3);
     
     
    Cool1= (X*K*X')+ (X*BA*X');
    Cool2= X*M*X';
    Omeganonlin2=Cool1/Cool2;
     
     
     
    SYSTEM=(2*K*X')+(3*BA*X')-(2*Omeganonlin2*M*X');
     
    SYSTEM(1)=[];
     
    f=SYSTEM;
     
    end

  4. #4
    Membre émérite
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Par défaut
    Salut,

    Désolé, mais là, je sèche... Il me semble que tu as un problème de précision... Il t'affirme que tu dépasses les 10^16 avec un paramètre de "régularisation". Je ne sais pas à quoi il correspond, mais du coup, en regardant la précision que tu cherches, tu demandes du 10^-25 : je ne sais pas si matlab est capable d'aller jusque là. Essaye avec une précision moins exigeante peut-être ?

    Sinon, go potasser la doc

    Bon courage

    A+

  5. #5
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 885
    Par défaut
    tout comme tachmou, essaye des options moins exigeantes (1e-25 !!)

    essayes également d'autres valeurs de λ (0.005) dans ton algo de levenberg-marquardt car a priori vu ton message d'erreur le problème se situe là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Trust region radius became too small (trust-region-dogleg algorithm) or
     regularization parameter became too large (levenberg-marquardt algorithm).
    ou essayes l'autres algo (trust-region-reflective)

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/05/2015, 03h00
  2. Réponses: 0
    Dernier message: 27/04/2014, 13h53
  3. Algorithme de Levenberg Marquardt
    Par TopCao dans le forum C++
    Réponses: 28
    Dernier message: 13/01/2010, 16h06
  4. [VBS] Erreur sur "AddWindowsPrinterConnection"
    Par Admin dans le forum VBScript
    Réponses: 5
    Dernier message: 27/03/2004, 16h15
  5. Erreur sur le TNSListener après installation de 9iAS
    Par Patmane dans le forum Installation
    Réponses: 4
    Dernier message: 04/02/2004, 11h16

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