Ejercicio 1
Selecciona y resuelve 3 de los siguientes ejercicios.
- Aproxima la menor raíz positiva de \(f(x)=x^3-3.23x^2-5.54x+9.84\) por medio de los métodos de bisección y Newton Raphson, compara los resultados.
Primero graficamos para tener una referencia del intérvalo en el que se encontrará dicha raíz:
f_1a <- function(x){x^3-3.23*x^2-5.54*x+9.84}
x_1a <- seq(from=-5, to=5, by=0.01)
y_1a <- f_1a(x_1a)
df_1a <- function(x){3*x^2-3.23*2*x-5.54}
graf_1a <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+
geom_hline(yintercept = 0, linetype="dashed")+
geom_line(aes(x=x_1a, y=y_1a), color="deepskyblue4", size=1)+
labs(x="x", y="f(x)", title="Gráfica Ejercicio 1a")+
theme_bw()
ggplotly(graf_1a)Como podemos encontrar, la raíz positiva se encontrará en un intervalo entre \(x=[0,2]\), así que usaremos la función bisect y la función Newton-Rhapson para encontrar este valor
Método Bisección:
bisect(f_1a, 0, 2, 100)## $root
## [1] 1.23
##
## $f.root
## [1] 0
##
## $iter
## [1] 54
##
## $estim.prec
## [1] 2.220446e-16
Método Newton-Rhapson:
newtonRaphson(f_1a, 1, df_1a)## $root
## [1] 1.23
##
## $f.root
## [1] 0
##
## $niter
## [1] 2
##
## $estim.prec
## [1] 0
Haciendo una comparación de ambos resultados, podemos observar que hemos llegado al mismo resultado mediante ambos métodos, y esto se puede confirmar mediante la gráfica, por lo que podemos asegurar que la raíz positiva de esta función se encuentra en \(x=1.23\)
- Determina las dos raíces de \(f(x)=sen\, x+3\,cos\, x-2\) que pertenecen al intervalo \((-2,2)\), utilizando los métodos de bisección y de Newton Raphson, compara los resultados.
Primero graficamos para tener una referencia del intérvalo en el que se encontrarán dichas raíces:
f_1b <- function(x){sin(x)+3*cos(x)-2}
x_1b <- seq(from=-2.5, to=2.5, by=0.01)
y_1b <- f_1b(x_1b)
df_1b <- function(x){cos(x)-3*sin(x)}
graf_1b <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+
geom_hline(yintercept = 0, linetype="dashed")+
geom_line(aes(x=x_1b, y=y_1b), color="deepskyblue4", size=1)+
labs(x="x", y="f(x)", title="Gráfica Ejercicio 1b")+
theme_bw()
ggplotly(graf_1b)Podemos observar que esta función tiene una raíz en el intérvalo \(x=[-1,0]\), la cual calcularemos a continuación:
Método Bisección:
bisect(f_1b, -1, 0, 100)## $root
## [1] -0.5643266
##
## $f.root
## [1] -2.220446e-16
##
## $iter
## [1] 54
##
## $estim.prec
## [1] 1.110223e-16
Método Newton-Rhapson:
newtonRaphson(f_1b, -1, df_1b)## $root
## [1] -0.5643266
##
## $f.root
## [1] 0
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 5.620258e-15
Haciendo una comparación de ambos resultados, podemos observar que hemos llegado al mismo resultado mediante ambos métodos, y esto se puede confirmar mediante la gráfica, por lo que podemos asegurar que la primera raíz de esta función se encuentra en \(x=-0.56\)
Finalmente, podemos observar que esta función tiene otra raíz en el intérvalo \(x=[1,2]\), la cual calcularemos a continuación:
Método Bisección:
bisect(f_1b, 1, 2, 100)## $root
## [1] 1.207828
##
## $f.root
## [1] 0
##
## $iter
## [1] 53
##
## $estim.prec
## [1] 2.220446e-16
Método Newton-Rhapson:
newtonRaphson(f_1b, 1, df_1b)## $root
## [1] 1.207828
##
## $f.root
## [1] 0
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 3.625973e-16
Haciendo una comparación de ambos resultados, podemos observar que hemos llegado al mismo resultado mediante ambos métodos, y esto se puede confirmar mediante la gráfica, por lo que podemos asegurar que la primera raíz de esta función se encuentra en \(x=1.207828\)
El polinomio \(f(x)=x^3-1.2x^2-8.19x+13.23\) tiene una raíz de orden dos cercana a \(x=2\). Aproxima dicha raíz por medio del método de Newton Raphson. En este caso ¿por qué no se puede utilizar el método de bisección?
Determina las raíces (reales) de \(f(x)=x^4+2x^3-7x^2+3\)
Primero graficamos para tener una referencia del intérvalo en el que se encontrarán dichas raíces:
f_1d <- function(x){x^4+2*x^3-7*x^2+3}
x_1d <- seq(from=-5, to=5, by=0.01)
y_1d <- f_1d(x_1d)
df_1d <- function(x){4*x^3+6*x^2-14*x}
graf_1d <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+
geom_hline(yintercept = 0, linetype="dashed")+
geom_line(aes(x=x_1d, y=y_1d), color="deepskyblue4", size=1)+
labs(x="x", y="f(x)", title="Gráfica Ejercicio 1d")+
theme_bw()
ggplotly(graf_1d)Podemos observar que esta función tiene 4 raíces en total, las cuales las calcularemos mediante el Método Newtoh-Rhapson en los intérvalos que especificaremos a continuación:
Para \(x=[-4,-3]\)
newtonRaphson(f_1d, -4, df_1d)## $root
## [1] -3.791288
##
## $f.root
## [1] 2.842171e-14
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 1.842736e-14
Para \(x=[-1,0]\)
newtonRaphson(f_1d, -1, df_1d)## $root
## [1] -0.618034
##
## $f.root
## [1] -4.440892e-16
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 9.931416e-11
Para \(x=[0.5,1]\)
newtonRaphson(f_1d, 0.5, df_1d)## $root
## [1] 0.7912878
##
## $f.root
## [1] -4.440892e-16
##
## $niter
## [1] 4
##
## $estim.prec
## [1] 6.109195e-09
Para \(x=[1.5,2]\)
newtonRaphson(f_1d, 1.5, df_1d)## $root
## [1] 1.618034
##
## $f.root
## [1] 0
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 2.160432e-10
De esta manera, hemos encontrado que las raíces de esta función son: 1. \(x=-3.791288\) 2. \(x=-0.618034\) 3. \(x=0.7912878\) 4. \(x=1.618034\)
- Aproxima la raíces de \(f(x)=sen\, x-0.1x\)
Ejercicio 2
Encuentra un punto fijo de la función \(f(x)=sen\,x-0.1x+1\).
it_pf <- function(g, q0, pr=1e-5, N=100){
cond <- 1
it <- 1
q <- q0
while(cond==1){
if(it<=N){
q[it+1] = g(q[it]) # iteración de la función
pr_it <- abs(q[it+1]-q[it]) # precisión en la iteración
if(pr_it<pr){
resultados <- list(sucesion=q, precision=pr_it, iteraciones=it)
return(resultados)
cond <- 0
}#final del segundo if
else{it <- it+1}
}#final del primer if
else{
print("Se alcanzo el maximo de iteraciones")
cond <- 0
}#fin del else
}#final del while
}# final de la funciónf_2 <- function(x){sin(x)-0.1*x+1}
x_2 <- seq(from=-5, to=5, by=0.01)
y_2 <- f_2(x_2)
graf_2 <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+
geom_hline(yintercept = 0, linetype="dashed")+
geom_line(aes(x=x_2, y=y_2), color="deepskyblue4", size=1)+
geom_polygon(aes(x=c(2, 1, 1, 2), y=c(1, 1, 2, 2)), size=0.5, color="green", fill=NA)+
coord_fixed(ratio=1)
labs(x="x", y="f(x)", title="Gráfica Ejercicio 2")+
theme_bw()## NULL
ggplotly(graf_2)Como podemos observar, el punto fijo está en el intérvalo \(x=[1,2]\), usaremos la iteración de punto fijo para encontrar dicho valor.
it_pf(f_2, 1, 1e-8, 50)## $sucesion
## [1] 1.000000 1.741471 1.811323 1.790080 1.797045 1.794810 1.795533 1.795300
## [9] 1.795375 1.795351 1.795358 1.795356 1.795357 1.795356 1.795357 1.795356
## [17] 1.795356
##
## $precision
## [1] 8.838189e-09
##
## $iteraciones
## [1] 16
El método de iteración de punto fijo encontró, después de 18 iteraciones, que \(x=1.7953565\) es el punto en el que x=y=f(x)
Ejercicio 3
Resuelve el siguiente sistema de ecuaciones no lineal:
\[\begin{eqnarray} -2x^3+3y^2+42&=&0\\ 5x^2+3y^3-69&=&0 \end{eqnarray}\]
Resolveremos este sistema mediante el método de sustitución, para ello, utilizaremos ambas ecuaciones:
\(-2x^3+3y^2+42=0\) pasará a ser: \([x^3= (3y^2+42)/2]^2\)
\(5x^2+3y^2-69=0\) pasará a ser: \([x^2=(3y^2-69)/(-5)]^3\)
De esta manera, obtenemos nuestra tercera ecuación, la cual se define como \(g(y)\) a continuación, y encontramos la raíz de esta función para calcular el valor de x:
g <- function(y){((3*y^2+42)/2)^2-((3*y^3-69)/(-5))^3}
y <- newtonRaphson(g,1)$root
x <- sqrt((3*y^3-69)/(-5))Y así hemos llegado al siguiente resultado, las raíces son:
x## [1] 3
y## [1] 2
\(x=3\) \(y=2\)
Ejercicio 4
Descarga el conjunto de datos de algún indicador económico (https://www.inegi.org.mx/app/tablero/) y realiza la respectiva gráfica. Posteriormente, selecciona un periodo (por ejemplo un año) y ajusta los datos por medio de un polinomio interpolante y por spline cúbico. Comenta los resultados obtenidos.
Desempleo_USA <- read.xlsx("TasaDesempleoUSA.xlsx") %>% as_tibble()
Desempleo_USA$Periodo <- ym(Desempleo_USA$Periodo)
Graf_Desempleo_USA <- ggplot(Desempleo_USA)+
geom_line(aes(Periodo, Desempleo_USA), color="dodgerblue3")+
scale_x_date(breaks = "2 years", date_labels = "%Y")+
theme_bw()
ggplotly(Graf_Desempleo_USA)Desempleo_USA_2002 <- Desempleo_USA %>% filter(year(Periodo)==2002)
Desempleo_USA_2002 <- Desempleo_USA_2002 %>% mutate(Mes=month(Periodo))
poli_Desempleo_USA <- as.function(poly.calc(Desempleo_USA_2002$Mes, Desempleo_USA_2002$Desempleo_USA))
sec_mes <- seq(from=1, to=12, by=0.01)
val_Desempleo_USA_pol <- poli_Desempleo_USA(sec_mes)
val_Desempleo_USA_spline <-cubicspline(Desempleo_USA_2002$Mes, Desempleo_USA_2002$Desempleo_USA, sec_mes)
graf_Desempleo_USA_2002 <-ggplot()+
geom_line(data=Desempleo_USA_2002, aes(Mes, Desempleo_USA), color="firebrick")+
geom_point(data=Desempleo_USA_2002, aes(Mes, Desempleo_USA), color="blue", size=2.5)+
geom_line(aes(sec_mes, val_Desempleo_USA_pol), color="Red")+
geom_line(aes(sec_mes, val_Desempleo_USA_spline), color="green")+
theme_bw()
ggplotly(graf_Desempleo_USA_2002)La construcción de estas gráficas es útil en el análisis de datos, puesto que nos permite hacer uso de softwares que normalmente son poco conocidos, y que nos permiten examinar a detalle ciertos puntos de la gráfica, lo cual puede mejorar la toma de decisiones políticas porque nos permite conocer exáctamente en qué fase del ciclo económico nos encontramos. En cuanto al desempleo en Estados Unidos, podemos observar una clara tendencia a la baja, a pesar de que hubo un ligero pico en el año de la pandemia, no obstante, esto parece estar mejorando debido a las ayudas y paquetes de estímulo que el gobierno norteamericano ha aplicado.