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

Python Discussion :

Éléments égaux d'un tableau


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 8
    Par défaut Éléments égaux d'un tableau
    Bonjour, je suis étudiant en mécanique. J'ai un souci concernant la programmation sur Python, j'essaie en fait de programmer un code qui me trouverait deux valeurs identiques dans deux tableaux différents. Est-ce que quelqu'un aurait une idée ?

    Le contexte de cette démarche étant : j'ai une bille que je lance avec une vitesse donnée, celle-ci rebondit sur un plateau vibrant et repart avec une nouvelle vitesse.

    J'ai donc mes deux fonctions : celle du plateau vibrant et celle de la balle (pour un lancer). J'ai associé les valeurs de mes deux fonctions à deux tableaux, puis j'ai tracé les deux courbes (pièce jointe). Maintenant il faut que je trouve une boucle me permettant de trouver en quel point (x,y) mes deux courbes se croisent, donc en quel point la bille rebondit sur le plateau.

    Si quelqu'un à une idée de la boucle n'hésitez pas .

    Merci.
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Vous pouvez procédé comme cela par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def position_val_commune(tab1, tab2):
         for i in range(len(tab1)) :
               if tab1[i]==tab2[i] :
                     return i
         return -1
    Le souci étant que ce truc simple va fonctionner si le point d'intersection est pile dans votre tableau. Mais si les courbes se croisent entre 2 points de votre tableau, et bien là vous n'aurez pas trouvez de point commun.

    Si cette simple fonction vous suffit, très bien.
    Sinon il faut analyser le signe de la différence tab2-tab1. Dès qu'il y a un changement de signe (ca passe de + à - ou inversement) et bien vos courbes se croisent dans cet intervalle.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 8
    Par défaut
    Merci pour votre réponse.

    Je pensais que ça allait me suffire mais j'avais oublié le fait que les valeurs égales puissent se trouver entre deux points de mon tableau du coup oui il faut bien analyser le signe de la différence de mes deux courbes.. Je vais essayer de faire ça. Vous me conseillez de le faire sur papier ou est-ce que c'est possible de coder directement ça ?

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    On commence toujours sur papier. Ceux qui ne le font pas, c'est qu'ils ont suffisamment de pratique pour faire cette étape dans leur tête, mais quoi qu'il arrive, ils font cette étape et ne se jette pas directement dans le code.

    Donner vous 2 listes, simples, et faite le raisonnement sur feuille en effet en déroulant comment ca se passerait sur l'exemple que vous avez choisi.
    Et après on code.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Bonjour

    En dehors de l'aspect mathématique du calcul du point d'intersection entre une fonction de type f(x)=ax²+bx+c (trajectoire d'un corps en chute libre) et une autre de type g(x)=sin(x) (plateau rebondissant), on peut trouver les valeurs communes à deux listes a et b de la façon suivantes: set(a) & set(b).

    Et du point de vue mathématique, si le calcul du point d'intersection entre deux fonctions de ce type est trop difficile, alors on peut décomposer chaque positions des points du plateau p1 p2 p3 p4 p5
    Puis on cherche quelle position de bille b1 b2 b3 b4 b5 se trouve entre deux points (p1 p2), (p2 p3), (p3 p4) etc. (ok algorithme en n² donc un peu long mais tant pis).
    Et quand on trouve cette position (ex b3 entre p7 et p8) alors suffit de calculer le point d'intersection des droites (b3 b4) et (p7 p8) ce qui est alors bien plus facile (d'autant plus que numpy doit avoir une fonction toute faite pour ça)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 8
    Par défaut
    Bonjour,

    Merci lg_53 et Sve@r pour vos réponses, j'ai finalement opté pour la solution d'analyse du signe de la différence de mes deux courbes puis à l'aide d'une boucle for et des conditions suivantes : quand la bille est sur le plateau et quand la bille est en-dessous du plateau. J'ai initialisé un tableau de zéros pour la bille, idem pour la trajectoire puis selon les conditions précédentes j'avais une nouvelle trajectoire de bille calculée.

    Le souci étant que c'est assez compliqué dans la mesure où ce code marche mais pas pour l'amplitude a et pulsation w du plateau donnée dans l'énoncé.. On me donne w=1 et a=20 mais étonnement lorsque j'utilise une amplitude 10 fois moins grande et un w=4 je trouve des résultats un peu plus réaliste j'ai l'impression car la bille suit un peu moins la trajectoire du plateau même si j'ai toujours un moment où les deux trajectoires sont confondues ce que je trouve assez bizarre.
    Nom : a20w1.PNG
Affichages : 336
Taille : 36,5 KoNom : a2.5w4.PNG
Affichages : 358
Taille : 24,2 Ko

    Qu'en pensez-vous ?
    Merci.

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mehdi_w Voir le message
    Qu'en pensez-vous ?
    Pour la première courbe, on dirait que la bille colle au plateau quand il monte. Puis il arrive en haut et redescend. Là, la bille ayant obtenu une certaine énergie cinétique décolle du plateau et ensuite tombe avec lui mais en décalé.

    Pour la seconde courbe c'est la même idée sauf que là, le plateau remonte si vite que la bille n'a pas eu le temps de finir sa chute qu'elle est déjà en contact avec le plateau qui est remonté une seconde fois. Elle a donc moins d'Ec et décolle moins. donc la seconde chute est moins longue. La bille peut donc descendre plus bas avant de rencontrer le plateau en train de remonter pour la 3° fois. Son Ec est donc de nouveau à donf et rebelote...

    Mathématiquement, si on fait abstraction de la seconde loi de la thermodynamique (perte due aux frottements) ainsi que du rebond éventuel de la bille quand elle percute le plateau, ça semble correct.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 8
    Par défaut
    Ça me paraissait un peu bizarre le fait d'avoir les deux courbes confondues mais merci pour l'explication j'ai pu comprendre du coup

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/08/2009, 15h05
  2. Savoir si un élément existe dans un tableau
    Par peuf23 dans le forum Langage
    Réponses: 2
    Dernier message: 30/06/2006, 12h09
  3. [Tableaux] Supprimer 1 élément particulier d'1 tableau
    Par harlock59 dans le forum Langage
    Réponses: 22
    Dernier message: 17/05/2006, 16h50
  4. Supprimer les éléments diagonaux d'un tableau
    Par doubs dans le forum Pascal
    Réponses: 2
    Dernier message: 04/05/2006, 22h53
  5. Supprimé des éléments vide d'un tableau
    Par shinux2004 dans le forum Langage
    Réponses: 4
    Dernier message: 04/07/2005, 19h40

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