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 :

Problème de solver ode


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Par défaut Problème de solver ode
    j'ai un systeme equation diff du type suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dx(s_i,t)/dt=f(x(s_i,t), x(s_i,t)\sum_i x(s_i,t), y(s_i,t), y(s_i,t)\sum_i y(s_i,t), z(s_i,t), z(s_i,t)\sum_i z(s_i,t))
    dy(s_i,t)/dt=g(x(s_i,t), x(s_i,t)\sum_i x(s_i,t), y(s_i,t), y(s_i,t)\sum_i y(s_i,t), z(s_i,t), z(s_i,t)\sum_i z(s_i,t))
    dz(s_i,t)/dt=h(x(s_i,t), x(s_i,t)\sum_i x(s_i,t), y(s_i,t), y(s_i,t)\sum_i y(s_i,t), z(s_i,t), z(s_i,t)\sum_i z(s_i,t))
    avec x, y, z: une fonction de s_i et de t et i=1:50 (s_i c'est une discretisation d'une deuxiemme variables).
    f,g,h: des fonctions de type polynome
    je peux vous envoyez les fonctions si cela est important

    Je sais demontre mathematiquent que si la condition initiale dans [0,1] alors la solution reste dans [0,1].

    Malheureusement qt je simule les solutions et pour certaine valeurs des parametres (intervalle asses petit), l'une des composante de la solution qui devrai tendre vers 0 commence par etre negative du type -0.8e-15 et ensuite cette composante devient clairement negative (~-1000).

    Je me pose la question si c'est un probleme du solver ou un que j'ai une erreur dans l'ecriture de ma fonction

    merci pour votre aide

  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
    Par défaut
    Salut!
    Une explication possible serait que ton système différentiel est raide (stiff). Essaie soit de prendre un pas d'intégration plus petit, soit d'utiliser un sous-programme spécialement prévu pour ce cas (ode23s).
    Jean-Marc Blanc

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Salut,
    pour les problèmes raides je conseille un solveur qui s'appelle CVode. Il est possible d'appeler ce solveur dans Matlab.

    A plusieurs reprises, les solveurs ode23s, ode15s, ode23tb etc... m'ont déçu car ils ne me donnaient jamais la bonne solution ... alors que CVode oui.

    Citation Envoyé par slimane66 Voir le message

    Je sais demontre mathematiquent que si la condition initiale dans [0,1] alors la solution reste dans [0,1].
    Tu as une ODE dans R^3 et tu parles de conditions initiales dans [0, 1] donc dans R. N'y aurait-il pas une erreur de dimension dans tes conditions initiales.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Par défaut
    merci a tout deux
    1. Effectivement, j'ai voulu dire [0,1]^{3}
    2. qt tu dit raide (stiff) cela veux dire quoi exactement. La notion de raide fait reference a la courbe des solutions ?

  5. #5
    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
    Par défaut
    Salut!
    Dit sommairement, un problème est dit raide si sa solution peut comporter des composantes à des échelles de temps très différentes.

    Exemple: Tu veux étudier le comportement d'un moteur de locomotive démarrant en direction du Gothard. A l'enclenchement du moteur, tu as un régime transitoire avec des constantes de temps de l'ordre de quelques millisecondes; tu as aussi les équation du démarrage du train, dont la constante de temps est de l'ordre de la minute; tu as enfin l'échauffement progressif des bobinages de ton moteur et l'augmentation correspondante de leur résistance, dont les constantes de temps sont de l'ordre de l'heure. Si tu essaies de mettre tout ça ensemble, tu as un système raide.

    Jean-Marc Blanc

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Par défaut
    j'ai essaye le solver edo23s et le pb des nombre negatif dispare !!!!
    j'ai installe sundials et je suis en train d'apprendre a utiliser cvode, j'ai encore un peut de mal en plus je n'ai pas trouver de help pour matlab !!! est ce que que vous en connaisez un
    merci encore a vous deux

    Citation Envoyé par FR119492 Voir le message
    Salut!
    Dit sommairement, un problème est dit raide si sa solution peut comporter des composantes à des échelles de temps très différentes.

    Exemple: Tu veux étudier le comportement d'un moteur de locomotive démarrant en direction du Gothard. A l'enclenchement du moteur, tu as un régime transitoire avec des constantes de temps de l'ordre de quelques millisecondes; tu as aussi les équation du démarrage du train, dont la constante de temps est de l'ordre de la minute; tu as enfin l'échauffement progressif des bobinages de ton moteur et l'augmentation correspondante de leur résistance, dont les constantes de temps sont de l'ordre de l'heure. Si tu essaies de mettre tout ça ensemble, tu as un système raide.

    Jean-Marc Blanc

Discussions similaires

  1. Problème avec Apache ODE et Eclipse
    Par soumti84 dans le forum Services Web
    Réponses: 1
    Dernier message: 08/10/2012, 12h45
  2. Problème Multistart solver
    Par NewYork dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/02/2011, 10h04
  3. [XL-2003] Problème chargement Solver
    Par david_atx dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/08/2009, 12h10
  4. Problème OSG et ODE!
    Par tyke91 dans le forum OpenSceneGraph
    Réponses: 2
    Dernier message: 09/09/2008, 01h59
  5. Problème de link ODE/OpenGL sous Dev-cpp
    Par Milanber9999 dans le forum ODE
    Réponses: 3
    Dernier message: 09/05/2007, 01h46

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