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 résolution ODE 45 d'une équation diff


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 58
    Points : 37
    Points
    37
    Par défaut Problème résolution ODE 45 d'une équation diff
    bonjour à tous j'ai un problème avec la résolution d'une équa diff sous matlab et je ne comprends pas pourquoi :

    erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    When the first argument to ode45 is a function handle, the tspan argument must have at
    least two elements.
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    %temps
    t0 = 0; tf =length(10801)-1; dt = 1; 
    tps = t0:dt:tf;
     
    % paramètres modèle
    kr = 0.00048; %s-1
    kd = 0.000299; %s-1
    tau = 1/0.1460; % s
    sigma = 0.0019; % m2/umol
    mu0 = 0.02;
     
    % conditions initiales et para
     
    % model
    C0 = 1;
    CI = [C0];
    % Lumier
    I0 = 84; % uE.m-2.s-1 (ce que nos led vont donner au max)
    a = - log(0.01)/tf; % Coefficient d'absorption
    I = repmat(I0,1,length(tps));
    %I = I0.*exp(-a*tps);
     
    % paramètres
    par = [sigma tau kr kd];
     
    % Simulations
     
    %X = [Sin P0 q0]; 
     
    [t u]=ode45(@(t,x)f_stage(t,x,par,I),tps,CI);
    fonction :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    function du = f_stage(t,x,par,I)
     
    % Résoud le système differentiel du modèle de Han 
    % V1 : lumière considéré comme consante.
     
    %% ----------------------------------------------------
    % Variables, Paramètres et fcts
    du = zeros(1,1);
     
    % Paramètres
    sigma = par(1);
    tau = par(2);
    kr = par(3);
    kd = par(4);
     
     
    % Variable d'état 
    C = x(1,:);
     
    tp = floor(t*1) +1;
     
    %% -------------------------------------------------
    % Système ODEs
    du(1) = kd*(sigma*I(tp) - sigma*I(tp).*(1-C)./(I(tp)*sigma*tau + 1)- (sigma*I(tp)+kr).*C);
     
    end
    Savez-vous quel est mon problème ?
    merci beaucoup pour votre aide.
    DJ

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

    Si tu sais lire l'anglais, le message est assez clair :
    Lorsque le premier argument passé à la fonction ode45 est un handle de fonction, l'argument tspan doit avoir au moins deux éléments.
    Ta ligne d'appel est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [t u]=ode45(@(t,x)f_stage(t,x,par,I),tps,CI);
    La documentation ainsi :
    Citation Envoyé par doc ode45
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [T,Y] = solver(odefun,tspan,y0)
    tspan correspond donc à ta variable tps.
    Regarde donc ce que contient tps et remonte là où tu l'as fixé

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    Arf en effet j'avais pas vu mon vecteur temps ... désolé.
    Le problème c'est que j'ai une nouvelle erreur et je comprends pas pourquoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Expression or statement is incomplete or incorrect.
     
    Error in ==> @(t,x)f_stage(t,x,par,I)
    or je vois pas ce qui manque dans mon expression d'ODE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [t u]=ode45(@(t,x)f_stage(t,x,par,I),tps,CI);
    ???

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

Discussions similaires

  1. [Débutant] Résolution avec optimisation d'une équation algébrique
    Par RosaBlanca dans le forum MATLAB
    Réponses: 4
    Dernier message: 03/10/2013, 10h49
  2. Résolution d'une équation trigonométrique
    Par tlemcenvisit dans le forum Algorithmes et structures de données
    Réponses: 21
    Dernier message: 20/08/2009, 18h47
  3. [ode] Résolution d'une équation de transport
    Par miyare dans le forum MATLAB
    Réponses: 1
    Dernier message: 09/06/2007, 02h28
  4. Résolution d'une équation
    Par johnvox dans le forum Delphi
    Réponses: 6
    Dernier message: 13/02/2007, 11h04
  5. Résolution d'une équation par Gauss
    Par rahmani01 dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/11/2006, 23h15

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