estacionaria.py 1.46 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 41 42 43 44 45 46 47 48 49
# -*- coding: iso-8859-15 -*-
# Programa que ilustra a construção de uma onda estacionária
# a partir de duas componentes progressivas

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 moto interativo (para a animação do gráfico)

# Definições
L_corda=5.0 # comprimento da corda
Lambda=2.5  # comprimento de onda
freq=0.1   # 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.01) # cria o limite do eixo de x ao comprimento da corda
estacionaria, = plot(x,x)   # Apenas cria o gráfico inicial
progressiva1, = plot(x,x)
progressiva2, = plot(x,x)
estacionaria.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

    # Resultado analítico da onda estacionária
    # y = 2.*sin(k*x)*cos(w*t)  

    prog1 = sin(k*x-w*t) 
    prog2 = sin(k*x+w*t) 
 
    # Atualiza o gráfico (com a soma das ondas
    estacionaria.set_ydata(prog1+prog2)
    

    # Cada componente individual
    progressiva1.set_ydata(prog1)
    progressiva2.set_ydata(prog2)


    draw()                      # Redesenha o gráfico
    time.sleep(0.02)