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

Tkinter Python Discussion :

Tracer courbe corps noir


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Lyceen
    Inscrit en
    Avril 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Maroc

    Informations professionnelles :
    Activité : Lyceen
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Tracer courbe corps noir
    Bonjour à tous,
    Je suis débutant, j'ai besoin de votre aide pour afficher la courbe du corps noir. J'ai fait un petit programme mais ne fonction pas.
    cordialement

    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 tkinter as tk 
    import math  
    import numpy as np     
    #Definition des constantes physiques
    c=299792.458e3
    h=6.6260693e-34
    k=1.3806505e-23
     
    # Nombre de points
    npoints=10000
    # Limites
    l_min=3e-9
    l_max=4*1e-6
    # Liste des longueurs d'onde pour le calcul de la loi de Planck 
    fenetre = tk.Tk()
    fenetre.geometry("750x800")
    fenetre.title('Rayonnement du Corps noir')
    def traceCourbeRj():
    	liste=[]
    	T=5000
    	l= np.logspace(np.log10(l_min),np.log10(l_max),2500)
    	for i in range(npoints):
    		cl=(8*np.pi*h*c)/(l**5) * 1/(np.exp((h*c)/(k*l*T))-1)
    		liste.append((l[i],cl))
    		n = zone_graphique.create_line(liste, fill='red', smooth=1)
    	return n
    traceCourbeRj() bouton_quitter = tk.Button(fenetre, text='Quitter',bg='red', command=fenetre.destroy)
    bouton_quitter.place(x = 455 , y = 50 , width = 126)
    zone_graphique = tk.Canvas(fenetre, width=730, height = 470, background='ivory')
    zone_graphique.place(x = 7 , y = 320 )
     
          fenetre.mainloop()

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

    Il ne fonctionne pas parce qu'il sort en erreur ou parce qu'il ne dessine pas ce que vous attendiez?
    Apprenez à utiliser la balise code (# dans l'éditeur) pour poster votre code. Sans les indentations, Python est illisible.

    - W

  3. #3
    Candidat au Club
    Homme Profil pro
    Lyceen
    Inscrit en
    Avril 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Maroc

    Informations professionnelles :
    Activité : Lyceen
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci pour votre réponse ,mais j'ai rien cmpris

  4. #4
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 610
    Points : 2 074
    Points
    2 074
    Par défaut
    C'est pourtant très clair.

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2013
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 80
    Points : 119
    Points
    119
    Par défaut
    Bonjour,

    1) Erreur de syntaxe ligne 27
    2) La fonction traceCourbeRj() va utiliser la variable zone_geographique qui n'existe pas encore à ce stade du code
    3) zone_graphique.create_line() est un "créateur" de ligne ; une ligne c'est au moins deux points, donc deux sets de coordonnées, donc 4 variables. Dans votre code, lorsque vous parcourez les npoints, vous ajoutez les coordonnées une à une => erreur
    4) ligne 22 ; vous parcourez npoints (10000) alors que le tableau l ne contient que 2500 cases
    5) ligne 23 ; vous recalculez npoints fois la même quantité, j'optimiserai en la sortant de la boucle (mais ce n'est pas une erreur)

    ... bon après, il y en a encore beaucoup, mais je vous laisse regarder ma version et poser des questions si vous en avez

    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
    import tkinter as tk
    import math
    import numpy as np
    #Definition des constantes physiques
    c=299792.458e3
    h=6.6260693e-34
    k=1.3806505e-23
     
    adj1, adj2 = [4e8,3e3]
    HEIGHT = 470
     
    # Nombre de points
    npoints=10000
    # Limites
    l_min=3e-9
    l_max=4*1e-6
    # Liste des longueurs d'onde pour le calcul de la loi de Planck
    fenetre = tk.Tk()
    #fenetre.geometry("750x800")
    fenetre.title('Rayonnement du Corps noir')
     
    def traceCourbeRj():
        liste=[]
        T=5000
        l= np.logspace(np.log10(l_min),np.log10(l_max),npoints)
        cl=(8*np.pi*h*c)/(l**5) * 1/(np.exp((h*c)/(k*l*T))-1)
        for li, cli in zip(l,cl): liste.append((li*adj1,HEIGHT-cli/adj2))
     
        zone_graphique.create_line(liste, fill='red', smooth=1)
     
    bouton_quitter = tk.Button(fenetre, text='Quitter',bg='red', command=fenetre.destroy)
    bouton_quitter.pack()
    zone_graphique = tk.Canvas(fenetre, width=730, height = HEIGHT, background='ivory')
    zone_graphique.pack()
     
    traceCourbeRj()
    fenetre.mainloop()
    PS : je vous conseiller également d'abandonner l'idée des lignes et d'utiliser matplotlib qui me semble plus adapté ; voici un lien qui pourrait vous aider !

  6. #6
    Candidat au Club
    Homme Profil pro
    Lyceen
    Inscrit en
    Avril 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Maroc

    Informations professionnelles :
    Activité : Lyceen
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Bonne réponse
    Merci beaucoup pour vos remarques ,ainsi votre réponse.
    Cordialement

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

Discussions similaires

  1. Tracer courbe avec MSChart
    Par xavier1936 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 08/08/2007, 09h41
  2. Tracer courbe en 2D voir en 3D
    Par bonjour69 dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 05/04/2007, 19h29
  3. Tracer courbe avec coordonnées de points
    Par ddsjm dans le forum MATLAB
    Réponses: 6
    Dernier message: 10/12/2006, 22h02
  4. Tracer courbe method post, get ou ???
    Par cedre22 dans le forum Langage
    Réponses: 33
    Dernier message: 22/02/2006, 16h24
  5. Tracer courbes
    Par jackdans dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/06/2005, 04h17

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