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 :

Résolution avec ode45


Sujet :

MATLAB

  1. #1
    Membre habitué Avatar de Mat32
    Inscrit en
    Août 2009
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 243
    Points : 137
    Points
    137
    Par défaut Résolution avec ode45
    Hello,

    J'aimerais résoudre un système d'équations différentielles, cependant il y a une équation algébrique. Est-il possible de l'inclure ?

    Voici le système d'équations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dy(1) = F;
    dy(2) = -p.k1*y(2)*y(3) + p.k2*y(4)*y(5) - y(2)/y(1)*dy(1);
    dy(3) = -p.k1*y(2)*y(3) + p.k2*y(4)*y(5) - y(3)/y(1)*dy(1);
    dy(4) = +p.k1*y(2)*y(3) - p.k2*y(4)*y(5) - y(4)/y(1)*dy(1);
    dy(5) = +p.k1*y(2)*y(3) - p.k2*y(4)*y(5) - y(5)/y(1)*dy(1);
    L’équation algébrique à ajouter est la suivante, cependant le code qui suit ne fonctionne pas :

    Merci

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Quelques questions et remarques pour clarifier le problème:
    1. Tes dy(1) à dy(5) semblent être des dérivées, mais par rapport à quoi? En d'autres termes, quelle est la variable indépendante?
    2. Les grandeurs F et p sont-elles des variables ou des constantes?
    3. La variable y(6) n'intervient pas dans ton système différentiel. Elle doit donc être calculée à part, à partir de y(2), à chaque pas d'intégration.

    Jean-Marc Blanc

  3. #3
    Membre habitué Avatar de Mat32
    Inscrit en
    Août 2009
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 243
    Points : 137
    Points
    137
    Par défaut
    Quelle est la variable indépendante?
    C'est le temps : t

    Les grandeurs F et p sont-elles des variables ou des constantes?
    La grandeur F est variable mais pas les grandeur p, mais celles-ci sont gérés par une autre partie du code

    La variable y(6) n'intervient pas dans ton système différentiel. Elle doit donc être calculée à part, à partir de y(2), à chaque pas d'intégration.
    C'est exactement ma question, comment calculer y(6) à chaque pas car il faudrait, dans l'idéal, utiliser la variable y(6) dans le système d'équations différentielles.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mat32 Voir le message
    C'est exactement ma question, comment calculer y(6) à chaque pas car il faudrait, dans l'idéal, utiliser la variable y(6) dans le système d'équations différentielles.
    Et Jean Marc y a répondu
    y(6) n'intervenant pas dans ton système différentiel, tu le résous sans, puis tu le calcules à partir des valeurs de y(2) obtenues.

  5. #5
    Membre habitué Avatar de Mat32
    Inscrit en
    Août 2009
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 243
    Points : 137
    Points
    137
    Par défaut
    y(6) n'intervenant pas dans ton système différentiel, tu le résous sans
    y(6) n'intervient pas car je ne sais pas comment faire mais cette variable devrait intervenir...

    Merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mat32 Voir le message
    y(6) n'intervient pas car je ne sais pas comment faire mais cette variable devrait intervenir...
    Dans ce cas, comment intervient-elle ?
    Quel est ton système d'équations ?

  7. #7
    Membre habitué Avatar de Mat32
    Inscrit en
    Août 2009
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 243
    Points : 137
    Points
    137
    Par défaut
    Voici le système :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dy(1) = F;
    dy(2) = -p.k1*y(2)*y(3) + p.k2*y(4)*y(5) - y(2)/y(1)*dy(1);
    dy(3) = -p.k1*y(2)*y(3) + p.k2*y(4)*y(5) - y(3)/y(1)*dy(1);
    dy(4) = +p.k1*y(2)*y(3) - p.k2*y(4)*y(5) - y(4)/y(1)*dy(1);
    dy(5) = +p.k1*y(2)*y(3) - p.k2*y(4)*y(5) - y(5)/y(1)*dy(1) + p.k4*y(6);
     
     y(6) = p.k3*y(2)
    Comment pourrais-je calculer y(6) à chaque pas ?
    Comment pourrais-je résoudre le système d'équations sans substituer y(6) par p.k3*y(2) dans le code ?

    Merci

  8. #8
    Invité
    Invité(e)
    Par défaut
    Tu possèdes y(6) = p.k3*y(2)... il n'est pas difficile de d'obtenir dy(6) à partir de là

  9. #9
    Membre habitué Avatar de Mat32
    Inscrit en
    Août 2009
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 243
    Points : 137
    Points
    137
    Par défaut
    Mais il est impossible de calculer y(6) (ou une autre valeur) à chaque pas ?

  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
    Citation Envoyé par Mat32 Voir le message
    Mais il est impossible de calculer y(6) (ou une autre valeur) à chaque pas ?
    si il est possibe mais il faut ecrire tous le systeme sous forme différentielle et il faut donc que tu remplace dans ton systeme ta ligne y(6) par une ligne dy(6) qui sera la dérivée par rapport au temps de y(6)

    Ensuite ODE45 va te résoudre ce systeme diffférentielle et te donnerai l'évolution en fonction du temps de y(1) y(2) y(3)...y(6)

  11. #11
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Bonjour à tous!
    Cette discussion est une magnifique illustration du débat en cours sur ce site:
    Quelque chose ne va vraiment pas avec les développeurs "modernes", un développeur à "l'ancienne" critique la multiplication des bibliothèques
    Mat32 essaie d'utiliser une fonction toute faite, à savoir ODE45; mais connait-il l'algorithme utilisé? On ne lui a probablement jamais enseigné comment programmer la méthode de Runge-Kutta. Alors que, s'il savait le faire, et s'il utilisait un langage de bas niveau, comme le C ou le Fortran, il n'aurait aucune peine à calculer y(6) à chaque pas. Je pense que William Edwards a raison et que, même si Matlab est un outil remarquable, il n'est pas fait pour les débutants.
    Jean-Marc Blanc

Discussions similaires

  1. Résolution d'équation différentielle avec ode45
    Par zed793 dans le forum MATLAB
    Réponses: 2
    Dernier message: 12/05/2009, 14h58
  2. Résolution d'une équation avec ode45
    Par zed793 dans le forum Simulink
    Réponses: 8
    Dernier message: 19/09/2008, 10h21
  3. Résolution avec Gtk Pixbuf
    Par Julien44 dans le forum GTK+
    Réponses: 3
    Dernier message: 16/08/2007, 10h13
  4. Plusieurs résolutions avec glutGameModeString
    Par maxetime dans le forum GLUT
    Réponses: 4
    Dernier message: 28/09/2006, 15h13
  5. Probléme de résolution avec virtual PC
    Par wikers dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 19/08/2005, 11h04

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