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 :

Modélisation exponentielle de données expérimentales [Python 3.X]


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné

    Homme Profil pro
    Technicien
    Inscrit en
    Août 2013
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 440
    Par défaut Modélisation exponentielle de données expérimentales
    Bonjour

    Etudiant la charge d'un condensateur, j'aimerais modéliser mes points expérimentaux par une exponentielle du type Uc=E*exp(-t/tau)

    J'utilise les bouts de code suivant pour la modélisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #Définition de la fonction pour la modélisation
    def fonction( x, a, b):
        return (E*exp(-x/b))
     
     
    #Modélisation des données expérimentales
    params, covar = curve_fit(fonction, temps, tension, p0 = 1e-3)
    print(params, covar)
    Mais lors du lancement de mon programme, j'ai une erreur "fonction() missing 1 required positional argument: 'b'" qui ne me permet pas de modéliser.

    Merci pour votre aide
    [Nouveau] Envie de tracer des circuits électriques : essayez le package LaTeX CircuiTikZ

    Pour créer une belle table des matières sur LibreOffice - N'oubliez pas de consulter les FAQ en cas de question !

    Envie de se lancer dans l'aventure Arduino : allez faire un tour sur ce cours.


    Ma réponse vous a plu ? Un petit vote serait sympa

  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
    votre fonction prend 2 paramètres : a et b.

    Primo, vous n'utilisez pas a à l'intérieur de la fonction. Secondo si votre fonction prend un certain nombre de paramètre, curve_fit va lui aussi prendre autant de paramètre. Donc p0 va être un vecteur de paramètres. A moins que vous ne vouliiez fitter que sur le premier paramètre, dans ce cas il faut donner des valeurs par défaut aux paramètres suivants.

  3. #3
    Membre chevronné

    Homme Profil pro
    Technicien
    Inscrit en
    Août 2013
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 440
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    votre fonction prend 2 paramètres : a et b.

    Primo, vous n'utilisez pas a à l'intérieur de la fonction. Secondo si votre fonction prend un certain nombre de paramètre, curve_fit va lui aussi prendre autant de paramètre. Donc p0 va être un vecteur de paramètres. A moins que vous ne vouliiez fitter que sur le premier paramètre, dans ce cas il faut donner des valeurs par défaut aux paramètres suivants.
    Pour le "primo", c'est une simple erreur de retranscription que je n'avais pas vu.

    pour le secondo, avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def fonction( x, a, b):
        return a * np.exp(-b * x)
     
    params, covar = curve_fit(fonction, temps, tension)
    print(params, covar)
     
    modele = []
    for val in temps:
        modele.append(fonction(val, *params))
    j'obtiens bien une modélisation mais très éloignée de mes valeurs expérimentales.
    Les valeurs calculées des paramètres de modélisation affichées sont [ 2.49007369 -16.81362805] [[0.03887448 0.41092448]
    [0.41092448 5.14600518]]
    Nom : Figure_1.png
Affichages : 1999
Taille : 29,3 Ko
    [Nouveau] Envie de tracer des circuits électriques : essayez le package LaTeX CircuiTikZ

    Pour créer une belle table des matières sur LibreOffice - N'oubliez pas de consulter les FAQ en cas de question !

    Envie de se lancer dans l'aventure Arduino : allez faire un tour sur ce cours.


    Ma réponse vous a plu ? Un petit vote serait sympa

  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
    Oui c'est normal, scipy fit au mieux. Vos données ne ressemblant pas du tout à une exponentielle décroissante, c'est obligé que le fit ne soit pas bon.
    Regarder la forme de la fonction que vous avez écrite :
    - si b est positif, alors la fonction tend vers 0 quand x est grand.
    - si b est négatif, alors la fonction tend vers l'infini quand x est grand.

    Et vous, vos données elle tende ni vers 0, ni vers l'infini ...

    D'ailleurs une exponentielle décroissante c'est plutôt la décharge d'un condensateur que la charge !

  5. #5
    Membre chevronné

    Homme Profil pro
    Technicien
    Inscrit en
    Août 2013
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 440
    Par défaut
    Je souhaite modéliser la charge d'un condensateur donc Uc=E*exp(-t/tau) avec dans mon cas une valeur de E~5V et tau~qq ms
    mes valeurs de E et tau sont positives donc a et b doivent l'être également mais ce qui n'est pas le cas dans la modélisation pour le tau comme le confirme la courbe modèle qui tourne "vers le haut" au lieu de "vers le bas"

    Peut-être faudrait-il aider la modélisation : j'ai vu dans la documentation qu'on pouvait un paramètre d'initialisation : le problème c'est que lorsqu'il y a 2 paramètres, je ne sais pas comment est la syntaxe.
    [Nouveau] Envie de tracer des circuits électriques : essayez le package LaTeX CircuiTikZ

    Pour créer une belle table des matières sur LibreOffice - N'oubliez pas de consulter les FAQ en cas de question !

    Envie de se lancer dans l'aventure Arduino : allez faire un tour sur ce cours.


    Ma réponse vous a plu ? Un petit vote serait sympa

  6. #6
    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
    extrait d'une page wikipédia :https://fr.wikipedia.org/wiki/Conden...u_condensateur

    La valeur de la tension aux bornes du condensateur en régime transitoire en fonction du temps pour un système du premier ordre est définie par la relation suivante:
    Formule mathématique
    Donc, même en considérant que V_0 est 0, vous voyez bien que la loi n'est pas de la forme que vous proposez, mais plutôt en E-E*exp(-t/tau), ce que l'on peut aussi réécrire E*(1-exp(-t/tau))

  7. #7
    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
    C'est pas faute d'avoir voulu t'aiguiller :

    Citation Envoyé par lg_53 Voir le message
    D'ailleurs une exponentielle décroissante c'est plutôt la décharge d'un condensateur que la charge !
    J'aurais peut être du écrire "charge" et "décharge" en gras.
    Pense à mettre le topic en résolu.

  8. #8
    Membre chevronné

    Homme Profil pro
    Technicien
    Inscrit en
    Août 2013
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 440
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    C'est pas faute d'avoir voulu t'aiguiller :



    J'aurais peut être du écrire "charge" et "décharge" en gras.
    Pense à mettre le topic en résolu.
    Non non, tu avais bien fait : c'est juste moi qui ai persisté dans mon erreur !
    [Nouveau] Envie de tracer des circuits électriques : essayez le package LaTeX CircuiTikZ

    Pour créer une belle table des matières sur LibreOffice - N'oubliez pas de consulter les FAQ en cas de question !

    Envie de se lancer dans l'aventure Arduino : allez faire un tour sur ce cours.


    Ma réponse vous a plu ? Un petit vote serait sympa

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

Discussions similaires

  1. Modélisation par méta données
    Par hphil dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 29/07/2014, 17h25
  2. Modélisation base de données avec visio
    Par BIDA dans le forum Visio
    Réponses: 3
    Dernier message: 07/08/2007, 14h31
  3. Modélisation par méta données de SQLPRO
    Par hphil dans le forum Requêtes
    Réponses: 10
    Dernier message: 22/07/2006, 14h32
  4. Cardinalité- modélisation base de données
    Par LaFik dans le forum Décisions SGBD
    Réponses: 28
    Dernier message: 13/06/2006, 11h50
  5. [qst] [uml] Modélisation dynamique et données.
    Par mamelouk dans le forum UML
    Réponses: 2
    Dernier message: 25/04/2006, 21h49

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