Ejercicio 1
Selecciona y resuelve 3 de los siguientes ejercicios.(metodo bisección o newton raphson)
- 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.
bisect(f_1a,0,2)## $root
## [1] 1.23
##
## $f.root
## [1] 0
##
## $iter
## [1] 54
##
## $estim.prec
## [1] 2.220446e-16
newtonRaphson(f_1a,0,df_1a)## $root
## [1] 1.23
##
## $f.root
## [1] 1.776357e-15
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 1.023403e-09
Se trata de aproximar a la menor menor positiva. Se establece un intervalo contemplando los números positivos, en este caso del 0 al 5. Una vez graficada la función, observamos 2 posibles raíces dentro de los intervalos [0,2] y [3.5,4] pero únicamente nos interesa la raíz menor positiva. Se aplica la función bisect y NR para el intervalo [0,2] y obtenemos el mismo resultado en ambos, 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.
Método Bisección
bisect(f_1b,-2,0)## $root
## [1] -0.5643266
##
## $f.root
## [1] -2.220446e-16
##
## $iter
## [1] 55
##
## $estim.prec
## [1] 1.110223e-16
bisect(f_1b,0,2)## $root
## [1] 1.207828
##
## $f.root
## [1] 0
##
## $iter
## [1] 54
##
## $estim.prec
## [1] 2.220446e-16
Newton Raphson
newtonRaphson(f_1b,-2,df_1b)## $root
## [1] -0.5643266
##
## $f.root
## [1] 0
##
## $niter
## [1] 6
##
## $estim.prec
## [1] 1.396344e-11
newtonRaphson(f_1b,2,df_1b)## $root
## [1] 1.207828
##
## $f.root
## [1] 0
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 4.015765e-14
Se trata de encontrar dos raíces dentro del intervalo [-2,2]. Al realizar la gráfica observamos que hay dos posibles resultados dentro de los intervalos [-2,0] y [0,2]. Se aplica la función bisect y Newton Raphson dentro de dichos intervalos. Obtenemos como resultado -0.56 y 1.2078 en ambos métodos aplicados.
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\)
Aproxima la raíces de \(f(x)=sen\, x-0.1x\)
- [-2,-3]
bisect(f_1e,-2,-3)## $root
## [1] -2.852342
##
## $f.root
## [1] 1.665335e-16
##
## $iter
## [1] 52
##
## $estim.prec
## [1] 4.440892e-16
newtonRaphson(f_1e,-2,df_1e)## $root
## [1] -2.852342
##
## $f.root
## [1] 1.665335e-16
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 7.63845e-12
- [-1,1]
bisect(f_1e,-1,1)## $root
## [1] 0
##
## $f.root
## [1] 0
##
## $iter
## [1] 2
##
## $estim.prec
## [1] 0
- [2.5,3]
bisect(f_1e,2.5,3)## $root
## [1] 2.852342
##
## $f.root
## [1] -1.665335e-16
##
## $iter
## [1] 51
##
## $estim.prec
## [1] 4.440892e-16
newtonRaphson(f_1e,2.5,df_1e)## $root
## [1] 2.852342
##
## $f.root
## [1] -1.665335e-16
##
## $niter
## [1] 4
##
## $estim.prec
## [1] 2.851467e-09
Se trata de aproximar a las raíces de la función dada. Se realiza la gráfica dentro del intervalo [-5,5] y observamos 3 posibles aproximaciones de raíces dentro de los intervalos [-2,-3],[-1,1] y [2.5,3]. Se aplica el método bisect y Newton Raphson y se obtienen los siguientes resultados: -2.85, 0 y 2.85 respectivamente.
Ejercicio 2
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ónEncuentra un punto fijo de la función \(f(x)=sen\,x-0.1x+1\).
it_pf(g_2a,1.5,1e-8,50)## $sucesion
## [1] 1.500000 1.847495 1.777213 1.801050 1.793503 1.795953 1.795164 1.795419
## [9] 1.795336 1.795363 1.795354 1.795357 1.795356 1.795357 1.795356 1.795357
## [17] 1.795356
##
## $precision
## [1] 9.6578e-09
##
## $iteraciones
## [1] 16
Observamos en la gráfica que dentro del intervalo [1,2] existe un punto fijo aproximado de 1.78. Para comprobar la aproximación se aplica la función de punto fijo tomando como valor inicial 1.5 y después de 16 iteraciones obtenemos un punto fijo aproximado de 1.7953.
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))Las raíces son
x## [1] 3
y## [1] 2
Se despejan ambas ecuaciones para obtener el valor de “x” y se les asigna como valor de “g” en valores de “y”. Se aplica la función NewtonRaphson a la función g, en el valor 1 para que nos muestre la raíz. Obtenemos un resultado de x=1 y 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.
cambio_nominal<- read.xlsx("cambio_nominal .xlsx") %>% as_tibble()
cambio_nominal$Periodo <- ym(cambio_nominal$Periodo)
graf_cambio_nominal <-ggplot(cambio_nominal)+
geom_line(aes(Periodo, cambio_nominal), color="goldenrod")+
scale_x_date(breaks = "2 years", date_labels = "%Y")+
theme_bw()
ggplotly(graf_cambio_nominal)cambio_nominal_2002 <- cambio_nominal %>% filter(year(Periodo)==2002)
cambio_nominal_2002 <- cambio_nominal_2002 %>% mutate(Mes=month(Periodo))
#
poli_cambio_nominal <- as.function (poly.calc(cambio_nominal_2002$Mes, cambio_nominal_2002$cambio_nominal))
sec_mes <- seq(from=1, to=12, by=0.01)
val_cambio_nominal_pol <- poli_cambio_nominal(sec_mes)
val_cambio_nominal_spline <- cubicspline(cambio_nominal_2002$Mes,cambio_nominal_2002$cambio_nominal, sec_mes)
#
graf_cambio_nominal_2002 <- ggplot()+
geom_line(data=cambio_nominal_2002, aes(Mes, cambio_nominal), color="firebrick")+
geom_point(data=cambio_nominal_2002, aes(Mes, cambio_nominal), color="blue", size=2.5)+
geom_line(aes(sec_mes, val_cambio_nominal_pol), color= "hotpink")+
geom_line(aes(sec_mes, val_cambio_nominal_spline), color= "yellow")+
theme_bw()
ggplotly(graf_cambio_nominal_2002)Se busca ajustar los datos mediante un polinomio interpolante y por un spline cúbico. Los datos, en este caso del tipo de cambio nominal se obtuvieron en el enlace proporcionado; se descargan y posteriormente se establece el rango de años que se quieren evaluar. En este caso fue del 2002 en adelante. Una vez que se tienen los valores, se aplica la función poly. calc y cubicspline para obtener una mejor aproximación a los puntos graficados.