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 :

[ode45] Résolution équations différentielles Runge-Kutta


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut [ode45] Résolution équations différentielles Runge-Kutta
    Bonjour à tous,
    je voudrais résoudre une équation différentielle par la méthode de Runge Kutta (ode45 dans matlab) qui correspond en fait à un profile de t° dans un échangeur à plaques (une t° chaude et une t° froide agissants en sens opposés de part et d'autre d'une plaque).

    Je dispose d'un exemple comprenant 10équations, il m'en faudrait plus mais la programmation dans matlab de cet exemple m'aiderait à y voir plus clair.


    équations: Conditions:
    c1.dT1/dx = U.W.(T2-T1) T1(X=0)=Tchaud entrée
    c2.dT2/dx = U.W.(T1+T3-2.T2) T2(X=0)=T froid entrée
    c3.dT3/dx = -U.W.(T2+T4-2.T3) T3(X=L)=T1(X=L)
    c4.dT4/dx = -U.W.(T3+T5-2.T4) T4(X=L)=T2(X=L)
    c5.dT5/dx = U.W.(T4+T6-2.T5) T5(X=0)=T3(X=0)
    c6.dT6/dx = U.W.(T5+T7-2.T6) T6(X=0)=T4(X=0)
    c7.dT7/dx = -U.W.(T6+T8-2.T7) T7(X=L)=T5(X=L)
    c8.dT8/dx = -U.W.(T7+T9-2.T8) T8(X=L)=T6(X=L)
    c9.dT9/dx = U.W.(T8+T10-2.T9) T9(X=0)=T7(X=0)
    c10.dT10/dx = U.W.(T9-T10) T10(X=0)=T8(X=0)

    Je connais bien évidemment, la valeur de c du coté chaud et du coté froid ce qui correspond à c1 et c2, le U, le W, le T1 et T2 et le L.

    Il faudrait donc simuler ces équations dans matlab et pouvoir tirer une évolution de la température (en y) par rapport à la longueur de la plaque (en x).

    Pouvez vous m'éclaircir sur la résolution de ce problème?

    Merci d'avance


    edit: étant donné que mes c1 et c2 de départ vont varier (si j'en crois mes formules), je ne vois pas comment écrire l'équation ? et comment appliquer mes conditions?

    j'ai vu que je devais d'abord initialiser ma dérivée et écrire ma(mes?) équation(s):
    dy = ...(10,1);

    Ensuite, utiliser la fonction odes45 comme suit:
    [T,Y] = ode45(@odefun,plage_t,val_init,options);
    avec "odefun" est le nom de la fonction créée, "plage_t" est un vecteur représete l'intervale de "t", et "val_init" est un vecteur donnant les valeurs initiales des solutions.

    Et pour finir tracer mon graphique avec la fonction plot.

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur opto-électronique
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur opto-électronique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Points : 157
    Points
    157
    Par défaut
    Es-tu allé voir l'aide de ta fonction ? L'aide en elle même est assez obscure pour qui n'est pas habitué au jargon Matlab sur les équations, mais j'ai trouvé les exemples très parlants. L'exemple 3 notamment est la résolution d'un système où les paramètres sont dépendants du temps. Remplace le temps par la position sur ta plaque et tu retomberas sur ton problème.

    qu'as tu essayé de faire pour le moment ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Je ne sais déjà pas comment écrire ma fonction étant donné que j'ai une dérivée de la t° par rapport à la position mais que le "c" va varier aussi mais je ne sais pas de quelle manière ?

    Comment puis-je écrire les 2 premières équations?

    J'ai vu qu'après il fallait initialiser avec des colonnes et vecteurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function dy=fonction(x,y);  % créer un fichier FONCTION avec la fonction
    dy=zeros(10,1);
    Merci d'avance

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur opto-électronique
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur opto-électronique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Points : 157
    Points
    157
    Par défaut
    Si tu étais allé voir l'exemple trois en question, tu aurais vu que c'était exactement ton problème. Je te l'écris ici en ne considérant que l'équation 1 de ce que tu nous as donné (je considèrerai que T2 est une constante). Ce sera à toi de l'adapter pour tes 10 équations:

    je suppose que T1 ne dépend que de x et que c1 ne dépend aussi que de x. Si c1 dépendait de y, la procédure serait de toute façon sensiblement la même.

    c1.dT1/dx = U.W.(T2-T1) (1) T1(X=0)=Tchaud entrée (2)

    Définition de la dépendance en x de c1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     C1X=linspace(0,L,25) %génération de x pour C1
    C1= C1X.^2 - 3 % génération de C1(x), à remplacer par ta propre équation.
    (Si tu ne connais pas l'équation traduisant les variations de ton C1, tu ne pourras pas résoudre grand chose.)

    Ecriture d'un fichier .m pour interpoler les données de C1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function dT1dx=myode(x,T1,C1X,C1)
    C1=interpl(C1X,C1,x); interpole les données C1X, C1 à l'instant x
     
    dT1dx = (U*W*(T2-T1))/C1 %cette equation est tirée de l'équation (1), il manque des paramètres d'entrée à la fonction.
    Resolution de l'équation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Xspan=[0 L] %résolution pour x allant de 0 à L
    CI=[Tchaud_entree] %condition initiale, équation (2)
     
    [X T1]=ode45(@(x,t1) myode(x,t1,C1X,C1),Xspan,CI);
    Affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(X,T1) %reste à ajouter des titres et des légendes.

Discussions similaires

  1. Résolution équation différentielle
    Par cpalperou dans le forum MATLAB
    Réponses: 11
    Dernier message: 25/04/2014, 15h22
  2. Réponses: 0
    Dernier message: 06/11/2010, 20h36
  3. Réponses: 5
    Dernier message: 01/04/2010, 08h08
  4. Problème code résolution équation différentielle
    Par glenngrauwels dans le forum MATLAB
    Réponses: 3
    Dernier message: 08/02/2010, 20h12
  5. Résolution équations différentielles
    Par alex63000 dans le forum Octave
    Réponses: 1
    Dernier message: 07/10/2007, 23h20

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