progressiva.py 1.25 KB
Newer Older
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
# -*- coding: iso-8859-15 -*-
# Programa que apresenta a forma de uma onda progressiva
# do tipo y(x,t)=y_m*sen(k*x-w*t)

from matplotlib.pylab import *  # pylab é a maneira fácil de fazer gráficos
import time                     # vamos animar os gráficos em tempo real
 
ion()   #Ativa o modo interativo (para a animação do gráfico)

# Definições
L_corda=10.0 # comprimento da corda
Lambda=2.0  # comprimento de onda
freq=0.5   # frequência
 
k=2.0*pi/Lambda # número de onda
w=2.0*pi*freq   # frequência angular

x = arange(0,L_corda,0.05) # cria o limite do eixo de x ao comprimento da corda
progressiva, = plot(x,x)   # Apenas cria o gráfico inicial
progressiva.axes.set_ylim(-3,3)   # define os limites do gráfico
 

starttime = time.time()         # O tempo inicial
t = 0                           # Quanto tempo passou

while(t < 500.0):              # while(True): para rodar para sempre

    # Calcula por quanto tempo o programa está rondando  
    t = time.time() - starttime 

    # Calcula a forma da onda
    prog1 = 2.0*sin(k*x-w*t) 
 
    # Atualiza o gráfico (com a soma das ondas
    progressiva.set_ydata(prog1)

    draw()                      # Redesenha a tela

    # Aguarda um instante para salvar um pouco o processador 
    time.sleep(0.03)