Introducción

## Función Seno Simple

# Definir el rango de x
x <- seq(-2*pi, 2*pi, length.out = 1000)

# Calcular y = sin(x)
y <- sin(x)

# Graficar
plot(x, y, 
     type = "l",           # línea continua
     col = "blue",         # color azul
     lwd = 2,              # grosor de línea
     xlab = "x",           # etiqueta eje x
     ylab = "sin(x)",      # etiqueta eje y
     main = "Función Seno", # título
     grid = TRUE)          # rejilla

# Añadir líneas de referencia
abline(h = 0, col = "gray", lty = 2)  # línea horizontal en y=0
abline(v = 0, col = "gray", lty = 2)  # línea vertical en x=0

## Múltiples Funciones Trigonométricas

# Definir el rango de x
x <- seq(-2*pi, 2*pi, length.out = 1000)

# Calcular las funciones
y1 <- sin(x)
y2 <- cos(x)
y3 <- tan(x)
# Limitar tangente para mejor visualización
y3[abs(y3) > 5] <- NA
# Crear el gráfico base con seno
plot(x, y1, 
     type = "l", 
     col = "red", 
     lwd = 2,
     xlab = "x", 
     ylab = "y",
     main = "Funciones Trigonométricas",
     ylim = c(-3, 3),
     xlim = c(-2*pi, 2*pi))

# Añadir coseno
lines(x, y2, col = "blue", lwd = 2)

# Añadir tangente
lines(x, y3, col = "green", lwd = 2)

# Añadir leyenda
legend("topright", 
       legend = c("sin(x)", "cos(x)", "tan(x)"),
       col = c("red", "blue", "green"),
       lwd = 2)

# Añadir rejilla
grid(col = "gray", lty = 3)

Función Trigonométrica Compuesta

# Definir el rango de x
x <- seq(0, 4*pi, length.out = 1000)

# Función compuesta: y = 2*sin(3x) + cos(x/2)
y <- 2*sin(3*x) + cos(x/2)

# Graficar
plot(x, y, 
     type = "l", 
     col = "purple", 
     lwd = 3,
     xlab = "x", 
     ylab = "2*sin(3x) + cos(x/2)",
     main = "Función Trigonométrica Compuesta",
     sub = "y = 2*sin(3x) + cos(x/2)")

# Añadir líneas de referencia
abline(h = 0, col = "gray", lty = 2)
grid(col = "lightgray", lty = 3)

## Funciones con Transformaciones

# Definir el rango de x
x <- seq(-pi, 3*pi, length.out = 1000)

# Diferentes transformaciones del seno
y1 <- sin(x)                    # seno normal
y2 <- 2*sin(x)                  # amplitud doble
y3 <- sin(2*x)                  # frecuencia doble
y4 <- sin(x - pi/4)             # desfase
y5 <- sin(x) + 1                # desplazamiento vertical

# Crear múltiples gráficos en una sola figura
par(mfrow = c(2, 3))  # 2 filas, 3 columnas

# Gráfico 1: Seno normal
plot(x, y1, type = "l", col = "black", lwd = 2, 
     main = "sin(x)", ylab = "y", ylim = c(-3, 3))
grid()

# Gráfico 2: Amplitud doble
plot(x, y2, type = "l", col = "red", lwd = 2, 
     main = "2*sin(x)", ylab = "y", ylim = c(-3, 3))
grid()

# Gráfico 3: Frecuencia doble
plot(x, y3, type = "l", col = "blue", lwd = 2, 
     main = "sin(2x)", ylab = "y", ylim = c(-3, 3))
grid()

# Gráfico 4: Con desfase
plot(x, y4, type = "l", col = "green", lwd = 2, 
     main = "sin(x - π/4)", ylab = "y", ylim = c(-3, 3))
grid()

# Gráfico 5: Desplazamiento vertical
plot(x, y5, type = "l", col = "orange", lwd = 2, 
     main = "sin(x) + 1", ylab = "y", ylim = c(-3, 3))
grid()

# Gráfico 6: Comparación
plot(x, y1, type = "l", col = "black", lwd = 2, 
     main = "Comparación", ylab = "y", ylim = c(-3, 3))
lines(x, y2, col = "red", lwd = 2)
lines(x, y3, col = "blue", lwd = 2)
legend("topright", c("sin(x)", "2*sin(x)", "sin(2x)"), 
       col = c("black", "red", "blue"), lwd = 2, cex = 0.7)
grid()

# Restaurar configuración de gráficos
par(mfrow = c(1, 1))
## Función Personalizada Compleja

# Definir una función trigonométrica más compleja
funcion_compleja <- function(x) {
  return(3*sin(2*x) * exp(-x/10) + cos(x/2))
}

# Definir el rango de x
x <- seq(0, 20, length.out = 2000)
y <- funcion_compleja(x)

# Graficar
plot(x, y, 
     type = "l", 
     col = "darkred", 
     lwd = 2,
     xlab = "x", 
     ylab = "f(x)",
     main = "Función Trigonométrica Amortiguada",
     sub = "f(x) = 3*sin(2x)*exp(-x/10) + cos(x/2)")

# Añadir componentes por separado
y_sin <- 3*sin(2*x) * exp(-x/10)
y_cos <- cos(x/2)

lines(x, y_sin, col = "blue", lty = 2, lwd = 1)
lines(x, y_cos, col = "green", lty = 2, lwd = 1)

# Leyenda
legend("topright", 
       legend = c("f(x) completa", "3*sin(2x)*exp(-x/10)", "cos(x/2)"),
       col = c("darkred", "blue", "green"),
       lty = c(1, 2, 2),
       lwd = c(2, 1, 1))

grid(col = "lightgray")

## Gráfico Interactivo con Parámetros

# Función para crear gráfico con parámetros
graficar_trigonometrica <- function(A = 1, B = 1, C = 0, D = 0) {
  # A: amplitud, B: frecuencia, C: desfase, D: desplazamiento vertical
  x <- seq(-2*pi, 2*pi, length.out = 1000)
  y <- A * sin(B * x + C) + D
  
  titulo <- paste0("y = ", A, "*sin(", B, "*x + ", C, ") + ", D)
  
  plot(x, y, 
       type = "l", 
       col = "navy", 
       lwd = 3,
       xlab = "x", 
       ylab = "y",
       main = titulo,
       ylim = c(-5, 5))
  
  grid(col = "lightgray")
  abline(h = D, col = "red", lty = 2)  # línea del desplazamiento
}

# Ejemplos con diferentes parámetros
par(mfrow = c(2, 2))

graficar_trigonometrica(A = 2, B = 1, C = 0, D = 0)      # Amplitud = 2
graficar_trigonometrica(A = 1, B = 2, C = 0, D = 0)      # Frecuencia = 2
graficar_trigonometrica(A = 1, B = 1, C = pi/4, D = 0)   # Desfase = π/4
graficar_trigonometrica(A = 1, B = 1, C = 0, D = 1)      # Desplazamiento = 1

par(mfrow = c(1, 1))