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 :

Programmation de fonctions


Sujet :

Python

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 25
    Points : 2
    Points
    2
    Par défaut Programmation de fonctions
    Bonsoir,

    J'ai des soucis avec l'exercice en pièce jointe... Je suis mauvaise en Python mais c'est pour mes études...

    Pour la question 2.a, est-ce une boucle qu'il faut faire ? Pour comparer chaque valeur de l'exposant et renvoyer la plus grande ?

    Mais je n'arrive pas à implémenter ça en Python... Pourriez-vous m'aider svp ?

    D'avance, merci beaucoup.

    Nom : devoir info.png
Affichages : 848
Taille : 160,7 Ko

  2. #2
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Citation Envoyé par inconnue058 Voir le message
    Pour la question 2.a, est-ce une boucle qu'il faut faire ? Pour comparer chaque valeur de l'exposant et renvoyer la plus grande ?
    Pour obtenir la valeur max d'une liste il existe déjà une fonction : https://docs.python.org/fr/3/library...hlight=max#max mais si je devais écrire moi-même cette fonction j'utiliserais effectivement une boucle...

    Ceci étant dis, je ne crois pas que c'est ce qui est demandé, la valeur max de cette liste correspond à la valeur du plus grand coefficient or ce qui est demandé c'est le degré du polynôme...

    Et dans l’énoncé il précise que cette liste c'est celle des coefficients du polynôme classés dans l'ordre des degrés croissants... Ce que j'en comprend (je ne suis pas sûr d'avoir bien compris) c'est que par exemple cette liste : [7,3,2] correspond au polynôme : 7x^0 + 3x^1 + 2x^2 (2x² + 3x + 7)...

    J'en déduis que le degré du polynôme est égale à : L-1 où L est égale à la longueur de la liste des coefficients du polynôme. De là il est assez simple d'écrire une fonction qui retourne le degré du polynôme en utilisant la fonction qui retourne la longueur d'une liste : https://docs.python.org/fr/3/library...hlight=max#len)

    Voilà c'est juste ce que j'ai compris, je peux avoir mal compris...

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    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 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Citation Envoyé par inconnue058 Voir le message
    Pour la question 2.a, est-ce une boucle qu'il faut faire ? Pour comparer chaque valeur de l'exposant et renvoyer la plus grande ?
    On ne te demande pas le coefficient le plus élevé mais le degré du polynôme. Et le degré d'un polynôme est celui de son exposant le plus élevé (ce qui n'est pas la même chose). Par exemple un polynôme f(x)=12 + 7x + 5x² + 2x3 (qui s'écrira dans ton code sous forme d'une liste [12, 7, 5, 2]) a beau avoir le coefficient le plus élevé à 12, il est quand-même de degré 3 (donc longueur de la liste - 1)

    Citation Envoyé par inconnue058 Voir le message
    Mais je n'arrive pas à implémenter ça en Python... Pourriez-vous m'aider svp ?
    Ah désolé mais on n'est pas là pour faire tes exercices à ta place. Déjà c'est contraire aux règles du forum (paragraphe IV-N) et ce n'est pas ça "aider". Et les lieux communs du style "je suis mauvaise en Python" n'ont absolument pas cours ici. Si tu as un exercice c'est que tu es sensée avoir les connaissances pour le résoudre.
    Si vraiment tu as besoin de la solution pour t'aider à comprendre le cheminement logique qui amène au code alors tu utiliseras le corrigé du prof, ce sera plus honnête vis à vis de tes camarades qui, eux vont faire cet exercice par eux-mêmes. Et si vraiment tu es réellement trop mauvaise pour la prog alors autant arrêter immédiatement avant de perdre trop de temps.

    Citation Envoyé par inconnue058 Voir le message
    D'avance, merci beaucoup.
    On ne remercie jamais d'avance (question de savoir vivre). C'est une obligation déguisée derrière un masque de politesse qui met ton interlocuteur dans une position de faiblesse l'incitant à faire ce pour quoi il a été remercié.
    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]

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 25
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,

    Merci pour votre réponse.

    Voici en dessous ce que j'ai fait pour l'instant.

    Degre fonctionne.
    Etape ne fonctionne pas : que faudrait-il modifier selon vous ?
    Pour tchebychev, je n'y arrive pas : ici j'ai utilisé du global mais j'ai demandé à mon professeur et il ne veut pas... Comment modifier le programme en mettant du "local" ?
    Il y a apparemment un problème avec la liste de evalue...
    Je n'ai pas encore terminé TraceTchebychev...

    Pourriez-vous m'aider svp ?

    Je précise que T0=1, T1=X, et pour tout entier naturel n supérieur ou égal à 1, T(n+2)=2*X*T(n+1)-Tn.

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    # 2a
     
    def degre(L):
        return len(L)-1
     
    # 2b
     
    def etape(L, M):
        M = [0] + [2 * m for m in M]
        len_M, len_L = len(M), len(L)
        T = [
                (M[i] if i < len_M else 0) + (L[i] if i < len_L else 0)
                for i in range(max(len_M, len_L))
        ]
        return T
     
     
    # 2c
     
    def tchebychev(n):
        global T0
        global T1
     
        if n == 0:
            return X0
        elif n == 1:
            return X1
        else:
            T_moins_2 = T0
            T_moins_1 = T1
            for _ in range(1, n):
                T = etap(T_moins_1, T_moins_2)
                T_moins_2 = T_moins_1
                T_moins_1 = T
            return T
     
     
    # 2d
     
    def evalue(P,x):
        if P==[]:
            return(0)
        else:
            b=P[len(P)-1]
            P1=P[0:len(P)-1]
            return(horner(P1,x)*x+b)
     
    # 2e
    def TraceTchebychev(n):
        x = np.linspace (-10,10,100)
        y = # Que mettre ici ?
        plt.plot (x,y)

  5. #5
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2015
    Messages : 55
    Points : 64
    Points
    64
    Par défaut Degré du polynôme de coefficients donnés dans L.
    Il faut éliminer tous les 0 en fin de liste avant de répondre si L=[1,2,0] le polynôme s'écrit 1+2x et c'est un polynôme de degré 1, pas de degré 2.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par inconnue058 Voir le message
    Etape ne fonctionne pas : que faudrait-il modifier selon vous ?
    Ne fonctionne pas doit être précisé par un message d'erreur ou un exemple d'appel de la fonction retournant un résultat faux.
    note: si le résultat est faux c'est que vous ne faites pas ce qui a été demandé dans l'énoncé. Et comme vous devez tester votre fonction avant de l'utiliser vous devez fabriquer une liste de polynomes et de résultats attendus pour tester et vous assurer que çà fonctionne.

    Pour le reste, vous voyez bien que votre code serait bien plus facile à écrire(*) si le degré de vos polynômes était égaux et rien ne vous empêche d'ajouter des 0, le cas échéant au polynôme de degré strictement inférieur.
    (*) plus facile à écrire == plus facile à relire en cas de bug et aussi plus facile à tester.

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

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    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 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par inconnue058 Voir le message
    j'ai utilisé du global mais j'ai demandé à mon professeur et il ne veut pas... Comment modifier le programme en mettant du "local" ?
    Dans toute fonction où tu utilises une variable globale, tu lui passes cette variable en paramètre.
    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]

  8. #8
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 25
    Points : 2
    Points
    2
    Par défaut
    Merci pour les réponses.

    Finalement j'ai ça pour la 2.c (voir en dessous). Sachant que T0=1, T1=X, et T(n+2)=2X*T(n+1)-Tn.

    Mais ça ne fonctionne pas : pour n=2, on obtient [0,1] alors que T(2)=2X²-1.
    Voyez-vous où est l'erreur ?

    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 tchebychev(n):
        T0=[1]
        T1=[0,1]
        if n == 0:
            return T0
        elif n == 1:
            return T1
        else:
            T_moins2 = T0
            T_moins1 = T1
            for i in range(1,n):
                T = etape(T_moins1, T_moins2)
                T_moins2 = T_moins1
                T_moins1 = T
            return T

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par inconnue058 Voir le message
    Voyez-vous où est l'erreur ?
    tchebychev utilise etape et la dernière version d'etape postée ne fonctionne pas...
    Pourquoi regarder plus loin?

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

  10. #10
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 25
    Points : 2
    Points
    2
    Par défaut
    J'avais fait une erreur de frappe en exécutant : etape fonctionne ou pas ?

    Quand je l'exécute sur Python cela fonctionne...

    Mais quoi modifier dans Tchebychev pour que ça fonctionne ?

    J'ai mis dans le précédent message ce qui n'allait pas...

    Pour la 2.e :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def TraceTchebychev(n):
        x = np.linspace (-10,10,100)
        P=tchebychev(n)
        y = evalue(P,x)
        plt.plot (x,y)
    Cela me retourne None... Qu'est-ce qui ne va pas ?

    Merci.

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par inconnue058 Voir le message
    J'avais fait une erreur de frappe en exécutant : etape fonctionne ou pas ?
    Si vous l'avez corrigée et testée, elle devrait fonctionner... Et si vous l'avez modifiée vous n'avez pas posté la dernière mouture. Or on en a besoin pour lancer tchebichev pour s'assurer qu'on reproduit bien le problème mentionné (et qu'on n'a rien oublié de recopier).

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

  12. #12
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    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 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par inconnue058 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def TraceTchebychev(n):
        x = np.linspace (-10,10,100)
        P=tchebychev(n)
        y = evalue(P,x)
        plt.plot (x,y)
    Cela me retourne None... Qu'est-ce qui ne va pas ?
    La fonction ne retourne rien. Or une fonction qui ne retourne rien retourne None par défaut.
    Donc si tu affiches son résultat tu affiches None

    Ex
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def fct(): pass
    print(fct())             # None
    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]

  13. #13
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 25
    Points : 2
    Points
    2
    Par défaut
    Voici le nouveau Tchebychev :

    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 tchebychev(n):
        T0=[1]
        T1=[0,1]
        if n == 0:
            return T0
        elif n == 1:
            return T1
        else:
            T_moins2 = T0
            T_moins1 = T1
            for i in range(n):
                T = etape(T_moins1, T_moins2)
                T_moins2 = T_moins1
                T_moins1 = T
            return T
    Et le nouveau TraceTchebychev :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def TraceTchebychev(n):
        x = np.linspace (-10,10,100)
        P=tchebychev(n)
        y = evalue(P,x)
        return(plt.plot (x,y))
    Mais aucun des 2 ne fonctionne encore et je ne vois pas pourquoi ! Pourriez-vous m'expliquer svp ?

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par inconnue058 Voir le message
    Mais aucun des 2 ne fonctionne encore et je ne vois pas pourquoi ! Pourriez-vous m'expliquer svp ?
    Si vous n'avez pas corrigé la fonction etape, çà ne peut pas marcher: pas la peine de se fatiguer à regarder le reste.

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

  15. #15
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 25
    Points : 2
    Points
    2
    Par défaut
    Mais que faudrait-il changer dans la fonction etape ? J'ai mis un moins à la place du + : il faut modifier autre chose ?

    Je dois rendre ce travail demain...

    Cela fait toute l'après-midi et la soirée que je cherche...

  16. #16
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par inconnue058 Voir le message
    Mais que faudrait-il changer dans la fonction etape ?
    Prenez par exemple P = X et L = X, vous savez calculer 2*L - M sur une feuille de papier et le comparer à ce que retourne étape(L, M).
    Si çà fonctionne vous essayez des polynômes de degré différents, puis des polynômes plus compliqués....
    Et si çà ne fonctionne pas, essayez de comprendre pourquoi... corrigez et testez encore.

    Je dois rendre ce travail demain...
    Cela fait toute l'après-midi et la soirée que je cherche...
    Je vous ai déjà suggéré cela ce matin à 11h32...

    Le seul intérêt d'un exercice est d'apprendre à programmer.
    Ce qui veut dire douter du code qu'on a écrit, tester pour être confiant qu'il fonctionne correctement...

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

Discussions similaires

  1. Mettre a jour un programme en fonction de l'utilisateur
    Par morgan47 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 02/05/2007, 10h33
  2. Réponses: 1
    Dernier message: 28/03/2007, 15h33
  3. Réponses: 10
    Dernier message: 11/01/2007, 21h45
  4. Programmer une fonction joindre_fichier
    Par leCcsympas dans le forum Réseau
    Réponses: 5
    Dernier message: 03/12/2006, 19h51
  5. Réponses: 2
    Dernier message: 31/05/2005, 09h50

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