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

Scilab Discussion :

Méthode d'Euler sur une équation différentielle du 2è ordre


Sujet :

Scilab

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Méthode d'Euler sur une équation différentielle du 2è ordre
    Bonjour,

    Je dois tracer l'évolution d'une vitesse angulaire d'une voiture dans un looping parfaitement rond. De ce fait j'ai utilisé Scilab, et j'ai eu un résultat satisfaisant. Mais le problème vient lors du changement de mes variables: En les rendant plus grandes pour simuler une situation réelle, Scilab se plaint qu'il y a trop de calculs à faire et refuse d'en faire plus de 500.
    L'erreur que je reçois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    lsoda--  at t (=r1), mxstep (=i1) steps   
    needed before reaching tout
          where i1 is :        500                                                  
          where r1 is :   0.2343607491632D+01                                       
    Excessive work done on this call (perhaps wrong jacobian type).
    De ce fait, j'ai voulu utiliser la méthode d'Euler, mais je ne comprends pas comment l'utiliser. Pouvez-vous m'aider svp?

    Mon code:

    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
    clear()
     
    // Déclarer les variables et les fonctions nécessaires au calcul :
    mu=0.01;
    m=1760;
    rho=1.225;
    scx=0.0273;
    R=6.;
    g=9.81;
     
    // Accélération angulaire
    function tpp=f(t, tp)
        tpp=mu*tp(1)^2-1/(m*2)*rho*scx*R*tp(1)^2-1/R*mu*g*cos(t)-1/R*m*g*cos(t);
    endfunction
     
    tpInitiales=[25/R]; // Vitesse angulaire initiale [x]
    t0=0; // Temps de départ
    t=0:0.1*%pi:%pi; // Pas
    tp =ode(tpInitiales,t0,t,f); // Vitesse angulaire
     
    //Vitesse angulaire en fonction du temps
    plot2d(t, tp(1,:), style=[2]);
     
    b=gca();
    b.title.text='Vitesse angulaire en fonction du temps';
    b.x_label.text='Temps (s)';
    b.y_label.text='Vitesse angulaire (rad.s^-1)';
    J'avais trouvé cette fonction et l'ai retouchée pour l'adapter à mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function [liste_tp,liste_t]=Euler(tp0,N,T) 
        // Version 3
        tp=tp0;liste_tp=[tp0]; 
        t=0;liste_t=[0];
        h=T/N; 
        for i=1:N 
            tp=tp+h*f(t,tp); 
            t=t+h; 
            liste_tp=[liste_tp,tp]; 
            liste_t=[liste_t,t];
        end 
    endfunction
    Mais elle me renvoie des résultats impossibles (Une vitesse angulaire de 4.88D+104 rad/s).

    Merci en avance!

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Novembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2020
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    A première votre pas de calcul est très petit, donc quand vous dérivez sur un nombre très petit vous avez un résultat énormément grand.

    Cordialement.

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/02/2019, 17h59
  2. [Débutant] résoudre une équation différentielles par la méthode d'Euler
    Par rahimdz dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/12/2014, 07h43
  3. Réponses: 2
    Dernier message: 22/11/2007, 14h58
  4. Réponses: 8
    Dernier message: 08/04/2007, 01h38
  5. Réponses: 1
    Dernier message: 08/12/2006, 17h13

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