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.
## NULL
bisect(f_a,0,1.5)## $root
## [1] 1.23
##
## $f.root
## [1] 0
##
## $iter
## [1] 53
##
## $estim.prec
## [1] 2.220446e-16
newtonRaphson(f_a,1.5,df_a)## $root
## [1] 1.23
##
## $f.root
## [1] -1.131433e-10
##
## $niter
## [1] 6
##
## $estim.prec
## [1] 4.599362e-10
Para el método de biseccion se necesiraron 53 iteraciones y para Newton 6.
- 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.
f_b <- function(x){sin(x)+3*cos(x)-2} #defino la funcion
df_b <- function(x){(cos(x)-3*sin(x))}
x_b <- seq(0, 2, by=0.01)
y_b <- f_b(x_b)
graf_b <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+ #eje y
geom_hline(yintercept = 0, linetype="dashed")+ #eje x
#grafica
geom_line(aes(x=x_b, y=y_b), color="cadetblue1", size=1)+
geom_point(aes(x=1.207828,y=0), color="blue", size=5)
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="x", y="f(x)", title="Método newton Raphson b")+
theme_minimal()## NULL
ggplotly(graf_b)bisect(f_b,0,1.5)## $root
## [1] 1.207828
##
## $f.root
## [1] 0
##
## $iter
## [1] 54
##
## $estim.prec
## [1] 2.220446e-16
newtonRaphson(f_b,1.5,df_b)## $root
## [1] 1.207828
##
## $f.root
## [1] 0
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 1.812987e-16
Para el método de biseccion se necesiraron 54 iteraciones y para Newton 5.
- 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?
f_c <- function(x){x^3-1.2*x^2-8.19*x+13.23} #defino la funcion
df_c <- function(x){3*x^2-2*1.2*x-8.19}
x_c <- seq(0, 4, by=0.01)
y_c <- f_c(x_c)
graf_c <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+ #eje y
geom_hline(yintercept = 0, linetype="dashed")+ #eje x
#grafica
geom_line(aes(x=x_c, y=y_c), color="cadetblue1", size=1)+
geom_point(aes(x=2.1,y=0), color="blue", size=2)
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="x", y="f(x)", title="Método newton Raphson c")+
theme_minimal()## NULL
ggplotly(graf_c)newton(f_c,2.5,df_c)## $root
## [1] 2.1
##
## $f.root
## [1] 0
##
## $niter
## [1] 26
##
## $estim.prec
## [1] 0
Y no se puede usar el metodo de la biseccion por una gran cantidad de iteracion con uun gran margen de error
Determina las raÃces (reales) de \(f(x)=x^4+2x^3-7x^2+3\)
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)+(1)/(0.1)} #defino la funcion
f_x <- function(x){x}
x_2 <- seq(0, 10, by=0.01)
y_2 <- f_2(x_2)
y_x <- f_x(x_2)
graf_2 <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+ #eje y
geom_hline(yintercept = 0, linetype="dashed")+ #eje x
#grafica
geom_line(aes(x=x_2, y=y_2), color="cadetblue1", size=1)+
geom_line(aes(x=x_2, y=y_x), color="blue", size=1)+
geom_point(aes(x=3.8,y=3.8), color="blue", size=5)
#coord_fixed(ratio=1)+ # misma escala en los ejes
labs(x="x", y="f(x)", title="Punto fijo")+
theme_minimal()## NULL
ggplotly(graf_2)it_pf(f_2, 3.8, 3.5, 10000000)## $sucesion
## [1] 3.800000 3.881421
##
## $precision
## [1] 0.08142109
##
## $iteraciones
## [1] 1
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}\]
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))x## [1] 3
y## [1] 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.
ipc <- read.xlsx("IPC.xlsx") %>% as_tibble()
ipc$Periodo <- ym(ipc$Periodo)
graf_ipc<- ggplot(ipc)+
geom_line(aes(Periodo,Indice_de_precios), color="goldenrod")+
scale_x_date(breaks = "2 years", date_labels = "%Y")+
theme_bw()
ggplotly(graf_ipc)ipc_2001 <- ipc %>% filter(year(Periodo)==2001)
ipc_2001 <- ipc_2001 %>% mutate(Mes=month(Periodo))
poli_ipc <- as.function(poly.calc(ipc_2001$Mes,ipc_2001$Indice_de_precios))
sec_mes <- seq(1,12,0.01)
val_ipc_pol <- (poli_ipc(sec_mes))
#val_ipc_spline <- cubicspline(ipc_2001$Mes, ipc, sec_mes)
graf_ipc_2001 <- ggplot()+
geom_line(data=ipc_2001, aes(Mes, Indice_de_precios), color="firebrick")+
geom_point(data=ipc_2001, aes(Mes, Indice_de_precios), color="blue", size=2.5)+
geom_line(aes(sec_mes, val_ipc_pol), color="pink", size=2)+
#geom_line(aes(sec_mes, val_ipc_spline), color="pink")+
theme_bw()
ggplotly(graf_ipc_2001)