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 :

programmer equation différentiel sous matlab


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Par défaut programmer equation différentiel sous matlab
    Salamo alaykom
    Je dois programmer :
    1) l’equation de malthus sous matlab
    N´(t)=r N(t) sa solution : N(t)=No exp(rt)
    avec r=a-b, a=naissance d espèce et b=dècé
    merci d avance ..

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Par défaut
    bonsoir

    avec r=a-b, a=naissance d espèce et b=dècé
    sans valeurs numériques, l'indication des ces variables n'a pas une grande valeur, on ne sait pas si r>0 ou r<0, mais r doit être <0 pour que la réponse soit stable(N(t))
    j'ai modifié un code dans le help de ode45, je ne sais pas s'il y a une idée plus simple mais ça doit marcher:

    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
    close all
    clc
    clear
    Tspan = [1:0.1:10]; % tu peux modifier le vecteur temps
    gt=Tspan;
    ft=gt;
    IC = 5; % condition initiale N0 = 5 tu peux la modifier aussi
     
    for i=1:length(Tspan)
        f(i)=1;% f(i)=-r donc ici j'ai pris r=-1 à modifier aussi
        g(i)=0;%doit être 0 toujours (pour ce cas d'équation)
    end
    [T Y] = ode45(@(t,y) myode(t,y,ft,f,gt,g),Tspan,IC); % Solve ODE
     
    plot(T, Y);
    title('Plot of y as a function of time');
    xlabel('Time'); ylabel('Y(t)');
    je connais un ami Achhab, je ne sais pas si c'est toi
    fait attention à
    au début de code pour ne pas perdre du travail

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Par défaut
    bsr ,

    j' ai testé ce que vous avez proposé mais malheuresement il n'a pas marché , concernant l'indication des variables il faut que je teste les trois cas ..
    j ai créer un fichier script dans lequel j ai collé le code que vs avez proposé .. puis j' ai tapé son nom dans " command window "
    voila ce qu' il affiché :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     ??? Undefined function or method 'myode' for input arguments of type 'double'.
     
    Error in ==> @(t,y)myode(t,y,ft,f,gt,g)
     
     
    Error in ==> odearguments at 111
    f0 = feval(ode,t0,y0,args{:});   % ODE15I sets args{1} to yp0.
     
    Error in ==> ode45 at 173
    [neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
     
    Error in ==> forummalthus at 11
    [T Y] = ode45(@(t,y) myode(t,y,ft,f,gt,g),Tspan,IC); % Solve ODE
    ps. c'est une amie nommée Achhab

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Par défaut
    bonjour
    tu as raison, j'ai oublié de t'envoyer le code de la fonction myode
    le voilà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function dydt = myode(t,y,ft,f,gt,g)
    f = interp1(ft,f,t); % Interpolate the data set (ft,f) at time t
    g = interp1(gt,g,t); % Interpolate the data set (gt,g) at time t
    dydt = -f.*y + g; % Evalute ODE at time t
    elle doit être enregistrée sous le nom myode dans le même répertoire que ton fichier script.
    normalement ça doit marcher lorsque tu exécutes ce dernier.
    Concernant la discussion selon le cas, je te laisse le faire (des conditions if)
    ps. c'est une amie nommée Achhab
    laisses tomber.

Discussions similaires

  1. Programmation orienté agent sous MATLAB
    Par welbiz dans le forum MATLAB
    Réponses: 1
    Dernier message: 14/05/2010, 07h45
  2. équations différentielles sous matlab
    Par cocanouar dans le forum MATLAB
    Réponses: 3
    Dernier message: 22/03/2009, 18h15
  3. Réponses: 11
    Dernier message: 22/04/2007, 10h58
  4. Lire un programme écrit sous MATLAB
    Par tipi09 dans le forum Octave
    Réponses: 2
    Dernier message: 06/10/2006, 10h43

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