Vous êtes sur la page 1sur 209

METODOS

NUMERICOS
Vctor Jimenez Lopez y Antonio Pallares Ruiz

Captulo

#


Nmeros y Errores
Interrogantes centrales del captulo

Conocer la presencia de errores en cualquier procedimiento de clculo numrico.


Conocer cmo se representan los nmeros en una mquina y los errores
de redondeo que conlleva esta representacin.
Aprender a decidir entre uno y otro mtodo numrico para resolver un
mismo problema atendiendo a la estabilidad del mtodo y al condicionamiento del problema.


"



Destrezas a adquirir en el captulo


!



Calcular utilizando aritmticas de punto jo y otante con un nmero


pequeo de dgitos midiendo los errores absolutos y relativos que produce
el redondeo.
Encontrar alternativas estables a clculos inestables.
Medir nmeros de condicin de procesos sencillos.







En esta unidad vamos a analizar los distintos tipos de errores que se producen en los clculos
numricos. Presentaremos los sistemas de numeracin y la aritmtica que utilizan las mquinas. Mediremos como se propagan los errores de redondeo. Y, por ltimo, estudiaremos los
conceptos de estabilidad de un algoritmo y condicionamiento de un problema.

UMU Mtodos Numricos, 2007-2008

Desarrollo de los contenidos fundamentales

Nmeros y su representacin.
Errores.

Nmeros de mquina. Redondeo.


Clculos estables e inestables.
Problemas mal condicionados.

Nmero de condicin.

Prcticas I y II.
Temporalizacin: 6HTe + 2HPb + 6HLab = 14HPres

1.1.

Introduccin

Ejemplo 1.1.1

Si hacemos

Probad a realizar la siguiente operacin


2
.

clculo simblico,

2
la misma denicin de raz cuadrada nos dice que ( ) = .

Pero si hacemos los clculos con las representaciones numricas de en una calculadora, la
realidad puede que sea distinta, y el resultado de la operacin no coincida exactamente con la
representacin de en nuestra calculadora.
Qu ocurre con el resultado en tu calculadora?

Ejemplo 1.1.2

Probad a realizar la siguientes operaciones en vuestras calculadoras utilizando


las representaciones numricas de las soluciones
(i) 2 3
(ii) Ans 0.6666666667
Qu ocurre con el resultado en tu calculadora?
Prueba ahora con
(i) 2 3
(ii) Ans 0.666666666666666
Qu ocurre ahora con el resultado en tu calculadora?

Ejemplo 1.1.3

Probad la siguientes operaciones en las calculadoras

(i) 1050 1040


(ii) 1050 1050 /3
(iii) 1050 (1050 /3)

Nmeros y Errores

(iv) (1019 + 1) 1019


Qu ocurre con los resultados en tu calculadora?
Cualquier procedimiento numrico debe considerar el control de errores para medir cmo
afectan al resultado
Es muy importante que en cada problema numrico hagamos un seguimiento de los errores
cometidos con el n de poder estimar el grado de aproximacin de la solucin que proporciona.

1.1.1.

Fuentes del Error

Hay diferentes fuentes/tipos de error que pueden afectar a la solucin numrica de un problema:
Errores en los datos de entrada:
(i) Errores en la medicin de los datos iniciales, que pueden ser aleatorios y entonces
hacen necesario acudir a tcnicas estadsticas o de control de calidad, y errores sistemticos de procedimiento que hay que descubrir y subsanar.
Errores de redondeo en los datos y en el clculo:
(i) Los producidos al introducir los datos en las mquinas de clculo. En ellas los nmeros
tienen una representacin nita. Estos errores son INEVITABLES.
(ii) Los producidos al hacer clculos en las mquinas. Otra vez chocamos con la nitud de
la representacin de los nmeros. Estos errores tambin son INEVITABLES, aunque
son PREVISIBLES y a veces, es posible esquivarlos sustituyendo los clculos por
otros equivalentes (ya iremos viendo cmo).
Errores de truncamiento en el mtodo:
Como la resolucin numrica de un problema consiste en obtener una aproximacin numrica de la solucin exacta. Siempre debemos asumir este error de aproximacin, que recibe
el nombre de error de truncamiento.
Errores de inestabilidad y control.
Se trata de analizar cmo afectan los errores en los datos de entrada o en los clculos a la
solucin nal. Si un mtodo permite que pequeos errores en los datos de entrada o en los
clculos

se traduzcan en errores grandes de la solucin se dice que el mtodo es inestable.

En esta unidad analizaremos algunos clculos que pueden ser causa de inestabilidad y
propondremos clculos alternativos.
En algunas ocasiones, la inestabilidad de un mtodo no proviene de los clculos sino que es
intrnseca al mtodo, es decir al modelo empleado para resolver un problema. En estos casos
se dice que el mtodo, o el problema, est mal condicionado. Para evitar esta situacin
es necesario analizar el problema real e intentar sustituir el modelo o el mtodo numrico
empleado.
Tambin en la unidad, veremos como cuanticar (medir con nmeros) el condicionamiento
de un problema para poder predecir mtodos mal condicionados y proponer su sustitucin
por otros.

UMU Mtodos Numricos, 2007-2008

1.1.2.

Ejemplos

Ejemplo 1.1.4 Utilizando la calculadora1 vamos a evaluar las expresiones de la igualdad

18817 10864 3 =

18817 + 10864 3

Si se quiere comprobar la igualdad anterior bastar recordar la identidad

a2 b2 = (a b)(a + b)

y poner a = 18817 y b = 10864 3 y constatar que a2 b2 = 1.

Si hacemos los clculos, nuestra calculadora proporciona los siguientes valores:

18817 10864 3 = 2.65718 1005


1
= 2.657171708 1005
18817 + 10864 3
Hemos obtenidos dos valores distintos, lo que nos plantea algunas cuestiones:
Cal es la causa por la que la calculadora no respeta la igualdad?
Las calculadoras estn trucadas para fastidiarnos
Se han producido ERRORES
Si repitiramos las operaciones con la calculadora, obtendriamos los mismos valores?

No
Si
Si los resultados son aproximados Cal de los dos valores se aproxima ms al verdadero valor de la expresin?
Al nalizar la unidad debis tener la respuesta.
Ejemplo 1.1.5

Consideremos el sistema de ecuaciones


(
x +
y=2
x +1.00001y = 2.00001.

Su solucin, es x = 1 e y = 1.
Consideremos ahora el sistema perturbando un poco los trminos independientes.
(
x +
y=2
x +1.00001y = 2.
Este sistema perturbado tiene como solucin x = 2 e y = 0.

Un error pequeo en los datos iniciales (en el trmino independiente) ha producido


grande en la solucin.
En este caso, no se ha producido ningn error de clculo.
Este es un ejemplo de un problema (sistema lineal) mal condicionado. No podemos
un error

evitar que pequeos errores en los datos iniciales se conviertan en errores grandes en
las soluciones.

Cmo afrontamos situaciones en las que aparezcan sistemas mal condicionados?


1

Casio fx-991ES

meros y Errores

1.2.

Nmeros y su representacin

A la vista del ejemplo 1.1.4 , podemos hacer una primera armacin: La aritmtica con la
que calcula un ordenador o una calculadora no es la que hemos aprendido en el colegio y en
los cursos de lgebra (grupos, anillos, cuerpos, lgebras, etc...). Con nuestra calculadora hemos
constatado que (a b) puede ser distinto de (a2 b2 )/(a + b).

La mayora de los procesadores que realizan los clculos en un ordenador trabajan con nme-

ros que se escriben en binario (con 0 y 1) en registros de 8, 16, 32 o 64 dgitos (bits).

Nosotros

mismos, al representar los nmeros en el sistema decimal (con las cifras 0, 1,. . . ,9) utilizamos

secuencias nitas de dgitos. Es decir, a la hora de trabajar con representaciones de nmeros en una mquina slo lo podemos hacer con una cantidad nita de ellos. Vamos a poder
trabajar con exactitud

cuando trabajemos con nmeros enteros que puedan ser representados


en la mquina, y tambin (cuando el procesador est especialmente programado2 ) con algunos
nmeros racionales. Pero, a la hora de representar nmeros reales cmo nmeros de mquina
siempre tendremos que utilizar aproximaciones

1.2.1.

Nmeros enteros

1.2.1.1. Representacin de enteros en un sistema de base

Para representar enteros, usualmente utilizamos el sistema de numeracin decimal (en base
10) que es un sistema posicional en el que cada nmero viene expresado

por una sucesin nita

de dgitos (cifras del 0 al 9) cuyos valores dependen de la posicin que ocupan


Pon ejemplo

12879 = 9 100 + 7 101 + 8 102 + 2 103 + 1 104 ,

Proposicin 1.2.1 Elegida una base natural b N, b 2, cualquier nmero entero positivo p
admite una nica representacin en la forma

p = an bn + an1 bn1 + + a1 b1 + a0
con

aj N, 0 aj (b 1)

an > 0.

Se utiliza la representacin:

p = an an1 . . . a1 a0 (b)

representacin digital de p en base b.


Los coecientes aj se denominan dgitos o cifras.

y se llama

Cul es el algoritmo3 para encontrar la representacin en base b de un nmero entero? Ese


algoritmo probar la proposicin anterior.

Ejercicio 1.2.1

Describe los algoritmos para pasar de la representacin en base 2 (binario) de


un nmero entero a sus representaciones en las bases 4 y 8 (octal).
Describe tambin los reciprocos que pasen de las representaciones en las bases 4 y 8 a binario.
2
3
el

Este es el caso para algunos nmeros en la calculadora Casio f x-991ES. Revisad el manual.
algoritmo: Sucesin nita de instrucciones claras y preci sas, especicando cuales son los

ujo (la sucesin) de instrucciones, las condiciones de parada y los datos de salida.

datos de entrada,

UMU Mtodos Numricos, 2007-2008

1.2.1.2.

Tipos de enteros de mquina

Como hemos dicho la mayora de los procesadores que realizan los clculos en un ordenador
trabajan con nmeros que se escriben en

binario (base 2) utilizando registros de 8, 16, 32 o 64

dgitos (bits). En ellos se utiliza el primer dgito para sealar el signo del nmero.
(byte) 8 bits
(short) 16 bits
(int) 32 bits
(large) 64 bits

Cules son el mayor y el menor entero (int) de una mquina?


Qu errores puede producir la aritmtica de la mquina al trabajar con enteros (int)?
Resp: Los clculos con nmeros enteros se pueden hacer de forma exacta. El nico error que
podemos tener al operar con ellos es que el resultado no quepa en los registros utilizados para
guardarlo. En estos casos obtendremos Errores por Desbordamiento (Overflow).
Por cierto, cmo se suman o se multiplican dos nmeros en base 2?, por supuesto que con
las tablas de sumar o multiplicar correspondientes, descrbelas!

Ejercicio 1.2.2

Si tu calculadora tiene la funcin de representar nmeros en distintas bases,

encuentra los mayores enteros que se pueden escribir en hexadecimal

u octal (base

1.2.2.

(base 16), binario (base 2)

8).

Nmeros reales

Tambin decamos en la introduccin que cuando el procesador est especialmente programado, podemos representar algunos nmeros racionales como pares de nmeros enteros. Pero
desde el punto de vista numrico, esto no es muy operativo:

nmeros racionales acotados pueden


venir representados mediante fracciones de nmeros enteros muy grandes.

As, que para representar nmeros racionales o reales en una mquina siempre tendre-

mos utilizar aproximaciones, escritas en base 2 y almacenadas en unos registros de tamao


prejado.

Aqu el hecho de jar el tamao de los registros que han de ocupar los nmeros en la mquina,

nos anuncia la aparicin de errores de aproximacin o redondeo, errores que no podremos evitar.
Por esta razn debemos aprender a controlarlos en el sentido de prever su efecto en un proceso
numrico conociendo como se transmiten en los distintos pasos del mismo.

1.2.2.1. Sistemas de representacin de punto jo


Proposicin 1.2.2 Elegida

una base natural

admite una representacin en la forma

b N, b 2,

cualquier nmero real positivo

1
1
1
x = an bn + + a1 b1 + a0 + a1 + a2 2 + + an n + . . .
b
b
b

meros y Errores

con

aj N, 0 aj (b 1)

an > 0.

Se utiliza la representacin:

x = an an1 . . . a1 a0 , a1 a2 . . . an . . .(b)

y se llama

representacin digital de punto jo de

en base

b.

Cul es el algoritmo para encontrar una representacin de punto jo en base b de un nmero
real?
Es nica esta representacin?
Resp: Si excepto para nmeros racionales de la forma x = bkn .

Ejemplo 1.2.3
(i)

17
3

= 5.6666 . . .(10)

(ii) 1(10) = .99999 . . .(10) = .111111 . . .(2)


(iii) .1(10) = .0001 1001 1001 . . .(2)
En base 10 el nmero .1 es decimal exacto (tiene una cantidad nita de dgitos no nulos)
mientras que en base 2 ese mismo nmero tiene una representacin digital  peridica
mixta (con innitos dgitos no nulos que se van repitiendo de forma peridica).
(iv)

= 3.141592....

A la hora de trabajar en una mquina, tenemos que jar el tamao de los registros a usar
para guardar los nmeros. Esto se traduce inmediatamente en una limitacin en el nmero de
dgitos que podemos utilizar

Ejemplo 1.2.4

Supongamos que trabajamos con una mquina que utiliza nmeros escritos en

base 10, con un mximo de 6 dgitos adems de la coma.

Consideremos los nmeros: x = 0.00001, y = 0.1, z = 10000.


Vamos a simular como podramos operar con ellos utilizando la mquina.

Para multiplicar

x y:

Suponemos que dentro de la mquina se puede realizar el producto exacto


p = x y = 0.000001.

Como este nmero tiene 7 dgitos, para guardarlo en un registro de la mquina, vamos a
aproximarlo por el nmero ms prximo de entre los de la mquina, es decir, de entre los
que se pueden escribir con 6 dgitos. Esta aproximacin es

As el resultado debe ser x y = 0.

z , tendremos (x y) z = 0.
Si hacemos lo mismo con y z , obtenemos y z = y z = 1000.
tendremos x (y z) = 0.01.
Si multiplicamos

xy

0.00000.

por

Y si multiplicamos por

0 = (x y) z 6= x (y z) = 0.01

A la hora de trabajar con nmeros en mquinas, este sistema de representacin puede no ser
conveniente al operar con nmeros con muchos ceros.
Para evitar estos problemas que representan los ceros a la izquierda o a la derecha de la coma,
se utiliza el sistema de representacin de coma

otante.

10

UMU Mtodos Numricos, 2007-2008

1.2.2.2.

Representacin de nmeros reales en coma otante

Proposicin 1.2.5 Elegida una base natural b N, b 2, cualquier nmero real x 6= 0 admite
una representacin en la forma

x = b
con

=+

si

es positivo, y

si

n=1

an

es negativo,

Se utiliza la representacin:

1
bn

aj N, 0 aj (b 1)

EN
y se llama representacin digital de punto otante de x en base

a1 > 0.

x = .a1 a2 . . . an . . .

b.

N se le llama exponente de la representacin de x, y al nmero m =


.a1 a2 . . . an . . .(b) se le llama mantisa.
Al nmero

1
n=1 an bn

Cul es el algoritmo para encontrar una representacin de punto otante en base b de un nmero

real?
Es nica esta representacin?
Resp: Si, excepto para nmeros racionales de la forma x =
que para cada n existe un k > n tal que ak 6= b 1

k
bn . O si se aade la condicin de

Ejemplo 1.2.6
(i)
(ii)

17
3

= 5.6666 . . .(10) = 101 .56666 . . .(10) = .56666 . . . E 1(10)

1(10) = 20 .111111 . . .(2) = .111111 . . . E0(2)

(iii)

.1(10) = .0001 1001 1001 . . .(2) = 23 .1 1001 1001 . . .(2) = .1 1001 1001 . . . E 3(2)

(iv)

= 3.141592... = .314151592...(10)

Observad que a la hora de guardar las representaciones de nmeros en coma otante no


es necesario dejar sitio para la coma (el punto) porque siempre est en la misma posicin. Si
trabajamos con representaciones binarias tampoco es necesario dejar ningn sitio para a1 que
forzosamente slo puede tomar el valor 1 (es distinto de cero y menor que 2).
Volvamos al problema planteado en el ejemplo 1.2.4 y veamos que operando con los nmeros
en coma otante no se producen los mismos errores en el clculo.

Ejemplo 1.2.7

Supongamos que trabajamos con una mquina que utiliza nmeros escritos en

coma otante de base 10, con un mximo de 6 dgitos en la mantisa.

Consideremos los nmeros: x = 0.00001 = .1E 4, y = .1E0, z = 10000 = .1E5.


Vamos a simular como podramos operar con ellos utilizando la mquina.

Para multiplicar x y : Ahora dentro de la mquina se puede realizar el producto exacto


p = x y = .1E 5.
Si multiplicamos por z , tendremos (x y) z = .1E 1.
Si hacemos lo mismo con y z , obtenemos y z = y z = .1E4. Y si multiplicamos por x
volvemos a obtener x (y z) = .1E 1.

Cmo se multiplican dos nmeros en coma otante?

(no es necesario guardar el punto)

Cmo se suman?
Cmo se representan los nmeros en tu calculadora?

meros y Errores

11

Tipos de reales en los ordenadores

1.2.2.3.

En la actualidad la mayora de los procesadores que realizan los clculos en un ordenador


trabajan con nmeros reales que se representan en coma otante en

binario (base 2) utilizando

registros de 32 o 64 dgitos (bits). En ellos se utiliza el primer dgito para sealar el signo del
nmero.
(float) 32 bits
(double) 64 bits
El  Institute

for Electrical and Electronic Engineers estableci en 1985

un protocolo de

representacin de nmeros reales en los ordenadores que vienen observando desde entonces los
fabricantes de los procesadores donde los ordenadores realizan las operaciones.
En el libro de

Burden y Faires [2]

conocido como el IEEE754-1985.

encontraris una breve descripcin de este protocolo,

No pienso copiarla aqu!

Cul es el menor real (double) positivo en un ordenador?

Cul es el mayor real (double) positivo en un ordenador?

Ejercicio 1.2.3

1.3.

Haz los ejercicios 1, 2 y 4 de la Hoja de problemas 1.

Errores

Denicin 1.3.1

Si el nmero real

es una aproximacin del nmero

p, para medir el tamao

del error cometido en esta aproximacin podemos utilizar:

Error exacto en la aproximacin e = p p .


Error absoluto: ea = |e| = |p p |.

|
ea
Errores relativos (si p 6= 0): er = |p|
= |pp
|p|

eer =

ea
|p |

|pp |
|p | .

A la hora de expresar el error relativo hemos utilizado dos cuanticaciones porque no siempre
estaremos en disposicin de conocer el valor exacto de un nmero aunque si que podamos conocer
aproximaciones y estimaciones del error absoluto cometido.
Utilizando la desigualdad triangular, |p| |p | |p p |. Trasladando est acotacin a la
denicin de er se obtiene la acotacin:

er
De la misma forma, como |p | |p| |p p |,

As,

para valores pe ueos de

prximos (

er
eer

1).

er

eer

eer
.
1 eer

tambin se tiene la acotacin

er
.
1 er

(respectivamente de

eer )

los valores de

er

eer

En el caso de tener errores relativos pe ueos podemos utilizar indistintamente

estn muy

er

No siempre (por no decir casi nunca) tendremos conocimiento exacto del valor

que lo tendremos de
estimaciones de

ea

p .

Por eso, ser ms fcil obtener estimaciones del valor de

que intentar trabajar con

er .

eer

eer .
real p
o

y s

a partir de

12

UMU Mtodos Numricos, 2007-2008

Utilizando el error absoluto, podemos escribir:

p = p + e = p ea
Si tenemos una acotacin de

y tambin

ea , ea < ,

p ea p p + ea .

entonces podemos asegurar que

p < p < p + .
Utilizando el error relativo, si tenemos una acotacin de eer , eer < , entonces podemos
asegurar que ea = |p |eer < |p |, y

p |p | < p < p + |p |.

En general, podemos escribir:

Ejercicio 1.3.1
(i)
(ii)

p = p + e = p (1 eer )

y tambin

p = p(1 er ).

Calcula el error relativo que se comete cuando el nmero 1.503 aparece redondeado a 1.5.
Calcula los errores absoluto y relativo cuando el nmero .abcE7 aparece escrito como

a.bcE7
(iii)

(iv)

1.4.

que en un clculo aparece el nmero 0.0001 cuando deba aparecer el 0. Qu frmula


utilizaras para calcular el error relativo? Utilizando esa frmula qu valor obtienes?
upn

Determina el mayor intervalo en el que debe estar p para aproximar a p =


error relativo de a lo sumo 106 .

2 con un

Nmeros de mquina. Redondeo

Denicin 1.4.1 (Nmeros de mquina) Vamos


mantisa y

dgitos en el exponente en base

a llamar mquina de

dgitos en la

al conjunto de nmeros que se pueden representar

en coma otante utilizando esta base y los referidos dgitos para la mantisa y el exponente.
A estos nmeros los llamaremos nmeros de mquina de
en el exponente en base

dgitos en la mantisa y

dgitos

b.

(Salvo que expresemos lo contrario, no nos vamos a preocupar mucho por el exponente, que
es entero y slo puede producir errores de desbordamiento)

1.4.0.4. Redondeo
Por redondeo vamos a entender el proceso de introducir un nmero
en el que se procurar utilizar el nmero de mquina

que estn ms prximos si es que hay varios).

en una mquina ,

que est ms prximo a p (o uno de los

Existen distintos tipos de redondeo, nosotros nos vamos a jar en el siguiente:

meros y Errores

13

Denicin 1.4.2 (Redondeo)

Sean

descrito en coma otante y base

por:

x = bN

b 2

X
j=1

aj

un nmero natural,

x y x+
a x.

+
primeros dgitos y x

son los dos de la mquina de base

x R \ {0}

1
= .a1 a2 . . . EN(b) ,
bj

ak {0, 1, ..., (b 1)}.


Pt
1

N
Sean x = b
j=1 aj bj = .a1 a2 . . . at EN(b)
 truncar la mantisa a los

t N t > 0,

el nmero de mquina que resulta al

bN

P

t
1
j=1 aj bj

1
bt

. Los nmeros

dgitos en la mantisa, que estn ms prximos

Vamos a denir el nmero redondeado de x con t dgitos en la mantisa como el nmero real
f lt (x) =

Cuando el nmero de dgitos

(
x .

x+

si
si

|x x | <

|x x |

|x x+ |
2
|x x+ |
2

= 0.5bN t
= 0.5bN t

este jado en el entorno de trabajo podemos escribir solamente

f l(x).
Observad que si b es par (por ejemplo si b = 2 o b = 10), entonces |x x | <
slo si at1 < 2b .
Podis leer sobre otros tipos de redondeo en Kincaid-Cheney [3]:

|x x+ |
2

si, y

(i) Redondeo por paridad (Roud to even), redondeo equidistribuido


(ii) Redondeo por truncamiento.

Proposicin 1.4.3 (Errores de redondeo)

x R \ {0}.
(i)
(ii)

Entonces

f lt (x) = bN

Pt

0 1
j=1 aj bj

b2

Sean

= .a01 a02 . . . a0t EN(b) ,

un nmero natural,

con

El error absoluto en el redondeo satisface la acotacin

t N t > 0,

N N 0 N + 1.

|x f lt (x)| 0.5bN t
(iii) Los errores relativoa en el redondeo satisfacen la acotacin

|x f lt (x)|
0.5bt+1
|x|
El nmero 0.5bt+1

|x f lt (x)|
0.5bt+1
|f lt (x)|

se denomina la precisin relativa en la aritmtica de

dgitos en coma

otante.
Demostracin:

bN bt
|x x+ |
=
= 0.5bN t
2
2
|x x+ |
|x f lt (x)| = |x x+ | si |x x |
y en este caso
2
|x x+ |
(1)
= 0.5bN t .
|x x+ | = |(x x ) + (x x+ )| = |x x+ | |x x |
2

|x f lt (x)| = |x x | < 0.5bN t

(1)

x x+

x x

si

|x x | <

tienen distinto signo tanto si

es positivo como si es negativo.

14

UMU Mtodos Numricos, 2007-2008

Ejercicio 1.4.1
(i)

Mide los errores relativos del redondeo del nmero

en una mquina de cuatro dgitos de

mantisa y base 10
(ii) En una mquina de nmeros escritos en coma otante con

13

dgitos en la mantisa (en

base 10), cul es el mximo error relativo posible?

Denicin 1.4.4 (Precisin de k dgitos)


nmero

p 6= 0

con una precisin de, al menos,

el error relativo

Cuando

Se dice que el nmero

es una aproximacin del

cifras signicativas en la base

b,

siempre que

|p p |
.5 bm+1 .
|p|

es el mayor entero para el que se cumple la desigualdad anterior, se dice que

aproxima a

con

Ejemplo 1.4.5

cifras signicativas.

Sea
e = .27182818284590452353602874713527...E1

y app1 (e) = .2718287E1 una aproximacin de e.

.5171540 . . . E 5
|e app1 (e)|
=
1.90250E 6 = .19025E 5,
|e|
.271828182E1
.5E(7 + 1) < .190250E 5 < .5E(6 + 1)

En este caso, app1 (e) aproxima a e con 6 cifras signicativas y en las mantisas de e y app(e)
coinciden las 6 primeras cifras.

No siempre sucede esto. Por ejemplo, sea x = .1E0 y app(x) = .9999E0, en este caso
|x app(x)|
= .1E 3.
|x|

Con la denicin anterior app(x) es una aproximacin de x con 4 cifras signicativas, aunque
no coinciden ninguna de las cifras de la mantisa.

A, trabaja en base 2 con mantisa de 22 bits y otra, B, trabaja


en base 16 con 6 dgitos de precision (24 bits). Cul de las dos es ms precisa?
Ejercicio 1.4.2

1.4.0.5.

Una calculadora,

Distribucin de Nmeros de Mquina

Cmo estn distribuidos los nmeros de mquina?

Resp: Hay muchos cerca del cero, muy pocos en el , y sucientes alrededor de los nmeros
razonables (.1, 1, 10, ...).

Denicin 1.4.6 (psilon de la Mquina)


en mantisa y base
que

f l(1 + e) > 1.

b),

Si

es una mquina ideal de nmeros (t dgitos

se denomina  psilon de la Mquina al menor nmero positivo

O en otros trminos, al menor nmero positivo tal que


+1
de mquina siguiente al 1, 1 bt

f l(1 + e)

eM

tal

es el nmero

meros y Errores

15

En doble precisin (IEEE-754) el psilon de la m uina es del orden de

1
252

prcticas lo precisaremos con exactitud.

1016 .

En

q
que cabe esperar en la
As, a la hora de preguntar si dos nmeros de mquina estn prximos debemos de
tener en cuenta no pedir que el error relativo sea menor que el psilon de la mquina, porque en
ese caso estaremos pidiendo que sean idnticos.
El psilon de la m uina nos indica la mxima precisin relativa

mquina.

1.5.

Aritmetica de la mquina. Propagacin de errores

Cmo suma, resta, multiplica, divide, etc... una mquina?

Denotemos por  cualquiera de las operaciones +, , , /. Si x e y son dos nmeros de


mquina con t dgitos en la mantisa, en general xy no tiene porque ser un nmero de mquina
con t dgitos en la mantisa:
Por ejemplo, supongamos que trabajamos en una mquina de 6 dgitos en la mantisa y que

x = .700001E1 e y = .600002E0 son dos nmeros de la mquina. Su suma, x + y = .7600012E1,


es un nmero de 8 dgitos en la mantisa que debe ser redondeado por un nmero de la mquina
si se quiere guardar en la misma,

x y := f l(x + y) = .760001E1.

As, para realizar operaciones aritmticas en una mquina ideal, pensaremos siempre que

estas se realizan en dos etapas


(i) Primero se calcula

xy

con la mayor precisin posible;

(ii) despus se redondea el resultado a un nmero de la m uina.

Cmo se multiplican dos nmeros de mquina? Cmo afectan los errores de redondeo en

los factores en el producto?

Cmo se suman dos nmeros de mquina del mismo signo? Cmo afectan los errores de

redondeo en los sumandos a la suma?

Ahora que sabemos como se deben realizar las operaciones dentro de nuestra calculadora, es

buen momento para volver sobre el ejemplo 1.1.4 :

Ejemplo 1.5.1

Utilizamos la calculadora

para evaluar las expresiones de la igualdad

18817 10864 3 =

1
.
18817 + 10864 3

Hicimos los clculos,obteniendo dos valores distintos y nos preguntbamos cual de los dos era el
ms preciso.

Vamos a ir detallando las operaciones

(i)
(ii)
(iii)

f l( 3) = 1.732050808,

3 = 1.732050808(1 ered )

ered .5E 10

10864 f l( 3) = 18816.9997,

Casio fx-991ES: presenta 10 dgitos en pantalla, presupondr emos que es una mquina de nmeros de 10

dgitos en la mantisa.

16

UMU Mtodos Numricos, 2007-2008

(iv)
(v)

(vi)
(vii)
(viii)

10864

3 = 10864 (f l( 3) ea ) = (18816.9997 ered ) (10864 ered )

e1 = (10864
ered ) ered .54E 6, e1 es una estimacin
10864 3.

x1 = 18817 (10864 f l( 3)) = 2.65718E 5

x = 18817 (10864 3) = 18817 18816.9997 e1

1|
e1 = |x x1 | .54E 6 y |xx
|x1 | .20E 1. As,
al valor de x con una precisin de dos dgitos.

del error en la operacin

slo podemos armar que

x1

aproxima

De forma anloga podemos escribir

(ix) d = 18817 (10864 f l( 3)) = 37633.99997, y 18817 + (10864 3) = 37633.99997 e1 .

(x) x2 = 1 (18817 (10864 f l( 3))) = 2.657171708E 5

(xi) 1/(18817 + (10864 f l( 3))) = 2.657171708E 5(1 ered2 )


(xii) ered2 .5E(10)
(xiii)

x = 1/(18817 + (10864

(xiv)

|xx2|
|x2 |

1
18817 (10864 f l( 3))

3)) =
18817 (10864 f l( 3)) 18817 + (10864 3)
37633.99997
= (2.657171708E 5)(1 ered2 )
37633.99997 e1
(.54E 6)
)
(2.657171708E 5) (1 +
37633.99997 (.54E 6)
2.657171708E 5 (1 .1435E 10)

.1435E 10. Ahora podemos asegurar que x2 aproxima a x

con los 10 dgitos de

precisin.

Cuando se restan dos nmeros de mquina prximos, cal es la precisin en la diferencia?

Proposicin 1.5.2

M una mquina de nmeros de base b y k dgitos en la mantisa. Sean


M en cuyas representaciones coinciden el exponente y los p primeros
dgitos de las mantisas. Entonces el nmero x y a lo ms tiene en su mantisa, k p dgitos
signicativos. Se pierden p dgitos de precisin.
x>y>0

Sea

dos nmeros de

Ejercicio 1.5.1

Consideremos los nmeros p = 0.54619 y q = 0.54601. Redondeando los nme-

ros en una mquina de cuatro dgitos de precisin (base 10), mide el error relativo cometido al
aproximar

pq

por

f l(p) f l(q).

cantas cifras signicativas tiene

Analiza el resultado! Podemos mejorarlo?

Ejercicio 1.5.2
las races

x1

x2

f l(p) f l(q).

Utilizando aritmtica de cuatro dgitos (base 10), encuentra aproximaciones a


de la ecuacin de segundo grado

x2 200x + 1 == 0.

Comprueba la bondad de las aproximaciones reconstruyendo el polinomio de segundo grado

(x x1 )(x x2 ).

Analiza el resultado! Podemos mejorarlo?

meros y Errores

17

1.6.

Clculos estables e inestables

Denicin 1.6.1 Diremos

que un proceso numrico, o una operacin, es

inestable

cuando

pequeos errores en los datos de entrada, o errores de redondeo en alguna de las etapas el proceso,
producen errores grandes en los datos de salida

Diremos que un proceso numrico, es estable cuando no es inestable.

Un mismo algoritmo puede ser estable para algunos datos iniciales e inestable para otros.

Entonces se dice que el algoritmo es condicionalmente estable


Ejercicio 1.6.1

Evala la expresin

4 dgitos de precisin en base 10.

1.208
x

z = 1.

en

x = 1.209

y en

x = 3.1,

trabajando con

Analiza los algoritmos:

x (y = 1.208/x) (z = 1 y),
x (u = x 1.208) (z = u/x).

Despus de ver cmo se realizan las operaciones aritmticas en una mquina de nmeros,
podemos quedarnos con el siguiente resumen:

El producto

de dos nmeros de mquina es un clculo estable, slo se pueden

producir errores de desbordamiento ( overow ).

La

divisin

de dos nmeros de m uina es un clculo estable, tambin slo se

pueden producir errores de desbordamiento ( overow ).

La suma de dos nmeros de mquina es estable cuando los dos nmeros tienen el
mismo signo, y puede ser inestable cuando los dos nmeros tienen signo distinto.

La

resta

de dos nmeros de mquina es inestable cuando los dos nmeros estn

muy prximos, y es estable cuando los dos nmeros tienen distinto signo (en este caso
es una suma de nmeros del mismo signo).

Hay que prestar atencin a las operaciones con nmeros grandes o excesivamente
pequeos para evitar errores de desbordamiento ( overow ).

Ejercicio 1.6.2

Cmo se puede realizar el clculo

En relacin con el ltimo punto,

ex
1

ex
para valores grandes de

x (x > 250)?

Comprubalo con la calculadora!

1.6.1.

Propagacin de errores

Cmo afecta el nmero de operaciones al resultado nal?

Si las operaciones son estables, lo menos que podemos esperar es que si en cada operacin
efectuamos un redondeo
del orden de

ner ,

er 0.5bt+1 , despus de n operaciones, tengamos un error acumulado

proporcional al nmero de operaciones.

18

UMU Mtodos Numricos, 2007-2008

Proposicin 1.6.2

Sean

xi 0,

nmeros de mquina (base

t-dgitos

en la mantisa). Sean

Sn = x0 + x1 + + xn = Sn1 + xn ,

xn (S0 = x0 ).
Sn = Sn1

Entonces:
donde

eM = .5bt+1

|Sn Sn |
(1 + eM )n 1 neM ,
|Sn |
es la precisin de la mquina.

(ver prueba en el libro de Kincaid-Cheney [3])

Ejercicio 1.6.3

Sea

tal que

neM <

1
3 . Utilizando el binomio de

Newton comrueba que

1 + (0.5)neM (1 + eM )n 1 + (1.5)neM .

Ejercicio 1.6.4

Sean xi > 0, nmeros de mquina (base b y t

-dgitos en la mantisa). Sean

Pn = x0 x1 xn = Pn1 xn ,

Pn = Pn1
xn (P0 = x0 ).
Entonces:

donde

eM = .5bt+1

Ejercicio 1.6.5

|Pn Pn |
(1 + eM )n 1 neM ,
|Pn |
es la precisin de la mquina.

Para evaluar un polinomio

p(x) = an xn + an1 xn1 + ... + a1 x + a0

disponemos

de los dos algoritmos siguientes


(i) p=a0 ; z=1;
para (k=1,

hasta n, )

z=z*x; p=p+ak *x;


(ii) (Horner)

p=an ;
para (k=(n-1),
p=p*x
Si

+ak ;

hasta

0,

es una cota del error relativo al hacer las operaciones aritmticas y no consideramos los

errores de redondeo al introducir el valor de los parmetros,

menos errores?

Ejercicio 1.6.6

Haz los ejercicios

Cul de los dos algorimos acumula

7 y 10 de la hoja de problemas 1.

A la hora de escribir un algoritmo o un proceso numrico, debemos intentar minimizar


el nmero de operaciones para evitar acumulacin de errores de redondeo.

meros y Errores

19

1.6.2.

Propagacin de Errores en Procesos Iterativos

Un algoritmo o un mtodo iterativo, es un procedimiento por el que se construye una sucesin

xn

por etapas. Cada

xn

depender

de unos primeros datos iniciales a los que se van agregando

en cada etapa los trminos de la sucesin que ya se han calculado. En general,

xn = f (x0 , x1 , ..., xn1 ) :

Normalmente, en los procesos iterativos esperamos que xn sea una sucesin convergente hacia
la solucin de un problema

x.

En principio, desconocemos el valor exacto de

y, ante la presencia de errores inevitables

(como los de redondeo), deberemos parar la iteracin cuando creamos que


aproximacin de

xn

es una buena

x.

En general, la condicin de parada viene dada en trminos de los errores absolutos o relativos
pidiendo que :

n = |xn xn1 | < prec


donde

prec > 0

o que

es una precisin dada.

Normalmente,




xn1
n

= 1
< prec,
|xn |
xn

este tipo de condicin de parada se complementa con un control sobre la

ecuacin o sistema de ecuaciones que modelizan el problema que se est intentando resolver. Por

F (x) == 0, podemos agregar a la condicin de parada que |F (xn )| < prec.


Recordemos que si x = 0 slo podemos usar errores absolutos, Y que si xn es convergente
evaluacin de n es inestable porque xn y xn1 pueden estar muy prximos.

la

Denicin 1.6.3

Al

ejemplo si

Supongamos que

xn

est denida por un mtodo iterativo y que

implementar el mtodo en una mquina, vamos construyendo una sucesin

x
fn

xn x.

que va acumulando

los errores de redondeo y de propagacin segn las operaciones que intervienen.

Denotamos en = |xn xfn | si x = 0, y en =

y relativo en cada etapa.

|xn f
xn |
|xn |



= 1

xn
si
x
f
n

(i) Se dice que la propagacin de errores en la iteracin es

x 6= 0,

lineal,

a los errores absoluto

cuando existe

C >0

tal

que

en Cne0 , n.
(ii) Se dice que la propagacin de errores en la iteracin es de tipo exponencial cuando existen

C>1

M >0

tal que

en M C n e0 , n.
(iii) A veces encontraremos ejemplos en los que

en Kn!e0 , n. (K > 0constante)

En estos casos, si recordamos la frmula de Stirling (n! 2n


errores es de tipo exponencial con cualquier constante C > 1.


n n
), la propagacin de
e

Admitiremos que un proceso iterativo con propagacin de error lineal va a ser estable
si no requiere  demasiadas iteraciones para pararse.
Debemos de establecer nmeros mximos de iteraciones para evitar problemas de
acumulacin de errores que desvirten la solucin aproximada propuesta.

Los procesos iterativos con propagacin de errores exponencial van a ser muy inestables.

Debemos intentar evitarlos.

20

UMU Mtodos Numricos, 2007-2008

Observad los dos ejemplos siguientes que muestran dos procesos iterativos algo perversos. En
la practica 2 os propongo un ejemplo ms para

Ejemplo 1.6.4

que lo analicis.

Sea yn = n!(ex (1+x+ x2! + + xn! )). Sabemos, por la expresin de Lagrange
2

del resto de la frmula de Taylor, que

yn = n!

etx
etx
xn+1 =
xn+1 .
(n + 1)!
(n + 1)

De donde podemos concluir que para x 1 yn 0.

Tambin sabemos que se cumple la frmula de recurrencia lineal:

yn = nyn1 xn .
i evaluamos los 21 primeros trminos de esta iteracin comenzando en

en una mquina que trabaja con reales de tipo

y0 =1.71828
y1 =0.718282
y2 =0.436564
y3 =0.309691
y4 =0.238764
y5 =0.193819
y6 =0.162916
y7 =0.140415
y8 =0.123323
y9 =0.109911
y10 =0.0991122

double

x0 = 1

obtenemos:

y0 = e 1,

y11 =0.090234
y12 =0.0828081
y13 =0.0765057
y14 =0.0710802
y15 =0.066203
y16 =0.0592478
y17 =0.00721318
y18 =0.870163
y19 =17.5331
y20 =351.662
y21 =7385.9

Qu ocurri?

i denotamos

yf
]
n =ny
n1 1,

podemos estimar que

yf
yn1 yn1 ) = ... = n!(ye0 y0 ).
n yn = n(]

Aqu podemos observar como el pequeo error de redondeo al escribir el nmero

e en la mquina

y evaluar ye0 , se ha propagado de forma exponencial (n! >


si n 3).
R
R
e
Ejemplo 1.6.5 Sea xn = 01 xn ex dx. Sabemos que 0 xn e 01 xn dx = n+1
0.
Integrando por partes se tiene que xn viene dada por la frmula de recurrencia lineal:

M (3/e)n

xn = e nxn1 ,
comenzando con x0 = e 1.
Razonando como en el ejemplo precedente, si x
fn = e n x]
n1 podemos estimar que

|f
xn xn | = n|]
xn1 xn1 | = ... = n!|ye0 y0 )|,

y predecir que la sucesin x


fn es muy inestable y no converge a

0, en absoluto.

En efecto, si trabajis en doble precisin con nmeros de tipo

con 25 iteraciones

x2 5 8.2E8

0.
x
fn en

double

muy lejos del lmite

Evala los 25 primeros trminos de la sucesin

el ordenador!

podris observar que

meros y Errores

21

1.7.

Condicionamiento de un problema

Los

trminos  condicionamiento y/o  problema bien o mal condicionado se utilizan de

manera informal para indicar la sensibilidad de la solucin del problema con respecto a pequeos
errores relativos en los datos de entrada.
Una posibilidad para hacer este tipo de apreciaciones es intentar  cuanticar a priori esta
sensibilidad, utilizando para ello un  modelo apropiado del problema.

A continuacin vamos a ver distintos  modelizaciones

de problemas en los que se pueden

hacer esas cuanticaciones.

1.7.1.

Funciones de una variable.

Este es el caso en el que el algoritmo consiste simplemente en dado un nmero


de entrada, evaluar
Si adems

f (x)

como dato de salida, donde

f :RR

como dato

es una funcin real.

es derivable, con derivada continua, podemos cuanticar el condicionamiento del

algoritmo como sigue:


Sea

el dato de entrada, y

En la salida obtenemos

x
e=x+h

f (x + h)

una perturbacin de

como dato de entrada.

f (x).

en lugar de

El error en salida se puede estimar en trminos de la derivada:

|f (x + h) f (x)| = |f 0 (x + th)||h| |f 0 (x)||h|


donde

0<t<1

y para

pequeo,

|f 0 (x + th)| |f 0 (x)|.

El error relativo en el dato de salida es

|f (x + h) f (x)|
|f 0 (x)||h|

|f (x)|
|f (x)|
Si medimos la razn entre los errores relativos en los datos de salida y los datos de entrada,
tenemos
|f (x+h)f (x)|
er (f (x))
|f 0 (x)||x|
|f (x)|

=
.
|h|
er (x)
|f (x)|
|x|

Esta ltima estimacin slo depende de x y de f y se puede preveer antes de ejecutar el


algoritmo de evaluacin.

Denicin 1.7.1
con

f (x) 6= 0.

Sea

f : [a, b] R una funcin derivable con derivada continua. y sea x [a, b]


en x se dene por la frmula

El  nmero de condicin de f

nc(f, x) :=
y mide la razn entre los errores relativos en

|f 0 (x)||x|
|f (x)|

f (x)

y en

ante variaciones de este ltimo valor.

Cuando el nmero de condicin es pequeo, o menor que una cota razonable, pequeos errores
en

se propagan a pequeos errores en

f (x)

y el algoritmo es estable. Pero si los nmeros de

condicin son muy grandes o tienden a innito cerca de un valor de


cerca de este valor.

el algoritmo ser inestable

22

UMU Mtodos Numricos, 2007-2008

Ejemplo 1.7.2
(i)

f (x) = xex (f 0 (x) = ex 2x2 ex )


2

x2

nc(xe

|f 0 (x)||x|
|(ex 2x2 ex )x|
2
= |1 2x2 ex | 1
, x) =
=
2|
x
|f (x)|
|xe

La evaluacin de f (x) = xex2

es estable en todo

x:

 los errores relativos en

f (x)

son

del mismo tamao .


(ii)

f (x) = arc sen(x) (f 0 (x) =

1
)
1x2
|x|

|x|
|f 0 (x)||x|
1x2

=
=
nc(arc sen(x), x) =
|f (x)|
arc sen(x)
arc sen(x) 1 x2

lm nc(arc sen(x), x) = +

x1

La evaluacin de arc sen(x) cerca de x = 1 (arc sen(1) =


errores en
(iii)

producen errores grandes en

2 ) es muy inestable:  pequeos

arc sen(x) .

f (x) = log(x) (f 0 (x) = x1 )


nc(log(x), x) =

est lejos de

la evaluacin de

1
|f 0 (x)||x|
=
|f (x)|
| log(x)|

log(x)

es estable, pero si

esta cerca de

x=1

esta

evaluacin es inestable.

1.7.2.

Funciones de varias variables

Este es el caso en el que el algoritmo consiste simplemente en dado un vector


dato de entrada, evaluar

f (~x)

f :

como dato de salida, donde

Rn

varias variables.
Si adems

~x Rn

como

es una funcin real de

5 continuas podemos cuanticar el

es  diferenciable con derivadas parciales

condicionamiento del algoritmo como sigue:


(Para simplicar las expresiones vamos a utilizar el caso

n = 3)

Sea ~x = (x0, y0, z0) el dato de entrada, y ~xe = ~x + ~h = (x0 + hx, y0, z0) una perturbacin
en la primera coordena de ~x como dato de entrada.

En la salida obtenemos f (~x + ~h) en lugar de f (~x).


5

Sea

f (x, y, x) una funcin de tres variables reales con valores en R, si


fy0 ,z0 (x) es derivable en x0 , se dene la derivada parcial

para cada par

(y0 , z0 )

jo, la funcin

de una variable

f (x0 , y0 , z0 )
= fy0 0 ,z0 (x0 )
x
De forma anloga se denen las derivadas parciales de

en

~x0

con respecto a cada una de las coordenadas,

derivando la funcin de una variable que resulta al jar el re sto de las coordenadas.
Si existen todas las derivadas parciales en
de que

f (~x) f (~x0 )

~x0

y son continuas, entonces

se aproxima  bien por una aplicacin lineal.

es  diferenciable en

~x0 

en el sentido

Nmeros y Errores

23

El error en salida se puede estimar en trminos de las derivadas parciales:

|f (~x + ~h) f (~x)| = |f (x0 + hx , y0 , z0 ) f (x0 , y0 , z0 )|


f (x0 + t1 hx , y0 , z0 )
||hx |
=|
x
donde

0 < t1 < 1

y para

hx

pequeo,

,y0 ,z0 )
1 hx ,y0 ,z0 )
| f (x0 +tx
| | f (x0x
|.

El error relativo en el dato de salida es

,y0 ,z0 )
| f (x0x
||hx |
|f (~x + ~h) f (~x)|

|f (~x)|
|f (~x)|
Si medimos la razn entre los errores relativos en los datos de salida y los datos de entrada,
tenemos

,y0 ,z0 )
| f (x0x
||x0 |
er (f (~x)), x0

.
er (x0 )
|f (~x)|

Como antes, esta ltima estimacin slo depende de

~x

y de

y se puede preveer antes de

ejecutar el algoritmo de evaluacin.

De la misma forma se pueden obtener estimaciones de las razones entre los errores relativos
cuando se van perturbando de forma independiente cada una de las coordenadas.

Denicin 1.7.3

f : A Rn R una funcin diferenciable


sea ~
x A con f (~x) 6= 0. Los nmeros

Sea

continuas continua. y

nc(f, ~x, i) :=

se llaman nmeros de condicin f en ~x


~x

| fx(~xi ) ||xi |
|f (~x)|

con derivadas parciales

, i = 1, 2, ..., n

y mide la razn entre los errores relativos en

f (~x)

y en

ante variaciones en cada una de las coordenadas de este vector.

Cuando todos los nmeros de condicin son pequeo, o menores que una cota razonable,
pequeos errores en x se propagan a pequeos errores en f (x) y el algoritmo es estable. Pero si
alguno de los nmeros de condicin es muy grande o tiende a innito cerca de un valor de ~x el
algoritmo ser inestable cerca de este valor.
Ejemplo 1.7.4 Vamos
y = 1.5 0.2
f (x,y)
x

y analizaremos la estabilidad de

= 2xy

f (x,y)
y

x [2 0.3, 2 + 0.3]
f (x,y)
| y | 2.32 = 5.29
i

f (x, y) = x2 y
(2, 1.5).

a estimar el error mximo de

en

cuando

x = 2 0.3

= x2 ,
e

(x,y)
| 2 2.3 1.7 = 7.82
y [1.5 0.2, 1.5 + 0.2], | fx

|f (x, y) f (2, 1.5)| |f (x, y) f (2, y)| + |f (2, y) f (2, 1.5)|


f (2, 1.5 + t(y 1.5))
f (2 + t(x 2), y)
(x 2)| + |
(y 1.5)|
=|
x
y
7.28 |x 2| + 5.29 |y 1.5|
7.18 0.3 + 5.29 0.2 = 3.212

24

UMU Mtodos Numricos, 2007-2008

El error mximo al evaluar

f (2, 1.5) = 6 est acotado por 3.212 ( el error relativo est acotado

por 0.536).

Los nmeros de condicin con respecto a cada variable son:


nc(f, (x, y), 1) :=

(x,y)
| fx
||x|
2x2 y
= 2 = 2,
|f (x, y)|
x y

nc(f, (x, y), 2) :=

(x,y)
||y|
| f y

|f (x, y)|

Podemos armar que el error en la coordenada

al evaluar

x2 y
= 1.
x2 y

inuye ms que el error en la coordenada

f (x, y).

Observad tambin que los nmeros de condicin en este caso son independientes del vector

(x, y).

1.7.3.

Aplicaciones lineales

Cuando estudiemos los sistemas de ecuaciones lineales A~x = ~b (A matriz nn, consideraremos
distintas normas para las matrices A y veremos que el nmero nc(A) = kAk kA1 k servir como

nmero de condicin del sistema en el sentido de que mide la razn entre el error cometido en

kAk
Matrices como las de Hilbert

los datos iniciales del sistema

y el error que se propaga a la solucin del sistema.

Hn =

1
i+j1

1in
1jn

que aparecen de forma natural en ajustes funciones por polinomios de grado n, estn muy mal
condicionadas nc(Hn ) e3.5n .

1.7.4.

Races de Polinomios

Vamos a analizar en el siguiente modelo (muy simple) cmo cuanticar el condicionamiento


en el problema de aproximacin de races de polinomios

Denotemos por p(x) a un polinomio y supongamos que algR(p) es un algoritmo que propor-

r = algR(p) de p(x) (p(r) = 0). upongamos adems que r es una raz simple de
p, e.d. p0 (r) 6= 0.
Si se perturba el polinomio p de entrada, tomando una aproximacin pe(x) = p(x) + q(x),
donde q(x) es otro polinomio, y se aplica el algoritmo encontraremos una raz r + h = algR(e
p).
2
3
Si suponemos que h es pequeo, h , h , ... seran mucho mas pequeos que h y podramos
despreciarlas frente a h. As, utilizando el desarrollo de Taylor de p, como p(r) = 0, podemos
ciona una raz

modelizar

p(r + h) = p(r) + p0 (r)h +

Tambin si h es pequeo q(r + h) q(r)

p00 (r) 2
p(n) (r) 2
h + ... +
h p0 (r)h.
2
n!

. As

0 = pe(r + h) = p(r + h) + q(r + h) hp0 (r) + q(r).

Nmeros y Errores

25

Despejando queda h pq(r)


(r) .
0

Con este modelo, el nmero

pq(r)
0 (r)

puede servir para prever el error absoluto en el clculo

de

la raz en trminos de la perturbacin en el polinomio original.

Ejemplo 1.7.5 (Polinomios de Wilkinson)

Cuando tengamos construidos e implementados

algunos mtodos de aproximacin de races de polinomios, constataremos los hechos que ahora
vamos a pronosticar en base al modelo propuesto ms

Los

arriba.

polinomios de Wilkinson son los polinomios mnicos con races simples en los enteros

{1, 2, ..., n}:

pn (x) = (x 1)(x 2)...(x n).

Consideremos la perturbacin de

Si algR20

p20

dada por

20
pf
20 (x) = p20 (x) + x .

es un algoritmo que nos proporciona la raz

La estimacin propuesta para el tamao de h20


h20

es

r = 20 de p2 0, y r + h20 = algR20 (pf


20 ).

2020
2020
=

109 .
p020 (20)
19!

Observad que una pequea perturbacin () en el coeciente de x20 se multiplica por 109 al
intentar aproximar la raz

r = 20. Los polinomios de

Wilkinson son un ejemplo de polinomios

 mal condicionados para la busqueda de races grandes.


Como ejercicio, podis jugar con este polinomio y el modelo propuesto para estimar los errores
que resultan al utilizar algoritmos

r = 15

1.8.

r = 10.

algR15

algR10

que proporcionen respectivamente las races

Actividades complementarias del captulo

Los documentos se pueden descargar de la Zona Compartida de SUMA.


Hoja de problemas no 1 (25/09/2007).
o

Practica n 1 . Fenmenos extraos .

Prctica n 2 

Mquinas ideales .

Bibliografa
[1]

Delshams A. Aubanell, A. Benseny, tiles


ut. de Barcelona, Barcelona, 1993.

A.

bsicos de clculo numrico, Ed.

Labor - Univ.

[2] R.L. Burden and J.D. Faires,


2002.
[3]

D. Kincaid and W.
Reading, USA, 1994.

Cheney,

a
Anlisis numrico, 7 edicin,

Anlisis numrico,

Thomson-Learning, Mexico,

Ed. Addison-Wesley

Iberoamericana,

Captulo

'
'

Algoritmos e Iteraciones
Interrogantes centrales del captulo

$
$

Conocer la estructura general de los algoritmos y establecer criterios para


compararlos.
Aproximar soluciones de ecuaciones no lineales f (x) == 0. con mtodos
elementales:
Mtodo de la biseccin.
Mtodos de Regula-Falsi y Newton.
Conocer y analizar las iteraciones de punto fijo.
Analizar la convergencia y el error en los mtodos iterativos.
Acelerar la convergencia de una sucesin.
&
&

'
'

%
%

Destrezas a adquirir en el captulo

$
$

Ser capaz de describir algoritmos sencillos y, en particular, los algoritmos


correspondientes a los distintos mtodos del captulo.
Saber implementar en el ordenador los programas de los mtodos del captulo.
Conocer el enunciado y la demostracin del teorema del punto fijo de Banach as como condiciones suficientes que garanticen sus hiptesis.
Aplicar los programas construidos de forma efectiva en la localizacin y
aproximacin nmerica de races de algunas ecuaciones no lineales.
Analizar la convergencia de las aproximaciones proporcionadas por los distintos mtodos y la conveniencia de utilizar uno u otro mtodo numrico.
&
&

%
%

En la unidad anterior hemos trabajado con algunos algoritmos de una forma ms o menos
informal. Para escribir los algoritmos de forma que se puedan implementar fcilmente en un
ordenador debemos ser ms precisos, considerar siempre que tienen que construirse sobre una
estructura clara y ordenada.

28

UMU Mtodos Numricos, 2007-2008

En este captulo describiremos la forma general de los algoritmos, cmo se evalan y cmo
medir su complejidad para poder compararlos. Prestaremos especial atencin a los algoritmos
iterativos y al orden de su convergencia. Trabajaremos con algunos algoritmos elementales de
resolucin de ecuaciones, estudiaremos el teorema del punto fijo de Banach y el algoritmo de
Aitken para acelerar la convergencia de sucesiones.

Desarrollo de los contenidos fundamentales


Algoritmos: forma, evaluacin y complejidad.
Algoritmos iterativos. Mtodos iterativos elementales de resolucin de ecuaciones no lineales:
Mtodo de la biseccin.
Mtodo de regula-falsi.
Mtodo de Newton.
Iteracin de punto fijo. Atractores y repulsores
Orden de convergencia de una sucesin y constante asinttica del error.
Aceleracin de la convergencia: algoritmos de Aitken y Steffensen.
Temporalizacin: 8HTe + 2HPb + 2HLab = 12 H

2.1.

Introduccin

Algunos autores aseguran que la palabra algoritmo proviene del nombre del matemtico
persa Abu Jafar Mohamemed ibn Musa al-Khowarizmi, que trabajo en Bagdad alrededor del ao
840. Aunque si acudimos al diccionario de la Real Academia Espaola encontramos la siguiente
definicin que se corresponde con nuestras intenciones:
algoritmo: (Quiz del lat. tardo algobarismus, y este abrev. del r. cls. lisabu lubar,
clculo mediante cifras arbigas).
(i) m. Conjunto ordenado y finito de operaciones que permite hallar la solucin de un
problema.
(ii) m. Mtodo y notacin en las distintas formas del clculo.
Comencemos este captulo con una visita a un prototipo tpico de un algoritmo:
El algoritmo de Euclides para encontrar el mximo comn divisor de dos nmeros naturales
que fue descrito alrededor del ao 350 a.C. y se puede visitar en el libro de los Elementos de
Euclides.

Algoritmos-Iteraciones

Algoritmo 2.1

29

El algoritmo de Euclides

Datos de entrada: m, n N
Datos de salida: El mximo comn divisor de m y n: M CD(m, n) N
Variables:
m ; n ; // para operar sin cambiar los nmeros.
auxiliar; // para hacer cambios.
Fujo del programa:
if(m >= n){ m = m; n = n; }
else{ m = n; n = m;}
while(n 6= 0){
auxiliar = n ;
n = Resto(m n );
m = auxiliar
}
Parada: M CD(m, n) = m

Cmo encuentra este algoritmo el mximo comn divisor?


Simplemente, basta con observar que los divisores comunes de m y n (m n)tambin son
los divisores comunes de n y Resto(m n), si adems este resto es cero n es el mximo comn
divisor .
El algoritmo de Euclides trabaja reduciendo el tamao de m y n hasta que el resto sea cero,
momento en el que habremos encontrado el mximo comn divisor.
Ejemplo 2.1.1 Utilizando el algoritmo de Euclides calcula el M CD(18981, 34560).
El algoritmo de Euclides muestra varias propiedades tpicas de los algoritmos:
Los pasos del algoritmo estn definidos con claridad.
Un cierto nmero de etapas se repiten en un bucle (while) y est claro que slo se realizan
una cantidad finita de repeticiones.
Una vez que se introducen los nmeros m y n en el algoritmo los clculos se realizan de
forma automtica hasta producir el MCD como respuesta.
El algoritmo puede implementarse fcilmente en una mquina programable (ordenador).

2.2.

Algoritmos: forma, evaluacin y complejidad

El anlisis del algoritmo de Euclides nos ha dada una idea de lo que es un algoritmo, que
estructura tiene y cmo podemos juzgar razonable su implementacin.
Definicin 2.2.1 (Algoritmo) Un algoritmo es un procedimento de clculo que consiste en
un conjunto de instrucciones precisas. Estas instrucciones especifican una sucesin finita de
operaciones que una vez ejecutadas proporcionan la solucin a un problema de entre los de
una clase especial de problemas.

30

UMU Mtodos Numricos, 2007-2008

Mirando el algoritmo de Euclides observamos que tiene una estructura (forma) que vamos a
requerir a los dems algoritmos:
Estructura de un lgoritmo.(forma)
Los Datos de Entrada son los valores de inicio que deben de aportarse al algoritmo
antes de su ejecucin. Estos datos iniciales deben de pertenecer a unos tipos de datos
predeterminados.
Los Datos de Salida son los datos esperados como respuesta de la ejecucin del algoritmo.
En algunos casos el algoritmo puede acabar enviando un mensaje de ERROR sealando
la imposibilidad de alcanzar la solucin esperada.
El Flujo del algoritmo consiste en una sucesin de instrucciones aritmticas que deben
ser realizadas. Estas instrucciones deben de cumplir las siguientes propiedades:
(i) Cada etapa debe estar definida de forma precisa y sin ambigedades. Todas las posibles situaciones deben de ser tenidas en cuenta.
(ii) El flujo debe terminar despus de un nmero finito de etapas.
(iii) El flujo debera de ser eficaz para un conjunto amplio de problemas. Debe de tenerse
en cuenta su aplicabilidad en situaciones generales.
(iv) El flujo debe de poder ser implementado en una mquina de clculo.
Adems de las operaciones aritmticas habituales (+, , , , ...) y las funciones elementales

(exp, sen, cos,


, ...) en los algoritmos tambin se utilizan operaciones lgicas (comparaciones,
asignaciones y bucles). En funcin de las posibilidades del lenguaje de programacin a utilizar
en el proceso de implantacin del algoritmo se puede simplificar, ms o menos, la descripcin
del flujo.
Cuando un algoritmo est traducido en un lenguaje de programacin concreto para ser implementado en la mquina, nos referiremos a l llamndolo programa.
El proceso de evaluar un algoritmo consiste en seguir su desarrollo (etapa por etapa) para
asegurarnos que cumple con las propiedades que acabamos de describir. En muchos casos, basta
con realizar los distintos clculos de forma ordenada con un ejemplo concreto para detectar
posibles fallos.
Frecuentemente, existen distintos algoritmos que pueden usarse para resolver un mismo problema. Es necesario disponer de criterios para comparar distintos algoritmos. Estos criterios
deben de ser independientes de implementaciones particulares en computadoras concretas y de
ejemplos de aplicaciones con unas condiciones iniciales concretas. Tambin deben poder aportar
afirmaciones objetivas y concretas.
Existe una teora en Matemticas y Ciencias de la Computacin, la teora de la Complejidad
(Complexity theory), cuyo objetivo es responder a cuestiones como:
Cmo se puede cuantificar la calidad y la ejecucin de un algoritmo?
Qu criterios pueden construirse para comparar algoritmos?
Se pueden mejorar los algoritmos existentes?
En que sentido se puede afirmar que un algoritmo es el mejor posible?
Son tiles los mejores algoritmos?

Algoritmos-Iteraciones

31

En esta teora se abordan dos tipos distintos de criterios para medir la complejidad de un algoritmo: criterios relativos a la complejidad esttica como pueden ser la longitud del algoritmo,
el nmero de ordenes que contiene o la estabilidad y el condicionamiento de las operaciones previstas; y criterios de complejidad dinmica relativos al tiempo de ejecucin y a requerimiento
de memoria en el sentido de la adecuacin de la implantacin del algoritmo a las condiciones
reales de espacio y tiempo.
Nosotros nos fijaremos en las siguientes tres cualidades de los algoritmos para compararlos:
(i) el nmero de operaciones previstas en el algoritmo,
(ii) la previsibilidad de la convergencia de los distintos mtodos iterativos, y
(iii) la velocidad de esa convergencia (orden de convergencia).
En los apartados siguientes vamos a analizar esa dos ltimas cualidades de los procesos
iterativos. Ahora, para finalizar esta seccin vamos a recordar el algoritmo de Horner para evaluar
polinomios comparndolo con las evaluaciones usuales. Utilizamos el nmero de operaciones
como criterio de comparacin.
El algoritmo de Horner
En el ejercicio 1.6.5 proponamos contar el nmero de operaciones necesarias para evaluar
un polinomio. En este apartado vamos a hacer los clculos vamos a escribir correctamente el
algoritmo de Horner.
Un polinomio complejo es una combinacin lineal de potencias naturales de z:
p(z) = a0 + a1 z + + an z n

(2.1)

donde los coeficientes ak C son nmeros complejos y an 6= 0. En estas condiciones se dice que
el polinomio p(z) tiene grado n N.
Para calcular el valor del polinomio p en un punto z0 , si usamos la relacin z0k+1 = z0 .z0k y
la frmula (2.1), necesitaremos hacer 2n 1 multiplicaciones (1 en a1 z0 y 2 multiplicaciones en
cada sumando ak z0k para k 2) y n sumas. En total 3n 1 operaciones.
Sin embargo, existe un procedimiento ms econmico, y por lo tanto ms estable para el
clculo, conocido como Esquema de Horner que alguno conoceris como la Regla de Rufini:
p(z0 ) = (. . . ((an z0 + an1 ) z0 + an2 ) z0 + + a1 ) z0 + a0 .
Los multiplicadores de z0 en esta frmula se van obteniendo de forma recursiva siguiendo el
esquema
an
z0
bn

an1
z0 b n
bn1

an2
z0 bn1
bn2

......
......
......

a1
z0 b 2
b1

a0
z0 b 1
b0

con bn = an y, bk = bk+1 z0 + ak para k = (n 1), . . . , 1, 0.


Con estas operaciones, slo se necesitan 2(n 1) operaciones para calcular b0 = p(z0 ).
Adms, los coeficientes bk tambin determinan el cociente q(z) de la divisin de p(z) entre
(z z0 ),
p(z) = q(z)(z z0 ) + p(z0 ).
(2.2)

32

UMU Mtodos Numricos, 2007-2008

En efecto, si escribimos
q(z) = bn z n1 + bn1 z n2 + + b2 z + b1 .

q(z)(z z0 ) = bn z n + bn1 z n1 + + b2 z 2 + b1 z bn z n1 z0 + + b2 z0 + b1 z0 ,
q(z)(z z0 ) + b0 = bn z n + (bn1 bn z0 )z n1 + + (b1 b2 z0 )z + (b0 b1 z0 ).
Tal y como tenemos definidos los coeficientes bk , tenemos bn = an y (bk bk+1 z0 ) = ak , de donde
resulta la igualdad 2.2.
El siguiente algoritmo reproduce el esquema de Horner que hemos expuesto, y lo implementaremos en el correspondiente programa de clculo en las sesiones de prcticas.

Algoritmo 2.2

Esquema de Horner

Datos de entrada:a0 , a1 , . . . , an (coeficientes del polinomio p); z


Fujo del programa:
bn = an
for(k=n-1;k>=0;k- -){
bk = bk+1 z + ak
}
Datos de salida:(valor de p(z)) b0 ; (coeficientes de q(z)) b1 , . . . , bn
Observad que si slo necesitamos obtener el valor de p(z) podemos acelerar el algoritmo utilizando una nica variable b en lugar de una lista bk . Se inicia b con el valor de an y en el bucle
(for) se hace la asignacin b = bz + ak .
Ejemplo 2.2.2 z = 2 es raz del polinomio p(z) = z 4 4z 3 + 7z 2 5z 2
1
2
b4 = 1

4
2
b3 = 2

7
4
b2 = 3

5
6
b1 = 1

2
2
b0 = 0

p(2) = 0 y p(z) = (z 2)(1z 3 2z 2 + 3z + 1).

2.3.

Mtodos elementales de resolucin de ecuaciones no lineales

Vamos a analizar tres algoritmos sencillos para la bsqueda de soluciones de ecuaciones de


la forma
f (x) == 0,
donde f : (a, b) R es una funcin real de variable real

2.3.1.

El Mtodo de la Biseccin

Teorema 2.3.1 (Bolzano) Sea f : [a, b] R una funcin continua tal que
f (a) f (b) < 0.
Entonces existe x [a, b] tal que f (x) = 0.

Algoritmos-Iteraciones

33

Recuerdas la demostracin constructiva representada en el grfico:


1

0.5

0.25

0.5

0.75

1.25

1.5

0.25

0.5

0.75

1.25

1.5

0.25

0.5

0.75

1.25

1.5

0.25

0.5

0.75

1.25

1.5

0.25

0.5

0.75

1.25

1.5

-0.5

-1

-1.5
1

0.5

-0.5

-1

-1.5
1

0.5

-0.5

-1

-1.5
1

0.5

-0.5

-1

-1.5
1

0.5

-0.5

-1

-1.5

Escribe la demostracin!

34

UMU Mtodos Numricos, 2007-2008


En si misma esa prueba es el algoritmo de la biseccin:

Algoritmo 2.3

Mtodo de la biseccin

Datos de entrada:Funcion f ; a, b R; precision R; nmaxiter Z


Datos de salida: solucin x (f (x) = 0) o mensaje de error
Variables:
aa, bb, h, c, u, v, w R // auxiliares para operar sin cambiar los nmeros.
Fujo del programa:
aa = a; bb = b; u = f (aa); v = f (bb);
if(u v > 0){ Parada: Error- No hay cambio de signo}
for(k=1;k<=nmaxiter;k=k+1){
h = 0.5 (bb aa); c = aa + h; w = f (c);
if((|h| < precision) o (|w| < precision)){ Parada: Solucin en x = c }
if(w u > 0){ aa = c; u = w; }
else{ bb = c; v = w;}
}
Parada: Error- No hay convergencia

las sucesiones ak = aa y bk == bb (en la etapa k) son montonas acotadas, encierran


la sucesin ck = c (en la etapa k), y convergen hacia una solucin x de la ecuacin
f (x) == 0.
El algoritmo de la biseccin proporciona en cada etapa k una aproximacin ck = c a
la raz x de manera que
|x ck |

ba
.
2k+1

En el algoritmo de la biseccin tenemos asegurada la convergencia del mtodo aunque la


velocidad de las iteradas es constante: en cada etapa se reduce el error en la aproximacin a la
mitad.
Ejemplo 2.3.2 En la tabla que sigue se pueden observar valores de las 37 primeras iteraciones
del mtodo de la biseccin aplicado a la funcin f (x) = ex x2 x 1 en el intervalo [1,2],
tomando precision = 1010 .
k=
k=
k=
k=
k=

1
2
3
4
5

aa=
aa=
aa=
aa=
aa=

1.0
1.5
1.75
1.75
1.75

bb=
bb=
bb=
bb=
bb=

2.0
2.0
2.0
1.875
1.8125

u=-0.28171817154095447
u=-0.2683109296619355
u=-0.05789732399427017
u=-0.05789732399427017
u=-0.05789732399427017

v=0.3890560989306504
v=0.3890560989306504
v=0.3890560989306504
v=0.13019412033011246
v=0.02808641188198635

k=
k=
k=
k=
k=

11
12
13
14
15

aa=
aa=
aa=
aa=
aa=

1.79296875
1.79296875
1.793212890625
1.793212890625
1.79327392578125

bb=
bb=
bb=
bb=
bb=

1.7939453125
1.79345703125
1.79345703125
1.7933349609375
1.7933349609375

u=-4.456149959981559E-4
u=-4.456149959981559E-4
u=-9.849297435415849E-5
u=-9.849297435415849E-5
u=-1.1675138180677891E-5

v=9.443070728494263E-4
v=2.4886798603152016E-4
v=2.4886798603152016E-4
v=7.515763303089784E-5
v=7.515763303089784E-5

Algoritmos-Iteraciones

35

k=
k=
k=
k=
k=

21
22
23
24
25

aa=
aa=
aa=
aa=
aa=

1.7932815551757812
1.7932820320129395
1.7932820320129395
1.7932820320129395
1.7932820916175842

bb=
bb=
bb=
bb=
bb=

1.7932825088500977
1.7932825088500977
1.7932822704315186
1.793282151222229
1.793282151222229

u=-8.21858566979472E-7
u=-1.4352084320989889E-7
u=-1.4352084320989889E-7
u=-1.4352084320989889E-7
u=-5.8728563345766815E-8

v=5.348177927189113E-7
v=5.348177927189113E-7
v=1.9564836062357926E-7
v=2.606373072921997E-8
v=2.606373072921997E-8

k=
k=
k=
k=
k=

32
33
34
35
36

aa=
aa=
aa=
aa=
aa=

1.7932821325957775
1.7932821328286082
1.7932821328286082
1.7932821328868158
1.7932821328868158

bb=
bb=
bb=
bb=
bb=

1.7932821330614388
1.7932821330614388
1.7932821329450235
1.7932821329450235
1.7932821329159196

u=-4.338631676148452E-10
u=-1.0264278316185482E-10
u=-1.0264278316185482E-10
u=-1.9838353182421997E-11
u=-1.9838353182421997E-11

v=2.2857626902350603E-10
v=2.2857626902350603E-10
v=6.296652088622068E-11
v=6.296652088622068E-11
v=2.156363976268949E-11

El mtodo de encuentra c = 1.7932821329013677, f (c) = 8.633094239485217E 13, como


raz, en 36 etapas (pasos).
En los dos apartados siguientes vamos a ver dos intentos de aceleracin de esta convergencia:
los mtodos de la regla falsa y de Newton.

2.3.2.

El mtodo de la Regula Falsi

El mtodo de la Regula Falsi (regla falsa), es una modificacin del mtodo de la biseccin
con la esperanza de obtener una aproximacin de la raz de forma ms rpida.
Consiste en utilizar el punto de corte c de la secante que une los extremos de la curva y = f (x)
en a y b en vez del punto medio, para dividir el intervalo y despus iterar el proceso quedndonos
con los subintervalos en los que f cambie de signo.
En los siguientes grficos podemos observar distintas etapas de este mtodo:

1.2

1.4

1.6

1.25

1.25

0.75

0.75

0.5

0.5

0.25

0.25

1.8

1.2

1.4

1.6

1.8

-0.25

1.2

1.4

1.6

-0.25

1.25

1.25

0.75

0.75

0.5

0.5

0.25

0.25

1.8

1.2

-0.25

1.4

1.6

1.8

-0.25

Para describir el algoritmo, recordar que la ecuacin de la recta que pasa por los puntos (a, u)
y (b, v) es
vu
y =u+
(x a).
ba

36

UMU Mtodos Numricos, 2007-2008

Si ahora hacemos y = 0 en esa expresin para determinar la abscisa de corte de la recta con el
eje de abscisas se tiene
ba
x=au
.
vu
Modificando el algoritmo del mtodo de la biseccin en la definicin de c tomando el corte
de la secante a la curva y = f (x) en los extremos de los intervalos con el eje de abscisas en vez
de considerar el centro del intervalo, obtenemos el siguiente algoritmo:
(Enmarcada sobre fondo gris, est la modificacin efectuada)

Algoritmo 2.4 Algoritmo de la regula falsi


Datos de entrada:Funcion f ; a, b R; precision R; nmaxiter Z
Datos de salida: solucin x (f (x) = 0) o mensaje de error
Variables:
aa, bb, h, c, u, v, w R // auxiliares para operar sin cambiar los nmeros.
Fujo del programa:
aa = a; bb = b; u = f (aa); v = f (bb);
if(u v > 0){ Parada: Error- No hay cambio de signo}
for(k=1;k<=nmaxiter;k=k+1){
h = u (bb aa)/(v u); c = aa + h; w = f (c);
if((|h| < precision) o (|w| <)){ Parada: Solucin en x = c }
if(w u > 0){ aa = c; u = w; }
else{ bb = c; v = w;}
}
Parada: Error- No hay convergencia

Ejemplo 2.3.3 Retomando el ejemplo 2.3.2, f (x) = ex x2 x 1 en [1,2], y aplicando el


mtodo de la regula falsi con la misma precision = 1010 , tenemos
k=
k=
k=
k=
k=

1
2
3
4
5

aa=
aa=
aa=
aa=
aa=

1.0
1.4199895314155169
1.6721721622963694
1.7610064028149435
1.7852195260508816

bb=
bb=
bb=
bb=
bb=

2.0
2.0
2.0
2.0
2.0

u=-0.28171817154095447
u=-0.29928267006193354
u=-0.14461267362264119
u=-0.043859961270654724
u=-0.01133990799920781

v=0.3890560989306504
v=0.3890560989306504
v=0.3890560989306504
v=0.3890560989306504
v=0.3890560989306504

k=
k=
k=
k=
k=
k=
k=
k=
k=

11
12
13
14
15
16
17
18
19

aa=
aa=
aa=
aa=
aa=
aa=
aa=
aa=
aa=

1.7932804127143416
1.7932817129360898
1.793282030371081
1.7932821078692915
1.7932821267896093
1.793282131408792
1.7932821325365136
1.7932821328118338
1.7932821328790503

bb=
bb=
bb=
bb=
bb=
bb=
bb=
bb=
bb=

2.0
2.0
2.0
2.0
2.0
2.0
2.0
2.0
2.0

u=-2.447094586077725E-6
u=-5.974324321922353E-7
u=-1.4585651553211676E-7
u=-3.5609233561828546E-8
u=-8.693593622766116E-9
u=-2.1224435542421816E-9
u=-5.181701734358057E-10
u=-1.26505694808543E-10
u=-3.088485023283738E-11

v=0.3890560989306504
v=0.3890560989306504
v=0.3890560989306504
v=0.3890560989306504
v=0.3890560989306504
v=0.3890560989306504
v=0.3890560989306504
v=0.3890560989306504
v=0.3890560989306504

Se obtiene la misma solucin que con el mtodo de la biseccin pero ahora slo en 19 pasos.
A la vista de este ejemplo podramos pensar que el algoritmo de la regula falsi es ms rpido
que el mtodo de la biseccin. En general, ese no es el caso

Algoritmos-Iteraciones

37

Ejemplo 2.3.4 Si consideramos la funcin g(x) = x3 x 1 que tambin cambia de signo


en [1,2], y tomamos la precision = 1010 , el mtodo de la biseccin nos da la raz c =
1.324717957242683 con g(c) = 8.79785133633959E 12 en 37 etapas.
Si aplicamos la regula falsi a esta misma funcin, en el mismo intervalo, y con la misma
precisin, obtenemos la misma raz en 31 etapas, que slo es unas cuantas iteraciones menos que
el de la biseccin.
Ejercicio 2.3.1 Trabajando sobre la siguiente grfica. Dad una estimacin del nmero de etapas
que necesitan los mtodos de la biseccin y de la regula falsi para alcanzar buenas estimaciones
de la raz. Observad que en este caso el mtodo de la biseccin parece ser bastante ms rpido
que el de la regula falsi.

Observando la grfica del ejercicio podemos conjeturar (sin equivocarnos demasiado) que el
ralentizamiento de la regula falsi se debe a la presencia de regiones donde la curva tiene poca
pendiente donde la secante aproxima mal a la curva, para pasar al final a una regin con mucha
pendiente donde las secantes aproximan bien a la curva.
Para evadir esta situacin se puede utilizar el siguiente truco que consiste en reducir la
pendiente de las secante en las etapas en las que se sea consciente de que podemos estar ralentizandonos.
La modificacin esencialmente consiste en guardar memoria del signo de f en el punto de
corte de la secante con el eje de abscisas y en caso de que el signo se repita en la siguiente
iteracin, se inclinar ms la secante buscando una mejor aproximacin del cero de f .
En la primera etapa, se utiliza f (a) para comparar con el signo de f (c) en el punto de corte,
c, de la secante con el eje de abscisas.
Grficamente hacemos lo siguiente:

38

UMU Mtodos Numricos, 2007-2008

1.4

1.2

1.6

1.25

1.25

0.75

0.75

0.5

0.5

0.25

0.25

1.2

1.8

1.4

1.6

1.8
-0.25

-0.25

1.2

1.4

1.6

1.25

1.25

0.75

0.75

0.5

0.5

0.25

0.25

1.8

1.2
-0.25

1.4

1.6

1.8
-0.25

(Enmarcadas sobre fondo gris, estn la modificaciones efectuadas sobre el mtodo de la regula
falsi)

Algoritmo 2.5 Regula falsi modificado


Datos de entrada:Funcion f ; a, b R; precision R; nmaxiter Z
Datos de salida: solucin x (f (x) = 0) o mensaje de error
Variables:
aa, bb, h, c, u, v, w, w1 R // auxiliares para operar sin cambiar los nmeros.
Fujo del programa:
aa = a; bb = b; u = f (aa); v = f (bb);
if(u v > 0){ Parada: Error- No hay cambio de signo}
w1 = u
for(k=1;k<=nmaxiter;k=k+1){
h = u (bb aa)/(v u); c = aa + h; w = f (c);
if((|h| < precision) o (|w| <)){ Parada: Solucin en x = c }
if(w u > 0){
if((w w1 > 0)){ v = 0.5 v}
aa = c; u = w; w1 = w }
else{
if((w w1 > 0)){ u = 0.5 u}
bb = c; v = w; w1 = w }
}
Parada: Error- No hay convergencia

Algoritmos-Iteraciones

39

Ejemplo 2.3.5 Volviendo a retomar los ejemplos anteriores, para f (x) = ex x2 x 1


en [1,2], el mtodo de la regula falsi modificado proporciona la raz c = 1.7932821329006305
f (c) = 1.8562928971732617E 13 en slo 8 etapas.
Para la funcin g(x) = x3 x 1 que tambin cambia de signo en [1,2], la modificacin de
la regula falsi proporciona la raz c = 1.324717957244746 f (c) = 2.220446049250313E 16 en 7
etapas.
Con el truco propuesto, podemos pensar en que vamos a tener mejor convergencia.

2.3.3.

Mtodo de Newton

Una variacin a los mtodos anteriores aparece cuando utilizamos rectas tangentes a la curva
y = f (x) para aproximarnos a la raz. Este es el conocido como mtodo de Newton.
Consiste en iterar el proceso siguiente:
Dada una aproximacin xi de la raz de f , consideramos g(x) = f (xi) + f 0 (xi)(x xi)
la ecuacin de la tangente a y = f (x) en xi.
resolvemos la ecuacin lineal g(x) = = 0, tomando h = ff0(xi)
(xi) y xf = xi + h.
la solucin xf de la ecuacin aproximada, ser la nueva aproximacin de la raz de la
ecuacin inicial.
Grficamente se puede representar como sigue:

1.25

1.25

1.5

1.5

10

10

1.75

1.75

2.25

2.5

2.75

1.25

1.5

1.75

2.25

10

10

2.25

El algoritmo es muy simple:

2.5

2.75

1.25

1.5

1.75

2.25

2.5

2.5

2.75

2.75

40

UMU Mtodos Numricos, 2007-2008

Algoritmo 2.6

Mtodo de Newton

Datos de entrada:Funcin f ; x0 R; precision R; nmaxiter Z


Datos de salida: solucin x (f (x) = 0) o mensaje de error
Variables:
xi = x0 // la aproximacin inicial.
f i; df i;// Para almacenar el valor de f y el de f0 en la aproximacin.
hi = 1 + precision; // Para almacenar el incremento de xi, con un valor inicial grande.
Fujo del programa:
for(k=1;k<=nmaxiter;k++){
f i = f (xi);
if((|f i| < precision) o (|hi| < precision)){ Parada: Raz en xi }
df i = f 0 (xi);
if(dfi==0){
Parada:Error: derivada nula
}
hi = f i/df i;
xi = xi + hi; // volvemos a iterar Newton con este nuevo valor de xi
}
Parada: Error: No hay convergencia en nmaxiter iteraciones

Terminamos la seccin observando el comportamiento del algoritmo en algunos ejemplos.


Ejemplo 2.3.6 Volviendo a retomar los ejemplos anteriores, para f (x) = ex x2 x 1 en
[1,2], el mtodo de Newton empezando en xi = 1 como aproximacin inicial, proporciona la raz
c = 1.793282132894812 f (c) = 8.462119893692943E 12 en 30 etapas. En este caso el mtodo
ms rpido ha sido el de la regula falsi modificado.
Con la funcin g(x) = x3 x 1 y con xi = 1 como aproximacin inicial, el mtodo de
Newton proporciona la raz c = 1.3247179572447898 f (c) = 1.865174681370263E 13 en 6
etapas. En este caso el mtodo de Newton es el ms eficaz de los cuatro estudiados.
Los distintos mtodos introducidos tienen diferente comportamiento segn las ecuaciones propuestas en los ejemplos.
En principio, debemos admitir la coexistencia de los diferentes mtodos de resolucin de ecuaciones estudiados, habida cuenta de que ninguno de los cuatro mtodos
estudiados se puede calificar de mejor mtodo que los otros.
El mtodo de Newton es un ejemplo de una iteracin funcional, tal y como sealaremos en
la siguiente seccin. Para estas iteraciones vamos a tener resultados de convergencia local que
nos dirn que el mtodo de Newton en general converge ms rpido que los otros
supuesto que partimos de una buena aproximacin a la raz x de f y que f 0 (x) 6= 0.
En los siguientes ejemplos grficos podemos observar que las iteradas del mtodo de Newton
pueden no ser convergentes e incluso pueden dar lugar a sucesiones peridicas (sucesiones en las
que a partir de un momento, todos los trminos se repiten de forma peridica).

Algoritmos-Iteraciones

41

Ejemplo 2.3.7 Puntos peridicos

-1

15

15

10

10

-0.5

0.5

-1

-0.5

0.5

-5

-5

-10

-10

15

10

-1

-0.5

0.5

-5

-10

Cuando la derivada de f se anula, aparecen problemas:


Ejemplo 2.3.8 Sucesin divergente (asintotas)

10

-8

-4

-6

10

-2

-8

-4

-6

-2

-10

-10

-20

-20

-30

-30

-40

-40

-50

-50

Ejemplo 2.3.9 Extremos relativos (empezamos cerca del mnimo)


5

-1

-0.5

0.5

1.5

2.5

42

UMU Mtodos Numricos, 2007-2008

Referencias para la seccin


Mtodo de la Biseccin: Libro de Burden-Faires [2], seccin 2.1, algoritmo 2.1.
Mtodo de la regula falsi: Libro de Burden-Faires [2], seccin 2.3, algoritmo 2.5.
Mtodo de Newton: Libro de Burden-Faires [2], seccin 2.3, algoritmo 2.3.

2.4.

Iteracin de punto fijo

Definicin 2.4.1 Un punto fijo de una funcin f : C C es cualquier punto x C para el


cual
f (x) = x.
En esta seccin vamos a estudiar los problemas de punto fijo, es decir, problemas de
resolucin de ecuaciones
f (x) == x,
donde f : C C es una funcin del conjunto C en si mismo. Vamos a poner ejemplos de
funciones reales de variable real aunque el resultado principal de la seccin lo probaremos en el
contexto de espacios mtricos completos.
Los problemas de bsqueda de races de funciones g(x) == 0 son equivalentes a los de
bsqueda de puntos fijos f (x) == x, considerando funciones auxiliares:
Si f (x) tiene un punto fijo en x, entonces g(x) = f (x) x tiene una raz en x.
Reciprocamente, si g tiene una raz en x, entonces f (x) = h(x)g(x) + x tiene un punto fijo
en x.
Vamos a buscar puntos fijos viendo el comportamiento (la dinmica) de las iteradas de
funciones, es decir, sucesiones de la forma
xn = f (xn1 ).
A estas sucesiones se les llama rbitas del punto x[0] y la funcin f ,
Proposicin 2.4.2 Si f es una funcin continua y xn converge, entonces su lmite x es un
punto fijo de f .
La prueba de la proposicin es la siguiente cadena de igualdades
f (x) = lm f (xn ) = lm xn = lm xn+1 = x.
n

Esta tcnica de considerar sucesiones de iteradas, xn = f (xn1 ), para buscar puntos fijos,
recibe el nombre de iteracin de punto fijo o iteracin funcional. El algoritmo correspondiente es:

Algoritmos-Iteraciones

Algoritmo 2.7

43

Iteracin de punto fijo

Datos de entrada:Funcin f ; x0 R; precision R; nmaxiter Z


Datos de salida: solucin x (f (x) = x) o mensaje de error
Variables:
xx = x0 // los puntos de la rbita.
f x = f (xx); // el siguiente punto de la rbita f.
Fujo del programa:
for(k=1;k<=nmaxiter;k++){
if(|xx f x| < precision){ Parada: Punto fijo en xx }
xx = f x;
f x = f (xx); // el siguiente punto de la rbita f
}
Parada: Error: No hay convergencia en nmaxiter iteraciones

Ejemplo 2.4.3 Con la calculadora de mano, configurada para trabajar en radianes, si consideramos la funcin cos(x) y calculamos la rbita de cualquier nmero obtenemos un/el punto fijo
del cos :
cos(0.739085133) = 0.739085133.
Grficamente, comenzando en 0.5 se tiene:
1

0.8

0.8

0.6

0.6

0.4

0.4

0.2

0.2

0.2

0.4

0.6

0.8

0.8

0.8

0.6

0.6

0.4

0.4

0.2

0.2

0.2

0.4

0.6

0.8

0.2

0.4

0.6

0.8

0.2

0.4

0.6

0.8

44

UMU Mtodos Numricos, 2007-2008


1

0.8

0.8

0.6

0.6

0.4

0.4

0.2

0.2

0.2

0.4

0.6

0.8

0.2

0.4

0.6

0.8

Recordis resultados del curso Analisis I que garanticen la existencia de puntos fijos y su
unicidad?
Echad un vistazo al Teorema 2.2 del libro de Burden-Faires [2] y seguro que recordis una
aplicacin del teorema de Bolzano y otra de la frmula de los incrementos finitos.
El siguiente teorema da una condicin suficiente para la convergencia de las iteraciones de
punto fijo. Vamos e enunciarlo para funciones definidas en espacios mtricos completos (X, d),
que contiene como caso particular a R, Rn , a los espacios de Banach (espacios normados completos) (X, k k) y a sus subconjuntos cerrados.
Definicin 2.4.4 Sea (X, d) un espacio mtrico completo, se dice que una funcin f : X X,
es una funcin contractiva cuando existe una constante c, 0 < c < 1, verificando :
d(f (x), f (y)) c d(x, y)

para cada x e y en X.

Teorema 2.4.5 (Teorema del Punto Fijo de Banach) Sea (X, d) un espacio mtrico completo y f : X X una funcin (contractiva) tal que existe una constante c, 0 < c < 1,
verificando :
d(f (x), f (y)) c d(x, y)
para cada x e y en X.
Entonces la ecuacin f (x) = = x tiene una nica solucin xs X.
Esta solucin se encuentra como el lmite de la sucesin de iteradas
xs = lm x(n),
n

x(n) = f (x(n 1)).

para un x(0) en X arbitrario.


Adems, el error en cada etapa est acotado por
e(n) = d(x(n), xs)

cn
d(x(1), x(0))
1c

Demostracin:
Ideas que intervienen
Como f es contractiva si tiene un punto fijo este es nico.
En efecto, si f (x) = x y f (y) = y, entonces
d(x, y) = d(f (x), f (y)) cd(x, y),
y como 0 < c < 1, esto slo es posible si d(x, y) = 0, e. d. si x = y.

Algoritmos-Iteraciones

45

Como f es contractiva, f es continua. Si la iterada funcional xn = f (xn1 ) converge, su


lmite es el punto fijo de f (Proposicin 2.4.2).
Como f es contractiva las iteradas funcionales xn son sucesiones de Cauchy y en consecuencia son convergentes ya que X es un espacio mtrico completo.
(i) d(xn , xn1 ) c d(xn1 , xn2 ) c2 d(xn1 , xn3 ) ... cn1 d(x1 , x0 ).
(ii) d(xn+p , xn ) d(xn+p , xn+p1 ) + d(xn+p1 , xn ) ...
d(xn+p , xn+p1 ) + d(xn+p1 , xn+p2 ) + ... + d(xn+1 , xn )
n
n+p
(cn+p1 + cn+p2 + ... + cn )d(x1 , x0 ) = c c
1c d(x1 , x0 ) 0.

La frmula de los incrementos finitos nos ofrece condiciones para que una funcin sea
contractiva y se cumpla el teorema del punto fijo:
|f (x) f (y)| = |f 0 (x + t(y x))||x y| c|x y|,
donde (0 < t < 1), y |f 0 (s)| c para todo s [a, b] (x + t(y x) [a, b]).
Corolario 2.4.6 Sea f : [a, b] [a, b] una funcin derivable para la que existe una constante
c, 0 < c < 1 tal que:
|f 0 (x)| c
para todo x [a, b].
Entonces la ecuacin f (x) = = x tiene una nica solucin xs en [a, b]. Esta solucin es el lmite
de la sucesin de iteradas
xn = f (xn1 )
definida a partir de cualquier punto x0 [a, b]. Adems:
en = |xn xs|

cn
|x1 x0 |.
1c

Ejemplo 2.4.7 (Ejemplos 3 y 4 del apartado 2.2 de Burden-Faires [2]) La nica raz de
p(x) = x3 + 4x2 10 en el intervalo [1, 2] se puede convertir en punto fijo x == g(x), de una
funcin g de diferentes formas.
Vamos a relacionar 5 elecciones distintas de g, y describiremos el comportamiento de las
iteradas funcionales empezando en x0 = 1.5
(i) x = g1 (x) = x x3 4x2 + 10
xn = g1 (xn1 ) es divergente.
g1 no es contractiva, |g 0 (x)| > 1 en todo x [1, 2].
(ii) x = g2 (x) =

10
x

1
4x 2

g2 no lleva el intervalo [1,2] al intervalo [1,2]. La iterada x3 no est definida.


1

(iii) x = g3 (x) = 12 (10 x3 ) 2

xn = g3 (xn1 ) es convergente.
g3 es estrictamente decreciente en [1,2]. Lleva el intervalo [1,1.5] al intervalo [1.28,1.5].
Adems como |g30 (x)| |g30 (1.5)| 0.66 < 1 para todo x [1.28, 1.5], podemos concluir
que g3 es contractiva en ese intervalo.

46

UMU Mtodos Numricos, 2007-2008

(iv) x = g4 (x) =

10
4+x

1

xn = g4 (xn1 ) es convergente, y converge ms rpido que la anterior.






g4 es decreciente, lleva el intervalo [1,2] al intervalo [1,2] y |g40 (x)| = 5 3 < 0.15 para
10 5
todo x [1, 2].
g4 es contractiva con constante menor que la de g3 . Esta es la razn por la iterada para g4
converge ms rpidamente que la de g4 .
(v) x = g5 (x) = x

x3 +4x2 10
.
3x2 +8x

La iterada funcional para g5 es la iterada del mtodo de Newton para p(x) y es ms rpida
que las dos iteradas anteriores. Enseguida vamos a ver porqu.

2.4.1.

Atractores y repulsores

Sea f : [a, b] R es una funcin derivable con derivada continua y x [a, b] un punto fijo
de f (f (x) = x)
El tamao de la derivada |f 0 (x)| indica el comportamiento de las iteradas funcionales en las
prximidades de x.
Proposicin 2.4.8 Si |f 0 (x)| < 1 entonces, en un entorno de x se cumplen las hiptesis del
teorema del punto fijo. Se dice que x es un punto atractor (o sumidero) de f .
Las iteradas xn = f (xn1 ) convergen a x, para x0 prximo a x.
Demostracin:
Ideas que intervienen
|f 0 (x)| < c < 1 y f 0 continua que existe > 0 tal que |f 0 (x)| < c para x [x , x + ].
f : [x , x + ] [x , x + ] En efecto:
|f (x) x| = |f (x) f (x)| = |f 0 ()||x x| < c < .
( est entre x y x, [x , x + ])
Se cumplen las hiptesis del teorema del punto fijo para f definida en [x , x + ].


Ejemplo 2.4.9 (El mtodo de Newton) El mtodo de Newton consiste en iterar el proceso siguiente:
Dada una raz x de una funcin derivable f , (f (x) = 0). Si xn es una aproximacin
de x consideramos aux(x) = f (xi) + f 0 (xi)(x xi) la ecuacin de la tangente a y = f (x)
en xn , resolvemos la ecuacin lineal aux(x) = = 0, y tomamos la solucin como nueva
n)
aproximacin xn+1 = xn ff0(x
(xn ) .

Algoritmos-Iteraciones

47

Considerando la funcin
g(x) = x

f (x)
.
f 0 (x)

Esperamos encontrar x como lmite de xn+1 = g(xn ), e.d., como punto fijo de g.
Si f es dos veces derivable con f 00 continua y f 0 (x) 6= 0, g es derivable en un entorno de x
y
f 00 (x)
g 0 (x) = 0(< 1) y g 00 (x) = 0
.
f (x)
x es un atractor.
Como corolario de la proposicin 2.4.8 tenemos el siguiente teorema de convergencia local
para el mtodo de Newton.
Proposicin 2.4.10 Sea f : (a, b) R una funcin dos veces derivable con f 00 continua. Sea
x (a, b) una raz simple de f , e.d. f (x) = 0 y f 0 (x) 6= 0. Entonces existe > 0 tal que si
n)
x0 (a, b), y |x0 x| < , la sucesin de iteradas de Newton, xn+1 = xn ff0(x
(xn ) , est bien
definida para todo n N y converge hacia x.
Ejemplo 2.4.11 f (x) = 0.25 ex tiene una atractor cerca de 0.4, si hacemos las iteradas
funcionales grficamente desde x0 = 0.9 tenemos:
1

0.8

0.8

0.6

0.6

0.4

0.4

0.2

0.2

0.2

0.4

0.6

0.8

0.8

0.8

0.6

0.6

0.4

0.4

0.2

0.2

0.2

0.4

0.6

0.8

0.2

0.4

0.6

0.8

0.2

0.4

0.6

0.8

48

UMU Mtodos Numricos, 2007-2008

Cuando la derivada de la funcin en el punto fijo es mayor que 1, el comportamiento de las


iteradas funcionales cerca de este punto fijo es todo lo contrario a lo que ocurre con los atractores.
Ejemplo 2.4.12 f (x) = 0.25 ex , tiene punto fijo cerca de 2.15, si hacemos las iteradas funcionales grficamente desde x0 = 2.1 tenemos:
5

0.5

1.5

2.5

0.5

1.5

2.5

0.5

1.5

2.5

0.5

1.5

2.5

Proposicin 2.4.13 Si |f 0 (x)| > 1 entonces, en ningn entorno de x se cumplen las hiptesis
del teorema del punto fijo. Se dice que x es un punto repulsor (o fuente) de f .
Las iteradas xn = f (xn1 ) no convergen a x, para x0 prximo a x, salvo que xn = x para
algn n.
Demostracin:
Ideas que intervienen
|f 0 (x)| > C > 1 + f 0 continua que existe > 0 tal que |f 0 (x)| > C para x [x, x+].
Si xn = f (xn1 ), entonces xn 6 x salvo si para algn n0 , xn0 = x (xn = x, n > n0 ).
En efecto: si fuese convergente existira n0 tal que 0 < |xn x| < para n n0 . Pero
|xn x| = |f (xn1 ) f (x)|
= |f 0 ()||xn1 x|
> C |xn1 x| > ...
> C nn0 |xn0 x|

Algoritmos-Iteraciones
(C > 1 C nn0 )

2.5.

49


ABSURDO

Orden de convergencia de una sucesin

Para formalizar la idea de velocidad en la convergencia de una sucesin y poder cuantificar


el que una sucesin converge hacia su lmite ms rpidamente que otra, vamos a considerar la
siguiente definicin:
Definicin 2.5.1 Si xn x, existen C > 0 y m > 0 tales que
|xn x| C|xn1 x|m n,
entonces se dice que xn x con convergencia de orden al menos m
Si xn x con xn 6= x, existe > 0 y m > 0 tales que
lm
n

|xn x|
= ,
|xn1 x|m

entonces se dice que xn x con convergencia de orden m. A se le llama la constante


asinttica del error.
Si xn es una sucesin convergente con convergencia de orden m = 1, se dice que xn es
linealmente convergente.
Cuando xn es una sucesin convergente con convergencia de orden m = 2, se de que la
sucesin es cuadrticamente convergente.
Observad que para si n es grande xn aproxima a x con k dgitos en el sentido que1 |xn x| <
0.5 10k , entonces
|xn+1 x| |xn x|2 < 0.52 102k
xn+1 aproximar a x con alrededor de 2k dgitos de precisin.
Cal es el orden de convergencia de las iteraciones de punto fijo?
Teorema 2.5.2 (Orden de convergencia) Si f : [a, b] [a, b] es una funcin con un punto
fijo en x.
(Caso m = 1) Si f es derivable con derivada continua, |f 0 (x)| < 1, y x0 es un punto prximo a
x, entonces xn = f (xn1 ) converge a x con convergencia de orden al menos 1 (x es un atractor).
(Caso m 2) Si f es m-veces derivable en [a, b], con derivada de orden m f (m) continua, se
cumple:
f 0 (x) = f 00 (x) = ... = f (m1) (x) = 0,
y x0 es un punto prximo a x, entonces xn = f (xn1 ) converge a x con convergencia de orden
al menos m.
Si adems f (m) (x) 6= 0, la convergencia es de orden m con constante asinttica del error
|f (m) (x)|/m!.
1

Permitid la licencia de que aqu consideremos errores absolutos en lugar de los errores relativos del captulo
anterior.

50

UMU Mtodos Numricos, 2007-2008

Demostracin:
Ideas que intervienen
(caso m=1) |f 0 (x)| < 1 implica que x es un atractor. e.d. que las iteradas funcionales son
convergentes.
(caso m>1) Como f 0 (x) = 0 < 1 la sucesin de iteradas xn+1 = f (xn ) converge hacia x
siempre que x0 est cerca de x.
Considera la frmula del desarrollo de Taylor de f en x de orden m:
f (x) f (x) =

f (m) (x)
(x x)m + o((x x)m ).
m!

As tenemos
f (xn ) f (x)
f (m)(x) o((xn x)m )
f (m)(x)
xn+1 x
=
=

+
.
(xn x)m
(xn x)m
m!
(xn x)m
m!

Como corolario de este resultado y de la proposicin 2.4.10, se tiene el siguiente teorema de
convergencia local del mtodo de Newton,
Teorema 2.5.3 Sea f : (a, b) R una funcin dos veces derivable con f 00 continua. Sea x
(a, b) una raz simple de f , e.d. f (x) = 0 y f 0 (x) 6= 0. Entonces existe > 0 tal que si x0 (a, b),
n)
y |x0 x| < , la sucesin de iteradas de Newton, xn+1 = xn ff0(x
(xn ) , est bien definida para
todo n N y converge hacia x con convergencia de orden al menos 2.
Cal es el orden de convergencia y la constante asinttica del error en el mtodo de Newton
si f 0 (x) 6= 0 y f 00 (x) 6= 0?
Volved al ejemplo 2.4.7 y comparar los ordenes de convergencia de los distintos procesos
iterativos que se estudiaron all.

2.6.

Acelerando la convergencia: mtodo 2 de Aitken y mtodo


de Steffensen

No siempre tenemos la suerte de construir iteradas que converjan cuadrticamente. Pero si


de antemano sabemos que nuestra sucesin de iteradas converge linealmente, podemos acelerar
la convergencia de la sucesin con el mtodo de aceleracin de Aitken.
Supongamos que xn x con convergencia de orden al menos 1, y que existe
xn+1 x
= A 6= 1.
n xn x
lm

Remarcad la hiptesis de que la constante asinttica A 6= 1. Esto ocurre en los puntos fijos que
son atractores A = |f 0 (x)| < 1.
Entonces, para n suficientemente grande podemos escribir
(
xn+1 x A(xn x)
(2.3)
xn+2 x A(xn+1 x).

Algoritmos-Iteraciones

51

Restando esas dos expresiones tenemos

xn+2 xn+1 A(xn+1 xn )


xn+1
A xxn+2
, y
n+1 xn

(xn+2 xn+1 )(xn+1 xn )


1A
xn+1 xn

(2.4)

Despejando x en (2.3) y sustituyendo 1 A por la aproximacin dada en (2.4) queda


x

xn+1 Axn
xn+1 xn
(xn+1 xn )2
= xn +
xn
.
1A
1A
(xn+2 xn+1 ) (xn+1 xn )

(2.5)

Se utiliza la notacin de Aitken:


xn := (xn+1 xn )
2 xn := (xn ) = (xn+2 xn+1 ) (xn+1 xn ) = xn+2 2xn+1 + xn .
Con lo que la estimacin dada en (2.5) queda
x xn

(xn+1 xn )2
(xn )2
= xn
(xn+2 xn+1 ) (xn+1 xn )
2 xn

El mtodo de aceleracin 2 de Aitken, consiste en ir construyendo la sucesin


x
n = xn

(xn )2
2 xn

con la esperanza de que x


n converja hacia x ms rpidamente que xn .
Teorema 2.6.1 (Aceleracin de Aitken) Supongamos que xn x con convergencia de orden al menos 1, que para todo n xn x 6= 0, y que
xn+1 x
= A 6= 1.
n xn x
lm

n)
converge hacia x ms rpidamente
Entonces la sucesin del mtodo de Aitken x
n = xn (x
2 xn
que xn en el sentido de que
x
n x
lm
=0
n xn x

Demostracin:
Ideas que intervienen
Expresar x
n x en trminos de xn x y A 1 6= 0.
(i) n :=

xn+1 x
A0
xn x

(ii) xn+1 x = (xn x) + xn = (xn x)(n + A)


(iii) xn := xn+1 xn = (xn+1 x) (xn x) = (n + (A 1))(xn x).
(iv) 2 xn = xn+1 xn = (n+1 + (A 1))(xn+1 x) (n + (A 1))(xn x) = n (xn x),
donde n = (n+1 + (A 1))(n + A) (n + (A 1)) (A 1)2 6= 0.

52

UMU Mtodos Numricos, 2007-2008


(xn )2
n (xn x)2 (n + (A 1))2 (xn x)2
=
=
2 xn
n (xn x)
n (xn x) (n + (A 1))2 (xn x)
.
=
n

(v) x
n x = (xn x)

(vi)

(A 1)2 (A 1)2
x
n x
n (n + (A 1))2

= 0.
=
xn x
n
(A 1)2


Las hiptesis del teorema anterior se cumplen para iteraciones funcionales


xn = f (xn1 )
que convergen hacia un punto fijo atractor x, |A| = |f 0 (x)| < 1.
El algoritmo correspondiente a la aceleracin de Aitken para iteraciones de punto fijo es el
siguiente. En recuadros grises con texto en blanco tenis las modificaciones al algoritmo de punto
fijo:

Algoritmo 2.8

Iteracin de punto fijo con Aceleracin de Aitken

Datos de entrada:Funcin f ; x0 R; precision R; nmaxiter Z


Datos de salida: solucin x (f (x) = x) o mensaje de error
Variables:
xx = x0 // los puntos de la rbita.
f x = f (xx); // el siguiente punto de la rbita f.
f f x; // para el siguiente punto de la rbita f(fx).
xxacelerado; // para guardar los terminos de la iteracin acelerada por Aitken.
Fujo del programa:
for(k=1;k<=nmaxiter;k++){
if(|xx f x| < precision){

Parada: Punto fijo en xx }

f f x = f (f x);
xxacelerado = xx ((f x xx) (f x xx))/(f f x 2 f x + xx);
if(|xxacelerado f (xxacelerado)| < precision){
Parada: Punto fijo en xxacelerado }
xx = f x;
f x = f f x;
// el siguiente punto de la rbita f
}
Parada: Error: No hay convergencia en nmaxiter iteraciones

Ejemplo 2.6.2 (vanse los ejemplos 5 y 6 del paquete algoritmosIteraciones) La funcin g(x) = 1.6 + 0.99 cos x es contractiva y tiene un nico punto fijo.
La iteracin de punto fijo para g, con inicio en x0 = 1.5707963267948966 proporciona una
aproximacin al punto fijo x 1.585521893915304 en 560 iteraciones (x x560 ). La derivada

Algoritmos-Iteraciones

53

de g en el punto fijo, g 0 (x) = 0.9898926649877118, tiene valor absoluto menor pero prximo a
1. Esto confirma que el punto fijo es un atractor y que la convergencia no es de las ms rpidas.
Si aceleramos la convergencia de la iteracin de punto fijo iniciada en el mismo punto x0 ,
el mtodo de Aitken proporciona la aproximacin al punto fijo x 1.585471801571905 en 476
pasos.
Si consideramos la funcin f (x) = 0.25ex analizada en los ejemplos 2.4.11 y 2.4.12, y hacemos la iteracin de punto fijo para f , con inicio x0 = 0.1 aproximamos el punto fijo x =
0.35740295618138784 en 33 pasos. Observad que en este ejemplo f 0 (x) = 0.3574029561813885
es mucho menor que en el caso de la funcin anterior y que ahora la convergencia es mucho ms
rpida.
Si aceleramos la convergencia con el mtodo de Aitken, iniciando tambin en x0 = 0.1 aproximamos el mismo punto fijo en 15 pasos.
Cuanto menor es el tamao de la derivada en el punto fijo, ms rpido convergen las iteradas
de punto fijo y sus aceleradas de Aitken!

2.6.1.

Mtodo de Steffensen

Si consideramos una iteracin de punto fijo, xn = f (xn1 ), que suponemos convergente


hacia un punto fijo atractor x, y la aceleramos por el mtodo de Aitken, debemos esperar que
la sucesin acelerada x
n converja antes hacia x. Esta esperanza, nos permite suponer que el
trmino
(f (xn ) xn )2
y=x
n = xn
f (f (xn )) 2f (xn ) + xn
se aproxima a x mejor que xn . Con esta idea en mente, Porqu seguir iterando f en xn en lugar
de considerar iterar las evaluaciones de y?
Eso es justo lo que propone el Mtodo de Steffensen:
dada yn una aproximacin a un punto fijo x de f ,
definimos
yn+1 = yn

(f (yn ) yn )2
.
f (f (yn )) 2f (yn ) + yn

Teorema 2.6.3 Sea f : [a, b] [a, b] una funcin de clase C 2 en [a,b], con un punto fijo en
x (a, b) (f (x) = x), f 0 (x) 6= 1. Entonces, existe > 0 tal que [x , x + ] (a, b) y para
cualquier y0 [x , x + ] el algoritmo de Steffensen
yn+1 = yn

(f (yn ) yn )2
,
f (f (yn )) 2f (yn ) + yn

est bien definido y converge hacia x con convergencia de orden al menos 2.


Demostracin:
Ideas que intervienen
Escribir yn+1 x en trminos de yn x utilizando el desarrollo de Taylor de f en x.

54

UMU Mtodos Numricos, 2007-2008


Utilizar la notacin z(x) = o((x x)k ) para designar a los infinitsimos lmxx
y simplificar las expresiones.
0

z(x)
(xx)k

= 0,
0

Recordar que o((x x)k ) + o((x x)k ) = o((x x)mn{k,k } , (x x)k o((x x)k ) =
0
o((x x)k+k , etc.
(i) f (x) = x + f 0 (x)(x x) +

f 00 (x)
2 (x

x)2 + o((x x)2 );

f (x) x = f 0 (x)(x x) +

f 00 (x)
2 (x

x)2 + o((x x)2 )

(f (x) x)2 = f 0 (x)2 (x x)2 + o((x x)2 )


(ii) f x := f (x) x = (f 0 (x) 1)(x x) +

f 00 (x)
2 (x

x)2 + o((x x)2 );

(f x)2 = (f (x) x)2 = (f 0 (x) 1)2 (x x)2 + (f 0 (x) 1)f 00 (x)(x x)3 + o((x x)3 ;
00

(iii) f (f (x)) f (x) = (f 0 (x) 1)(f (x) x) + f 2(x) (f (x) x)2 + o((f (x) x)2 ) =
00
= (f 0 (x) 1)(f (x) x) + f 2(x) (f (x) x)2 + o((x x)2 ) ;
(iv) Restando (III-II) tenemos:
2 f x := f (f (x)) 2f (x) + x = (f 0 (x) 1)(f (x) x) +
f 00 (x)
2
2
2
2 [(f (x) x) (x x) ] + o((x x) ) =
00
(f 0 (x) 1)2 (x x) + (f 0 (x) 1) f 2(x) (x x)2 +
f 00 (x)
2
2
2
0
2 (f (x) 1)(x x) + o((x x) ) =
00
(f 0 (x) 1)2 (x x) + f 2(x) (f 0 (x) 1)(1 + (f 0 (x) + 1))(x x)2 + o((x x)2 );
(v) Consideramos g(x) = x
g(x) x =
=

(f (x)x)2
f (f (x))2f (x)+x .

2 f x(x x) (f x)2
=
2 f x
f 00 (x) 0
0
3
3
2 (f (x) 1)f (x)(x x) + o((x x) )
00

(f 0 (x) 1)2 (x x) + f 2(x) (f 0 (x) 1)(1 + (f 0 (x) + 1))(x x)2 + o((x x)2 )
f 00 (x) 0
2
2
2 f (x)(x x) + o((x x) )
=
;
00
(f 0 (x) 1) + f 2(x) (1 + (f 0 (x) + 1))(x x) + o(x x)

(vi)
g(x) x
lm
= lm
xx (x x)2
xx (f 0 (x) 1) +

f 00 (x) 0
o((xx)2 )
2 f (x) + (xx)2
f 00 (x)
0
2 (1 + (f (x) + 1))(x

x) + o(x x)

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


El algoritmo correspondiente a la aceleracin de Steffensen para iteraciones de punto fijo es


el siguiente. En recuadros grises con texto en blanco tenis las modificaciones al algoritmo de
punto fijo:

Algoritmos-Iteraciones

Algoritmo 2.9

55

Iteracin de punto fijo con Aceleracin de Steffensen

Datos de entrada:Funcin f ; x0 R; precision R; nmaxiter Z


Datos de salida: solucin x (f (x) = x) o mensaje de error
Variables:
xx = x0 // los puntos de la rbita.
f x; // el siguiente punto de la rbita f.
f f x; // para el siguiente punto de la rbita f(fx).
Fujo del programa:
for(k=1;k<=nmaxiter;k++){
f x = f (xx);
f f x = f (f x);
if(|xx f x| < precision){

Parada: Punto fijo en xx }

xx = xx ((f x xx) (f x xx))/(f f x 2 f x + xx);


}
Parada: Error: No hay convergencia en nmaxiter iteraciones

Notas:
Observad que la hiptesis del teorema anterior, f 0 (x) 6= 1, es ms general que pedir que el
punto fijo x sea un atractor, tambin puede darse en repulsores.
La diferencia fundamental entre el mtodo de aceleracin de Aitken y el mtodo de Steffensen aplicados a una iteracin de punto fijo, radica en que en el mtodo de Aitken la
aceleracin se produce sobre la sucesin de iteradas que hay que construir de entrada,
mientras que en el mtodo de Steffensen se construye directamente la sucesin acelerada.
Si las iteradas de punto fijo convergen linealmente, la acelerada de Steffensen lo hace al
menos cuadrticamente. Si las iteradas de punto fijo convergen con convergencia de orden
p > 1, las de Steffensen convergen con convergencia de orden al menos 2p 1 [1]
Ejemplo 2.6.4 La funcin f (x) = 0.25ex considerada en los ejemplos 2.4.11, 2.4.12 y 2.6.2 ,
tiene dos puntos fijos, uno atractor y el otro repulsor.
Recordad que la iteracin de punto fijo para f , con inicio x0 = 0.1 aproximamos el punto fijo
x = 0.35740295618138784 en 33 pasos, y que acelerando con Aitken este nmero de iteraciones
se reduce a 15 pasos.
El mtodo de Steffensen con inicio en el mismo x0 = 0.1 proporciona la aproximacin a
x = 0.35740295618138895 en slo 5 pasos.
Si consideramos la funcin g(x) = f (x) x, que se anula en los puntos fijos de f , podemos
comparar el mtodo de Steffensen de bsqueda de puntos fijos de f con el de Newton para
localizar los ceros de f .
La iteracin de Newton para g, con inicio en x0 = 0.1 proporciona x = 0.3573508313620166
en 3 pasos.
El otro cero de g se puede encontrar haciendo la iteracin de Newton con inicio en x0 = 2.1,
obteniendo x = 2.153299834108639 en 3 iteraciones.
Si hacemos la iteracin de Steffensen de f con inicio en x0 = 2.1 obtenemos el punto fijo
repulsor x = 2.1532923641103503 en 5 pasos.

56

UMU Mtodos Numricos, 2007-2008

Observad que el mtodo de Steffensen tambin permite localizar puntos fijos repulsores, tal
y como sealbamos antes.

2.7.

Actividades complementarias del captulo

Los documentos se pueden descargar de la Zona Compartida de SUMA.


Paquete de java: algoritmosIteraciones, con los mtodos y los ejemplos de la unidad.
Hoja de problemas no 2 (22/10/2007)
Practica no 3

Bibliografa
[1] A. Delshams A. Aubanell, A. Benseny, tiles bsicos de clculo numrico, Ed. Labor - Univ.
Aut. de Barcelona, Barcelona, 1993.
[2] R.L. Burden and J.D. Faires, Anlisis numrico, 7a edicin, Thomson-Learning, Mexico,
2002.
[3] D. Kincaid and W. Cheney, Anlisis numrico, Ed. Addison-Wesley Iberoamericana,
Reading, USA, 1994.

Captulo

#
#

Introduccin y
complementos de anlisis
matricial.
Interrogantes centrales del captulo

Repaso de conceptos bsicos del lgebra matricial.


Triangulacin y diagonalizacin de matrices

Propiedades de las matrices simtricas y hermitianas. Radio espectral.

Cocientes de Rayleigh.
Normas matriciales.
Condicionamiento de un sistema lineal
Un problema de anlisis numrico matricial.

"
"



Destrezas a adquirir en el captulo

!
!



Conocer y manejar distintas normas matriciales. Distinguir la mejor norma

matricial.
Saber denir el nmero de condicin de una matriz o de un sistema lineal
y saber calcularlo.
Conocer problemas modelizados por sistemas lineales de dimensin grande.







Este es el primer captulo de los cuatro dedicados al anlisis numrico matricial que aborda
las dos cuestiones siguientes

La resolucin de sistemas de ecuaciones lineales: Dada una matriz no singular A y un


vector b, encontrar el vector solucin x del sistema lineal
Ax = b.

El clculo de valores propios y vectores propios de una matriz: Dada una matriz cuadrada
A, encontrar todos sus valores propios, o solo algunos signicativos, y eventualmente los
vectores propios correspondientes. En otras palabras, encontrar vectores p 6= 0 y escalares
R o C, tales que
Ap = p.

60

UMU Mtodos Numricos, 2007-2008

En los prximos tres captulos vamos a estudiar mtodos directos y mtodos iterativos para
la resolucin de sistemas lineales y mtodos de clculo de valores y vectores propios, pero antes
vamos a detenernos en observar un modelo que origina un sistema de ecuaciones lineales con
el objetivo de que nos sirva de ejemplo del tipo de sistemas que pueden aparecer a la hora de
buscar soluciones a problemas reales concretos.
Por otra parte, para poder establecer criterios que nos permitan comparar entre los distintos
mtodos, y analizar el condicionamiento y la estabilidad de los mismos, describiremos distancias
entre matrices y aprenderemos a calcularlas.
Desarrollo de los contenidos fundamentales

Repaso de conceptos bsicos de lgebra matricial


Origen de los problemas del anlisis numrico matricial.
Normas matriciales. Normas subordinadas y sus propiedades.
Anlisis del error y condicionamiento.
Temporalizacin: 7HTe + 1HPb + (Al nalizar, primer examen parcial) 3HEv = 11 H

3.1.

Repaso de conceptos bsicos de los sistemas de ecuacion es y


el lgebra matricial.

3.1.1.

Sistemas de Ecuaciones

Un sistema de m ecuaciones lineales (simultneas) con n incgnitas es un conjunto de m


ecuaciones con n incgnitas que se van a considerar relacionadas por la existencia de soluciones
comunes.
Formalmente, se suele representar as:

a11 x1 + a12 x2 + + a1n xn = b1

a21 x1 + a22 x2 + + a2n xn = b2

..
..
..
..

.
.
.
.

a x + a x + + a x = b
m1 1
m2 2
mn n
m
donde los coecientes, aij , y los trminos independientes, bi , son escalares del cuerpo
K (R o C). El primer ndice, i, indica la ecuacin en la que se encuentran los coecientes y los
trminos independientes (1 i m); mientras que el ndice, j , de los coecientes indica la
incgnita, xj , a la que multiplican (1 j n).
Las soluciones del sistema de ecuaciones son las listas de escalares (x1 , . . . , xn ) que son soluciones de todas las ecuaciones al mismo tiempo (simultneamente).

Introduccin

y complementos de anlisis matricial.

61

Si un sistema de ecuaciones tiene soluciones se llama compatible y si no las tiene, incompatible. Un sistema compatible con una nica solucin se llama determinado y si tiene ms
soluciones se llama indeterminado.
Un sistema de ecuaciones donde todos los trminos independientes son nulos (b1 = =
bm = 0) se llama homogneo y tiene siempre soluciones: al menos la solucin trivial x1 = =
xn = 0.
Se dice que dos sistemas de ecuaciones son equivalentes si tienen el mismo conjunto de
soluciones. Recordad las siguientes operaciones que se utilizan para transformar los sistemas de
ecuaciones en otros equivalentes que sean ms fciles de resolver:
Estas operaciones elementales para un sistema de ecuaciones son:
(i) Intercambiar dos ecuaciones de posicin.
(ii) Multiplicar una ecuacin por un escalar no nulo.
(iii) Sumar a una ecuacin un mltiplo escalar de otra ecuacin.

Teorema 3.1.1 Al aplicar una operacin elemental a un sistema, el sistema resultante es equi-

valente al original.

En el captulo siguiente utilizaremos operaciones elementales para recordar y describir el


mtodo de Gauss de resolucin de sistemas de ecuaciones por eliminacin.

3.1.2.

Matrices

La informacin de que disponemos acerca de un sistema de ecuaciones la proporcionan los


coecientes y los trminos independientes, que podemos ordenar as:

a11 a12 a1n b1

a21 a22 a2n b2


.
.. . . .. ..
.
. . .
.
.

am1 am2 amn bm

Estas ordenaciones rectangulares se llaman matrices y estn relacionadas con otros muchos
problemas, adems de con los sistemas de ecuaciones.
Si los elementos aij K con 1 i m y 1 j n, se llama matriz de m las y n
columnas o matriz m n, a

a11 a12 a1n

a21 a22 a2n


.
,
.. . . ..
.
. .
.
.

am1 am2 amn

Tambin se suele decir que es una matriz de tipo (m, n), y se representa de forma abreviada
mediante su termino general aij ,
(aij )1im .
1jn

62

UMU Mtodos Numricos, 2007-2008

De forma ms breve, tambin se utiliza una letra como por ejemplo


A = (aij ),

si se sobrentiende el recorrido de los ndices. Los ndices de cada trmino aij nos dicen donde
est colocado; el primero, i, indica la la, y el segundo, j , la columna. A veces, interesar indicar
el trmino general de la matriz A en funcin de los ndices en la forma
A(i, j) = aij .

El conjunto de las matrices m n de escalares se suele representar por Mmn (K), o simplemente por Mmn si el cuerpo K est claro.
Si el nmero de las y el de columnas coinciden, m = n, se dice que la matriz es cuadrada,
y se denota por Mn al conjunto de las matrices cuadradas.
Si m = 1 tenemos las matrices la, y si n = 1, las matrices columna. A los conjuntos
correspondientes se les suele denotar por Kn o Km (aunque si fuese necesario distinguir entre
las o columnas se debe utilizar la notacin M1n o Mm1 ) al identicarlos con los productos
cartesianos de K consigo mismos, que son los conjuntos formados por las listas ordenadas de
escalares dispuestas en las o en columnas.
Dada una matriz M , si consideramos solamente y en el mismo orden, los elementos que estn
en la interseccin de algunas las y columnas apropiadas se obtiene una submatriz.

Ejemplo 3.1.2 Consideremos la matriz

1 0 2

M = 0 1 2 1 .
3 2 0 1

Si tachamos la segunda la y las columnas segunda y cuarta obtenemos la submatriz:


0

M =

1 2
3 0

Al contrario, si se pegan matrices de tamaos convenientes se puede obtener otra de tamao


mayor. Dicho al revs, la matriz grande se puede considerar descompuesta en bloques:
M=

A B
C D

Ejemplo 3.1.3 Si

A = ( 01 10 ), B = ( 22 ), C = ( 3 3 ) y D = (4), podemos obtener una nueva


matriz (2 + 1) (2 + 1) descompuesta en bloques por

!
0 1 2
0 1 2
A B

= 1 0 2 = 1 0 2 .
M=
C D
3 3 4
3 3 4

A veces es conveniente pensar en una matriz M descompuesta en bloques formados por cada
una de sus las, en otras palabras, pensar en M como una columna de las. O pensar en M
como en una la de columnas. En este sentido se utiliza normalmente la notacin :

Mi = (ai1 , . . . , ain ) Kn y M j =

a1j

..
.

amj

Introduccin

y complementos de anlisis matricial.

63

para los vectores la y columna respectivamente, representando

M1

M = ... y M = M 1 , . . . , M n .
Mm

Otro caso muy frecuente es el de la matriz del sistema que describamos al principio. A la
submatriz formada por las n primeras columnas se le llama matriz de coecientes

a11 a12 a1n

a21 a22 a2n

,
A= .
.. . . ..
.
. .
.
.

am1 am2 amn

y la submatriz dada por la ltima columna

b1

b2

B=
..
.
bm

se le llama columna de trminos independientes. La matriz completa (A | B) se le llama


matriz ampliada. Cuando coinciden el nmero de ecuaciones y l de incgnitas, la matriz de
coecientes es una matriz cuadrada.

Ejemplo 3.1.4 La matriz ampliada del sistema


(

2x y + z = 1
x
+ 2z =
3

es 12 10 21 13 . Su columna de trminos independientes es


representada por (2, 1, 1, 1).


3.1.3.

1
3

y la primera ecuacin est

Espacios vectoriales. Aplicaciones lineales

Sea E un espacio vectorial de dimensin n sobre el cuerpo K (R o C). Una base de E es


un conjunto {v1 , . . . , vn }, de n vectores linealmente independientes de E y todo vector x E
admite una descomposicin nica de la forma
x=

n
X

xi vi .

i=1

Cuando la base est jada sin ambigedad, se identican cada vector x con sus coordenadas
{x1 , . . . , xn } con respecto a esta base. As se identican E y Kn .

64

UMU Mtodos Numricos, 2007-2008


En notacin matricial representaremos siempre a x por el vector columna

x1

x = ... ,
xn

y denotaremos por por xt y x a los vectores la


xt = (x1 , . . . , xn )

x = (x1 , . . . , xn ),

donde z es complejo conjugado de z C. El vector la xt es el vector traspuesto del vector


columna x y x es el vector adjunto de x.
Si K = R, el producto escalar eucldeo en E se dene por
t

(x, y) = x y = y x =

n
X

xi yi ,

n
X

xi yi .

i=1

y cuando K = C el producto escalar hermitiano en E se dene por

(x, y) = y x =

x y

i=1

Asociada al producto escalar o hermitiano se tiene la norma


v
u n
p
uX
kxk2 = (x, x) = t
|xi |2 ,
i=1

que dene la distancia euclidea en E . Junto a esta nocin de distancia tambin introduce la
nocin de ortogonalidad (ngulo), x e y se dicen ortogonales cuando (x, y) = 0. Observad que
en relacin a este producto escalar, los vectores de la base jada vi son dos a dos ortogonales y
todos tienen norma 1. Las bases formadas por vectores ortogonales de norma 1 se denominan
bases ortonormales con respecto al producto escalar.
Sean f : V W una aplicacin lineal, y {v1 , . . . , vn }, {w1 , . . . , wm } bases de V y W respectivamente. Los n vectores f (v1 ), . . . , f (vn ) estn en W por lo que pueden escribirse de forma
nica como combinacin lineal de la base {w1 , . . . , wm }:
f (v1 ) = a11 w1 + a21 w2 + + am1 wm

f (v2 ) = a12 w1 + a22 w2 + + am2 wm


......

...

f (vn ) = a1n w1 + a2n w2 + + amn wm

Se obtienen as m n escalares aij (i = 1, . . . , m, j = 1, . . . , n) en los que los subndices (ij )


expresan que se trata de la i-sima (primer ndice) coordenada de la imagen del j -simo (segundo
ndice) vector de la base de V . Estos m n escalares determinan una matriz m n

a11
a1n

M = (aij ) = . . . . . . . .
am1
amn

Introduccin

y complementos de anlisis matricial.

65

que se llama matriz asociada a la aplicacin lineal f : V W con!respecto de las bases


a1j

{v1 , . . . , vn }, {w1 , . . . , wm }. Ntese que la columna j de M ,

Mj

..
.

, est formada por las

amj

coordenadas del f (vj ) en la base {w1 , . . . , wm }.

Ejemplo 3.1.5 Sea A = (aij ) una matriz m n sobre un cuerpo K. Denimos una aplicacin
fA : Kn Km como sigue: dado un vector (x1 , . . . , xn ) Kn ,
P

n
j=1

fA (x1 , . . . , xn ) =

a1j xj ,

Pn

j=1 a2j xj , . . . ,


a
x
,
.
mj
j
j=1

Pn

la aplicacin fA as denida es lineal y nos referiremos a ella como la aplicacin lineal asociada
a la matriz A. Evidentemente la matriz asociada a la aplicacin lineal fA respecto de las bases
cannicas de Kn yKm es precisamente A.
Trataremos a continuacin el problema de obtener la matriz asociada a una composicin de
aplicaciones lineales cuando se conocen las matrices asociadas a cada uno de los factores. Para
ello, supongamos que tenemos dos aplicaciones lineales g : U V y f : V W tales que
el espacio nal de la primera coincide con el espacio inicial de la segunda. Fijadas las bases
{u1 , . . . , up } de U , {v1 , . . . , vn } de V y {w1 , . . . , wm } de W , llamamos N = (bhk ) a la matriz
n p asociada a g , y M = (aij ) a la matriz m n asociada a f . La aplicacin compuesta
f g : U W tambin es lineal y con respecto a las bases {u1 , . . . , up } de U y {w1 , . . . , wm } de
W tendr asociada una matriz m p que denotaremos P = (crs ), y vamos a tratar de encontrar
el modo de relacionar la matriz P de f g con las matrices N , M de g y f respectivamente.
Comencemos jando un vector us de la base de U . Para este vector se tiene
(f g)(us ) = c1s w1 + + cms wm

(1)

g(us ) = b1s v1 + + bns vn

(2)

y
Adems se tienen las relaciones
f (vj ) = a1j w1 + + amj wm

Si en ambos miembros de (2) se toma la imagen por f resulta


f (g(us )) = b1s f (v1 ) + + bns f (vn )

y sustituyendo la expresin (3) resulta


f (g(us )) = b1s (a11 w1 + + am1 wm )
+ b2s (a12 w1 + + am2 wm )
+

+ bns (a1n w1 + + amn wm )

= (b1s a11 + b2s a12 + + bns a1n )w1

+ (b1s a21 + b2s a22 + + bns a2n )w2

+ (b1s am1 + b2s am2 + + bns amn )wm .

(3)

66

UMU Mtodos Numricos, 2007-2008


f (g(us )) = (f g)(us ) en la
por (1). Como las coordenadas

Los parntesis de esta ltima expresin son las coordenadas de

base {w1 , . . . , wm } de W , y estas coordenadas son (c1s , . . . , cms

de un vector con respecto a determinada base son nicas, tenemos las igualdades

crs = b1s ar1 + b2s ar2 + + bns arn =

n
X

ark bks

(4)

k=1

(r = 1, . . . , m), y estas igualdades son vlidas cualquiera que sea us (s = 1, . . . , p).


Hemos obtenido, por tanto, una frmula que nos permite calcular la matriz P a partir de las
matices N y M . Esta frmula (4) se suele resumir diciendo que el elemento que ocupa la la
r-sima y la columna s-sima de P se obtiene multiplicando la la r-sima de M por la columna
s-sima de N . De acuerdo con la denicin que estableceremos a continuacin diremos que la
matriz P de f g es el producto M N de la matriz de f por la matriz de g .
Dada una matriz m n, M = (aij ), y una matriz n p, N = (bhk ), llamamos matriz
producto de M por N y lo representaremos por M N a la matriz m p cuyo elemento crs es
crs =

n
X

arn bns .

k=1

de

Es importante hacer notar que para que el producto M N


M ha de coincidir con el nmero de las de N .

est denido el nmero de columnas

Observar que con esta notacin, si identicamos los vectores x Kn con los vectores columna,
para cada matriz cuadrada fA (x) = Ax.
Dado el sistema de ecuaciones

a11 x1 + a12 x2 + + a1n xn = b1

a21 x1 + a22 x2 + + a2n xn = b2

..
..
..
..

.
.
.
.

a x + a x + + a x = b
m1 1
m2 2
mn n
m

si A es la matriz de coecientes y b es el vector columna de los trminos independientes, podemos


escribirlo en forma matricial como
Ax = b,

o utilizando operadores lineales, en la forma


fA (x) = b.

Introduccin

y complementos de anlisis matricial.

67

Algunas matrices notables


Dada una matriz M Mmn (C), se dene la matriz adjunta M Mnm de manera que
(M u, v)m = (u, M v)n para todo u Cn y v Cm .

lo que implica que (M )ij = aji . M es la matriz obtenida al cambiar las por columnas en A
y tomar conjugados.
La traspuesta de la matriz A Mmn (R) es la matriz At Mnm denida de forma nica

por

(M u, v)m = (u, M t v)n

para todo

y en consecuencia (M t )ij = Mji .

u Rn y v Rm ,

Ejercicio 3.1.1 Comprobad que (AB)t = B t At y que (AB) = B A .


De ahora en adelante y salvo que digamos lo contrario slo vamos a considerar matrices
cuadradas A Mn (K) := Mnn (K). El espacio de las matrices cuadradas con la suma

y el producto de matrices tiene estructura de anillo no conmutativo con elemento


unidad.
La matriz unidad con respecto al producto es I Mn (K), la matriz I = (ij ) que tiene 1 en
todos los trminos de la diagonal principal y 0 fuera de la diagonal.
AI = IA para toda A Mn (K).

Una matriz A se dice inversible cuando existe A1 tal que AA1 = A1 A = I . En caso
contrario se dice que la matriz es singular.
El clculo de la matriz inversa de una matriz inversible A se puede identicar con el problema
de resolver los sistemas lineales Ax = ej donde ej es la base cannica de Kn , pues sus soluciones
son los vectores columna de A1 . As, por ejemplo, cuando en el siguiente captulo escribamos
el algoritmo de Gauss de resolucin de sistemas, podremos modicarlo para invertir matrices
fcilmente.

Ejercicio 3.1.2 Comprobad que si A y B son inversibles, entonces


(AB)1 = B 1 A1 , (At )1 = (A1 )t ), (A )1 = (A1 ) ).

Una matriz A se dice

simtrica, si A Mn (R) y A = At .
hermitiana, si A = A .

ortogonal, si A Mn (R) y A1 = At , e.d. AAt = At A = I .


unitaria, si A1 = A , e.d. AA = A A = I .
normal, si AA = A A.
Ejercicio 3.1.3 Observad que una matriz es ortogonal-unitaria si, y solo si, los vectores la
(resp vectores columna) forman una base ortonormal de Kn .

68

UMU Mtodos Numricos, 2007-2008


Una matriz A se dice diagonal cuando aij = 0 para i 6= j .
La traza de una matriz A = (aij ) est denida por
tr(A) =

n
X

aij .

i=1

El determinante de una matriz A est denido por


det(A) =

a(1)1 a(2)2 ...a(n)n ,

Gn

donde Gn es el grupo de las permutaciones de {1, 2, . . . , n} y es la signatura de la permutacin.


Recordad que det(AB) = det(BA) = det(A)det(B).
Recordad que un sistema de ecuaciones Ax = b es compatible determinado, si y slo si, A es
inversible, si y slo si det(A) 6= 0.

Ejercicio 3.1.4 (Regla de Cramer) Si

A = (aij ) es una matriz no singular n n y b =


(b1 , ..., bn )t Kn , la solucin al sistema lineal Ax = b tiene por coordenadas
det(Cj )
,
xj =
det(A)

donde Cj = (crs ) crs

(
ars
=
br

si s 6= j
si s = j

Los valores propios de una matriz A son los complejos C para los que existen vectores
no nulos p tales que Ap = p.Tambin se dice que p es un vector propio de . Los valores propios
de A son los ceros del polinomio caracterstico
pA () = det(A I)

de la matriz A.
El espectro de la matriz A es el conjunto de los vectores propios
(A) = {1 , 2 , . . . , n }.

El radio espectral de A se dene como


(A) = max{|1 |, |2 |, . . . , |n |}.

Recordad que tr(A) =

Pn

i=1 i

y que det(A) =

Ejercicio 3.1.5 Comprobad que si

i=1 i .

Qn

A es simtrica o hermitiana, entonces todos sus valores

propios son nmeros reales.

Comprobad tambin que si A es ortogonal o unitaria, entonces todos sus valores propios
tienen mdulo 1.

Introduccin
3.1.4.

y complementos de anlisis matricial.

69

Reduccin de matrices

Sea Ax = b un sistema de ecuaciones, sea una matriz inversible P (un cambio de base en Kn )

y B = P 1 AP . Si u es una solucin del sistema de ecuaciones Bu = P 1 b, entonces x = P u es


solucin del sistema Ax = b, en efecto:
P 1 AP u = P 1 b AP u = b x = P u.

Reducir una matriz A consiste en encontrar una matriz inversible P tal que P 1 AP sea tan
simple como sea posible.
Los casos ms favorables en este sentido se tienen cuando P 1 AP es una matriz diagonal o
una matriz escalonada (triangular). En estos casos los elementos de la diagonal son los valores
propios de A y la resolucin de los sistemas de ecuaciones es muy simple.
Cuando existe P tal que P 1 AP es diagonal, se dice que A es diagonalizable (en este caso
los vectores columna de P forman una base formada por vectores propios de A).
Aunque no todas las matrices son diagonalizables (probad con ( 10 11 )), siempre se puede encontrar un buen cambio de base que las transforma en matrices triangulares:

Teorema 3.1.6
(i) Dada

una matriz cuadrada A, existe una matriz unitaria U tal que la matriz U 1 AU es
una matriz triangular superior, i.e. U 1 AU (i, j) = 0 si i > j .

(ii) Dada

una matriz normal A, existe una matriz unitaria U tal que la matriz U 1 AU es una
matriz diagonal.

(iii) Dada

una matriz simtrica A, existe una matriz ortogonal O tal que la matriz O1 AO es
una matriz diagonal.

Demostracin:

[Prueba completa en Ciarlet [3] seccin 1.2]

Ideas que intervienen

(1) Primero se prueba por induccin la existencia de un cambio de base (no necesariamente
ortonormal) que transforma la matriz A en una triangular.
Ortonormalizando la base anterior con el mtodo de Gram-Schmidt se obtiene el cambio
de base ortonormal que produce la matriz unitaria buscada.
(2) T = U 1 AU = U AU . Si A es normal (A A = AA ), T tambin es normal:
T T = U A U U AU = U A AU

Si T es triangular superior y normal, entonces T es diagonal.


(3) Si A es simtrica, los pasos de la prueba de (1) y (2) se pueden hacer sin salir de R,
por lo tanto cambiando adjuntas por transpuestas y unitaria por ortogonal se obtiene la
prueba.


70

UMU Mtodos Numricos, 2007-2008

Se

z A

denominan valores singulares de una matri

a las races cuadradas positivas de los

z hermitiana
(o
si A es real) que siempre son positivos
(comprobadlo como ejercicio). Los valores singulares son todos > 0 si A es no singular. En
efecto:

valores propios de la matri

A A

At A

Ap = 0 A Ap = 0 p A Ap = 0 (Ap) (Ap) = 0 Ap = 0.

Teorema 3.1.7 Si

A es una matriz real cuadrada, existen dos matrices ortogonales U y V ,


tales que
= diagonal(i ). Y si A es una matriz compleja cuadrada, existen dos matrices
unitarias U y V , tales que U t AV = diagonal(i ).
U t AV

En los dos casos los nmeros i 0 son los valores singulares de A.


Demostracin:

[Prueba completa en Ciarlet [3] seccin 1.2]

Ideas que intervienen

Diagonalizar la matriz normal A A, haciendo


V A AV = diagonal(2i )

con V unitaria/ortogonal.
si fj es el vector columna de AV y fj 6= 0 ponemos uj =

1
j fj .

Los uj as denidos tienen norma 1 y son 2-2 ortogonales.


Se completa la lista uj (en los casos fj = 0) con vectores ortonormales para tener una base
ortonormal.
la matriz U con vectores columna uj es unitaria/ortogonal y cumple U t AV = diagonal(i ).


3.1.5.

Cocientes de Rayleigh. Matrices simtricas y hermit ianas

En este apartado vamos a enunciar los resultados para matrices complejas hermitianas aunque tambin se aplican a las matrices reales simtricas simplemente sustituyendo los adjetivos
hermitiana, unitaria, adjunta y compleja por simtrica, ortogonal, traspuesta
y real.

Para caracterizar los valores propios de una matriz hermitiana (recordad que todos son n) vamos a hacer uso de la siguiente denicin

meros reales

Denicin 3.1.8 (Cocientes de Rayleigh) Sea

A una matriz cuadrada de dimensin n. El


cociente de Rayleigh de A es la aplicacin RA : C \ {0} C denida por
RA (v) =

(Av, v)
v Av
= .
(v, v)
v v

Si la matriz A es hermitiana, los cocientes de Rayleigh toman valores reales:


RA (v) =

(Av, v)
(v, Av)
(A v, v)
(Av, v)
=
=
=
= RA (v).
(v, v)
(v, v)
(v, v)
(v, v)

Introduccin y

complementos de anlisis matricial.

71

Observad tambin que RA toma los mismos valores en toda la semirecta denida por v :
RA (v) = RA

v
kvk2

Teorema 3.1.9 Sea A una matriz hermitiana de dimensin n, con valores propios
1 2 n ,

y con una base ortonormal de vectores propios p1 , ..., p2 , e.d. tales que
(pi , pj ) = ij , y Api = i pi .

Para cada k = 1, . . . , n sea Ek el subespacio generado por {p1 , p2 , ..., pk }, y denotemos por Sk
a la familia de todos los subespacios de Cn con dimensin k. Pongamos tambin E0 = {0} y

Sk = {E0 }.

Los valores propios de A admiten las siguientes caracterizaciones

(i)
(ii)
(iii)
(iv)
(v)

k = RA (pk ).
k = m
ax{RA (v) : v Ek \ {0}}.
k = mn{RA (v) : v Ek1 }.

k = mnESk m
ax{RA (v) : v E \ {0}}. (Courant-Fischer)
k = m
axESk1 mn{RA (v) : v E}. (Courant-Fischer)

Demostracin:

[Prueba completa en Ciarlet [3] seccin 1.3]

Ideas que intervienen

Considerar la matriz unitaria U

cuyos vectores columna son los pi , que diagonaliza A:

U AU = diag(i ) =: D.
 w1 
Poniendo v = U w, e.d. tomando w = ... el vector columna de las coordenadas de v
wn

con respecto a la base {p1 , ..., p2 }, se tiene

P
v AV
w U AU w
D
i |wi |2
P
RA (v) = =
.
=
=
|wi |2
V V
w U U w
w w

De la igualdad anterior se deducen (I), (II) y (III).

Las otras dos identidades se deducen de las tres primeras.




Como caso particular de este teorema se tiene que


1 = mn{RA (v) : kvk2 = 1} y n = max{RA (v) : kvk2 = 1}.

En la ltima seccin del captulo utilizaremos estas caracterizaciones para calcular nmeros
de condicin de sistemas lineales.
Una matriz hermitiana se dice  denida positiva (resp. positiva) si

(Av, v) = v Av > 0 (resp. (Av, v) = v Av 0)

para todo

v 6= 0.
1 > 0).

Una matriz hermitiana denida positiva tiene todos sus valores propios positivos (

72

UMU Mtodos Numricos, 2007-2008

3.2.

Origen de los problemas del anlisis numrico matricia l

Existen muchos problemas cuyas modelizaciones involucran la resolucin de sistemas lineales


o el clculo de valores y vectores propios de matrices.

Dentro de los mtodos numricos objeto de este curso algunas soluciones a problemas no
lineales pasan por aproximar el problema a uno lineal resolverlo y despus iterando el proceso
aproximarnos a la solucin.

Por

ejemplo esta es la situacin en el mtodo de Newton para

sistemas de ecuaciones no lineales.

Tambin aparecen en problemas de interpolacin por splines

o en problemas de aproximacin por mnimos cuadrados que tambin forman parte de este curso.

En el libro de Ciarlet [3]

hay todo un captulo (el captulo 3) dedicado a mostrar aproxi-

maciones lineales a las ecuaciones diferenciales en derivadas parciales de la Fsica (movimiento


armnico, ecuacin del calor, ...) que resultan al discretizar los problemas.

En todos los casos

aparecen sistemas con muchas ecuaciones y matrices de coecientes con aspectos particulares
donde los ceros aparecen dispuestos de forma especial (matrices tridiagonales o tridiagonales por
bloques).
En este apartado vamos a reproducir el mtodo de las diferencias nitas para una ecuacin
diferencial lineal de segundo grado en dimensin 1 con condiciones frontera [3, seccin 3.1]:
Consideremos dos funciones continuas en [0,1], c(x), f (x) C([0, 1]), y dos constantes a, b R.

Problema: Encontrar u(x) C 2 ([0, 1]) tal que


(

u00 (x) + c(x)u(x) = f (x),


u(0) = a, u(1) = b.

0 < x < 1,

Un ejemplo de una situacin fsica donde aparece este problema es el del estudio de los momentos
de la echa de una viga de longitud 1, estirada por a lo largo de su eje por la accin de
una fuerza (que determina c(x)) y sometida a la accin de una carga perpendicular f (x)dx en
cada punto de abcisa x.

u(x)

x + dx

f (x)dx

Para obtener aproximaciones de u(x) con el mtodo de las diferencias nitas, se consideran
particiones equidistribuidas de [0,1], 0 = x0 < x1 < ... < xN +1 = 1, xi = i/(N + 1), h =
xi xi1 = 1/(N + 1), y se hacen las aproximaciones:
(
i1 )
, i = 1, 2, ..., N + 1,
u0 (xi ) u(xi )u(x
h
u00 (xi )

u0 (xi+1 )u0 (xi )


h

u(xi+1 )2u(xi )+u(xi1 )


,
h2

i = 1, 2, ..., N.

Despus se trasladan estas aproximaciones a la ecuacin diferencial y se tiene el sistema de


N ecuaciones lineales

u(xi+1 ) 2u(xi ) + u(xi1 )


+ c(xi )u(xi ) = f (xi ),
h2

i = 1, ..., N,

con incgnitas ui = u(xi ), i = 1, ..., N (u(x0 ) = a y u(xN +1 ) = b son las condiciones frontera).
El sistema de ecuaciones se puede escribir

Introduccin y

complementos de anlisis matricial.

(c(x1 )h2 + 2)u1

u1

..

u2
+(c(x2 )h2 + 2)u2
..

uN 2

73

= h2 f (x1 ) + a
= h2 f (x2 )

u3
..

)h2

+(c(xN 1
+ 2)uN 1
uN
uN 1
+(c(xN )h2 + 2)uN

= h2 f (xN 1 )
= h2 f (xN ) + b

La matriz de coecientes tiene una forma muy particular, es de las llamadas tridiagonales
(sus coecientes son cero fuera de la diagonal principal de la matriz y de las dos diagonales
contiguas).

(c(x1 )h2 + 2)
1

1
(c(x2 )h2 + 2)
1

...
...
...

1
(c(xN 1 )h2 + 2) 1
1
(c(xN )h2 + 2)

En el captulo siguiente veremos mtodos para la resolucin de sistemas lineales con matrices

cientes tridiagonales como la de este modelo.


Observad que para tener buenas aproximaciones numricas a la solucin u(x) del problema
hay que considerar sistemas con muchas ecuaciones correspondientes a considerar muchos puntos.
Ejemplos como este muestran la necesidad de disponer de mtodos estables de resolucin de
ecuaciones capaces de trabajar con muchas ecuaciones y con ecuaciones con muchos ceros.

de coe

3.3.

Normas matriciales

Sea E un espacio vectorial sobre el cuerpo K.


E [0, +)
(i)
(ii)
(iii)

norma

sobre

que cumple las propiedades

kxk = 0

si, y slo si,

kx + yk kxk + kyk
kaxk = |a|kxk

al par

Una

(E, k k) se
E, y

distanca en

es una aplicacin

kk :

x = 0.
para todo

para todo

xE

x, y E
y todo

(desigualdad tringular).

a K.

le llama espacio vectorial normado.


la topologa asociada a esta mtrica.

La funcin d(x, y) = kx yk dene una

Todas las normas denidas en un espacio de dimensin nita E son equivalentes en el sentido
de que todas denen la misma topologa.

En Kn las tres normas ms utilizadas en la prctica son


kxk1 =
kxk2 =

Pn

i=1 |xi |,

pPn

2
i=1 |xi |

x x =

kxk = m
ax{|xi | : i = 1, ..., n}.

p
(x, x),

74

UMU Mtodos Numricos, 2007-2008

Donde xt = (x1 , x2 , ..., xn ).


Una

norma

denida en

matricial

Mn (K)

en el anillo de las matrices

que adems cumple

kABk kAkkBk,
(Mn (K) es isomorfo a

Kn

para todo

Mn (K)

de orden

es una norma

kk

A, B Mn (K).

, es una norma matricial la norma

Pn

i,j=1 |A(i, j)|? )

Dada una norma k k en


utilizando la identicacin de las matrices A con los operadores
lineales que denen fA , podemos considerar la norma de la aplicacin lineal fA para denir la
norma matricial subordinada a la norma k, k de Kn . Esta norma se dene por
kAk = sup{

Kn ,

kAk =

kAxk
kAxk
kAxk
: x Kn 0} = sup{
: kxk 1} = sup{
: kxk = 1}.
kxk
kxk
kxk

Observad que estas normas subordinadas tienen la propiedad siguiente:


kAxk kAkkxk para todo A Mn (K) y x Kn .

Lo que las hace interesantes para intentar medir la estabilidad y el condicionamiento de los
sistemas lineales Ax = b.
Existen normas matriciales que no estn subordinadas a ninguna norma de Kn como mostraremos ms adelante.

El siguiente teorema ofrece informacin sobre las normas subordinadas a las ms usuales

Teorema 3.3.1 Sea A = (aij ) Mn (C) una matriz cuadrada. Entonces





X
kAxk1
|aij |
kAk1 := sup
: kxk1 = 1 = max
j
kxk1
i


X
kAxk
: kxk = 1 = max
|aij |
kAk := sup
i
kxk
j


p
kAxk2
kAk2 := sup
: kxk1 = 1 = (A A) = kA k2
kxk2

La norma k k2 es invariante por transformaciones unitarias

U U = I kAk2 = kAU k2 = kU Ak2 = kU AU k2 .

Si adems la matriz A es normal (A A = AA ):


kAk2 = (A).

[Prueba completa en Ciarlet [3] seccin 1.4]


Ideas que intervienen

Demostracin:

Para las norma

rrespondientes.

Para la

k k1 y k k slo hay que utilizar la denicin y buscar los supremos co-

k k2 utilizaremos los cocientes de Rayleigh de la seccin anterior




(A Ax, x)
(Ax, Ax)
2
=
= RA A (x) : kxk1 = 1 .
kAk2 = sup
(x, x)
(x, x)

Introduccin y

complementos de anlisis matricial.

75

Observad que
La norma kAk2 coincide con el mayor valor singular de A.

Si U es una matriz unitaria/ortogonal se tiene kU k2 = 1.


Las normas k k1 y k k

Se puede probar (ver [3

son mucho ms fciles de calcular que la norma

que

k k2

la norma eucldea en Mn Kn , kAkE =


2

qP

2
i,j |aij |
n
es una norma matricial no subordinada a ninguna norma en K pero que sirve para acotar
la norma

k k2

, 1.4.4])

y es ms fcil de calcular que sta.

kAk2 kAkE

nkAk2 .

Si A es normal kAk2 = (A). Aunque esta identidad no es cierta para todas las matrices, el
radio espectral tiene la siguiente propiedad:
Teorema 3.3.2 Si A es una matriz cuadrada y k k es una norma matricial (subordinada o no),
entonces

(A) kAk.

En sentido recproco, si A es una matriz y > 0, existe una norma matricial subordinada tal
que
kAk (A) + .

[Prueba completa en Ciarlet [3] seccin 1.4]


Ideas que intervienen

Demostracin:

Sea p 6= 0 un vector propio del valor propio , || = (A), y sea q un vector tal que la
matriz pq t 6= 0. (Escribe la matriz!)
(A)kpq t k = kpq t k = k(Ap)q t k = kA(pq t )k kAk kpq t k,

y despejando queda (A) kAk.

Para la segunda parte, la idea es considerar el cambio de base que triangula la matriz

forma que casi-diagonalize la matriz A. La norma del supremo al hacer


este cambio de base ser la que proporciona la norma subordinada del enunciado.

perturbndolo de

En efecto, sea U la matriz unitaria tal que

U 1 AU =

u12
2

u13
u23
.

En la diagonal aparecen los valores propios de A.

...
...
.

n1

u1n
u2n

.
.

un1,n
n

76

UMU Mtodos Numricos, 2007-2008

Para > 0 se toma la matriz diagonal D = diag(1, , 2 , ..., n1 ). Entonces

(U D )1 A(U D ) =

Tomando

u12
2

sucientemente pequeo se tiene

por lo tanto (teorema 3.3.

1)

que

2 u13
u23
.

...
...
.

n1

Pn

j=i+1 |

ji u

ij |

n1 ut1n
n2 u2n

.
.

un1,n
n

<

para

i = 1, 2, .., n 1

k(U D )1 A(U D )k (A) + .

Si consideramos la norma kvk = kU D )1 vk , se tiene que la norma subordinada a sta

verica la propiedad buscada:

kAk = k(U D )1 A(U D )k (A) + .




Corolario 3.3.3

3.3.1.

(A) = nf{kAk : k k es una norma matricial }.

Convergencia de matrices

Recordad que en dimensin nita la convergencia de las sucesiones es independiente de la


norma considerada porque todas las normas son equivalentes.
El siguiente teorema caracteriza las sucesiones de potencias B k de matrices que convergen
a 0 en trminos del radio espectral. De este resultado deduciremos los mtodos iterativos de
resolucin de sistemas de ecuaciones lineales.

Teorema 3.3.4 Si

lentes:
(i)
(ii)

B es una matriz cuadrada, entonces las siguientes condiciones son equiva-

lmk B k = 0,
lmk B k v = 0, para todo vector v .

(iii)

(B) < 1.

(iv)

Existe una norma subordinada tal que kBk < 1.

[Prueba completa en Ciarlet [3] seccin 1.5]


Ideas que intervienen

Demostracin:

IV I . Basta con utilizar la desigualdad kB k k kBkk .


I II . Basta con utilizar la desigualdad kB k vk kB k k kvk, vlida

subordinadas

para las normas

Introduccin y

complementos de anlisis matricial.

77

II III . Sea un valor propio con || = (B) y p un vector propio asociado, entonces
B k p = ()p v 0, ()p 0, y || = (B) < 1.
III IV . Es el teorema 3.3.2 .


El

radio espectral tambin servir para medir la rapidez con que convergen los mtodos

iterativos.

Teorema 3.3.5 Para cualquier norma matricial se cumple


1

lm kB k k k = (B).

[Prueba completa en Ciarlet [3] seccin 1.5]


Ideas que intervienen
Demostracin:

(B) kBk y (B k ) = (B)k implica que


1

(B) = (B k ) k kB k k k .
Para

> 0,

la matriz

B =

Por el teorema anterior

y entonces

1
(B)+ B

lmk Bk = 0,

tiene radio espectral


por lo tanto para
1

(B ) < 1.

cientemente grande kBk k < 1

su

(B) = kB k k k = kBk k k (B) + (B) + .




3.4.

Anlisis del error. Condicionamiento

Recordad el ejemplo de la introduccin:

Ejemplo 1.1.5Consideremos el sistema de ecuaciones


(
x
x

+
y=2
+1.00001y = 2.00001.

Su solucin, es x = 1 e y = 1.
Consideremos ahora el sistema perturbando un poco los trminos independientes.
(
x
x

+
y=2
+1.00001y = 2.

Este sistema perturbado tiene como solucin x = 2 e y = 0.


Un error pequeo en los datos iniciales (en el trmino independiente) ha producido
un error grande en la solucin.

78

UMU Mtodos Numricos, 2007-2008

En este caso, no se ha producido ningn error de clculo.


Este es un ejemplo de un problema (sistema lineal) mal condicionado. No podemos
evitar que pequeos errores en los datos iniciales se conviertan en errores grandes en
las soluciones.

Si en lugar de perturbar el trmino independiente se perturba la matriz


(
1.00001x +
y=2
x +1.00001y = 2.00001.
la solucin pasa a ser

x = 0.9999E 5

y = 1.99990001.

Un error pequeo en la matriz del sistema tambin ha producido un error grande en


la solucin.

Vamos a estimar el nmero de condicin de un sistema lineal atendiendo a estos fenmenos

Supongamos que A es una matriz invertible (no singular) y que consideramos las soluciones
de los sistemas

Ax = b

A(x + x) = b + b.

Se deduce fcilmente que Ax = b y que x = A1 b.


Para cualquier

norma subordinada se cumple:

kxk kA1 k kbk

kbk kAkkxk.

Acotando el error relativo en x en funcin del error relativo en b se tiene


kxk
kA1 k kbk
kbk
kbk

= kA1 kkAk
kA1 kkAk
.
kxk
kxk
kAkkxk
kbk

Consideramos ahora las soluciones de los sistemas


Ax = b y (A + A)(x + x) = b.

Se deduce fcilmente que Ax = A(x+x) y que x = A1 A(x+x) Para cualquier


norma subordinada se cumple:

kxk kA1 kkAkkx + xk.

Acotando el error relativo en x (esta vez con respecto a kx + xk) en funcin del error
relativo en A se tiene
kxk
kAk
kA1 k kAk = kA1 kkAk
.
kx + xk
kAk

Recordando la nocin de condicionamiento de un problema y la de nmero de condicin (ver

1.7), en el sentido de medir la sensibilidad de la solucin de un sistema de ecuaciones lineales con


respecto a perturbaciones en el trmino independiente o en la matriz de coecientes, podemos
establecer la siguiente denicin:

Introduccin y

complementos de anlisis matricial.

79

Denicin 3.4.1 Dada una norma matricial subordinada k k y una matriz cuadrada invertible
A, se dene el nmero de condicin de la matriz A con respecto a esta norma por
cond(A) = kAk kA1 k.

Los dos teoremas siguientes prueban que el nmero de condicin que acabamos de denir es
la mejor acotacin posible en las dos desigualdades que hemos encontrado para denirlo

Teorema 3.4.2 Sea A una matriz invertible, x y x + x las soluciones de los sistemas
Ax = b y A(x + x) = b + b.

Si b 6= 0 entonces

kbk
kxk
cond(A)
.
kxk
kbk

Adems esta desigualdad es la mejor posible en el sentido de que se pueden encontrar un vector
b 6= 0 y un vector b 6= 0 para los que la desigualdad se convierte en igualdad.
Demostracin:

[Prueba completa en Ciarlet [3

seccin 2.2]

Ideas que intervienen

La desigualdad se prob con antelacin.


K proporciona u 6= 0
= kA1 kkbk.

Para la igualdad, observad que la compacidad de la bola unidad de


tal que

kAuk = kAkkuk (b = Au) y b 6= 0 tal que

kA1 (b)k

Teorema 3.4.3 Sea A una matriz invertible, x y x + x las soluciones de los sistemas
Ax = b y (A + A)(x + x) = b.

Si b 6= 0 entonces

kxk
kAk
kA1 k kAk = kA1 kkAk
.
kx + xk
kAk

Adems esta desigualdad es la mejor posible en el sentido de que se pueden encontrar un vector
b 6= 0 y una matriz A 6= 0 para los que la desigualdad se convierte en igualdad.
Demostracin:

[Prueba completa en Ciarlet [3

seccin 2.2]

La denicin del nmero de condicin depende de la norma subordinada considerada. Denotaremos cond2 (A) = kA1 k2 kAk2 al nmero de condicin correspondiente a la norma euclidea.
Reuniendo los resultados que hemos ido obteniendo a lo largo del captulo podemos obtener
el siguiente teorema:

80

UMU Mtodos Numricos, 2007-2008

Teorema 3.4.4
(i)

Para toda matriz A invertible se cumple


a)

(ii)

cond(A) 1,

b)

cond(A) = cond(A1 ).

c)

cond(A) = cond(A) para todo escalar .

Para toda matriz A


cond2 (A) =

n (A)
1 (A)

donde 1 (A) y n (A) son el menor y el mayor valor singular de A.


(iii)

Para toda matriz normal A


cond2 (A) = (A)(A1 ) =

donde |1 (A)| y |n (A)| son los valores propios de A


(iv)
(v)

|n (A)|
|1 (A)|

de menor y mayor tamao.

Para toda matriz unitaria U u ortogonal O se cumple cond2 (U ) = cond2 (O) = 1.

El nmero de condicin cond2 (A) es invariante por transformaciones unitarias (cambios


de base ortonormales):

cond2 (A) = cond2 (U A) = cond2 (AU ) = cond2 (U 1 AU ).

Las armaciones (II y III) nos permiten pensar que el nmero de condicin cond2 (A) co-

rrespondiente a la norma eucldea es el mejor

en el sentido de que proporciona la medida

ms pequea del condicionamiento de los sistemas de ecuaciones lineales.

Introduccin y

3.5.

complementos de anlisis matricial.

Actividades complementarias del captulo

Los documentos se pueden descargar de la Zona Compartida de SUMA.


Hoja de problemas no 3

81

Bibliografa
[1] A. Delshams A. Aubanell, A. Benseny, tiles bsicos de clculo numrico, Ed. Labor - Univ.
Aut. de Barcelona, Barcelona, 1993.

a edicin,

[2] R.L. Burden and J.D. Faires, Anlisis numrico, 7

Thomson-Learning, Mexico,

2002.
[3] P.G. Ciarlet, Introduction l'analyse numrique matricielle et l'optimisation, Masson,
Paris, 1990.
[4] D.

Kincaid

and

W.

Reading, USA, 1994.

Cheney,

Anlisis

numrico,

Ed.

Addison-Wesley

Iberoamericana,

Captulo

Mtodos directos para


resol
v
er
si
s
temas
de
4 ecuaciones




Interrogantes centrales del captulo




Analizar tcnicas de resolucin de sistemas de ecuaciones lineales.


Aprender mtodos de resolucin :
Mtodo de Gauss.
Factorizacin LU y Choleski.




Factorizacin QR, mtodo de Householder.

#


Destrezas a adquirir en el captulo

Resolver sistemas de ecuaciones lineales utilizando los mtodos directos del

Implementar los mtodos en el ordenador.





lgebra lineal.

Comparar su estabilidad y ecacia, y elegir el ms adecuado a cada pro-

Aplicar los programas construidos de forma efectiva en la bsqueda de la

blema.

solucin de sistemas lineales concretos.


"


!

84

UMU Mtodos Numricos, 2007-2008

En esta unidad se estudian distintos mtodos directos de resolucin de sistemas de ecuaciones


lineales

Ax = b.
La complejidad numrica de cada uno de los mtodos se va a medir en funcin del nmero
de operaciones que requiere y la estabilidad en los clculos se va a analizar en funcin del tipo
de operaciones que se realizan.

En los tres mtodos propuestos el nmero de operaciones para un sistema n n es del mismo

orden,

O(n3 ).

La eleccin entre uno u otro depender de la naturaleza del sistema y del control

que tengamos sobre la estabilidad de los clculos.

En los tres mtodos propuestos se simplica el problema de resolver un sistema de ecuaciones,

reducindolo a resolver sistemas fciles (triangulares). Usando estas reducciones, con cualquiera
de los mtodos descritos permite calcular el determinante de una matriz.

El problema de calcular la inversa A1 de una matriz no singular A se reduce a la resolucin

de

sistemas lineales. Si

{e~1 , ..., e~n }

es la base cannica de

A1 = (u~1 , ..., u~n )

4.1.

donde

Kn ,

Au~k = e~k .

Sistemas fciles de resolver

4.1.1. Sistemas diagonales


Si la matriz de coecientes

La solucin se reduce a

es diagonal y no singular,

a11 0
0 a22
.
.
0
0

...
...
...
...

x1
x2
.
xn

0
0
.
ann

x1
x2
.
xn
b1
a11
b2
a22

.
bn
ann

y la complejidad del problema se puede medir contando las


sarias.

b1
b2
.
bn

operaciones (divisiones) nece-

Mtodos Directos para Ecuaciones Lineales

85

4.1.2. Sistemas triangulares superiores. Mtodo ascendente


Si la matriz de coecientes es triangular superior (
resolver el sistema por el

mtodo ascendente :

a11 a12
0 a22
.
.
0
0

...
...
...
...

a1n
a2n
.
ann

x1
x2
.
xn

U upper

b1
b2
.
bn

) y no singular, podemos

comenzando por encontrar la ltima coordenada en la ecuacin de abajo y

ascendiendo por el

sistema, calculando una nueva coordenada con cada ecuacin.

xn =

bn
An,n

xk = (bk

Pn

j=k+1 (Ak,j

xj ))/Ak,k

para

k = n 1, n 2, ..., 1

Ahora la complejidad del algoritmo se mide por el mximo de

1 + 3 + ... + (2k 1) + .. + (2n 1) = n2


operaciones necesarias para encontrar la solucin.

Algoritmo 4.1

Mtodo Ascendente.

A[n][n] (Matriz triangular sup. de


b[n] (vector trmino independiente.);
n (dimensin de A y b)
Variables: x[n];// un vector donde escribir la solucin.
Datos de entrada:

en la diagonal);

Fujo del programa:

// Resolvemos el sistema por el mtodo ascendente.

for(k=n;k>=1;k){
Pn
//xk = (bk
j=k+1 (Ak,j xj ))/Ak,k
xk = bk ;
j = k + 1;
for(j=k+1;j<=n;j++){
xk = xk Ak,j xj ;
}
xk = xk /Ak,k ;
}
Datos de salida: Solucin x del sistema.

coecientes del sistema, sin ceros

86

UMU Mtodos Numricos, 2007-2008

4.1.3. Sistemas triangulares inferiores. Mtodo descendente


Si la matriz de coecientes es triangular inferior (
resolver el sistema por el

mtodo descendente :

a11 0
a21 a22
.
.
an1 an2

...
...
...
...

0
0
.
ann

x1
x2
.
xn

L lower

b1
b2
.
bn

) y no singular, podemos

comenzando por encontrar primera coordenada en la ecuacin de arriba y

descendiendo por

el sistema, calculando una nueva coordenada con cada ecuacin.

x1 =

b1
An,n

xk = (bk

Pk1

j=1 (Ak,j

xj ))/Ak,k

para

k = 2, 3, ..., n

En este caso el mximo nmero de operaciones necesarias para encontrar la solucin tambin
es:

1 + 3 + ... + (2k 1) + .. + (2n 1) = n2

Algoritmo 4.2

Mtodo Descendente.

A[n][n] (Matriz triangular inf. de coecientes del sistema, sin ceros en


b[n] (vector trmino independiente.);
n (dimensin de A y b)
Variables: x[n];// un vector donde escribir la solucin.
Datos de entrada:

la diagonal);

Fujo del programa:

// Resolvemos el sistema por el mtodo descendente.

for(k=1;k<=n;k++){
Pn
//xk = (bk
j=k+1 (Ak,j xj ))/Ak,k
xk = bk ;
j = k + 1;
for(j=1;j<k;j++){
xk = xk Ak,j xj ;
}
xk = xk /Ak,k ;
}
Datos de salida: Solucin x del sistema.

Mtodos Directos para Ecuaciones Lineales


4.2.

87

Mtodo de Gauss

Tal y como recordaris del curso de lgebra lineal, el mtodo de Gauss para resolver sistemas
de ecuaciones

Ax = b

consiste en pasar a un sistema equivalente donde la matriz de coecientes es triangular superior


Ux = v

y resolver este nuevo sistema por el mtodo ascendente.

La triangulacin de la matriz de coecientes


se consigue mediante un proceso de
 eliminacin,




que partiendo de la matriz A=A(1) = a(1)


ij

A(k)

(k)

i,j=1,...,n
(k)

a11
0
0

a12
(k)
a22
0

.
.
.

.
.
.

va obteniendo matrices A(k) = a(k)


ij

(k)

a1k
(k)
a2k
.
(k)
akk

...
...

.
.

...

(k)
ank

...
...
...
...

(k)

ank
(k)
a2n
.
(k)
akn

...

...

(k)
ann

Con el objetivo de obtener la matriz triangular superior

i,j=1,...,n

en el ltimo paso

U = A(n) .

Evidentemente, para que el sistema resultante sea equivalente al inicial debemos hacer en la
columna de los trminos independientes b(k) (con b = b1 ) las mismas operaciones que en las matrices A(k) y quedarnos con v = b(n) . Los pasos a seguir para obtener A(k+1) y b(k+1) partiendo
de

A(k)

(i)

b(k)

son los siguientes:

(k)
(k)
Bsqueda del pivote: |akp
| = max{|akj | : j = k, ..., n}, (el mayor elemento de la columna),

p donde se alcanza. Observad que si el pivote es 0, la matriz


de coecientes es singular y el sistema no es compatible determinado.

con localizacin de la la y

(ii) Cambio de la: se permutan la la

de

A(k)

y de

b(k) .

En la construccin del algoritmo se sustituye esta permutacin por el uso de un puntero


(permutacin)
: {1, 2, .., n} {1, 2, .., n}

de manera que (k) = p apunta a la la p donde est el puntero sin necesidad de permutar
las dos las.
(iii)

Eliminacin: Se utiliza que el pivote es no nulo para ir anulando los elementos de la columna
k ba jo
la

la diagonal, restando a cada la

multiplicada por el cociente

(k+1)
Ai

(k)
Ai

(k)

aik

(k)
akk

(k)
aik
(k) ,
akk

i = k + 1, ..., n

de

A(k)

dejando invariantes las

(k)
Ak

(k+1)
bi

(k)
bi

y de

bk ,

primeras las.

(k)

la correspondiente

aik

(k)
akk

(k)

bk .

88

UMU Mtodos Numricos, 2007-2008

Algoritmo 4.3

Mtodo de Gauss con eleccin de pivote parcial

Datos de entrada:

A[n][n]

(Matriz de coecientes del sistema.);

b[n]

(vector trmino

independiente.);

A y b)
B[n][n];// una

(dimensin de

Variables:

matriz donde ir haciendo todas las modicaciones de

v[n] ;// un vector donde ir haciendo las modicaciones de b.


[n];// un vector  puntero donde anotar las permutaciones de
// [k]  apunta hacia la la que ocupara la posicin k
x[n];// un vector donde escribir la solucin.

las las.

Fujo del programa:

B =A ; v =b ;// Condiciones
for(j=1;j<=n;j++){
(j) = j ;
}

iniciales

// Vamos a hacer las etapas

k = 1, 2, ..., n 1.

for(k=1;k<n;k++){

// 1. Eleccin del pivote (parcial).


p=k; //iniciamos la busqueda en la la k

for(i=k+1;i<=n;i++){
if(|B(i),k | > |B(p),k |){

p=i;//apuntamos a la la donde est el puntero

}
}
if(B(p),k == 0){
Parada, Error: A es
}

singular

// 2. Intercambio de las (virtual). Cambios en el puntero.

m = (k) ; (k) = (p) ; (p) = m

// 3. Eliminacin.

for(i=k+1;i<=n;i++){
mul = B(i),k /B(k),k ;
B(i),k = 0 ;//Asignamos el valor 0 en lugar
for(j=k+1;j<=n;j++){
B(i),j = B(i),j mul B(k),j ;
}
v(i) = v(i) mul v(k) ;
}

de hacer las operaciones

// Resolvemos el sistema por el mtodo ascendente.

for(k=n;k>=1;k){
Pn
//xk = (v(k)
j=k+1 (B(k),j xj ))/B(k),k
xk = v(k) ;
j = k + 1;
while(j<=n){
xk = xk B(k),j xj ;
j ++ ;
}
xk = xk /B(k),k ;
}
Datos de salida: Solucin x del sistema o mensaje de

error si

es singular.

A.

Mtodos Directos para Ecuaciones Lineales

89

El nmero mximo de operaciones (sin contar las permutaciones de las o el uso del puntero)

para reducir el sistema a uno triangular superior dependiendo de la dimensin n del sistema en
el mtodo anterior g(n) se puede calcular observando que
(i) g(1) = 0.

(ii)

g(n) = (n 1) (2 n + 1) + g(n 1) = 2 n2 n 1 + g(n 1), teniendo en cuenta que


para pasar de A(1) a A(2) y de b(1) a b(2) , para cada la i = 2, ..., n de A(1) tenemos que
construir el multiplicador de (1 divisin), en cada uno de los n 1 elementos j = 2, ...n
de cada columna hay que hacer una multiplicacin y una resta (2 (n 1) operaciones)
y en la misma la de b(1) hay que hacer una multiplicacin y una resta (2 operaciones).
El problema de reducir A(2) equivale a reducir una matriz de dimensin n 1.

(iii) g(n) = 2

Pn

i=1 n

Pn

i=1 n

n = 23 n3 + 21 n2 76 n.

Tal y como hacais en la asignatura de lgebra lineal, se puede modicar el algoritmo para

A. Aunque el clculo de esta es equivalente a resolver los sistemas


ei es la base cannica de Kn .

calcular la matriz inversa de

Ax = ei (i = 1, ..., n)

donde

Otra variante que se puede realizar es el mtodo de Gauss-Jordan, que consiste en realizar
tambin el proceso de eliminacin de los elementos que estn sobre la diagonal, transformando
el sistema de ecuaciones en uno equivalente donde la matriz de coecientes va a ser diagonal.

Gauss con pivote parcial

El mtodo de Gauss se puede optimizar al cambiar la estrategia seguida en la eleccin del


pivote, buscando el elemento de mayor mdulo
(k)

(k)
| = m
ax{|aij | : i = k, ..., n; j = k, ..., n},
|amp

entre las las y columnas i k y j k. La nalidad es evitar hacer divisiones por nmeros
muy pequeos que pueden producir nmeros muy grandes y clculos inestables al operar con
nmeros de distinto tamao. De esta manera construimos el algoritmo de Gauss de pivote total.
Como en el caso del pivote parcial, en lugar de permutar columnas en la matriz, lo que
signicara permutar las en el vector solucin x, lo que se hace es utilizar un puntero donde
sealar la posicin de cada columna.

En el algoritmo 4.4

de la siguiente pgina se puede seguir la construccin.

90

UMU Mtodos Numricos, 2007-2008

Algoritmo 4.4

Mtodo de Gauss con eleccin de pivote total

Datos de entrada:

A[n][n]

(Matriz de coecientes del sistema.);

b[n]

(vector trmino

independiente.);

A
B[n][n];

(dimensin de

Variables:

b)

v[n] ;
la[n];// un vector  puntero donde anotar las permutaciones de las las.
colu[n] // // un vector  puntero donde anotar las permutaciones de las columnas.
x[n];// un vector donde escribir la solucin. Fujo del programa:
B =A ; v =b ;// Condiciones iniciales
for(j=1;j<=n;j++){
la(j) = j ; colu(j) = j
}
// Vamos a hacer las etapas k = 1, 2, ..., n 1.
for(k=1;k<n;k++){
// 1. Eleccin del pivote (total).
p=k; q=k //buscamos desde la la k y la columna k

for(i=k;i<=n;i++){
for(j=k;j<=n;j++){
if(|Bfila(i),colu(j) | > |Bfila(p),colu(q) |){
p=i; q=j;

}
}
}
if(Bfila(p),colu(q) == 0){
Parada, Error: A es singular
}
// 2. Intercambio de las y columnas. Cambios en los punteros.

m = la(k) ; la(k) = la(p) ;la(k) = la(p) ; la(p) = m ;


m = colu(k) ; colu(k) = colu(q) ;colu(k) = colu(q) ; colu(q) = m

// 3. Eliminacin.

for(i=k+1;i<=n;i++){
mul = Bla(i),colu(k) /Bla(k),colu(k) ;
Bla(i),colu(k) = 0 ;//Asignamos el valor 0 en lugar de hacer
for(j=k+1;j<=n;j++){
Bla(i),colu(j) = Bla(i),colu(j) mul Bla(k),colu(j) ;
}
vla(i) = vla(i) mul vla(k) ;
}

// Resolvemos el sistema por el mtodo ascendente.


P
for(k=n;k>=1;k){ xcolu(k) = (vla(k) nj=k+1 (Bla(k),colu(j)
xcolu(k) = vla(k)

//

j = k + 1;
while(j<=n){
xcolu(k) = xcolu(k) Bla(k),colu(j) xcolu(j)
j ++ ;
}
xcolu(k) = xcolu(k) /Bla(k),colu(k) ;

las operaciones

xcolu(j) ))/Bla(k),colu(k)

Datos de salida: Solucin

del sistema o mensaje de error si

es singular.

Mtodos

4.3.

Directos para Ecuaciones Lineales

91

Factorizacin LU

Supongamos que la matriz A = (a )i,j=1, ,n admite una factorizacin como el producto de


una matriz triangular inferior L por una matriz triangular superior U , A = LU
ij

a11 a12
a21 a22
.
.
a11 a12

... a1n
... a2n
... .
... ann

...

... 0
... 0
... .
... lnn

l11 0
l21 l22
.
.
l11 l12

Para resolver el sistema lineal de ecuaciones:

u11 u12
0 u22
.
.
0
0

... u1n
... u2n
... .
... unn

A.x = b LU x = b

resolveriamos consecutivamente los sistemas :


Ly = b

y
U x=y

con los mtodos descendente y ascendente descritos en los apartados de arriba.


Cuando se puede hacer este tipo de factorizaciones, se dice que A tiene una factorizacin
LU . Adems, la factorizacin no es nica, como veremos se puede asignar un valor distinto
para cada lkk y cada ukk , aunque los productos lkk ukk si que permanecen constantes.
Para deducir la factorizacin LU comenzamos mltiplicando las matrices, obteniendo las
ecuaciones
ai,j =

n
X

mn(i,j)

li,s us,j =

li,s us,j

s=1

s=1

Con estas ecuaciones, por etapas, podemos ir determinando las las de U y las columnas de L.
Supongamos que tenemos determinados las (k-1) primeras las de U y las (k-1) primeras columnas de L.
La ecuacin correspondiente al trmino ak,k :
ak,k =

k1
X

lk,s us,k + lk,k uk,k

s=1

lk,k uk,k = ak,k

El producto

k1
X

lk,s us,k

s=1

pk = lk,k uk,k est denido de forma nica. Ahora podemos seguir distintos criterios
para determinar los valores de lk,k y de uk,k :
Criterio de

Dootlittle .- lk,k =1 uk,k =pk

Criterio de Crout .Mtodo de Choleski .-

uk,k =1 lk,k =pk

=U t , es decir

lS,k =uk,S .

En particular

lk,k =uk,k = pk

92

UMU Mtodos Numricos, 2007-2008

Una vez determinados los coecientes lk,k

uk,k ,

volvemos a las ecuaciones iniciales

para escribir:

P
ak,j = k1
s,j +lk,k uk,j
s=1 lk,s u
P
lk,k uk,j = ak,j - k1
s=1 lk,s us,j
Pk1
ai,k = s=1 li,s us,k +li,k uk,k
P
li,k uk,k = ai,k - k1
s=1 li,s us,k
Si pk = lk,k uk,k 6=0, la la k ( uk,j ) de U y la columna k ( li,k ) de L estn denidas de forma

nica.

Algoritmo 4.5

Mtodo de factorizacin LU (Dootlittle)

A[n][n] (Matriz de coecientes del sistema.);


n (dimensin de A)
Variables: L[n][n]; U [n][n]// matrices para escribir las matrices triangulares
Datos de entrada:

inferiores.

aux;//

una variable auxiliar para sumatorios y productos escalares.

Fujo del programa:

aux = 0. ;
for(k=0;k<n;k++){
aux = A[k][k];
for(s=0;s<k;s++){ // de Fila
aux = aux L[k][s]U [s][k];
}
if(aux==0){

k de L por Columna k de U.

Parada: no hay factorizacin LU;

}
L[k][k] = 1.;
U [k][k] = aux;
for(j=k+1;j<n;j++){// de Fila k de L por Columna j
aux = A[k][j];
for(s=0;s<k;s++){ aux = aux L[k][s] U [s][j];

de U.

U [k][j] = aux;
}

for(i=k+1;i<n;i++){// de Fila i de L por Columna k


aux = A[i][k];
for(s=0;s<k;s++){ aux = aux L[i][s] U [s][k];
}

L[i][k] = aux/U [k][k];

Datos de salida:L y U(Factorizacin LU)o mensaje de error

de U.

superiores e

Mtodos

4.4.

Directos para Ecuaciones Lineales

93

Factorizacin QR. Mtodo de Householder

Se llaman matrices de Householder

a las matrices de la forma

2
vv ,
vv

H(v) = Id

v 6= 0

un vector de

Cn ,

H(0) = Id.

~a

~v

H(v)~a = ~a

Geomtricamente, el producto
a la direccin de

v,

(v a)v
v v

a)
2 v(v
v v

H(v)a

representa a la  reexin especular de

es decir, el vector simtrico del vector

en el plano determinado por los vectores

con respecto

con respecto al vector normal a

v.

Ejercicio 4.4.1 Demuestra que las matrices H(v) son unitarias y simtricas.
Adems de por las propiedades expuestas en el ejercicio anterior, estas matrices son interesantes en anlisis numrico por el siguiente teorema

Teorema 4.4.1 Sea a un vector de Cn . Entonces existen dos matrices de Householder H tales
que

Ha

tiene todas sus coordenadas nulas salvo quizs la primera.

De forma ms precisa, si

R cumple a1 = |a1 |ei ,

a =

 a1 
.
.
.

an

entonces para

e1

nica de Cn , y

es el primer vector de la base can

v = a kak2 ei e1

se cumple

H(a kak2 ei ) = kak2 ei e1 .

El siguiente grco contiene una prueba geomtrica del teorema:

94

UMU Mtodos Numricos, 2007-2008

~a

~v = ~a + k~akei e~1

H(v)~a = k~akei e~1


k~akei e~1

ei e~1

a1 = |a1 |ei

Demostrac

in:

Analticamente, si tomamos v = a + kakei e1 y hacemos los correspondientes clculos, tenemos:


v a = a a + kakei a1 = kak2 + kak|a1 |.
2(v a)v = (2kak2 + 2kak|a1 |)a + (2kak2 + 2|a1 |)kakei e1 .
v v = a a + kakei a1 + kakei a1 + kak2 = 2kak2 + 2kak|a1 |.
(v v)a 2(v a)v = (2kak2 + 2kak|a1 |)kakei e1 .
H(v)a =

(v v)a2(v a)v
v v

= kakei e1


ervacin 4.4.2 Si a = 0, entonces v = 0 y H = Id.

Obs

En la practica, para calcular H(v)b se sigue el siguiente proceso:

(i) se calcula la
(ii) se calcula el
(iii)

norma kvk2 = v v ,
producto escalar (v, b) = v b

por ltimo se calcula H(v)b = b (2(v, b)/kvk2 )v .

a1
puede hacerse tomando signo = ei = kak
si a 6= 0 signo = 1 si
i
a=0. En el caso real e = 1 es el signo de a1 . Con esta eleccin se evita el nmero v v del
denominador sea demasiado pequeo y pueda producir inestabilidad en los clculos.
La determinacin de

El mtodo de
(n 1)

Ax = b consiste en encontrar
H1 , ..., Hn1 de manera que Hn1 ...H2 H1 A sea una matriz

Householder para la resolucin de un sistema

matrices de Householder

triangular, y la solucin del sistema es la solucin de

Hn1 ...H2 H1 Ax = Hn1 ...H2 H1 b

que se obtiene por el mtodo ascendente.

Mtodos

Directos para Ecuaciones Lineales

95

Pongamos A0 = A y H0 = Id.
Pongamos Ak = Hk Hk1 ...H1 A, y supongamos que presenta la forma:

Sea Aek la matriz formada por los


! elementos aij de A que estn en las las i k
a

y en las

kk

.
.
.

e k+1 = H(e
H
vk )
ank
1
e
que da el teorema 4.4.1 de manera queHk+1 a~k = 0. .

columna

j k.

Sea

a~k =

Cnk+1 ,

la matriz de Householder

.
.

Sea

Hk+1 =

Idk1
0

0
e k+1
H
0

Hk

es la matriz de Householder

H(vk )

con

vk =

.
.
.

v
ek
Construimos

Ak+1 = Hk+1 Ak .

Con esta construccin

R = An1

es una matriz triangular.

En la construccin de Ak+1 no se hacen modicaciones ni en las k 1 primeras las, ni en


las k 1 primeras columnas, slo se modican los elementos de Aek .
omo las matrices de

Householder son unitarias (conservan distancias)

cond2 (A) = cond2 (A1 ) = ... = condn (An1 )

En otras palabras. Al triangular la matriz con el mtodo de Householder no varia el condicionamiento del problema.

96

UMU Mtodos Numricos, 2007-2008

Algoritmo 4.6

Mtodo de Householder. Factorizacin QR

Datos de entrada:

A[n][n]

(Matriz de coecientes del sistema.);

b[n]

(vector trmino

independiente.);

A y b)
B[n][n];// una

(dimensin de

Variables:

matriz donde ir haciendo las modicaciones de

A.

w[n] ;// un vector donde ir haciendo las modicaciones de b.


aux;// una variable auxiliar para sumatorios y productos escalares.
sign;// una variable para el signo Bk,k /|Bk,k |.
norma;// una variable real para la norma del vector ~a.
norma2V ;// una variable real para k~v k2 .
x[n];// un vector donde escribir la solucin.
Fujo del programa:

B =A ; w=b

;// Condiciones iniciales

// Vamos a hacer las etapas

for(k=1;k<n;k++){P
// Vamos a hacer

k = 1, 2, ..., n 1.

n
k+1 |Bi,k |.

aux = |Bk+1,k |;
for(i=k+2;1<=n;i++){ aux = aux + |Bi,k |; }
if(aux == 0){ if(|Bk,k | == 0){ Error Matriz Singular Fin;}
Continue; // Pasar a la siguiente etapa k + 1 del bucle. }
|;} else{ signo = 1;}
if(|Bk,k | > 0){ signo = Bk,k /|Bk,kP
norma = |Bk,k |2 ; // Vamos a hacer nk |Bi,k |2 .
for(i=k+1;i<=n;i++){ norma = norma + |Bi,k |2 ;}

norma = norma; v[k] = Bk,k + norma signo; // 1. vector de Householder.


for(i=k+1;i<=n;i++){v[i] = Bi,k ;}
norma2V = 2(norma)2 + 2 norma signo Bk,k ;
Bk,k = norma signo; // 2. Accin de la simetra en columna k .
for(i=k+1;i<=n;i++){ Bi,k = 0; }
for(j=k+1;j<=n;j++){ // Accin en las dems columnas.
aux = v[k] Bk,j ; //~v .B~ j .
for(i=k+1;i<=n;i++){ aux = aux + v[i] Bi,j ; }
aux = 2 aux/norma2V
for(i=k;i<=n;i++){ Bi,j = Bi,j aux v[i]; }
}
aux = v[k] w[k]; // Accin en el vector independiente.
for(i=k+1;i<=n;i++){ aux = aux + v[i] w[i];} //~v .w
~
aux = 2 aux/norma2V
for(i=k;i<=n;i++){ w[i] = w[i] aux v[i];}
}
// 3 Resolvemos el sistema por el mtodo ascendente.

P
for(k=n;k>=1;k){//xk = (wk nj=k+1 (Bk,j xj ))/Bk,k
xk = vk ; j = k + 1;
while(j<=n){ xk = xk Bk,j xj ; j ++ ;
}
xk = xk /Bk,k ;
}
Datos de salida: Solucin x del sistema o mensaje de error si A

es singular.

Mtodos

4.5.

Directos para Ecuaciones Lineales

97

Tipos especiales de matrices

4.5.1. Matrices estrictamente diagonal dominante


Denicin 4.5.1 Se dice que una matriz cuadrada de dimensin n A = (aij ) es estrictamente
diagonal dominante cuando
n
X

|aii | >

j=1;j6=i

para toda la i = 1, ...n.

|aij |

Ejemplo 4.5.2 Si consideramos las matrices

7 2 0

A = 3 5 1
0 5 6

5 3 3

y B=
3 4 0
3 0
4

La matriz A es estrictamente diagonal dominante, no simtrica y At no es estrictamente diagonal


dominante. La matriz B es simtrica pero no es estrictamente diagonal dominante (tampoco lo
es B t = B .
No son raros los sistemas lineales estrictamente diagonal dominante que aparecen en muchos
modelos de ecuaciones en diferencias (elementos nitos) al discretizar ecuaciones en derivadas
parciales y en mtodos numricos como en el caso de los problemas de interpolacin con  splines

que estudiaremos ms adelante. Las matrices estrictamente diagonal dominante son no singulares
y tienen buenas propiedades de estabilidad con relacin al mtodo de Gauss.

Teorema 4.5.3 Toda matriz

A estrictamente diagonal

dominante es no singular. Adems al

mtodo de Gauss sin hacer intercambios de las ni columnas


tomando como pivote en cada etapa el elemento de la diagonal.

realizar el proceso de eliminacin

del

Demostrac

in:

Ideas que intervienen

Se puede razonar por contradiccin: Si A fuese singular existira x = (x1 , .., xn )t tal que
Ax = 0.
Tomamos k tal que |xk | = kxk = max{|x1 |, ...|xn |}
P
Como j aij xj = 0 para todo i, en particular para i = k se tiene
akk xk =

n
X

akj xj .

j=1;j6=k

La desigualdad triangular nos dice entonces que


|akk ||xk |

n
X

j=1;j6=k

|akj ||xj |,

Lo que contradice la hiptesis de que A es estrictamente diagonal dominante porque


|akk |

n
X

j=1;j6=k

|xj |

|akj |
|xk |

n
X

j=1;j6=k

|akj |.

98

UMU Mtodos Numricos, 2007-2008

Si A es estrictamente diagonal dominante, todos los elementos de su diagonal son no nulos.


En particular a11 6= 0 se puede elegir como pivote en la primera etapa del mtodo de Gauss.

En este caso la matriz B que se obtiene tiene la misma primera la que A y el resto de
las se denen haciendo la eliminacin por
bij = aij

ai1
a1j
a11

La desigualdad triangular nos permite probar que


n
X

j=2;j6=i

|bij | < |bii |.

En otras palabras, la matriz A1 = B que proporciona la primera etapa del mtodo de


Gauss es diagonal estrictamente dominante.
Repitiendo el proceso se tiene que se puede hacer el mtodo de Gauss tomando como
pivotes los elementos de la diagonal y la matriz triangular que se obtiene es estrictamente
diagonal dominante. Observad que esta ltima matriz solo puede ser singular si alguno
de los elementos de la diagonal es cero, pero en ese caso no sera estrictamente diagonal
dominante.


Si la matriz A es estrictamente diagonal dominante (no singular) y no tiene ninguna la  casi
nula, los clculos del mtodo de Gauss sin hacer cambios de las ni columnas sern estables ya
que los pivotes no resultan demasiado pequeos.
o

L s mtodos iterativos de la siguiente leccin para sistemas de ecuaciones con este tipo de

matrices son convergentes.

4.5.2. Matrices simtricas denidas positivas.


Denicin 4.5.4 Se dice que
denida positiva cuando

una matriz simtrica (At

x Ax =

n
X

= A) de dimensin n A = (aij ) es

aij xi xj > 0

i,j=1

para todo vector columna x Rn .

Proposicin 4.5.5

Si

A es una matriz denida positiva entonces:

(i) A es no singular
(ii) aii > 0 para cada i = 1, ..., n.
(iii) max{|aij | : 1 i, j n} max{|aii | : 1 i n}.
(iv) a2ij < aii ajj .

Mtodos

Directos para Ecuaciones Lineales

Demostrac

in:

99

Ver el Teorema 6.21 del libro de Burden-Faires [2].

na matriz simtrica A es denida positiva si y slo si todos sus valores propios son estrictamente positivos. Equivalentemente, si y slo si, todas las submatrices principales

Ak =

a11 ... a1k


.
.
.

.
.
.

ak1 ... akk

tienen determinante estrictamente positivo.

Se puede probar que para matrices denidas positivas el mtodo de Gauss se puede realizar
sin hacer cambios de las con clculos estables (ver Teorema 6.21 del libro de Burden-Faires [2]).
Recordando la factorizacin

Teorema 4.5.6
(i)

Sea

LU

se obtiene:

A una matriz simtrica. Son equivalentes:

A es denida positiva.

(ii) Existe una matriz

triangular inferior

B con diagonal estrictamente positiva, tal que A =

(iii) Existe una matriz

triangular inferior

B t B . (Mtodo de Choleski).

con unos en la diagonal,

y una matriz

con elementos estrictamente positivos a lo largo de la diagonal, tal que

Demostrac

in:

(1) (2):

diagonal

A = Lt DL.

1
u11 x . . . x
x 1

u22 . . . x

. . .

.
.

A = LU =

.
. .

.
.
.

. .
.
.
.
x x . . . 1
unn

Ak = Lk Uk , se tiene que todos los ukk > 0.


Tomando la matriz diagonal = diag(uii ), B = L y C = 1 U se tiene que A = BC . B
es triangular inferior y C es triangular superior las diagonales de B y C coinciden con la de .
t t
t 1 = B 1 C t .
Como A es simtrica, A = BC = C B y C(B )
Por una parte C(B t )1 es triangular superior y tiene slo unos en su diagonal. Y tambin,
1
B C t es triangular inferior con slo unos en la diagonal. As la igualdad de las dos matrices
Si

es denida positiva, como

nos dice que ambas coinciden con la identidad y por lo tanto


C = Bt

(2) (3): Si A = BB t , tomamos = diag(Bii ), entonces


A = B1 1 B t = LDLt .

Observad que L es triangular inferior con unos en la diagonal y D = es diagonal con


elementos Dii estrictamente positivos. (3) (1):
xt Ax = xt LDLt x = (Lt x)t D(Lt x) =

X
i

Dii yi2 > 0

100

UMU Mtodos Numricos, 2007-2008

donde y = Lt x 6= 0 si x 6= 0.

(Ver el teorema 4.4.1 de la seccin 4.4

].

de [3 )

Algoritmo 4.7

Mtodo de factorizacin de (Choleski)

(slo para matrices simtricas denidas positivas)

A[n][n]
A)

Datos de entrada:

(dimensin

Variables:

aux;//

de

L[n][n];

(Matriz de coecientes del sistema.);

// matriz para escribir la matriz triangular superior.

una variable auxiliar para sumatorios y productos escalares.

Fujo del programa:

aux = 0. ;
for(k=0;k<n;k++){
aux = A[k][k];
for(s=0;s<k;s++){ // de Fila k
aux = aux L[k][s] L[k][s];
}
if(aux<=0){

de L por Columna k de L .

Parada: no hay factorizacin de Choleski;

L[k][k] = aux;
for(i=k+1;i<n;i++){// de Fila i de L por Columna k
aux = A[i][k];
for(s=0;s<k;s++){ aux = aux L[i][s] L[k][s];

de L .

L[i][k] = aux/L[k][k];

Datos de salida:L

(Factorizacin de Choleski

A = LLt )o

mensaje de error

4.5.3. Matrices tridiagonales


Denicin 4.5.7 Una matriz

cuando existen
este tipo se

cuadrada

A de dimensin n se dice que es una matriz banda


si i + p j o j + q i. El ancho de banda de

enteros p y q tales que aij = 0


dene como w = p + q 1.

ules son las matrices banda con p = 1 y q = 1 (w = 1)?

as matrices banda que ms suelen aparecer en la prctica tienen la forma p = q = 2 y

p = q = 4.

Las matrices de ancho de banda 3 con

porque su forma es

p=q=2

se llaman

matrices tridiagonales

Mtodos

Directos para Ecuaciones Lineales

Teorema 4.5.8

Si

se dene

101

A es una matriz tridiagonal

b1 c1
a

c2
2 b2

..
..
..

A=
.
.
.

an1 bn1 cn1


an
bn

la sucesin 0 = 1, 1 = 1, k = bk k1 ak ck1 k2 (2 k n).


Entonces, k = det(Ak ) (Ak el menor principal de orden k) y si todos los k 6= 0,

zacin

U de la matriz A es

la

factori-

a2 0
1

A = LU =

Demostrac

in:

1
1
..

..

..

an1 n3
n2

1
n2
an n1

Ver Teorema 4.3.2 de [3]

c1
2
1

..

c2
..

..

n1
n2

cn1
n
n1

Ejemplo 4.5.9 Si A es una matriz tridiagonal simtrica

b1
a
2

A=

a2
b2

...

a3

...

...

an1 bn1
an

an
bn

y todos los determinantes de los menores principales son positivos,


que proporcione la factorizacin de Choleski A = SS t

Escribe

una algoritmo

] y en la seccin 6.6 del libro de Burden-Faires [2]


podis estudiar la factorizacin de L para sistemas tridiagonales. En esa misma seccin tenis
informacin sobre resolucin de sistemas con matrices de coecientes de los distintos tipos que
acabamos de presentar.

En la seccin

4.6.

4.3 del libro de Ciarlet [3

Actividades complementarias del captulo

os documentos se pueden descargar de la Zona

Hoja de problemas n 4

ompartida de S

UM

A.

Bibliografa
[1] A. Delshams A. Aubanell, A. Benseny, tiles bsicos de clculo numrico, Ed. Labor - Univ.
Aut. de Barcelona, Barcelona, 1993.

a edicin,

[2] R.L. Burden and J.D. Faires, Anlisis numrico, 7

Thomson-Learning, Mexico,

2002.
[3] P.G. Ciarlet, Introduction l'analyse numrique matricielle et l'optimisation, Masson,
Paris, 1990.
[4] D.

Kincaid

and

W.

Reading, USA, 1994.

Cheney,

Anlisis

numrico,

Ed.

Addison-Wesley

Iberoamericana,

Captulo




Mtodos iterativos de
resolucin de sistemas de
ecuaciones
Interrogantes centrales del captulo

Anlizar tcnicas iterativas de resolucin de sistemas de ecuaciones lineales.

Aprender los mtodos de resolucin :




Mtodo de Jacobi.
Mtodo de Gauss-Seidel.
Mtodo de relajacin.










Destrezas a adquirir en el captulo

Resolver sistemas de ecuaciones lineales utilizando los mtodos iterativos.

Implementar los mtodos en el ordenador.

Compararlos entre si y con los mtodos directos del captulo anterior.










En esta unidad se estudian distintos mtodos iterativos de resolucin de sistemas de ecuaciones lineales. Los mtodos iterativos no suelen utilizarse para resolver problemas lineales de
dimensin pequea ya que, para obtener una precisin razonable, requieren ms operaciones
que los mtodos directos. Sin embargo, en el caso de sistemas grandes con muchos ceros en sus
coecientes (matrices banda o estrictamente diagonal dominantes que aparecen en problemas de
ecuaciones diferenciales con condiciones frontera) hay mtodos iterativos muy ecientes.
Proponemos tres mtodos iterativos concretos a partir de una misma idea general.

104

UMU Mtodos Numricos, 2007-2008

5.1.

Mtodos iterativos. Criterios de Convergencia

Idea general:
Un mtodo iterativo para resolver un sistema lineal

Ax = b
consiste en transformar el sistema de ecuaciones en una ecuacin de punto jo

x = T x + c;
donde

es una aplicacin lineal. Si el radio espectral

~x (el punto jo) se


~xk = T ~xk1 + c, comenzando en

(T ) < 1, la aplicacin T x+c es contractiva

y la solucin del sistema

obtiene como el lmite de una sucesin de iteradas

funcionales

una aproximacin inicial

Ejemplo 5.1.1

Consideremos el sistema

Ax = b

Despejando

xi

a la solucin.

dado por las ecuaciones:

2x1 2x2
2x1 + 3x2 + x3

x1
2x3
que tiene como nica solucin

~x0

=1
=5
=7

31
83
x = ( 20
9 , 18 , 18 ) (2.22222, 1.72222, 4.61111).

en la ecuacin

se tiene la ecuacin equivalente

x1
x2

x3

= x2
+ 12
= 23 x1 13 x3 + 35
72
= 21 x1

x = T x + c, con

0 1 0

T = 23 0 13
12 0 0

sta es una ecuacin de punto jo

(T ) = 0.84657..., El lmite de la sucesin de iteradas ~xk = T ~xk1 +c obtenido en 194 iteraciones


comenzando en ~
x0 = 1, con un error relativo en la imagen menor que 1014 , es la solucin del
sistema lineal (2.22222, 1.72222, 4.61111)

Denicin 5.1.2

Dado un sistema lineal

sistema a cualquier par

Ax = b

(T, c)

Ax = b,

se llama  mtodo iterativo de resolucin del

T y un vector c tales
(x) = T x + c, es decir

formado por una matriz

es el nico punto jo de la funcin afn

Ax = b

que la solucin de

x = T x + c.

Se dice que el mtodo iterativo es convergente cuando la sucesin de iteradas

T xk1 + c

converge hacia el punto jo para cualquier eleccin del vector

xk = (xk1 ) =

x0 .

A la hora de implementar los mtodos iterativos interesa tener presente que podemos utilizar
como condicin de parada el tamao de los  vectores residuales en cada etapa:

rk = Axk b.

Mtodos iterativos de resolucin de sistemas de ecuaciones


5.1.1.

105

Criterios de Convergencia

En el siguiente teorema recogemos los resultados estudiados en el captulo 3 que dan condiciones necesarias y sucientes para que un mtodo iterativo sea convergente:

Teorema 5.1.3

Sea

una matriz cuadrada de dimensin

(i) Existe una norma matricial (subordinada) tal que


(ii) El radio espectral
(iii)

lmk T k v = 0,

n.

Entonces son equivalentes:

kT k < 1.

(T ) < 1.
para todo vector

(iv) Las sucesiones de iteradas

v.

~xk = T ~xk1 + c

converge comenzando en cualquier vector

~x0 .

Demostracin:

La equivalencia entre (I) y (II) es el Teorema 3.3.2.


La equivalencia entre (II) y (III) es el Teorema 3.3.4.
La implicacin (I)

(IV), la da el teorema del punto jo porque si

(x) = T x + c,

k(x) (y)k = kT x T yk = kT (x y)k kT kkx yk,


y si

kT k < 1,

ser contractiva.

Para la implicacin (IV)


de

x = T x + c.

Si tomamos

(III), consideremos v un vector arbitrario, y x el vector


~x0 = x v , la sucesin ~xk = T ~xk1 + c converge hacia x

solucin
y por lo

tanto:

x ~xk = T x + c (T ~xk1 + c) = T (x ~xk1 ) = T 2 (x ~xk2 )... = T k (x ~x0 ) = T k (v) 0.




Ejemplo 5.1.4

Volviendo al ejemplo 5.1.1, el polinomio caracterstico de la matriz

es

pT () = 63 + 4 + 1.
(T ) = 0.84657...1 por lo tanto la iteracin ~xk = T ~xk1 + c, comenzando
en cualquier vector x
~0 , converge hacia la solucin del sistema de punto jo x = T x + c; que
tambin es la solucin de la ecuacin Ax = b.
El radio espectral es

5.1.2.

Construccin de Mtodos iterativos

Idea general:
Supongamos que tenemos un sistema lineal

Ax = b
1

Aunque no es facil calcular races de polinomios de tercer grado, si q


es fcil comprobar que los ceros del

polinomio caracterstico (valores propios de

T)

tienen mdulo menor que

5
6

<1

106

UMU Mtodos Numricos, 2007-2008

y que la matriz

se puede expresar como diferencia de dos matrices

A = M N,
donde

es una matriz  fcil  de invertir (por ejemplo si es diagonal o triangular). Entonces:

Ax = b M x N x = b M x = N x + b,
Ax = b x = M 1 N x + M 1 b
n, A = (aij ), tal que aii 6= 0 para todo 1 i n.
D = (aii ) es muy fcil de invertir. Escribiendo M = D y N = D A

Dada una matriz cuadrada de dimensin


Entonces la matriz diagonal

se obtiene el mtodo iterativo de Jacobi.


Los mtodos de Gauss-Seidel y de relajacin son variaciones del mtodo de Jacobi. Para
descibirlos vamos a utilizar la siguiente notacin para describir

0 0
0
a21 0
0

.
. .
.

L=

.
.
.
.

.
.
0
.
an1 . . . an(n1) 0

5.2.

N = D A = (L + U ):

0 a12 . . .
a1n

0 a23 . .
a2n

.
.

U =
.

.
.

0 a(n1)n
0

Mtodo de Jacobi

Tal y como hemos mencionado, el mtodo de Jacobi para buscar la solucin de un sistema
lineal

Ax = b

si no hay ceros en la diagonal

de

consiste en construir la sucesin de iteradas

xk+1 = D1 ((L + U ))xk + D1 b = AJ xk + D1 b.


Para realizar los clculos de forma eciente y para utilizarlos en las condiciones de parada comenzamos analizando los vectores residuales y observando cmo pueden utilizarse para construir
cada iteracin del mtodo:

rk = Axk b = Dxk + (L + U )xk b


D1 rk = xk (D1 ((L + U ))xk + D1 b) = xk xk+1
xk+1 = xk D1 rk
rk = (rik )i y xk = (xki )i
consecutivamente i = 2, 3, ..., n

Cada etapa del clculo de los vectores


coordenada, comezando en

i=1

se realiza coordenada a

Para i = 1, mientras que i n, haciendo en cada paso i = i + 1:


X
rik = aii xki +
aij xkj bi
j=1;j6=i

xk+1
= xki
i

1 k
r
aii i

(5.1)

Mtodos iterativos de resolucin de sistemas de ecuaciones

107

El siguiente algoritmo implementa el mtodo de Jacobi. Prestad atencin a la construccin


del vector residual y como se utiliza el cuadrado de su norma eucldea como condicin de parada:

Algoritmo 5.1

Mtodo de Jacobi para resolucin de sistemas lineales

Datos de entrada: A[n][n] (Matriz de coecientes del sistema.);


b[n] (vector trmino independiente.);
n (dimensin de A y b);
(precisin para la condicin de parada);
nmax (nmero mximo de iteraciones);
Variables:xa[n];// (xk ) vector para aproximar la solucin del sistema.
e[n] ;// un vector auxiliar para almacenar el vector residual y el vector de correccin
xk 1 xk .
eadmisible = 0;// precisin admisible (se usan errores relativos.
norma = 0; // registro para el cuadrado de la norma del vector residual.
Fujo del programa:

// Condiciones iniciales y evaluacion de la diagonal


for(j=1;j<=n;j++){
xa(j) = 1 ; eadmisible = eadmisible + b(j)2 ;
if(Aj,j == 0){
ERROR; Jacobi no es aplicable;
}
}
eadmisible = 2 eadmisible // ( kbk)2 .
// Vamos a hacer las etapas k = 1, 2, ..., nmax.
for(k=1;k<=nmax;k++){
norma = 0; // 1. clculo de la correccin.
for(i=1;i<=n;i++){
e(i) = b(i);
for(j=1;j<=n;j++){
e(i) = e(i) + Ai,j xa(j);
}
norma = norma + e(i)2 ;
e(i) = e(i)/Ai,i ;
xa(i) = xa(i) e(i);
}
if(norma < eadmisible){
Parada, la solucion es xa
}
}
Parada, no hay convergencia en nmax iteraciones;
Datos de salida: Solucin x del sistema o mensajes de error si la diagonal de A tiene
algn cero o la iteracin no converge.

Ejemplo 5.2.1

En el ejemplo 5.1.1 se ha considerado la iteracin de Jacobi que, como hemos

sealado, converge hacia la solucin del sistema lineal

Ax = b.

108

UMU Mtodos Numricos, 2007-2008

5.3.

Mtodo de Gauss-Seidel

Los vectores del algoritmo de Jacobi se van construyendo coordenada a coordenada de manera
que cuando se va a calcular

xk+1
i

ya se conocen los valores de

xk+1
j

para

j < i.

La idea en la

modicacin propuesta en el mtodo de Gauss-Seidel consiste en utilizar para el clculo de


en 5.1 las coordenada conocidas
slo las coordenadas de
de

xk+1

xk ,

xk+1
j

para

j <i

junto con

xkj

para

i j,

xk+1
i

en lugar de utilizar

en la hiptesis de que si el mtodo va a converger, las coordenadas

son una mejor aproximacin a las de la solucin que las de

xk .

Para i = 1, mientras que i n, haciendo en cada paso i = i + 1:


rik = aii xki +

i1
X

aij xk+1
+
j

j=1

xk+1
i

n
X

aij xkj bi

(5.2)

j=i+1

1 k
r
= xki
aii i

En trminos matriciales, el mtodo de Gauss-Seidel consiste en considerar la descomposicin

A = (L + D) + U = M N , M = L + D y N = U . Para comprobarlo basta con observar


las coordenadas de la expresin: (L + D)xk+1 = U xk + b. La matriz del mtodo iterativo de
1 (U ).
Gauss-Seidel es AG = (L + D)
En la pgina siguiente est el algoritmo 5.2 correspondiente a este mtodo. Observad que

rk , donde cada
k
una de las coordenadas r
i se corresponde con la coordenada i de los vectores A
xik b con
k+1 k
k )t (i = 1, ..., n). Si la sucesin x converge hacia la solucin del
,
...,
x
,
x
,
...x
x
ik = (xk+1
k
n
i
1
i1
para la condicin de parada hemos utilizado como vector residual el vector

sistema lineal, tambin lo hace

5.3.1.

x
ik

rk 0.

Convergencia de los Mtodos de Jacobi y Gauss-Seidel

Para las matrices especiales del captulo anterior se tienen buenos criterios de convergencia:

Teorema 5.3.1

Sea

una matriz diagonal estrictamente dominante:

|aij | < |aii |

j=1,j6=i

i = 1, ..., n. Entonces el mtodo de Jacobi y el mtodo de Gauss-Seidel para resolver


sistema Ax = b son convergentes, y el mtodo de Gauss-Seidel converge al menos a la misma

para todo
el

velocidad que el de Jacobi. De forma ms concreta

kAG k kAJ k < 1.


La demostracin de este teorema la podis seguir en la seccin 3 del captulo 8 libro de Hmmerlin
y Homan [4].

Mtodos iterativos de resolucin de sistemas de ecuaciones

Algoritmo 5.2

109

Mtodo de Gauss-Seidel para resolucin de sistemas lineales

Datos de entrada: A[n][n] (Matriz de coecientes del sistema.);


b[n] (vector trmino independiente.);
n (dimensin de A y b);
(precisin para la condicin de parada);
nmax (nmero mximo de iteraciones);
Variables:xa[n];// vector para aproximar la solucin del sistema.
xb[n];// vector para las nuevas aproximaciones de la solucin del sistema.
e[n] ;// un vector residual modicado.
eadmisible = 0;// precisin admisible.
norma = 0; // registro para el cuadrado de la norma del vector residual modicado.
Fujo del programa:

// Condiciones iniciales y evaluacion de la diagonal


for(j=1;j<=n;j++){
xa(j) = 1 ; eadmisible = eadmisible + b(j)2 ;
if(Aj,j == 0){ ERROR; Gauss-Seidel no es aplicable;}
}
eadmisible = 2 eadmisible // ( kbk)2 .
// Vamos a hacer las etapas k = 1, 2, ..., nmax.
for(k=1;k<=nmax;k++){
norma = 0; // 1. clculo del residuo.
for(i=1;i<=n;i++){
e(i) = b(i);
for(j=i;j<=n;j++){
e(i) = e(i) + Ai,j xa(j); // se usan coordenadas de xk .
}
for(j=1;j<i;j++){
e(i) = e(i) + Ai,j xb(j)// se usan coordenadas de xk+1 .
}
norma = norma + e(i)2 ;
e(i) = e(i)/Ai,i ;
xb(i) = xa(i) e(i);
}
if(norma < eadmisible){ Parada, la solucion es xa}
xa = xb
}
Parada, no hay convergencia en nmax iteraciones;
Datos de salida: Solucin x del sistema o mensajes de error si la diagonal de A tiene
algn cero o la iteracin no converge.

110

UMU Mtodos Numricos, 2007-2008

Teorema 5.3.2

Sea

una matriz tridiagonal. Entonces los radios espectrales de las matrices

de los mtodos de Jacobi y Gauss-Seidel cumplen:

(AG ) = (AJ )2
.
As los mtodos de Jacobi y de Gauss-Seidel para resolver el sistema

Ax = b

convergen

simultneamente y cuando lo hacen, el mtodo de Gauss-Seidel converge ms rpidamente que


el de Jacobi.
La demostracin de este teorema la podis seguir en el libro de Ciarlet [3, The 5.3-4].

5.4.

Mtodo de Relajacin

En la construccin de la sucesin de Gauss-Seidel hemos ido deniendo

xk+1

coordenada a

rk :

coordenada conjuntamente con las coordenadas del vector residual

Para i = 1, mientras que i n, haciendo en cada paso i = i + 1:


rik = aii xki +

i1
X

aij xk+1
+
j

j=1

xk+1
i

n
X

xk

(5.2)

j=i+1

1 k
= xki
r
aii i

Los mtodos de relajacin consisten en considerar un peso


de

aij xkj bi

> 0 para corregir las coordenadas

poniendo en la ecuacin 5.2

xk+1
= xki
i

k
r
aii i

Observad que ahora

aii xk+1
= aii xki (aii xki +
i

i1
X
j=1

aii xk+1
+
i

i1
X

n
X

aij xk+1
+
j

j=i+1

aij xk+1
= (1 )aii xki (
j

j=1

aij xkj bi )

n
X

aij xkj bi )

j=i+1

Con esta modicacin, en trminos matriciales, el mtodo de relajacin consiste en considerar

(D + L)xk+1 = ((1 )D U )xk + b.


As, la matriz de la iteracin del mtodo de relajacin es

AR() = (D + L)1 ((1 )D U ).


En la pgina siguiente aparece el algoritmo de este mtodo iterativo.

Mtodos iterativos de resolucin de sistemas de ecuaciones

Algoritmo 5.3

111

Mtodo de Relajacin para resolucin de sistemas lineales

Datos de entrada: A[n][n] (Matriz de coecientes del sistema.);


b[n] (vector trmino independiente.);
n (dimensin de A y b);
(parmetro de construccin);
(precisin para la condicin de parada);
nmax (nmero mximo de iteraciones);
Variables:xa[n];// vector para aproximar la solucin del sistema.
xb[n];// vector para las nuevas aproximaciones de la solucin del sistema.
e[n] ;// un vector de correccin para xa.
eadmisible = 0;// precisin admisible.
norma = 0; // registro para el cuadrado de la norma de la correccin.
Fujo del programa:

// Condiciones iniciales y evaluacion de la diagonal


for(j=1;j<=n;j++){
xa(j) = 1 ; eadmisible = eadmisible + b(j)2 ;
if(Ai,i == 0){ ERROR; Relajacin no es aplicable;}
}
eadmisible = 2 eadmisible // ( kbk)2 .
// Vamos a hacer las etapas k = 1, 2, ..., nmax.
for(k=1;k<=nmax;k++){
norma = 0; // 1. clculo de la correccin.
for(i=1;i<=n;i++){
e(i) = b(i);
for(j=i;j<=n;j++){
e(i) = e(i) + Ai,j xa(j);
}
for(j=1;j<i;j++){
e(i) = e(i) + Ai,j xb(j);
}
2
norma = norma + e(i) ;
e(i) = e(i) /Ai,i ;
xb(i) = xa(i) e(i);
}
if(norma < eadmisible){ Parada, la solucion es xa}
xa = xb
}
Parada, no hay convergencia en nmax iteraciones;
Datos de salida: Solucin x del sistema o mensajes de error si la diagonal de A tiene
algn cero o la iteracin no converge.

Ejemplo 5.4.1

En el caso concreto del ejemplo 5.1.1 el mtodo de Gauss-Seidel no rebaja el

nmero de iteraciones utilizadas por el de Jacobi para aproximar la solucin de

14 , sin embargo el mtodo de relajacin con


la precisin de 10

w = 0.85

Ax = b

con

si que las rebaja

signicativamente pues alcanza la solucin en slo 34 iteraciones.


En relacin con la convergencia de los mtodos de relajacin tenemos el siguiente resultado:

112

UMU Mtodos Numricos, 2007-2008

Teorema 5.4.2
para

Si

A es una matriz simtrica denida positiva, el mtodo de relajacin converge

0 < < 2.
AR() cumple siempre que
Por lo tanto el mtodo de relajacin slo puede ser convergente si 0 < < 2.

En general el radio espectral de la matriz del mtodo de relajacin

(R()) > | 1|.


Si

es una matriz simtrica denida positiva, tridiagonal, los mtodos de Jacobi, Gauss-

Seidel y Relajacin para

0<<2

son convergentes y el mnimo de los radios espectrales de las

matrices de los mtodos de Relajacin se alcanza en

0 =

2
p
,
1 + 1 (AJ )2

de manera que

(AR(0 ) ) = mn {(AR() )} < (AG ) = (AJ )2 < (AJ ).


0<<2

El parmetro

nos da el mtodo iterativo ptimo, con convergencia ms rpida, de entre

los estudiados.
La demostracin de este teorema la podis seguir en la seccin 5.3 del libro de Ciarlet [3].

Bibliografa
[1] A. Delshams A. Aubanell, A. Benseny, tiles bsicos de clculo numrico, Ed. Labor - Univ.
Aut. de Barcelona, Barcelona, 1993.
[2] R.L. Burden and J.D. Faires, Anlisis numrico, 7

a edicin, Thomson-Learning, Mexico,

2002.
[3] P.G. Ciarlet, Introduction l'analyse numrique matricielle et l'optimisation, Masson,
Paris, 1990.
[4] G. Hammerlin and K.H. Homann, Numerical mathematics, Springer-Verlag, New York,
1991.
[5] D.

Kincaid

and

W.

Reading, USA, 1994.

Cheney,

Anlisis numrico, Ed. Addison-Wesley Iberoamericana,

Cap
tulo




Valores y vectores propios


Interrogantes centrales del captulo




Generalidades sobre valores y vectores propios.

El metodo de la potencia. El metodo de deflaci


on de Wielandt.




El metodo de Jacobi.

'
'

Destrezas a adquirir en el captulo



$
$

Localizar aproximadamente los valores propios de una matriz a partir de


sus coeficientes.
Describir los algoritmos correspondientes a distintos metodos de aproximaci
on de valores y vectores propios.
Comparar la convergencia de las aproximaciones proporcionadas por cada
metodo.
Implementar en el ordenador los programas de los metodos de este captulo.
Aplicar los programas construidos de forma efectiva en la b
usqueda de
todos los valores y vectores propios de matrices concretas.

&
&

%
%

116

M
etodos Num
ericos (2007/2008)

Desarrollo de los contenidos fundamentales


Es este captulo abordamos el problema de calcular, o m
as bien aproximar, los valores y
vectores propios de una matriz, con especial atenci
on al caso de las matrices simetricas.
En la primera secci
on indicamos brevemente los problemas de condicionamiento que pueden
presentarse y formulamos el teorema de los crculos de Gerschgorin, que proporciona una primera
aproximaci
on (bastante burda) al problema de localizar los valores propios de una matriz.
A continuaci
on presentamos el metodo de la potencia, que es una manera muy sencilla de
localizar el valor propio de mayor valor absoluto de una matriz (cuando exista) y el correspondiente vector propio, y vemos como el metodo puede explotarse (con el metodo de deflaci
on
de Wielandt) para calcular todos los valores y vectores propios de una matriz siempre que los
valores propios sean todos reales y distintos dos a dos.
En la u
ltima secci
on presentamos el elegante metodo de Jacobi, que permite calcular siempre
los valores propios y pr
acticamente siempre los vectores propios de una matriz simetrica.
Los contenidos del captulo se han extrado principalmente de la Secci
on 6.1 (pp. 111117)
del libro de Ciarlet [2], las Secciones 5.1 y 5.2 (pp. 231250) del texto de Kincaid y Cheney [3],
y la Secci
on 8.4 (pp. 488511) del libro de Burden y Faires [1].

6.1.

Generalidades sobre valores y vectores propios. El teorema


de Gerschgorin

Recordemos que si A Mnn (C) es una matriz con coeficientes complejos, C es un


valor propio de A si existe un vector v C n no nulo (un vector propio asociado al valor
propio ) tal que Av = v. Ello es equivalente a que sea raz del polinomio caracterstico
p() = | Id A| de la matriz A. Es importante resaltar que si la matriz es de coeficientes
reales (lo que ser
a habitualmente el caso), a
un es posible que parte, o incluso todos sus valores
propios sean complejos, pero s
olo a los valores propios reales corresponder
an vectores propios
con coeficientes reales.
El problema del c
alculo de los valores propios de una matriz es equivalente al del c
alculo de
las races de un polinomio. De una parte, los valores propios de una matriz son las races de su
polinomio caracterstico. E inversamente, las races del polinomio
p(x) = a0 + a1 x + + an1 xn1 + xn
son los valores propios de la matriz

an1 an2 . . . a1 a0
1
0
...
0
0

0
1
0
...
0 ,

..
..

.
.
0
0
...
1
0

que se conoce como la matriz compa


nera del polinomio p. Dado que no se dispone de algoritmos
(f
ormulas) que tras un n
umero finito de operaciones proporcionen las races de un polinomio
de grado mayor que cuatro, tampoco podemos esperar disponer de algoritmos directos para
el c
alculo de valores y vectores propios: todos habr
an de ser iterativos y proporcionaran, por

Valores y vectores propios

117

tanto, s
olo aproximaciones (eso s, tan precisas como se requiera) de los valores y vectores
propios buscados.
Por otra parte, los problemas de valores propios suelen presentar problemas de condicionamiento. Un buen ejemplo es la matriz

0 0 ... 0 
1 0 . . . 0 0

,
0
1
0
.
.
.
0
A() =

.. ..

. .
0 0 ...

que en el caso  = 0 tiene todas sus valores propios iguales a cero. Si embargo si  = 10 40
y la dimensi
on de la matriz es 40 entonces, dado que el polinomio caracterstico es 40  =
40
40
10 , todos los valores propios tienen m
odulo 1/10: un error de 10 40 se amplifica a un
39
error 10 veces mayor! Debe se
nalarse, no obstante, que las matrices simetricas no presentan
este tipo de problemas (la raz
on se explica en [2, pp. 3435]), lo que en particular garantiza la
robustez del metodo de Jacobi que explicaremos en la u
ltima secci
on de este captulo.
Los metodos numericos de b
usqueda de valores y vectores propios se dividen en dos clases en
funci
on de que lo que se pretenda sea conseguir todos los valores propios y una base de vectores
propios, o solamente un valor propio (generalmente el de mayor tama
no), como en el metodo
de la potencia que vamos a estudiar en primer lugar.
Para calcular aproximaciones del conjunto de valores propios de una matriz A una idea
explotada asiduamente es construir una sucesi
on de matrices P k tal que la sucesi
on de matrices
Pk1 APk converge hacia una matriz de valores propios conocidos, es decir, diagonal o triangular.
Esta idea est
a en la base de algunos metodos como el de Jacobi para las matrices simetricas que
tambien estudiaremos, o los metodos de Givens-Householder y QR para matrices arbitrarias
(vease el libro de Ciarlet [2]).
Antes de pasar a analizar estos metodos enunciamos y demostramos un resultado conocido
como teorema de los crculos de Gershgorin que permite localizar, de manera poco precisa, la
parte del plano complejo donde estar
an situados los valores propios de una cierta matriz:
Teorema 6.1.1 El conjunto de los valores propios de una matriz A = (a ij ) Mnn (C)
est
a contenido en la uni
on de los discos del plano complejo

X
Di = z C : |z aii |
|aij | , i = 1, 2, . . . n.

1jn,j6=i

n:
Demostracio

Ideas que intervienen:


Si es un valor propio de A y v es un vector propio asociado, dividiendo v por
su norma obtenemos otro vector propio de norma 1.
Sea un valor propio de A. Sea x un vector tal que kxk = 1 y Ax = x y sea k un ndice
tal que |xk | = 1. Como la coordenada k-esima de Ax es x k , tenemos que
xk =

n
X
j=1

akj xj .

118

M
etodos Num
ericos (2007/2008)

En consecuencia,
( akk )xk =

akj xj .

j6=k

Tomando valores absolutos, aplicando la desigualdad triangular y teniendo en cuenta que |x j |


|xk | = 1, se obtiene
X
X
| akk |
|akj ||xj |
|akj |,
j6=k

j6=k

de modo que Dk .

Ejemplo 6.1.2 Los valores propios de la matriz

1 + i 0 14

A = 14
1 41
1
1 3

estar
an en la uni
on de los discos de centro 1 + i y radio 1/4, de centro 1 y radio 1/2, y de centro
3 y radio 2. En particular, si es valor propio de A entonces se tendr
a 1/2 || 5.

6.2.

El m
etodo de la potencia

Este metodo permite, bajo ciertas hip


otesis, aproximar el valor propio de estrictamente mayor
tama
no de una matriz A Mnn (R), si es que tal valor propio existe, con lo que en particular
obtendremos el radio espectral. N
otese que en este caso el valor propio ser
a un n
umero real,
porque el polinomio caracterstico de la matriz tiene coeficientes reales y si un n
umero complejo
es raz del polinomio, es decir, un valor propio de la matriz, entonces su conjugado, que tiene
el mismo m
odulo, tambien ser
a valor propio (recordaremos el motivo en el pr
oximo captulo).
Supondremos en todo lo que sigue que los valores propios est
an ordenados seg
un su m
odulo:
= |1 | = m
ax{|1 | |2 | |n |}.
El metodo de la potencia tambien se conoce como el metodo del cociente de Rayleigh y consiste
en lo siguiente:
se parte de una matriz A y dos vectores x 0 e y;
se construye un sucesi
on de vectores x k y una sucesi
on de cocientes rk como
xk+1 = Axk

y rk =

hxk+1 , yi
;
hxk , yi

entonces, bajo ciertas hip


otesis, la sucesi
on r k converge hacia 1 y los vectores normalizados xk /kxk k convergen a un vector propio de valor propio 1 .
Veamos cu
ales son esas hip
otesis. En primer lugar es necesario elegir x 0 e y de forma que,
si v1 , v2 . . . , vn es una base (en el espacio vectorial C n sobre el cuerpo de los complejos C) de
vectores propios asociados a los valores propios 1 , 2 , . . . , n (suponiendo que tal base existe),
entonces x0 no sea combinaci
on lineal de los vectores v 2 . . . , vn . Tambien suponemos hv1 , yi =
6 0

Valores y vectores propios

119

y hxk , yi =
6 0 para cada k. Finalmente hay que suponer que | 1 | > |2 | lo que excluye la
posibilidad de que este valor propio dominante 1 sea una raz m
ultiple o compleja del polinomio
caracterstico.
Si se cumplen las hip
otesis, lo que normalmente, en la pr
actica, seremos incapaces de verificar
(ese es el principal problema del metodo de la potencia), entonces se demuestra que:
Teorema 6.2.1 Con las hip
otesis anteriores, la sucesi
on r k converge hacia 1 .
n:
Demostracio
Ideas que intervienen:
Si (x) = hx, yi, basta escribir rk en la forma 1
vectorial (k ) convergente a cero.

(1 v1 +k+1 )
(1 v1 +k )

para una sucesi


on

Reescribamos (x) = y (x) = hx, yi y pongamos x0 como combinaci


on lineal de los elementos
de la base,
x0 = 1 v1 + 2 v2 + + n vn .

Observemos que 0 6= 0 por una de las hip


otesis. Notemos que, por la forma en que est
a definida
k
k
la sucesi
on xk , se tiene xk = A x0 , donde A es el resultado de multiplicar la matriz A por
s misma k veces. Como los vectores v j son vectores propios de A, tambien lo ser
an para cada
Ak con valores propios kj , y as

k
n 
X

j
xk = 1 k1 v1 + 2 k2 v2 + + n kn vn = k1 1 v1 +
j vj =: k1 (1 v1 + k ),
1
j=2

con k 0 porque 1 es el valor propio dominante y los cocientes ( j /1 )k tienden a cero.


Por ser lineal (y por tanto continua), y ocurrir que 1 6= 0 y (v1 ) 6= 0 por las hip
otesis
establecidas al principio, podemos tomar lmites en la expresi
on
rk =

(1 v1 + k+1 )
1 (v1 ) + (k+1 )
(xk+1 )
= 1
= 1
(xk )
(1 v1 + k )
1 (v1 ) + (k )

y concluir lmk rk = 1 .

Ejemplo 6.2.2 Considerese la matriz

1 0 1

A = 2 1 0 .
4 0 1

En este caso es muy sencillo calcular directamente las tres races 1 = 3, 2 = 1 y 3 = 1


del polinomio caracterstico. En particular, 3 ser
a el valor propio dominante. Si partimos de
x0 = (1, 0, 0), las primeras iteradas son los vectores
x1 = (1, 2, 4),
x2 = (5, 4, 8),
x3 = (13, 14, 28),
x4 = (41, 40, 80),
x5 = (121, 122, 244).

120

M
etodos Num
ericos (2007/2008)

Si tomamos y = (1, 0, 0), los correspondientes productos escalares ser


an
hx0 , yi = 1,

hx1 , yi = 1,

hx2 , yi = 5,

hx3 , yi = 13,

hx4 , yi = 41,

hx5 , yi = 121,

que proporcionan los cocientes


r1 = 1,
r2 = 5
r3 = 2.6,
r4 = 3.15384615,
r5 = 2.95121951.
Como vemos, bastan cinco iteraciones para aproximar el valor propio dominante con un error
inferior a 0.05.
En el ejemplo anterior la lista de vectores x k sugiere que (1, 1, 2) es un vector propio de valor
propio 3, y en efecto as ocurre. Sin embargo no podemos decir que los vectores x k convergen a
(1, 1, 2): sus m
odulos crecen hacia infinito. En general los vectores x k = k1 (1 v1 + k ) no pueden
converger a ning
un vector propio porque o bien convergen a cero si | 1 | < 1, o bien divergen a
si |1 | > 1. Sin embargo la sucesi
on
yk :=

xk
k1 (1 v1 + k )
=
kxk k
|1 |k k1 v1 + k k

converge al vector propio 1 v1 /k1 v1 k si 1 > 0 y alternativamente (en terminos pares e impares) a los vectores propios 1 v1 /k1 v1 k si 1 < 0.

A la hora de escribir el algoritmo es importante evitar calcular y k obteniendo primero el


correspondiente vector xk y dividiendo luego por su norma, pues como ha quedado dicho los
vectores xk pueden diverger a infinito y los errores se dispararan. En lugar de eso se calcula la
sucesi
on (yk ) por recurrencia. Partiendo de y 0 = x0 /kx0 k, y supuesto yk conocido, se tendr
a que
yk+1 =

A(xk )
kxk k
xk+1
=
=
A(yk ).
kxk+1 k
kxk+1 k
kxk+1 k

Tomando normas,
1 = kyk+1 k =

kxk k
kA(yk )k,
kxk+1 k

es decir,
yk+1 =

A(yk )
.
kA(yk )k

Por tanto la sucesi


on (yk+1 ) puede calcularse manejando siempre vectores uniformemente acotados por la norma de la matriz A, con lo que los errores estar
an bajo control.

Valores y vectores propios

121

Puede probarse adem


as que la velocidad de la convergencia depende del tama
no del cociente.
En concreto y para una constante C se cumple

|rk 1 | C

|2 |
|1 |

k

(ver [3, pp. 236237]). Cuando |2 | est


a pr
oximo a |1 | la convergencia es muy lenta. En este
caso se puede acelerar la convergencia haciendo la sucesi
on t k del metodo de la 2 de Aitken. La
3|
a muy pr
oximo a
velocidad de convergencia de esta sucesi
on t k depende el cociente |
|1 | . Si |3 | est
|2 | no se gana pr
acticamente nada en velocidad; en este caso se puede volver a acelerar aplicando
el metodo de Aitken a tk . La velocidad de convergencia de esta nueva sucesi
on depender
a del
|4 |
.
Se
podr
a
proseguir
con
estas
aceleraciones,
aunque
desde
el
punto
de
vista
de la
cociente |
1|
programaci
on del algoritmo no es aconsejable por el riesgo de hacer demasiadas iteraciones.
En el algoritmo 6.1 describimos el metodo sin incluir la aceleraci
on de Aitken: el lector puede
a
nadirla al algoritmo si as lo desea.
Es sencillo dise
nar diversas variantes del metodo de la potencia que permitan obtener informaci
on sobre otros valores propios de A. Por ejemplo, si A es invertible, entonces es valor
propio de A si y s
olo si 1 lo es de A1 con el mismo vector propio:
Au = u 1 u = A1 u.
En consecuencia, para hallar el valor propio de m
odulo mnimo bastara aplicar el metodo de la
1
potencia a A y calcular el inverso de su valor propio dominante. N
otese que en este caso, en
lugar de calcular la inversa de A previamente para luego ir generando la sucesi
on x k+1 = A1 xk ,
es m
as eficiente resolver el sistema Ax k+1 = xk (guardando las operaciones realizadas sobre la
matriz A para no repetirlas en cada iteraci
on). A este metodo se le denomina el metodo de la
potencia inversa. An
alogamente, los valores propios de la matriz A Id son los n
umeros de
la forma , con los valores propios de A, con lo que los metodos de la potencia y de la
potencia inversa aplicados a esta matriz (a estos metodos se les llama metodos de la potencia y
la potencia inversa con desplazamiento) nos daran, respectivamente, el valor propio m
as alejado
y m
as cercano a . En particular, si tenemos una idea aproximada de donde puede estar situado
un cierto valor propio, el metodo de la potencia inversa con desplazamiento permitir
a calcularlo
con bastante rapidez.

122

M
etodos Num
ericos (2007/2008)

Algoritmo 6.1

Valor propio dominante (m


etodo de la potencia)

Datos de entrada:
A[n][n] (matriz cuyo valor propio dominante queremos obtener);
tol (precisi
on para la condici
on de parada);
nmax (n
umero m
aximo de iteraciones);
v (vector inicial);
y (vector para los productos);
Variables:
uini; // vector para almacenar y k
ufin; // vector para almacenar y k+1
rini; // real para almacenar rk
rfin; // real para almacenar rk+1
Flujo del programa:
// Inicializaci
on de las variables.
rini = 0;
uini = v/kvk;
// Vamos a hacer las etapas m = 1, 2, ..., nmax.
for(m=1;m<=nmax;m++){
if(|huini, yi| = 0){
Parada: el metodo de la potencia no es aplicable
}
ufin = A uini;
if(ufin = 0){
Parada: el metodo de la potencia no es aplicable
}
rfin = hufin, yi/huini, yi;
ufin = ufin/kufink;
if(|rfin rini| < tol){
Parada: rfin es el valor propio dominante y ufin el correspondiente vector propio
}
rini = rfin;
uini = ufin;
}
Parada: no hay convergencia en nmax iteraciones
Datos de salida: Valor propio dominante de la matriz A y correspondiente vector propio,
o mensaje de error si la iteraci
on no converge.

Valores y vectores propios

123

El metodo de deflaci
on de Wielandt enfoca la cuesti
on de una manera m
as ambiciosa. La idea
es partir del metodo de la potencia para obtener el valor propio dominante 2 y un vector propio
asociado, y a partir de ellos generar una matriz (n 1) (n 1) que tenga como valores propios
2 , . . . n y dar una f
ormula que permita calcular los vectores propios de la matriz original a
partir de los de la nueva. Aplicando el metodo de la potencia a la nueva matriz, podremos
obtener 2 y su correspondiente vector propio. Repitiendo el proceso, podremos obtener todos
los valores y vectores propios de la matriz original. En cierto sentido, como vemos, el proceso
recuerda al de la resoluci
on de una ecuaci
on polin
omica: una vez que encontramos una raz del
polinomio, lo factorizamos y el problema queda reducido a encontrar las races de un polinomio
un grado menor. Naturalmente el proceso s
olo puede llegar a buen puerto si todos los valores
propios son reales y distintos (lo que no podemos saber a priori). N
otese que en este caso cada
subespacio propio tiene dimensi
on uno as que, salvo multiplicaci
on por constantes, existen n
vectores propios.
Dicho sea de paso, estos vectores propios formar
an una base. En efecto, si v 1 , . . . , vn son
vectores propios de valores propios 1 , . . . , n , con i 6= j si i 6= j, entonces los vectores
v1 , . . . , vn son linealmente independientes. Esto es f
acil de demostrar por inducci
on sobre n. La
afirmaci
on es obvia si n = 1. Supong
amosla cierta para n 1 y supongamos que 1 v1 + 2 v2 +
. . . n vn = 0. Entonces, por un lado, multiplicando por 1 ,
1 1 v1 + 2 1 v2 + . . . + n 1 vn = 0,
y por otro, multiplicando por A,
1 1 v1 + 2 2 v2 + . . . + n n vn = 0.
Restando ambas igualdades
2 (2 1 )v2 + . . . n (n 1 )vn = 0,
y como los n
umeros j 1 son distintos de cero, la hip
otesis de inducci
on implica 2 = =
n = 0, con lo que 1 v1 = 0 y tambien 1 = 0. Hemos probado que los vectores v1 , . . . , vn son
linealmente independientes.
N
otese que el mismo argumento demuestra que si un valor propio 1 es distinto del resto
y v2 , . . . , vn es una familia linealmente independiente de vectores propios de valores propios
2 , . . . , n , entonces cada vector propio v1 de 1 forma, junto con v2 , . . . , vn , una base.
El metodo de deflaci
on de Wielandt se basa en el siguiente resultado:
Teorema 6.2.3 Supongamos que 1 es un valor propio de A con vector propio v 1 y x es un
vector tal que xT v1 = 1. Entonces 0 es valor propio de
B = A 1 v1 xT

(6.1)

con vector propio v1 . Si adem


as w2 . . . , wn son vectores propios de B de valores propios 2 , . . . , n
y 0 6= j 6= i para cada j 6= 1, entonces los vectores
vj = (j 1 )wj + 1 (xT wj )v1
son vectores propios de A con valores propios j , j = 2, . . . , n.

(6.2)

124

M
etodos Num
ericos (2007/2008)

n:
Demostracio
Ideas que intervienen:
Dados los vectores v = (v1 , . . . , vn ) y x = (x1 , . . . , xn ), vxT es la matriz n n
que tiene como coeficiente ij el producto v i xj .
Por la asociatividad del producto de matrices, si w es otro vector, entonces el
resultado de multiplicar la matriz vx T por w es el de multiplicar el vector v por
el producto escalar xT w.
Por ser 1 valor propio de vector propio v1 , por la propiedad asociativa del producto de
matrices y usando la hip
otesis xT v1 = 1,
Bv1 = Av1 1 (v1 xT )v1 = 1 v1 1 v1 (xT v1 ) = 1 v1 1 v1 = 0.
Demostramos a continuaci
on que los vectores v j son vectores propios de A de valor propio
j , j = 2, . . . , n.
Notemos para empezar que los vectores v j son no nulos porque j 6= 0 para cada j 6= 1, cada
par de vectores wj , v1 es linealmente independiente y j 1 6= 0 . Adem
as,
Avj

= (A 1 v1 xT + 1 v1 xT )vj

= Bvj + 1 (v1 xT )vj

= B[(j 1 )wj + 1 (xT wj )v1 ]

+1 (v1 xT )[(j 1 )wj + 1 (xT wj )v1 ]

= j (j 1 )wj

+1 (j 1 )(v1 xT )wj + 1 (xT wj )1 (v1 xT )v1

= j (j 1 )wj

+1 (j 1 )(xT wj )v1 + 1 1 (xT wj )v1

= j (j 1 )wj

+j 1 (xT wj )v1

= j vj ;
en la tercera igualdad hemos usado que w j es vector propio de B de valor propio j y que
Bv1 = 0.

En el metodo de deflaci
on de Wielandt el vector x se elige de acuerdo con la f
ormula

ak1

a
1
k2
,
(6.3)
x=

1 v1,k ...

akn

donde v1,k es una componente no nula del vector v1 (suele elegirse la de mayor valor absoluto
para minimizar los errores de c
alculo) y (a k1 , ak2 , . . . , akn ) es la fila k-esima de la matriz A. En
efecto, observese que (ak1 , ak2 , . . . , akn )T v1 es la componente k-esima del vector Av 1 = 1 v1 , es
decir,
(ak1 , ak2 , . . . , akn )T v1 = 1 v1,k

Valores y vectores propios

125

y por tanto xT v1 = 1.
La ventaja de escoger x de esta manera radica en que la matriz B = A 1 v1 xT tiene ceros
en la fila k-esima, dado que la componente c kj de la matriz 1 v1 xT es el n
umero

1 v1,k xj = 1 v1,k

1
akj = akj .
1v1,k

Ello significa que si w es vector propio de B de valor propio 6= 0, entonces w k = 0. M


as a
un,
si A0 es la matriz (n 1) (n 1) que resulta de eliminar la fila y columna k-esimas de A y v 0
es un vector propio de A0 de valor propio , entonces el vector w que resulta de a
nadir a v 0 un
cero en el lugar k-esimo es un vector propio de B de valor propio .
En resumen, el algoritmo tiene las siguientes fases:

(i) Se obtiene el valor propio dominante 1 de A por el metodo de la potencia y su vector


propio asociado.

(ii) Se identifica la coordenada k-esima de v 1 de mayor valor absoluto y se construye el vector


x de acuerdo con la f
ormula (6.3).

(iii) Se construye la matriz B seg


un la formula (6.1) y, tras quitarle la fila y columna k-esimas,
la matriz A0 M(n1)(n1) (R).
(iv) A partir de los valores propios 2 , . . . , n de A0 y la correspondiente base de vectores
propios v20 , . . . , vn0 , construimos vectores propios w2 , . . . , wn para B a
nadiendo ceros en el
lugar k-esimo.

(v) Finalmente, a partir de la f


ormula (6.2) generamos los vectores propios v 2 , . . . , vn de A
que junto a v1 completar
an la base de vectores propios buscada.

Notemos que se trata de un algoritmo recursivo: la parte clave del es el punto 4, donde el
algoritmo se llama a s mismo, de modo que la dimensi
on de la matriz se va reduciendo hasta
que se llega a una matriz de dimensi
on uno, que tiene trivialmente como valor propio su u
nica
componente y como vector propio la unidad. Tal y como lo hemos escrito a continuaci
on, se ha
determinado que cada vez que llame al metodo de la potencia fije los vectores iniciales x 0 e y
al azar.

126

M
etodos Num
ericos (2007/2008)

Algoritmo 6.2

Valores y vectores propios (m


etodo de deflaci
on de Wielandt)

Datos de entrada:
A[n][n] (matriz cuyos valores propios queremos obtener);
tol (precisi
on para la condici
on de parada);
nmax (n
umero m
aximo de iteraciones);
Variables:
Sol[n][n + 1]; // matriz para devolver los resultados
B[n 1][n 1]; // matriz deflacionada
Soldefl[n 1][n]; // matriz con los valores y vectores propios de B
vectvaldom; // vector para guardar el vector y valor propio dominantes de A
u, lambda // vector y real para guardar el contenido de vectvaldom
v, y, x, w; // vectores auxiliares
max, lambdadefl; // reales auxiliares
k; // entero auxiliar
Flujo del programa:
// El caso n = 1 es trivial.
if(n = 1){
Sol = (1, A[0][0]);
Parada: caso trivial
}
// Si n = 1 calculamos los valores y vectores propios recursivamente.
else{
// Elegimos al azar v e y para el metodo de la potencia.
for(i=0;i<n;i++){
v[i] = Math.random();
y[i] = Math.random();
}
// Aplicamos el metodo de la potencia para obtener el valor propio dominante.
vectvaldom = potencia(A, tol, nmax, v, y);
for(i=0;i<n;i++){
u[i] = vectvaldom[i];
}
lambda = vectvaldom[n];
// Elegimos la componente m
as grande u[k] del vector propio u.
aux = 0;
k = 0;
for(i=0;i<n;i++){
if(|u[i]|>|aux|){
aux = u[i];
k = i;
}
}

Valores y vectores propios

Algoritmo 6.2

127

Valores y vectores propios (cont. m


et. de deflaci
on de Wielandt)

// Calculamos la matriz deflacionada B a partir de k.


x = A[k][]/(lambda aux);
B A lambda u xT ;
// Calculamos los valores y vectores propios de B.
Soldefl = deflacionWielandt(B, tol, nmax);
if(|Soldefl[n-2][n-1]-lambda|<tol){
Parada: valor propio m
ultiple
}
// Obtenemos los valores y vectores propios de A.
for(i=0;i<n-1;i++){
for(j=0;j<k;j++){
w[j] = Soldefl[i][j];
}
w[k] = 0;
for(j=k+1;j<n;j++){
w[j] = Soldefl[i][j 1];
}
lambdadefl = Soldefl[i][n 1];
w = (lambdadefl lambda) w + lambda (x T w) u;
for(j=0;j<n;j++){
Sol[i][j] = w[j]/kwk;
}
Sol[i][n] = lambdadefl;
}
Sol[n 1][] = vectvaldom;
}
Datos de salida: Valores y vectores propios de la matriz A y correspondiente vector
propio, o mensaje de error si el metodo no funciona.

Ejemplo 6.2.4 A continuaci


on ilustramos el metodo de deflaci
on de Wielandt aplic
andolo al
c
alculo de los valores y vectores propios de la matriz

4 1 0
2
2 5 0
1

A=
.
3 1 1 3/2
0
0 0
8

Necesitamos para empezar el valor propio dominante 1 y el correspondiente vector propio


asociado. Para ello usaramos el metodo de la potencia, que nos proporcionara 1 = 8 y
v1 = (1, 0, 0, 2). (Por supuesto, en la pr
actica el metodo de la potencia no proporcionar
a el
valor exacto 8, sino una muy buena aproximaci
on, y lo mismo ocurrir
a con v 1 , que adem
as
aparecer
a dividido por su norma.) Por tanto k = 4, de donde
x = 1/(1 v1,4 )(a41 , a42 , a43 , a44 ) = (1/(8 2))(0, 0, 0, 8) = (0, 0, 0, 1/2).

128

M
etodos Num
ericos (2007/2008)

A continuaci
on calculamos
B = A 1 (v1 xT )

4 1 0
2
0 0 0 1/2
2 5 0
0 0 0 0
1

=
8

3 1 1 3/2
0 0 0 0
0
0 0
8
0 0 0 1

4 1 0
2
0 0 0 4
2 5 0

0 0 0 0
=

3 1 1 3/2 0 0 0 0
0
0 0
8
0 0 0 8

4 1 0 2
2 5 0
1

=
.
3 1 1 3/2
0
0 0
0

Suprimiendo la cuarta fila y columna de B llegamos

4 1

0
A = 2 5
3 1

0 .
1

De nuevo, supongamos que tras aplicar el metodo de la potencia obtenemos el valor propio
dominante 2 = 6 de A0 y un vector propio asociado, digamos v 20 = (1, 2, 1). En este caso
k = 2, con lo que
0
x0 = 1/(2 v2,2
)(a021 , a022 , a023 ) = (1/(6(2)))(2, 5, 0) = (1/6, 5/12, 0).

Ahora
B 0 = A0 2 (v20 (x0 )T )

4 1 0
1/6 5/12 0

= 2 5 0 6 1/3
5/6
0
3 1 1
1/6 5/12 0

4 1 0
1 5/2 0

= 2 5 0 2
5
0
3 1 1
1 5/2 0

3 3/2 0

= 0 0 0 .
2 3/2 1

A partir la matriz B 0 , suprimiendo la segunda fila y columna, obtenemos


!
3 0
00
A =
.
2 1
A esta matriz aplicaramos de nuevo el metodo de la potencia (por supuesto para una matriz 22
siempre podemos hacer los c
alculos a mano, pero adoptamos el punto de vistade la m
aquina,

Valores y vectores propios

129

que no distingue entre matrices grandes y peque


nas) y obtendramos su valor propio dominante,
3 = 3, y el correspondiente vector propio asociado, v 300 = (1, 1). En este caso tomamos k = 1,
de donde
00
x00 = 1/(3 v3,1
)(a0011 , a0012 ) = (1/(3 1))(3, 0) = (1, 0).
Ahora
B 00 = A00 3 (v300 (x00 )T )
!
!
3 0
1 0
=
3
2 1
1 0
!
0 0
=
.
1 1
Tras suprimir la primera fila y columna llegamos a A 000 = (1), que tiene trivialmente como vector
propio 4 = 1 y como vector propio asociado v4000 = (1).
Ya sabemos que los cuatro valores propios de A son 1 = 8, 2 = 6, 3 = 3, 4 = 1 y que el
vector propio asociado a 1 es v1 = (1, 0, 0, 2). Para calcular los otros tres tenemos que deshacer
el camino andado. Para empezar generamos
w400 = (0, 1)
a
nadiendo un cero en la primera componente a v 4000 y, a partir de el, el vector
v400 = (4 3 )w400 + 3 ((x00 )T w400 )v300
= 2(0, 1) + 3(0)(1, 1)
= (0, 2).

As pues, a los valores propios de A00 , 3 = 3 y 4 = 1, corresponden los vectores propios


v300 = (1, 1), que obtuvimos con el metodo de la potencia, y v 400 = (0, 2).
A continuaci
on construimos

w30 = (1, 0, 1)
y
w40 = (0, 0, 2)
a partir de los vectores v300 y v400 a
nadiendo un cero en la segunda componente. En este punto
calculamos
v30 = (3 2 )w30 + 2 ((x0 )T w30 )v20

= (3)(1, 0, 1) + 6(1/6)(1, 2, 1)
= (3, 0, 3) + (1, 2, 1)
= (2, 2, 2),

y
v40 = (4 2 )w40 + 2 ((x0 )T w40 )v20

= (5)(0, 0, 2) + 6(0)(1, 2, 1)
= (0, 0, 10),

130

M
etodos Num
ericos (2007/2008)

que son vectores propios de valores propios 3 = 3 y 4 = 1 para A0 , a los que tenemos que
a
nadir v20 = (1, 2, 1), que era el vector inicial de valor propio 2 = 6 que proporcionaba el
metodo de la potencia.
Ya casi hemos terminado. Generamos
w2 = (1, 2, 1, 0)
w3 = (2, 2, 2, 0)
y
w4 = (0, 0, 10, 0)
a partir de los vectores v20 , v30 y v40 a
nadiendo un cero en la cuarta componente. (N
otese que
podemos tomar, si as lo deseamos, los vectores m
as sencillos (1, 1, 1, 0) y (0, 0, 1, 0) en lugar de
w3 y w4 , pues son igualmente vectores propios de B). Finalmente
v2 = (2 1 )w2 + 1 (xT w2 )v1

= (2)(1, 2, 1, 0) + 8(0)(1, 0, 0, 2)
= (2, 4, 2, 0),

v3 = (3 1 )w3 + 1 (xT w3 )v1

= (5)(2, 2, 2, 0) + 8(0)(1, 0, 0, 2)
= (10, 10, 10, 0),

y
v4 = (3 1 )w4 + 1 (xT w4 )v1

= (7)(0, 0, 10, 0) + 8(0)(1, 0, 0, 2)

= (0, 0, 70, 0),


junto a v1 = (1, 0, 0, 2), completan la base de vectores propios de A que busc
abamos. Naturalmente, en lugar de v2 , v3 y v4 podemos usar respectivamente los vectores propios m
as sencillos
(1, 2, 1, 0), (1, 1, 1, 0) y (0, 0, 1, 0).

6.3.

El m
etodo de Jacobi

Este metodo se emplea cuando buscamos todos los valores propios y una base de vectores
propios de una matriz simetrica real.
Recordemos que las matrices simetricas son diagonalizables: existe una matriz ortogonal
(es decir, una matriz cuya traspuesta coincide con su inversa) tal que

0
A =
..
.
0
T

... 0
.
.
2 . . ..

.. ..
.
. 0
. . . 0 n
0

Valores y vectores propios

131

es diagonal con los valores propios de A en la diagonal. En particular todos los valores propios
de A son reales (aunque pueden repetirse) y los vectores columna de la matriz forman una
base ortonormal de vectores propios, siendo el vector de la columna i el vector propio asociado
al valor propio i .
El metodo de Jacobi consiste en ir construyendo una sucesi
on de matrices ortogonales elementales(por su forma simple) (Ok )
de
manera
que
la
sucesi
on de matrices:
k=1
A0 = A,

Ak = OkT Ak1 Ok = (O1 Ok )T A(O1 Ok ) (k 1)

converja hacia una matriz diagonal formada por los valores propios. As, la esperanza ser
a que
la sucesi
on de matrices ortogonales 0 = Id y k = k1 Ok = O1 Ok converja hacia una
matriz ortogonal cuyas columnas formen una base ortogonal de vectores propios.
La idea de la construcci
on es la de ir anulando en cada paso k dos elementos de la matriz
Ak que esten fuera de la diagonal y en posiciones simetricas (los correspondientes a ciertos
coeficientes pq y qp). Para ello se utilizan rotaciones en el plano determinado por los vectores
p-esimo y q-esimo de la base can
onica de R n descritas por las matrices ortogonales:

O=

1
..

sen

cos

..
.
1

.
1
cos
1
..

sen

Lema 6.3.1 Sean p y q enteros 1 p < q n y un n


umero real a los cuales asociamos la
matriz ortogonal O descrita m
as arriba.
(i) Si A = (aij ) es una matriz n n simetrica, entonces la matriz
B = O T AO = (bij )

tambien es simetrica y cumple

n
X

b2ij

i,j=1

n
X

a2ij .

i,j=1

umero
(ii) Si apq 6= 0, existe un u
nico valor de ( 4 , 4 ] \ {0} tal que bpq = 0. El n
est
a determinado por la ecuaci
on
aqq app
cot 2 =
.
2apq
Para este valor de se cumple
n
X
i=1

b2ii =

n
X
i=1

a2ii + 2a2pq .

132

M
etodos Num
ericos (2007/2008)

n:
Demostracio
Ideas que intervienen:
La norma

kAkDOS =

n
X

i,j=1

1/2

a2ij

puede expresarse en terminos de la traza matricial y esta es invariante por cambios de base.
Si se multiplica una matriz A por la derecha por otra que tiene como vectores
fila, salvo los de las filas p y q, los vectores de la base can
onica, entonces la matriz
producto tiene los mismos vectores columna que A excepto los correspondientes
a las columnas p y q.
(i) Como A es simetrica,
B T = (O T AO)T = O T AT (O T )T = O T AO = B,
as que B es simetrica tambien.
P
Por otra parte, recordemos que la traza tr C = ni=1 cii de una matriz C = (cij ) se conserva
por cambios de base, es decir, si P es invertible entonces tr(P 1 CP ) = tr C. En particular, si
recordamos que O T = O 1 , tendremos
n
X

b2ij

= tr(B T B) = tr(BB) = tr(O T AOO T AO)

i,j=1

= tr(O 1 AAO) = tr(AA) = tr(AT A)


n
X
=
a2ij .
i,j=1

(ii) Por la estructura de la matriz O, si C es una matriz cualquiera el resultado del producto
CO es una matriz con los mismos vectores columna que C excepto que los vectores columna
p-esimo y q-esimo de C, vp y vq , son reemplazados respectivamente por cos v p sen vq y
sen vp + cos vq . An
alogamente, el producto O T C tiene los mismos vectores fila que C excepto
que los vectores fila p-esimo y q-esimo de C, w p y wq , son reemplazados respectivamente por
cos wp sen wq y sen wp + cos wq .
As pues, B y A tienen los mismos coeficientes salvo los de las filas y las columnas p y q.
M
as a
un, los coeficientes de los lugares pp, pq, qp y qq est
an conectados por la igualdad
!
!
!
!
cos sen
app apq
cos sen
bpp bpq
,
=
aqp aqq
bqp bqq
sen cos
sen cos
y razonando como en (i) obtenemos a2pp + a2qq + 2a2pq = b2pp + b2qq + 2b2pq independientemente de
lo que valga .
Haciendo operaciones y usando las conocidas f
ormulas trigonometricas cos 2 = cos 2 sen2
y sen 2 = 2 sen cos , obtenemos
bpq = bqp = apq cos 2 +

app aqq
sen 2.
2

Valores y vectores propios

133

Por tanto, si elegimos como en el enunciado de (ii) se tendr


a que b pq = bqp = 0 y en consecuencia, dado que los coeficientes en las diagonales principales de A y B son los mismos excepto
los correspondientes a los lugares pp y qq, obtenemos
n
X
i=1

b2ii =

n
X

a2ii + 2a2pq .

i=1

Enfatizamos que la aplicaci


on 7 cot 2 lleva biyectivamente ( 4 , 4 ] \ {0} a R as que
est
a bien definido y es u
nico.

Antes de pasar a describir el algoritmo y estudiar los resultados de convergencia es conveniente hacer las siguientes observaciones:
2

(i) Si vemos Mnn (R) como el espacio eucldeo Rn y en el usamos la norma eucldea k kDOS
habitual, es decir,

1/2
n
X
a2ij
kAkDOS =
i,j=1

(en el libro de Ciarlet se usa la notaci


on kk E para referirse a esta norma), el Lema 6.3.1(i)
nos dice que la transformaci
on B = O T AO deja invariante a la norma. El Lema 6.3.1(ii),
por su parte, muestra que la suma de los cuadrados de la diagonal de B aumenta al tiempo
que los coeficientes bpq y bqp se anulan.

(ii) Esta transformaci


on s
olo afecta a las filas p y q, y las columnas p y q. De forma m
as
precisa:
bpi = bip = aip cos aiq sen si i 6= p e i 6= q;
bqi = biq = aip sen + aiq cos si i 6= p e i =
6 q;
bpp = app cos2 + aqq sen2 apq sen 2;
bqq = app sen2 + aqq cos2 + apq sen 2;
a a
bpq = bqp = apq cos 2 + pp 2 qq sin 2=0;
bij = aij en el resto de los casos.
Resulta que las relaciones entre las f
ormulas trigonometricas permiten describir los coeficientes de B a partir de los A sin necesidad de calcular explcitamente . En efecto, sea
x = cot 2 =

aqq app
2apq

(6.4)

y escribamos t = tg . Entonces
x = cot 2 =

1 tg 2
1 t2
cos2 sen2
=
=
,
2 sen cos
2 tg
2t

y de aqu t2 + 2xt 1 = 0. Despejando t en funci


on de x obtenemos t = x
el dato adicional de que |t| 1 (porque || /4) podemos precisar m
as:
(

x + x2 + 1 si x 0,

t=
x x2 + 1 si x < 0.

x2 + 1, y con

(6.5)

134

M
etodos Num
ericos (2007/2008)

De nuevo recordando que || /4 (con lo que cos > 0) y usando que tg 2 + 1 = 1/ cos 2 ,
obtenemos
1
+1

(6.6)

t
s=
2
t +1

(6.7)

c=

t2

para c = cos y s = sen . Ahora podemos encontrar expresiones muy convenientes para b pp y
bqq :
bpp = c2 app + s2 aqq 2scapq

= app + s2 (aqq app ) 2scapq


2t
t2
= app + 2
x2apq 2
apq
t +1
t +1
2t
t(1 t2 )
apq 2
apq
= app + 2
t +1
t +1
= app tapq ;

an
alogamente, bqq = aqq + tapq .
Ya estamos en condiciones de describir el metodo de Jacobi:
(i) Partiendo de A0 = A y 0 = Id se van construyendo una sucesi
on de matrices A k =
OkT Ak1 Ok mediante cambios de base dados por rotaciones y las correspondientes matrices
k = k1 Ok de cambio de base, con lo que Ak = Tk Ak .
(ii) Supuesta construida Ak = (aij ), se elige un termino apq con p < q para anular con una
rotaci
on; para ello seguiremos el llamado criterio de Jacobi cl
asico, que consiste tomar el
termino de mayor tama
no,
|apq | = m
ax{|aij | : i < j};
observese que si apq = 0 entonces la matriz es diagonal y tras un n
umero finito de pasos
hemos obtenido la matriz k ortogonal cuyos vectores columna son la base de vectores
propios buscada (con los correspondientes valores propios los terminos en la diagonal de
Ak ).
(iii) Se definen x, t, c y s con arreglo a las f
ormulas (6.4)-(6.7) y se calculan los coeficientes la
matriz Ak+1 = (bij ) de acuerdo con las f
ormulas
bpi = bip = caip saiq
si i 6= p e i 6= q,
bqi = biq = saip + caiq
si i 6= p e i 6= q,
bpp = app tapq ,
bqq = aqq + tapq ,
bpq = bqp = 0,
bij = aij
en el resto de los casos.
(iv) Se calculan los coeficientes de la matriz k+1 = (ij ) a partir de los coeficientes de
k = (oij ) de acuerdo con las f
ormulas
ip = coip soiq ,

Valores y vectores propios

135

iq = soip + coiq ,
ij = oij
si j 6= p, q.
(v) Como las sumas de los cuadrados de los coeficientes de las matrices A k son siempre las
mismas pero las sumas de los cuadrados de sus coeficientes diagonales son estrictamente
crecientes, esperamos que la sucesi
on (A k ) converja a una matriz diagonal en la que
encontraremos todos los valores propios de A, y que la sucesi
on de los productos de
rotaciones k converja hacia una matriz ortogonal cuyas columnas determinan una
base de vectores propios de A.
Ejemplo 6.3.2 Aplicamos el primer paso del algoritmo de Jacobi a la matriz

1 1 3
4
1 4
0 1

A=
.
3
0
0 3
4 1 3 1
En este caso p = 1 y q = 4, con a14 = 4. Entonces

11
a44 a11
=
= 0,
2a14
8
p
t = x + x2 + 1 = 1,

1
2
=
,
c=
2
2
t +1

2
t
=
.
s=
2
2
t +1

x=

Por tanto, si A1 = (bij ), tendremos que

b12
b13
b14

b11 = a11 ta14 = 1 4 = 3,

2
2
= b21 = ca21 sa24 =
(1)
(1) = 0,
2
2

2
2
(3)
(3) = 3 2,
= b31 = ca31 sa34 =
2
2
= b41 = 0,
b22 = a22 = 4,

b23 = b32 = a32 = 0,


b24 = b42 = sa21 + ca24

b33 = a33 = 0,
b34 = b43 = sa31 + ca34

2
2
=
(1) +
(1) = 2,
2
2

2
2
(3) +
(3) = 0,
=
2
2

b44 = a44 + ta14 = 1 + 4 = 5.

136

M
etodos Num
ericos (2007/2008)

As pues,

3
0
3 2
0

0
4
0
2

A1 =
.
3 2
0
0
0

0
5
0
2

Finalmente, en esta primera etapa la matriz 1 es la propia matriz O1 , es decir,

c
0

1 =
0
s

0
1
0
0


s
2/2

0
0
=
0 0

c
2/2

0
0
1
0

0
1
0
0


0
2/2
0
0

.
1
0

0
2/2

A la hora de escribir un algoritmo con este metodo usaremos como condici


on de parada
que los coeficientes de Ak fuera de la diagonal son suficientemente peque
nos o bien que se
realice un n
umero excesivo de iteraciones. En el primer caso tendremos aproximados los valores
propios y una base de vectores propios, mientras que en el segundo habremos parado para
evitar entrar en un bucle infinito. De hecho probaremos enseguida que la sucesi
on (A k ) siempre
converge a una matriz diagonal con los valores propios de A pero puede ocurrir (si existen valores
propios repetidos) que las matrices ( k ) no converjan. Por ello, en el caso en que al detener
el proceso veamos que aparecen valores propios repetidos (esto es, si sus aproximaciones son
suficientemente parecidas) lanzaremos un mensaje de advertencia (que no de error) pues los
vectores de k en el momento de la parada no tienen por que aproximar a los vectores propios
buscados (aunque en todo caso proporcionar
an una base ortonomal).
Vale la pena subrayar que para la matriz

1 1 3
4
1 4
0 1

A=

3
0
0 3
4 1 3 1

anterior, el algoritmo proporciona en tan s


olo 4 iteraciones los cuatro valores propios 1 = 6,
2 = 3 = 3 y 4 = 6 y la base ortonormal de vectores propios

v1 = (1, 0, 1, 1)/ 3,

v2 = (1, 2, 0, 1)/ 6,

v3 = (1, 0, 2, 1)/ 6,

v4 = (1, 1, 0, 1)/ 3
con la m
axima precisi
on de la m
aquina.

Valores y vectores propios

Algoritmo 6.3

Valores y vectores propios (m


etodo de Jacobi)

Datos de entrada:
A[n][n] (matriz simetrica cuyos valores propios queremos obtener);
tol (precisi
on para la condici
on de parada);
nmax (n
umero m
aximo de iteraciones);
Variables:
O[n][n]; // matriz auxiliar donde se guardan los vectores propios aproximados
B[n][n]; // matriz auxiliar donde se guardan los valores propios aproximados
Sol[n][n + 1]; // matriz para devolver los resultados
p; q; x; t; c; s; aux; // variables auxiliares
Flujo del programa:
B = A;
O = Id; // se inicializa O a la identidad
// Vamos a hacer las etapas k = 1, 2, ..., nmax.
for(k=1;k<=nmax;k++){
aux = 0;
// Elecci
on del coeficiente m
as grande.
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(|Bij | > aux){
p = i;
q = j;
aux = |Bij |;
}
}
}

137

138

M
etodos Num
ericos (2007/2008)

Algoritmo 6.3

Valores y vectores propios (m


etodo de Jacobi), continuaci
on

if(aux < tol){


for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(|Bii Bjj | < tol){
Advertencia: posible error en los vectores propios
}
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
Solij = Oji ; // se escriben los vectores propios soluci
on
}
on
Solin = Bii ; // se escriben los valores propios soluci
}
Parada: los vectores y valores propios buscados est
an en Sol
}
// C
alculo de los coeficientes modificados de B.
x = (Bqq Bpp )/(2 Bpq );
if(x 0){
t = x + 1 + x x;
}
else{

t = x 1 + x x;
}

c = 1/ 1 + t t;
s = t/ 1 + t t;
for(i=0;i<n;i++){
aux = Oip ;
Oip = c aux s Oiq ;
Oiq = s aux + c Oiq ;
}
Bpp = Bpp t Bpq ;
Bqq = Bqq + t Bpq ;
Bpq = Bqp = 0;
for(i=0;i<n;i++){
if(i 6= p, q){
aux = Bip ;
Bpi = Bip = c aux s Biq ;
Bqi = Biq = s aux + c Biq ;
}
}

}
Parada: no hay convergencia en nmax iteraciones
Datos de salida: Valores y vectores propios de la matriz A, mensaje de error si la iteraci
on
no converge, mensaje de advertencia si se repiten valores propios.

Valores y vectores propios

139

El siguiente teorema garantiza la convergencia del metodo de Jacobi cl


asico. La clave de su
prueba esta en este lema de topologa:
Lema 6.3.3 Si (xk ) es una sucesi
on acotada en un espacio vectorial normado de dimensi
on
finita X sobre R, (xk ) posee una cantidad finita de puntos de acumulaci
on y lm k kxk+1
xk k = 0, entonces (xk ) es una sucesi
on convergente.
n:
Demostracio
Ideas que intervienen:
No es restrictivo suponer X = Rn .
Para los puntos de acumulaci
on ai de la sucesi
on (xk ) encontramos peque
nas
bolas centradas en ai y separadas a una distancia positiva unas de otras.
Usando que toda sucesi
on acotada en R n tiene un punto de acumulaci
on vemos
que a partir de un cierto ndice todos los terminos de la sucesi
on est
an en la
uni
on de las bolas.
Usamos la hip
otesis lmk kxk+1 xk k = 0 para concluir que, de hecho, los
terminos de sucesi
on est
an todos en la misma bola.
Es sabido que dos espacios vectoriales normados sobre R de la misma dimensi
on (finita)
son homeomorfos. Por ejemplo, es sencillo demostrar que cualquier isomorfismo lineal es un
homeomorfismo. Por tanto podemos suponer, sin perdida de generalidad, que X = R n .
Sean ai , 1 i M , los puntos de acumulaci
on de la sucesi
on (x k ). Entonces, para cada
 > 0, existe un natural l() tal que si k l() entonces
xk

M
[

B(ai , )

i=1

(aqu, B(a, ) = {x Rn : kx ak < } es la bola abierta de centro a y radio para la


distancia inducida por la norma k k). La raz
on es que, en caso contrario, podramos extraer
una subsucesi
on (xkm ) de (xk ) con la propiedad de que
xk m
/

M
[

B(ai , )

i=1

para cada m. Pero sabemos que en R n cada sucesi


on acotada, en particular (x km ), posee alg
un
punto de acumulaci
on. Este punto de acumulaci
on, que tambien lo es de (x k ), no puede estar en
ninguna de las bolas B(ai , ), en contradicci
on con el hecho de que los puntos a i son los u
nicos
puntos de acumulaci
on de (xk ).
Elijamos en particular
0 =

1
mn kai ai0 k > 0
3 i6=i0

y encontremos l0 tal que


xk

M
[

i=1

B(ai , 0 ),

kxk+1 xk k < 0

140

M
etodos Num
ericos (2007/2008)

para cada k l0 (tambien hemos usado la hip


otesis lm k kxk xk+1 k = 0).
Sea i0 tal que xl0 B(ai0 , 0 ). Como kxl0 ai0 k < 0 y kxl0 +1 xl0 k < 0 , obtenemos
kxl0 +1 ai0 k < 20 por la desigualdad triangular y por tanto, gracias de nuevo a la desigualdad
triangular y a la definici
on de 0 , kxl0 +1 ai k > 0 para cada i 6= i0 . Esto significa que xl0 +1
no puede pertenece a ninguna de las bolas B(a i , 0 ) excepto tal vez a la bola B(ai0 , 0 ). Como
on es que x l0 +1 B(ai0 , 0 ).
de hecho xl0 +1 ha de estar en alguna de las bolas, la conclusi
/ B(ai , 0 ) si i 6= i0 para cada
Reiterando el razonamiento, concluimos que x k B(ai0 , 0 ) y xk
k l0 .
Vemos, pues, que ninguno de los puntos a i , i 6= i0 , puede ser punto de acumulaci
on de (x k ), es
decir, ai0 es el u
nico punto de acumulaci
on de (x k ). Esto equivale a decir que lmk xk = ai0 .

Teorema 6.3.4 (convergencia del m
etodo de Jacobi cl
asico) La sucesi
on (A k ) de matrices obtenidas por el metodo de Jacobi cl
asico para una matriz simetrica A es convergente
hacia una matriz diagonal,
diag((1) , . . . , (n) ),
en la que aparecen los valores propios 1 , . . . , n de A convenientemente permutados. Si suponemos adem
as que los valores propios de la matriz A son distintos entre s, la sucesi
on de
matrices (k ) definida por
k = O1 O2 Ok
converge hacia una matriz ortogonal cuyas columnas determinan una base de vectores propios
de A con valores propios los correspondientes en la anterior matriz diagonal.
n:
Demostracio
Demostramos la primera parte del teorema. Para ello seguiremos el siguiente esquema:
Ideas que intervienen:
Si Ak = (akij ) = Dk + Bk , con Dk = diag(ak11 , . . . , aknn ), probamos que
lmk Bk = 0.
Demostramos que (Dk ) tiene a lo sumo un n
umero finito de puntos de acumulaci
on, cada uno de ellos de la forma diag( (1) , . . . , (n) ) para una cierta
permutaci
on de los ndices {1, 2, . . . , n}.
Probamos que lmk Dk+1 Dk = 0.
Comprobamos que la sucesi
on (Dk ) est
a acotada.
Aplicamos el Lema 6.3.3.
(i) Consideremos los n
umeros
k =

X
i6=j

|akij |2 = kBk k2DOS , k 0.

Como k es la suma de los cuadrados de los coeficientes de la matriz A k fuera de la diagonal


principal, sabemos (Lema 6.3.1) que si que p < q son los ndices elegidos para generar A k+1 a
partir de Ak con el metodo de Jacobi, entonces
k+1 = k 2|akpq |2 .

Valores y vectores propios

141

Por otro lado, y dado que |apq | = m


axi6=j |aij |, resulta
k n(n 1)|akpq |2
(pues el n
umero de coeficientes fuera de la diagonal principal es n(n 1)). Combinando ambas
relaciones obtenemos


2
k+1 1
k ,
n(n 1)
de donde se deduce lmk k = 0 y por tanto lmk Bk = 0.
(ii) Supongamos que una cierta subsucesi
on (D km ) de (Dk ) converge a una cierta matriz D.
Entonces la matriz D ser
a diagonal. Por otro lado, como B k 0 por (i) tambien ser
a cierto
Bkm 0, as que (Akm ) converge tambien a D. Por continuidad tenemos que, para cada n
umero
R fijado,
lm det( Id Akm ) = det( Id D).

Como las matrices Ak y A son semejantes, tambien lo ser


an las matrices Id A k y Id A
para cada R, con lo que deducimos que sus determinantes son los mismos y por tanto
det( Id A) = det( Id D)
para cada R.

Estamos diciendo que polinomios caractersticos de A y D toman los mismos valores para
cada valor de la inc
ognita. Como es sabido, si dos polinomios de grado n toman los mismos
valores en n+1 puntos distintos entonces ambos polinomios son iguales. La conclusi
on que es los
polinomios caractersticos de A y D (y por tanto sus valores propios, incluidas multiplicidades)
son los mismos. Como la matriz D es diagonal, los elementos de su diagonal ser
an los valores
propios de A, con las mismas multiplicidades, adecuadamente permutados. Hemos probado que
(Dk ) tiene a lo sumo un n
umero finito de puntos de acumulaci
on, cada uno de ellos de la forma
diag((1) , . . . , (n) ) para una cierta permutaci
on de los ndices {1, 2, . . . , n}.
(iii) Recordemos que

0
k+1
k
aii aii = tg k akpq

tg k akpq

si i 6= p, q,
si i = p,
si i = q,

donde k (/4, 0) (0, /4]. Como | tg k | 1 y |akpq | kBk kDOS para cada k, y adem
as se
tiene lmk Bk = 0 por (i), concluimos que lmk (Dk+1 Dk ) = 0.
(iv) Observemos que

kDk kDOS kAk kDOS = kAkDOS


por el Lema 6.3.1(i). Por tanto la sucesi
on (D k ) est
a acotada.
Ya estamos listos para probar la primera parte del Teorema 6.3.4. De acuerdo con el Lema 6.3.3 y (ii), (iii) y (iv), la sucesi
on (D k ) converge a una matriz diagonal diag( (1) , . . . , ( n) ).
Por (i), la sucesi
on (Ak ) converge a la misma matriz.
Probamos ahora la segunda parte del teorema conforme al siguiente esquema:

142

M
etodos Num
ericos (2007/2008)
Ideas que intervienen:
Demostramos que la sucesi
on ( k ) s
olo tiene un n
umero finito de puntos de
acumulaci
on, que son necesariamente de la forma (p (1) , p(2) , . . . , p(n) ),
siendo p1 , p2 , . . . , pn una base ortonormal de vectores propios de valores propios
correspondientes 1 , 2 , . . . , n .
Probamos que lmk (k+1 k ) = 0.
Se demuestra que las matrices ortogonales est
an acotadas para la norma kk DOS .
Se concluye la prueba usando el Lemma 6.3.3.

(i) Sea un punto de acumulaci


on de la sucesi
on ( k ) y sea (km ) una subsucesi
on de (k )
a a T . Como
convergente a . Entonces la sucesi
on de las matrices traspuestas ( Tkm ) converger
Tk k = Id para cada k y el producto de las sucesiones ( Tkm ) y (km ) converge por continuidad
a T , concluimos que T = Id, es decir, la matriz es ortogonal.
Recordemos que por la primera parte del teorema las matrices A k = Tk Ak convergen a una
matriz diagonal diag((1) , . . . , (n) ). Tomando lmites en la subsucesi
on ( Tkm Akm ) llegamos
a que
T A = diag((1) , . . . , ( n) ).
La igualdad implica que los vectores columna de forman una base ortonormal de vectores
propios con valores propios respectivos los n
umeros (i) . Como por hip
otesis todos los valores
propios son distintos, cada subespacio propio tiene dimensi
on 1 y para cada valor propio
existen exactamente dos vectores propios (uno opuesto del otro) de norma 1. Hemos probado
que es de la forma (p(1) , p(2) , . . . , p(n) ).
(ii) Recordemos que los angulos k son tales que |k | /4 y satisfacen la igualdad
tg 2k =

2akpq
akqq akpp

para cada k. Enfatizamos que los ndices p y q dependen de k, pero para simplificar la notaci
on
no hacemos explcita esta dependencia. Como los coeficientes a kii de la diagonal principal de las
matrices Ak convergen a los valores propios (i) y dichos valores propios son distintos dos a
dos, existir
a un n
umero l suficientemente alto tal que si k l entonces
mn |akii akjj |
i6=j

1
mn |i j | =: M > 0;
2 i6=j

en particular, |akqq akpp | M para cada k l. Como todos los coeficientes fuera de la diagonal
principal de Ak tienden a cero, la sucesi
on (akpq ) tiende a cero (aunque los ndices p y q vayan
variando con k). As pues, (tg 2 k ) tiende a cero e igualmente (k ) tiende a cero. En resumen,
hemos probado que
lm Ok = Id.
k

Dado que k+1 k = k (Ok+1 Id), se deduce


lm (k+1 k ) = 0.

(iii) En el Captulo 3 (Teorema 3.3.1) se vio que la norma kk 2 de todas las matrices ortogonales
2
es 1. Como en Mnn (R) (que puede verse como el espacio eucldeo R n ) todas las normas son

Valores y vectores propios

143

equivalentes, existe en particular una cierta constante > 0 tal que kBk DOS kBk2 para
cada B Mnn (R). De esto se deduce que kOkDOS para cada matriz ortogonal O.
Finalmente, la segunda parte del Teorema 6.3.4 se deduce del Lema 6.3.3 y (i), (ii) y (iii). 

144

M
etodos Num
ericos (2007/2008)

Bibliografa
[1] R. L. Burden y J. D. Faires, An
alisis Numerico, Grupo Editorial Iberoamerica, Mexico,
1985.
[2] P. G. Ciarlet, Introduction a
` lAnalyse Numerique Matricielle et a
` lOptimisation, Dunod,
Pars, 1990.
[3] D. Kincaid y W. Cheney, An
alisis Numerico. Las Matem
aticas del C
alculo Cientfico,
Addison-Wesley Sudamericana, Wilmington, 1994.

146

M
etodos Num
ericos (2007/2008)

Cap
tulo

'
'

Ceros de polinomios
Interrogantes centrales del captulo

$
$

Evaluaci
on de polinomios. Esquema de Horner.

Ceros de polinomios. Teorema fundamental del Algebra.


Localizaci
on de ceros de polinomios.

Metodos numericos para aproximaci


on de ceros:
Metodo de Newton para polinomios.
Iteraci
on de Laguerre.
&
&
'
#

El metodo de separaci
on de Sturm.

Destrezas a adquirir en el captulo

%
%
$

Describir los algoritmos correspondientes a los distintos metodos de aproximaci


on de ceros y factorizaci
on de polinomios.
Comparar la convergencia de las aproximaciones proporcionadas por cada
metodo.
Implementar en el ordenador los programas de los metodos de este captulo
utilizando variables complejas en los algoritmos.
Aplicar los programas construidos de forma efectiva en la b
usqueda de
todas las races reales y complejas de un polinomio concreto.

"
&

!
%

148

M
etodos Num
ericos (2007/2008)

Desarrollo de los contenidos fundamentales


Un caso particular de ecuaciones para las que es muy importante y u
til la determinaci
on
de sus races es el de las ecuaciones polin
omicas. En este captulo vamos a ampliar la lista de
metodos de resoluci
on de ecuaciones no lineales aprendidos en un captulo anterior incluyendo
otros que resultan de aplicar propiedades especficas de los polinomios.
En la primera secci
on repasamos el algoritmo de Horner de evaluaci
on y deflaci
on de polinomios, que resulta m
as econ
omico desde el punto de vista numerico que la evaluaci
on directa
de combinaciones lineales de potencias, y ahondamos en sus propiedades.
En la segunda secci
on recordamos las propiedades de los ceros de un polinomio, haciendo

hincapie en el teorema fundamental del Algebra


y en la factorizaci
on de polinomios.
En la tercera secci
on exponemos resultados de localizaci
on de ceros de polinomios u
tiles en
la determinaci
on de condiciones iniciales de los metodos numericos de c
alculo de races.
Concluimos estudiando y analizando distintos algoritmos numericos de aproximaci
on de
races de polinomios.
Hemos seguido la Secci
on 3.5 (pp. 91111) del libro de Kincaid y Cheney [3] para redactar
la mayor parte de este captulo.

7.1.

Polinomios complejos. El algoritmo de Horner

Recordemos que un polinomio complejo es una combinaci


on lineal de potencias naturales de
la variable z,
p(z) = a0 + a1 z + + an z n ,
donde los coeficientes ak C son n
umeros complejos y an 6= 0. En estas condiciones se dice que
el polinomio p(z) tiene grado n N. Se adopta la convenci
on de que el grado del polinomio
constante cero es .

Como ya explicamos, para calcular el valor del polinomio p en un punto z 0 lo m


as rentable
desde el punto de vista computacional es usar el esquema de Horner (popularmente conocido
como regla de Rufini)
p(z0 ) = (. . . ((an z0 + an1 ) z0 + an2 ) z0 + + a1 ) z0 + a0 .
Los multiplicadores de z0 en esta f
ormula se van obteniendo de forma recursiva siguiendo el
esquema
an
z0
bn

an1
z0 bn
bn1

an2
z0 bn1
bn2

......
......
......

a1
z 0 b2
b1

a0
z0 b1
b0

con bn = an y bk = bk+1 z0 +ak para k = (n1), . . . , 1, 0. Los coeficientes b k tambien determinan


el cociente c(z) de la divisi
on de p(z) entre z z 0 .

En efecto, recuerdese que si p(z) y q(z) son polinomios dados entonces existen polinomios
c(z) y r(z) (con el grado de r(z) estrictamente menor que el de q(z)) de manera que
p(z) = c(z)q(z) + r(z).

Ceros de polinomios

149

Los polinomios c(z) y r(z) (el cociente y el resto de la divisi


on de p(z) entre q(z)) est
an unvocamente determinados. Si z0 z y tomamos q(z) = z z0 entonces r(z) debe ser una constante
r0 C, y sustituyendo z por z0 en la igualdad p(z) = c(z)(z z0 ) + r0 obtenemos z0 = p(z0 ),
es decir,
c(z) = q(z)(z z0 ) + p(z0 ).

(7.1)

Definamos
c(z) = bn z n1 + bn1 z n2 + + b2 z + b1 ,
con los coeficientes bk como en el algoritmo de Horner. Entonces

c(z)(z z0 ) = bn z n + bn1 z n1 + + b2 z 2 + b1 z bn z n1 z0 + + b2 z0 + b1 z0 ,
c(z)(z z0 ) + b0 = bn z n + (bn1 bn z0 )z n1 + + (b1 b2 )z + (b0 b1 z0 ).

De acuerdo con la definici


on de los coeficientes b k resulta bn = an y bk bk+1 z0 = ak , de donde
se obtiene la igualdad (7.1).
Recordamos a continuaci
on el pseudoc
odigo del algoritmo de Horner, enfatizando que si s
olo
necesitamos obtener el valor de p(z) podemos acelerar el algoritmo utilizando una u
nica variable
b en lugar de una lista bk (se inicia b con el valor de an y en el bucle for se hace la asignaci
on
b = bz + ak ).

Algoritmo 7.1

Esquema de Horner

Datos de entrada:
a0 , a1 , . . . , an (coeficientes del polinomio p);
z0 (n
umero donde se eval
ua el polinomio);
Flujo del programa:
bn = an ;
for(k=n-1;k>=0;k--){
bk = bk+1 z0 + ak ;
}
Datos de salida: b0 (valor de p(z0 )) y b1 , . . . , bn (coeficientes de q(z)).

Ejemplo 7.1.1 Evaluemos el polinomio p(z) = z 4 4z 3 + 7z 2 5z 2 en z = 2. Entonces


1
2
b4 = 1

4
2
b3 = 2

7
4
b2 = 3

5
6
b1 = 1

2
2
b0 = 0

con lo que p(2) = 0 y p(z) = (z 2)(1z 3 2z 2 + 3z + 1).


Al derivar en la expresi
on (7.1) se tiene que p 0 (z) = c0 (z)(z z0 ) + c(z) y por lo tanto
= c(z0 ). As, para evaluar la derivada p 0 (z0 ) bastar
a con aplicar el esquema de Horner
a c(z) en el punto z0 . N
otese que estamos usando aqu derivaci
on compleja: la definici
on es la
misma que la derivada usual, s
olo que trabajando en C en lugar de R. La demostraci
on de las
reglas de derivaci
on usuales no queda afectada por este hecho.

p0 (z0 )

150

M
etodos Num
ericos (2007/2008)

El esquema de Horner aplicado a c(z) nos proporciona c(z 0 ) y el polinomio cociente m(z) de
c(z) entre (z z0 ), que sustituido en la factorizaci
on de p nos da la expresi
on
p(z) = (m(z)(z z0 ) + c(z0 ))(z z0 ) + p(z0 ) = m(z)(z z0 )2 + c(z0 )(z z0 ) + p(z0 ).
Al hacer la segunda derivada obtenemos que p 00 (z0 ) = 2! m(z0 ).
Si repetimos la aplicaci
on de Horner vamos obteniendo las distintas derivadas p (k) (z0 ).
Tambien podemos expresar el desarrollo de Taylor de un polinomio en el punto z 0 utilizando
(k)
el metodo de Horner para evaluar los coeficientes c k = p k!(z0 ) en la expresi
on
p(z) = cn (z z0 )n + cn1 z n1 + + c1 (z z0 ) + c0 .
Ve
amoslo en el siguiente ejemplo.
Ejemplo 7.1.2 Desarrollamos a continuaci
on el polinomio p(z) = z 4 4z 3 + 7z 2 5z 2 en
potencias de (z 3):
1
3
1
3
1
3
1
3
c4 = 1

4
3
1
3
2
3
5
3
c3 = 8

7
3
4
6
10
15
c2 = 25

5
12
7
30
c1 = 37

2
21
c0 = 19

As pues, p(z) = 1(z 3)4 + 8(z 3)3 + 25(z 3)2 + 37(z 3) + 19.
En las siguientes secciones, utilizaremos el esquema de Horner para evaluar simult
aneamente
los polinomios y sus derivadas en las implementaciones de los distintos metodos numericos de
localizaci
on de races.

7.2.

Ceros de polinomios. El teorema fundamental del Algebra

Si p(z0 ) = 0 se dice que z0 es un cero del polinomio o una raz de p(z). La f


ormula (7.1) nos
da la factorizaci
on p(z) = (z z0 )c(z). A la obtenci
on del polinomio c(z) se le llama deflaci
on
de p(z) en z0 (ver el Ejemplo 7.1.1).
Si c(z0 ) = 0 podemos factorizar c obteniendo c(z) = (z z 0 )c1 (z) y p(z) = (z z0 )2 c1 (z).
As seguiremos hasta llegar a una factorizaci
on de p de la forma
p(z) = (z z0 )k0 c0 (z),
donde c0 (z) es un polinomio con c0 (z0 ) 6= 0. El n
umero k0 es la multiplicidad de la raz z0 de p.
Antes de buscar ceros de polinomios debemos preguntarnos sobre su existencia. El teorema

fundamental del Algebra


nos responde a esta cuesti
on:

Teorema 7.2.1 (teorema fundamental del Algebra;


Gauss, 1799) Todo polinomio no
constante con coeficientes complejos tiene al menos una raz compleja.

Ceros de polinomios

151

n: Aunque el enunciado es puramente algebraico todas las demostraciones aseDemostracio


quibles que se conocen hacen uso de recursos del An
alisis Matem
atico. Vamos a exponer esquem
aticamente una de estas pruebas. Puede encontrarse el desarrollo detallado de la misma
en el Teorema 2.2.7 del libro An
alisis Matem
atico II de J. A. Fern
andez Vi
na [2].
Ideas que intervienen:
Sea p(z) un polinomio no constante de grado n, digamos
p(z) = a0 + a1 z + + an z n
con an 6= 0.
Comparando p(z) con el sumando an z n podemos afirmar que
lm |p(z)| = lm |an ||z|n = .

|z|

|z|

Por la afirmaci
on anterior, como |p(z)| es una funci
on continua en C podemos
concluir que la funci
on continua |p(z)| alcanza su valor mnimo en un punto
z0 C.
Para ver que z0 es una raz de p, es decir p(z0 ) = 0, razonamos por reducci
on al
absurdo: supondremos que |p(z0 )| > 0 y llegaremos a una contradicci
on.
Si |p(z0 )| > 0 vamos a elegir una recta que pasa por z 0 de manera que |p(z)|
restringida a esa recta tome valores estrictamente menores que |p(z 0 )|. En consecuencia, |p(z)| no tiene un mnimo en z 0 , en contradicci
on con la elecci
on de
z0 .
Si k = k0 es la multiplicidad de z0 como raz de p(z) p(z0 ) podemos escribir
p(z) = p(z0 ) + (z z0 )k c(z) = p(z0 )(1 + (z z0 )k c(z)),
donde c es un polinomio de grado nk y b 0 = c(z0 ) 6= 0. Escribimos z z0 = reit en coordenadas
polares y c(z) en la forma c(z) = b0 + (z z0 )h(z).
Si b0 = |b0 |eis , fijamos la direcci
on correspondiente a t = k1 ( s) y tenemos
p(z) = p(z0 )(1 r k |b0 | + r k+1 ei(k+1)t h(z)).
Tomando r peque
no, r k |b0 | < 1 y la desigualdad triangular nos da
|p(z)| |p(z0 )|((1 r k |b0 |) + r k+1 |h(z)|) = |p(z0 )|(1 r k (|b0 | r|h(z)|)).
Como r|h(z)| 0 cuando r 0, si r es suficientemente peque
no se tendr
a
|b0 | r|h(z)| > 0,5|b0 |
y por lo tanto
|p(z)| |p(z0 )|(1 r k (|b0 | r|h(z)|)) < |p(z0 )|(1 0,5r k |b0 |) < |p(z0 )|.
Esta u
ltima cadena de desigualdades nos da la contradicci
on esperada.

152

M
etodos Num
ericos (2007/2008)

Factorizando el polinomio p(z) en z0 tenemos p(z) = (z z0 )k0 q(z). Si q(z) no es constante

podemos aplicar otra vez el teorema fundamental del Algebra


para garantizar la existencia de
un cero z1 de q que tambien ser
a un cero de p(z). Repitiendo el proceso obtenemos el siguiente
teorema de factorizaci
on.
Teorema 7.2.2 (factorizaci
on de polinomios) Si p(z) = a 0 + a1 z + + an z n es un polinomio de grado n con coeficientes en C, existen s + 1 n
umeros complejos distintos z 0 , z1 , . . . , zs ,
con s + 1 n, y enteros positivos k0 , . . . , ks , verificando k0 + + ks = n y
p(z) = an (z z0 )k0 (z z1 )k1 (z zs )ks .

De la factorizaci
on anterior se deduce que un polinomio de grado n tiene, a lo m
as, n
races distintas. Repitiendo las races seg
un su multiplicidad, un polinomio de grado n tiene
exactamente n races. Tambien se sigue que dos polinomios p(z) y q(z)de grado menor o igual a
n que coinciden en n + 1 n
umeros complejos distintos (p(z k ) = q(zk ) con z1 , . . . , zn+1 distintos)
deben ser iguales (p(z) = q(z) en todo z).
Una observaci
on a tener en cuenta es que un polinomio puede tener todos sus coeficientes
reales y sus races no tienen porque ser reales. Por ejemplo, en el polinomio
p(x) = x2 + 1 = (x + i)(x i)
los coeficientes son n
umeros reales y las races i y i no lo son. En estos casos, si z 0 C es una
raz del polinomio de coeficientes reales p(z) = a 0 + a1 z + + an z n tomando conjugados en la
expresi
on p(z0 ) = 0 se deduce que z0 tambien es raz de p(z) ya que
p(z0 ) = a0 + a1 z0 + + an z0 n = a0 + a1 z0 + + an z0n = p(z0 ) = 0.
As, cada vez que obtenemos una raz compleja tambien obtenemos su conjugada, es decir, si
z (a + bi) es un factor de p(z) tambien lo ser
a z (a bi) y por tanto igualmente lo ser
a su
producto
(z (a + bi))(z (a bi)) = (z a)2 + b2 = z 2 2az + a2 b2 .

En otras palabras, todo polinomio con coeficientes reales puede descomponerse como producto
de monomios y polinomios de grado 2 con coeficientes reales.
A la hora de construir algoritmos de b
usqueda de races de polinomios deberemos tener
presente la conveniencia de programarlos utilizando variables complejas (en C) aunque estemos
pensando en utilizarlos con polinomios reales.

7.3.

Localizaci
on de ceros

Para aplicar alguno de los metodos que enseguida describiremos para aproximar races es
conveniente disponer de buenas aproximaciones iniciales de las mismas. En esta secci
on vamos
a localizar regiones del plano complejo en las que tenemos la certeza de que podemos encontrar
races de un polinomio, lo que ser
au
til para elegir nuestras aproximaciones iniciales.
Teorema 7.3.1 Todas las races del polinomio p(z) = a 0 + a1 z + + an z n de grado n est
an
en el disco de centro 0 y radio
=1+
n:
Demostracio

1
m
ax{|a0 |, . . . , |an1 |}.
|an |

Ceros de polinomios

153

Ideas que intervienen:


Vamos a ver que para |z| > se tiene |p(z)| > 0. As, todas las races de p(z) est
an
dentro del disco de centro 0 y radio . S
olo usamos la desigualdad triangular.
Sean M = m
ax{|a0 |, |a1 |, . . . , |an1 |} y como en el enunciado. Entonces 1 =
tanto, si |z| > se tiene que
|an |(|z| 1) > |an |( 1) = |an |

M
|an | .

Por

M
= M.
|an |

Ahora es suficiente hacer uno de la desigualdad triangular en la siguiente cadena de desigualdades:



|p(z)| = | a0 + a1 z + + an1 z n1 + an z n |

|an ||z|n |a0 | + |a1 ||z| + + |an1 ||z|n1

|an ||z|n M 1 + |z| + + |z|n1
|z|n 1
= |an ||z|n M
|z| 1
|z|n
|an ||z|n M
|z| 1


1
n
= |z| |an | M
|z| 1

|z|n
|an |(|z| 1) M
=
|z| 1
|z|n
(M M ) = 0
>
|z| 1

Ejemplo 7.3.2 Los ceros del polinomio p(z) = z 4 4z 3 + 7z 2 5z 2 est
an en el circulo de
centro 0 y radio = 1+m
ax{2, 5, 7, 4} = 1+7 = 8. En la Figura 7.1 representamos gr
aficamente
2

1.5

0.5

-7.5

-5

-2.5

2.5

7.5

-0.5

Figura 7.1: Localizaci


on de las races reales de p(z) = z 4 4z 3 + 7z 2 5z 2

los valores del polinomio real |p(x)| comprendidos entre 0,5 y 2 cuando x varia en el intervalo
real [8, 8] y observamos que el polinomio s
olo tiene dos races reales en los cortes de la gr
afica
con el eje x.
Por otra parte en la Figura 7.2 representamos las curvas de nivel de la funci
on |p(z)| en el
rect
angulo [1, 4] [2,5, 2,5] del plano complejo, contenido en el disco con centro en el origen
y radio 8, y visualizamos la posici
on de las cuatro races (las dos reales y las dos complejas
conjugadas).

154

M
etodos Num
ericos (2007/2008)

-1

-2

-1

Figura 7.2: Localizaci


on de las races reales y complejas de p(z) = z 4 4z 3 + 7z 2 5z 2

El teorema de localizaci
on 7.3.1 nos da una acotaci
on superior del m
odulo de los ceros de un
polinomio. Es posible tener tambien una acotaci
on inferior?
La respuesta a esta cuesti
on es afirmativa y para conseguir encontrar una acotaci
on inferior
vamos a recurrir al habitual truco de invertir la variable, es decir, hacer el cambio z = w1 que
transforma n
umeros z peque
nos en n
umeros w grandes y viceversa.
Pero antes de hacer el cambio de variable vamos a detenernos un instante en el caso en que
la acotaci
on inferior es 0, es decir, cuando z 0 = 0 es una raz del polinomio. En este caso no
necesitamos recurrir a ning
un algoritmo particular para descubrir este cero pues el polinomio
tiene una expresi
on de la forma


p(z) = ak z k + ak+1 z k+1 + + an z n = z k ak + + an z nk
con ak 6= 0. De la expresi
on deducimos sin m
as que 0 es una raz de p de multiplicidad k y el
problema de b
usqueda de races se reduce al caso de polinomios que no se anulan en 0.
Supongamos que p(z) = a0 + a1 z + + an z n es un polinomio de grado n que no se anula
en z = 0, y por lo tanto,con a0 6= 0 y an 6= 0.

Haciendo z = w1 tenemos p(z) = p( w1 ) = w1n a0 wn + a1 wn1 + + an1 w + an . Como
1
olo si, q(w) = a 0 wn + a1 wn1 + + an1 w + an = 0.
w 6= 0, resulta que p(z) = 0 si, y s
Ahora hacemos uso del teorema de localizaci
on y podemos asegurar que p(z) = 0 s
olo cuando
1
0 (|z| 10 ), donde
|w| = |z|
0 = 1 +

1
m
ax{|a1 |, . . . , |an |}.
|a0 |

Volviendo al Ejemplo 7.3.2, para p(z) = z 4 4z 3 + 7z 2 5z 2, 0 = 1 +


asegurar que las races de p est
an en el anillo A = {z : 92 |z| 8}.

7
2

9
2

y podemos

Reuniendo la observaci
on con el Teorema 7.3.1, tenemos el siguiente resultado:

Corolario 7.3.3 Sea p(z) = a0 + a1 z + + an z n un polinomio de grado n tal que a0 6= 0 y


an 6= 0, y sean
=1+

1
m
ax{|a0 |, . . . , |an1 |},
|an |

0 = 1 +

Entonces, los ceros de p(z) est


an en el anillo A = {z :

1
0

1
m
ax{|a1 |, . . . , |an |}.
|a0 |

|z| }.

Ceros de polinomios

7.4.

155

El m
etodo de Newton para polinomios

En un captulo anterior estudiamos el metodo de Newton para aproximar ceros de funciones


p(z), y ya sabemos que si partimos de una aproximaci
on inicial x 0 suficientemente pr
oxima a
un cero simple de p, la iteraci
on de Newton dada por
xk+1 = xk

p(xk )
p0 (xk )

converge cuadr
aticamente hacia ese cero de p(z).
El esquema de Horner se puede utilizar para evaluar simult
aneamente los valores de p y
p0 , tal y como reflejamos en la versi
on del algoritmo de Newton para polinomios en la p
agina
siguiente. Observese que el algoritmo tiene tambien sentido para polinomios con coeficientes
complejos, pero no que no puede utilizarse para aproximar races complejas de polinomios con
coeficientes reales a menos que partamos de una condici
on inicial compleja.
Otra propiedad del metodo de Newton para polinomios interesante la proporciona el siguiente
teorema que permite localizar un cero del polinomio dadas dos iteraciones consecutivas, y ofrece
una estimaci
on del error cometido al aproximar una raz del polinomio por una iterada de
Newton.
Teorema 7.4.1 Sean xk y xk+1 dos iteraciones sucesivas del metodo de Newton para un polinomio p(z) de grado n 1. Entonces existe un cero de p(z) en el disco complejo de centro x k
y radio n|xk+1 xk |.
n:
Demostracio
Ideas que intervienen:
El teorema de factorizaci
on 7.2.2 proporciona una representaci
on del cociente
p0 (z)
tmica de p(z) (llamado as porque coincide con la derivada
p(z) derivada logar
de log(p(z))). En efecto, si z1 , z2 , . . . , zn son las races de p(z) repetidas seg
un su
multiplicidad, entonces
p(z) = an (z z1 )(z z2 ) (z zn ) = an
0

p (z) = an

n
n
Y
X

n
Y
(z zi )
i=1

n
n
X
X
1
p(z)
= p(z)
.
(z zj ) =
z zi
z zi

i=1 j=1,j6=i

i=1

i=1

El corrector de la aproximaci
on inicial x k en el metodo de Newton viene dado
p(xk )
por p0 (xk ) que en terminos de las races del polinomio se puede escribir como
xk+1 xk =

1
p(xk )
= Pn
p0 (xk )
i=1 x

k zi

Alguna de las races cumple |xk zi | n|xk+1 xk |, pues en otro caso la


desigualdad triangular nos llevar
a a una contradicci
on.

156

M
etodos Num
ericos (2007/2008)

Algoritmo 7.2

Newton para polinomios

Datos de entrada:
a0 , a1 , . . . , an (coeficientes del polinomio p);
z (condici
on inicial);
tol (precisi
on para la parada);
nmax (n
umero m
aximo de iteraciones);
Variables:
xini; // variable para almacenar xk
xfin; // variable para almacenar xk+1
b; // variable para almacenar p(xk )
c; // variable para almacenar p0 (xk )
Flujo del programa:
xini = z;
xfin = 0;
for(j=1;j<=nmax;j++){
b = an ;
c = b;
// Evaluaci
on de p(xini) y p0 (xini) con Horner.
for(k=n-1;k>=1;k--){
b = b xini + ak ;
c = c xini + b; // p0 (xini) = c
}
b = b xini + a0 ; // p(xini) = b
if(c 6= 0){
xfin = xini (b/c);
}
else{
Parada: derivada nula
}
if((|b| < tol) or (|xfin xini| < tol)){
Parada: raz en xini
}
else{
xini = xfin
}
}
Parada: no hay convergencia en nmax iteraciones
Datos de salida: Raz en xini o mensaje de error.

Ceros de polinomios

157

Si suponemos que |xk zi | > n|xk+1 xk | para i = 1, . . . , n, tendremos la siguiente cadena


contradictoria de desigualdades:

|xk+1 xk | =

>

1
|

Pn

1
i=1 xk zi |

Pn

1
i=1 |xk zi |

Pn

i=1 n|xk+1 xk |

1
1
|xk+1 xk |

= |xk+1 xk |.

Ejemplo 7.4.2 Calculando con ocho cifras decimales, las cinco primeras iteraciones del metodo
de Newton aplicado al polinomio de los ejemplos anteriores p(z) = z 4 4z 3 + 7z 2 5z 2 con
inicio en x0 = 0 y estimaciones del error con respecto a la raz pr
oxima a x 0 = 0 (vease la
Figura 7.1) obtenemos los siguientes datos:

k
0
1
2
3
4
5

p(xk )
-2
1.4016
1.46321856
0.00225803
5,6 107
3,6 1014

p0 (xk )
-5
-12.776
-10.1732291
-9.86029921
-9.85536835
-9.85536711

xk
0
-0.4
-0.2902943
-0.27591126
-0.27568226
-0.27568220

4|xk1 xk |
1.6
0.4388228
0.05753214
0.00028398
0.00000024

El teorema anterior nos asegura que 0,27568226 es una aproximaci


on de la raz buscada con
un error menor que 2,4 107 .
En general no tenemos ning
un procedimiento que nos proporcione una aproximaci
on inicial
para la cual el algoritmo de Newton sea convergente. Sin embargo esta regla general s existe
en algunos casos importantes, como en el siguiente teorema.

Teorema 7.4.3 Sea p(z) un polinomio de grado n 2 con todas sus races y coeficientes reales.
Si
rn rn1 r2 r1
son los ceros de p(z) ordenados en forma decreciente y x 0 > r1 , entonces el metodo de Newton
proporciona una sucesi
on de iteradas x k estrictamente decreciente convergente hacia r 1 .

158

M
etodos Num
ericos (2007/2008)

n:
Demostracio
Ideas que intervienen:
El teorema de Rolle para funciones reales de variable real nos asegura que entre
cada dos races reales consecutivas, r k y rk+1 , hay una raz sk de la derivada de
p(x),
rn sn1 rn1 r2 s1 r1 .

En consecuencia p0 (x) tiene n 1 ceros reales s1 , . . . , sn1 y todos son menores


que r1 , as que p0 (x) no se anula en [r1 , ).
Haciendo el mismo razonamiento con los n 1 ceros de p 0 (x) podemos concluir
que p00 (x) tampoco se anula en [r1 , ).
Estas condiciones garantizan la monotona y convergencia de las iteradas de
Newton con inicio en x0 > r1 .

Enfatizamos para empezar que todas las races de p 0 (x) (y del mismo modo las de p00 (x))
est
an entre rn y r1 incluso que el caso de que p(x) tenga races repetidas (porque si r es una raz
the p(x) de multiplicidad m entonces tambien lo es de p 0 (x) con multiplicidad al menos m 1).
Podemos suponer que p(x) > 0 para cada x > r 1 (en caso contrario, cambiaramos el signo
de p; n
otese que el metodo de Newton proporciona la misma sucesi
on de n
umeros).

Como p(x) converge a o cuando x , se tendr


a en este caso lm x p(x) = . Si
an es el coeficiente principal de p(x), sabemos que el comportamiento asint
otico de p(x) y a n xn
es el mismo, con lo que se concluye que a n > 0. Como los coeficientes principales de p 0 (x) y p00 (x)
son, respectivamente, nan y n(n 1)an , concluimos de igual manera lmx p0 (x), p00 (x) =
y por tanto (ya que ni p0 (x) ni p00 (x) se anulan a la derecha de r1 ) que p0 (x), p00 (x) > 0 para
cada x > r1 .
Comprobemos que en estas condiciones el metodo de Newton converge a r 1 siempre que la
condici
on inicial x0 est
a a la derecha de r1 .
Sea (xk ) la sucesi
on de iteradas por el metodo de Newton, es decir, x k+1 = xk p(xk )/p0 (xk ).
Basta demostrar que la sucesi
on de errores e k = xk r1 es positiva y decreciente, pues entonces
(xk ) converge a un n
umero r r1 , y de hecho r = r1 ya que de otro modo se llegara, tomando
lmites en la expresi
on xk+1 = xk p(xk )/p0 (xk ), a la contradicci
on r = r p(r)/p 0 (r).
Probamos a continuaci
on que (ek ) es una sucesi
on positiva y decreciente. Haciendo desarrollos
de Taylor de orden dos obtenemos 0 = p(r 1 ) = p(xk ek ) = p(xk ) p0 (xk )ek + (1/2)p00 (k )e2k
para un cierto n
umero k comprendido entre r1 y xk . Por tanto
ek+1 = xk+1 r1 = xk r

(1/2)p00 (k )e2k
p(xk )
p(xk )
p0 (xk )ek p(xk )
=
e

=
=
.
k
p0 (xk )
p0 (xk )
p0 (xk )
p0 (xk )

A partir de aqu la afirmaci


on se deduce inmediatamente por inducci
on.

Reuniendo este teorema y el teorema de localizaci


on 7.3.1 obtenemos el siguiente corolario.
Corolario 7.4.4 Si p(z) = a0 + a1 z + + an z n tiene todos sus coeficientes y races reales y
ax{|ak | : k = 1, . . . , n 1}, entonces el algoritmo de Newton x k+1 =
elegimos x0 > 1 + |a1n | m
xk

p(xk )
p0 (xk ) ,

genera una sucesi


on mon
otona decreciente hacia la mayor de las races de p(z).

Ceros de polinomios

159

Para el caso de polinomios con todas sus races reales, el corolario anterior nos marca un
camino a seguir para localizar todas las races. Una vez localizada la mayor raz r 1 si hacemos
la deflaci
on de p en r1 obtenemos un polinomio de grado n 1 con todas sus races reales al
cual podemos aplicar el proceso. Naturalmente para un polinomio dado no podemos saber de
antemano si todas las races son reales, pero incluso entonces esta puede ser una buena estrategia
para fijar el valor inicial.

7.5.

El m
etodo de Laguerre

Este metodo se emplea en varios paquetes de c


alculo debido a que sus propiedades de convergencia son muy favorables: puede probarse que tiene convergencia de orden tres para condiciones
iniciales pr
oximas a una raz simple. Adem
as sus c
alculos numericos son bastante robustos.
Antes de describir este algoritmo necesitamos algunos resultados previos que nos ayudar
an a
localizar las races de un polinomio. En un primer lema vamos a posicionar n n
umeros reales en
un intervalo centrado en su media aritmetica y con longitud medida en terminos de su desviaci
on
tpica. Sin llegar a describir y usar estos estadsticos lo enunciamos como sigue:
Lema 7.5.1 Dados n n
umeros reales v1 , v2 , . . . , vn , sean =
todos los n
umeros vj pertenecen al intervalo de extremos

Pn

j=1 vj

y=

Pn

2
j=1 vj .

Entonces

(n 1)(n 2 )
.
n

n:
Demostracio
Ideas que intervienen:
Vamos a ver que para un polinomio q(x) de grado 2 que toma valores positivos
para |x| grande, q(vj ) 0 en cada n
umero vj . Por lo tanto estos n
umeros est
an
en el intervalo cuyos extremos son las dos races del polinomio q, que van a
coincidir con los n
umeros
p
(n 1)(n 2 )
.
n
No es restrictivo trabajar s
olo con el n
umero v 1 . Para los otros n
umeros basta con permutar
las posiciones, y observar que estas permutaciones no afectan a los valores de y .
Tenemos
2 2v1 + v12 = ( v1 )2

= (v2 + + vn )2

= (1.v2 + 1.v3 + + 1.vn )2

(n 1)(v22 + v32 + + vn2 )


= (n 1)( v12 )

= (n 1) nv12 + v12 ;

160

M
etodos Num
ericos (2007/2008)

hemos usado la desigualdad de Cauchy-Schwartz


m
X
k=1

m
m
X
X
1
2 12
b2i ) 2 .
ak bk (
ai ) (
k=1

k=1

Por tanto
0 (n 1) nv12 + 2v1 2
y
nv12 2v1 + 2 (n 1) 0.

Considerese el polinomio q(x) = nx 2 2x + (2 (n 1)) y notemos que q(v1 ) 0. Como


lmx q(x) = +, q(x) cambia de signo, q tiene races reales, y v 1 est
a comprendido entre las
dos races reales
p
p
2 n(2 (n 1))
(n 1)(n 2 )
x=
=
.
n
n

En la secci
on anterior analiz
abamos las distancias de un punto a las races de un polinomio
escribiendo
n
p0 (x) X 1
=
,
p(x)
x zj
j=1

donde z1 , . . . , zn son las n races de p(x). Derivando en esa expresi


on con respecto a x y cambiando los signos, tenemos
n

X
p(x)p00 (x) + p0 (x)2
1
=
.
2
p(x)
(x zj )2
j=1

Reescribiendo el lema anterior con v j =


resultado.

1
xzj ,

p0 (x)
p(x)

,=

p0 (x)2 p(x)p00 (x)


,
p(x)2

se tiene el siguiente

Lema 7.5.2 Sea p(x) un polinomio de grado n con coeficientes reales cuyos ceros, z 1 , . . . , zn ,
1
son todos reales. Entonces para cualquier n
umero real x que no sea cero de p, los n
umeros xz
j
est
an en el intervalo de extremos
p
p0 (x) (n 1)2 p0 (x)2 n(n 1)p(x)p00 (x)
.
np(x)
n: Basta con utilizar el lema anterior y escribir:
Demostracio
p
p
(n 1)(n 2 )
p0 (x) (n 1)2 p0 (x)2 n(n 1)p(x)p00 (x)
=
.
n
np(x)

Supongamos que xi es una aproximaci
on de una raz de p y que z j es la raz de p m
as
1
pr
oxima a xi . Entonces la fracci
on xi zj ser
a la de mayor tama
no (en valor absoluto). La idea
de Laguerre consiste en aproximar el valor de esta fracci
on por el del extremo, C, del intervalo
1
dado por el lema, que tiene mayor tama
no. Invirtiendo la fracci
on xi z
y su aproximaci
on C
j
on de zj .
obtenemos xf = xi C1 como una nueva aproximaci
As el algoritmo de Laguerre consiste en el siguiente proceso iterativo:

Ceros de polinomios

161

(i) Se parte de una aproximaci


on inicial x i de una raz de p.

(ii) Se calcula A =

(iii) Se calcula B =

p0 (xi)
p(xi)

(A = en la discusi
on anterior).

p0 (xi)2 p(x)p00 (xi)


p(xi)2

(B = en la discusi
on anterior).

(iv) Se elige el signo para que C =

(v) Se toma xf = xi

1
C

(n1)(nBA2 )
n

tenga el mayor valor absoluto.

como la nueva aproximaci


on de la raz de p.

En el Algoritmo 7.3 se presenta el metodo de Laguerre en terminos de las dos primeras


derivadas del polinomio (evaluadas simult
aneamente con el metodo de Horner) e incluyendo las
correspondientes condiciones de parada.
Es importante resaltar que aunque (al igual que para el metodo de Newton) s
olo podremos
garantizar la convergencia cuando todas las races del polinomio sean reales, el algoritmo tiene
sentido (y a menudo converge) cuando el radicando (n 1)(nB A 2 ) se hace negativo en alg
un
momento. A partir de entonces los terminos x k de la sucesi
on de iterados se hacen complejos.
De hecho, el algoritmo tambien sentido para condiciones iniciales complejas e incluso para
polinomios con coeficientes complejos.
El siguiente teorema asegura la convergencia global del metodo de Laguerre aplicado a polinomios con todas sus races reales. El metodo converge a una raz para cualquier condici
on
inicial que se tome.

Teorema 7.5.3 Sea p(x) un polinomio real cuyas races son todas reales. Entonces la sucesi
on
de iteradas de Laguerre con un punto inicial arbitrario x 0 converge mon
otonamente hacia uno
de los dos ceros de p que tiene m
as pr
oximos.

162

M
etodos Num
ericos (2007/2008)

Algoritmo 7.3

M
etodo de Laguerre

Datos de entrada:
a0 , a1 , . . . , an (coeficientes del polinomio p); z (condici
on inicial);
tol (tolerancia para la parada); nmax (n
umero m
aximo de iteraciones);
Variables:
xini, xfin; // variables para almacenar x k y xk+1
b, c, d; // variables para almacenar p(x k ), p0 (xk ) y p00 (xk )
aux1, aux2, Cmax; // variables auxiliares para almacenar C
Flujo del programa:
xini = z;
for(j=1;j<=nmax;j++){
b, c, d = an ;
// Evaluaci
on de p(xini), p0 (xini) y p00 (xini) con Horner.
for(k=n-1;k>=2;k--){
b = b xini + ak ;
c = c xini + b;
d = d xini + c; // d = p00 (xini)/2
}
d = 2d; // d = p00 (xini)
b = b xini + a1 ;
c = c xini + b; // c = p0 (xini)
b = b xini + a0 ; // b = p(xini)
if(b=0){
Parada: raz en xini
}
else{
p
// A = c/b, B = p
(c2 b d)/b2 , C = (1/n) (A (n 1)(nB A2 ).
1
aux1 = nb
(c + (n 1)2 c2 n(n 1)bd);
p

1
aux2 = nb (c (n 1)2 c2 n(n 1)bd);
if(|aux1| |aux2|){
Cmax = aux1;
}
else{
Cmax = aux2;
}
}
if(Cmax=0){
Parada: primera y segunda derivadas nulas
}
else{
1
xfin = xini Cmax
;
}
if(|xfin-xini|<tol){
Parada: raz en xini;
}
else{
xini = xfin
}

}
Parada: no hay convergencia en nmax iteraciones
Datos de salida: Raz en xini o mensaje de error.

Ceros de polinomios

163

n:
Demostracio
Ideas que intervienen:
Si r1 r2 rn son las n races de p, entonces entre cada par de races
consecutivas el signo de p es constante. Adem
as, como entre cada par de races
hay alg
un cero de p0 (x) y p0 (x) tiene a lo sumo n 1 ceros reales, concluimos
que p0 (x) tiene exactamente un cero entre dos races consecutivas distintas. As,
si p es positiva, p pasa de ser creciente a decreciente y si p es negativa entonces
p pasa de ser decreciente a ser creciente.
p(x)

r
r

j+1

j+1

p(x)

Si por ejemplo rj < x0 < rj+1 con p(x) > 0 entre las dos races y adem
as
0
p (x0 ) > 0, entonces p(x) es creciente entre r j y x0 y vamos a ver que rj
x1 < x0 < rj+1 , que p(x1 ) > 0 y que p0 (x1 ) > 0. Repitiendo el argumento,
rj x2 < x1 < x0 < rj+1 . Es decir, xk es mon
otona decreciente y est
a acotada
inferiormente por rj y, en consecuencia, es convergente,
Si xk converge hacia y, de las f
ormulas de iteraci
on resulta que x k+1 xk =
1

0,
y
por
tanto
C(k)

.
Ahora,
por
la
construcci
on de los valores de
C(k)
C(k),
p
p0 (xk ) (n 1)2 p0 (xk )2 n(n 1)p(xk )p00 (xk )
.
C(k) =
np(xk )
se deduce que el denominador p(xk ) tiende a p(y) = 0. As, y es un cero de p, y
por la disposici
on de los xk , y = rj .
Vamos a restringirnos al caso rj < x0 < rj+1 con p(x) > 0 entre las dos races y adem
as
p0 (x0 ) > 0. Los otros casos se pueden analizar en la misma forma.
1
Como x0 no es una raz, el Lema 7.5.2 posiciona todas las fracciones x0 r
en el intervalo de
j
extremos
p
p0 (x0 ) + (n 1)2 p0 (x0 )2 n(n 1)p(x0 )p00 (x0 )
u(x0 ) =
np(x0 )
y
p
p0 (x0 ) (n 1)2 p0 (x0 )2 n(n 1)p(x0 )p00 (x0 )
.
v(x0 ) =
np(x0 )
En particular, para las dos races r j y rj+1 se tiene que
v(x0 )

1
1
<0<
u(x0 ).
x0 rj+1
x0 rj

De estas desigualdades se sigue que


x0 rj+1
y
rj x0

1
1
<0<
x 0 rj
v(x0 )
u(x0 )

1
1
< x0 < x0
rj+1 .
u(x0 )
v(x0 )

164

M
etodos Num
ericos (2007/2008)

Como p0 (x0 ) > 0, se tiene que |v(x0 )| < |u(x0 )| y x1 = x0 u(x1 0 ) , lo que prueba la desigualdad
buscada rj x1 < x0 . Adem
as, p es creciente entre rj y x0 , por lo que tambien se tiene
p0 (x1 ) > 0.
Un buen ejercicio para comprobar como funciona el teorema es realizar la demostraci
on en
los casos restantes.

Al igual que ocurre con el Teorema 7.4.1 para el metodo de Newton, la construcci
on de
Laguerre tambien proporciona un disco donde localizar races expresado en terminos de los
c
alculos realizados en cada iteraci
on. Una prueba del siguiente teorema puede verse en el libro
de Kincaid y Cheney [3] (pp. 103105).
Teorema 7.5.4 (Kahan, 1967) Sean p(z) un polinomio de grado n y z 0 C un n
umero
complejo que tomamos como aproximaci
on inicial en el primer paso de la iteraci
on de Laguerre.
Si C se calcula como en el algoritmo (1/|C| = |x f xi |), entonces p(z) tiene un cero en el disco
  

n
n
= z : |z z0 | <
.
D z0 ,
|C|
|C|
Para finalizar revisitamos el polinomio de los ejemplos anteriores:
Ejemplo 7.5.5 Las cinco primeras iteraciones del metodo de Laguerre aplicado a
p(z) = z 4 4z 3 + 7z 2 5z 2
con inicio en x0 = 0 muestran la r
apida convergencia del metodo de Laguerre a la raz m
as
pr
oxima a x0 . En la u
ltima columna escribimos la cota del error que proporciona el teorema de
Kahan:

4/|C|
k xk
p(xk )
0 0
-2
0.5577742855120604
1 -0.2788871427560302 0.031696585387203324 0.006409886096878962
2 -0.2756821997075907 0.011457452669712431 7.886788553624726E-9
3 -0.275682203650985
0
0
Observese c
omo en la primera aproximaci
on del ejemplo anterior se tienen fijas 2 cifras
decimales, en la segunda pasan a ser 6 las cifras de precisi
on y en la tercera se alcanza la
precisi
on de la m
aquina, en consonancia con que el orden de convergencia de este metodo es 3.

7.6.

Separaci
on de races reales. Sucesiones de Sturm.

En esta secci
on vamos a trabajar con polinomios con coeficientes reales buscando localizar
intervalos en los que podamos asegurar la existencia de races reales y determinar el n
umero
de races reales distintas que tiene el polinomio. Seguiremos el libro de Stoer y Bulirsh [4,
Section 5.6, pp. 297301] y el de Aubanell, Benseny y Delshams [1, Secci
on 5.2.4, pp. 404406].
Vamos a utilizar las sucesiones de Sturm para construir un metodo que cuenta el n
umero
de races reales que un polinomio tiene en un intervalo. Despues usamos ese metodo como en
el algoritmo de la bisecci
on: partiremos de un intervalo [A, A], donde A es el radio del disco
que contiene a todas las races (vease el teorema 7.3.1); este intervalo contiene a todas las

Ceros de polinomios

165

races reales, luego iremos dividiendo los intervalos en mitades, contaremos el n


umero de races
en cada mitad, y nos iremos quedando con los trozos que contengan alguna raz. Conforme
vayamos avanzando con la bisecci
on de los intervalos iremos localizando las races reales de
forma simult
anea. Como el proceso de bisecci
on no es muy r
apido, una vez separadas las races en
intervalos disjuntos se puede ensayar con Newton o Laguerre para localizarlas m
as r
apidamente.
Definici
on 7.6.1 Una sucesi
on de funciones reales continuas
{f0 , f1 , . . . , fm }
definidas en un intervalo [a, b], es una sucesi
on de Sturm si se cumplen las cuatro condiciones
siguientes:
(i) f0 es derivable en [a, b];
(ii) fm no tiene races reales en [a, b] (no se anula);
(iii) si f0 (x) = 0 entonces f1 (x)f00 (x) > 0;
(iv) si fi (x) = 0 (i {1, 2, . . . , m 1}) entonces f i+1 (x)fi1 (x) < 0.
La tercera condici
on implica que f 0 s
olo puede tener races simples, y tanto esta condici
on como
la siguiente permiten detectar las races de f 0 observando el n
umero de cambios n(x) de signo
en la sucesi
on {f0 (x), f1 (x), . . . , fm (x)} tal y como establece el siguiente teorema.
Teorema 7.6.2 (Sturm) Sea {f0 , f1 , . . . , fm } una sucesi
on de Sturm en el intervalo [a, b] y
sea n(x) el n
umero de cambios de signo (los ceros se ignoran) en la sucesi
on
{f0 (x), f1 (x), . . . , fm (x)}.
Entonces el n
umero de races reales de f 0 en (a, b] es igual a n(a) n(b).
n:
Demostracio
Ideas que intervienen:
Por la continuidad de las funciones f i el n
umero de cambios de signo n(x) va a
ser constante en entornos de los puntos x 0 en los que no se anula ninguna de las
funciones. Por tanto este n
umero n(x) s
olo puede verse modificado al pasar por
alguno de los ceros de las mismas.
Bastar
a con observar que n(x) se incrementa en una unidad al pasar por cada
una de las races de f0 , y permanece constante en otro caso.
Supongamos que fi (x0 ) = 0 con i {1, 2, . . . , m 1}. Entonces por la condici
on 4 a de la
definici
on de Sturm tendremos que f i+1 (x0 )fi1 (x0 ) < 0. En particular, estas dos funciones no
se anulan en un entorno de x0 y tienen distintos signos. Por lo tanto cerca de x 0 suceder
a alguno
de los casos siguientes (representamos por los valores negativos, por + los positivos, por
indistintamente 0, + o , y h > 0 es suficientemente peque
no):
fi1
fi
fi+1

x0 h x 0 x0 + h

+
+
+

fi1
fi
fi+1

x0 h x 0 x0 + h
+
+
+

166

M
etodos Num
ericos (2007/2008)

En cualquiera de los casos el n


umero de cambios de signo de la sucesi
on {f i1 , fi , fi+1 } es
constante e igual a 1 en las proximidades de x 0 .
Si f0 (x0 ) = 0, por la tercera propiedad de las sucesiones de Sturm f 00 (x0 ) 6= 0 y adem
as el
signo de f1 (x0 ) es el mismo que el de f00 (x0 ). As, si esta derivada es positiva (f 0 es creciente en
x0 ) entonces f1 (x0 ) > 0 y por la continuidad f1 es positiva en un entorno de x0 . De la misma
forma, cuando la derivada es negativa, la funci
on f 1 es negativa en un entorno de x0 . Por lo
tanto s
olo se presentan los dos casos siguientes:

f0
f1

x0 h x 0 x0 + h

0
+
+
+
+

(f00 (x0 ) > 0)


(f1 (x0 ) > 0)

f0
f1

x0 h x 0 x0 + h
+
0

(f00 (x0 ) < 0)


(f1 (x0 ) < 0)

En los dos casos deja de haber un cambio de signo en la sucesi


on {f 0 , f1 } al pasar por x0 .

En resumen, el n
umero de cambios de signo n(x) s
olo disminuye en una unidad al pasar de
izquierda a derecha sobre cada una de las races de f 0 . De esta forma, el total n(a) n(b) mide
el n
umero de races reales de f 0 en (a, b].

La construcci
on de sucesiones de Sturm asociadas a polinomios proviene del metodo de
Euclides de b
usqueda del m
aximo com
un divisor.
Sea p0 = p un polinomio real de grado n 1.
Se define p1 = p0 (x).
Para i = 1, 2, 3, . . . se define pi+1 = ci+1 resto (pi1 : pi ), donde ci+1 es una constante
positiva y por resto entendemos el resto que queda al hacer la divisi
on entera del polinomio pi1 entre pi . Cuando la sucesi
on de Sturm se construye con un ordenador se elige
simplemente ci+1 = 1. Cuando lo hacemos a mano, conviene elegirlo de manera que los
coeficientes del polinomio pi+1 sean tan simples como sea posible. En otros terminos:
pi1 (x) = qi (x)pi (x) c1
i+1 pi+1 (x).

(7.2)

Esta construcci
on se realiza hasta que p m+1 = 0.
En est
a construcci
on el polinomio p m es el m
aximo com
un divisor de p0 y p1 = p0 .
Por u
ltimo consideramos la sucesi
on


p0
p1
pm
f0 =
, f1 =
, . . . , fm =
=1 .
pm
pm
pm
Observese que f0 es un polinomio que tiene las mismas races que p 0 pero, para f0 , todas
las races son simples. En efecto, las races m
ultiples de p son las races comunes de p y
0
p , es decir, son las races de pm . Si una raz x0 tiene multiplicidad k en p, entonces tiene
multiplicidad k 1 en p0 y en pm . Por consiguiente x0 es una raz simple de f0 = ppm .
Lema 7.6.3 Si p es un polinomio de grado n 1, entonces la sucesi
on {f 0 , f1 , . . . , fm } que
acabamos de construir es una sucesi
on de Sturm.

Ceros de polinomios

167

n: Todas las funciones f0 , . . . , fm son polinomios, as que en particular son funDemostracio


ciones continuas (primera condici
on en la definici
on de sucesiones de Sturm).
pm
pm

Por la definici
on, fm =
condici
on de Sturm.

= 1 es constante y no nula. Por tanto se cumple la segunda

Supongamos que f0 (x0 ) = 0 para un cierto x0 . Ello equivale a x0 es una raz de p0 , digamos
de multiplicidad m. Entonces
p0 (x) = (x x0 )m q(x)
con q(x0 ) 6= 0. Asimismo,
p1 (x)

p00 (x) = m(x x0 )m1 q(x) + (x x0 )m q 0 (x) = (x x0 )m1 (mq(x) + (x x0 )q 0 (x))

=: (x x0 )m1 t(x)

con t(x0 ) 6= 0. Dado que pm es el m


aximo com
un divisor de p0 y p1 , tendremos
pm (x) = (x x0 )m1 c(x),
donde c(x) es divisor de ambos polinomios q(x) y t(x). Pongamos q(x) = a(x)c(x). Entonces
f0 (x) = (x x0 )a(x) y
f00 (x) = (x x0 )a0 (x) + a(x)
con lo que en particular f00 (x0 ) = a(x0 ) 6= 0. Por otro lado
f1 (x) =

t(x)
mq(x) + (x x0 )q 0 (x)
=
c(x)
c(x)

y as f1 (x0 ) = mq(x0 )/c(x0 ) = ma(x0 ). En consecuencia f1 (x0 )f00 (x) = ma(x0 )2 > 0. Esta
es la
tercera condici
on en las sucesiones de Sturm.
A partir de (7.2), y dividiendo por p m , obtenemos
fi1 (x) = qi (x)fi (x) c1
i+1 fi+1 (x).
Si fi (x0 ) = 0 (1 i m 1) para un cierto punto x 0 , entonces
2
fi1 (x0 )fi+1 (x0 ) = c1
i+1 fi+1 (x0 ) 0,

y se anula s
olo si fi+1 (x0 ) = 0. Si esto u
ltimo sucediese, podemos repetir el argumento con f i+1 ,
para obtener que
fi (x0 ) = fi+1 (x0 ) = fi+2 (x0 ) = fm (x0 ) = 0.
Como fm (x0 ) = 1 esto no puede suceder. Por lo tanto tambien se cumplir
a la u
ltima condici
on
de la definici
on, lo que completa la prueba de que {f 0 , . . . , fm } es una sucesi
on de Sturm. 
Notemos que si p(a) 6= 0 6= p(b) entonces tambien ocurrir
a p m (a) 6= 0 6= pm (b), con lo que a
la hora de computar los cambios de signo podremos usar la sucesi
on {p 0 , p1 , . . . , pm } en lugar
de {f0 , f1 , . . . , fm }. Hemos probado:
Corolario 7.6.4 Sea p(x) un polinomio con coeficientes reales y constr
uyase la correspondiente
sucesi
on {p0 , p1 , . . . , pm }. Sea V (x) el n
umero de cambios de signo (los ceros se ignoran) en la
sucesi
on
{p0 (x), p1 (x), . . . , pm (x)}.
Entonces, si p(a) 6= 0 6= p(q), el n
umero de races reales de p en [a, b] es igual a V (a) V (b).

168

M
etodos Num
ericos (2007/2008)

Estamos ahora en condiciones de explicar c


omo separar todas las races reales de un polinomio
con coeficientes reales.
El teorema 7.3.1 localiza todas las races reales de un polinomio p(z) = a 0 +a1 z+ +an z n en
el intervalo [, ], (de hecho en el abierto (, ), como se desprende de una lectura cuidadosa
de la prueba) con = 1 + m
ax{|a0 |, . . . , |an1 |}/|an |. Por otra parte, el teorema de Sturm nos
permite conocer el n
umero de races reales en cada intervalo.
As, si comenzando con la lista de intervalos L 0 = {I0 }, con I0 = (, ], podemos razonar
como en el metodo de la bisecci
on, y en cada etapa k:

dividir en dos intervalos semiabiertos de la misma longitud cada intervalo de la lista L k ,

mirar, con la sucesi


on de Sturm, si hay ceros reales en cada una de las mitades, y

construir una nueva lista Lk+1 con las mitades que contienen alguna raz.

Este proceso iterativo puede detenerse cuando tengamos una sola raz en cada intervalo y
la longitud de estos intervalos sea suficientemente peque
na. Como el proceso de biseccionar
intervalos no permite aproximarnos a las races de forma r
apida podemos optar por

continuar con el proceso hasta que la proximidad de los extremos de los intervalos sea tan
peque
na que nos permita admitir que aproximan a una raz, o

detener la bisecci
on de los intervalos cuando cualquiera de sus extremos sirva como aproximaci
on inicial para aplicar metodos m
as r
apidos como el de Newton o Laguerre.

Para poder aplicar el teorema de Sturm 7.6.2 necesitamos un metodo que cuente los cambios
de signo en una sucesi
on de n
umeros reales sin tener en cuenta los ceros:

Ceros de polinomios

169

Algoritmo 7.4 M
etodo para contar los cambios de signo de una lista
Datos de entrada:
lista[m] (lista de n
umeros reales);
Variables: ncambios; // para contar los cambios de signo
ini, sig; // ndices para movernos por la sucesi
on
pini, psig; // variables auxiliares
Flujo del programa:
// Usamos un metodo signo(x) =1, -1 o 0, seg
un que x > 0, x < 0 o x = 0
ini = 0;
pini = lista[0];
ncambios = 0;
while(ini < m 1 && signo(pini) = 0){
ini = ini + 1;
pini = lista[ini];
}
if(ini = m 1){
Parada: devolver ncambios;
}
while(ini < m 1){
sig = ini + 1;
psig = lista[sig];
while(sig < m 1 && signo(pini) signo(psig) 6= 1){
sig = sig + 1;
psig=lista[sig];
}
if(sig = m 1 && signo(pini) signo(psig) 6= 1){
Parada: devolver ncambios;
}
else{
ncambios = ncambios + 1;
ini = sig;
}
}
Parada: devolver ncambios;
Datos de salida: ncambios (n
umero de cambios de signo de una lista).

Los algoritmos siguientes describen el metodo de construcci


on de la sucesi
on de Sturm asociada a un polinomio, y el metodo de la bisecci
on para localizar races en un intervalo.

170

M
etodos Num
ericos (2007/2008)

Algoritmo 7.5

M
etodo para calcular la sucesi
on de Sturm de un polinomio

Datos de entrada:
a[n] (lista con los coeficientes de un polinomio p de grado n 1);
Variables:
sturm[n][]; // matriz para la sucesi
on de Sturm
listaauxiliar[]; // vector auxiliar
Flujo del programa:
sturm[0][n 1] = a[n 1];
if(n = 1){
Parada: devolver sturm
}
for(i=0;i<n-1;i++){
sturm[0][i] = a[i];
sturm[1][i] = (i + 1) a[i + 1]; // p 0 = p y p1 = p0
}
if(n = 2){
Parada: devolver sturm
}
for(k=2;k<n;k++){
listaauxiliar= resto(sturm[k-2]:sturm[k-1]);
if(listaauxiliar.length = 1 && listaauxiliar[0] = 0){
for(j=0;j<=k-1;j++){
sturm[j] = cociente(sturm[j], sturm[k 1]);
}
Parada: devolver sturm
}
sturm[k] = listaauxiliar;
}
Parada: devolver sturm
Datos de salida: sturm[][] (matriz con los coeficientes sturm[i][] de los polinomios de la
sucesi
on de Sturm; n
otese que a partir de i = k los coeficientes quedan vacos).

Ceros de polinomios

Algoritmo 7.6

171

M
etodo para separar los ceros de un polinomio

Datos de entrada:
prec (precisi
on para longitud de intervalos);
sturm[k][] (matriz con los coeficientes de la sucesi
on de Sturm de un polinomio p);
a, b (extremos del intervalo inicial);
Variables: sturma[], sturmb[]; // vectores para guardar las evaluaciones de
// la sucesi
on de Sturm
intervalos; // lista de longitud variable para guardar los extremos de los intervalos
// que contienen exactamente una raz real
s, c; // variables auxiliares
Flujo del programa:
// Evaluamos la sucesi
on de Sturm en a y b.
for(i=0;i<k;i++){
sturma[i] = (evaluaci
on de sturm[i] en x = a);
sturmb[i] = (evaluaci
on de sturm[i] en x = b);
}
s = cuentaCambiosSigno(sturma) cuentaCambiosSigno(sturmb);
if(s 0){
intervalos = ; // lista de intervalos vaca
Parada: devolver intervalos
}
if(s = 1 && b a < prec){
intervalos = {a, b}; // lista con (a, b] como u
nico intervalo
Parada: devolver intervalos
}
else{
c = a + 0.5 (b a);
intervalos = biseccionSturm(prec, sturm, a, c) biseccionSturm(prec, sturm, c, b);
// lista uni
on de las dos listas correspondientes a a, c y b, c
Parada: devolver intervalos
}
Datos de salida: intervalos (lista de intervalos conteniendo exactamente una raz real del
polinomio).

El u
ltimo metodo propuesto utiliza recursividad, es decir, se va llamando a si mismo, y listas
de longitud variable. Si programamos en JAVA la clase Vector es una herramienta bastante
adecuada, aunque una vez construida requiere una transformaci
on en una lista (array) est
andar
de n
umeros reales.

Como en otros apartados vamos a finalizar volviendo a visitar el polinomio utilizado en los
ejemplos anteriores:

172

M
etodos Num
ericos (2007/2008)

Ejemplo 7.6.5 La sucesi


on de Sturm asociada al polinomio p(x) = x 4 4x3 + 7x2 5x 2 y
generada por el algoritmo (con todos los coeficientes c i = 1) es la siguiente
p0 (x) = x4 4x3 + 7x2 5x 2

p1 (x) = p0 (x) = 4x3 12x2 + 14x 5

p2 (x) = resto (p0 : p1 ) = 0.5x2 + 0.25x + 3.25

p3 (x) = resto (p1 : p2 ) = 35x + 70

p4 (x) = resto (p2 : p3 ) = 1.75

Si realizamos las operaciones a mano los polinomios propuestos como alternativa son m
ultiplos
positivos de los otros, pero con coeficientes m
as sencillos para las evaluaciones. Por ejemplo, en
lugar de p2 (x) podramos haber multiplicado todos los coeficientes por 4 y usar 2x 2 + x + 13.
Comenzando en el intervalo (8, 8], que contiene a todas las races reales, observamos que
en 8 la sucesi
on de Sturm toma valores {+,-,-,+,-} con lo que aparecen tres cambios de signo,
mientras que en 8 tenemos {+,+,-,-,-}, as que hay un u
nico cambio de signo. La diferencia
del n
umero de cambios de signo es 2, el n
umero de races reales. Tomando el punto medio en
el intervalo, que es 0, y viendo el signo de los valores de la sucesi
on de Sturm en esos puntos,
{-,-,+,+,-}, observamos que hay dos cambios de signo y por lo tanto podemos concluir que una
de las races es negativa y la otra positiva.

Aplicando el metodo descrito en el algoritmo con una precisi


on de 10 14 obtenemos los
intervalos
(0.2756822036512858, 0.27568220365083107] y (1.9999999999995453, 2.0]
que proporcionan excelentes aproximaciones de las dos races reales 0.27568220365 . . . y 2.

Bibliografa

[1] A. Aubanell, A. Benseny y A. Delshams, Utiles


B
asicos de C
alculo Numerico, Labor, Barcelona, 1993.
[2] J. A. Fernandez Vi
na, An
alisis Matem
atico II : Topologa y C
alculo Diferencial. 2 a ed.
corr., Tecnos, Madrid, 1992.
[3] D. Kincaid y W. Cheney, An
alisis Numerico. Las Matem
aticas del C
alculo Cientfico,
Addison-Wesley Sudamericana, Wilmington, 1994.
[4] J. Stoer y R. Bulirsh, Introduction to Numerical Analysis. 2nd. edition, Springer-Verlag,
Nueva York, 1993.

174

M
etodos Num
ericos (2007/2008)

Cap
tulo




Interpolacion y aproximacion
Interrogantes centrales del captulo




Interpolaci
on polinomial. El algoritmo de las diferencias divididas.

Interpolaci
on de Hermite.

Aproximaci
on por mnimos cuadrados. Sistemas sobredeterminados.

Aproximaci
on uniforme por polinomios. El teorema de Marcinkiewicz y el
algoritmo de Rem`es.







Destrezas a adquirir en el captulo






Describir los algoritmos correspondientes a los distintos metodos de aproximaci


on (interpolaci
on, mnimos cuadrados y uniforme) por polinomios.
Estimar, cuando sea posible, el error de las aproximaciones obtenidas.

Implementar en el ordenador los programas de los metodos de este captulo representando gr


aficamente las polinomios obtenidos para visualizar la
calidad de la aproximaci
on.







176

M
etodos Num
ericos (2007/2008)

Desarrollo de los contenidos fundamentales


En este captulo abordamos la cuesti
on de c
omo aproximar funciones mediante funciones
sencillas (polinomios). La cuesti
on es importante no s
olo porque los polinomios sean m
as f
aciles
de manejar que las funciones arbitrarias. En muchas ocasiones no sabemos cu
al es la funci
on
sino s
olo los valores que toma en unos ciertos puntos (por ejemplo porque se hayan obtenido de
forma experimental), por lo que es crucial disponer de una funci
on de aproximaci
on plausible
que nos permita inferir el valor de la funci
on, salvo un peque
no error, en el resto de los puntos.
Existen dos formas de enfocar el problema. La primera es fijar una familia de puntos de la
funci
on y encontrar el polinomio de grado m
as peque
no posible que pasa por dichos puntos.
Aparece as el problema de la interpolaci
on, que trataremos en las dos primeras secciones del
captulo (en la primera en su versi
on m
as simple, en la segunda en una versi
on m
as general
que permite usar, si es que disponemos de ella, informaci
on sobre los valores que toman las
derivadas sucesivas de la funci
on a aproximar en dichos puntos).
En principio, cuanto mayor sea el n
umero de puntos a interpolar la calidad de la aproximaci
on ser
a mejor. El precio a pagar es que el grado del polinomio aumenta y con ello las
dificultades para manejarlo. Un enfoque alternativo es fijar, con independencia del n
umero de
puntos disponible, el grado del polinomio para a continuaci
on escoger, de entre todos los polinomio de grado a lo sumo el fijado, el que mejor aproxima (en terminos de mnimos cuadrados)
a la familia de puntos. Este problema ser
a tratado en la tercera secci
on.
Acabamos de decir que la calidad de la aproximaci
on de los polinomios interpoladores aumenta con el tama
no de la familia de puntos a interpolar, pero el problema es mucho m
as sutil
de lo que cabra pensar, pues resulta que esto no tiene por que ocurrir necesariamente, salvo
que elijamos las sucesivas familias de puntos de manera adecuada. Estudiaremos este problema
en la secci
on cuarta del captulo.

8.1.

Interpolaci
on polinomial

Los contenidos de esta secci


on est
an bien explicados en el libro de Kincaid y Cheney [3]
(Secciones 6.1 y 6.2, pp. 285313).
Consideremos una familia de puntos {(x i , yi )}ni=0 con las abscisas distintas dos a dos. Llamamos polinomio interpolador en los puntos {(x i , yi )} a un polinomio de grado a lo sumo n
(abreviadamente p n ) tal que p(xi ) = yi para cada i = 0, 1, . . . , n.
Teorema 8.1.1 El polinomio interpolador existe y es u
nico.
n:
Demostracio
Ideas que intervienen:
La unicidad es consecuencia de que un polinomio de grado n no nulo no puede
tener n + 1 races distintas.
La existencia puede probarse directamente (forma del polinomio interpolador
de Lagrange) o mediante un razonamiento inductivo, construyendo el polinomio
interpolador para una familia de n + 1 puntos sabido el polinomio interpolador
para los n primeros (forma del polinomio interpolador de Newton).

Interpolaci
on y aproximaci
on

177

La demostraci
on de la unicidad es inmediata: si p(x) y q(x) son ambos polinomios interpoladores en los puntos {(xi , yi )}, entonces p(x) q(x) sera un polinomio de grado a lo sumo n
que tiene todos los puntos xi , i = 0, 1, . . . , n, como races. Por tanto p(x) q(x) debe ser el
polinomio nulo, es decir, p = q.
Damos dos demostraciones de la existencia del polinomio interpolador. Una es la construcci
on
directa: es simple comprobar que
p(x) =

n
X

yi

i=0

n
Y

j=0,j6=i

x xj
xi x j

es polinomio interpolador (esta es la llamada forma del polinomio interpolador de Lagrange).


La segunda demostraci
on es por inducci
on sobre n y tiene la ventaja de proporcionar una
manera de construir el polinomio interpolador bastante pr
actica desde el punto de vista computacional (la llamada forma del polinomio interpolador de Newton). Para n = 0 es claro; basta
tomar el polinomio constante p(x) = y 0 . Supongamos ahora que pn1 es polinomio interpolador
n1
en los puntos {(xi , yi )}i=0
y busquemos un polinomio pn interpolador en los puntos {(xi , yi )}ni=0
de la forma
n1
Y
(x xj ).
pn (x) = pn1 (x) + cn
j=0

De hecho, con independencia del valor del n


umero c n , se satisface de inmediato pn (xi ) = yi para
todo i < n. Si queremos que tambien se cumpla p n (xn ) = yn bastar
a elegir
yn pn1 (xn )
cn = Qn1
.
j=0 (xn xj )

De acuerdo con la construcci


on por inducci
on del polinomio interpolador de Newton, este
viene dado por
n
i1
X
Y
p(x) =
ci
(x xj )
i=0

j=0

para ciertos coeficientes ci , i = 0, 1, . . . , n. Observese que cn es el coeficiente principal del


polinomio interpolador. M
as exactamente, si p(x) = a n xn + an1 xn1 + + a1 x + a0 , entonces
cn = an , aunque cn puede ser cero: recuerdese que p n , es decir, p tiene grado a lo sumo
n pero puede ser inferior a n. Por otro lado, el resto de coeficientes c i ya no coinciden con
los ai . De hecho, el coeficiente ci ser
a el coeficiente principal del polinomio interpolador en los
i
puntos {(xj , yj )}j=0 . En general, si para un subconjunto dado {x i0 , xi1 , . . . , xir1 , xir } de {xi }ni=0
denotamos por p[xi0 , xi1 , . . . , xir1 , xir ] al coeficiente principal del polinomio interpolador en
a escribirse
{(xik , yik )}rk=0 , entonces podr
p(x) =

n
X
i=0

p[x0 , . . . , xi ]

i1
Y

(x xj ).

(8.1)

j=0

Resulta que hay una manera muy sencilla de calcular los n


umeros p[x 0 , . . . , xi ]: es el llamado
algoritmo de las diferencias divididas. Obviamente, p[x i ] = yi para cada i. En el resto de los
casos:

178

M
etodos Num
ericos (2007/2008)

Teorema 8.1.2 Con la notaci


on anterior, se cumple
p[xi0 , xi1 , . . . , xir1 , xir ] =

p[xi1 , . . . , xir1 , xir ] p[xi0 , xi1 , . . . , xir1 ]


.
x ir x i0

n:
Demostracio
Ideas que intervienen:
Se usa que los n
umeros p[x0 , x1 , . . . , xn1 ], p[x1 , . . . , xn1 , xn ] y
p[x0 , x1 , . . . , xn1 , xn ] son los coeficientes principales de ciertos polinomios
interpoladores.
Se combinan los dos primeros polinomios interpoladores para generar el tercero
aprovechando la unicidad del polinomio interpolador.
Se igualan el coeficiente principal del polinomio generado combinando los dos
primeros y el coeficiente principal del tercero.
Basta demostrar (en el caso general se razona an
alogamente) que
p[x0 , x1 , . . . , xn1 , xn ] =

p[x1 , . . . , xn1 , xn ] p[x0 , x1 , . . . , xn1 ]


.
xn x 0

Para ello es suficiente demostrar que si p n , pn1 y q son los polinomios interpoladores en
n1
{(xi , yi )}ni=0 , {(xi , yi )}i=0
y {(xi , yi )}ni=1 , respectivamente, entonces
pn (x) =

q(x)(x x0 ) pn1 (x)(x xn )

.
xn x 0
xn x 0

Por la unicidad de polinomio interpolador, es suficiente comprobar que si definimos


h(x) =

q(x)(x x0 ) pn1 (x)(x xn )

,
xn x 0
xn x 0

entonces h(xi ) = yi para cada i. Ahora bien, si 1 i n, entonces


h(xi ) =

q(xi )(xi x0 ) pn1 (xi )(xi xn )


yi (xi x0 ) yi (xi xn )

= yi .
xn x 0
xn x 0
xn x 0
xn x 0

Adem
as,
h(x0 ) =
y

y0 (x0 xn )
pn1 (x0 )(x0 xn )
=
= y0
xn x 0
xn x 0

h(xn ) =

q(xn )(xn x0 )
yn (xn x0 )
=
= yn .
xn x 0
xn x 0

Cuando se usa en la pr
actica el algoritmo de las diferencias divididas, lo que se hace es
escribir una secuencia de tablas cuyos terminos superiores son los n
umeros p[x 0 , x1 , . . . , xi ] de
la f
ormula (8.1).
Ejemplo 8.1.3 Calculamos el polinomio interpolador en la familia de puntos
{(5, 1), (7, 23), (6, 54), (0, 954)}

Interpolaci
on y aproximaci
on

179

(n
otese que no hay obligaci
on de escribir los puntos en ning
un orden concreto). De acuerdo con
(8.1) se tendr
a
p(x) = p[5] + p[5, 7](x 5) + p[5, 7, 6](x 5)(x + 7) + p[5, 7, 6, 0](x 5)(x + 7)(x + 6).
Ahora escribimos los n
umeros a calcular como sigue:
5

p[5]

7 p[7]
6 p[6]
0

p[5, 7]
p[7, 6]
p[6, 0]

p[5, 7, 6]
p[7, 6, 0]

p[5, 7, 6, 0]

p[0]

En la primera columna escribimos p[5] = 1, p[7] = 23, p[6] = 54 y p[0] = 954. En la


segunda obtenemos

p[5, 7] =

p[7] p[5]
= 2,
7 5

p[6, 0] =

p[7, 6] =

p[6] p[7]
= 31,
6 (7)

p[0] p[6]
= 150.
0 (6)

En la tercera se obtiene
p[5, 7, 6] =

p[6, 0] p[7, 6]
p[7, 6] p[5, 7]
= 3, p[7, 6, 0] =
= 17.
6 5
0 (7)

Por u
ltimo
p[5, 7, 6, 0] =

p[7, 6, 0] p[5, 7, 6]
= 4.
05

As pues, el polinomio interpolador buscado ser


a

p(x) = 1 + 2(x 5) + 3(x 5)(x + 7) + 4(x 5)(x + 7)(x + 6))


= 4x3 + 35x2 84x 954.

Describimos a continuaci
on la implementaci
on numerica del algoritmo:

180

M
etodos Num
ericos (2007/2008)

Algoritmo 8.1

Coeficientes de la forma del polinomio interpolador de Newton

Datos de entrada:
n + 1 (n
umero de puntos a interpolar);
x[n + 1] (abscisas de los puntos a interpolar);
y[n + 1] (ordenadas de los puntos a interpolar);
Variables:
n; // grado del polinomio interpolador
p[n + 1]; // coeficientes a calcular
Flujo del programa:
for(i=0;i<=n;i++){
pi = y i ;
}
for(i=1;i<=n;i++){
for(j=n;j>=i;j--){
pj = (pj pj1 )/(xj xji );
}
}
Datos de salida: Coeficientes p0 , p1 , . . . , pn para la forma del polinomio interpolador de
Newton

Una vez calculados los coeficientes ci de la forma del polinomio interpolador de Newton
p(x) =

n
X

ci

i=0

i1
Y

(x xj ),

j=0

la manera m
as eficiente de calcular el polinomio es usando el llamado algoritmo de Horner (o
anidaci
on). Para simplificar, imaginemos de momento que queremos calcular una suma del tipo

s=

n
X
i=0

ci

i1
Y

dj

j=0

para ciertos n
umeros ci , i = 0, 1, . . . , n, y dj , j = 0, . . . , n 1. Entonces, sacando factor com
un
repetidas veces, obtenemos:
s = c0 + c1 d0 + c2 d0 d1 + + cn2 d0 d1 dn3 + cn1 d0 d1 dn3 dn2
+cn d0 d1 dn3 dn2 dn1

= c0 + d0 (c1 + d1 (c2 + + dn3 (cn2 + dn2 (cn1 + dn1 cn )) )).


En pseudoc
odigo la suma se calculara como sigue:

Interpolaci
on y aproximaci
on

Algoritmo 8.2

181

Algoritmo de anidaci
on

Datos de entrada:
n + 1 (n
umero de sumandos en el sumatorio);
c[n + 1] (valores de los n
umeros ck );
d[n] (valores de los n
umeros dj );
Variables:
Qn1
P
sum; // valor del sumatorio ni=0 ci j=0
dj

Flujo del programa:


sum = cn ;
for(i=n-1;i>=0;i--){
sum = ci + di sum;
}

Datos de salida: Sumatorio sum

Usamos a continuaci
on el algoritmo de anidaci
on para escribir el polinomio interpolador en
la forma usual p(x) = a0 + a1 x + a2 x2 + + an1 xn1 + an xn . Para ello cubriremos n + 1 etapas
(indexadas de forma decreciente desde i = n a i = 0), de manera que en la etapa i calculamos
un polinomio pni ni a partir de otro pni1 ni1 usan la f
ormula
pni (x) = ci + (x xi )pni1 (x).
El polinomio final pn es el polinomio interpolador p buscado. Hacemos notar que en en la etapa
inicial i = n entendemos que el polinomio p 1 es el polinomio nulo, de manera que p 0 (x) cn .
Si denotamos

pni1 (x) = a0 + a1 x + a2 x2 + + ani1 xni1 ,


pni (x) = b0 + b1 x + b2 x2 + + bni xni ,
se tendr
a
pni (x) = ci + (x xi )(a0 + a1 x + a2 x2 + + ani1 xni1 )

= (ci a0 xi ) + (a0 a1 xi )x + (a1 a2 xi k)x2 + + (ani3 ani2 xi )xni2


+(ani2 ani1 xk )xni1 + ani1 xni ,

as que la relaci
on entre los coeficientes a k y bk vendr
a dada por bni = ani1 ,
bk = ak1 ak xi , k = 1, . . . , n i 1,
y b0 = ci a0 xi . En la pr
actica los coeficientes ak calculan sin ayuda de los coeficientes auxiliares bk , d
andoles de inicio el valor cero y usando la definici
on provisional de los coeficientes
a0 , a1 , . . . , ani1 para recalcular en la etapa i, tambien de forma provisional, los coeficientes
a0 , a1 , . . . , ani .

182

M
etodos Num
ericos (2007/2008)

Algoritmo 8.3

Polinomio interpolador de Newton

Datos de entrada:
n + 1 (n
umero de puntos a interpolar);
x[n + 1] (abscisas de los puntos a interpolar);
c[n + 1] (coeficientes de la forma del polinomio interpolador de Newton);
Variables:
n; // grado del polinomio interpolador
a[n + 1]; // coeficientes del polinomio interpolador
Flujo del programa:
for(i=0;i<=n;i++){
ai = 0;
}
for(i=n;i>=0;i--){
for(k=n-i;k>=1;k--){
ak = ak1 ak xi ;
}
a0 = ci a0 xi ;
}
Datos de salida: Coeficientes a0 , a1 , . . . , an del polinomio interpolador de Newton

En interesante resaltar que, aunque en apariencia no sea as, el n


umero de operaciones que se
necesita para calcular el valor p(x) del polinomio interpolador en un cierto punto x combinando
el algoritmo de las diferencias divididas y el de anidaci
on es inferior al que se necesita usando
directamente la forma del polinomio interpolador de Lagrange.
En efecto, el Algoritmo 8.1 consta de n etapas, numeradas de i = 1 a i = n, en cada una
de las cuales hay que hacer 2(n i + 1) sumas o restas y n i + 1 productos o divisiones. Por
tanto el total de sumas o restas es
SR1 = 2n + 2(n 1) + + 2 2 + 2 1 = n(n + 1)
y el de productos o divisiones P D1 = n(n + 1)/2. Por su parte el Algoritmo 8.2 (reemplazando
di por x xi ) consta de n etapas, cada una de las cuales acarrea dos sumas o restas y un
producto. El total ser
a por tanto de SR 2 = 2n sumas o restas y P D2 = n productos. El total
requerido de operaciones ser
a, por tanto, SR = SR 1 + SR2 = n(n + 1) + 2n = n2 + 3n sumas o
restas y P D = P D1 + P D2 = (n2 + 3n)/2 productos o divisiones.
Si usamos la forma del polinomio interpolador de Lagrange
p(x) =

n
X
i=0

yi

n
Y

j=0,j6=i

x xj
xi x j

para calcular p(x) encontramos que en cada una de las etapas i = 0, 1, . . . , n hay que hacer
2n restas, n divisiones y n productos (n 1 correspondientes al producto de las n fracciones
(x xj )/(xi xj ) y otra m
as de multiplicar por y i ). Por tanto el total de sumas o restas es en
este caso 2n(n + 1) y el de productos o divisiones tambien 2n(n + 1).

Interpolaci
on y aproximaci
on

183

Hasta ahora hemos estudiado el polinomio interpolador de una familia de puntos sin considerar la procedencia de los puntos de partida. En el caso que estos puntos sean del tipo
{(xi , f (xi ))}ni=0 para una cierta funci
on f : [a, b] R definida en un intervalo [a, b] que contenga a los puntos {x0 , x1 , . . . , xn } es natural preguntarse hasta que punto el polinomio interpolador
proporcionar
a una buena aproximaci
on de la funci
on. El siguiente teorema da respuesta a esta
pregunta.
Teorema 8.1.4 Sea f : [a, b] R una funci
on de clase C n+1 y sea p n el polinomio que
interpola a la funci
on f en n + 1 puntos distintos {x i }ni=0 (es decir, el polinomio interpolador
en los puntos {(xi , f (xi ))}ni=0 ). Entonces para cada x [a, b] existe x [a, b] tal que
n

f (x) p(x) =

f (n+1) (x ) Y
(x xi ).
(n + 1)!
i=0

n:
Demostracio
Ideas que intervienen:
Fijo x, se considera la funci
on (t) = f (t) p(t)
f (x)p(x)
Q
.
n
(xxi )
i=0

Qn

i=0 (t

xi ), con =

Se usa el teorema de Rolle para probar que su derivada (n + 1)-esima tiene un


cero x .
Sustituyendo en dicha derivada, se obtiene la f
ormula pedida.
Fijemos un punto x [a, b]. Si x es alguno de los puntos x i no hay nada que demostrar. Por
tanto supondremos que x 6= xi para todo i.
Consideremos la funci
on

(t) = f (t) p(t)

n
Y
(t xi ),
i=0

donde elegimos de manera que (x) = 0. En concreto,


f (x) p(x)
.
= Qn
i=0 (x xi )

Como tambien (xi ) = 0 para cada i, vemos que tiene al menos n + 2 races. Aplicando
repetidas veces el teorema de Rolle, la derivada k-esima de tendr
a al menos n + 2 k races.
En particular, (n+1) tiene alguna raz, que denotaremos por x .
Ahora bien, dado que (t) el esQresultado de restarle a f (t) un polinomio de grado a lo sumo
n, p(t), y otro de grado n + 1, ni=0 (t xi ), su derivada
a el resultado de
Q (n + 1)-esima ser
restarle a f (n+1) el coeficiente principal del polinomio ni=0 (t xi ) multiplicado por (n + 1)!,
es decir,
(n+1) (t) = f (n+1) (t) (n + 1)!.
Sustituyendo t por x y despejando se obtiene el resultado buscado.

Por ejemplo, si [a, b] = [1, 1], f (x) = sen x, y tomamos como familia de puntos interpoladores, fijado un cierto entero positivo n, los puntos {(i/n, sen(i/n))} ni=0 , entonces se cumple para

184

M
etodos Num
ericos (2007/2008)

el correspondiente polinomio interpolador p n que


n

|pn (x) f (x)| =

|f (n+1) (x )| Y
2n+1
|x xi |
(n + 1)!
(n + 1)!
i=0

para cada x [1, 1]. Consecuentemente la sucesi


on de polinomios interpoladores p n converge
uniformemente a f cuando n , lo que se corresponde con la intuici
on. Veremos m
as adelante
que, sorprendentemente, esto no tiene por que ocurrir siempre.

8.2.

Interpolaci
on de Hermite

En esta secci
on extendemos los resultados de la secci
on anterior permitiendo que podamos
fijar no s
olo los valores del polinomio interpolador en ciertos puntos sino tambien los de algunas
de sus derivadas sucesivas. Obtenemos as el llamado polinomio interpolador de Hermite. Lo
que sigue es una reelaboraci
on de algunos de los contenidos de la Secci
on 6.3 (pp. 313323) de
[3].
Proposici
on 8.2.1 Considerese la familia {(x i , yi,l )}, con i = 0, 1, . . . , m, 0 l < ki , y con las
abscisas xi distintas dos a dos. Sea n = k0 + k1 + km 1. Entonces existe un u
nico polinomio
p n tal que
p(j) (xi ) = yi,l
para cada i, l.
n:
Demostracio
Ideas que intervienen:
La existencia y unicidad del polinomio interpolador de Hermite es equivalente a
la de un sistema lineal de n + 1 ecuaciones que tiene como inc
ognitas los n + 1
coeficientes del polinomio interpolador de Hermite.
Para que dicho sistema tenga soluci
on u
nica es necesario y suficiente que la
matriz que lo define sea no singular.
Dado que los coeficientes de dicha matriz no dependen de los datos y i,l , basta
demostrar la existencia y unicidad de soluciones en el caso en que todos los datos
yi,l son nulos.
Dado que en dicho caso el polinomio proporcional trivialmente una soluci
on,
debe demostrarse que es la u
nica soluci
on posible.
Ello se consigue usando que si un polinomio de grado a lo sumo n tiene n + 1
races (contando multiplicidades) entonces es el polinomio nulo.
Sea p(x) = a0 +a1 x+ +an xn el polinomio candidato a satisfacer las condiciones prefijadas.
Entonces estas determinar un sistema de n + 1 ecuaciones lineales donde las inc
ognitas son los
coeficientes a0 , a1 , . . . , an del polinomio p(x). Por ejemplo p(x 0 ) = y0,0 equivale a
a0 + x0 a1 + x20 a2 + xn0 an = y0,0 ,

Interpolaci
on y aproximaci
on
p0 (x0 ) = y0,1 equivale a

185

a1 + 2x0 a2 + nx0n1 an = y0,1 ,

y as sucesivamente.
Como es bien sabido, el que el sistema tenga soluci
on u
nica depende de que la matriz de
coeficientes del sistema sea no singular. Como la matriz no depende de los n
umeros y i,l , si
demostramos que el problema con las condiciones y i,l = 0 para cada i y l tiene soluci
on u
nica,
habremos terminado.
Evidentemente el polinomio nulo es soluci
on en este caso, as que debemos demostrar que
esa es, de hecho, la u
nica soluci
on posible. Ahora bien, si un polinomio p(x) satisface que
las derivadas en un punto xi hasta un cierto orden ki 1 se anulan, entonces admite un factor
(xxi )ki en su descomposici
on factorial (esto es f
acil de ver escribiendo el desarrollo de Taylor del
polinomio en xi ). As pues, el polinomio p(x) es divisible por (xx 0 )k0 (xx1 )k1 , (xxm )km ,
un polinomio de grado n + 1, cosa imposible salvo que p(x) sea el polinomio identicamente nulo.

Hay otra manera de probar la Proposici
on 8.2.1, muy semejante a la que se utiliza para
demostrar la existencia y unicidad del polinomio interpolador (Teorema 8.1.1). Primero redenotamos la familia {(xi , yi,l )}, donde a partir de ahora supondremos que x 0 < x1 < < xm
para simplificar la notation, como {(x i , yi )}ni=0 , teniendose entonces x0 x1 xn . As,
on que el
(x0 , y0 ) sera (x0 , y0,0 ), y (xn , yn ) sera (xm , y0,km 1 )). Ahora demostramos por inducci
polinomio interpolador de Hermite puede escribirse como
p(x) =

n
X
k=0

ck

k1
Y
j=0

(x xj ),

(8.2)

afirmaci
on que es obvia para n = 0 y que probamos a continuaci
on para el caso n, suponiendola
verdadera para el caso n 1.

n1
Sea pn1 el polinomio interpolador de Hermite en {(x i , yi )}i=0
. Basta demostrar que el
n
polinomio interpolador de Hermite en {(x i , yi )}i=0 , pn (x), puede escribirse como

pn (x) = pn1 (x) + cn

n1
Y
j=0

(x xj ) = pn1 (x) + cn (x x0 )k0 (x xm1 )km1 (x xm )km 1 .

Para empezar, observese que para cada x i , i = 0, . . . , m1, aparece en el producto de la derecha
un factor (x xi )ki , lo que significa que las derivadas de dicho producto hasta el orden k i 1
se anulan cuando se eval
uan en xi . Otro tanto puede decirse para xm pero esta vez s
olo hasta
el orden km 2. A la luz de la hip
otesis de inducci
on, y con independencia del valor de c n , se
tendr
a entonces
p(l)
n (xi ) = yi,l
para cada 0 i < m y 0 l < ki , y tambien para i = m y 0 l < km 1.

Ahora bien, cuando se hace la derivada de orden k m 1 de la expresi


on de la derecha entonces
aparecen distintos sumandos, todos los cuales se anulan en x m , excepto
q(x) = (km 1)!(x x0 )k0 (x xm1 )km1
que s
olo contiene factores de la forma x x 0 , . . . , x xm1 . Dado que
m 1)
m 1)
p(k
(xm ) = p(k
(xm ) + cn q(xm ),
n
n

186

M
etodos Num
ericos (2007/2008)

como q(x) no se anula en xm bastar


a tomar
(k 1)

m
ym,km 1 pn1
cn =
q(xm )

(xm )

Llegados a este punto cabra preguntarse si existe una variante del algoritmo de las diferencias
divididas en este caso. La respuesta es afirmativa y, de hecho, las diferencias son muy peque
na.
Para cada subfamilia xi0 xir de x0 xn definimos, al estilo del polinomio
interpolador convencional, p[xi0 , . . . , xir ] como el coeficiente que multiplica a x r del polinomio
interpolador de Hermite en los puntos correspondientes. Por ejemplo, si la familia de partida es
(x0 , y0,0 ), (x0 , y0,1 ), (x1 , y1,0 ), (x1 , y1,1 ), (x1 , y1,2 ), (x2 , y2,0 ), (x2 , y2,1 )
entonces el polinomio interpolador de Hermite en los puntos (x 0 , y0,0 ), (x0 , y0,1 ) y (x1 , y1,0 )
vendra dado por
p(x) = p[x0 , x0 , x1 ]x2 + ,
el polinomio interpolador de Hermite en los puntos (x 0 , y0,0 ), (x1 , y1,0 ), (x1 , y1,1 ) y (x2 , y2,0 )
sera
p(x) = p[x0 , x1 , x1 , x2 ]x3 + ,
etc. N
otese que (8.2) puede reescribirse entonces como
p(x) =

n
X

p[x0 , x1 , . . . , xk ]

k1
Y
j=0

k=0

(x xj ).

(8.3)

El siguiente teorema es la clave del algoritmo:


Teorema 8.2.2 Se tiene que

p[x1 , . . . , xn ] p[x0 , . . . , xn1 ]


xn x 0
p[x0 , x1 , . . . , xn ] = y

0,n
n!

si x0 6= xn ,
si x0 = xn .

n:
Demostracio

Ideas que intervienen:


La idea fundamental de la prueba es esencialmente la misma que la del Teorema 8.1.2.
El caso x0 = x1 = = xn se considera aparte y es consecuencia del teorema
de Taylor.
El caso m
as simple es cuando x0 = xn . En este caso (x0 , y0,0 ), . . . , (x0 , y0,n ) es la familia a
interpolar y el polinomio interpolador de Hermite es simplemente el polinomio de Taylor
p(x) = y0,0 + y0,1 (x x0 ) +

y0,n
y0,2
(x x0 )2 + +
(x x0 )n .
2!
n!

Por tanto
p[x0 , x1 , . . . , xn ] = p[x0 , x0 , . . . , x0 ] =

y0,n
.
n!

Interpolaci
on y aproximaci
on

187

Supongamos ahora que x0 = x0 6= xn = xm . Al igual que en la versi


on del teorema para la
interpolaci
on convencional, si
pn1 (x) = p[x0 , . . . , xn1 ]xn1 + ,
q(x) = p[x1 , . . . , xn ]xn1 + ,
y
pn (x) = p[x0 , x1 , . . . , xn ]xn +
son los correspondientes polinomios interpoladores de Hermite, es suficiente demostrar que
pn (x) =

q(x)(x x0 ) pn1 (x)(x xn )


q(x)(x x0 ) pn1 (x)(x xm )

.
xn x 0
xn x 0
xm x 0
xm x 0

Si llamamos h(x) al polinomio de la derecha basta demostrar, por la unicidad del polinomio
interpolador de Hermite, que h(l) (xi ) = yi,l para cada 0 i m y 0 l < km .

Se prueba de inmediato por inducci


on que la derivada l-esima de q(x)(x x 0 ) viene dada
por
[q(x)(x x0 )](l) = q (l) (x)(x x0 ) + lq (l1) (x),
y del mismo modo
(l)

(l1)

[pn1 (x)(x xm )](l) = pn1 (x)(x xm ) + lpn1 (x).


Si 0 < i < m, entonces
(l)

q (l) (xi ) = pn1 (xi ) = yi,l ,


para cada 0 l < ki , de modo que tambien
(l)

h(l) (xi ) =
=

(l1)

q (l) (xi )(xi x0 ) + lq (l1) (xi ) pn1 (xi )(xi xm ) + lpn1 (xi )

xm x 0
xm x 0
yi,l (xi x0 ) + lyi,l1 yi,l (xi xm ) + lyi,l1

= yi,l .
xm x 0
xm x 0

Asimismo tenemos

(l1)

q (l1) (x0 ) = pn1 (x0 ) = y0,l1


si l < k0 , con lo que
h(l) (x0 ) =

y0,l (x0 xm ) + ly0,l1


ly0,l1

= y0,l
xm x 0
xm x 0

para cada 0 l < k0 . De igual manera se comprueba que h(l) (xm ) = ym,l , 0 l < km .

Como en el caso de las diferencias divididas de Newton, el Teorema 8.2.2 permite calcular
recursivamente, y de una manera sencilla, los coeficientes p[x 0 , x1 , . . . , xk ].
Ejemplo 8.2.3 Calculamos a continuaci
on el polinomio p(x) de grado a lo sumo 4 que cumple
las condiciones p(1) = 2, p0 (1) = 3, p(2) = 6, p0 (2) = 7, p00 (2) = 8. De acuerdo con (8.3) se
tendr
a
p(x) = p[1] + p[1, 1](x 1) + p[1, 1, 2](x 1)(x 1) + p[1, 1, 2, 2](x 1)(x 1)(x 2)
+p[1, 1, 2, 2, 2](x 1)(x 1)(x 2)(x 2).

188

M
etodos Num
ericos (2007/2008)

Ahora se tendr
a el siguiente esquema:
1 p[1]
p[1, 1]
1 p[1]

p[1, 1, 2]
p[1, 2]

2 p[2]

p[1, 1, 2, 2]
p[1, 2, 2]

p[2, 2]
2 p[2]

p[1, 1, 2, 2, 2]
p[1, 2, 2, 2]

p[2, 2, 2]
p[2, 2]

2 p[2]
En la primera columna obtenemos p[1] = 2 y p[2] = 6. En la segunda tendremos

p[1, 1] =

p0 (1)
p[2] p[1]
p0 (2)
= 3, p[1, 2] =
= 4, p[2, 2] =
= 7.
1!
21
1!

En la tercera tendremos
p[1, 1, 2] =

p[2, 2] p[1, 2]
p[1, 2] p[1, 1]
= 1, p[1, 2, 2] =
= 3,
21
21

p[1, 2, 2] =

p00 (2)
= 4.
2!

En la cuarta
p[1, 1, 2, 2] =

p[1, 2, 2] p[1, 1, 2]
p[2, 2, 2] p[1, 2, 2]
= 2, p[1, 2, 2, 2] =
= 1,
21
21

Finalmente
p[1, 1, 2, 2, 2] =

p[1, 2, 2, 2] p[1, 1, 2, 2]
= 1.
21

Por tanto el polinomio buscado ser


a

p(x) = 2 + 3(x 1) + (x 1)(x 1) + 2(x 1)(x 1)(x 2)


(x 1)(x 1)(x 2)(x 2)

= 8 + 23x 20x2 + 8x3 x4 .

Finalizamos la secci
on escribiendo el pseudoc
odigo correspondiente al metodo de interpolaci
on de Hermite. Hemos a
nadido al final el algoritmo de anidaci
on de manera que el algoritmo
arroje como resultado los coeficientes del polinomio interpolador.

Interpolaci
on y aproximaci
on

Algoritmo 8.4

Polinomio interpolador de Hermite

Datos de entrada:
m + 1 (n
umero de puntos a interpolar);
x[m + 1] (abscisas de los puntos a interpolar;
y[m + 1][] (ordenadas de los puntos a interpolar;
y[i][k] es la derivada k-esima del polinomio interpolador en x[i]);
l[m + 1] (longitudes de las filas de y);
Variables:
aux[m + 2]; // vector auxiliar para contar las multiplicidades
n; // grado del polinomio interpolador
a[n + 1]; // coeficientes del polinomio interpolador
u[n + 1]; p[n + 1]; // variables auxiliares
Flujo del programa:
for(i=0;i<=m;i++){
for(j=i+1;j<=m;l++){
if(xi = xj ){
Parada: abscisas repetidas
}
}
}
// Calculamos el grado del polinomio interpolador.
aux0 = 0;
for(i=0;i<=m;i++){
auxi+1 = auxi + li ;
}
n = auxm+1 1; // grado del polinomio interpolador

189

190

M
etodos Num
ericos (2007/2008)

Algoritmo 8.4

Polinomio interpolador de Hermite (continuaci


on)

// C
alculo de abscisas generalizadas.
for(i=0;i<=m;i++){
for(j=aux[i];j<aux[i+1];j++){
uj = x i ;
}
}
// Algoritmo de las diferencias divididas.
for(k=0;k<=n;k++){
for(i=m;i>=0;i--){
for(j=aux[i+1]-1;j>=max{aux[i],k};j--){
if(ujk = uj ){
pj = yi,k ;
for(r=1;r<=k;l++){
pj = pj /r;
}
}
else{
pj = (pj pj1 )/(uj ujk )
}
}
}
}
// C
alculo de los coeficientes del polinomio interpolador.
for(k=0;k<=n;k++){
ak = 0;
}
for(k=n;k>=0;k--){
for(i=n-k;i>=1;i--){
ai = ai1 ai uk ;
}
a0 = p k a 0 u k ;
}
Datos de salida: Polinomio interpolador con coeficientes a 0 , a1 , . . . , an

8.3.

Aproximaci
on por mnimos cuadrados

Considerese la familia de puntos {(x i , yi )}m


a de
i=0 con abscisas distintas dos a dos. La teor
la interpolaci
on nos dice que existe un u
nico polinomio q(x) de grado a lo sumo m tal que
q(xi ) = yi para cada i. Por tanto, en general, si n < m no existir
a para estos puntos un
polinomio interpolador de grado menor o igual que n. En estas condiciones tiene sentido, no
obstante, preguntarse si existir
a alg
un polinomio p(x) nP
que minimice la norma eucldea
2
k(y0 p(x0 ), . . . , ym p(xm ))k o, equivalentemente, la suma m
i=0 (yi p(xi )) . La respuesta a
esta pregunta es afirmativa pero para formularla adecuadamente necesitamos introducir los lla-

Interpolaci
on y aproximaci
on

191

mados sistemas lineales sobredeterminados. Los contenidos de esta secci


on se inspiran (bastante
libremente) en parte de la Secci
on 7.1 (pp. 394418) de [1].
Sean n < m, A Mmn (R) y b Rm . En lo que sigue supondremos que A tiene rango n.
En general el sistema
a11 x1 + a12 x2 + + a1n xn

a21 x1 + a22 x2 + + a2n xn

am1 x1 + am2 x2 + + amn xn

b1 ,

b2 ,

bm ,

que en forma matricial puede escribirse como Ax = b para el vector columna x R n cuyas
componentes son las inc
ognitas x1 , . . . , xn , carecer
a de soluci
on. Mostraremos a continuaci
on
que existe u Rn tal que kAu bk < kAx bk para cada x 6= u y daremos un metodo sencillo
para calcular u. La base del procedimiento es el bien conocido teorema de la proyecci
on, cuya

prueba puede encontrarse en muchos textos introductorios al Algebra Lineal:


Teorema 8.3.1 Sean V un espacio vectorial eucldeo sobre R y W un subespacio finitodimensional de V . Sea v V . Entonces existe w W tal que kw vk < kw yk para cada y W ,
y 6= w. Este vector w est
a caracterizado por la propiedad de que w v es ortogonal a W , es
decir, hw v, yi = 0 para cada y W .
Ahora procedemos como sigue. Vease A : R n Rm como una aplicaci
on lineal y pongamos
V = Rm , W = A(Rn ). El Teorema 8.3.1 nos dice que existe w W tal que kw bk < ky bk
para cada y W distinto de w o, equivalentemente, por ser A inyectiva (recordemos que su
rango es n), que existe u Rn (el u
nico con la propiedad Au = w) tal que kAu bk < kAx bk
para cada x Rn , x 6= u.

M
as a
un, sabemos que w est
a caracterizado por la propiedad de que w b es ortogonal
a W , es decir, hAu b, Axi = 0 para cada x R n . Dado que hAT c, di = hc, Adi para cada
c Rm , d Rn , ello equivale a decir que hAT Au AT b, xi = 0 para cada x Rn o, lo que es
lo mismo, AT Au AT b = 0. En otras palabras, u ser
a la soluci
on del sistema (de n ecuaciones
y n inc
ognitas)
AT Ax = AT b,
que es la llamada ecuaci
on normal asociada al sistema sobredeterminado. Conviene enfatizar
que la ecuaci
on tiene soluci
on u
nica pues la matriz A T A es regular. En efecto, AT Ax = 0
T
implica hA Ax, xi = 0 y por tanto kAxk2 = hAx, Axi = 0. Esto significa que Ax = 0 y as, por
la linealidad de A, x = 0.
Resumimos nuestras conclusiones en el siguiente teorema:
Teorema 8.3.2 Sean n < m, A Mmn (R) y b Rm . Supongamos que A tiene rango n.
Entonces existe u Rn tal que kAu bk < kAx bk para cada x R n , x 6= u. El vector u es
la u
nica soluci
on de la ecuaci
on normal A T Ax = AT b.
Estamos ahora en disposici
on de responder a la cuesti
on que abra el epgrafe. Recordemos
que buscamos el polinomio p(x) = a0 + a1 x + an xn que mejor
Pm aproxima en2 norma eucldea a
los puntos {(xi , yi )}m
,
es
decir,
que
minimiza
la
cantidad
i=0
i=0 (yi p(xi )) . Si consideramos

192

M
etodos Num
ericos (2007/2008)

la matriz

1 x0 x20 xn0

1 x1 x21 xn1

A=
..

1 xm x2m xnm

y los vectores x = (a0 , a1 , . . . , an ) y b = (y0 , y1 , . . . , ym ), el problema se reduce a buscar u =


(c0 , c1 , . . . , cn ) tal que kAu bk < kAx bk para cada x 6= u (n
otese que estamos utilizamos la el
termino x con un doble sentido, como variable del polinomio y como vector de R n , pero esto no
debera inducir a confusi
on). En otras palabras, el polinomio p(x) = c 0 + c1 x + cn xn buscado
es aquel cuyo vector de coeficientes u es la u
nica soluci
on de la ecuaci
on normal A T Ax = AT b.
Naturalmente la discusi
on anterior carece de sentido a menos que la matriz A tenga rango n + 1,
pero esto es f
acil de probar. Por ejemplo

1 x0 x20 xn0

1 x1 x21 xn1
0

A =
..

1 xn x2n xnn

es regular porque el sistema

a0 + x0 a1 + + xn0 an
a 0 + x 1 a1 + +

xn1 an

a0 + x n a1 + +

xnn an

y0 ,

y1 ,

yn

tiene soluci
on u
nica (los n
umeros a 0 , a1 , . . . an son los coeficientes del polinomio interpolador en
{(xi , yi )}ni=0 , que como sabemos existe y es u
nico).
Veamos a continuaci
on un ejemplo ilustrativo.

Ejemplo 8.3.3 Consideremos la tabla de puntos


x
y

1
2.1

2
3.3

3
3.9

4
4.4

5
4.6

6
4.8

7
4.6

8
4.2

9
3.4

y busquemos el polinomio p(x) = a + bx + cx 2 que mejor la aproxime. El sistema sobredimensionado a considerar es Ax d, donde

1
1

A=
1
1

1
1

1
2
3
4
5
6
7
8
9

1
4

16

25
,
36

49

64
81

Interpolaci
on y aproximaci
on

193

x = (a, b, c) y d = (2.1, 3.3, 3.9, 4.4, 4.6, 4.8, 4.6, 4.2, 3.4). Los coeficientes (a, b, c) buscados
ser
an la soluci
on de la ecuaci
on normal A T Ax = AT d, donde

9
45
285

AT A = 45 285 2025 ,
285 2025 15333

y AT d = (35.3, 186.2, 1178.2). Resolviendo la ecuaci


on normal resulta a = 0.9333, b = 1.3511,
c = 0.1189.

En la pr
actica usaremos alguno de los metodos de resoluci
on de sistemas lineales ya conocidos
para resolver la ecuaci
on normal. Notemos que la matriz A T A es siempre simetrica y definida
positiva (ya que si x 6= 0 entonces hAT Ax, xi = hAx, Axi = kAxk2 > 0) lo que hace que estemos
en un contexto optimo para usar el metodo de Cholesky.
Con adecuadas modificaciones del metodo de aproximaci
on por mnimos cuadrados descrito
podemos aproximar familias de puntos por funciones no necesariamente polin
omicas.
Ejemplo 8.3.4 Consideremos la tabla de puntos
x
y

1
7

2
11

3
17

4
27

y buscamos la funci
on y = aebx que mejor la aproxime. Tomando logaritmos y escribiendo
c = log a tendramos
log y = log a + bx = c + bx,
con lo que podemos encontrar c y b aplicando nuestro metodo a la tabla de datos
x
log y

1
log 7

2
log 11

3
log 17

4
log 27

y una vez obtenidos c y b, calculamos a = ec . Concretamente tendremos

1 1
1 2

A=
,
1 3
1 4
x = (c, b) y d = (log 7, log 11, log 17, log 27). Entonces
T

A A=

4 10
10 30

y
AT d = (log 35343, log 2211491279151) = (10.4729 . . . , 28.4227 . . .),
obteniendose c = 1.497 y b = 0.485 como soluci
on de la ecuaci
on normal A T Ax = AT d.
Finalmente a = ec = 4.468.
Es importante resaltar que en el anterior ejemplo no estamos afirmando que la funci
on
0.485x
bx
2
f (x) = 4.468e
sea aquella entre las de la forma f (x) = ae que minimiza (f (1) 7) +
(f (2) 11)2 + (f (3) 17)2 + (f (4) 27)2 . El u
ltimo ejemplo de la secci
on ilustra con m
as enfasis
esta cuesti
on.

194

M
etodos Num
ericos (2007/2008)

Ejemplo 8.3.5 Se supone que el cometa Tentax, descubierto el a


no 1968, es un objeto del
Sistema Solar. En cierto sistema de coordenadas polares (r, ), centrado en el Sol, se han
medido experimentalmente las siguientes posiciones del cometa:
r

2.20
48o

2.00
67o

1.61
83o

1.20
108o

1.02
126o

Si se desprecian las perturbaciones de los planetas, las leyes de Kepler garantizan que el cometa
se mover
a en una orbita elptica, parab
olica o hiperb
olica, que en dichas coordenadas polares
tendr
a en cualquier caso la ecuaci
on
p
r=
,
1 + e cos
donde p es un par
ametro y e la excentricidad. Ajustemos por mnimos cuadrados los valores p
y e a partir de las medidas hechas.
A partir de los datos dados hay varias maneras de formular un problema de mnimos cuadrados, todas v
alidas pero no todas equivalentes entre s. Mostramos a continuaci
on dos posibles
formas de hacerlo.
Posibilidad 1. Despejando en la ecuaci
on
r=

p
1 + e cos

llegamos a
r + er cos = p
y de aqu
r = p + e(r cos ).
Por tanto se trata de minimizar kAx bk, donde

1 1.47209
1 2.20 cos 48o
1 2.00 cos 67o 1 0.78146

A = 1 1.61 cos 83o = 1 0.19621 ,

1 1.20 cos 108o 1 0.37082


1 0.59954
1 1.02 cos 126o

2.20
2.00

b = 1.61

1.20
1.02
y
!
p
x=
.
e
Dado que A tiene rango 2 tiene sentido plantear la ecuaci
on normal A T Ax = AT b, es decir,
! !
!
5
1.47940
p
8.03
=
1.47940 3.31318
e
4.06090
cuya soluci
on p = 1.43262 y e = 0.58599 nos da los valores de p y e buscados (obteniendose
kAx bk = 0.22686 como medida de la aproximaci
on).

Interpolaci
on y aproximaci
on

195

Posibilidad 2. Dividiendo en
r + er cos = p
por er y despejando se obtiene
cos = (1/e) + (p/e)(1/r).
Se trata ahora de minimizar kAx bk, donde


1 1/2.20
1
1

1/2 1


A = 1 1/1.61 = 1


1 1/1.20 1
1 1/1.02
1

0.66913
cos 48o
cos 67o 0.39073

b = cos 83o = 0.12187

cos 108o 0.30902


cos 126o
0.58779

0.45454
0.5

0.62112 ,

0.83333
0.98039

x=
con c = 1/e y d = p/e. A partir de la ecuaci
on
!
5
3.38939
3.38939 2.49801

!
c
d
normal A T Ax = AT b, es decir,
!
!
c
0.28493
=
,
d
0.25856

obtenemos c = 1.58479 y d = 2.25381, de donde p = 1.42215 y e = 0.63100 (obteniendose


ahora kAx bk = 0.29359 como medida de la aproximaci
on).

8.4.

Aproximaci
on uniforme

A la vista del Teorema 8.1.4 parece bastante natural pensar que f es una funci
on con buenas
propiedades de derivabilidad y elegimos los puntos de la interpolaci
on de la manera natural
xi = a +

(b a)i
n

(nodos equidistribuidos) entonces los correspondientes polinomios interpoladores de f converger


an uniformemente a la funci
on. Sin embargo, como demostr
o Runge en 1901, este no es ni
mucho menos el caso: un sorprendente ejemplo es la funci
on f (x) = 1/(x 2 + 1) vista en el
intervalo [5, 5]. Sin embargo puede probarse que eligiendo en el intervalo [a, b] = [5, 5] los
nodos seg
un la regla



2i + 1
ba
1 + cos

xi = a +
2
2n + 2
(nodos de Chebyshev ) entonces los polinomios interpoladores correspondientes convergen uniformemente a f . Como veremos a continuaci
on, los nodos de Chebyshev tienen la interesante

196

M
etodos Num
ericos (2007/2008)

Q
as peque
na posible (comp
arese
propiedad que hacen la cantidad m
ax x[a,b] | ni=0 (x xi )| lo m
con el Teorema 8.1.4) pero ni siquiera para estos nodos hay garanta de convergencia: Faber
(n)
(n)
(n)
prob
o en 1914 que para cualquier sistema de nodos a x 0 < x1 < < xn b existe
una funci
on continua f de manera que si p n n es el polinomio interpolador en los puntos
(n)
(n) n
(xi , f (xi ))i=0 , entonces (pn ) no converge uniformemente a f .
Probamos a continuaci
on la mencionada propiedad de los nodos de Chebyshev, para lo que
seguiremos [3, pp. 292293].
Para empezar consideramos el caso [a, b] = [1, 1] introduciendo inductivamente los llamados
polinomios de Chebyshev :
T0 (x) = 1,
T1 (x) = x,
Tn+1 (x) = 2xTn (x) Tn1 (x),

n 1.

Los polinomios de Chebyshev tienen la siguiente u


til propiedad:
Proposici
on 8.4.1 Para x [1, 1] los polinomios de Chebyshev admiten la siguiente expresi
on:
Tn (x) = cos(n cos1 x), n 0.
n: Partiendo de la conocida igualdad trigonometrica
Demostracio
cos(A + B) = cos A cos B sen A sen B
deducimos
cos(n + 1) = cos cos n sen sen n,
cos(n 1) = cos cos n + sen sen n,
de donde
cos(n + 1) = 2 cos cos n cos(n 1).
Usemos la biyecci
on que la funci
on cos establece entre los intervalos [0, ] y [1, 1], escribamos
cos = x, = cos1 x, y apliquemos la u
ltima igualdad para deducir que las funciones f n (x) =
1
cos(n cos x) (con dominio de definici
on el intervalo [1, 1]) satisfacen, adem
as de las obvias
propiedades f0 (x) = 0 y f1 (x) = x, la igualdad
fn+1 (x) = 2xfn (x) fn1 (x),

n 1.

De aqu concluimos que Tn = fn para todo n.

A partir de la formula de la proposici


on anterior es f
acil obtener las siguientes propiedades
adicionales de los polinomios de Chebyshev para todo n 1:
|Tn (x)| 1,

x [1, 1],

Tn (cos(j/n)) = (1)j ,

0 j n,

Tn (cos((2j 1)/(2n))) = 0,

1 j n.

En particular, dado que (fijo n), se cumple |T n (cj )| = 1 para los puntos
cj = cos(j/n),

0 j n,

Interpolaci
on y aproximaci
on

197

se tiene que
kTn k = m
ax |Tn (x)| = 1.
x[1,1]

Asimismo, observemos que los puntos


rj = cos((2j 1)/(2n)),

1 j n,

son exactamente los ceros del polinomio T n .


Decimos que un polinomio p n es m
onico si su coeficiente principal es 1. De la definici
on
inicial de los polinomios de Chebyshev se deduce que el coeficiente principal de T n es 2n1 , es
decir, Pn (x) = 21n Tn (x) es m
onico. Claramente kPn k = 21n . Resulta que no hay polinomio
m
onico que tenga una norma menor:
Proposici
on 8.4.2 Si p n es m
onico, entonces kpk 21n .
n: Supongamos que |p(x)| < 21n para todo x [1, 1]. Entonces
Demostracio
(1)j p(cj ) |p(cj )| < 21n = (1)j Pn (cj ),

0 j n,

con lo que
(1)j (p(cj ) Pn (cj )) < 0,

0 j n.

As pues, el polinomio p Pn toma alternativamente valores negativos y positivos en los n + 1


puntos cj , lo que significa que tiene al menos n ceros distintos, cosa imposible dado que p y P n
son m
onicos y por tanto p Pn tiene grado a lo sumo n 1.

En este punto retomemos el Teorema 8.1.4. Si g : [1, 1] R es de clase C n+1 , {si }ni=0
es una familia de n + 1 puntos distintos en [1, 1] y t n es el polinomio interpolador en
ormula del teorema puede reescribirse como
{si , g(si )}ni=0 , la f
kg tk

kg (n+1) k
kqk ,
(n + 1)!

Q
donde q(x) = ni=0 (x si ). Como q es m
onico de grado n + 1, la Proposici
on 8.4.2 nos dice que
kqk 2n . Si elegimos los puntos si como los nodos de Chebyshev, es decir, como los ceros
rj del polinomio de Chebyshev de grado n + 1,
si = cos((2i + 1)/(2n + 2)),

0 i n,

se tiene exactamente kqk = 2n . En consecuencia hemos probado:


Teorema 8.4.3 Sean g : [1, 1] R una funci
on de clase C n+1 , {si }ni=0 los nodos de Chebyshev y t n el correspondiente polinomio interpolador. Entonces
kg tk

kg (n+1) k
.
2n (n + 1)!

Es f
acil probar un resultado an
alogo para una funci
on f : [a, b] R de clase C n+1 definida
en un intervalo arbitrario [a, b] y el polinomio interpolador p n en los nodos de Chebyshev
generalizados



2i + 1
ba
1 + cos

, 0 i n.
xi = a +
2
2n + 2

198

M
etodos Num
ericos (2007/2008)

on lineal entre los intervalos [1, 1] y


En efecto, si y = (x) = a + ba
2 (1 + x) es la biyecci
[a, b], definimos g(x) = f ((x)) y denotamos por t(x) al polinomio interpolador en los puntos
{si , g(si )}, es f
acil comprobar que t(x) = p((x)). Dado que
kf pk = m
ax |f (y) p(y)| = m
ax |g(x) t(x)| = kg tk
y[a,b]

x[1,1]

y
kg (n+1) k =

(b a)n+1 (n+1)
kf
k ,
2n+1

deducimos del Teorema 8.4.3 que


kf pk

(b a)n+1 kf (n+1) k
.
22n+1 (n + 1)!

Demostramos a continuaci
on que si partimos de una funci
on continua dada y elegimos adecuadamente el sistema de nodos, entonces los polinomios interpoladores resultantes convergen
uniformemente a la funci
on (teorema de Marcinkiewicz). Seguimos la Secci
on 1.7 (pp. 3542)
del libro de Crouzeix y Mignot [2].
El punto de partida es el famoso teorema de aproximaci
on de Weierstrass, que garantiza que las funciones continuas pueden aproximarse uniformemente por polinomios (aunque
no da informaci
on acerca de la naturaleza y propiedades de dichos polinomios). Traducimos
a continuaci
on una prueba bastante asequible que hemos encontrado en el sitio de internet
http://planetmath.org. Puede encontrarse una demostraci
on alternativa en [3, pp. 296299].
Teorema 8.4.4 (Teorema de aproximaci
on de Weierstrass) Sean f : [a, b] R y  > 0.
Entonces existe un polinomio p tal que kf pk < .
n: Para simplificar la notaci
Demostracio
on suponemos que estamos trabajando en el intervalo [0, 1]. Esto no implica perdida de generalidad porque si estuviesemos trabajando en otro
intervalo, podramos hacer un cambio de coordenadas lineal (o hablando con m
as propiedad,
afn) que lleve el dominio de f a [0, 1].

unos cuantos casos particulares del


El caso f (x) = 1 1 x. Comenzamos demostrando

teorema, empezando con la funci


on f (x) = 1 1 x. En este caso podemos usar el antiguo
metodo babil
onico de calculo de races cuadradas para construir polinomios aproximadores.
Definimos los polinomios P0 , P1 , P2 , . . . recursivamente mediante
P0 (x) = 0,

1#
Pn (x)2 + x .
2
Es consecuencia obvia de la definici
on que si 0 x 1 entonces 0 P n (x) 1 para todo n. Es
igualmente obvio que Pn es una funci
on creciente en el intervalo [0, 1]. Restando las f
ormulas
recursivas para n + 1 y n + 2, cancelando y factorizando obtenemos la relaci
on
Pn+1 (x) =

1
Pn+2 (x) Pn+1 (x) = (Pn+1 (x) + Pn (x))(Pn+1 (x) Pn (x)).
2
De esta concluimos que Pn+1 (x) Pn (x) para todo n y todo x en [0, 1]. Esto implica que
lmn Pn (x) existe para todo x en [0, 1]. Tomando lmitesen ambos lados de la recursi
on que
define Pn y simplificando, vemos que lmn Pn (x) = 1 1 x. La relaci
on implica tambien
que Pn+1 (x) Pn (x) es una funci
on creciente of x en el intervalo [0, 1] para todo n. Por tanto
Pn+1 (x) Pn (x) Pn+1 (1) Pn (1).

Interpolaci
on y aproximaci
on

199

Sumando en n y cancelando, vemos que


Pm (x) Pn (x) Pm (1) Pn (1)
siempre que m > n. Tomando el lmite cuando m tiende a infinito, concluimos que

1 1 x Pn (x) 1 Pn (1).
Dado que los polinomios Pn convergen, para cada  > 0, existe n tal que 1 P n (1) < . Para
este n, |f (x) Pn (x)| < , as que el teorema de aproximaci
on de Weierstrass se cumple en este

caso. Observese que se tiene igualmente que | y q(y)| <  para todo y [0, 1], donde q(y) es
el polinomio 1 Pn (1 y).
El caso f (x) = |x c|.A continuaci
on consideramos el caso especial f (x) = |x c|, donde
0 < c < 1. Usando que a2 + b2 a + b obtenemos que
p
(x c)2 + 2 /4 |x c| /2.

Si  es suficientemente peque
no para que (x c) 2 + 2 /4 este en el intervalo [0, 1] para cada x
[0, 1], podemos usar el caso del teorema de aproximaci
on ya probado y encontrar un polinomio
P tal que
p
| (x c)2 + 2 /4 P (x)| < /2

cuando x [0, 1]. Combinando las dos desigualdades y aplicando la desigualdad triangular se
llega a |f (x) P (x)| < , y por tanto hemos probado el teorema de aproximaci
on de Weierstrass
para el caso f (x) = |x c|. N
otese que si esta funci
on puede aproximarse uniformemente por
. Observemos que esta funci
on se anula
polinomios lo mismo ocurrir
a para g(x) = a |xc|+(xc)
2
en el intervalo [0, c] y es lineal con pendiente a en el intervalo [c, 1].
El caso de las funciones lineales a trozos. Como corolario del resultado que acabamos de probar
se obtiene que el teorema tambien se cumple para las funciones lineales a trozos. Para comprenderlo basta razonar por inducci
on, suponiendo que las funciones que constan de n 1 trozos
lineales pueden aproximarse uniformemente por polinomio, y prob
andolo para las que constan
de n trozos (las que constan de un u
nico trozo son directamente polinomios de grado cero o
uno).
Sea pues f (x) una funci
on que consta de n 1 trozos lineales y sea 0 < c < 1 el u
ltimo
punto en el que la funci
on f no es derivable. Supongamos que en los trozos lineales adyacentes
a c la funci
on f tiene pendientes ai y ad respectivamente y modifiquemos f en el intervalo [c, 1]
de manera que la pendiente en dicho intervalo sea tambien a i . De esta manera construimos una
funci
on g con n 1 trozos lineales, para que existir
a un polinomio P 1 tal que |g(x) P1 (x)| <
/2. Seg
un el caso anterior, si h es la funci
on que se anula en [0, c] y es lineal con pendiente
ad ai en [c, 1], entonces existe otro polinomio P 2 (x) tal que |h(x) P2 (x)| < /2. Claramente,
f (x) = g(x) + h(x). Entonces |f (x) P (x)| <  para P = P 1 + P2 .
El caso general. A la vista del caso anterior basta demostrar que si f es continua en [0,1]
entonces para todo  > 0 existe una funci
on lineal a trozos tal que |f (x) (x)| < /2 para
cada x [0, 1]. En efecto, si tal funci
on existe entonces tambien existe un polinomio P tal que
|(x) P (x)| < /2, y entonces |f (x) P (x)| < .
Dado que [0, 1] es compacto, f es uniformemente continua. Por tanto, para cada  > 0 existe
un entero N tal que |f (x) f (y)| < /2 siempre que |x y| 1/N .

Definamos conforme a las siguientes condiciones: si m es un entero entre 0 y N , (m/N ) =


f (m/N ); en cada uno de los intervalos [m/N, (m + 1)/N ], es lineal.

200

M
etodos Num
ericos (2007/2008)

Para cada punto x del intervalo [0, 1], existe un entero m tal que x pertenece al intervalo
[m/N, (m + 1)/M ]. Dado que una funci
on lineal est
a acotada por los valores en los extremos,
(x) est
a entre (m/N ) = f (m/N ) y ((m + 1)/N ) = f ((m + 1)/N ). Dado que |f (m/N )
f ((m + 1)/N )| /2, se tiene que |f (m/N ) (x)| < /2. Como |x m/N | 1/N , tambien se
cumple |f (m/N ) f (x)| < /2. Por la desigualdad triangular, |f (x) (x)| < .

Lema 8.4.5 Sea f : [a, b] R una funci
on continua y sean n + 2 puntos distintos x 0 < x1 <
< xn < xn+1 en [a, b]. Entonces existe un u
nico polinomio p n tal que
f (xi ) p(xi ) = (1)i (f (x0 ) p(x0 )) para cada i = 1, 2, . . . , n + 1.

(8.4)

M
as a
un, este polinomio se caracteriza por la propiedad
m
ax |f (xi ) p(xi )| <

0in+1

m
ax |f (xi ) q(xi )|, q n , q 6= n.

0in+1

(8.5)

n: N
Demostracio
otese que las ecuaciones de (8.4) constituyen un sistema de n + 1 ecuaciones
lineales en las n + 1 inc
ognitas a0 , a1 , . . . , an de los coeficientes del polinomio p(x) = a 0 +
a1 x + + an xn buscado. Demostramos a continuaci
on que dicho polinomio, de existir, verifica
(8.5). Esto es suficiente para concluir la afirmaci
on del lema porque garantiza que la soluci
on
del sistema, de existir, es u
nica. En efecto, si f es la funci
on nula, el polinomio nulo (que
obviamente es soluci
on) ser
a la u
nica soluci
on del sistema, lo que equivale a decir que la matriz
de coeficientes del sistema lineal dado por (8.4) (que no depende de f ) es regular.
Probemos pues que de (8.4) se concluye (8.5). Sea q n con q 6= p y supongamos, por
reducci
on al absurdo, que
m
ax |f (xi ) q(xi )|

0in+1

m
ax |f (xi ) p(xi )| = |f (x0 ) p(x0 )|.

0in+1

No es restrictivo suponer que f (x0 ) p(x0 ) 0. Entonces


(1)i (q(xi ) p(xi )) = (1)i (f (xi ) p(xi )) (1)i (p(xi ) q(xi ))
f (x0 ) p(x0 ) + |p(xi ) q(xi )|

0,

para cada i, lo que implica que


Z xi+1
(1)i
q 0 (x) p0 (x) dx = (1)i [q(x) p(x)]xxi+1
i
xi

= (1)i (q(xi+1 ) p(xi+1 )) (1)i (q(xi ) p(xi ))

0.

Ahora existen dos posibilidades. Si q 0 p0 0 en alguno de los intervalos [xi , xi+1 ] entonces,
por ser q 0 p0 un polinomio, tendremos que q 0 p0 0 en todo R, con lo que q p es constante.
Como el signo de q p va cambiando en los puntos x i , no hay m
as alternativa que q = p,
contradicci
on.
Concluimos entonces que existe i (xi , xi+1 ) tal que (1)i (q 0 (i ) p0 (i )) < 0 para cada
i = 0, 1, . . . , n, con lo que por la propiedad de los valores intermedios q 0 p0 admitir
a una raz
en cada uno de los intervalos (i , i+1 ), i = 0, 1, . . . , n 1. Esto hace un total de al menos n
races para el polinomio (no nulo) q 0 p0 , que tiene a lo sumo grado n 1. Hemos llegado de
nuevo a una contradicci
on.


Interpolaci
on y aproximaci
on

Algoritmo 8.5

201

Algoritmo de primera equioscilaci


on

Datos de entrada:
n + 2 (n
umero de puntos para la primera equioscilaci
on);
x[n + 2] (abscisas de los puntos para la primera equioscilaci
on);
y[n + 2] (ordenadas de los puntos para la primera equioscilaci
on);
Variables:
e[n + 1]; // coeficientes a calcular
b[n + 1]; // vector de terminos independientes
S[n + 1][n + 1]; // matriz del sistema a resolver
signo; // variable auxiliar para los cambios de signo
aux0, aux1: // variables auxiliares
Flujo del programa:
signo = 1;
for(i=1;i<=n+1;i++){
signo = signo;
bi1 = y0 signo yi ;
for(j=0;j<=n;j++){
aux0 = 1;
aux1 = 1;
Si1,j = aux0 signo aux1;
aux0 = aux0 x0 ;
aux1 = aux1 xi ;
}
}
e = S 1 b;
Datos de salida: Coeficientes e0 , e1 , . . . , en del primer polinomio equioscilador

Se dice que una funci


on continua h : [a, b] R equioscila en los puntos x 0 < x1 < <
xn < xn+1 si khk = |h(xi )|, i = 0, 1, . . . , n + 1, y h(xi ) = h(xi+1 ), i = 0, 1, . . . , n. Si p n
es un polinomio tal que f p equioscila en x 0 < x1 < < xn < xn+1 y q n es distinto de
p entonces, de acuerdo con (8.5),
kf pk =

m
ax |f (xi ) p(xi )| <

0in+1

m
ax |f (xi ) q(xi )| kf qk .

0in+1

Ello significa que p es el polinomio de n que mejor aproxima a f en la norma uniforme (o,
como se dice a veces, en el sentido de Chebyshev ). Probamos a continuaci
on que, en efecto, existe
un polinomio p n tal que f p equioscila en ciertos puntos x 0 < x1 < < xn < xn+1
del intervalo [a, b]. Este polinomio se construye como lmite de una sucesi
on de polinomios
construidos mediante el llamado (segundo) algoritmo de Rem`es. Este algoritmo funciona como
sigue.

202

M
etodos Num
ericos (2007/2008)

Algoritmo 8.6

Calculo del m
aximo absoluto de una funci
on

Datos de entrada:
malla (tama
no de la malla de puntos);
h (funci
on cuyo m
aximo se quiere calcular);
a (extremo izquierdo del intervalo);
b (extremo derecho del intervalo);
Variables:
max; // punto donde la funci
on |h| alcanza el m
aximo
y; // variable auxiliar
Flujo del programa:
max = a;
for(i=1;i<=malla;i++){
y = a + (b a)i/malla;
if(|h(y)| > |h(max)|){
max = y;
}
}
Datos de salida: Punto max donde la funci
on |h| alcanza el m
aximo

Inicializaci
on. Partimos de puntos a x 00 < x01 < < x0n < x0n+1 b arbitrariamente fijados
(por ejemplo, igualmente distribuidos en [a, b]).
Etapa k del algoritmo. Supongamos conocidos los puntos
a xk0 < xk1 < < xkn < xkn+1 b.
A estos puntos les asociamos el polinomio p k n tal que
f (xki ) pk (xki ) = (1)i (f (xk0 ) pk (xk0 )) para cada i = 1, 2, . . . , n + 1;
el Lema 8.4.5 garantiza que el polinomio p k est
a bien definido. Ahora aparecen dos casos:
Primer caso: kf pk k = |f (xki ) pk (xki )|. En este caso f pk equioscila en los puntos xki ,
con lo que pk es la mejor aproximaci
on de f en norma uniforme que and
abamos buscando; el
algoritmo acaba.
Segundo caso: existe y [a, b] tal que
|f (y) pk (y)| = kf pk k > |f (xki ) pk (xki )|,

i = 1, 2, . . . , n + 1.

Entonces se construye una nueva sucesi


on de puntos
a xk+1
< xk+1
< < xk+1
< xk+1
n
0
1
n+1 b
reemplazando uno de los puntos xkj por y de manera que los signos de f (xk+1
) pk (xk+1
) se
i
i
vayan alternando, es decir,
k+1
k+1
) pk (xk+1
)) 0 para cada i = 1, 2, . . . , n.
(f (xk+1
i
i+1 ) pk (xi+1 )(f (xi

En concreto, aparecen seis posibilidades:

Interpolaci
on y aproximaci
on

203

(a) Si y [a, xk0 ) y (f (xk0 ) pk (xk0 ))(f (y) pk (y)) 0, tomamos


xk+1
=y
0

xk+1
= xki , i = 1, 2, . . . , n + 1.
i

(b) Si y [a, xk0 ) y (f (xk0 ) pk (xk0 ))(f (y) pk (y)) < 0, tomamos
xk+1
=y
0

xk+1
= xki1 , i = 1, 2, . . . , n + 1.
i

(c) Si y (xkj , xkj+1 ) y (f (xkj ) pk (xkj ))(f (y) pk (y)) 0, tomamos


xk+1
=y
j

xk+1
= xki ,
i

i 6= j.

(d) Si y (xkj , xkj+1 ) y (f (xkj ) pk (xkj ))(f (y) pk (y)) < 0, tomamos
xk+1
j+1 = y

= xki , i 6= j + 1.
xk+1
i

(e) Si y (xkn+1 , b] y (f (xkn+1 ) pk (xkn+1 ))(f (y) pk (y)) 0, tomamos


xk+1
n+1 = y

xk+1
= xki , i = 0, 1, . . . n.
i

(f) Si y (xkn+1 , b] y (f (xkn+1 ) pk (xkn+1 ))(f (y) pk (y)) < 0, tomamos


xk+1
n+1 = y

xk+1
= xki+1 , i = 0, 1, . . . n.
i

204

M
etodos Num
ericos (2007/2008)

Algoritmo 8.7

Algoritmo de R
em`
es

Datos de entrada:
n; (grado del polinomio equioscilador);
malla (tama
no de la malla de puntos para el c
alculo de la norma);
a (extremo izquierdo del intervalo);
b (extremo derecho del intervalo);
f (funci
on a aproximar);
tol (tolerancia en la aproximaci
on);
nmax (n
umero m
aximo de iteraciones);
Variables:
e[n + 1]; // coeficientes del polinomio equioscilador
x[n + 2]; // abscisas de los puntos para la equioscilaci
on
y[n + 2]; // vector auxiliar
z; // variable auxiliar
j; // variable auxiliar
Flujo del programa:
for(i=0;i<=n+1;i++){
xi = a + (b a)i/(n + 1);
}
for(k=1;k<=nmax;k++){
for(i=0;i<=n+1;i++){
yi = f (xi );
}
e = primeraEquioscilacion(x, y);
// p : polinomio de coeficientes e0 , e1 , . . . , en
z = maximo(f p, a, b, malla);
if(|f (z) p(z)| |y0 p(x0 )| < tol){
Parada: p es el polinomio equioscilador
}

Interpolaci
on y aproximaci
on

Algoritmo 8.7

205

Algoritmo de R
em`
es (continuaci
on)

else{
if(z < x0 ){
j = 1;
}
if(z > xn+1 ){
j = n + 1;
}
for(i=0;i<=n;i++){
if(z > xi && z < xi+1 ){
j = i;
}
}
if(j = 1){
if((y0 p(x0 ))(f (z) p(z)) < 0){
for(i=n+1;i>=1;i--){
xi = xi1 ;
}
}
x0 = z;
}
if(j = n + 1){
if((yn+1 p(xn+1 ))(f (z) p(z)) < 0){
for(i=0;i<=n;i++){
xi = xi+1 ;
}
}
xn+1 = z;
}
if(j 0 && j < n + 1){
if((yj p(xj ))(f (z) p(z)) < 0){
xj+1 = z;

}
else{
xj = z;
}

}
Parada: no hay convergencia en nmax iteraciones
Datos de salida: Coeficientes e0 , e1 , . . . , en del polinomio equioscilador o mensaje de
error.

Demostraremos a continuaci
on que si el algoritmo no se detiene entonces la sucesi
on de
polinomios pk converge al polinomio de mejor aproximaci
on.

206

M
etodos Num
ericos (2007/2008)

Lema 8.4.6 Supongamos que el algoritmo de Rem`es no se detiene en un n


umero finito de
iteraciones. Entonces
k < k+1 < nf kf qk para todo k 0,
qn

donde
k =

m
ax |f (xki ) pk (xki )|.

0in+1

n: Por el Lema 8.4.5 sabemos que


Demostracio
k =

m
ax |f (xki ) pk (xki )|

0in+1

m
ax |f (xki ) q(xki )| kf qk

0in+1

(8.6)

para cada q n , as que k nf qn kf qk para cada k. Por tanto basta demostrar que
la sucesi
on (k ) es estrictamente creciente.
Fijemos k 0 y sea xk+1
el nuevo termino con relaci
on a los x ki . No es restrictivo suponer
i0
k+1
f (xk+1
i0 ) pk (xi0 ) = kf pk k

(8.7)

k+1
(el caso (f (xk+1
alogo). Entonces, por la definici
on de p k y la
i0 ) pk (xi0 )) = kf pk k es an
k+1
manera de elegir xi0 , tenemos que

f (xk+1
) pk (xk+1
) = (1)ii0 k , i 6= i0 .
i
i

(8.8)

Asimismo
f (xk+1
) pk+1 (xk+1
) = (1)ii0 k+1 , i = 0, 1, . . . , n + 1,
i
i

(8.9)

siendo
k+1
f (xk+1
i0 ) pk+1 (xi0 ) = k+1 = k+1 .

(8.10)

Si a (8.7) le restamos (8.10) se obtiene


k+1
pk+1 (xk+1
i0 ) pk (xi0 ) = kf pk k k+1 .

(8.11)

Por otra parte, si a (8.8) le restamos (8.9) resulta


pk+1 (xk+1
) pk (xk+1
) = (1)ii0 (k k+1 ),
i
i

i 6= i0 ;

en otras palabras, si qk n es el u
nico polinomio que cumple q k (xk+1
) = (1)ii0 +1 , i 6= i0 ,
i
entonces
pk+1 pk = (k+1 k )qk .

(8.12)

Finalmente, combinando (8.6) y (8.11) llegamos a


nf kf qk k+1 0.
(k+1 k )qk (xk+1
i0 ) = kf pk k k+1
qn

(8.13)

k+1
N
otese que qk (xk+1
an (al menos) n + 1
i0 ) > 0. En efecto, si qk (xi0 ) < 0 entonces habr
cambios de signo de x0 a xn+1 y por tanto n + 1 ceros distintos, cosa imposible porque el grado
de qk es a lo sumo n. El mismo argumento permite descartar q k (xk+1
i0 ) = 0 en los casos i0 = 0
k+1
,
x
)
e i0 = n + 1, y concluir que qk (x) 0 para todo x (xk+1
i0 1 i0 +1 cuando i0 {1, . . . , n}. Por

Interpolaci
on y aproximaci
on

207

tanto, si en este u
ltimo caso, q k (xk+1
nimo relativo de qk y podemos aplicar
i0 ) = 0, xi0 es un m
el teorema de Rolle para encontrar n ceros de la derivada de q k , una contradicci
on.
Como qk (xk+1
i0 ) > 0, (8.13) implica que  k+1 k 0, de donde k+1 = k+1 y k+1 k .
Finalmente, si k+1 = k entonces pk+1 = pk por (8.12), y aplicando (8.11) concluimos
kf pk k = k+1 = k =

m
ax |f (xki ) pk (xki )|,

0in+1

y el algoritmo se habra detenido.

Observaci
on 8.4.7 N
otese que como consecuencia de (8.13) la demostraci
on del Lema 8.4.6
tambien proporciona la cadena de desigualdades
0 kf pk k k+1 (k+1 k )kqk k .

(8.14)

Lema 8.4.8 Existe un n


umero > 0 tal que |x ki+1 xki | para cada k 0, i = 0, 1, . . . , n.
n: Supongamos lo contrario para encontrar una subsucesi
Demostracio
on 1 k 1 < k2 < <
kl < tal que lml xikl = xi para cada i = 0, 1, . . . , n + 1 y no todos los puntos x i son
distintos. Entonces podemos encontrar un polinomio interpolador en dichos puntos, es decir,
existe p n tal que p(xi ) = f (xi ) para cada i. Ahora bien, gracias a (8.5) y al Lema 8.4.6
sabemos que
0  0 < 1 kl =

m
ax |f (xikl ) pkl (xikl )|

0in+1

m
ax |f (xki l ) p(xikl )|

0in+1

lo que es incompatible con


lm

m
ax |f (xikl ) p(xki l )| =

l 0in+1

m
ax |f (xi ) p(xi )| = 0.

0in+1


Ya estamos listos para probar:
Teorema 8.4.9 Sean f : [a, b] R continua y n 0. Entonces existe un u
nico polinomio p
de mejor aproximaci
on a f en n para la norma uniforme. Este polinomio est
a caracterizado
porque f p equioscila en n + 2 puntos de [a, b]. El algoritmo de Rem`es proporciona o bien p
tras un n
umero finito de pasos o una sucesi
on de polinomios que converge uniformemente a p.
n: Debemos demostrar que la sucesi
Demostracio
on (p k ) de polinomios generada por el algoritmo converge al polinomio p buscado.
Con la notaci
on del Lema 8.4.6 pongamos  = lm k k . Escribamos cada uno de los
polinomios qk que all introducamos mediante la forma del polinomio interpolador de Lagrange,
es decir,
X
Y
x xk+1
j
ii0 +1
qk (x) =
(1)
.
k+1
x
xk+1
j
i6=i
i 6=j6=i i
0

Usando el Lema 8.4.8 vemos que


kqk k (n + 1)

(b a)n
=: C,
n

208

M
etodos Num
ericos (2007/2008)

es decir, las normas de los polinomios q k est


an acotadas, con lo que podemos aplicar (8.14) para
deducir
lm kf pk k = .

(8.15)

En particular, la sucesi
on de polinomios (p k ) tambien est
a acotada en el espacio normado
de dimensi
on finita (n , k k ). Por tanto podremos encontrar una subsucesi
on (k l ), puntos
x0 < x1 < < xn < xn+1 y un polinomio p n tales que
lm pkl = p

lm xki l = xi , i = 0, 1, . . . , n + 1.

Dado que
k = kf (xki ) pk (xki )k

f (xki+1 ) pk (xki+1 ) = (f (xki ) pk (xki ))

para cada k, tomando lmites se obtiene


 = kf (xi ) p(xi )k

f (xi+1 ) p(xi+1 ) = (f (xi ) p(xi )).

Por (8.15), f p equioscila en los puntos {x i }, con lo que p es el polinomio de mejor aproximaci
on
en la norma uniforme. M
as a
un, observese que cualquier otro punto de acumulaci
on de la
sucesi
on (pk ) equioscilara en n + 2 puntos, con lo que tambien sera el polinomio de mejor
aproximaci
on en la norma uniforme, es decir, p. Es bien sabido que si una sucesi
on acotada
tiene un u
nico punto de acumulaci
on, entonces ese es su lmite. Hemos demostrado que (p k )
converge uniformemente a p.

Ponemos fin a la secci
on obteniendo como corolario el teorema de Marcinkiewicz anunciado
al comienzo de la misma:
Corolario 8.4.10 (Teorema de Marcinkiewicz) Sea f : [a, b] R continua. Entonces
(n)
(n)
(n)
existe un sistema de puntos de interpolaci
on x 0 < x1 < < xn de manera que si pn n
(n)
(n)
es el polinomio interpolador en los puntos {(x i , f (xi )}ni=0 , entonces la sucesi
on (pn ) converge
uniformemente a f .
n: Basta tomar como pn el polinomio que mejor aproxima a f en la norma
Demostracio
uniforme. En efecto, como f p equioscila en n + 2 puntos tendr
a n + 1 ceros distintos, que
(n)
ser
an los puntos {xi } buscados. N
otese que la convergencia de (p n ) a f est
a garantizada por
el teorema de aproximaci
on de Weierstrass.


Bibliografa
[1] R. Burden y J. D. Faires, An
alisis Numerico. 7 a ed., Thomson Learning, Madrid, 2002.

[2] M. Crouzeix y A. L. Mignot, Analyse Numerique des Equations


Differentielles. 2e edition
revisee et augmentee, Masson, Pars, 1992.
[3] D. Kincaid y W. Cheney, An
alisis Numerico. Las Matem
aticas del C
alculo Cientfico,
Addison-Wesley Sudamericana, Wilmington, 1994.