Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ecuaciones 13ii1
Ecuaciones 13ii1
Solución de Ecuaciones
En la solución 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 ó raı́ces de la ecuación. Pocos de estos problemas tienen una
solución simple dada por una fórmula como en el caso de las ecuaciones lineales y cuadráticas. Aún en el
caso de ecuaciones cúbicas, para las cuales existen fórmulas para las soluciones, resulta más fácil hacerlo
numéricamente porque las fórmulas son complicadas e involucran raı́ces cuadradas y cúbicas. Por lo tanto
es importante disponer de métodos efectivos para resolver ecuaciones. Vamos a discutir tres métodos: de
bisección, de iteración de punto fijo, y de Newton.
1. cn = (an + bn )/2
2. si
Al final cn es una aproximación a un cero de f en [a, b]. Note que en una iteración, 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ón para determinar el menor cero positivo de f (x) = tan x − x.
1
2 I. SOLUCIÓN DE ECUACIONES
c = 4.4931
err = 9.7656e-04
yc = -0.0069
Convergencia
Es claro que para cada n ≥ 1
1
bn − an = (bn−1 − an−1 )
2
y por lo tanto
b0 − a0 b−a
bn − an = n
= n .
2 2
Por lo tanto
lim (bn − an ) = 0
n→∞
y de aquı́ que limn→∞ an = limn→∞ bn . El algoritmo garatiza que hay una raı́z r de f tal que para cada
n ≥ 0, r ∈ [an , bn ]. Por lo tanto
1 b−a
|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
b−a
|En | ≤ .
2n+1
I.1. MÉTODO DE BISECCIÓN 3
Ejemplo. Para la función e intervalo inicial del problema anterior queremos determinar el número de
iteraciones necesarias para = 10−3 . Entonces, ∆0 = b − a = 0.5 y
0.5
NB = log2 = 8.
2 · 10−3
La discrepancia con el ejemplo, en el que se listan 10 iteraciones, se debe primero a que allı́ se lista como
primera la iteración 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 deberı́a ser.
Implementación en Matlab
La función Matlab bisect implementa el método de bisección. Aquı́ se muestra con el cambio para producir
la tabla del ejemplo en la sección.
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);
4 I. SOLUCIÓN DE ECUACIONES
x = g(x) donde g : R → R.
Si p es una solución de esta ecuación, es decir tal que p = g(p), entonces se dice que p es un punto fijo de g.
Dado un p0 ∈ R, una iteración de punto fijo es una iteración de la forma
Esta sucesión converge, pero no es siempre el caso para cualquier g(x) como lo muestra el siguiente ejemplo
que incluye la anterior función (g3 ) y otras dos funciones que tienen los mismos puntos fijos.
Es fácil 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 2.000000000000000 2.000000000000000 2.000000000000000
1 2.250000000000000 1.500000000000000 1.750000000000000
2 2.765625000000000 2.000000000000000 1.732142857142857
3 3.927795410156250 1.500000000000000 1.732050810014727
4 7.034689606167376 2.000000000000000 1.732050807568877
5 18.656404069947204 1.500000000000000 1.732050807568877
√
Mientras que la iteración 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. MÉTODO DEL PUNTO FIJO 5
g1 g2
g3
En g3 del ejemplo anterior se puede reempazar 3 con cualquier a > 0 y entonces la iteración de punto
fijo, si converge, nos da un método para calcular raı́ces cuadradas usando multiplicaciones y divisiones. La
función g1 es un caso particular de lo siguiente: p es una solución de f (x) = 0 si y sólo 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 elección diferente de c puede cambiar
la situación (ver ejemplo más tarde). Esto se puede incluso extender a
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 iteración de punto fijo de g converge, lo hace a
un punto fijo de g.
Dem. Se tiene
g(p) = g( lim pn ) = lim g(pn ) = lim pn+1 = p,
n→∞ n→∞ n→∞
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].
6 I. SOLUCIÓN DE ECUACIONES
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ás 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 único.
Prueba. Asumiendo la primera parte primero, si g(a) = a ó 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 además |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ún c ∈ (a, b)
g(p1 ) − g(p2 ) p1 − p2
g 0 (c) = = = 1.
p1 − p2 p1 − p2
lo cual es una contradicción. Entonces el punto fijo es único.
Note que para la existencia realmente una condición más débil 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 iteración de punto fijo de tal forma que la sucesión
permanezca en [a, b].
El siguiente teorema describe condiciones suficientes para la convergencia de la iteración de punto fijo.
|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ón de punto fijo de g presenta
divergencia local en [a, b]: si q está suficientemente cerca de p entonces |p − g(q)| > |p − q| (la distancia
a p aumenta con la iteración de punto fijo).
Prueba. Sea {pn }∞ n=0 la sucesión de punto fijo. Primero asumimos las condiciones en (a). Por el teorema
anterior, p es el único punto fijo de g en [a, b]. Para n ≥ 1, si se tiene que pn−1 ∈ [a, b], entonces por el
teorema del valor medio, existe c en el intervalo entre p y pn−1 tal que
|p − pn | = |g(p) − g(pn−1 )|
= |g 0 (c)(p − pn−1 )|
= |g 0 (c)| · |p − pn−1 |
≤ K|p − pn−1 |.
Como pn−1 ∈ [a, b] y pn = g(pn−1 ), entonces la condición (ii) implica que pn ∈ [a, b]. Ası́ que podemos aplicar
el argumento anterior iterativamente (inducción): primero obviamente
|p − p0 | ≤ K 0 |p − p0 | = |p − p0 |
I.2. MÉTODO DEL PUNTO FIJO 7
y entonces
|p − p1 | ≤ K|p − p0 |
|p − p2 | ≤ K|p − p1 | ≤ K(K|p − p0 |) = K 2 |p − p0 |
..
.
|p − pn−1 | ≤ K n−1 |p − p0 |
|p − pn | ≤ K|p − pn−1 | ≤ K(K n−1 |p − p0 |) = K n |p − p0 |.
Por lo tanto
lim |p − pn | = 0
n→∞
y
lim pn = p.
n→∞
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ótica, es decir que para algún n se tenga pn = p, como muestra la figura.
Por supuesto esto requiere una función y una elección de p0 muy especiales. Es cierto por otra parte que no
puede haber convergencia asintótica al punto fijo p (pero puede haber convergencia asintótica a otro punto
fijo).
4
5
p0 p
Ejemplo. Sea g(x) = 2−x . Queremos verificar que las condiciones para existencia y convergencia al punto
fijo se dan en el intervalo [0, 1]:
(ii) 2−x 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].
8 I. SOLUCIÓN DE ECUACIONES
(iii) g 0 (x) existe para todo x ∈ [0, 1] y está dada por g 0 (x) = −2−x ln 2.
(iv) Para acotar |g 0 (x)| en [0, 1] determinamos el máximo y el mı́nimo de g 0 (x) en [0, 1]. Como ya sabemos
que 2−x es monótona entonces g 0 (x) también lo es y por lo tanto el max y el min están en los extremos
del intervalo: g 0 (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 único punto fijo de g(x) en [0, 1] y que la iteración de punto fijo con p0 ∈ [0, 1]
converge a ese punto fijo. La iteración es, para n ≥ 1,
pn = 2−pn−1 .
Con p0 = 0.5, en Matlab obtenemos (con tolerancia .5 · 10−4 para que las cifras obtenidas con format short
sean significativas, y máximo número 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 función 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 condición (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ún K. Es
decir c cerca de −1/2 3. Escojamos c = −1/4 y entonces g 0 (x) = 1 − x/2. Sabemos que 3 ∈ [3/2, 2]. Ahora
veamos qué constante K en |g 0 (x)| < K podemos garantizar en este intervalo. g 0 (x) es monótona 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. Concluı́mos 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
√ la función original
g1 , por ejemplo con p0 = −1, la secuencia de punto fijo converge, pero al punto fijo − 3:
I.2. MÉTODO DEL PUNTO FIJO 9
n=0 -1.000000000000000
1 -1.500000000000000
2 -1.687500000000000
3 -1.725585937500000
4 -1.731174230575562
5 -1.731933176423340
6 -1.732035044524380
7 -1.732048695659237
8 -1.732050524625521
9 -1.732050769661635
n=0 -1.000000000000000
1 -2.000000000000000
2 -1.500000000000000
3 -1.875000000000000
4 -1.617187500000000
5 -1.809539794921875
6 -1.672322660218924
7 -1.773991120278074
8 -1.700468872865346
9 -1.754671679073376
10 -1.715235328402286
Error
El error absoluto En es la diferencia entre el puto fijo y la aproximación 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 |p−p0 |.
Ası́ que debemos encontrar una cota superior conocida ∆0 para |p − p0 |. Como p0 , p ∈ [a, b] entonces
|p − p0 | ≤ b − a,
|p − p0 | ≤ max{p0 − a, b − p0 }
10 I. SOLUCIÓN DE ECUACIONES
(donde max{x, y} denota el máximo 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 está p entonces debemos usa el máximo de estas
dos posibilidades). Aún 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|)
y por lo tanto
(1 − K)|p − p0 | ≤ |p1 − p0 |
y
1
|p − p0 | ≤ |p1 − p0 |.
1−K
Dependiendo de los valores de K y |p1 − p0 | esta última puede ser una mejor cota para |p − p0 |. En conclusión
|En | ≤ K n ∆0
donde
1
∆0 = min max{p0 − a, b − p0 }, |p1 − p0 | .
1−K
(Note por qué en este caso se usa min: ambas cotas son siempre válidas, entonces la mejor es la menor de
ellas.) Si se desea determinar una aproximación pn tal que |En | ≤ para un dado > 0 pequeño entonces el
número de iteraciones se debe tener que
K n ∆0 ≤
y por lo tanto
Kn ≤
∆0
Tomando logaritmos se obtiene
n log K ≤ log
∆0
Dividiendo por ln K se tiene que (note que K < 1 implica ln K < 0 y por lo tanto la desigualdad se invierte)
log(/∆0 ) log(∆0 /)
n≥ =
log K log(1/K)
(invirtiendo arriba y abajo para tener el cociente de dos números 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 notación 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úmero de iteraciones necesarias n
para que lograr |En | ≤ .
Por otra parte, en una implementación del método de punto fijo es deseable tener un criterio para
terminación que no requiera el conocimiento de K. Como tampoco se conoce p, entonces con frecuencia se
hace uso de la condición
|pn+1 − pn | ≤
aún cuando esto no necesarimente implica un cota para el error real |pn − p|. Si examina la función fixpt
(más adelante) notará que controla tanto éste como el error relativo
|pn+1 − pn |
≤ .
|pn+1 |
I.2. MÉTODO DEL PUNTO FIJO 11
Ejemplo. Continuando con g(x) = 2−x , queremos determinar el número de iteraciones necesarias para
garantizar error menor o igual a = 10−6 . 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
1−K
y entonces
∆0 = min(0.5, 0.6749) = 0.5
Reemplazando en la cota del error tenemos
0.5(0.693147)n ≤ 10−6 .
Despejando n se obtiene
log(2 · 10−6 )
n≥ = 35.8032
log 0.693147
Ası́ que son suficientes 36 iteraciones para garantizar error 10−6 .
Implementación Matlab
En la librerı́a de funciones provista con el texto [Mathews,Fink], la función que implementa el método de
punto fijo se llama fixpt y se muestra abajo. La descripción de todos los parámetros de entrada y salida de
la función se encuentran como comentarios después de la primera lı́nea de la función. Y se pueden ver en la
ventana de comandos con el comando “help fixpt”. Como se habı́a mencionado antes, como el punto fijo
es desconocido, se usa más bien el error |pk − pk−1 | para decidir si se detiene la iteración. Además también
se examina el error relativo
|pk − pk−1 |
|pk |
Para evitar división por cero, se divide por abs(P(k))+eps donde eps es un número muy pequeño predefinido
en Matlab. La iteración se interrumpe cuando se alcance la tolerancia especificada por el parámetro tol o
cuando se alcance el número de máximo 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ón, y entonces realmente el valor k regresado es el número de iteraciones
más 1.
12 I. SOLUCIÓN DE ECUACIONES
Problema. Emplear el método de punto fijo para determinar los ceros ó raı́ces de la ecuación f (x) = 0
donde
f (x) = 2(1 − x)ex − 1.
Solución. Primero analizamos las posibles posiciones de los ceros, si existen. Pusto que
se tiene al menos un cero en (−∞, 0) y al menos un cero en (0, +∞). Podemos analizar la derivada
Funciones g1 y g2
respectivamente. La lı́nea en cada caso es y = x.
que en cada gi sólo uno de los puntos fijos exhibe convergencia (g10 (c1 ) > 1, 0 < g10 (c2 ) < 1, 0 < g20 (c1 ) < 1, y
g20 (c2 ) > 1). Para verificar el comportamiento encontramos las derivadas
1 1
g10 (x) = e−x , g20 (x) = .
2 1−x
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 sólo |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
iteración comenzando con p0 = 0 producirá p1 < 0 y allı́ ya se puede garantizar.
I.2. MÉTODO DEL PUNTO FIJO 13
Las funciones también 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 función fixpt con p0=0, tol=10−6
(seleccionado arbitrariamente ya que no está especificado), y max1=20 (que resulta suficiente para la tolerancia
especificada):
>> [p1 k1 err1 P1] = fixpt(g1,0,1e-6,20) >> [p2 k2 err2 P2] = fixpt(g2,0,1e-6,20)
p1 = 7.6804e-01 p2 = -1.6783e+00
k1 = 12 k2 = 17
err1 = 4.8112e-07 err2 = 9.1531e-07
P1 = 0 P2 = 0
5.0000e-01 -6.9315e-01
6.9673e-01 -1.2197e+00
7.5090e-01 -1.4905e+00
7.6403e-01 -1.6056e+00
7.6711e-01 -1.6508e+00
7.6782e-01 -1.6680e+00
7.6799e-01 -1.6745e+00
7.6803e-01 -1.6769e+00
7.6804e-01 -1.6778e+00
7.6804e-01 -1.6781e+00
7.6804e-01 -1.6783e+00
-1.6783e+00
-1.6783e+00
-1.6783e+00
-1.6783e+00
-1.6783e+00
14 I. SOLUCIÓN DE ECUACIONES
f (pn )
pn+1 = pn − .
f 0 (pn )
Motivación geométrica.
La figura muestra el gráfico de la función f con la recta tangente en el punto
(pn , f (pn )), la cual se usa para aproximar el cero de f Ñ
f (pn ) − 0
= f 0 (pn ).
pn − pn+1
De donde f(pn )
f (pn )
pn+1 = pn − 0 .
f (pn ) p
p p
n+1 n
Motivación con aproximación de Taylor. La aproximación 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ún ξy entre x y y. Para |y − x| pequeño de tal forma que 21 f 00 (ξy )(y − x)2 ≈ 0 (aproximadamente 0)
se tiene la aproximación f˜(y) de f (y):
Entonces una aproximación p̃ del cero p de f se puede obtener haciendo y = p̃ y f˜(p̃) = 0. Es decir
y de aquı́
f (x)
p̃ = x − .
f 0 (x)
Lo que da origen a la iteratión
f (pn )
pn+1 = pn −
f 0 (pn )
como un método para obtener una aproximación para p.
I.3. MÉTODO DE NEWTON 15
Ejemplo. Queremos aproximar la raı́z de f (x) = 0 para f (x) = xe−x (la cual podemos ver está en x = 0).
Tenemos que f 0 (x) = e−x − xe−x = (1 − x)e−x , y entonces
f (x) xe−x x x(1 − x) − x −x2
g(x) = x − = x − = x − = = .
f 0 (x) (1 − x)e−x 1−x 1−x 1−x
La iteración de Newton es entonces
−p2n
pn+1 = .
1 − pn
Se obtiene la secuencia
p0 = 0.50000000
−0.500000002
p1 = f (p0 ) = = −0.50000000
1 − 0.50000000
−(−0.50000000)2
p2 = f (p1 ) = = −0.16666667
1 − (−0.50000000)
−(−0.16666667)2
p3 = f (p2 ) = = −0.02380952
1 − (−0.16666667)
−(−0.02380952)2
p4 = f (p3 ) = = −0.00055370
1 − (−0.02380952)
−(−0.00055370)2
p5 = f (p4 ) = = −0.00000030
1 − (−0.00055370)
−(−0.00000030)2
p6 = f (p5 ) = = −0.000000000
1 − (−0.00000030)
Orden de Convergencia
Puesto que el método de Newton es un método de punto fijo, el análisis de este da la cota
|p − pn | ≤ K|p − pn−1 |
donde K es una cota superior de |g 0 (x)| en el intervalo de interés. Como g 0 (p) = 0 entonces K → 0 a medida
que la sucesión se acerca a p. Resulta que suficientemente cerca de p un análisis más refinado es posible: una
cota de la forma
|p − pn | ≤ A |p − pn−1 |2
es válida suficientemente cerca del cero p de f .
Supongamos que la sucesión {pn }∞ n=0 converge a p y sea En = p − pn el error para cada n ≥ 0. Se dice
∞
que la sucesión {pn }n=0 converge a P con orden de convergencia R, donde R > 0 es una constante, si
|p − pn+1 | |En+1 |
lim = lim =A
n→∞ |p − pn |R n→∞ |En |R
f (pn )
pn+1 = pn − ,
f 0 (pn )
con p0 ∈ Iδ donde Iδ = [p − δ, p + δ], converge a p. Además, el orden de convergencia es 2 y
|p − pn+1 | f 00 (p)
lim = 0 .
n→∞ |pn − p|2 2f (p)
16 I. SOLUCIÓN DE ECUACIONES
f (x)
g(x) = x −
f 0 (x)
y
(f 0 (x))2 − f · f 00 (x)
g 0 (x) = 1 − .
(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.
f 00 (ξ)
f (x) = f (pn ) + (x − pn )f 0 (pn ) + (x − pn )2 .
2
Con x = p y despejando p se tiene
f (pn ) (p − pn )2 f 00 (ξn )
p = pn − 0 − · 0
f (p ) 2 f (pn )
| {z n }
pn+1
(p − pn )2 f 00 (ξn )
= pn+1 − · 0
2 f (pn )
y entonces
f 00 (ξn )
p − pn+1 = −(p − pn )2 · .
f 0 (pn )
y
|p − pn+1 | f 00 (ξn )
= 0 .
|p − pn |2 f (pn )
Ahora, cuando n → ∞ entonces, como ya se concluyó, pn → p y por lo tanto ξn → p. De aquı́ que
|p − pn+1 | f 00 (p)
lim = 0 .
n→∞ |p − pn |2 2f (p)
Error
Veamos que implicación tiene la convergencia cuadrática sobre el error; en particular, cuantas iteraciones se
necesitan para lograr cierto error . Sea
maxx∈Iδ |f 00 (x)|
Aδ = ,
minx∈Iδ |f 0 (x)|
y se escoge δ > suficientemente pequeño tal que Aδ |p − p0 | < 1. Como antes p0 ∈ Iδ . Entonces
|p − pn | ≤ Aδ |p − pn−1 |2
y
Aδ |p − pn | ≤ (Aδ |p − pn−1 |)2 .
Repitiendo este argumento iterativamente (inducción) se obtiene
n
Aδ |p − pn | ≤ (Aδ |p − pn−1 |)2 ≤ (Aδ |p − pn−2 |)4 ≤ (Aδ |p − pn−3 |)8 ≤ · · · ≤ (Aδ |p − p0 |)2 .
I.3. MÉTODO DE NEWTON 17
En palabras, mientras que el número de iteraciones es logarı́tmico en el inverso del error para la convergencia
lineal del método de punto fijo, el número de iteraciones es doble logarı́tmico en el inverso del error para la
convergencia cuadrática del método de Newton. Alternativamente, estos números son lineales y logarı́tmicos
en el n˘’mero de cifras significativas deseadas.
k PF NR
1 4 3
2 7 3
3 10 4
4 14 4
5 17 5
6 20 5
7 24 5
8 27 5
9 30 5
10 34 6
11 37 6
12 40 6
13 44 6
14 47 6 El error especificado k es 10−k . Las otras dos colum-
15 50 6 nas, PF y NR, y curvas en la figura, muestran los
números de iteraciones NP F y NN R requeridos para
acotar el error con k .
Multiplicidad de la Raı́z
El análisis anterior no es válido si f 0 (p) = 0. Esto sucede cuando p es una raı́z múltiple. La raı́z 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. SOLUCIÓN DE ECUACIONES
1 1
e−x = 1 − x + x2 − x3 + · · ·
2 6
y
−x 1 1 1 1
e − 1 + x = x2 − x3 + · · · = x2 − x + ··· .
2 6 2 6
La multiplicidad de un cero tiene un efecto importante sobre la rapidez de la convergencia. Más precisa-
mente, la convergencia cuadrática 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 continuación está el resultado de resolver estas ecuaciones
con la función newton en Matlab.
A continuación analizamos la iteración de Newton para el caso de una raı́z múltiple en p. Sea
f (x)
pn+1 = g(pn ) donde g(x) = x − .
f 0 (x)
y entonces
(x − p)M h(x) (x − p)h(x)
g(x) = x − −1 0
=x− .
(x − p)M (M h(x) + (x − p)h (x)) M h(x) + (x − p)h0 (x)
Ası́ que realmente no hay división por cero. Ahora para analizar la convergencia de la iteración de punto fijo
debemos calcular g 0 (p):
h(x)
g 0 (x) = 1 −
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
20 I. SOLUCIÓN DE ECUACIONES
y de aquı́
1
g 0 (p) = 1 − .
M
Ası́ que la covergencia es lineal con constante
1 M −1
K =1− = .
M M
De esto se observan dos posibles modificaciones del método de Newton para manejar raı́ces múltiples:
f (x)
g(x) = x − M ·
f 0 (x)
entonces
1
g 0 (p) = 1 − M · =0
M
y se recupera la convergencia cuadrática. La iteración de punto fijo con la nueva función g(x) se llama
la fórmula de iteración acelerada de Newton.
u(x)
g(x) = x −
u0 (x)
la correspondiente iteración de punto fijo converge a p cuadráticamente. Esto se conoce como el método
de Newton modificado.
Implementación en Matlab
La siguiente es la implementación en Matlab provista con el texto [MF]. Las variables δ y son las tolerancias
en la aproximación del cero y de la función en el cero. Usualmente debe ser más pequeña para que la
terminación sea por la aproximación 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 ’f’
% - df es la derivada de f introducida como cadena de caracteres ’df’
% - 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