#Pablo Leonardo Ferro Padilla
Ejercicio 1
Usa el método de Newton paso por paso para aproximar la solución de las siguientes ecuaciones en el intervalo dado.
- \(x^3-2x^2-5=0\), \([1,4]\)
f_1a <- function(x){x^3-2*(x^2)-5}
df_1a <- function(x){3*x^2-4*x}
it_nr1a <- function(x){x-f_1a(x)/df_1a(x)}
x_1a <- seq(from=.5, to=4.6, by=0.01)
y_1a <- f_1a(x_1a)
graf_1a <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+ #eje x
geom_hline(yintercept = 0, linetype="dashed")+ #eje y
geom_line(aes(x=x_1a, y=y_1a), color="purple", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="x", y="f(x)", title="Gráfica 1a)")+
theme_test()
#plot(graf_1a)
ggplotly(graf_1a)p0 <- 1
it_nr1a(it_nr1a(it_nr1a(it_nr1a(it_nr1a(p0)))))## [1] 0.5940384
Utilizando el método de Newton Rapshon, la aproximación de la raíz de la función \(x^3-2x^2-5=0\) después de 4 iteraciones es \(0.5940384\)
- \(x-cosx=0\), \([0, \pi/2]\)
f_1b <- function(x){x-cos(x)}
df_1b <- function(x){1+sin(x)}
it_nr1b <- function(x){x-f_1b(x)/df_1b(x)}
x_1b <- seq(from=-.5, to=pi, by=0.01)
y_1b <- f_1b(x_1b)
graf_1b <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+ #eje x
geom_hline(yintercept = 0, linetype="dashed")+ #eje y
geom_line(aes(x=x_1b, y=y_1b), color="red", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="x", y="f(x)", title="Gráfica 1b) Método de Newton Raphson")+
theme_test()
#plot(graf_1b)
ggplotly(graf_1b)p0 <- 1
it_nr1b(it_nr1b(it_nr1b(it_nr1b(it_nr1b(p0)))))## [1] 0.7390851
Utilizando el método de Newton Rapshon, la aproximación de la raíz de la función \(x-cosx=0\) después de 4 iteraciones es \(.7390851\)
Ejercicio 2
Aproxima la solución de las siguientes ecuaciones por medio del método de Newton y compáralo con las soluciones obtenidas por medio del método de la bisección (ejercicio 3 de la tarea 2).
- \(x-2^{-x}=0\) para \(0\leq x\leq 1\)
f_2a <- function(x){x-2^(-x)}
df_2a <- function(x){1+log(2)*2^(-x)}
x_2a <- seq(from=-1, to=2, by=0.01)
y_2a <- f_2a(x_2a)
graf_2a <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+ #eje x
geom_hline(yintercept = 0, linetype="dashed")+ #eje y
geom_line(aes(x=x_2a, y=y_2a), color="green", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="tiempo", y="precio", title="Gráfica 2a)")+
theme_test()
plot(graf_2a)#ggplotly(graf_3a)
p0 <-1newtonRaphson(f_2a, .5, df_2a)## $root
## [1] 0.6411857
##
## $f.root
## [1] 0
##
## $niter
## [1] 4
##
## $estim.prec
## [1] 2.843895e-14
Se obtuvo una raíz de \(0.6411857\) en ambos métodos para la función \(x-2^{-x}=0\), sin embargo, en el método de la bisección se obtuvo esa raíz luego de 20 iteraciones, 16 más que en el de NewtonRaphson, la desventaja es que en el último método tuvimos que calcular la derivada de la función
- \(e^x-x^2+3x-2=0\) para \(0\leq x\leq 1\)
f_2b <- function(x){exp(x)-x^2+3*x-2}
df_2b <- function(x){-2*x+exp(x)+3}
x_2b <- seq(from=-4, to=3, by=0.01)
y_2b <- f_2b(x_2b)
graf_2b <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+ #eje x
geom_hline(yintercept = 0, linetype="dashed")+ #eje y
geom_line(aes(x=x_2b, y=y_2b), color="red", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="tiempo", y="cantidad", title="Gráfica 2b)")+
theme_test()
plot(graf_2b)#ggplotly(graf_2b)
p0 <-1newtonRaphson(f_2b, 0, df_2b)## $root
## [1] 0.2575303
##
## $f.root
## [1] 0
##
## $niter
## [1] 4
##
## $estim.prec
## [1] 2.665238e-12
La raíz aproximada de la función fue de \(0.2575303\) luego de aplicar 4 iteraciones y con una precisión de \(2.66\times 10^{-12}\) en el método de la bisección se obtiene el mismo resultado pero luego de 17 iteraciones
- \(2x\cos (2x)-(x+1)^2=0\) para \(-3\leq x\leq -2\) y \(-1\leq x \leq 0\) \(f(x)`=-2*x+2*((-2*x*sin(2*x))+(cos(2*x)))-2\)
f_2c <- function(x){2*x*cos(2*x)-(x+1)^2}
df_2c <- function(x){-2*x+2*((-2*x*sin(2*x))+(cos(2*x)))-2}
x_2c <- seq(from=-3.2, to=.5, by=0.01)
y_2c <- f_2c(x_2c)
graf_2c <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+ #eje x
geom_hline(yintercept = 0, linetype="dashed")+ #eje y
geom_line(aes(x=x_2b, y=y_2b), color="yellow", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="x", y="f(x)", title="Gráfica 2c)")+
theme_test()
plot(graf_2c)#ggplotly(graf_2c)
p0 <-1newtonRaphson(f_2c, 2, df_2c)## $root
## [1] -2.191308
##
## $f.root
## [1] 1.332268e-15
##
## $niter
## [1] 7
##
## $estim.prec
## [1] 3.750055e-11
Se encontró que la raíz es de \(-2.191308\) luego de 7 iteracioes y con una precisión de \(3.75\times 10^{-11}\), la misma que se obtuvo de el método de la bisección
- \(x\cos x-2x^2+3x-1=0\) para \(0.2\leq x\leq 0.3\) y \(1.2\leq x \leq 1.3\) \(f(x)`={-x*sin(x)-4*x+cos(x)+3}\)
f_2d <- function(x){x*cos(x)-2*x^2+3*x-1}
df_2d <- function(x){-x*sin(x)-4*x+cos(x)+3}
x_2d <- seq(from=0, to=2, by=0.01)
y_2d <- f_2d(x_2d)
graf_2d <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+ #eje x
geom_hline(yintercept = 0, linetype="dashed")+ #eje y
geom_line(aes(x=x_2d, y=y_2d), color="brown", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="x", y="f(x)", title="Gráfica 2d)")+
theme_test()
plot(graf_2d)#ggplotly(graf_2d)
p0 <-1newtonRaphson(f_2d, 0, df_2d)## $root
## [1] 0.2975302
##
## $f.root
## [1] 0
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 8.883671e-12
La raíz que se obtuvo de la función \(x\cos x-2x^2+3x-1=0\) para el método de NewtonRaphson luego de 5 iteraciones es de \(0.2975302\) con una aproximación de \(8.88\times 10^{-12}\) practicamente igual a la de el método de la bisección que con 14 iteraciones obtuvimos \(.29999\)
Ejercicio 3
Aproxima la solución de las siguientes ecuaciones por medio del método de Newton y de la secante.
- \(e^x+2^{-x}+2\,cos\,x-6=0\), para \(1\leq x\leq 2\).
f_3a <- function(x){exp(x)+2^(-x)+2*cos(x)-6}
df_3a <- function(x){exp(x)-log(2)*2^(-x)-2*sin(x)}
x_3a <- seq(from=0, to=2, by=0.01)
y_3a <- f_3a(x_3a)
graf_3a <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+ #eje x
geom_hline(yintercept = 0, linetype="dashed")+ #eje y
geom_line(aes(x=x_3a, y=y_3a), color="green", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="tiempo", y="cantidad", title="Método Newton Rapshon 3a")+
theme_test()
#plot(graf_3a)
ggplotly(graf_3a)newtonRaphson(f_3a, 1.9, df_3a)## $root
## [1] 1.829384
##
## $f.root
## [1] 0
##
## $niter
## [1] 4
##
## $estim.prec
## [1] 1.396613e-10
secant(f_3a, 1.8, 1.9)## $root
## [1] 1.829384
##
## $f.root
## [1] -4.72733e-11
##
## $iter
## [1] 4
##
## $estim.prec
## [1] 2.806512e-07
Se concluyó que en ambos métodos luego de aplicarse 4 iteraciones se encontró una raíz de \(1.829384\) para la función \(e^x+2^{-x}+2\,cos\,x-6=0\)
- \(log(x-1)+cos(x-1)=0\) para \(1.3\leq x \leq 2\).
f_3b <- function(x){log(x-1)+cos(x-1)}
df_3b <- function(x){1/(x-1)-sin(x-1)}
x_3b <- seq(from=1.2, to=4, by=0.01)
y_3b <- f_3b(x_3b)
graf_3b <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+ #eje x
geom_hline(yintercept = 0, linetype="dashed")+ #eje y
geom_line(aes(x=x_3b, y=y_3b), color="green", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="tiempo", y="cantidad", title="Método Newton Rapshon 3b")+
theme_test()
#plot(graf_3c)
ggplotly(graf_3b)newtonRaphson(f_3b, 1.5, df_3b)## $root
## [1] 1.397748
##
## $f.root
## [1] 2.220446e-16
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 6.951135e-13
secant(f_3b, 1.2, 1.5)## $root
## [1] 1.397748
##
## $f.root
## [1] -5.085579e-09
##
## $iter
## [1] 5
##
## $estim.prec
## [1] 7.705866e-06
Se encontró que con ambos métodos luego de 5 iteraciones se obtuvo una raíz de \(1.397748\) para la función \(log(x-1)+cos(x-1)=0\)
- \(2x\,cos\,2x-(x-2)^2=0\) para \(2\leq x \leq 3\) y \(3\leq x \leq 4\).
f_3c <- function(x){2*x*cos(2*x)-(x-2)^2}
df_3c <- function(x){-4*x*sin(2*x)+2*cos(2*x)-2*(x-2)}
x_3c <- seq(from=0, to=5, by=0.01)
y_3c <- f_3c(x_3c)
graf_3c <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+ #eje x
geom_hline(yintercept = 0, linetype="dashed")+ #eje y
geom_line(aes(x=x_3c, y=y_3c), color="green", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="tiempo", y="cantidad", title="Método Newton Rapshon 3c")+
theme_test()
#plot(graf_3c)
ggplotly(graf_3c)p0 <-1newtonRaphson(f_3c, 2.9, df_3c)## $root
## [1] 2.370687
##
## $f.root
## [1] 1.720846e-15
##
## $niter
## [1] 6
##
## $estim.prec
## [1] 2.861597e-14
secant(f_3c, 2.2, 2.4)## $root
## [1] 2.370687
##
## $f.root
## [1] -6.037115e-13
##
## $iter
## [1] 4
##
## $estim.prec
## [1] 2.443943e-08
Se encontró que con ambos métodos luego de 6 y 4 iteraciones, respectivamente, se obtuvo una raíz de \(2.370687\) para la función \(2x\,cos\,2x-(x-2)^2=0\), la desventaja fue que en el métdo de NewtonRaphson tuvimos que calcular manualmente la derivada de la función
newtonRaphson(f_3c, 4, df_3c)## $root
## [1] 3.722113
##
## $f.root
## [1] -3.108624e-15
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 1.525386e-15
secant(f_3c, 3, 4)## $root
## [1] 3.722113
##
## $f.root
## [1] -5.194745e-09
##
## $iter
## [1] 6
##
## $estim.prec
## [1] 3.512699e-06
- \(e^x-3x^2=0\) para \(0\leq x \leq 1\) y \(3\leq x \leq 5\).
f_3d <- function(x){exp(x)-3*x^2}
df_3d <- function(x){exp(x)-6*x}
x_3d <- seq(from=-.5, to=5.5, by=0.01)
y_3d <- f_3d(x_3d)
graf_3d <- ggplot()+
geom_vline(xintercept = 0, linetype="dashed")+ #eje x
geom_hline(yintercept = 0, linetype="dashed")+ #eje y
geom_line(aes(x=x_3d, y=y_3d), color="red", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="x", y="f(x)", title="Método Newton Rapshon 3d")+
theme_gray()
#plot(graf_3d)
ggplotly(graf_3d)newtonRaphson(f_3d, 4, df_3d)## $root
## [1] 3.733079
##
## $f.root
## [1] 7.105427e-15
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 2.187036e-11
secant(f_3d, 3.3, 4)## $root
## [1] 3.733079
##
## $f.root
## [1] 2.214691e-10
##
## $iter
## [1] 6
##
## $estim.prec
## [1] 3.617632e-07
Concluimos que para ambos métodos se obtiene una raíz de \(3.733079\) ñuego de 5 y 6 iteraciones respectivamente