Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

On jette un caillou dans l'eau

Posté par
Nelcar
01-05-20 à 20:13

Bonjour,
j'ai un exercice à faire sur la propagation d'une onde périodique
1) dire quelle fonction mathématique du temps de l'espace est utilisé pour représenter l'onde
2) parmi les paramètres présentés dans cette fonction lesquels peut-on modifier dans le programme proposé ,
le programme proposé est : ci-dessous
la prof nous conseille de le faire avec Thonny et charger les bibliothèques nécessaires
voilà ce que j'ai fait mais apparemment il y a un problème sur la ligne return courbe et je ne sais comment visualiser le graphique
Merci de votre aide car c'est la première fois que je vais sur ce programme (thonny)

On jette un caillou dans l\'eau

On jette un caillou dans l\'eau

Posté par
vanoise
re : On jette un caillou dans l'eau 02-05-20 à 14:04

Bonjour
Le programme tourne sans problème chez moi...
Erreur détectée dans ta saisie  à la ligne "mescourbes=..." la fonction d'onde sin(2*pi....) doit être écrite entre crochets et non entre parenthèses...

Posté par
vanoise
re : On jette un caillou dans l'eau 02-05-20 à 14:53

Autre remarque : si tu saisis l'ensemble du code sous Thonny pour l'exécuter ensuite (touche F5), tu dois aussi supprimer la virgule à la fin de la ligne :
return courbe

Posté par
Nelcar
re : On jette un caillou dans l'eau 02-05-20 à 20:04

je viens de changer (faire ce que tu me dis ) et faire F5 et rien il est noté : en bas :
Traceback (most recent call last):
  File "C:\Users\Utilisateur\texte.py", line 2, in <module>
    from matplotlib import pyplot, animation
  File "C:\Users\Utilisateur\AppData\Local\Programs\Thonny\lib\site-packages\thonny\backend.py", line 305, in _custom_import
    module = self._original_import(*args, **kw)
ModuleNotFoundError: No module named 'matplotlib'

voici mon programme sous thonny :
from math import sin, pi
from matplotlib import pyplot, animation
Xmax=10.0
Tmax=10.0
fig = pyplot.figure()
ax = pyplot.axes(xlim=(0, Xmax), ylim=(-2, 2))
NbEchantillons=100
positionsx=[i*Xmax/NbEchantillons for i in range(NbEchantillons)]
temps=[i*Tmax/NbEchantillons for i in range(NbEchantillons)]
T=2.0
v=1.0
mescourbes=[(sin[2*pi/T*(t-x/v)] for x in positionsx) for t in temps]
courbe, =ax.plot(positionsx, mescourbes[0])
def incrementemps(i) :
    courbe.set_ydata(mescourbes[i])
    return courbe
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title('propagation')
line_ani = animation.FuncAnimation(fig, incrementemps, 100, interval=50, blit=False)
pyplot.show()

MERCI de ta réponse

Posté par
vanoise
re : On jette un caillou dans l'eau 02-05-20 à 21:06

La bibliothèque matplotlib n'a manifestement pas été installée.
Cela se fait facilement si tu utilises comme système d'exploitation linux. Si tu utilises Windows, c'est un peu plus compliqué mais j'imagine que ton professeur a indiqué la procédure...

Posté par
Nelcar
re : On jette un caillou dans l'eau 03-05-20 à 09:08

Bonjour,
non il nous a dit ça et puis c'est tout....
Ce travail n'est pas obligatoire mais je voulais voir quand même
MERCI

Posté par
Nelcar
re : On jette un caillou dans l'eau 03-05-20 à 09:22

Re,
en cherchant sur l'ordi j'ai trouvé et mis la bibliothèque matplotlib sur thonny mais voilà maintenant ce que j'ai :
Traceback (most recent call last):
  File "C:\Users\Utilisateur\texte.py", line 13, in <module>
    courbe, =ax.plot(positionsx, mescourbes[0])
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\axes\_axes.py", line 1646, in plot
    lines = [*self._get_lines(*args, data=data, **kwargs)]
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\axes\_base.py", line 216, in __call__
    yield from self._plot_args(this, kwargs)
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\axes\_base.py", line 339, in _plot_args
    self.axes.yaxis.update_units(y)
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\axis.py", line 1510, in update_units
    converter = munits.registry.get_converter(data)
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\units.py", line 222, in get_converter
    return self.get_converter(first)
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\units.py", line 215, in get_converter
    first = cbook.safe_first_element(x)
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\cbook\__init__.py", line 1650, in safe_first_element
    raise RuntimeError("matplotlib does not support generators "
RuntimeError: matplotlib does not support generators as input

c'est ce qui est noté en bas
je n'y comprend plus rien
MERCI

Posté par
Nelcar
re : On jette un caillou dans l'eau 03-05-20 à 09:55

Re,
je viens aussi d'ajouter la bibliothéque : animation
toujours pas de dessin
MERCI

Posté par
vanoise
re : On jette un caillou dans l'eau 03-05-20 à 10:53

matplotlib ne semble pas correctement installée et intégrée à Python. Comment as-tu installée cette bibliothèque ?
Il y a un outils pour cela sous Thonny.
Il faut ouvrir le menu "outils", sous-menu "Gérer les paquets"
Vérifie alors si matplotlib figure bien dans la liste. Si non : cliquer sur "rechercher un paquet sur PyPi" et suivre les instructions. Si oui : le désinstaller et le réinstaller à partir de PyPi...

Posté par
vanoise
re : On jette un caillou dans l'eau 03-05-20 à 11:39

Si les instructions de mon messages de 10h53 ne fonctionnent pas, tu as la solution extrême : désinstaller ta version peut-être ancienne de Thonny.
Télécharger puis installer la version actuelle (n°3.2.7) à partir du site thonny.org.
Installer matplotlib comme indiqué dans mon message précédent.
Je ne travaille pas habituellement sous Windows mais je viens de faire cette installation sur un ordinateur d'appoint tournant sous Windows 10 : ton programme fonctionne parfaitement !

Posté par
Nelcar
re : On jette un caillou dans l'eau 03-05-20 à 14:51

ok
je vais réessayer et je te tiens au courant
MERCI

Posté par
Nelcar
re : On jette un caillou dans l'eau 03-05-20 à 15:05

Re,
j'avais la version 3.1.2 donc je l'ai desinstallé et mis la version 3.2.7 (y il a bien dans la bibliothèque matplotlib mais je n'arrive toujours pas à avoir le schéma voici ce que j'ai

d'abord mon programme:
from math import sin, pi
from matplotlib import pyplot, animation
Xmax=10.0
Tmax=10.0
fig = pyplot.figure()
ax = pyplot.axes(xlim=(0, Xmax), ylim=(-2, 2))
NbEchantillons=100
positionsx=[i*Xmax/NbEchantillons for i in range(NbEchantillons)]
temps=[i*Tmax/NbEchantillons for i in range(NbEchantillons)]
T=2.0
v=1.0
mescourbes=[(sin[2*pi/T*(t-x/v)] for x in positionsx) for t in temps]
courbe, =ax.plot(positionsx, mescourbes[0])
def incrementemps(i) :
    courbe.set_ydata(mescourbes[i])
    return courbe
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title('propagation')
line_ani = animation.FuncAnimation(fig, incrementemps, 100, interval=50, blit=False)
pyplot.show()

et en bas :
Traceback (most recent call last):
  File "C:\Users\Utilisateur\onde test thonny.py", line 2, in <module>
    from matplotlib import pyplot, animation
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\__init__.py", line 139, in <module>
    from . import cbook, rcsetup
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\cbook\__init__.py", line 34, in <module>
    class CallbackRegistry:
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\cbook\__init__.py", line 127, in CallbackRegistry
    def _remove_proxy(self, proxy, *, _is_finalizing=sys.is_finalizing):
NameError: name 'sys' is not defined

MERCI de me dire quoi

Posté par
vanoise
re : On jette un caillou dans l'eau 03-05-20 à 16:16

Ton problème de librairie matplotlib semble résolu maias tu n'as pas corrigé correctement la ligne "mescourbes=...". Voici un "copier-coller" du programme auquel j'ai rajouter une grille pour plus de clarté.

from math import sin, pi
from matplotlib import pyplot, animation
Xmax=10.0
Tmax=10.0
fig=pyplot.figure()
ax=pyplot.axes(xlim=(0,Xmax),ylim=(-2,2))
NbEchantillons=200
positionsx=[i*Xmax/NbEchantillons for i in range(NbEchantillons)]
temps=[i*Tmax/NbEchantillons for i in range(NbEchantillons)]
T=4.0
v=1.0
mescourbes=[[sin(2*pi/T*(t-x/v)) for x in positionsx] for t in temps]
courbe, =pyplot.plot(positionsx, mescourbes[0])
def incrementemps(i) :
    courbe.set_ydata(mescourbes[i])
    return courbe
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title("Propagation d'une onde progressive sinusoïdale")
ax.grid()
line_ani=animation.FuncAnimation(fig,incrementemps,100,interval=50,blit=False)
pyplot.show()

Posté par
Nelcar
re : On jette un caillou dans l'eau 03-05-20 à 18:55

Re,
je viens de faire un copier coller de ce que tu m'as mis et ça ne va toujours pas

en bas j'ai :
Traceback (most recent call last):
  File "C:\Users\Utilisateur\onde thonny nouveau.py", line 2, in <module>
    from matplotlib import pyplot, animation
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\__init__.py", line 139, in <module>
    from . import cbook, rcsetup
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\cbook\__init__.py", line 34, in <module>
    class CallbackRegistry:
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\cbook\__init__.py", line 127, in CallbackRegistry
    def _remove_proxy(self, proxy, *, _is_finalizing=sys.is_finalizing):
NameError: name 'sys' is not defined

MERCI

Posté par
Nelcar
re : On jette un caillou dans l'eau 03-05-20 à 18:57

et qu'est ce que tu appelle 'tu as ajouté une grille " c'est quoi

MERCI

Posté par
Nelcar
re : On jette un caillou dans l'eau 03-05-20 à 19:21

ok j'ai vu ta ligne
ax.grid()
MERCI

Posté par
vanoise
re : On jette un caillou dans l'eau 03-05-20 à 19:24

Je veux parler de la ligne :
ax.grid()
qui ajoute un quadrillage : plus facile ainsi de bien observer comment évolue la courbe.
Problème d'installation mais à distance, difficile...
Peut-être ajouter en tout début de programme la ligne :
import sys

Posté par
Nelcar
re : On jette un caillou dans l'eau 03-05-20 à 19:55

Re,
voilà ce que j'ai fait :

import sys
from math import sin, pi
from matplotlib import pyplot, animation
Xmax=10.0
Tmax=10.0
fig=pyplot.figure()
ax=pyplot.axes(xlim=(0,Xmax),ylim=(-2,2))
NbEchantillons=200
positionsx=[i*Xmax/NbEchantillons for i in range(NbEchantillons)]
temps=[i*Tmax/NbEchantillons for i in range(NbEchantillons)]
T=4.0
v=1.0
mescourbes=[[sin(2*pi/T*(t-x/v)) for x in positionsx] for t in temps]
courbe, =pyplot.plot(positionsx, mescourbes[0])
def incrementemps(i) :
    courbe.set_ydata(mescourbes[i])
    return courbe
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title("Propagation d'une onde progressive sinusoïdale")
ax.grid()
line_ani=animation.FuncAnimation(fig,incrementemps,100,interval=50,blit=False)
pyplot.show()

et en bas
j'ai :
Traceback (most recent call last):
  File "C:\Users\Utilisateur\onde b.py", line 3, in <module>
    from matplotlib import pyplot, animation
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\__init__.py", line 139, in <module>
    from . import cbook, rcsetup
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\cbook\__init__.py", line 34, in <module>
    class CallbackRegistry:
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\matplotlib\cbook\__init__.py", line 127, in CallbackRegistry
    def _remove_proxy(self, proxy, *, _is_finalizing=sys.is_finalizing):
NameError: name 'sys' is not defined

MERCI

Posté par
vanoise
re : On jette un caillou dans l'eau 03-05-20 à 21:11

Une rapide recherche sur le web montre que tu n'es pas le seul a avoir ce problème sous Windows... Peut-être ajouter aussi au début :
import os

Sinon, de chez moi, je ne vois pas trop ce que je peux faire de plus pour t'aider dans la mesure où j'ai testé le programme à la fois sous linux et sous Windows 10 et que tout fonctionne. Le programme n'est donc pas en cause mais l'installation de Python sur ton ordinateur...

Posté par
Nelcar
re : On jette un caillou dans l'eau 04-05-20 à 08:52

Bonjour,
merci pour ta réponse. Je suis toujours sur windows 8.1 et non 10. J'ai essayé de rajouter au début import os et toujours pareil.
Tant pis pas grave
Merci et bonne journée



Mentions légales - Retrouvez cette page sur l'île de la physique - chimie
© digiSchool 2025

Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 245 fiches de physique

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !