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 :

Problème avec MatPlotLib


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 22
    Points : 17
    Points
    17
    Par défaut Problème avec MatPlotLib
    Bonjour,
    Dans le cadre de mon projet d'ISN au lycée (je suis sous Anaconda, pour avoir facilement les bibliothèques dont j'avais besoin) :
    J'ai créé une fonction qui permet d'afficher la représentation graphique d'un polynôme, à partir d'une liste contenant ses coefficients ([0,0,1] pour la fonction x², ou [4,-12,3] pour la fonction 3x²-12x+3).
    Cependant, quand le polynôme est de degré 0, donc quand c'est une constante, l'attribution de la valeur de y est multiplié par 2, sans savoir pourquoi.
    Voici la partie du code correspondante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    coef=[2]
    x=linspace(xmin,xmax,10000) #crée 1000 points entre xmin et xmax
    y = coef[0]                 #on définit y avec le premier coefficients du polynome (celui de plus bas degré)
     
        for i in range (0, len(coef)):
            y= y + (coef[i]*(x**i)) #on implémente ensuite les autres coefficients associés à x et son degré,
         #arrivée ici, on sait que y va calculer sa valeur pour chaque valeur de x, donc 1000 valeurs.
    J'ai essayé de mettre un "print y" en ligne 4, et un autre en ligne 8. Le print en ligne 4 affiche "2" et celui en ligne 8 affiche "[4. 4. 4. ..., 4. 4. 4.]
    Savez vous donc pourquoi après la boucle, la constante est multipliée par 2?
    Merci, Alex.

  2. #2
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Citation Envoyé par AlexBsd Voir le message
    Bonjour,
    Dans le cadre de mon projet d'ISN au lycée (je suis sous Anaconda, pour avoir facilement les bibliothèques dont j'avais besoin) :
    J'ai créé une fonction qui permet d'afficher la représentation graphique d'un polynôme, à partir d'une liste contenant ses coefficients ([0,0,1] pour la fonction x², ou [4,-12,3] pour la fonction 3x²-12x+3).
    Cependant, quand le polynôme est de degré 0, donc quand c'est une constante, l'attribution de la valeur de y est multiplié par 2, sans savoir pourquoi.
    Voici la partie du code correspondante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    coef=[2]
    x=linspace(xmin,xmax,10000) #crée 1000 points entre xmin et xmax
    y = coef[0]                 #on définit y avec le premier coefficients du polynome (celui de plus bas degré)
     
        for i in range (0, len(coef)):
            y= y + (coef[i]*(x**i)) #on implémente ensuite les autres coefficients associés à x et son degré,
         #arrivée ici, on sait que y va calculer sa valeur pour chaque valeur de x, donc 1000 valeurs.
    J'ai essayé de mettre un "print y" en ligne 4, et un autre en ligne 8. Le print en ligne 4 affiche "2" et celui en ligne 8 affiche "[4. 4. 4. ..., 4. 4. 4.]
    Savez vous donc pourquoi après la boucle, la constante est multipliée par 2?
    Merci, Alex.
    Salut,

    Elle est pas claire ta question.

    Dans le commentaire de ton code tu écris :

    #on implémente ensuite les autres coefficients associés à x et son degré,
    #arrivée ici, on sait que y va calculer sa valeur pour chaque valeur de x, donc 1000 valeurs.
    Or dans ta boucle tu ne calcul pas 1000 valeurs puisque qu'il ni a que deux itérations dans ta boucle len(coef)=1

    Du coup c'est difficile de répondre à ta question.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    Parce que ma fonction est faite pour afficher la représentation graphique des polynomes dont le degré n'est pas forcément 0, len(coef) peut être égal à 1,2,3 voire plus, mais le problème se pose uniquement quand len(coef)=1

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Citation Envoyé par AlexBsd Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    coef=[2]
    x=linspace(xmin,xmax,10000) #crée 1000 points entre xmin et xmax
    y = coef[0]                 #on définit y avec le premier coefficients du polynome (celui de plus bas degré)
     
        for i in range (0, len(coef)):
            y= y + (coef[i]*(x**i)) #on implémente ensuite les autres coefficients associés à x et son degré,
         #arrivée ici, on sait que y va calculer sa valeur pour chaque valeur de x, donc 1000 valeurs.
    Si avant la boucle tu pose y=coef[0]
    Et que dans la boucle tu ajoutes coef[0] (pour i=0), ça fait bien 2*coef[0].
    Il faudrait plutôt initialiser y à 0, non?

Discussions similaires

  1. [Python 3.X] problème avec matplotlib
    Par abdou313 dans le forum Général Python
    Réponses: 1
    Dernier message: 19/05/2015, 03h18
  2. Problème avec Matplotlib
    Par Pacome1973 dans le forum Calcul scientifique
    Réponses: 1
    Dernier message: 23/02/2014, 14h14
  3. problème avec matplotlib
    Par mortal dans le forum Calcul scientifique
    Réponses: 6
    Dernier message: 27/01/2014, 09h30
  4. problème avec Python, matplotlib et pygtk
    Par marwanos dans le forum Déploiement/Installation
    Réponses: 11
    Dernier message: 27/04/2010, 00h29
  5. Graphique avec matplotlib, probléme d'affichage des boutons
    Par astragoth dans le forum Général Python
    Réponses: 0
    Dernier message: 08/04/2010, 08h27

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