Este documento de R Markdown analiza y grafica una ecuación de tercer
grado. El objetivo principal es identificar y resaltar los puntos donde
el valor de la variable dependiente (y
) cambia de signo, lo
que indica una aproximación a las raíces de la ecuación (los puntos
donde la función cruza el eje x).
La ecuación utilizada en este ejemplo es:
\(y = x^3 - 2x^2 - 5x +
6\)
Primero, definimos la función y generamos un conjunto de puntos
(x, y)
en un rango específico para poder graficarla.
Creación de una secuencia de valores para la variable independiente ‘x’.
El rango va de -3 a 4 con incrementos de 0.1
Ahora, recorremos los datos para encontrar los puntos donde
y
cruza el eje x. Un cambio de signo entre dos puntos
consecutivos y_i
y y_{i+1}
significa que
existe una raíz entre x_i
y x_{i+1}
.
La función which() devuelve los índices donde la condición es verdadera.
diff(sign(y)) será diferente de cero justo donde el signo de ‘y’ cambia.
## [1] 2 3 8 9 12 13
for (i in signos) {
cat(sprintf("cambio de signo\n"))
cat(sprintf("x = %.2f y = %.3f\n", Tabla$X[i], Tabla$Y[i]))
cat(sprintf("x = %.2f y = %.3f\n\n", Tabla$X[i+1], Tabla$Y[i+1]))
}
## cambio de signo
## x = -2.50 y = -9.625
## x = -2.00 y = 0.000
##
## cambio de signo
## x = -2.00 y = 0.000
## x = -1.50 y = 5.625
##
## cambio de signo
## x = 0.50 y = 3.125
## x = 1.00 y = 0.000
##
## cambio de signo
## x = 1.00 y = 0.000
## x = 1.50 y = -2.625
##
## cambio de signo
## x = 2.50 y = -3.375
## x = 3.00 y = 0.000
##
## cambio de signo
## x = 3.00 y = 0.000
## x = 3.50 y = 6.875
Crear un data frame con los puntos que rodean el cambio para resaltarlos en la gráfica.
Finalmente, usamos ggplot2
para crear una visualización
de alta calidad de la función.
La línea de la curva se muestra en azul, y los puntos que marcan el cambio de signo se resaltan en rojo.
plot(Tabla$X, Tabla$Y,
type = "l", # Especifica que el tipo de gráfico es una línea.
col = "steelblue",
lwd = 2, # 'lwd' controla el grosor de la línea.
main = "Gráfica de la Ecuación y = x^3 - 2x^2 - 5x + 6")
abline(h = 0)
points(puntos$X, puntos$Y,
col = "red",
pch = 19, # Círculo sólido.
cex = 1.5) # Aumenta el tamaño del punto para mejor visibilidad.