Sei sulla pagina 1di 11

Tarea #2

Bchr: Ángel González Cálculo numérico


C.I 27547354 Prof: Jesús Suniaga

Método gráfico
f=function(x) exp(-x-2)+log(x)

curve(f,from = -5, to=5, col="blue",main="Método gráfico: exp(-x-2)+log(x).")

abline(h=0, col="blue")

abline(v=0, col="blue")

curve(exp(-x-2)+log(x), col="red", add=TRUE)

x0= 1

Método de Newton Raphson


f=function(x) exp(-x-2)+log(x)

x0=1; tol=0.001; n=10

*) Formulas empleadas.
X1=x0-f(x0)/f`(x0)

*)Valor inicial o valores iniciales según sea el método.


Presentar tabla con 10 iteraciones o con un error de 0.001
según lo que se obtenga primero.
[1] 1.0000000 1.0000000 0.9476043

[1] 2.0000000 0.9476043 0.9489535

[1] 3.0000000 0.9489535 0.9489545

Solución: converge en 3 Iteraciones, raíz 0.9489545 Error 9.635715e-07Error:

*) En caso de divergencia del método explique porque


diverge
El método no diverge.

*) Programa en lenguaje R.
f=function(x) exp(-x-2)+log(x)

curve(f,from = -5, to=5, col="blue",main="Método gráfico: exp(-x-2)+log(x).")

abline(h=0, col="blue")

abline(v=0, col="blue")

curve(exp(-x-2)+log(x), col="red", add=TRUE)

x0=1; tol=0.001; n=10


f=function(x) exp(-x-2)+log(x)

df=function(x) -exp(-x-2)+1/x

for(i in 1:n) {

x1=x0-f(x0)/df(x0)

print(c(i,x0,x1)); error=abs(x1-x0)

if(error<tol){

cat("Solución: converge en",i," Iteraciones, raíz",x1,”Error”,error)

stop() }

x0=x1 }

cat("Número máximo de iteraciones alcanzada!.El metodo N-R no converge")

*) Verificación manual de las primeras 2 iteraciones.


-Primera iteración:

X1= 1-(0.04978707)/(0.9502129)

X1= 1-0.0523957

X1= 0.9476043

-Segunda iteración:

X2= 0.9476043-(-0.001353022)/(1.002828)

X2= 0.9476043-(-0.001349206)

X2= 0.9489573

Método Punto Fijo


xo=1;tol=0.001;N=10

g=function(x) exp(-x-2)+log(x)+x

*)Formulas empleadas
X=g(xo)

*) Valor inicial o valores iniciales según sea el método.


Presentar tabla con 10 iteraciones o con un error de 0.001
según lo que se obtenga primero.
[1] 1.000000 1.000000 1.049787
[1] 2.000000 1.049787 1.145743
[1] 3.000000 1.145743 1.324832
[1] 4.000000 1.324832 1.642096
[1] 5.000000 1.642096 2.164267
[1] 6.000000 2.164267 2.951890
[1] 7.000000 2.951890 4.041406
[1] 8.000000 4.041406 5.440377
[1] 9.000000 5.440377 7.134812
[1] 10.000000 7.134812 9.099906

*) En caso de divergencia del método explique porque


diverge.
El método diverge usando este despeje

*) Programa en lenguaje R.
xo=1;tol=0.001;N=10

g=function(x) exp(-x-2)+log(x)+x

for (i in 1:N) {

x=g(xo);e=abs(x-xo);print(c(i,xo,x))

if(e<tol){cat("Converge en",i,"iteraciones.Raiz=",x)

return()}; xo=x}

*) Verificación manual de las primeras 2 iteraciones


-Primera iteración:

X1=exp(-1-2)+log(1)+1

X1=1.049787

Erro1= 1.049787-1

Error1=0.049787

-Segunda iteración:

X2=exp(-1.049787-2)+log(1.049787)+1.049787

X2=1.145743

Erro2=0.0959556

Método de Bisección
a=0;b=1;N=10;E=0.001
f=function(x) exp(-x-2)+log(x)

*) Formulas empleadas
xm=(a+b)/2

*)Valor inicial o valores iniciales según sea el método.


Presentar tabla con 10 iteraciones o con un error de 0.001
según lo que se obtenga primero.
Iteración 1
a,b,xm 0 1 0.5 imagenes -Inf 0.04978707 -0.6110622
raíz= 0.5 error 0.5[1] "cambia a, b queda igual"

Iteración 2
a,b,xm 0.5 1 0.75 imagenes -0.6110622 0.04978707 -0.2237542
raíz= 0.75 error 0.25[1] "cambia a, b queda igual"

Iteración 3
a,b,xm 0.75 1 0.875 imagenes -0.2237542 0.04978707 -0.07711525
raíz= 0.875 error 0.125[1] "cambia a, b queda igual"

Iteración 4
a,b,xm 0.875 1 0.9375 imagenes -0.07711525 0.04978707 -0.01154046
raíz= 0.9375 error 0.0625[1] "cambia a, b queda igual"

Iteración 5
a,b,xm 0.9375 1 0.96875 imagenes -0.01154046 0.04978707 0.01961878
raíz= 0.96875 error 0.03125[1] "cambia b, a queda igual"

Iteración 6
a,b,xm 0.9375 0.96875 0.953125 imagenes -0.01154046 0.01961878
0.00416718
raíz= 0.953125 error 0.015625[1] "cambia b, a queda igual"

Iteración 7
a,b,xm 0.9375 0.953125 0.9453125 imagenes -0.01154046 0.00416718 -
0.003654094
raíz= 0.9453125 error 0.0078125[1] "cambia a, b queda igual"

Iteración 8
a,b,xm 0.9453125 0.953125 0.9492188 imagenes -0.003654094 0.00416718
0.0002646112
raíz= 0.9492188 error 0.00390625[1] "cambia b, a queda igual"

Iteración 9
a,b,xm 0.9453125 0.9492188 0.9472656 imagenes -0.003654094
0.0002646112 -0.001692716
raíz= 0.9472656 error 0.001953125[1] "cambia a, b queda igual"

Iteración 10
a,b,xm 0.9472656 0.9492188 0.9482422 imagenes -0.001692716
0.0002646112 -0.0007135471
raíz= 0.9482422 error 0.0009765625

Converge en 10 raíz= 0.9482422Error:

*) En caso de divergencia del método explique porque


diverge
El método no diverge

*) Programa en lenguaje R

a=0;b=1;N=10;E=0.001
f=function(x) exp(-x-2)+log(x)
curve(f,from=-5,to=5,col="red")
abline(h=0,col="blue")
if(f(a)*f(b)>0){
cat("error:f(a)yf(b)son del mismo signo escoja otro ppar de valores")
stop()}
xant=0
for(i in 1:N){ xm=(a+b)/2
err=abs(xm-xant)
cat("\n","Iteración",i)
cat("\n","a,b,xm",a,b,xm,"imagenes",f(a),f(b),f(xm),"\n","raíz=",xm,"error",err)
if(abs(err)<E) {cat("\n","Converge en",i,"raíz=",xm)
stop()}
else{
if (f(a)*f(xm)> 0){a= xm;print("cambia a, b queda igual")}

if (f(a)*f(xm)< 0){b= xm;print("cambia b, a queda igual")}


}
xant=xm }

*) Verificación manual de las primeras 2 iteraciones.


-Primera iteración:
Xm= (o+1)/2
Xm= 0.5
X1=exp(-0.5-2)+log(0.5)
X1=-0.6110622
-Segunda iteración:
Xm=(0.5+1)/2
Xm=0.75
X2=exp(-0.75-2)+log(0.75)
X2=-0.2237542

Error=(0.5-0.75)

Error=0.25
Método de la secante
f=function(x) exp(-x-2)+log(x)
x0=1; x1=2; tol=0.001; n=10

*) Formulas empleadas
Aproxdf=(f(x1)-f(x0)/(x1-x0)

X= x0-(f(x0)/aproxdf)

Error=[x-x0]

*) Valor inicial o valores iniciales según sea el método.


Presentar tabla con 10 iteraciones o con un error de 0.001
según lo que se obtenga primero.
[1] 1.00000000 0.66167575 0.92475609
[4] 0.07524391
[1] 2.0000000 0.6845054 0.9606177 1.0393823
[1] 3.00000000 1.00819885 0.94910395
[4] 0.02434785
[1] 4.00000000 0.99519953 0.94895355
[4] 0.01166417
[1] 5.0000000000 1.0013182955 0.9489544711
[4] 0.0001494742

Convergencia en 5 iteraciones. raíz= 0.9489545Error

*)En caso de divergencia del método explique porque


diverge
El método no diverge

*) Programa en lenguaje R

f=function(x) exp(-x-2)+log(x)
x0=1; x1=2; tol=0.001; n=10
for(i in 1:n){
aproxdf=(f(x1)-f(x0))/(x1-x0)
x=x0-(f(x0)/aproxdf)
error=abs(x-x0); print(c(i,aproxdf,x,error))
if(error<tol){
cat("\n","Convergencia en",i,"iteraciones. raíz=",x)

stop() }

x0=x1;x1=x }

*) Verificación manual de las primeras 2 iteraciones.


-Primera iteración:
aproxdf=(0.7114628-0.04978707)/(2-1)

aproxdf=0.6616757

X=1-(0.04978707/0.6616757)

X=0.9247561

Error=0.0752439

-Segunda iteración:

Aproxdf= (-0.02454748-0.7114628)/(0.92475609-2)

Aproxdf=0.6845054

X=2-(0.7114628/0.6845054)

X=0.9606177

Error=1.0393823

Método de regla falsa


f=function(x)exp(-x-2)+log(x)

*)Formulas empleadas
Xm=(b*f(a)-a*f(b))/(f(a)-f(b))

Err=(xm-xant)
*)Valor inicial o valores iniciales según sea el método.
Presentar tabla con 10 iteraciones o con un error de 0.001
según lo que se obtenga primero.
Iteración 1
a,b,xm 0 1 NaN imagenes -Inf 0.04978707 NaN
Raíz= NaN error= NaNError in if (abs(err) < E) { : missing value where
TRUE/FALSE needed

*) En caso de divergencia del método explique porque


diverge.
El método diverge

*) Programa en lenguaje R

f=function(x)exp(-x-2)+log(x)

curve(f, from=-5,to=5,col="red")

abline(h=0,col="blue")

if (f(a)*f(b) > 0) {

cat("error:f(a)yf(b)son del mismo signo escoja otro ppar de valores")

stop()}

xant=0

for (i in 1:N){

xm=(b*f(a)-a*f(b))/(f(a)-f(b))

err=abs(xm-xant)

cat("\n","Iteración",i)

cat("\n","a,b,xm",a,b,xm,"imagenes",f(a),f(b),f(xm),"\n","Raíz=",xm,"error=",err)

if (abs(err)<E) {cat("\n","Converge en",i,"iteraciones","Raíz=",xm)

stop()}

else{
if (f(a)*f(xm)>0){a=xm;print("cambia a, b queda igual")}

if (f(a)*f(xm)<0){b=xm;print("Cambia b, a queda igual")}

xant=xm}

Potrebbero piacerti anche