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 :

[fsolve] résolution système non linéaire


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Par défaut [fsolve] résolution système non linéaire
    Bonjour à tous !

    J'essaye de résoudre un système de 4 équations à 4 inconnues non linéaire à l'aide de fsolve de Matlab, mais j'obtiens toujours une erreur.
    J'ai pourtant suivi l'aide en ligne de Matlab, et j'ai cherché un peu partout la syntaxe exacte.

    C'est assez urgent donc si vous avez la solution merci beaucoup !!

    J'ai tout d'abord créé un fichier myfun.m comprenant mon système de 4 équations (cpc1, Tc1,etc. sont des constantes définies dans mon prog principal) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function F = myfun(x)
    F = [cpc1*(Tc1-x(1)) - cpf1*(x(2) - x(3));
        C*(x(2) - x(3)) - E*(Tc1 - x(2) - x(1) + x(3))/(log((Tc1 - x(2))/(x(1) - x(3))));
        A*(x(1) - x(3))-B*(x(4) - Tje);
        B*(x(4) - Tje) - D*(x(1) - x(4) - x(3) + Tje)/(log((x(1) - x(4))/(x(3) - Tje)))];
    Et ensuite j'essaye de résoudre ça à la fin de mon programme principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    x0 = [100; 100; 100; 100];           % Make a starting guess at the solution
    options=optimset('Display','iter');   % Option to display output
    [x,fval] = fsolve(@myfun,x0,options)  % Call solver
    Mais j'ai le message d'erreur suivant :

    ??? Input argument "cpc1" is undefined.
    
    Error in ==> myfun at 2
    F = [cpc1*(Tc1-x(1)) - cpf1*(x(2) - x(3));
    
    Error in ==> fsolve at 254
                fuser = feval(funfcn{3},x,varargin{:});
    
    Error in ==> monprog at 44
    [x,fval] = fsolve(@myfun,x0,options)  % Call solver
    Caused by:
        Failure in initial user-supplied objective function evaluation. FSOLVE cannot
        continue.
    Il ne semble pas reconnaître les constantes que j'ai pourtant calculées dans mon programme principal....

    Merci d'avance !

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

    Ton problème vient du fait que les variables 'normales' ne sont visibles que dans leurs fonctions respectives.
    Tu peux regarder du côté des fonctions imbriquées
    Ta fonction myfun sera alors une sous-fonction de ta fonction principale et les variables déclarées dans celle-ci seront alors visible dans ta fonction myfun.

  3. #3
    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
    Par défaut
    Bonjour,

    et plus généralement, les méthodes pour passer des arguments à ta fonction dans les fonctions d'optimisations :
    Passing Extra Parameters.
    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.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Par défaut
    Merci pour vos réponses !
    J'ai mis mes constantes en arguments et ça marche

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

Discussions similaires

  1. Résolution d'un système non linéaire
    Par raoul2000 dans le forum Mathématiques
    Réponses: 3
    Dernier message: 02/10/2014, 16h25
  2. [fsolve] système non linéaire large scale
    Par lorblassa dans le forum MATLAB
    Réponses: 0
    Dernier message: 12/10/2012, 15h31
  3. Résolution d'un système non linéaire -linéaire
    Par soft001 dans le forum Mathématiques
    Réponses: 15
    Dernier message: 04/10/2012, 18h08
  4. Résolution numérique d'un système non linéaire
    Par soft001 dans le forum MATLAB
    Réponses: 17
    Dernier message: 28/04/2011, 01h09
  5. [Débutant] Solution pour un système non linéaire à 3 inconnues
    Par geant02 dans le forum MATLAB
    Réponses: 5
    Dernier message: 10/03/2008, 17h36

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