Bonjour à tous :
Je souhaite créer un programme avec Python 3 dont l'effet est le suivant:
On rentre les paramètres "U" et "f" correspondant à un signal sinusoidal de la forme y = U*cos(2*pi*f*t + b)
"t" est le paramètre temps et b la phase à l'origine, initialement à 0.
"t" correspond à l'abscisse de mon graphique.
"y" correspond à l'ordonnée de mon graphique.
Je souhaite tracer le graphique dans lequel cette sinusoide soit animée, comme une onde.
J'ai donc pensé à faire varier le paramètre "b" au cours du temps.
Avec le programme ci-dessous, j'obtiens plein de graphiques avec au fur du temps, le décalage de la courbe.
Ce qui m'intéresse, c'est avoir à l'écran 1 seul graphique, et voir la courbe qui se déplace.
Je sais qu'il y a un problème dans ma boucle "while". Je ne sais pas comment résoudre ce problème.
Quelqu'un pourrait-il me proposer un script corrigé ? Merci.
Je précise bien que je travaille avec Python 3.
Voici mon script :
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 import numpy as np import matplotlib.pyplot as plt t = np.linspace(0, 20, 1000) print("") print("") print("SINUSOIDE EN MOUVEMENT") print("") print("On considère une fonction sinusoïdale d'équation : U*cos(2*pi*f*t + b)") print("") U = float(input("Quelle est l'amplitude de votre signal U (en V, et Umax < 10 V) ?")) print("") f = float(input("Quelle est la fréquence de votre signal f (en Hz) ?")) b = -np.pi while b<np.pi: y = U*np.cos(2*3.14*f*t + b) plt.plot(t,y) b = b + 0.05 plt.grid() plt.title("Onde mécanique en mouvement") plt.xlabel("Temps en secondes") plt.ylabel("Amplitude en Volt") plt.show() plt.pause(0.05) plt.cla() print("C'est FINI !")
Partager