Anda di halaman 1dari 5

Mtodos Numricos

Actividad 4
Agosto de 2014
Nombre:
Ecuaciones no lineales de una variable
ndice
Mtodo de Biseccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Mtodo de la Secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Mtodo de Rgula Falsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Mtodo de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Mtodo de Biseccin
Algoritmo 1 (Mtodo de Biseccin)
A partir de un intervalo [a
n
, b
n
] que contiene a
la raz p de f (x) = 0, se construye un intervalo
[a
n+1
, b
n+1
] que tambin la contiene tomando en
primer lugar
p
n
=a
n
+
b
n
a
n
2
,
como la n-sima aproximacin a la raz y luego
a
n+1
=a
n
y b
n+1
=p
n
si f (a
n
) f (p
n
) <0,
o bien
a
n+1
=p
n
y b
n+1
=b
n
en otro caso.
Nota 1 El punto medio inicial p
1
dista de la raz real p menos de
b a
2
y en cada iteracin subsiguiente se divide el intervalo a
la mitad, de esta manera tenemos que
|p
n
p|
b a
2
n
.
1
MTODOS NUMRICOS ACTIVIDAD 4
Si se requiere que la raz sea calculada con una precisin TOL, podemos determinar el nmero de iteraciones n a partir de
b a
2
n
<TOL
despejando n:
log
2

b a
TOL

<n
1. Explique cmo funciona la siguiente rutina en Scilab, la cual implementa el algoritmo de biseccin.
Script en Scilab Explicacin
function c = bisection( f, a, b, epsilon )
fa = f(a); fb = f(b);
c = (a+b)/2;
if ( sign(fa) == sign(fb) )
error(Error en biseccin: f(a), f(b) tienen el mismo signo!);
end
printf( [ %6s, %6s ] %8s %8s\n,a,b,c,fc)
while ( (b-a)/2 > epsilon )
fc = f(c);
printf( [ %6.4f, %6.4f ] %8.4f %8.4f\n,a,b,c,fc)
if ( sign ( fc ) == sign ( fa ) )
a = c; fa = fc;
elseif ( sign ( fc ) == sign ( fb ) )
b = c; fb = fc;
end
c = (a+b)/2;
end // while
endfunction
2. En esta actividad trabajaremos con la funcin f (x) = x
3
+4x
2
10 = 0. Con el objetivo de medir el error obtenido al
aplicar los mtodos de aproximacin de races obtenemos un valor de referencia tecleando en la consola de Scilab
-->p=poly([-10 0 4 1],x,coeff)
p =
2 3
- 10 + 4x + x
-->format(20)
-->r=roots(p)
r =
- 2.68261500670704622 + 0.3582593599240416i
- 2.68261500670704622 - 0.3582593599240416i
1.36523001341409667
-->r(3)
ans =
1.36523001341409667
2
MTODOS NUMRICOS ACTIVIDAD 4
3. La ecuacin f (x) = x
3
+4x
2
10 = 0 tiene una raz en [1, 2] ya que f (1) = 5 y f (2) = 14. Use la rutina anterior para
aplicar el Mtodo de Biseccin en la aproximacin de la raz de f en [1, 2], con una tolerancia epsilon=0.0005.
Script en Scilab Explicacin
Mtodo de la Secante
Algoritmo 2 (Mtodo de la Secante) Para n > 1, la aproximacin p
n+1
a una raz de f (x) = 0 se obtiene de las aproxi-
maciones p
n
y p
n1
mediante
p
n+1
=p
n

f (p
n
)(p
n
p
n1
)
f (p
n
) f (p
n1
)
.
4. Explique cmo funciona la siguiente rutina en Scilab, la cual implementa el algoritmo de la secante.
Script en Scilab Explicacin
function [p1,err,k,y]=secant(f,p0,p1,delta,epsilon,max1)
for k=1:max1
p2=p1-f(p1)*(p1-p0)/(f(p1)-f(p0));
err=abs(p2-p1);
relerr=2*err/(abs(p2)+delta);
p0=p1;
p1=p2;
y=f(p1);
if (err<delta)|(relerr<delta)|(abs(y)<epsilon),break,end
end
endfunction
5. La ecuacin f (x) = x
3
+4x
2
10 =0 tiene una raz en [1, 2]. Use la rutina anterior para aplicar el Mtodo de la Secante
en la aproximacin de la raz de f en [1, 2], con una tolerancia epsilon= 0.0005, max1= 20 iteraciones y 510
7
para
epsilon la tolerancia a los valores de la funcin.
Script en Scilab Explicacin
3
MTODOS NUMRICOS ACTIVIDAD 4
Mtodo de Rgula Falsi
Hay otras posibilidades razonables de generar una sucesin de aproximaciones basadas en cortar al eje de las abscisas
con una lnea recta que se aproxime a la grca de f . El mtodo de Rgula Falsi (o de la Posicin Falsa) es un mtodo
hbrido entre el de Biseccin y el de la Secante:
Algoritmo 3 (Mtodo de Rgula Falsi) Para n > 1, a partir de un intervalo [a
n
, b
n
] que contiene la raz de f (x) = 0, se
construye un intervalo [a
n+1
, b
n+1
] que tambin la contiene tomando en primer lugar
p
n+1
=a
n

f (a
n
)(b
n
a
n
)
f (b
n
) f (a
n
)
,
y luego
a
n+1
=a
n
y b
n+1
=p
n+1
si f (a
n
) f (p
n+1
) <0,
o bien
a
n+1
=p
n+1
y b
n+1
=b
n
en otro caso.
6. Explique cmo funciona la siguiente rutina en Scilab, la cual implementa el algoritmo de Regula-Falsi.
Script en Scilab Explicacin
function [c,err,yc]=regula(f,a,b,delta,epsilon,max1)
ya=f(a);
yb=f(b);
if ya*yb>0
disp(f(a) y f(b) tienen el mismo signo),
return,
end
for k=1:max1
dx=yb*(b-a)/(yb-ya);
c=b-dx;
ac=c-a;
yc=f(c);
if yc==0,break;
elseif yb*yc>0
b=c;
yb=yc;
else
a=c;
ya=yc;
end
dx=min(abs(dx),ac);
if abs(dx)<delta,break,end
if abs(yc)<epsilon, break,end
end
c;
err=abs(b-a)/2;
yc=f(c);
endfunction
4
MTODOS NUMRICOS ACTIVIDAD 4
7. La ecuacin f (x) =x
3
+4x
2
10 =0 tiene una raz en [1, 2]. Use la rutina anterior para aplicar el Mtodo de Regula Falsi
en la aproximacin de la raz de f en [1, 2], con una tolerancia epsilon= 0.0005, max1= 20 iteraciones y 510
7
para
epsilon la tolerancia a los valores de la funcin.
Script en Scilab Explicacin
Mtodo de Newton
Algoritmo 4 (Mtodo de Newton) A partir de una aproximacin p
n
a una raz de f (x) =0 se obtiene una nueva aproxi-
macin p
n+1
mediante
p
n+1
=p
n

f (p
n
)
f

(p
n
)
.
8. Explique cmo funciona la siguiente rutina en Scilab, la cual implementa el algoritmo de Newton.
Script en Scilab Explicacin
function [p0,err,k,y]=newton(f,df,p0,delta,epsilon,max1)
for k=1:max1
p1=p0-f(p0)/df(p0);
err=abs(p1-p0);
relerr=2*err/(abs(p1)+delta);
p0=p1;
y=f(p0);
if (err<delta)|(relerr<delta)|(abs(y)<epsilon),break,end
end
endfunction
9. La ecuacin f (x) =x
3
+4x
2
10 =0 tiene una raz en [1, 2]. Use la rutina anterior para aplicar el Mtodo de Newton en la
aproximacin de la raz de f en [1, 2], partiendo de p
0
=1, tolerancia epsilon=0.0005, max1=20 iteraciones y 510
7
para epsilon la tolerancia a los valores de la funcin.
Script en Scilab Explicacin
5