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. #1
    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 interpolation de Lagrange
    Bonjour

    J'ai un souci pour exécuter l'interpolation de Lagrange.

    Voici le code et l'erreur affichée.

    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
    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])
     
    u = np.array([0, 1.11, 2.11, 3.28, 4.42, 5.5, 6.68, 7.73, 8.92, 9.91])
     
     
     
    def tracer():
     
        plt.plot(u,i)
        plt.grid()
     
     
        plt.show()
     
    def lagrange():
     
        l=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])
     
        return l
     
     
    def afficher():
     
        print('test', lagrange())
     
        tracer()
     
    afficher()
    L'erreur affichée.

    Traceback (most recent call last):
    File "C:\Users\****\****\****\python\2024\td 1\module 4.py", line 45, in <module>
    afficher()
    File "C:\Users\****\******\*****\python\2024\td 1\module 4.py", line 41, in afficher
    print('test', lagrange())
    File "C:\Users\*****\******\*****\python\2024\td 1\module 4.py", line 34, in lagrange
    l=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])
    TypeError: lagrange() takes 0 positional arguments but 2 were given
    A bientôt

  2. #2
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 914
    Billets dans le blog
    7
    Par défaut
    Bonjour,
    En faisant: def lagrange() tu définis une fonction appelée lagrange qui écrase ton import from scipy.interpolate import lagrange et comme elle ne prend pas de paramètre ...

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour

    Comme "lagrange" est importé, il ne faut pas créer une fonction de même nom.

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 930
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def call_lagrange():
     
        l=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])
     
        return l
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print('test', call_lagrange())

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 050
    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 050
    Par défaut
    Pourquoi créer une fonction call_lagrange ?

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 930
    Par défaut
    Parce qu'il me semblais évident que le PO voulait encapsuler le détail de l'appel à lagrange dans un routine à lui.
    Ce n'est pas une création de routine c'est un renommage de sa routine lagrange actuelle qui écrase celle de la librairie.
    En procédant de cette manière, il peut garder sa structure actuelle sans écraser la véritable routine lagrange.

  7. #7
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 050
    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 050
    Par défaut
    Ce n'est pas un renommage, il voulait lui donner le même nom... Perso, ce que veut faire le PO n'a pas de sens ou expliquer le sens de cette démarche...

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 192
    Par défaut
    Hello,
    je ne sais pas ce que recherche exactement le PO, mais si c'est une représentation graphique de l'interpolation de Lagrange, avec un code en python proposé par le démoniaque chatGPT ( en utilisant les modules numpy scipy et matplotlib) voici ce que l'on obtient avec les données en entrée proposées :

    Nom : PythonLagrangeChatGPT.png
Affichages : 304
Taille : 40,8 Ko

    ChatGPT n'est pas parfait mais il peut aider grandement les débutants si on lui pose la bonne question avec tous les bons éléments pour cerner ce que l'on recherche et obtenir une réponse correcte, il faut quand même comprendre un minimum ce que fait le code de la réponse pour l'adapter à son cas (dans le cas présent modifier les données d'entrée ce qui n'est pas compliqué).
    Question posée :
    example code python to display lagrange interpolation with numpy scipy matplotlib
    et en plus il y a une petite explication :
    In this example, lagrange from scipy.interpolate is used to create the interpolation function based on the original data points (x, y). Then, this function is used to generate interpolated values at a range of x values (x_interpolated). Finally, the original data points and the interpolated curve are plotted using Matplotlib.
    Ami calmant, J.P

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    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 814
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par fred1599 Voir le message
    il voulait lui donner le même nom...
    Comme d'autres l'ont déjà fait remarquer, je pense là que c'est une erreur du PO. Pour moi (et comme l'a dit popo) il veut décorer le "lagrange" de scipy par une fonction de son cru. Son erreur est d'appeler cette fonction elle-aussi "lagrange" ce qui amène le souci qu'il a rencontré.

    De fait, si on veille bien ne pas écraser le "lagrange" de scipy (la solution de popo en est un exemple) on obtient ceci...
    Nom : Figure_1.jpeg
Affichages : 278
Taille : 21,1 Ko

    Citation Envoyé par jurassic pork Voir le message
    avec un code en python proposé par le démoniaque chatGPT...voici ce que l'on obtient avec les données en entrée proposées
    Amusant, il y a une inversion des axes X et Y...
    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]

  10. #10
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 914
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par jurassic pork Voir le message

    ChatGPT n'est pas parfait mais il peut aider grandement les débutants
    Hello,
    Je ne suis pas vraiment d'accord avec cette affirmation. J'ai côtoyé la bête (et je continue à la côtoyer) et je ne la conseillerai pas à un débutant. Pour l'apprivoiser il faut déjà avoir un certain baguage afin de lui poser les bonnes questions et d'être en capacité de critiquer ses retours erronés ou non pertinents (et ils sont nombreux ). Et puis comme l'appli chatgpt ne comprends absolument pas de ce qu'elle cause, c'est parfois la meilleure façon de perdre sa journée (j'en ai fait l'expérience) alors qu'une simple recherche apporte souvent la réponse. Je ne dis pas que son usage n'est pas utile, mais c'est un outil plus utile dans les mains des sachant que des purs débutants...

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 192
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Amusant, il y a une inversion des axes X et Y...
    oops le problème est entre la chaise et le clavier : c'est moi qui est inversé x et y c'est parce que dans le code au PO , il a mis les données en y avant les données en x et il ne les a pas appelé x y. Même si ce n'est pas compliqué à modifier le code, il faut bien faire attention quand même

    Citation Envoyé par Hominidé
    Je ne suis pas vraiment d'accord avec cette affirmation. J'ai côtoyé la bête (et je continue à la côtoyer) et je ne la conseillerai pas à un débutant. Pour l'apprivoiser il faut déjà avoir un certain baguage afin de lui poser les bonnes questions et d'être en capacité de critiquer ses retours erronés ou non pertinents (et ils sont nombreux ).
    Effectivement , si on arrive pas à formuler la bonne question où si celle-ci est difficile à exprimer on peut avoir n'importe quoi en retour.

  12. #12
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 914
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Effectivement , si on arrive pas à formuler la bonne question où si celle-ci est difficile à exprimer on peut avoir n'importe quoi en retour.
    ça va bien au-delà de ça ... comme mélanger les bibliothèques et les méthodes. Réinventer la roue, affirmer des choses fausses...

  13. #13
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 050
    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 050
    Par défaut
    Comme d'autres l'ont déjà fait remarquer, je pense là que c'est une erreur du PO.
    Certes, j'ai pas dis le contraire, d'ailleurs je le dis, ce que veut faire le PO n'a aucun sens, qu'il veuille renommer ou pas, il retourne le résultat de la vraie fonction lagrange de scipy.

    Note la fonction afficher, où on appelle la fonction lagrange...

    Pourquoi ne pas lui proposer de supprimer celle qu'il a créé sans argument, et simplement y ajouter les arguments dans la fonction afficher ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def afficher():
        print('test', 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]))
        tracer()
    Qui puis est conceptuellement (mathématiquement), avoir une fonction lagrange sans argument, alors qu'elle est censé prendre deux tableaux, ça n'a pas de sens.

  14. #14
    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

    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.

    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
    def tracer():
     
        w = np.arange(0,600, 2)
     
        l=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, l(w), label="P(W)", color ='red')
        plt.grid()
        plt.ylabel('U(V)')
        plt.xlabel('I(A)')
        plt.legend()
        plt.show()


    Est-ce que le graphique est correct ?

    A bientôt

  15. #15
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    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 814
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par argon Voir le message
    Est-ce que le graphique est correct ?
    Je ne comprends pas la question. Est-elle "est-ce que la fonction lagrange() que j'utilise est correcte" ou bien "est-ce que matplotlib affiche les bonnes valeurs au bon endroit" ?
    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]

  16. #16
    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

    Désolé de ne pas avoir formaté le code, je fais plusieurs td en même temps comme tout étudiant. Je voulais savoir si la courbe p(w) est correct.


    A bientôt

  17. #17
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    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 814
    Billets dans le blog
    1
    Par défaut
    Ben... p(w) est la courbe associant chaque "w" à chaque "l(w)". Les l(w) ayant été calculés par la fonction lagrange() de scipy, et celle-ci étant présumée correcte, la courbe l'est tout autant...
    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]

  18. #18
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 914
    Billets dans le blog
    7
    Par défaut
    Bonjour,
    Citation Envoyé par argon Voir le message

    Désolé de ne pas avoir formaté le code, je fais plusieurs td en même temps comme tout étudiant.
    Juste par curiosité quelle étude tu fais? Je remarque que tu es inscrit sur le site depuis 21 ans ce qui me laisse à penser que tu n'es pas particulièrement jeune. (relativement à..)

  19. #19
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 050
    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 050
    Par défaut
    Bonjour,

    @argon,

    Est-ce que le graphique est correct ?
    C'est pas à nous de répondre à cette question, tu es censé comprendre la problématique et t'attendre à une réponse à ce problème.

    On fait pas d'électricité, mais du développement informatique.

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 192
    Par défaut
    Hello,
    Citation Envoyé par argon Voir le message
    Bonsoir
    Est-ce que le graphique est correct ?
    Ben si ta liste i du premier message est la liste des intensités en mA et la liste u la liste des tensions en Volts ton dernier graphique est louche. ta courbe à la fin vers 600 est fausse et en plus ton échelle des ordonnées en V n'est pas adaptée aux mesures. Une résistance doit donner une courbe linéaire U=RI P=UI
    Ami calmant, J.P

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