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écalage de courbes


Sujet :

MATLAB

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Décalage de courbes
    Bonjour à tous,

    Voilà je vous explique mon problème. Nous devons étudier, mon camarade et moi, un système de masse accroché à un ressort déposé sur un plan incliné. Cette masse est soumise à la force poids, à la force de rappel du ressort et aux forces de frottement. Nous devons au final tracer un graphique de la variation de la position de la masse en fonction du temps.
    Nous obtenons deux équations:
    Pour la descente: (m*g*(sin(teta) - f*cos(teta)))*(1-cos(sqrt(k/m)*t))*(1/k) + x0*cos(sqrt(k/m)*t)
    Pour la montée: (m*g*(sin(teta) + f*cos(teta))).*(1-cos(sqrt(k/m)*t))*(1/k) + x0*cos(sqrt(k/m)*t)
    avec x0 = position d'équilibre, f= coefficient de frottement, teta= angle en radian, g= 9.81, k= constante de raideur du ressort, m=masse et t= temps.

    Nous devons réaliser ce modèle sous Matlab.
    Nous obtenons comme 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    global m g f teta x0 k T Ff Fr Fp 
     
    m = 2 ;
    g = 9.81;
    f = 0.8;
    teta = pi/8;
    x0 = 2;
    k  = 200;
    T = (2*pi)/(sqrt(k/m))
    Ff = m*g*f*sin(teta);
    Fr = k*x0;
    Fp = m*g*cos(teta);
    if x0 > 0
     
    if Fr > Fp + Ff
                xmontee= @(t) ((m*g*(sin(teta) + f*cos(teta)))*(1-cos(sqrt(k/m))*(t))*(1/k) + (x0*cos(sqrt(k/m)*t)));
                t =linspace(0,T/2,1200);
                plot(t,xmontee(t),'b')
                hold on
     
               ttot = t
               xtot = xmontee
     
               tini = ttot(end)
               xini = xtot(tini)
     
               critarret = abs(xini) < 0.1 
     
      while (critarret == 0) 
     
          if Fp + k*abs(xini) > Ff
     
                xdescente = @(t) ((m*g*(sin(teta) - f*cos(teta)))*(1-cos(sqrt(k/m))*(t))*(1/k) + (xini*cos(sqrt(k/m)*(t))));
                t = linspace(0,T/2,1200);
                plot(t,xdescente(t),'r')
                tini2 = t(end) + T/2;
                xtot2 = xdescente;
                xini = xtot2(tini2);
                hold on
     
     
                if k.*abs(xini) > Fp + Ff
                    xmontee= @(t) ((m*g*(sin(teta) + f*cos(teta)))*(1-cos(sqrt(k/m))*(t))*(1/k) + (xini*cos(sqrt(k/m)*t)));
                    t =linspace(0,T/2,1200);
                   tini3 = t(end) + T/2;
                   xtot3 = xmontee
                   xini = xtot3(tini3)
                    plot(t,xmontee(t),'b')
                    %ttot = [ttot tini3]
                     %xtot = [xtot xmontee]
                    hold on
                end
     
     
     
          end
          critarret = abs(xini) < 0.1 
      end
    end
    end
    Et la figure est:
    Nom : Capture.JPG
Affichages : 1471
Taille : 41,5 Ko

    Ils nous faudraient savoir comment décaler les courbes bleu (également les retourner) et rouges pour qu'elles soient mises l'une à côté de l'autre.

    Même la plus petite aide nous serait grandement profitable!

    Merci d'avance!

  2. #2
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    salut

    par exemple
    - pour les retourner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(t,xmontee(t(end:-1:1)),'b')
    - pour les décaler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(t+xdec,xmontee(t)+ydec,'b')
    ou xdec et ydec définissent ton décalage

    Fabien

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par le fab Voir le message
    salut

    par exemple
    - pour les retourner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(t,xmontee(t(end:-1:1)),'b')
    - pour les décaler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(t+xdec,xmontee(t)+ydec,'b')
    ou xdec et ydec définissent ton décalage

    Fabien
    Merci le fab de ta réponse.

    Je peux essayer avec une boucle for ou while pour le décalage

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    J'obtiens finalement ce graphique-ci: Nom : Capture.JPG
Affichages : 1412
Taille : 30,8 Ko

    Mon code reste :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    global m g f teta x0 k T Ff Fr Fp 
     
    m = 2 ;
    g = 9.81;
    f = 0.8;
    teta = pi/8;
    x0 = 2;
    k  = 150;
    T = (2*pi)/(sqrt(k/m))
    Ff = m*g*f*sin(teta);
    Fr = k*x0;
    Fp = m*g*cos(teta);
    decal=0;
    decal2=0;
     
     
    if Fr > Fp + Ff
                xmontee= @(t) ((m*g*(sin(teta) + f*cos(teta)))*(1-cos(sqrt(k/m))*(t))*(1/k) + (x0*cos(sqrt(k/m)*t))); 
                t =linspace(0,T/2,1200);
                plot(t,xmontee(t),'b')
                hold on
     
               ttot = t;
               xtot = xmontee;
     
               tini = ttot(end);
               xini = xtot(tini);
     
               critarret = abs(xini) < 0.1 ;
     
      while (critarret == 0) 
     
          if Fp + k*abs(xini) > Ff 
     
                xdescente = @(t) ((m*g*(sin(teta) - f*cos(teta)))*(1-cos(sqrt(k/m))*(t))*(1/k) + (xini*cos(sqrt(k/m)*(t))));
                t = linspace(0,T/2,1200);
                plot(t+decal*T+(T/2),xdescente(t),'r')
                decal=decal+1;
                tini2 = t(end) + T/2;
                xtot2 = xdescente;
                xini = xtot2(tini2);
                hold on
              %descente
     
                if k.*abs(xini) > Fp + Ff
                   xmontee= @(t) ((m*g*(sin(teta) + f*cos(teta)))*(1-cos(sqrt(k/m))*(t))*(1/k) + (xini*cos(sqrt(k/m)*t)));
                   t =linspace(0,T/2,1200);
                   tini3 = t(end) + T/2;
                   xtot3 = xmontee;
                   xini = xtot3(tini3);
                    plot(t+(T)+decal2*T,xmontee(t(end:-1:1)),'b')
                 decal2=decal2+1;
                    hold on
                end
                %montée
     
     
         end
          critarret = abs(xini) < 0.1 ;
     
      end
    end
    Savez-vous pourquoi ma courbe commence au dessus de x0 qui est la position initiale? Cela a une influence sur tout le reste de la fonction....

    Je vous remercie d'avance pour votre aide.

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    xmontee= @(t) ((m*g*(sin(teta) + f*cos(teta)))*(1-cos(sqrt(k/m))*(t))*(1/k) + (x0*cos(sqrt(k/m)*t)));
    % Nous avons: x0*cos(sqrt(k/m)*t) = 2 pour t=0
    %  m*g*(sin(teta) >0
    % cos(sqrt(k/m))*(t)) = 1 (pour t=0) donc  f*cos(teta)))*(1-cos(sqrt(k/m))*(t))*(1/k) = 0
    Je ne vois rien d'anormal à ce qu'en t=0, xmontee >2

    Edit: ce qui signifie que si x0 est bien la position initiale, alors il y a une erreur dans l'équation
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/02/2015, 13h47
  2. Décalage de courbe sur abscisse
    Par Adakhum dans le forum MATLAB
    Réponses: 4
    Dernier message: 28/09/2014, 21h04
  3. Problème de décalage de la courbe dans TPerformanceGraph
    Par Jotomaticen dans le forum C++Builder
    Réponses: 0
    Dernier message: 19/09/2009, 13h38
  4. Décalage courbes Excel
    Par khaskhos dans le forum Excel
    Réponses: 2
    Dernier message: 02/09/2008, 09h47
  5. [VB6] [MSChart] Courbe incorrecte
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 08/10/2002, 21h53

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