Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Basic]Fonction nombre de rebonds d'une balle

    13 février 2011 à 17:30:59

    Bonjour, je fait une programme pour les TPE dans mon lycée, je doit effectuer un programme permettant de donner le nombre de rebonds d'une balle suivant la hauteur à laquelle on lâche la balle et la masse de la balle. Pour l'instant j'ai préparé la forme du programme.

    Voila ce que j'ai pour le moment sur Purebasic version4.51

    Citation


    #Fenetre=0
    #Texte1=0
    #Texte2=1
    #Texte3=2
    #Texte4=3
    #Strings1=4
    #Strings2=5
    #Bouton=6

    OpenWindow(#Fenetre,0,0,1018,680,"Nombre de rebonds d'une balle",#PB_Window_SystemMenu)

    TextGadget(#Texte1,10,10,150,20,"Hauteur du lacher")
    TextGadget(#Texte2,10,50,150,20,"Masse de la balle")
    TextGadget(#Texte3,175,10,50,20,"M")
    TextGadget(#Texte4,175,50,50,20,"Kg")
    StringGadget(#Strings1,100,10,70,25,"")
    StringGadget(#Strings2,100,50,70,25,"")
    ButtonGadget(#Bouton,10,90,150,25,"Calcul du nombre de rebonds")

    Repeat
    event=WaitWindowEvent()
    Until event=#PB_Event_CloseWindow
    End



    Je cherche la fonction qui me permettra de trouver un résultat cohérant avec la réalité.
    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      13 février 2011 à 18:04:07

      J'ai l'impression que ta question n'a rien à voir avec de l'informatique, mais plus avec de la physique, pour trouver ta fonction je te conseillerai d'aller voir du côté du forum Physique-Chimie de la partie Sciences, tu auras plus de chances.

      Après si tu connais les calculs à faire et que c'est vraiment sur le code que tu galère, alors il y aura bien quelqu'un pour t'aider ici.
      • Partager sur Facebook
      • Partager sur Twitter
        13 février 2011 à 18:06:43

        ^^ Pas faux, je vais jeter un coup d'oeil.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          13 février 2011 à 19:56:21

          Bonjour,
          une suggestion pour une modélisation physique simple
          Pour simuler les rebonds successifs d'une balle, masse et hauteur ne suffisent pas.
          Il faut faire une hypothèse sur l'amortissement à chaque rebond ...sinon la balle va rebondir indéfiniment en remontant à la même hauteur!
          Si on veut une modélisation un peu réaliste physiquement ( et ne pas se contenter d'une baisse arbitraire de hauteur fixée à chaque rebond), on peut, tout en restant trés simple, considérer une perte d'énergie q à chaque choc, . C'est bien physiquement ce qui se passe .

          On part de h0, on calcule la vitesse v0 au moment du premier choc ( calcul élémentaire de la chute des corps) Je calcule la vitesse v1 à laquelle la balle repart en écrivant que sa nouvelle énergie 1/2m(v1)^2 vaut (1-q)mv0^2 . Connaissant v1, je calcule la nouvelle hauteur h1 de remontée. J'itére le processus et obtient une succession de vitesses et de hauteurs h1,h2,...,hn
          J'arréte quand hn~0.
          En jouant sur q, je peux simuler des rebonds type bille d'acier sur sol dur (q faible) avec de nombreux rebonds de plus en plus proches jusqu'à une balle molle sur sol mou (g élevé, écrasement rapide)
          On peut toujours ajuster q par l'expérience en comptant les rebonds de différentes balles sur différents sols!

          • Partager sur Facebook
          • Partager sur Twitter
            14 février 2011 à 8:03:36

            Citation : nabucos

            J'arréte quand hn~0.



            Quelle sens donner à cela ?
            Ne faudrait il pas plutôt jouer sur l'énergie plutôt que sur une quelconque hauteur de rebond pour savoir "à partir de quand la balle reste au sol" ?

            Aladix, qui ne connait rien à la physique :)
            • Partager sur Facebook
            • Partager sur Twitter
              14 février 2011 à 12:15:54

              Les deux sont liés :)
              Si la quantité d'énergie de la balle au n-eme rebond est presque nulle, alors la hauteur maximale le sera aussi (au sommet du rebond, Eballe = Epotentielle pesanteur = M* g * hn)
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                14 février 2011 à 16:40:52

                Bonjour,
                hn~0 :Melepe a répondu
                Je précise néanmoins .
                Un modéle physique simple ne peut pas strictement représenter la réalité. Mathématiquement dans ce modèle h tend vers zéro sans formellement s'annuler.
                Pour arrêter la boucle du programme, vous tester alors une hauteur hr résiduelle suffisamment petite.
                Comme pour q, vous pouvez tester expérimentalement la valeur de hr à prendre pour que cela soit réaliste.

                • Partager sur Facebook
                • Partager sur Twitter
                  14 février 2011 à 16:43:17

                  Euh je veut rester dans un programme assez simple (c'est mon premier), je voudrais donc rester avec seulement deux variables. Mais je ne sait pas comment écrire ça.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 février 2011 à 18:28:55

                    Eh bien, si tu fais ce que t'a dit nabucos, en prenant deux variables paramétrables (la hauteur du lancer et la masse de la balle), ainsi que deux "variables" fixes (la perte d'énergie à chaque rebond et le champ gravitationnel, g=9,81m/s^2), tu as de quoi résoudre ton problème.
                    Si tu as besoin d'aide, voici un plan à suivre :

                    modéliser sur le papier le modèle que tu vas étudier


                    As-tu vu la chute des corps en physique ? Si oui, tu dois être familier avec énergie cinétique et énergie potentielle. Ainsi, au début de l'expérience, tu as une énergie mécanique dans la balle égale à son énergie potentielle de pesanteur E=mgh (car au début, la vitesse est nulle donc Ec=0).
                    Au sommet du premier rebond, la balle aura perdu q joules ( q que tu définiras plus tard), et plus généralement n*q au sommet du n i eme rebond. Ainsi, l'énergie mécanique suit une décroissance affine. En théorie, on devrait donc s'arrêter dès que l'énergie mécanique devient nulle.

                    Sauf que tout n'est pas aussi parfait. :D Dans le grandes lignes, cela est dû au fait que notre modèle n'est pas tout à fait juste. Par contre, il l'est jusqu'à ce que la hauteur du rebond devienne très faible. Coup de chance, à ce moment là on peut considérer que la balle est par terre et qu'elle ne bougera plus. (parce que quand la balle fait des rebonds de 1mm, on peut estimer qu'elle n'en fait plus). Donc on retient et on encadre en rouge : on s'arrête lorsque l'énergie de la balle sera très courte. Encore une fois, on déterminera cette valeur limite un peu plus tard.

                    Déterminer les valeurs [TP]


                    Hop, on sort une balle de tennis, et on se met au boulot ! :p
                    Première étape : mesure de q.
                    Pour ça, on sait que au sommet du premier rebond, E1= Epp= mgh1. Or, au début, on avait E0=mgh0. Donc entre les deux rebonds, la balle a perdu une quantité q d'énergie, ce q que tu cherches !
                    Autrement dit, tu mesures la hauteur à partir de laquelle tu lâches la balle, et la hauteur de la balle au sommet du premier rebond. En multipliant la différence trouvée par mg, tu trouves q.
                    Ensuite, mesure de Emin, à partir de quand on considère que la balle est au repos.
                    Là, il n'y a pas de miracle, il faut donner soi même une valeur. Par exemple, si tu considères que tu négliges tous les rebonds de moins de 1cm, alors tu trouves Emin= mg*0,01.

                    Coder son programme


                    Bon, là je ne vais pas te donner de code source, je n'y connais rien en Basic, mais deux idées que tu peux suivre :
                    La première, plus bourrin, consiste à calculer En pour n variant de 1 ( ou 0) à ..., tant que En>=Emin.
                    En gros : rebonds=0 ; E= m*g*h ;
                    While E >= m*g* hmin do
                    E=E-q ; rebonds = rebonds+ 1
                    done;
                    Disp rebonds-1;
                    (édit : je mets rebonds -1 parce que la balle va toucher au moins une fois le sol, ce qui ne signifie pas qu'elle rebondira au moins une fois, si par exemple q > E0).


                    Sinon, une méthode bien plus mieux (si j'ose dire) : en gros, puisque tu sais que En = mgh - nq, tu résous En<= mghmin, puis tu revoies la valeur arrondie au supérieur de n.


                    Voilà, je t'ai absolument tout donné ; mais si tuo as encore des questions n'hésite pas. :)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 mars 2011 à 12:00:19

                      Je viens tout juste de voir la chute des corps en physique, pourrait-tu donc me dire ce que tu appelle "En" et ce que tu appelle énergie mécanique. :euh:
                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 mars 2011 à 22:40:12

                        En, c'est l'énergie mécanique de ta balle au nième rebond.

                        L'énergie mécanique, c'est la somme de l'énergie potentielle et de l'énergie cinétique. C'est un concept qui permet de vérifier que, tant que la somme des forces est nulles, l'énergie se conserve (l'énergie cinétique se transforme en "énergie potentielle", et vice versa).
                        • Partager sur Facebook
                        • Partager sur Twitter

                        [Basic]Fonction nombre de rebonds d'une balle

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown