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} #derivada de f
it_nr1a <- function(x){x-f_1a(x)/df_1a(x)}
x_1a <- seq(from=1, to=4, by=0.1)
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="gold", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="x", y="f(x)", title="Método de Newton Raphson")+
theme_bw()
#plot(graf_1)
ggplotly(graf_1a)p0 <- 1
it_nr1a(it_nr1a(it_nr1a(it_nr1a(it_nr1a(p0)))))## [1] 0.5940384
[1] 0.5940384
- \(x-cosx=0\), \([0, \pi/2]\) `
## [1] 0.7390851
Utilizando el método de Newton-Raphson la aproximación despues de cuatro iterciones es [1] 0.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=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="blue", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="x", y="y", title="Método de raphson ")+
theme_bw()
#plot(graf_3c)
ggplotly(graf_2a)p0 <- -1
newtonRaphson(f_2a, .5, df_2a)## $root
## [1] 0.6411857
##
## $f.root
## [1] 0
##
## $niter
## [1] 4
##
## $estim.prec
## [1] 2.843895e-14
Utilizando el método de Newton-Raphson la raíz 0.6411857 de la función x-2^{-x}=0 después de cuatro iteraciones. Para el método de bisección se obtuvo esta raíz despues de 13 iteracciones más, pero no tuvimos que sacar la derivada manualmente.
- \(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){exp(x)-2*exp(x)+3}
x_2b <- seq(from=-5, to=4, 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="green", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="x", y="y", title= "Método de Raphson")+
theme_test()
plot(graf_2b)#ggplotly(graf_2a)
p0 <-1
newtonRaphson(f_2b, 0, df_2b)## Warning in newtonRaphson(f_2b, 0, df_2b): Maximum number of iterations 'maxiter'
## was reached.
## $root
## [1] 496.4375
##
## $f.root
## [1] 3.981783e+215
##
## $niter
## [1] 501
##
## $estim.prec
## [1] 1
En el método de newton raphson son necesarias 4 interacciones para encontrar la raíz, pero en la tarea 2 habían sido necesarias 17 interacciones, pero no tuvimos que sacar la derivada manualmente.
- \(2x\cos (2x)-(x+1)^2=0\) para \(-3\leq x\leq -2\) y \(-1\leq x \leq 0\)
f_2c <- function(x){2*x*cos(2*x)-(x+1)^2}
df_2c <- function(x){2*cos(2*x)-4*x*sin(2*x)-2*(x+1)}
x_2c <- seq(from=-3, to=0, 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_2c, y=y_2c), color="green", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="x", y="y", title="Método de New raphson 2c")+
theme_bw()
#plot(graf_3c)
ggplotly(graf_2c)newtonRaphson(f_2c, -2, df_2b)## Warning in newtonRaphson(f_2c, -2, df_2b): Maximum number of iterations
## 'maxiter' was reached.
## $root
## [1] 18.92671
##
## $f.root
## [1] -359.67
##
## $niter
## [1] 501
##
## $estim.prec
## [1] 2.168397e-06
Utilizado el método de Newton-Raphson la raíz -2.191308 de la función 2x(2x)-(x+1)^2=0 después de diecisiete iteraciones Para el método de bisección se obtuvo esta misma raiz con este mismo número
- \(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_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=-2, 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="green", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="x", y="y", title="Método de raphson") +
theme_bw()
plot(graf_2d)#ggplotly(graf_2d)
p0 <-1
newtonRaphson(f_2d, 0, df_2d)## $root
## [1] 0.2975302
##
## $f.root
## [1] 0
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 8.883671e-12
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="x", y="y", title="Método Newton Rapshon ")+
theme_test()
#plot(graf_3a)
ggplotly(graf_3a)newtonRaphson(f_3a, 1.5, df_3a)## $root
## [1] 1.829384
##
## $f.root
## [1] 0
##
## $niter
## [1] 6
##
## $estim.prec
## [1] 2.165497e-16
- \(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, to=3, 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="x", y="y", 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
para la función log(x-1)+cos(x-1)=0 luego de 5 iteraciones se obtuvo una raíz de 1.397748 con ambos métodos
- \(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="x", y="y", title="Método de Newton-raphson")+
theme_bw()
#plot(graf_3c)
ggplotly(graf_3c)p0 <-1
newtonRaphson(f_3c, 2, df_3c)## $root
## [1] 2.370687
##
## $f.root
## [1] 1.720846e-15
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 5.970602e-15
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
Para la función 2x,cos,2x-(x-2)^2=0 encontramos una raíz de 2.370687 después de 4 y 5 iteracciones
newtonRaphson(f_3c, 4, df_3c)## $root
## [1] 3.722113
##
## $f.root
## [1] -3.552714e-15
##
## $niter
## [1] 5
##
## $estim.prec
## [1] 1.552625e-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="blue", size=1)+
#coord_fixed(ratio = 1)+ # misma escala en los ejes
labs(x="x", y="y", title="Método Newton Rapshon")+
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
encontramos una raíz de 3.733079 después de 5 y 6 iteracciones