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 :

Équation différentielles


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Équation différentielles
    Bonjour tout le monde,

    Alors voilà, je dois résoudre cet exercice sur matlab :

    http://spiral.univ-lyon1.fr/ensccf/f...ts_2011-12.pdf

    Projet numéro 26, c'est à dire le tout dernier.

    Mon soucis est que je n'arrive pas à bien entrer les equa diff dans matlab, je reçois toujours une erreur. Voici mon code:

    Ma Fonction crée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function z = ff(t,y)
     
    z(t,y) = -k*y(1)*y(2)*Ca0 - y(1)/tau
    z(t,y) = -k*y(1)*y(2)*Ca0 + y(1) + (Cb0-y(2))/tau
    z(t,y) = k*y(1)*y(2)*Ca0 - y(3)/tau
    Mon programme:

    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
    %% Données de départ
     
    global Ca0 Ca0p Cb0 k tau Cc y0 
    Ca0 = 0.1; % Concentration initiale en A [mole/L]
    Ca0p = 1; % Concentration ??
    Cb0 = 0.4;
    k = 2;
    tau = 100;
    Cc=0; % juste pour fixer valeur
     
    y0 = [Ca0 Cb0 Cc]; % on définit le vecteur avec les concentrations initiales en A et B, et la conc finale en C
     
     
    % graphique
     
    [t,y]=ode45(@ff,tspan,y0)

    Si quelqu'un saurai m'aider, car je suis complètement perdu !
    Merci

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

    Le lien du pdf est incorrect.

    Je peux déjà dire que ta fonction ff est fausse :
    • utilisant des variables Ca0, Cb0 et tau globales, il faut les redéclarer globales à l'intérieur (cf. ce message).
    • ce n'est pas z(t,y), mais z(1,1), z(2,1) et z(3,1) qu'il faut assigner.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Ah désole, je pensais que le lien fonctionnerait :

    http://spiral.univ-lyon1.fr/ensccf/f...ts_2011-12.pdf

    C'est le tout dernier projet .

    Sinon merci de ta réponse rapide, je vais faire les changements .

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Voilà, j'ai apporté les changements.
    Mais pour ma fonction, il me dit maintenant que :

    Undefined function or variable 't' .

    Apparemment il ne reconnait pas la variable t...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Pourrais-tu re-fournir le code corrigé ? t étant en paramètre d'entrée, je ne vois à priori aucune raison à cette erreur.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Voila le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function z = ff(t,y)
     
    global Ca0 tau Cb0 
    z(1,1) = -k*y(1)*y(2)*Ca0 - y(1)/tau
    z(2,1) = -k*y(1)*y(2)*Ca0 + y(1) + (Cb0-y(2))/tau
    z(3,1) = k*y(1)*y(2)*Ca0 - y(3)/tau
    et je remet le code de mon script :

    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
    %% Données de départ
     
    global Ca0 Ca0p Cb0 k tau Cc y0 
    Ca0 = 0.1;  % Concentration initiale en A [mole/L]
    Ca0p = 1;   % Concentration ??
    Cb0 = 0.4;
    k = 2;
    tau = 100;
    Cc=0; % juste pour fixer valeur
     
    y0 = [Ca0 Cb0 Cc]; % on définit le vecteur avec les concentrations initiales en A et B, et la conc finale en C
     
     
    % graphique
     
    [t,y]=ode45(@ff,tspan,y0)

  7. #7
    Invité
    Invité(e)
    Par défaut
    À moins que tu ne l'aies renommée, c'est de la variable tspan de cette ligne [t,y]=ode45(@ff,tspan,y0) dont il est question, variable que tu n'as effectivement pas définie.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Justement, je ne vois pas trop comment définir la fonction tspan ?
    Je ne l'ai jamais utilisé..

  9. #9
    Invité
    Invité(e)
    Par défaut
    Ce n'est pas une fonction, mais une variable, qui désigne le domaine d'arrivée souhaité.

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Ah oui désolé je voulais dire variable...
    Faut t-il la définir avant la fonction ode45?

    tspan = [t0 tf]

  11. #11
    Invité
    Invité(e)
    Par défaut
    Avant son utilisation oui

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Ok ok merci .

    Mais dans mon cas, que je mette ça ou par exemple tspan[1 50], ça ne fonctionne toujours pas :s.
    Enfin tu saurai me montre ce qui ne va pas dans mon code? car j'ai toujours un problème :s.
    Merci

  13. #13
    Invité
    Invité(e)
    Par défaut
    Problème que je dois encore deviner ?
    Si c'est un autre undefined sur la variable k, j'espère que tu a quand même su le corriger tout seul ?

  14. #14
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Bonjour,

    tspan correspond à ton "temps".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    % Resolution des equations
     
    t0 = 0; % instant initial en secondes
    tf = 10; % instant final en secondes
    dt = 0.01; % intervalle de temps
     
    tspan = [t0:dt:tf]; % definition de ta base temporelle
     
    [t,y]=ode45(@ff,tspan,y0); % resolution
     
    % Graphique
     
    plot(t,y);
    Cordialement,
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/12/2006, 12h01
  2. Réponses: 1
    Dernier message: 08/12/2006, 17h13
  3. Programmation et équation différentielle
    Par The_FD dans le forum MATLAB
    Réponses: 4
    Dernier message: 25/10/2006, 21h44
  4. méthode d'euler, équation différentielle
    Par totoflingueur dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 20/04/2006, 23h44

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