Você está na página 1de 20

I

Soluci
on de Ecuaciones
En la solucion de muchos problemas aparece la necesidad de resolver ecuaciones de la forma
f (x) = 0

donde

f : R R.

Estas soluciones se llaman los ceros de f o races de la ecuacion. Pocos de estos problemas tienen una
solucion simple dada por una f
ormula como en el caso de las ecuaciones lineales y cuadraticas. A
un en el
caso de ecuaciones c
ubicas, para las cuales existen formulas para las soluciones, resulta mas f
acil hacerlo
numericamente porque las f
ormulas son complicadas e involucran races cuadradas y c
ubicas. Por lo tanto
es importante disponer de metodos efectivos para resolver ecuaciones. Vamos a discutir tres metodos: de
biseccion, de iteraci
on de punto fijo, y de Newton.

I.1

M
etodo de Bisecci
on

El metodo de bisecci
on (o de Bolzano) se basa en el teorema del valor intermedio (TVI) o de Bolzano:
si F C[a, b] y f (a)f (b) < 0 entonces existe x (a, b) tal que f (x) = 0
La funcion puede tener m
as de un cero en [a, b], pero al menos uno. Si c = (a + b)/2 es el punto medio
de [a, b], entonces se tiene tres posibilidades exclusivas:
a. f (c) = 0: entonces x = c es un cero
b. f (a)f (c) < 0: entonces existe al menos un cero en [a, c]
c. f (c)f (b) < 0: entonces existe al menos un cero en [c, b]
Con base en esta observaci
on se describe el metodo de la biseccion: Dado un intervalo inicial [a0 , b0 ] = [a, b]
tal que f (a)f (b) < 0 y un valor  > 0 especificando el maximo error de aproximacion deseado, se repite lo
siguiente en la n-esima iteraci
on, comenzando con n = 0 mientras que bn an > :
1. cn = (an + bn )/2
2. si
a. f (cn ) = 0: entonces x = cn es un cero y termine la iteracion
b. f (an )f (cn ) < 0: entonces [an+1 , bn+1 ] = [an , cn ] y contin
ue con n + 1
c. f (cn )f (bn ) < 0: entonces [an+1 , bn+1 ] = [cn , bn ] y contin
ue con n + 1
Al final cn es una aproximaci
on a un cero de f en [a, b]. Note que en una iteracion, la mitad del intervalo
que se descarta puede realmente contener ceros que no pueden ser detectados por el criterio del TVI. Lo
importante es que el intervalo que se preserva contiene al menos un cero.
Ejemplo.

Usamos bisecci
on para determinar el menor cero positivo de f (x) = tan x x.
1

I.

DE ECUACIONES
SOLUCION

Con ayuda de la funci


on fplot de Matlab encontramos como primera
aproximacion que el cero est
a en el intervalo [4.1, 4.6]. Podemos verificar
que existe una u
nica raz en el intervalo examinando los valores de la funcion
en los extremos del intervalo y verificando que f es monotona en el intervalo:
f (4.1) = 2.676474 y f (4.6) = 4.260175, y f es creciente porque f 0 (x) =
sec2 x 1 > 0 excepto en m
ultiplos de , donde f 0 (x) = 0 pero no es maximo
ni mnimo.
La siguiente tabla muestra los resultados obtenidos con la funcion bisect,
modificada para imprimir esta tabla. Las columnas marcadas a c b listan los an , cn , bn y las marcadas s(a) s(c) s(b) listan los signos de f en
an , cn , bn .
>> f=@(x) (tan(x)-x);
>> [c err yc ] = bisect(f, 4.1, 4.6, 1e-3);
n+1

1
2
3
4
5
6
7
8
9
10
c =

4.100000
4.350000
4.475000
4.475000
4.475000
4.490625
4.490625
4.490625
4.492578
4.492578

s(a)
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1

s(c)

4.350000
4.475000
4.537500
4.506250
4.490625
4.498437
4.494531
4.492578
4.493555
4.493066

-1
-1
1
1
-1
1
1
-1
1
-1

4.600000
4.600000
4.600000
4.537500
4.506250
4.506250
4.498437
4.494531
4.494531
4.493555

s(b)
1
1
1
1
1
1
1
1
1
1

4.4931

err = 9.7656e-04
yc = -0.0069

Convergencia
Es claro que para cada n 1
1
bn an = (bn1 an1 )
2
y por lo tanto
bn an =

b0 a0
ba
= n .
n
2
2

Por lo tanto
lim (bn an ) = 0

y de aqu que limn an = limn bn . El algoritmo garatiza que hay una raz r de f tal que para cada
n 0, r [an , bn ]. Por lo tanto
1
ba
|r cn | (bn an ) = n+1 .
2
2
Esto implica que
lim cn = r.
n

Error
El error es En = r cn . Entonces de acuerdo a lo anterior
|En |

ba
.
2n+1

I.1. METODO
DE BISECCION

Dado  > 0, para asegurar que |En | , n debe satisfacer


ba
.
2n+1
Con 0 = b a, entonces
n + 1 log2 (0 /)
Con





0
0
NB = log2
1 = log2
,

2

si n NB entonces |En | . (Note que como se ha usado n, si el algoritmo decide que c0 es un cero, o una
suficiente aproximaci
on, entonces termina con c0 como resultado y el n
umero de iteraciones es n = 0.)
Ejemplo. Para la funci
on e intervalo inicial del problema anterior queremos determinar el n
umero de
iteraciones necesarias para  = 103 . Entonces, 0 = b a = 0.5 y


0.5
NB = log2
= 8.
2 103
La discrepancia con el ejemplo, en el que se listan 10 iteraciones, se debe primero a que all se lista como
primera la iteraci
on 0 (antes de dividir por primera vez), y segundo a que el programa mide el error como
b a en lugar de (b a)/2 como debera ser.

Implementaci
on en Matlab
La funcion Matlab bisect implementa el metodo de biseccion. Aqu se muestra con el cambio para producir
la tabla del ejemplo en la secci
on.
function [c, err, yc] = bisect (f, a, b, delta)
% Entrada - f es la funcion introducida como una cadena de caracteres f
%
- a y b son los extremos izquierdo y derecho
%
- delta es la tolerancia
% Salida - c es el cero
%
- yc = f(c)
%
- err es el error estimado para c
ya = feval(f, a);
yb = feval(f, b);
if ya*yb > 0, return, end
max1 = 1 + round((log(b-a) - log(delta)) / log(2));
fprintf(\n n
a
s(a)
c
s(c)
b
s(b) \n\n);
for k = 1:max1
c = (a + b) / 2;
x = [k a sign(f(a)) c sign(f(c)) b sign(f(b))];
fprintf(%2i
%8.6f %2i
%8.6f %2i
%8.6f %2i \n, x);
yc = feval(f, c);
if yc == 0
a = c;
b = c;
elseif yb*yc > 0
b = c;
yb = yc;
else
a = c;
ya = yc;
end
if b-a < delta, break, end
end
c = (a + b) / 2;
x = [k+1 a sign(f(a)) c sign(f(c)) b sign(f(b))];
fprintf(%2i
%8.6f %2i
%8.6f %2i
%8.6f %2i \n, x);
err = abs(b - a);
yc = feval(f, c);

I.2

I.

DE ECUACIONES
SOLUCION

M
etodo del Punto Fijo

Aunque la forma general que nos interesa es f (x) = 0, el metodo de punto fijo resuelve ecuaciones de la forma
x = g(x)

donde

g : R R.

Si p es una soluci
on de esta ecuaci
on, es decir tal que p = g(p), entonces se dice que p es un punto fijo de g.
Dado un p0 R, una iteraci
on de punto fijo es una iteracion de la forma
pn+1 = g(pn )

para

n 0.

Tal iteracion determina una sucesi


on {pn }
n=0 . Como ejemplo, sea


1
3
g(x) =
x+
.
2
x
Entonces la iteraci
on de punto fijo est
a dada por
pn+1

1
=
2



3
pn +
pn

y los primeros elementos de la sucesi


on con p0 = 2 son entonces


3
1
2+
= 1.75
p1 =
2
2


1
3
p2 =
1.75 +
= 1.732143
2
1.75


3
1
1.732143 +
= 1.732051
p3 =
2
1.732143


1
3
p4 =
1.732051 +
= 1.732051
2
1.732051
..
.
Esta sucesion converge, pero no es siempre el caso para cualquier g(x) como lo muestra el siguiente ejemplo
que incluye la anterior funci
on (g3 ) y otras dos funciones que tienen los mismos puntos fijos.
Ejemplo.

Considere las funciones


1
g1 (x) = x + (x2 3),
4

3
g2 (x) = ,
x

1
g3 (x) =
2



3
x+
.
x

Es facil verificar que cada una de las ecuaciones de punto fijo x = gi (x), i = 1, 2, 3,es equivalente a la ecuacion
f (x) = 0 con f (x) = x2 3. As que cada una de las gi tiene puntos fijos en 3. Los primeros elementos
de las sucesiones para g1 , g2 , g3 con p0 = 2 son:
n=0
1
2
3
4
5

2.000000000000000
2.250000000000000
2.765625000000000
3.927795410156250
7.034689606167376
18.656404069947204

2.000000000000000
1.500000000000000
2.000000000000000
1.500000000000000
2.000000000000000
1.500000000000000

2.000000000000000
1.750000000000000
1.732142857142857
1.732050810014727
1.732050807568877
1.732050807568877

Mientras que la iteraci


on de punto fijo de g3 converge a 3, las de g1 y g2 no lo hacen (la de g1 diverge
a y la de g2 oscila entre los valores 2 y 1.5). La figura muestra el comportamiento de las tres iteraciones.


I.2. METODO
DEL PUNTO FIJO

g1

g2

Iteracion de punto fijo para g1 , g2 y g3 .


La lnea (en rojo) es la funcion y = x.

g3
En g3 del ejemplo anterior se puede reempazar 3 con cualquier a > 0 y entonces la iteracion de punto
fijo, si converge, nos da un metodo para calcular races cuadradas usando multiplicaciones y divisiones. La
funcion g1 es un caso particular de lo siguiente: p es una solucion de f (x) = 0 si y solo si p es un punto fijo
de
g(x) = x + cf (x)

con c 6= 0. Aunque para g1 en el ejemplo no hay convegencia a 3, una eleccion diferente de c puede cambiar
la situacion (ver ejemplo m
as tarde). Esto se puede incluso extender a
g(x) = x + (x)f (x)
donde es una funci
on con (x) 6= 0 para todo x.

Existencia y Convergencia
Nos interesa entonces estudiar bajo que condiciones existen puntos fijos y bajo que condiciones se tiene
convergencia. Primero, el siguiente lema garantiza que si la iteracion de punto fijo de g converge, lo hace a
un punto fijo de g.
Lema 1 Si g : R R es continua y si la sucesi
on de punto fijo {pn }
n=0 de g converge a p, es decir
limp pn = p, entonces p es un punto fijo de g, es decir g(p) = p.
Dem. Se tiene
g(p) = g( lim pn ) = lim g(pn ) = lim pn+1 = p,
n

donde g y lim se pueden intercambiar debido a la continuidad de g.


El siguiente teorema nos dice bajo que condiciones existe un punto fijo. Recuerde que C[a, b] denota el
conjunto de funciones R R continuas en el intervalo [a, b].

I.

DE ECUACIONES
SOLUCION

Teorema 2 (Existencia del punto fijo) Supongamos que g C[a, b] y que g(x) [a, b] para todo x [a, b].
Entonces g tiene un punto fijo en [a, b]. Si adem
as g 0 existe para todo x [a, b], y existe K R, 0 < K < 1,
tal que |g 0 (x)| K, entonces el punto fijo es u
nico.
Prueba. Asumiendo la primera parte primero, si g(a) = a o g(b) = b entonces ya se tiene un punto fijo.
Entonces asumiendo g(a) 6= a y g(b) 6= b esto implica que g(a) > a y g(b) < b. Definiendo f (x) = g(x) x,
se tiene entonces f (a) > 0 y f (b) < 0 y por el teorema del valor intermedio existe c (a, b) tal que f (c) = 0.
Es decir g(c) = c, as que c es un punto fijo de g. Si ademas |g 0 (x)| K < 1 para todo x [a, b] y si
p1 , p2 [a, b], p1 6= p2 , son puntos fijos, entonces por el teorema del valor medio para alg
un c (a, b)
g 0 (c) =

g(p1 ) g(p2 )
p1 p2
=
= 1.
p1 p2
p1 p2

lo cual es una contradicci


on. Entonces el punto fijo es u
nico.
Note que para la existencia realmente una condicion mas debil es suficiente: si g C[a, b] y g(a) a y
g(b) b, entonces el mismo argumento de la prueba muestra que existe un punto fijo. El requerimiento de
que g(x) [a, b] para todo x [a, b] se necesita para la iteracion de punto fijo de tal forma que la sucesi
on
permanezca en [a, b].
El siguiente teorema describe condiciones suficientes para la convergencia de la iteracion de punto fijo.
Teorema 3 (Convergencia al punto fijo) Supongamos que
(i) g C[a, b],
(ii) para todo x [a, b], g(x) [a, b], y
(iii) g 0 existe para todo x [a, b].
Sea p [a, b] un punto fijo de g (existencia garantizada por (i-ii)). Entonces,
(a) si existe K R, 0 K < 1, tal que |g 0 (x)| K para todo x [a, b], entonces p es u
nico y la sucesi
on
de punto fijo con p0 [a, b] converge a p; m
as precisamente
|pn p| K n |p0 p|
para n 0; y
(b) si existe K R, K > 1, tal que |g 0 (p)| K, entonces una sucesi
on de punto fijo de g presenta
divergencia local en [a, b]: si q est
a suficientemente cerca de p entonces |p g(q)| > |p q| (la distancia
a p aumenta con la iteraci
on de punto fijo).
Prueba. Sea {pn }
on de punto fijo. Primero asumimos las condiciones en (a). Por el teorema
n=0 la sucesi
anterior, p es el u
nico punto fijo de g en [a, b]. Para n 1, si se tiene que pn1 [a, b], entonces por el
teorema del valor medio, existe c en el intervalo entre p y pn1 tal que
|p pn | = |g(p) g(pn1 )|
= |g 0 (c)(p pn1 )|
= |g 0 (c)| |p pn1 |
K|p pn1 |.
Como pn1 [a, b] y pn = g(pn1 ), entonces la condicion (ii) implica que pn [a, b]. As que podemos aplicar
el argumento anterior iterativamente (induccion): primero obviamente
|p p0 | K 0 |p p0 | = |p p0 |


I.2. METODO
DEL PUNTO FIJO

y entonces
|p p1 | K|p p0 |
|p p2 | K|p p1 | K(K|p p0 |) = K 2 |p p0 |
..
.
|p pn1 | K n1 |p p0 |
|p pn | K|p pn1 | K(K n1 |p p0 |) = K n |p p0 |.
Como K < 1 se tiene
lim K n = 0

y
0 lim |pn p| lim K n |p p0 | = 0
n

Por lo tanto
lim |p pn | = 0

y
lim pn = p.

Es decir, la sucesi
on de punto fijo {pn }
n=0 converge a p.
Ahora asumimos las condiciones en (b). Supongamos q esta suficientemente cerca de p de tal forma que
|g 0 (x)| > 1 para todo x entre p y q (esto es posible porque |g 0 (p)| > 1 implica que |g 0 (p)| > 1 +  para alg
un
 > 0). Entonces, para alg
un c entre p y q,
|p g(q)| = |g(p) g(q)| = |g 0 (c)(p q)| = |g 0 (c)||p q| > |p q|.
En el caso (b), en el cual |g 0 (p)| > K > 1, no puede decirse simplemente que nunca hay convergencia.
Puede haber convergencia no asint
otica, es decir que para alg
un n se tenga pn = p, como muestra la figura.
Por supuesto esto requiere una funci
on y una eleccion de p0 muy especiales. Es cierto por otra parte que no
puede haber convergencia asint
otica al punto fijo p (pero puede haber convergencia asintotica a otro punto
fijo).

4
5

2
1

Covergencia no asintotica a un punto fijo


p con |g 0 (p)| > 1. El punto (pi , g(pi )) esta
indicado con el n
umero i + 1. El quinto
es (p4 , g(p4 )) = (p, p), cuando se llega al
punto fijo.

p0 p

Ejemplo. Sea g(x) = 2x . Queremos verificar que las condiciones para existencia y convergencia al punto
fijo se dan en el intervalo [0, 1]:
(i) g es una exponencial la cual sabemos que es continua en R y en [0, 1] en particular.
(ii) 2x es decreciente (g 0 (x) < 0) y g(0) = 1 y g(1) = 1/2 entonces g(x) [0, 1] para todo x [0, 1].

I.

DE ECUACIONES
SOLUCION

(iii) g 0 (x) existe para todo x [0, 1] y esta dada por g 0 (x) = 2x ln 2.
(iv) Para acotar |g 0 (x)| en [0, 1] determinamos el maximo y el mnimo de g 0 (x) en [0, 1]. Como ya sabemos
que 2x es mon
otona entonces g 0 (x) tambien lo es y por lo tanto el max y el min estan en los extremos
0
del intervalo: g (0) = ln 2 y g 0 (1) = ln 2/2. As que |g 0 (x)| ln 2 = 0.693147 para todo x [0, 1].
Podemos concluir que existe un u
nico punto fijo de g(x) en [0, 1] y que la iteracion de punto fijo con p0 [0, 1]
converge a ese punto fijo. La iteraci
on es, para n 1,
pn = 2pn1 .
Con p0 = 0.5, en Matlab obtenemos (con tolerancia .5 104 para que las cifras obtenidas con format short
sean significativas, y m
aximo n
umero de iteraciones 20 lo cual resulta suficiente):
>> [p, k, err, P] = fixpt(f,0.5,0.5e-4,20)
p =
0.6412
k =
13
err =
2.8178e-05
P = 0.5000
0.7071
0.6125
0.6540
0.6355
0.6437
0.6401
0.6417
0.6410
0.6413
0.6411
0.6412
0.6412

Ejemplo. Veamos que podemos rescatar la idea de la funcion g1 del primer ejemplo si escogemos una
constante c apropiada en
g(x) = x + c(x2 3).
Se tiene que
g 0 (x) = 1 + 2cx.
As que podemos
tratar de escoger c de tal forma que la condicion (a) del teorema se satisfaga. En particular
conviene tener g 0 ( 3)cerca de cero (para tener un intervalo alrededor donde |g 0 (x)| K <1 para alg
un K. Es
0
decir c cerca de 1/2 3. Escojamos c = 1/4 y entonces g (x) = 1 x/2. Sabemos que 3 [3/2, 2]. Ahora
veamos que constante K en |g 0 (x)| < K podemos garantizar en este intervalo. g 0 (x) es monotona decreciente
(porque g 00 (x) = 1/2), as que es suficiente investigar los valores extremos: g 0 (3/2) = 1 (3/2)/2 = 1/4 y
g 0 (2) = 1 2/2 = 0. As que |g 0 (x)| K en [3/2, 2] con K = 1/4. Conclumos que escogiendo cualquier p0
en [3/2, 2], la secuencia de punto fijo de
1
g4 (x) = x (x2 3)
4

converge a su punto fijo en [3/2, 2] (el cual es 3). Por otra parte, observamos que para
on original
la funci
g1 , por ejemplo con p0 = 1, la secuencia de punto fijo converge, pero al punto fijo 3:


I.2. METODO
DEL PUNTO FIJO

n=0
1
2
3
4
5
6
7
8
9

-1.000000000000000
-1.500000000000000
-1.687500000000000
-1.725585937500000
-1.731174230575562
-1.731933176423340
-1.732035044524380
-1.732048695659237
-1.732050524625521
-1.732050769661635

Esto es consistente con

x
g10 ( 3) = 1 + |x=3 = 0.1339..
2
Finalmente observamos que la variaci
on
1
g5 (x) = x + (x2 3)
2

presenta convergencia oscilatoria a 3:


n=0
1
2
3
4
5
6
7
8
9
10

-1.000000000000000
-2.000000000000000
-1.500000000000000
-1.875000000000000
-1.617187500000000
-1.809539794921875
-1.672322660218924
-1.773991120278074
-1.700468872865346
-1.754671679073376
-1.715235328402286

En este u
ltimo caso

g50 ( 3) = 1 + x |x=3 = .0.732050..

Error
El error absoluto En es la diferencia entre el puto fijo y la aproximacion pn :
En = p pn .
Queremos estudiar como se puede garantizar que |En |  donde  > 0 es un dato especificado. El teorema
anterior, en el caso de convergencia, da la cota
|En | K n |p p0 |.
La constante K se determina analizando g. Pero puesto que no conocemos p, realmente no conocemos |pp0 |.
As que debemos encontrar una cota superior conocida 0 para |p p0 |. Como p0 , p [a, b] entonces
|p p0 | b a,
pero una cota posiblemente un poco mejor (es decir, menor) es
|p p0 | max{p0 a, b p0 }

10

I.

DE ECUACIONES
SOLUCION

(donde max{x, y} denota el m


aximo entre x y y), porque si p [a, p0 ] entonces |p p0 | |p0 a|, y si
p [p0 , b] entonces |p p0 | b p0 (como no sabemos donde esta p entonces debemos usa el maximo de estas
dos posibilidades). A
un otra cota que puede ser mejor se puede obtener de la siguiente manera: se tiene que
(usando la desigualdad triangular y que |p1 p| K|p0 p|)
|p p0 | |p p1 | + |p1 p0 | K|p p0 | + |p1 p0 |
y por lo tanto
(1 K)|p p0 | |p1 p0 |
y
1
|p1 p0 |.
1K
Dependiendo de los valores de K y |p1 p0 | esta u
ltima puede ser una mejor cota para |p p0 |. En conclusi
on
|p p0 |

|En | K n 0
donde


1
|p1 p0 | .
0 = min max{p0 a, b p0 },
1K


(Note por que en este caso se usa min: ambas cotas son siempre validas, entonces la mejor es la menor de
ellas.) Si se desea determinar una aproximacion pn tal que |En |  para un dado  > 0 peque
no entonces el
n
umero de iteraciones se debe tener que
K n 0 
y por lo tanto
Kn


0

Tomando logaritmos se obtiene


0
Dividiendo por ln K se tiene que (note que K < 1 implica ln K < 0 y por lo tanto la desigualdad se invierte)
n log K log

log(0 /)
log(/0 )
=
log K
log(1/K)

(invirtiendo arriba y abajo para tener el cociente de dos n


umeros positivos; se debe tener 0 >  porque de
lo contrario no hay nada que hacer.) Entonces, puesto que debe ser entero, n se escoge como el menor entero
mayor o igual al cociente de la derecha. Finalmente obtenemos que si (usando la notacion dxe para el menor
entero mayor o igual a x)


log(0 /)
NP F =
,
log(1/K)
entonces para todo n NP F , |En | . Esto nos dice como calcular el n
umero de iteraciones necesarias n
para que lograr |En | .
Por otra parte, en una implementacion del metodo de punto fijo es deseable tener un criterio para
terminacion que no requiera el conocimiento de K. Como tampoco se conoce p, entonces con frecuencia se
hace uso de la condici
on
|pn+1 pn | 
a
un cuando esto no necesarimente implica un cota para el error real |pn p|. Si examina la funci
on fixpt
(mas adelante) notar
a que controla tanto este como el error relativo
|pn+1 pn |
.
|pn+1 |


I.2. METODO
DEL PUNTO FIJO

11

Ejemplo. Continuando con g(x) = 2x , queremos determinar el n


umero de iteraciones necesarias para
garantizar error menor o igual a  = 106 . Aqu tenemos a = 0, b = 1, p0 = 0.5 y entonces
max(1 0.5, 0.5 0) = 0.5
Por otra parte p1 = 0.7071 y K = 0.693147,
|p1 p0 |
= 0.6749
1K
y entonces
0 = min(0.5, 0.6749) = 0.5
Reemplazando en la cota del error tenemos
0.5(0.693147)n 106 .
Despejando n se obtiene
n

log(2 106 )
= 35.8032
log 0.693147

As que son suficientes 36 iteraciones para garantizar error 106 .

Implementaci
on Matlab
En la librera de funciones provista con el texto [Mathews,Fink], la funcion que implementa el metodo de
punto fijo se llama fixpt y se muestra abajo. La descripcion de todos los parametros de entrada y salida de
la funcion se encuentran como comentarios despues de la primera lnea de la funcion. Y se pueden ver en la
ventana de comandos con el comando help fixpt. Como se haba mencionado antes, como el punto fijo
es desconocido, se usa m
as bien el error |pk pk1 | para decidir si se detiene la iteracion. Adem
as tambien
se examina el error relativo
|pk pk1 |
|pk |
Para evitar divisi
on por cero, se divide por abs(P(k))+eps donde eps es un n
umero muy peque
no predefinido
en Matlab. La iteraci
on se interrumpe cuando se alcance la tolerancia especificada por el parametro tol o
cuando se alcance el n
umero de m
aximo max1 de iteraciones especificadas.
function [p, k, err, P] = fixpt (g, p0, tol, max1)
% Entrada - g es la funcion iteracion
%
- p0 es el supuesto inicial para el punto fijo
%
- tol es la tolerancia
%
- max1 es el numero maximo de iteraciones
% Salida - p es la aproximacion del punto fijo
%
- k es el numero de iteraciones realizadas
%
- err es el error en la aproximacion
%
- P contiene la secuencia {pn}
P(1) = p0;
for k = 2:max1
P(k) = feval(g, P(k-1));
err = abs(P(k) - P(k-1));
relerr = err / (abs(P(k)) + eps);
p = P(k);
if (err < tol) | (relerr < tol), break; end
end
if k == max1
disp(maximum number of iterations exceeded)
end
P = P;

Note que k=2 en la primera iteraci


on, y entonces realmente el valor k regresado es el n
umero de iteraciones
mas 1.

12
Problema.
donde

I.

DE ECUACIONES
SOLUCION

Emplear el metodo de punto fijo para determinar los ceros o races de la ecuacion f (x) = 0
f (x) = 2(1 x)ex 1.

Soluci
on. Primero analizamos las posibles posiciones de los ceros, si existen. Pusto que
f (0) = 0,

lim = ,

x+

lim = 1,

se tiene al menos un cero en (, 0) y al menos un cero en (0, +). Podemos analizar la derivada
f 0 (x) = 2ex + 2(1 x)ex = 2xex
para obtener m
as informaci
on: f 0 (x) = 0 para x = 0, f 0 (x) > 0
para x < 0 y f 0 (x) < 0 para x > 0. As que f es creciente en
(, 0) y decreciente en (0, +), y por lo tanto f tiene exactamente un cero en cada uno de esos intervalos, los que denotamos
por c1 , c2 respectivamente. El comportamiento se puede observar
en la grafica. All se puede ver que c1 [2, 1] y c2 [0.5, 1] (y si
se quiere se puede verificar calculando f (2) = 0.1880, f (1) =
0.4715 y f (0.5) = 0.6487, f (1) = 1).
Una ecuacion de punto fijo equivalente se puede obtener despejando x en f (x) = 0. Se ven dos formas
directas de hacerlo: despejando x en (1 x) y despejando x en ex . Los resultados son x = g1 (x) y x = g2 (x)
donde
1
g1 (x) = 1 ex ,
g2 (x) = ln 2(1 x).
2
Se observa que g1 est
a definida para todo x, pero g2 solo este.finida para x < 1. La figura mustra las gr
aficas
de g1 y g2 . Tambien se observa que los dos ceros aparecen como puntos fijos de g1 y de g2 , pero es evidente

Funciones g1 y g2
respectivamente. La lnea en cada caso es y = x.
que en cada gi s
olo uno de los puntos fijos exhibe convergencia (g10 (c1 ) > 1, 0 < g10 (c2 ) < 1, 0 < g20 (c1 ) < 1, y
0
g2 (c2 ) > 1). Para verificar el comportamiento encontramos las derivadas
1
g10 (x) = ex ,
2

g20 (x) =

1
.
1x

Para x 0, g10 (x) es decreciente con limx g10 (x) = 0; por lo tanto |g10 (x)| |g10 (0)| = 1/2. Por lo tanto g1
puede ser usada para aproximar c2 con p0 = 0. Para x 0, g20 (x) es creciente con limx g20 (x) = 0; por lo
tanto |g20 (x)| |g20 (0)| = 1. As que se tiene |g20 (x)| < 1 para x < 0 y solo |g20 (x)| = 1 para x = 0. Por esto
no se aplica estrictamente el teorema que garantiza la convergencia. Sin embargo, se observa que la primera
iteracion comenzando con p0 = 0 producira p1 < 0 y all ya se puede garantizar.


I.2. METODO
DEL PUNTO FIJO

13

Las graficas en el problema anterior fueron obtenida con los comandos


>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>

f=@(x) 2*(1-x)*exp(x)-1
figure
hold on
fplot(f,[-3,1])
grid on
g1=@(x)1-0.5*exp(-x)
figure
hold on
fplot(g1,[-2.5 2])
fplot(x,[-2.5 2],r)
g2=@(x) -log(2*(2-x))
grid on
figure
hold on
fplot(g2,[-2.5 0.99])
fplot(x,[-2.5 0.99],r)
grid on

Las funciones tambien se pueden definir con el comando inline: por ejemplo,
f=inline(2*(1-x)*exp(x)-1);

Finalmente se determinan aproximaciones a los puntos fijos usando la funcion fixpt con p0=0, tol=106
(seleccionado arbitrariamente ya que no esta especificado), y max1=20 (que resulta suficiente para la tolerancia
especificada):
>> [p1 k1 err1 P1] = fixpt(g1,0,1e-6,20)
p1 = 7.6804e-01
k1 = 12
err1 = 4.8112e-07
P1 =
0
5.0000e-01
6.9673e-01
7.5090e-01
7.6403e-01
7.6711e-01
7.6782e-01
7.6799e-01
7.6803e-01
7.6804e-01
7.6804e-01
7.6804e-01

>> [p2 k2 err2 P2] = fixpt(g2,0,1e-6,20)


p2 = -1.6783e+00
k2 = 17
err2 = 9.1531e-07
P2 =
0
-6.9315e-01
-1.2197e+00
-1.4905e+00
-1.6056e+00
-1.6508e+00
-1.6680e+00
-1.6745e+00
-1.6769e+00
-1.6778e+00
-1.6781e+00
-1.6783e+00
-1.6783e+00
-1.6783e+00
-1.6783e+00
-1.6783e+00
-1.6783e+00

14

I.3

I.

DE ECUACIONES
SOLUCION

M
etodo de Newton

Motivaci
on como m
etodo de punto fijo. La ecuacion f (x) = 0 se puede transformar en un problema
de punto fijo x = g(x) definiendo
g(x) = x + (x)f (x)
donde : R R es una funci
on tal que (p) 6= 0 si f (p) = 0 (si no para todo tal p, al menos para los p
que sean de inteeres. C
omo escoger ? Para convergencia, |g 0 (p)| < 1 y cuanto mas cercano a cero mejor.
Tenemos que
g 0 (x) = 1 + 0 (x)f (x) + (x)f 0 (x)
y usando f (p) = 0 se obtiene
g 0 (p) = 1 + (p)f 0 (p).
Se observa que la elecci
on (x) = 1/f 0 (x) implica g 0 (p) = 0. As que obtenemos la funcion de punto fijo
g(x) = x

f (x)
,
f 0 (x)

y la iteracion de punto fijo, para n 0,


pn+1 = pn

f (pn )
.
f 0 (pn )

Motivaci
on geom
etrica.
La figura muestra el gr
afico de la funci
on f con la recta tangente en el punto

(pn , f (pn )), la cual se usa para aproximar el cero de f N


f (pn ) 0
= f 0 (pn ).
pn pn+1
De donde
pn+1

f(pn )

f (pn )
.
= pn 0
f (pn )

p
p

n+1

Motivaci
on con aproximaci
on de Taylor. La aproximacion de Taylor de primer orden para f alrededor
de x es
1
f (y) = f (x) + f 0 (x)(y x) + f 00 (y )(y x)2
2
para alg
un y entre x y y. Para |y x| peque
no de tal forma que 21 f 00 (y )(y x)2 0 (aproximadamente 0)
se tiene la aproximaci
on f(y) de f (y):
f (y) f(y) = f (x) + f 0 (x)(y x).
Entonces una aproximaci
on p del cero p de f se puede obtener haciendo y = p y f(
p) = 0. Es decir
0 = f(
p) = f (x) + f 0 (x)(
p x),
y de aqu
p = x

f (x)
.
f 0 (x)

Lo que da origen a la iterati


on
pn+1 = pn
como un metodo para obtener una aproximacion para p.

f (pn )
f 0 (pn )


I.3. METODO
DE NEWTON

15

Ejemplo. Queremos aproximar la raz de f (x) = 0 para f (x) = xex (la cual podemos ver est
a en x = 0).
Tenemos que f 0 (x) = ex xex = (1 x)ex , y entonces
f (x)
xex
x
x(1 x) x
x2
=
x

=
x

=
=
.
f 0 (x)
(1 x)ex
1x
1x
1x

g(x) = x

La iteracion de Newton es entonces


pn+1 =

p2n
.
1 pn

Se obtiene la secuencia

p2
p3
p4
p5
p6

p0
0.500000002
p1 = f (p0 ) =
1 0.50000000
(0.50000000)2
= f (p1 ) =
1 (0.50000000)
(0.16666667)2
= f (p2 ) =
1 (0.16666667)
(0.02380952)2
= f (p3 ) =
1 (0.02380952)
(0.00055370)2
= f (p4 ) =
1 (0.00055370)
(0.00000030)2
= f (p5 ) =
1 (0.00000030)

= 0.50000000
= 0.50000000
= 0.16666667
= 0.02380952
= 0.00055370
= 0.00000030
= 0.000000000

Orden de Convergencia
Puesto que el metodo de Newton es un metodo de punto fijo, el analisis de este da la cota
|p pn | K|p pn1 |
donde K es una cota superior de |g 0 (x)| en el intervalo de interes. Como g 0 (p) = 0 entonces K 0 a medida
que la sucesion se acerca a p. Resulta que suficientemente cerca de p un analisis mas refinado es posible: una
cota de la forma
|p pn | A |p pn1 |2
es valida suficientemente cerca del cero p de f .
Supongamos que la sucesi
on {pn }
n=0 converge a p y sea En = p pn el error para cada n 0. Se dice

que la sucesion {pn }n=0 converge a P con orden de convergencia R, donde R > 0 es una constante, si
lim

|p pn+1 |
|En+1 |
= lim
=A
n |En |R
|p pn |R

donde A > 0 es una constante.


Teorema 4 Supongamos que f C 2 [a, b] y que existe p [a, b] tal que f (p) = 0. Si f 0 (p) 6= 0 entonces
existe un > 0 tal que la sucesi
on {pn }
on de Newton, para n 0,
n=0 definida por la iteraci
pn+1 = pn

f (pn )
,
f 0 (pn )

con p0 I donde I = [p , p + ], converge a p. Adem


as, el orden de convergencia es 2 y


|p pn+1 | f 00 (p)
lim
= 0 .
n |pn p|2
2f (p)

16

I.

DE ECUACIONES
SOLUCION

Prueba. Regresado a la justificaci


on a partir del metodo de punto fijo. Tenemos
g(x) = x

f (x)
f 0 (x)

y
g 0 (x) = 1

(f 0 (x))2 f f 00 (x)
.
(f 0 (x))2

Puesto que f (p) = 0 y f 0 (p) 6= 0, entonces g 0 (p) = 0. Por lo tanto existe > 0 tal que |g 0 (x)| < 1 para x I
donde I = [p , p + ]. Por lo tanto si p0 I entonces la secuencia de punto fijo {pn }
n=0 converge a p.
Ahora consideramos el orden de convergencia. Usando la aproximacion de Taylor, con n entre x y pn ,
f (x) = f (pn ) + (x pn )f 0 (pn ) + (x pn )2

f 00 ()
.
2

Con x = p y despejando p se tiene


f (pn ) (p pn )2 f 00 (n )
0

p = pn 0
f (p )
2
f (pn )
|
{z n }
pn+1

= pn+1

(p pn )2 f 00 (n )
0
2
f (pn )

y entonces
p pn+1 = (p pn )2

f 00 (n )
.
f 0 (pn )

y


|p pn+1 | f 00 (n )
= 0
.
|p pn |2
f (pn )
Ahora, cuando n entonces, como ya se concluyo, pn p y por lo tanto n p. De aqu que


|p pn+1 | f 00 (p)
= 0 .
lim
n |p pn |2
2f (p)

Error
Veamos que implicaci
on tiene la convergencia cuadratica sobre el error; en particular, cuantas iteraciones se
necesitan para lograr cierto error . Sea
A =

maxxI |f 00 (x)|
,
minxI |f 0 (x)|

y se escoge > suficientemente peque


no tal que A |p p0 | < 1. Como antes p0 I . Entonces
|p pn | A |p pn1 |2
y
A |p pn | (A |p pn1 |)2 .
Repitiendo este argumento iterativamente (induccion) se obtiene
n

A |p pn | (A |p pn1 |)2 (A |p pn2 |)4 (A |p pn3 |)8 (A |p p0 |)2 .


I.3. METODO
DE NEWTON

17

y despejando se obtiene que


|p pn |

1
n
(A |p p0 |)2
A

Sea 0 tal que |p p0 | 0 (puede ser 0 = b a, la longitud del intervalo inicial) y supongamos queremos
|p pn | . Entonces se debe tener
1
n
(A 0 )2 ,
A
y de aqu

n log2

log(A )
log(A 0 )


= log2

log(1/A )
log(1/A 0 )


.

Finalmente, con
NN R = log2

log(1/A )
log(1/A 0 )


,

se tiene que para n NN R , |En | .


Comparemos los valores obtenidos NP F y NN R . Tomamos 0 = 1, K = 1/2, A = 1/2. En la siguiente
tabla y figura k = 10k . Con estos valores se tiene
NF P

= dlog2 (1/k )e

= dk log2 10e

d3.32 ke

NN R = dlog2 log2 (2/k )e = dlog2 (k log2 10 + 1)e dlog2 k + 1.75e


En palabras, mientras que el n
umero de iteraciones es logartmico en el inverso del error para la convergencia
lineal del metodo de punto fijo, el n
umero de iteraciones es doble logartmico en el inverso del error para la
convergencia cuadr
atica del metodo de Newton. Alternativamente, estos n
umeros son lineales y logartmicos

en el nmero de cifras significativas deseadas.

k
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

PF
4
7
10
14
17
20
24
27
30
34
37
40
44
47
50

NR
3
3
4
4
5
5
5
5
5
6
6
6
6
6
6

El error especificado k es 10k . Las otras dos columnas, PF y NR, y curvas en la figura, muestran los
n
umeros de iteraciones NP F y NN R requeridos para
acotar el error con k .

Es claro el efecto significativo de la convergencia cuadratica en el n


umero de iteraciones requeridas.

Multiplicidad de la Raz
El analisis anterior no es v
alido si f 0 (p) = 0. Esto sucede cuando p es una raz m
ultiple. La raz x = p es de
orden M si
f (p) = 0, f 0 (p) = 0, f 00 (p) = 0, . . . f (M 1) (p) = 0, f (M ) (p) 6= 0.

18

I.

DE ECUACIONES
SOLUCION

si f es suficientemente diferenciable, esto es equivalente a la existencia de una funcion h continua y con


h(p) 6= 0, tal que
f (x) = (x p)M h(x).
Esto se deriva de la aproximaci
on de Taylor, donde (x) esta entre x y p,
f (x) = f (p) + f 0 (p)(x p) +

f 00 (p)
f (M 1) (p)
(x p)2 + +
(x p)M 1 +
2
(M 1)!
f (M ) (p)
f (M +1) ((x))
(x p)M +
(x p)M +1
M!
(M + 1)!

f (M ) (p)
f (M +1) ((x))
(x p)M +
(x p)M +1
M!
(M + 1)!
!
(M ) (p)
(M +1) ((x))
f
f
= (x p)M
+
(x p)
M!
(M + 1)!

= (x p)M h(x)
Ejemplo.

Verifiquemos que la funci


on f (x) = ex 1 + x tiene un cero en x = 0 de orden 2:
f (0) = 0;

f 0 (0) = ex + 1 |x=0 = 0;

f 0 (0) = ex |x=0 = 1.

Alternativamente, la expansi
on de Taylor de ex es
1
1
ex = 1 x + x2 x3 +
2
6
y
e

1
1
1 + x = x2 x3 + = x2
2
6


1 1
x + .
2 6

La multiplicidad de un cero tiene un efecto importante sobre la rapidez de la convergencia. M


as precisamente, la convergencia cuadr
atica se pierde como se puede ver en el siguiente ejemplo.
Ejemplo. Consideramos las funciones f1 (x) = ex + x y f2 (x) = (ex + x)2 , las cuales tienen el mismo cero
pero con multiplicidades 1 y 2 respectivamente. A continuacion esta el resultado de resolver estas ecuaciones
con la funcion newton en Matlab.
>> f1= @(x) exp(x)+x
>> df1 = @(x) exp(x)+1
>> f2 = @(x) (exp(x)+x)^2
>> df2 = @(x) 2*(exp(x)+x)*(exp(x)+1)
>> [p1, err1, k1, y1]=newton(f1,df1,0,1e-8,1e-20,100)
p1 = -0.567143290409784
err1 = 2.886579864025407e-15
k1 = 5
y1 = 1.110223024625157e-16
>> [p2, err2, k2, y2]=newton(f2,df2,0,1e-8,1e-20,100)
p2 = -0.567143285057670
err2 = 5.352114418322174e-09
k2 = 27
y2 = 7.035066142827077e-17
Y las sucesiones correspondientes son


I.3. METODO
DE NEWTON
0
-0.500000000000000
-0.566311003197218
-0.567143165034862
-0.567143290409781
-0.567143290409784

19

Las funciones f1 y f2 con el mismo cero


de multiplicidad uno y dos.

0
-0.250000000000000
-0.398639686946376
-0.480194115423827
-0.522966807453253
-0.544876120719794
-0.555964542595883
-0.561542572005131
-0.564340088372214
-0.565740977843932
-0.566441956135348
-0.566792578761598
-0.566967923456313
-0.567055604150499
-0.567099446584479
-0.567121368323212
-0.567132329323018
-0.567137809855531
-0.567140550129940
-0.567141920269182
-0.567142605339313
-0.567142947874506
-0.567143119142134
-0.567143204775956
-0.567143247592869
-0.567143269001326
-0.567143279705555
-0.567143285057670

Se observa que la convergencia en el caso de un cero es doble es muy lenta (lineal).


A continuaci
on analizamos la iteraci
on de Newton para el caso de una raz m
ultiple en p. Sea
f (x) = (x p)M h(x)
con h(p) 6= 0 y h(x) continua en x = p. Tenemos la iteracion de punto fijo (Newton)
pn+1 = g(pn )

donde

g(x) = x

f (x)
.
f 0 (x)

Con la expresion arriba para f (x) se tiene


f 0 (x) = M (x p)M 1 h(x) + (x p)M h0 (x) = (x p)M 1 (M h(x) + (x p)h0 (x))
y entonces
g(x) = x

(x p)M h(x)
(x p)h(x)
=x
.
M
1
0
(x p)
(M h(x) + (x p)h (x))
M h(x) + (x p)h0 (x)

As que realmente no hay divisi


on por cero. Ahora para analizar la convergencia de la iteracion de punto fijo
0
debemos calcular g (p):
h(x)
M h(x) + (x p)h0 (x)
h0 (x)(M h(x) + (x p)h0 (x)) h(x)(M h0 (x) + h0 (x) + (x p)h00 (x))
(x p)
(M h(x) + (x p)h0 (x))2

g 0 (x) = 1

20

I.

DE ECUACIONES
SOLUCION

y de aqu
g 0 (p) = 1

1
.
M

As que la covergencia es lineal con constante


K =1

1
M 1
=
.
M
M

De esto se observan dos posibles modificaciones del metodo de Newton para manejar races m
ultiples:
(i) En los calculos anteriores se observa que si g se cambia a
g(x) = x M

f (x)
f 0 (x)

entonces

1
=0
M
y se recupera la convergencia cuadr
atica. La iteracion de punto fijo con la nueva funcion g(x) se llama
la formula de iteraci
on acelerada de Newton.
g 0 (p) = 1 M

(ii) Se observa que la funci


on
u(x) =

f (x)
(x p)h(x)
=
0
f (x)
M h(x) + (x p)h0 (x)

tiene una raz simple en x = p. Entonces con


g(x) = x

u(x)
u0 (x)

la correspondiente iteraci
on de punto fijo converge a p cuadraticamente. Esto se conoce como el metodo
de Newton modificado.

Implementaci
on en Matlab
La siguiente es la implementaci
on en Matlab provista con el texto [MF]. Las variables y  son las tolerancias
en la aproximaci
on del cero y de la funcion en el cero. Usualmente  debe ser mas peque
na para que la
terminacion sea por la aproximaci
on del cero.
function [p0, err, k, y] = newton (f, df, p0, delta, epsilon, max1)
% Entrada - f es la funcion objetivo introducida como cadena de caracteres
%
- df es la derivada de f introducida como cadena de caracteres
%
- p0 es la aproximacion inicial a cero de f
%
- delta es la tolerancia para p0
%
- epsilon es la tolerancia para los valores de la funcion y
%
- max1 es el numero maximo de iteraciones
% Salida - p0 es la aproximacion de Newton hacia cero
%
- err es el error estimado para p0
%
- k es el numero de iteraciones
%
- y es el valor de la funcion f(p0)
for k = 1:max1
p1 = p0 - feval(f, p0) / feval(df, p0);
err = abs(p1 - p0);
relerr = 2 * err / (abs(p1) + delta);
p0 = p1;
y = feval(f, p0);
if (err < delta) | (relerr < delta) | (abs(y) < epsilon), break, end
end

f
df

Você também pode gostar