import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from math import asin
def DATOS():
global frecuencia, V_angular, Periodo, longOnda, velOnda, numOnda
print('1. Velocidad Angular(w)?')
print('2. Frecuencia(f)')
print('3. Periodo(T)')
print('4. longitud de Onda(λ)')
print('5. numero de onda(k)')
print('6. velocidad de onda(m/s)')
option = input('nro de tipo de dato ')
if option == '1':
V_angular = float(input('ingresa la Vel.Angular(rad/s): '))
frecuencia = V_angular / (2 * np.pi)
Periodo = 2 * np.pi / V_angular
DATOS_PRIMARIOS()
elif option == '2':
frecuencia = float(input('ingresa la Frecuencia(Hz): '))
V_angular = 2 * np.pi * frecuencia
Periodo = 1 / frecuencia
DATOS_PRIMARIOS()
elif option == '3':
Periodo = float(input('ingresa el Periodo(s): '))
V_angular = 2 * np.pi / Periodo
frecuencia = 1 / Periodo
DATOS_PRIMARIOS()
elif option == '4':
longOnda = float(input('ingresa la Longitud de onda(m): '))
velOnda = longOnda * frecuencia
numOnda = 2 * np.pi / longOnda
DATOS_SECUNDARIOS()
elif option == '5':
numOnda = float(input('ingresa el número de onda(k): '))
velOnda = V_angular / numOnda
longOnda = 2 * np.pi / numOnda
DATOS_SECUNDARIOS()
elif option == '6':
velOnda = float(input('ingresa la velocidad de onda(m/s): '))
numOnda = V_angular / velOnda
longOnda = velOnda * Periodo
DATOS_SECUNDARIOS()
def DATOS_PRIMARIOS():
global longOnda, velOnda, numOnda
print('4. longitud de Onda(λ)')
print('5. numero de onda(k)')
print('6. velocidad de onda(m/s)')
option = input('nro de tipo de dato ')
if option == '4':
longOnda = float(input('ingresa la Longitud de onda(m): '))
velOnda = longOnda * frecuencia
numOnda = 2 * np.pi / longOnda
elif option == '5':
numOnda = float(input('ingresa el número de onda(k): '))
velOnda = V_angular / numOnda
longOnda = 2 * np.pi / numOnda
elif option == '6':
velOnda = float(input('ingresa la velocidad de onda(m/s): '))
numOnda = V_angular / velOnda
longOnda = velOnda * Periodo
print('Longitud de Onda;Numero de onda;Velocidad de onda')
return longOnda, numOnda, velOnda
def DATOS_SECUNDARIOS():
global frecuencia, V_angular, Periodo
print('1. Velocidad Angular(w)')
print('2. Frecuencia(f)')
print('3. Periodo(T)')
option = input('nro de tipo de dato ')
if option == '1':
V_angular = float(input('ingresa la Vel.Angular(rad/s): '))
frecuencia = V_angular / (2 * np.pi)
Periodo = 2 * np.pi / V_angular
elif option == '2':
frecuencia = float(input('ingresa la Frecuencia(Hz): '))
V_angular = 2 * np.pi * frecuencia
Periodo = 1 / frecuencia
elif option == '3':
Periodo = float(input('ingresa el Periodo(s): '))
V_angular = 2 * np.pi / Periodo
frecuencia = 1 / Periodo
print('Vel.Agular;Frecuencia;Periodo')
return V_angular, frecuencia, Periodo
def DATOS3():
global Pos_Y, faseInicial, amplitud
print('selecionar los Datos a Ingresar para x=0 y t=0 ')
print('1. Pos.Vertical[Y(x,t); Angulo de desfase(a°)')
print('2. Pos.Vertical[Y(x,t);Amplitud(m)')
print('3. Amplitud(m); Angulo de desfase(a°)')
option = input('nro de tipo de dato ')
if option == '1':
Pos_Y = float(input('ingresa la Posicion vertical(m): '))
faseInicial = float(input('ingresa el Angulo de desfase(a°): '))
amplitud = Pos_Y / np.sin(faseInicial * 0.01745329)
elif option == '2':
Pos_Y = float(input('ingresa la Posicion vertical(m): '))
amplitud = float(input('ingresa la Amplitud(m): '))
faseInicial = (asin(Pos_Y / amplitud)) / 0.01745329
elif option == '3':
amplitud = float(input('ingresa la Amplitud(m): '))
faseInicial = float(input('ingresa el Angulo de desfase(a°): '))
Pos_Y = amplitud * np.sin(faseInicial * 0.01745329)
print('Amplitud(m);Angulo de desfase(a°);Pos.Vertical[Y(x,t)]')
return amplitud, faseInicial, Pos_Y
DATOS()
DATOS3()
fig, ax = plt.subplots(2, 1)
x = np.arange(0, 2 * np.pi, 0.01)
linea1 = ax[0].plot(x, amplitud * np.sin(faseInicial * 0.01745329 + x * 2 * np.pi /
longOnda - 2 * np.pi * frecuencia))
linea2 = ax[1].plot(x, amplitud * np.sin(faseInicial * 0.01745329 + x * 2 * np.pi /
longOnda))
def animacion(i):
linea1[0].set_ydata(amplitud * np.sin(faseInicial * 0.01745329 + x * 2 *
np.pi / longOnda - 2 * np.pi * frecuencia * i))
linea2[0].set_ydata(amplitud * np.sin(faseInicial * 0.01745329 + x * 2 *
np.pi / longOnda + 2 * np.pi * frecuencia * i))
return linea1, linea2
ani = animation.FuncAnimation(fig, animacion, interval=10)
plt.show()