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 :

Système d'équations non linéaires 7x7


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Doctorant
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Système d'équations non linéaires 7x7
    Bonjour,

    Je rencontre des difficultés à résoudre numériquement un système de sept équations non linéaires. Je pourrai le résoudre à la main, mais je préfère le faire par informatique car le risque de faire une erreur de calcul est nul.
    J'ai donc lu de la doc et mis mon problème sous matlab ainsi:

    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
     
    alpha=0.65;
    F=9.0;
    k=0.2;
    phi=0.4;
    eta=0.36;
    theta=1.1;
    beta=0.99;
    delta=0.025;
    gamma=0.005;
    boc=0.56;
    rr=0.005;
    V=0.31;
    q=1;
     
    f=@(x)([
        ((V*F)/((1-rr)))*(((b/x(1))+k*q*(x(7)/x(1)))^alpha)*(((x(2)/x(1)))^(1-alpha))-1,
        x(6)+(alpha/(boc+(k*q*x(7))/x(1))),
        x(5)*x(4)+(((1-phi))/(1-x(3)-x(2))),
        x(4)-((phi/(x(5)*x(1)))-1)*(((1-alpha)*x(1))/x(2)),
        x(4)-(((theta-1)*(1-eta))/theta)*(((x(7)/x(3)))^eta),
        ((phi/(x(5)*x(1)))-1)*x(6)*k*q-q+(beta/(1+gamma))*((1-delta)*q+((eta*(theta-1))/theta)*(((x(7)/x(3)))^(eta-1))),
        (((x(7)/x(1)))^eta)*(((x(3)/x(1)))^(1-eta))-((delta*q*x(7))/x(1))-1
        ]);
    x0=[0.8409,0.0063,0.3195,1.949,0.457,0.237,9.19];
    options=optimset('Display','iter','MaxFunEvals',300000,'MaxIter',300000);
    resultat=fsolve(f,x0,options);
    Je tire ces équations d'un article, les résultats y sont également présents ce qui fait qu'en x0 j'ai mis les valeur que trouvent ces auteurs à ce système. Pourtant, même en augmentant beaucoup le nombre d'itérations, matlab n'arrive pas à trouver de solution,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Solver stopped prematurely.
     
    fsolve stopped because it exceeded the function evaluation limit,
    options.MaxFunEvals = 300000 (the selected value).
    Du coup, je ne sais pas si le problème ne vient pas directement de l'algorithme qui n'est pas adapté à mon problème? Je serai très reconnaissant que quelqu'un m'éclaire sur le sujet :-)

    Merci d'avance,
    Images attachées Images attachées  

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je détecte trois différences avec les formules présentées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    f=@(x) [
        ((V*F)/((1-rr)))*((boc+k*q*(x(7)/x(1)))^alpha)*(((x(2)/x(1)))^(1-alpha))-1,
        x(6)-(alpha/(boc+(k*q*x(7))/x(1))),
        x(5)*x(4)-(((1-phi))/(1-x(3)-x(2))),
        x(4)-((phi/(x(5)*x(1)))-1)*(((1-alpha)*x(1))/x(2)),
        x(4)-(((theta-1)*(1-eta))/theta)*(((x(7)/x(3)))^eta),
        ((phi/(x(5)*x(1)))-1)*x(6)*k*q-q+(beta/(1+gamma))*((1-delta)*q+((eta*(theta-1))/theta)*(((x(7)/x(3)))^(eta-1))),
        (((x(7)/x(1)))^eta)*(((x(3)/x(1)))^(1-eta))-((delta*q*x(7))/x(1))-1
        ];

  3. #3
    Membre à l'essai
    Profil pro
    Doctorant
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Tu as tout a fait raison, merci beaucoup pour ta rapidité :-)
    du coup je trouve effectivement une solution numérique mais totalement différente de ce que trouvent les auteurs

    resultat = 0.0339 0.0031 0.0375 0.0538 11.6241 0.8809 0.0302
    au lieu de
    0.8409 0.0063 0.3195 1.949 0.457 0.237 9.19
    et quand je change un peu une valeur de x0, il me sort une erreur sur le fait que ma matrice est localement singulière.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Warning: Matrix is singular, close to singular or badly scaled.
             Results may be inaccurate. RCOND = NaN. 
    > In optim\private\dogleg at 72
      In optim\private\trustnleqn at 186
      In fsolve at 378
         1          9             Inf              0            NaN               1
     
    No solution found.
     
    fsolve stopped because the problem appears to be locally singular.
     
    <stopping criteria details>
    Je vais essayer de résoudre le système à la main pour voir ce que ça donne

Discussions similaires

  1. [Débutant] Résolution d'un système d'équations non-linéaires
    Par nicollivier dans le forum MATLAB
    Réponses: 9
    Dernier message: 09/12/2009, 17h32
  2. système d'équation non linéaire
    Par Medde dans le forum Mathématiques
    Réponses: 5
    Dernier message: 11/07/2009, 16h53
  3. Solveur de systèmes d'équations non linéaires
    Par teska dans le forum Langage
    Réponses: 5
    Dernier message: 11/12/2008, 17h07
  4. Réponses: 0
    Dernier message: 01/10/2008, 15h14
  5. Réponses: 1
    Dernier message: 14/02/2007, 11h12

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