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

Calcul scientifique Python Discussion :

Intégration d’une liste


Sujet :

Calcul scientifique Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Intégration d’une liste
    Bonjour,

    Alors voici mon problème, j'ai effectué une série de mesure avec un accéléromètre me donnant une valeur d'accélération toutes les 10ms.

    J'ai récupéré ces données dans une liste Python, tracé un graphe en fonction du temps et maintenant j'aimerais intégrer 2 fois ces valeurs afin d'obtenir la position mais je n'y parviens pas.

    J'ai pensé à la méthode d'Euler mais je ne parviens pas à la mettre en oeuvre dans ce cas là...

    Merci d'avance pour votre aide !

  2. #2
    Membre émérite

    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
    Points : 2 328
    Points
    2 328
    Par défaut
    Non pour intégrer, ce n'est pas la méthode d'Euler, mais les méthodes des rectangles ou des trapèzes par exemple.
    Ce sont des méthodes déjà toutes développées dans scipy. Pour la méthode des trapèzes, par exemple:

    https://docs.scipy.org/doc/scipy/ref...ate.trapz.html

  3. #3
    Membre habitué
    Homme Profil pro
    Vagabong étudiant en annalyse du signal.
    Inscrit en
    Avril 2019
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Vagabong étudiant en annalyse du signal.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2019
    Messages : 123
    Points : 162
    Points
    162
    Par défaut
    Bonjour,

    Effectivement, Euler ça sert à résoudre des équations différentielles, pas à intégrer.

    Bien que scipy soit capable de le faire très efficacement, il peut être intéressant de le coder à la main pour comprendre le mécanisme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    def integral(liste, y0, dt):
    	"""
            integre une fonction qui passe par tous les points
            d'ordonnee 'liste'
            et d'abscisse n*'dt'
            """
    	resultat = y0      # valeur de la contante de la primitive
    	for i in range(len(liste)-1): # on parcours tous les points 2 a 2
    		resultat += dt*(liste[i]+liste[i+1])/2 	# methode des trapezes, ici on ajoute l'aire du trapeze entre le point i et i+1
    	return resultat
    Ce code te renvoi l'intégrale sous toute la courbe, si tu veux intégrer 2 fois, il ne te faut pas une intégrale mais une primitive.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    def primitiv(liste, y0, dt):
    	"""
            primitive une fonction qui passe par tous les points
            d'ordonnee 'liste'
            et d'abscisse n*'dt'
            """
    	resultat = y0
    	yield y0                                                  # a la difference d'avant, on cede le resultat au fur a meusure
    	for i in range(len(liste)-1):				# on parcours tous les points 2 a 2
    		resultat += dt*(liste[i]+liste[i+1])/2 	# methode des trapezes, ici on ajoute l'aire du trapeze entre le point i et i+1
    		yield resultat
    dans un cas particulier on pourrait imaginer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def position(liste_acceleration, vitesse_initiale, position_initiale, dt):
    	liste_vitesse = list(primitiv(liste_acceleration, vitesse_initiale, dt))
    	return integral(liste_vitesse, position_initiale, dt)

  4. #4
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Citation Envoyé par robinechuca Voir le message
    Ce code te renvoi l'intégrale sous toute la courbe, si tu veux intégrer 2 fois, il ne te faut pas une intégrale mais une primitive.
    [/CODE]
    ???
    Pas d'aide par mp.

  5. #5
    Membre habitué
    Homme Profil pro
    Vagabong étudiant en annalyse du signal.
    Inscrit en
    Avril 2019
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Vagabong étudiant en annalyse du signal.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2019
    Messages : 123
    Points : 162
    Points
    162
    Par défaut
    Je différencie une primitive d'une intégrale au sens où la primitive est une fonction tandis que l'intégrale est un nombre.
    PRIMITIVE: Formule mathématique

    INTEGRALE: Formule mathématique

Discussions similaires

  1. Liste chainée+Gestion dune liste client
    Par boby35 dans le forum C
    Réponses: 8
    Dernier message: 01/12/2007, 12h25
  2. Selectionner tous les items d´une liste lors du submit
    Par makohsarah dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/07/2007, 12h50
  3. Réponses: 10
    Dernier message: 20/04/2007, 23h16
  4. rechargement a partir dune liste
    Par basteigne dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/06/2006, 01h42
  5. Réponses: 6
    Dernier message: 27/03/2006, 19h11

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