Una onda armónica la magnitud física de la onda varía en el tiempo (Mandal 2023; Palagi et al. 2023), en cada punto del espacio, de forma senoidal. Y, tal como pasa con todas las ondas, la variación es en función de la variable x - vt, aunque aquí escribiremos la dependencia en el espacio y el tiempo de una forma ligeramente distinta. Así, pues, expresaremos la onda armónica como:
A es la amplitud de la onda, que corresponde al valor máximo de la perturbación en un punto determinado (m).
x es la posición (m).
t es el tiempo (s).
k es una magnitud denominada número de onda (rad/m).
w minúscula es la frecuencia angular, \(\omega\) es la letra griega omega.
\(\phi\) es la llamada fase inicial, que simplemente nos dice el valor de la fun- fi minúscula.
\[ \psi(x, t)=A \cos (k*x-w*t+ \phi) \]
En esta sección, se están instalando dos bibliotecas necesarias para crear y animar gráficos: ggplot2 (Wickham 2016) y gganimate (Pedersen and Robinson 2024).
# Instala las bibliotecas necesarias si aún no lo has hecho
install.packages("ggplot2")
install.packages("gganimate")
Copiamos la ruta donde queremos almacenar nuestros archivos
setwd("D:/DOCUMENTOS/google drive/libros/asignaturas/Fisica de ondas/funcion de onda")
Cargamos las librerías para poder generar los gráficos
library(ggplot2)
library(gganimate)
Se establecen los parámetros de la onda senoidal.
a <- 1 # Amplitud
k <- 1 # Número de onda
w <- 1 # Velocidad angular
Construimos la función de onda senoidal (Giorgi et al. 2019) para la dirección positiva de + x “k * x - w * t”, para dirección negativa de - x “k * x + w* t” .
funcion_onda <- function(x, t) {
a * cos(k * x - w * t)
}
Crea un marco de datos a partir de todas las combinaciones x es la posición (m) y t es el tiempo (s).
df <- expand.grid(x = seq(-5 * pi, 5 * pi, length.out = 100),
t = seq(0, 5 * pi, length.out = 100))
Calcular los valores de la onda senoidal utilizando la función funcion_onda y se almacenan en la columna y del data frame df.
df$y <- funcion_onda(df$x, df$t)
Se utiliza ggplot2 y gganimate para crear la animación de la onda senoidal. Se establecen transiciones de estados, efectos de entrada y salida, y se personaliza el aspecto de la animación.
animacion <- ggplot(df, aes(x, y)) +# Inicia la creación de un gráfico.
geom_line(col = "red") +# Agrega una capa al gráfico que representa una línea.
transition_states(t, transition_length = 2, state_length = 1) +
# Define la transición de estados para crear la animación.
enter_fade() +# Agrega un efecto de entrada (fade in) a los elementos en cada estado.
exit_fade() +# Agrega un efecto de desvanecimiento a la salida de cada estado en la animación.
labs(title = paste0("Onda Senoidal: y(x,t) =", a,"* cos(", k, "* x -", w, "* t)"),
x = "Posición (x)",
y = "Amplitud") + # Establece etiquetas para el título y los ejes.
theme_minimal() # Aplica un tema minimalista al gráfico para mejorar su apariencia.
animacion
Guardamos la animación como un archivo GIF
anim_save("senoidal_animation.gif", animacion)