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 :

[Débutant][ODE45] Problèmes à l'utilisation de la fonction


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [Débutant][ODE45] Problèmes à l'utilisation de la fonction
    version de mon matlab :Matlab 7.0.0.19920 (R14)

    je viens de créer deux fonctions :diff2.m et diffapp2.m

    La seconde appelle la fonction matlab ode45 (il semblerait que l'erreur soit a cet endroit). Lle but de cette fonction est de résoudre une équation différentielle qui modélise un funambule sur un fil.

    J'ai tapé egalement help ode45 et je ne trouve pas la solution, j'ai essayé plein de possibilités et toujours des erreurs.

    diff2.m:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    %   K1x"=K2sin(x)+Cm+Co-Cc
    %   K9(x"+y")=Cc-Cm
    %   Co=-K3sign(x')-K4x'
    %   Cc=-K5sign(y')-K6y'
    %   Cm=-K7x-K8x'
    function xdt=diff2(t,x)
    %   initialisation et normalisation
     
    xdt=[0000]';
    K1=0.92;
    K2=16.94;
    K3=0.5;
    K4=0.1;
    K5=1.0;
    K6=0.5;
    K7=0.0;
    K8=0.0;
    K9=2.99;
    K21=K2/K1;
    K31=K3/K1;
    K41=K4/K1;
    K51=K5/K1;
    K61=K6/K1;
    K71=K7/K1;
    K81=K8/K1;
     
    %   teta est x(2), alpha x(4)
    %   calcul de la vitesse en teta xdt(2) et en alpha xdt(4)
     
    xdt(2)=x(1);
    xdt(4)=x(3);
     
    %   calcul de l'acceleration en teta
     
    xdt(1)=K21*sin(x(2))+(-K31*sign(x(1))-K41*x(1))-(-K51*sign(x(3))-K61*x(3))+(-K71*x(2)-K81*x(1));
     
    %   calcul de l'acceleration de alpha
     
    xdt(3)=-xdt(1)+(-K5*sign(x(3))-K6*x(3))/K9-(-K7*x(2)-K8*x(1))/K9;
    diffapp2.m:
    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
    32
    33
    34
    %   vitesse initiale en teta
    a0=0;
     
    %   position initiale en teta
    b0=10*pi/180;
     
    %   vitesse initiale en alpha
    c0=0;
     
    %   position initiale en alpha
    d0=-10*pi/180;
     
    %   origine du temps
    t0=0;
     
    %   temps final
    tf=10;
     
    %   appel
     
    [t,x]=ode45(@diff2,[t0 tf],[a0 b0 c0 d0]',2e-3,0);
     
    %   tracé
    teta=x(:,2);
    alpha=x(:,4);
     
    subplot(2,1,1);
    plot(t,teta);
    grid;
    title('teta');
    subplot(2,1,2);
    plot(t,alpha);
    grid;
    title('alpha');
    messages d'erreur de diff2.m:
    ??? Input argument "x" is undefined.

    Error in ==> diff2 at 30
    xdt(2)=x(1);
    messages d'erreur de diffapp2.m:
    Error in ==> funfun\private\odearguments at 110
    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, ...

    Error in ==> diffapp2 at 21
    [t,x]=ode45(@diff2,[t0 tf],[a0 b0 c0 d0]',2e-3,0);
    merci d'avance pour votre aide ou votre réponse.

  2. #2
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Salut,

    remplace ça:
    par :
    et ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [t,x]=ode45(@diff2,[t0 tf],[a0 b0 c0 d0]',2e-3,0);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [t,x]=ode45(@diff2,[t0 tf],[a0 b0 c0 d0]);
    ça marche?

  3. #3
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut il n'y a plus d'erreur mais...
    merci de m'avoir corrigé les erreurs, je n'ai plus de message d'erreur mais petit probleme.
    en bas a gauche de dans matlab, il y a marqué busy et j'attend, j'attend et pas de reponse pas de graph rien, avez vous essayé le programme, combien de temps je dois attendre environ, y a t il des erreurs cachées?

  4. #4
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Salut,

    Oui, en fait, j'ai remarqué que ça prend beaucoup de temps, et j'ai pas attendu jusqu'à ce qu'il termine. c'est un probleme de nombre d'itérations.

    avec tf=3, ça marche tres bien.

  5. #5
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut merci merci
    merci merci pour ton aide ca ma bien servi
    je suis obligé de garder la Tf=10 pour la simulation alors je prend mon mal en patience lol
    a bientot

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

Discussions similaires

  1. [XL-2003] Problème avec utilisation d'une fonction dans les formules
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/05/2009, 10h43
  2. problème d'utilisation de la fonction RECHERCHEV
    Par merlubreizh dans le forum Excel
    Réponses: 3
    Dernier message: 27/02/2009, 08h35
  3. Réponses: 3
    Dernier message: 10/12/2008, 22h18
  4. problème d'utilisation de la fonction cceps
    Par picard64 dans le forum Signal
    Réponses: 0
    Dernier message: 16/06/2008, 10h28
  5. [DOS] probléme d'utilisation de la fonction CALL
    Par Benjamin_es dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 19/03/2007, 16h01

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