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 :

interpolation de Lagrange


Sujet :

Python

  1. #21
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 507
    Par défaut
    En électricité, la relation entre U et I dans une résistance est relativement bien connue.
    A comparer avec ta courbe, et il faut sûrement en déduire quelque chose sur l'interpolation de Lagrange et ses limites.

  2. #22
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 183
    Par défaut
    Finalement, en fait ce qui n'a pas l'air de fonctionner c'est quand tu prends un point en dehors des mesures donc de ce qui est passé à la fonction lagrange, par exemple si tu prends 600, ta fonction l renvoie -479 c'est pour cela que tu as une courbe aberrante.
    Si tu limites à 400 au lieu de 600 la plage w, la courbe et l'échelle sont beaucoup plus correctes.

  3. #23
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonsoir

    Voici les premières indications de l'exercice.

    Les mesures de l’intensité de courant I et de la tension U aux bornes d’une résistance de 220 Ohms à 5%.

    Peut-être qu'il faut modifier les données avant de réaliser le graphique.

    A bientôt

  4. #24
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 683
    Par défaut
    Citation Envoyé par argon Voir le message
    Peut-être qu'il faut modifier les données avant de réaliser le graphique.
    Si U = RI et que R = 220ohms, on devrait avoir pour chaque mesure de U et de I le rapport U / I égal à 220 (à 5% près).
    L'interpolation de Lagrange fabrique un polynome dont le degré sera le nombre de mesures/points.
    Si la fonction n'est pas trop fausse dans l'intervalle des mesures, ça n'a aucune chance d'être linéaire en dehors.

    note: dit autrement "interpolation" c'est qu'on peut appliquer la fonction à des points de l'intervalle. Pouvoir l'appliquer en dehors s'appelle extrapolation (et pour faire ça on n'utilisera pas l'interpolation de...).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #25
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 183
    Par défaut
    Comme le dit wiztricks :
    Citation Envoyé par wiztricks Voir le message
    note: dit autrement "interpolation" c'est qu'on peut appliquer la fonction à des points de l'intervalle. Pouvoir l'appliquer en dehors s'appelle extrapolation (et pour faire ça on n'utilisera pas l'interpolation de...).
    pour faire une interpolation jusqu'à 600mA il faut que tu fournisses au moins une mesure égale ou supérieure à cette valeur.

  6. #26
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 507
    Par défaut
    Citation Envoyé par argon Voir le message
    Bonsoir

    Voici les premières indications de l'exercice.

    Les mesures de l’intensité de courant I et de la tension U aux bornes d’une résistance de 220 Ohms à 5%.

    Peut-être qu'il faut modifier les données avant de réaliser le graphique.

    A bientôt
    bizarre, avec les valeurs des vecteurs u et i que tu donnes, on obtient une résistance de 22 ohms (si on considère que U est en volts et I en mA: 9.91V/456mA=21.73 ohms; à moins que l'intensité soit en 10-4 )

  7. #27
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonsoir

    Voici mes dernières modifications.



    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
    def tracer():
     
        R = 220
     
        u = R*i
     
        w = np.arange(0,600, 2)
     
        P=lagrange([0, 51, 101, 151, 203, 252, 303, 356, 406, 456], [0, 1.11, 2.11, 3.28, 4.42, 5.5, 6.68, 7.73, 8.92, 9.91])
     
     
     
        plt.title("Les mesures de l’intensité de courant I et de la tension U aux bornes d’une résistance")
     
        plt.scatter(i,u, label=" UI")
        plt.plot(w, P(w), label="P(W)", color ='red')
        plt.grid()
        plt.ylabel('U(V)')
        plt.xlabel('I(A)')
        plt.legend()
        plt.show()
    Il semble qu'il y ait toujours un souci avec P(W).

    A bientôt

  8. #28
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 683
    Par défaut
    Citation Envoyé par argon Voir le message
    Il semble qu'il y ait toujours un souci avec P(W).
    Vous devez essayer de répondre à ce genre de question par vous même.
    On peut lancer l'interpréteur Python et y taper:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> from scipy.interpolate import lagrange
    >>> A = [0, 51, 101, 151, 203, 252, 303, 356, 406, 456]
    >>> B = [0, 1.11, 2.11, 3.28, 4.42, 5.5, 6.68, 7.73, 8.92, 9.91]
    >>> p = lagrange(A, B)
    Le polynome sera "correct" si appliqué a A on retrouve B:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> p(A)
    array([0.  , 1.11, 2.11, 3.28, 4.42, 5.5 , 6.68, 7.73, 8.92, 9.91])
    >>>
    Ce qui est le cas.
    Reste qu'on a déjà remarqué les unités utilisés pour le courant.... et de vous questionner sur ce qu'étaient tension et courant dans vos données (pour avoir un rapport de 220 entre les 2).

    Dit autrement, faire des calculs avec un ordinateur ne vous dispense pas de savoir ce que sont les mesures utilisées et leur cohérence avec les réalités physiques qui sont dessous. Mais comme en général les exercices de programmations n'utilisent les réalités de tous les jours que pour être plus vivants (moins abstraits), ça n'a pas grande importance.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #29
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonjour

    I(mA): [0, 51, 101, 151, 203, 252, 303, 356, 406, 456]
    U(V) : [0, 1.11, 2.11, 3.28, 4.42, 5.5, 6.68, 7.73, 8.92, 9.91]

    Si P(W) représente la puissance, c'est la que je bloque, à moins que je fasse erreur la puissance P = U x I.

    Comment aligner la courbe de P(W) avec les points ?

    A bientôt

  10. #30
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 683
    Par défaut
    Citation Envoyé par argon Voir le message
    Si P(W) représente la puissance, c'est la que je bloque
    Dans le calcul que vous avez fait, P donne la tension en fonction de l'intensité.... (et doit vérifier U = RI).
    Calculer la puissance pourquoi pas... mais si vous ne faites rien pour ça, çà ne va pas sortir tout seul d'un chapeau magique.

    Citation Envoyé par argon Voir le message
    Comment aligner la courbe de P(W) avec les points ?
    Réfléchir à ce que vous voulez faire et à comment l'obtenir... Là vous vous contentez de demander à la machine d'afficher des graphiques que vous ne savez pas interpréter.... et en plus vous ne tenez pas compte des remarques qui vous ont été faites.

    note: c'est bien de raconter que I est en mA mais c'est à vous d'en faire quelque chose.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #31
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 183
    Par défaut
    Hello,
    si c'est un truc comme cela que tu veux obtenir, il y a des choses à revoir dans ton code :
    Nom : MatplotlibP_UI.png
Affichages : 202
Taille : 41,6 Ko
    1 - Si tu veux voir la puissance (en watts) dans ton graphique , ton axe des ordonnées doit être en watt et la fonction à représenter u*i et les points en ordonnées aussi u*i.
    2 - il faut diviser par 1000 tes mesures de i ou autre chose car les mesures sont bizarres si la résistance est de 220 ohms.
    3 - La plage w ne doit pas dépasser la mesure la plus grande.

    Ami calmant, J.P

  12. #32
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 507
    Par défaut
    Si on reprends ce que tu as dis sur la question à résoudre:

    Citation Envoyé par argon Voir le message
    Bonsoir

    Le dernière question de l'exercice est ci-dessous.

    Créer un vecteur W formé de courants entre 0 et 600 (mA) par pas de 2 et calculer l’image de ce vecteur par le polynôme de Lagrange.
    Il n'est nul question de puissance au autre (a priori). A voir ce que l'on entend par 'image de ce vecteur par le polynôme de Lagrange".

    Si c'est utilisé le polynôme précédent pour tracer u(w) alors ta courbe était bonne et montre les limites de l'interpolation (qui permet de trouver des polynômes pour tracer une courbe passant par les points fournis; en dehors de ces points, rien ne dit que l'interpolation sera correcte, on pourrait d'ailleurs trouver plusieurs équations de courbes qui peuvent passer par ces points).

    Si tu veux la puissance, il faut faire une multiplication terme à terme des vecteurs u et i p=u*i va donner les bonnes valeurs.
    Comme tu veux en fonction du nouveau vecteur w, l(w) (avec l = lagrange(i,u) ) devrait te donner les valeurs u pour ce vecteur. Et ainsi permettre de calculer P(w) via w*l(w) (en gardant à l'esprit les limites de l'interpolation faite)


    PS: vérifie quand même cette histoire d'unité quand même (ou de valeur de R)
    PS2: et comme i serait en mA, la puissance sera en mW (milliWatt) (et ne pas confondre le W de Watt avec w le nom de la variable du nouveau vecteur de courant.

  13. #33
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonsoir

    Là la droite est alignée avec les points.

    La question est, est-ce que le graphique est correct ?



    Voici le code complet:

    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
    import numpy as np
    import matplotlib.pyplot as plt
    from scipy.interpolate import lagrange
     
    i = np.array([0, 51, 101, 151, 203, 252, 303, 356, 406, 456])
     
    v = np.array([0, 1.11, 2.11, 3.28, 4.42, 5.5, 6.68, 7.73, 8.92, 9.91] * 220)
     
    R = 220
     
    u = R*i
     
     
    def tracer():
     
        w = np.arange(0,600, 2)
     
        P=lagrange(i, u)
     
        plt.subplots(figsize=(10, 8), layout='constrained')
        plt.title("Les mesures de l’intensité de courant I et de la tension U aux bornes d’une résistance")
        plt.scatter(i,u, label=" UI")
        plt.plot(w, P(w), label="P(W)", color ='red')
        plt.grid()
        plt.ylabel('U(V)')
        plt.xlabel('I(mA)')
        plt.legend()
        plt.show()
     
     
    def afficher():
     
        print('Calcul de P(W)')
     
        print(lagrange(i, u))
     
        tracer()
     
    afficher()
    A bientôt

  14. #34
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 044
    Par défaut
    Oui 120000V c'est logique

    Apprend déjà l'électronique ou l'électricité avant le développement informatique ou ne développe pas sur des sujets que tu ne maîtrises pas...

    Soit tu as un problème de vue, soit aucune notion dans ce métier (ou peut-être même les mathématiques de base).

    Essaye de calculer la résistance R !

  15. #35
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 683
    Par défaut
    Citation Envoyé par argon Voir le message
    La question est, est-ce que le graphique est correct ?
    Le graphique reflète les calculs et côté calcul, le polynome d'interpolation n'est même plus calculé avec les données initiales.
    A partir de là à quoi bon regarder le graphique?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  16. #36
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Re bonsoir

    Là, j'espère que c'est mieux.



    A bientôt

  17. #37
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 683
    Par défaut
    Citation Envoyé par argon Voir le message
    Là, j'espère que c'est mieux.
    Si le dessin vous plait, tant mieux... mais si on ne voit pas comment ça a été codé, le graphique restera gribouillage.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  18. #38
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonsoir

    A l'aide d'une lecture graphique de (UI), j'ai sélectionné un point pour trouver tension et courant (sans la droite P(W)). Et en suite j'ai trouvé la résistance.

    Voici le code

    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
    import numpy as np
    import matplotlib.pyplot as plt
    from scipy.interpolate import lagrange
     
    i = np.array([0, 51, 101, 151, 203, 252, 303, 356, 406, 456])
     
    v = np.array([0, 1.11, 2.11, 3.28, 4.42, 5.5, 6.68, 7.73, 8.92, 9.91])
     
    R = 0.02193
     
    u = R*i
     
    def tracer():
     
        w = np.arange(0,600, 2)
     
     
        P=lagrange(i, u)
     
        plt.subplots(figsize=(10, 8), layout='constrained')
        plt.title("Les mesures de l’intensité de courant I et de la tension U aux bornes d’une résistance")
        plt.scatter(i,v, label=" UI")
        plt.plot(w, P(w), label="P(W)", color ='red')
        plt.grid()
        plt.ylabel('U(V)')
        plt.xlabel('I(mA)')
        plt.legend()
        plt.show()
     
     
    def afficher():
     
        print('Calcul de P(W)')
     
        print(lagrange(i, u))
     
        tracer()
     
    afficher()

    A bientôt

  19. #39
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 683
    Par défaut
    Citation Envoyé par argon Voir le message
    A l'aide d'une lecture graphique de (UI), j'ai sélectionné un point pour trouver tension et courant (sans la droite P(W)). Et en suite j'ai trouvé la résistance.
    Si on fait une interpolation, c'est parce (a priori) on ne connait de la fonction que les 10 "mesures" (données par les variables i et v). Si on doit "calculer" la valeur de la tension en fonction de l'intensité en d'autres points (de l'intervalle), on calcule le polynôme de Lagrange qui servira de fonction.

    Bien sûr ici on connait la fonction U = R*I mais calculer le polynôme de Lagrange pour les 230 points fabriqués par cette fonction n'a aucun intérêt (sauf à vérifier que le polynôme de Lagrange fabriqué à partir des 10 vraies mesures donne des résultats semblables à ceux de la fonction connue).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  20. #40
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 507
    Par défaut
    Et rien ne te choque entre la valeur de R que tu as trouvé (qui s'exprime en KOhms donc 0.02193KOhms=21.93Ohms) et la valeur que l'on te donne dans l'exercice (d'après tes dires)?

Discussions similaires

  1. Interpolation de Lagrange
    Par Nabil-M1703 dans le forum Débuter
    Réponses: 1
    Dernier message: 03/06/2018, 17h48
  2. [Débutant] interpolation de Lagrange
    Par mari0marie dans le forum MATLAB
    Réponses: 1
    Dernier message: 28/02/2012, 16h19
  3. interpolation de lagrange + extremum + passage par une valeur
    Par john stedd dans le forum Mathématiques
    Réponses: 7
    Dernier message: 25/02/2009, 10h22
  4. Interpolation polynômiale de Lagrange en Pascal
    Par ninie37 dans le forum Pascal
    Réponses: 5
    Dernier message: 26/11/2006, 23h32
  5. Interpolation de Lagrange
    Par jerev dans le forum Mathématiques
    Réponses: 7
    Dernier message: 14/07/2006, 12h11

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