Está en la página 1de 249

Métodos Numéricos y Cálculo Cientı́fico

Ángel Martı́n del Rey

Departamento de Matemática Aplicada


Escuela Politécnica Superior de Ávila
Universidad de Salamanca
ii
Índice General

I Fundamentos Teóricos 1
1 Análisis de Errores 3

2 Resolución de Ecuaciones en una Variable 9


2.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Separación de raı́ces . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Cálculo de las raı́ces . . . . . . . . . . . . . . . . . . . . . . . 14
2.3.1 Método de la Bisección . . . . . . . . . . . . . . . . . . 14
2.3.2 Método del Punto Fijo . . . . . . . . . . . . . . . . . . 19
2.3.3 Método de Newton-Raphson . . . . . . . . . . . . . . . 28

3 Interpolación Polinomial 35
3.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2 Polinomio interpolador de Lagrange . . . . . . . . . . . . . . . 36
3.3 Polinomio interpolador de Newton . . . . . . . . . . . . . . . . 41
3.4 Error en el polinomio de interpolación . . . . . . . . . . . . . 45
3.5 Interpolación a trozos . . . . . . . . . . . . . . . . . . . . . . . 48
3.5.1 Interpolación lineal a trozos . . . . . . . . . . . . . . . 48
3.5.2 Interpolación de Hermite . . . . . . . . . . . . . . . . . 50
3.5.3 Interpolación esplı́n cúbica . . . . . . . . . . . . . . . . 52

4 Diferenciación e Integración Numérica 57


4.1 Diferenciación numérica . . . . . . . . . . . . . . . . . . . . . 57
4.2 Integración numérica . . . . . . . . . . . . . . . . . . . . . . . 60
4.2.1 Métodos compuestos . . . . . . . . . . . . . . . . . . . 62

5 Resolución Numérica de EDOs 65


5.1 Métodos de paso simple . . . . . . . . . . . . . . . . . . . . . 67
5.1.1 Métodos de Taylor . . . . . . . . . . . . . . . . . . . . 67
5.1.2 Métodos de Runge-Kutta . . . . . . . . . . . . . . . . . 70
5.2 Métodos multipaso . . . . . . . . . . . . . . . . . . . . . . . . 74

iii
iv ÍNDICE GENERAL

5.2.1 Métodos de Adams-Bashford . . . . . . . . . . . . . . . 75


5.2.2 Métodos de predicción-corrección . . . . . . . . . . . . 79

6 Sistemas de ecuaciones lineales 83


6.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.2 Métodos directos . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.2.1 Los métodos más sencillos . . . . . . . . . . . . . . . . 85
6.2.2 Sistemas lineales diagonales y triangulares . . . . . . . 87
6.2.3 Eliminación Gaussiana . . . . . . . . . . . . . . . . . . 89
6.2.4 Factorización LU . . . . . . . . . . . . . . . . . . . . . 95
6.2.5 Factorización P A = LU . . . . . . . . . . . . . . . . . 99
6.2.6 Factorización de Chowlesky . . . . . . . . . . . . . . . 102
6.3 Métodos iterativos . . . . . . . . . . . . . . . . . . . . . . . . 105
6.3.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . 105
6.3.2 Preliminares algebraicos . . . . . . . . . . . . . . . . . 106
6.3.3 Método iterativo de Jacobi . . . . . . . . . . . . . . . . 110
6.3.4 Método iterativo de Gauss-Seidel . . . . . . . . . . . . 116
6.3.5 Estudio de la convergencia . . . . . . . . . . . . . . . . 120

7 Aproximación de valores y vectores propios 125


7.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
7.2 Preliminares algebraicos . . . . . . . . . . . . . . . . . . . . . 125
7.3 Los métodos de las potencias . . . . . . . . . . . . . . . . . . 135
7.3.1 El método de la potencia . . . . . . . . . . . . . . . . . 136
7.3.2 El método de la potencia inversa . . . . . . . . . . . . 138
7.3.3 Los métodos de la potencia desplazada y de la potencia
inversa desplazada . . . . . . . . . . . . . . . . . . . . 140
7.4 Cálculo de los valores propios de matrices simétricas . . . . . . 142
7.4.1 El método de Jacobi . . . . . . . . . . . . . . . . . . . 142
7.4.2 El método de Householder . . . . . . . . . . . . . . . . 157
7.4.3 La factorización QR . . . . . . . . . . . . . . . . . . . 162

8 Factorización SVD 169


8.1 Descomposición en valores singulares . . . . . . . . . . . . . . 169
8.2 La matriz pseudoinversa . . . . . . . . . . . . . . . . . . . . . 174

9 Ajuste de Datos 177


9.1 El método de los mı́nimos cuadrados . . . . . . . . . . . . . . 177
9.1.1 Ajuste mediante y = ax + b . . . . . . . . . . . . . . . 177
9.1.2 Ajuste mediante sistemas generales de funciones . . . . 181
9.2 Sistemas ortogonales y polinomios de Chebyshev . . . . . . . . 185
ÍNDICE GENERAL v

9.2.1 Fundamento teórico . . . . . . . . . . . . . . . . . . . . 185


9.2.2 El algoritmo . . . . . . . . . . . . . . . . . . . . . . . . 189
9.2.3 Regresión polinomial . . . . . . . . . . . . . . . . . . . 190
9.3 Otras aplicaciones de los mı́nimos cuadrados . . . . . . . . . . 194
9.3.1 Resolución de sistemas incompatibles . . . . . . . . . . 194
9.3.2 Aproximación de una función en un intervalo . . . . . . 198
9.3.3 Sistemas de ecuaciones normales no lineales . . . . . . 199

II Implementación Computacional 201


10 Consideraciones generales 203

11 Vectores y matrices 207

12 Cálculo diferencial e integral 217

13 Representación gráfica de funciones 221

14 Manipulación de ecuaciones 227

15 Programación en MatLab 233


15.1 Creación de M-ficheros . . . . . . . . . . . . . . . . . . . . . . 233
15.2 Definición de funciones . . . . . . . . . . . . . . . . . . . . . . 233
15.3 Variables locales y globales . . . . . . . . . . . . . . . . . . . . 235
15.4 Operadores relacionales . . . . . . . . . . . . . . . . . . . . . . 235
15.5 Control de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . 236
15.5.1 La instrucción for . . . . . . . . . . . . . . . . . . . . . 236
15.5.2 La instrucción while . . . . . . . . . . . . . . . . . . . 237
15.5.3 La instrucción if . . . . . . . . . . . . . . . . . . . . . . 238
15.5.4 Las instrucción switch . . . . . . . . . . . . . . . . . . 239
15.6 Subfunciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

16 Sistemas de ecuaciones 243


x
vi ÍNDICE GENERAL
Parte I
Fundamentos Teóricos

1
Capı́tulo 1
Análisis de Errores

Los Métodos Numéricos es la rama de las Matemáticas que tiene como ob-
jetivo el diseño y el desarrollo de procedimientos que permitan obtener de
manera efectiva soluciones numéricas aproximadas a problemas matemáticos
puesto que en multitud de ocasiones se carece de los métodos analı́ticos ex-
actos para la obtención de tales soluciones.
Por regla general estos métodos se basan en la discretización del pro-
blema y en la aplicación de sencillos algoritmos iterativos que dan lugar a
aproximaciones sucesivas a la solución.
Además, como en la mayor parte de los casos el número y magnitud de los
cálculos a realizar es muy grande, se hace preciso la utilización del ordenador
o de la calculadora para llevarlos a cabo con rapidez y eficacia.
Consecuentemente, la estructura que se sigue a la hora de resolver un
problema es la siguiente:

A veces los datos de entrada que se suministran al algoritmo no son to-


talmente exactos pues se obtienen de observaciones experimentales. Además
tanto el almacenamiento de los datos de la máquina (ya sea un ordenador o

3
4 CAPÍTULO 1. ANÁLISIS DE ERRORES

una calculadora) como su posterior manipulación en el algoritmo introduce


errores. Ası́ pues tenemos el siguiente esquema:

En general, si suponemos que x es la solución exacta de un determinado


problema y x̃ es la solución aproximada que obtenemos, entonces se denomina
error absoluto a la diferencia e = x − x̃. Hay que indicar que en algunas
ocasiones el signo de e tiene importancia, de tal forma que si e > 0 entonces
se denomina error por exceso, mientras que si e < 0 se denomina error
por defecto. Cuando el signo no es importante el error se toma con signo
positivo: |e|. Normalmente la magnitud de e por sı́ sola no nos proporciona
mucha información a no ser que la relacionemos con x. De esta manera se
denomina error relativo a |e| / |x| (siempre y cuando x 6= 0). Finalmente
denominaremos error porcentual a 100 · |e| / |x|.
Hay que ser conscientes de que, en la práctica, no se puede conocer el
valor exacto de e ya que conocerlo supondrı́a conocer el valor de x y conse-
cuentemente no tendrı́a sentido el cálculo de x̃. Ası́ pues, lo que se hace es
acotar dicho error. Por lo tanto se dice que c es una cota del error cuando
se puede demostrar de manera rigurosa que |e| < c.
Veamos cada uno de los errores introducidos anteriormente:

Errores en los datos. Sobre este tipo de errores, si se dan, nada pode-
mos decir pues se deben a factores externos como son la precisión de los
instrumentos de medida, etc.

Errores de redondeo. Este tipo de error es debido a la capacidad finita


que tienen los ordenadores de memoria. Ello implica que ninguna máquina
es capaz de guardar un sólo número irracional completo. De hecho, cada
número se representa en el ordenador con una cantidad máxima de cifras
decimales de tal forma que se guardarán de manera exacta todos aquellos
números que no excedan de ese máximo de cifras.
Los ordenadores utilizan dos tipos de aritmética: aritmética racional de
precisión arbitraria que permite realizar cálculos con números racionales de
5

forma exacta aunque es poco eficiente para algunos problemas debido al


tiempo y memoria requeridos, lo cual la hace poco extendida; y la aritmética
de coma flotante que es la que tiene incorporada la mayorı́a de los sistemas.
En ella se trabaja con un número finito y fijo de números y los cálculos se
realizan con representaciones aproximadas de números verdaderos.
Esta representación puede hacerse de diferentes maneras aunque las dos
más comunes son la notación decimal en coma flotante (normalizada) y la
notación binaria en coma flotante.
Un número expresado en notación decimal en coma flotante normalizada
es de la forma
±m · 10±E ,
donde m ∈ Q tal que 1 ≤ m < 10 y E ∈ N ∪ {0}. Consecuentemente está
formado por cuatro elementos: signo, mantisa (m), signo del exponente y
exponente (E).

Ejemplo 1. Escribir en notación decimal en coma flotante normalizada el


número 345.6701.
La notación decimal en coma flotante normalizada es la siguiente:
+3.456701 · 10+6 .

Por otra parte, un número expresado en notación binaria en coma flotante


es de la forma
(s) (S) Em,
donde s es el signo del número (0 para los positivos y 1 para los negativos),
S es el signo del exponente (0 para los positivos y 1 para los negativos), E es
el exponente (expresado en binario) y m es la mantisa (expresada en código
binario y tal que 1 ≤ m < 2). Consecuentemente el número ası́ representado
es
S
(−1)s · m · 2(−1) Ed
,
donde Ed es la conversión decimal del número binario E.

Ejemplo 2. Encontrar el número decimal cuya notación binaria en coma


flotante es (0) (1) 1 1.1.
La notación binaria en coma flotante es la siguiente:
1
(0) (1) 1 1.1 ≡ (−1)0 · 1.1 · 2(−1) 1
= 1.1 · 2−1 ≡ 0.11 ≡ 2−1 + 2−2 = 0.75.
6 CAPÍTULO 1. ANÁLISIS DE ERRORES

Cada número se almacena en la máquina en una palabra que en la mayor


parte de los actuales ordenadores tiene una longitud de 32 bits, los cuales se
distribuyen de la siguiente manera:

1 bit para el signo del número,


8 bits para el exponente con signo,
23 bits para la mantisa.

Dado que la mantisa es tal que 1 ≤ m < (10)2 , hace que la primera cifra de
m (la que se encuentra a la izquierda del punto) sea siempre 1 y dado que
éste será común a todas las mantisas no se guarda y, consecuentemente, los
23 bits dedicados a la mantisa representarán las 24 primeras cifras. Además
el rango del exponente se encuentra entre −127 y 128.
Consecuentemente, al usar palabras de 32 bits sólo se pueden representar
una cantidad finita de números: 232 − 224 = 4278190080 (obsérvese que no
serı́a 232 ya que el exponente +0 y el exponente −0 dan lugar a los mismos
números). A estos números, representables en el ordenador de manera exacta,
se les llamará números máquina.
A este tipo de representación se la denomina de precisión simple. En ge-
neral las computadoras también pueden trabajar con doble precisión en la que
para representar un número se emplean dos palabras (64 bits) distribuidos
como sigue: 1 bit para el signo, 11 bits para el exponente y 53 bits para la
mantisa.
Los errores que pueden aparecer en el ordenador cuando hace cálculo con
números almacenados pueden provenir de dos fuentes:

1) Si el resultado de un cálculo tiene un exponente que se sale del rango


admisible, entonces se produce lo que se conoce como desbordamiento.
Éste puede ser por exceso (overflow) o por debajo (underflow). La
representación estándar en coma flotante trata el desbordamiento por
exceso asignando al número el valor +∞ si es positivo ó −∞ si es
negativo, y sigue realizando cálculos siempre que tengan sentido las
siguientes operaciones. Por otra parte, trata el desbordamiento por
defecto asignando al número el valor 0.

2) Cuando se necesita trabajar con números no máquina que no producen


desbordamiento (es decir, aquellos números cuya mantisa es más grande
que la admisible), entonces se hace necesario aproximarlos a números
máquina cercanos (a este fenómeno se le denomina redondeo). Para
llevar a cabo una operación aritmética (+, −, ×, ÷) en un ordenador,
lo primero que hay que considerar es que los números con los que se
7

trabaja no son exactamente los de partida, sino que se trabaja con sus
redondeos. De esta forma el resultado de una operación con números
máquina no tiene porqué ser un número máquina y habrá, por lo tanto,
que redondearlo. Consecuentemente, la aritmética estándar en coma
flotante se desarrolla mediante operaciones ⊕, ª, ⊗, ®, tales que
x ⊕ y = r (x + y) , x ⊗ y = r (x × y) ,
x ª y = r (x − y) , x ® y = r (x ÷ y) ,
donde r (x) representa el redondeo de x. Para llevar a cabo una suma
o resta de dos números máquina se procede de la siguiente manera:
(a) Se igualan los exponentes al mayor de ambos.
(b) Se realiza la operación de forma exacta.
(c) Se normaliza el resultado (modificando, si es necesario, el expo-
nente de forma que la mantisa esté entre 1 y 2, es decir, de la
forma ±1.m × 2E ).
(d) Se redondea en caso de que sea necesario.
(e) Se normaliza si es necesario.
Para realizar la multiplicación o división de dos números no es necesario
igualar los exponentes, basta con multiplicar las dos mantisas y se
suman los dos exponentes, normalizando posteriormente el resultado y
redondeándolo si fuera necesario.
Hay que hacer notar que en algunas ocasiones se pueden producir situa-
ciones anómalas derivadas del hecho de estar trabajando con una pre-
cisión determinada. Por ejemplo si tomamos
x = +4.61903 · 10−1 , y = +3.21864 · 10−4 ,
entonces
x ⊕ y = 4.62224 · 10−1 .
Consecuentemente
(x ⊕ y) ª x = 3.21000 · 10−4 6= y.

Errores de truncamiento. Este es el error que se obtiene al usar un


cierto algoritmo que implemente un método numérico ya que se basan en
sucesivas aproximaciones a la solución.

Ejercicio Propuesto
Ejercicio 1. Calcular el código decimal y el código binario del número 3.75.
8 CAPÍTULO 1. ANÁLISIS DE ERRORES
Capı́tulo 2

Resolución de Ecuaciones en
una Variable

2.1 Introducción
En multitud de ocasiones surge el problema de la búsqueda de las soluciones
de una ecuación. En la mayor parte de los casos no se trata de una labor
sencilla ya que pocas son las ecuaciones para las que se conoce un método
exacto de cálculo de sus soluciones.
En nuestro estudio nos vamos a encontrar con dos tipos de ecuaciones:
ecuaciones algebraicas y ecuaciones trascendentes. Algunas ecuaciones alge-
braicas son, por ejemplo, las siguientes:

0 = x − 3,
0 = x2 − 2x + 1,
0 = x101 − x51 + x25 − x12 + x3 − x + 2.

Por otra parte, algunas ecuaciones trascendentes son, por ejemplo, estas
otras:

0 = ex − 2,
0 = ex + x,
0 = sen (x) − 1,
0 = sen(x) + x − 1.

En la presente sección resolveremos el siguiente problema:

“Calcular las raı́ces de la ecuación F (x) = 0 en el intervalo [a, b]”

9
10CAPÍTULO 2. RESOLUCIÓN DE ECUACIONES EN UNA VARIABLE

Para ello usaremos los siguientes tres métodos: método de la bisección,


método del punto fijo y método de Newton-Raphson.
Hay que tener en cuenta que los anteriores métodos se aplican sobre ecua-
ciones de la forma F (x) = 0, en intervalos, [a, b], en los que la raiz existente
es única. Consecuentemente antes de llevar a cabo el algoritmo desarrollado
en dichos métodos hemos de asegurarnos de la existencia y unicidad de dicha
raiz en el intervalo considerado. Por lo tanto, la resolución del problema que
nos ocupa se lleva a cabo en dos etapas:
1. Separación de raı́ces: se obtienen intervalos con una única raiz en cada
uno de ellos.
2. Aplicación del método: se aplica el método elegido en cada intervalo.
Analicemos detalladamente cada uno de estos pasos.

2.2 Separación de raı́ces


Los resultados básicos de los que nos vamos a ayudar son los siguientes:
Teorema de Bolzano. Si F es una función continua en [α, β] y tal que
sign (F (α)) 6= sign (F (β)), entonces existe al menos un punto γ ∈ (α, β) tal
que F (γ) = 0.

Observación. El cumplimiento del Teorema de Bolzano garantiza la existen-


cia de, al menos, una raiz en el intervalo considerado.
Observación. En algunos libros la condición sign (F (α)) 6= sign (F (β)) se
suele escribir de la siguiente manera: F (α) · F (β) < 0.
Teorema de Rolle. Si F ∈ C 1 ([α, β]) y es tal que F (α) = F (β) = 0,
entonces existe al menos un punto γ ∈ (α, β) tal que F 0 (γ) = 0.
2.2. SEPARACIÓN DE RAÍCES 11

Observación. El Teorema de Rolle nos da una acotación del número de raı́ces


existentes.

Consecuentemente, se tienen los siguientes resultados:

Teorema 1. Si F ∈ C 1 ([α, β]) es tal que sign (F (α)) 6= sign (F (β)) y F 0


posee signo constante en (α, β), entonces F (x) = 0 posee una única raiz
γ ∈ (α, β) .

Teorema 2. Si F ∈ C 2 ([α, β]) es tal que sign (F (α)) = 6 sign (F (β)) y F 0


sólo se anula en n puntos del intervalo (α, β), entonces F tendrá a lo sumo
n + 1 raı́ces.
12CAPÍTULO 2. RESOLUCIÓN DE ECUACIONES EN UNA VARIABLE

Teorema 3. Si F ∈ C 1 ([α, β]) y es tal que F 00 tiene signo constante en


[α, β], entonces F tiene, a lo sumo, dos raı́ces reales en [α, β].

Ejemplo 1. Comprobar que F (x) = e−x − x = 0 posee una única raiz en el


intervalo [0, 1].
La función F (x) = e−x − x es continua en todo R y concretamente en el
intervalo [0, 1], ya que es suma de dos funciones continuas en todo el conjunto
de los números reales. Además el signo que toma F (x) en los dos extremos
es distinto: F (0) = 1 > 0 y F (1) = e−1 − 1 < 0, luego aplicando el Teorema
de Bolzano concluimos que existe al menos una solución de F (x) = 0 en el
intervalo [0, 1].
Veamos a continuación que esa raiz es única. Para ello bastará con que
demostremos que la función y = F (x) es monótona (su derivada tiene signo
constante) en [0, 1]. Ası́:

F 0 (x) = −e−x − 1 < 0 ∀x ∈ (0, 1) ,

luego la función es monótona (decreciente) y, consecuentemente, la raiz es


única como se puede apreciar en la siguiente figura:
2.2. SEPARACIÓN DE RAÍCES 13

Ejemplo 2. Separar las raı́ces que la ecuación F (x) = x3 − x = 0 posee en


el intervalo [−2, 2].
Dado que F (x) = x3 −x es un polinomio, es inmediato ver que es continua
en [−2, 2] y derivable en (−2, 2). Además F (−2) = −6 < 0 y F (2) = 6 >
0, luego en el intervalo [−2, 2] existe al menos una raiz. Veamos cuántos
extremos tiene la función en ese intervalo:

0 2 3
0 = F (x) = 3x − 1 ⇔ x = ± ' ±0.577.
3

Existen pues dos extremos y consecuentemente tendrá a lo sumo tres raı́ces.


Estudiemos el signo y el carácter de dichos extremos:
Ã√ ! √ √ à √ ! √ √
3 3 3 3 3 3
F = − < 0, F − =− + > 0,
3 9 3 3 9 3
Ã√ ! à √ !
3 √ 3 √
F 00 (x) = 6x ⇒ F 00 = 2 3 > 0, F 00 − = −2 3 < 0.
3 3

Consecuentemente en 3/3√se alcanza un mı́nimo negativo (esto es, por
debajo del eje OX), y en − 3/3 se alcanza un máximo positivo (es decir,
por encima del eje OX). Por lo tanto, necesariamente hay tres raı́ces y los
intervalos que las aislan son los siguientes:
" √ # " √ √ # "√ #
3 3 3 3
−2, − , − , , ,2 .
3 3 3 3

En la siguiente figura se puede observar la gráfica de la función y = x3 −x


y las tres raı́ces existentes:
14CAPÍTULO 2. RESOLUCIÓN DE ECUACIONES EN UNA VARIABLE

2.3 Cálculo de las raı́ces


Una vez que sabemos que la ecuación F (x) = 0 posee una única raiz en
el intervalo [a, b], vamos a aplicar un método para calcularla. Como hemos
comentado anteriormente, nos centraremos en los tres siguientes:
- Método de la Bisección.
- Método del Punto Fijo.
- Método de Newton-Raphson.

2.3.1 Método de la Bisección


Grosso modo, el método de la Bisección consiste en ir dividiendo el inter-
valo original en sucesivos intervalos más pequeños (concretamente cada uno
de ellos es de longitud la mitad que el anterior) en los que se satisfaga el
Teorema de Bolzano, de tal manera que después de un número determinado
de subdivisiones el punto medio del subintervalo obtenido es o bien la raiz
exacta de la función, o bien una aproximación con suficiente precisión de la
misma. Hay que indicar que en caso de no obtenerse la solución exacta, el
número de iteraciones que se hacen depende de la precisión que se quiera en
la solución.
Ası́ pues partimos de una ecuación F (x) = 0 para la cual existe una única
solución en el intervalo [a, b]. El algorimo que se sigue es el siguiente:

a+b
1. Se calcula el punto medio del intervalo [a, b]: c = .
2
Se estudia el valor de dicho punto medio:

- Si F (c) = 0 entonces hemos acabado.


- Si F (c) 6= 0 elegimos de entre [a, c] y [c, b] el intervalo en el que se
satisfaga el Teorema de Bolzano y lo denotamos por [a1 , b1 ].

a1 + b1
2. Se calcula el punto medio del intervalo [a1 , b1 ]: c1 = .
2
Se estudia el valor de dicho punto medio:

- Si F (c1 ) = 0 entonces hemos acabado.


- Si F (c1 ) 6= 0 elegimos de entre [a1 , c1 ] y [c1 , b1 ] el intervalo en el
que se satisfaga el Teorema de Bolzano y lo denotamos por [a2 , b2 ].
2.3. CÁLCULO DE LAS RAÍCES 15

a2 + b2
3. Se calcula el punto medio del intervalo [a2 , b2 ]: c2 = .
2
Se estudia el valor de dicho punto medio:

- Si F (c2 ) = 0 entonces hemos acabado.


- Si F (c2 ) 6= 0 elegimos de entre [a2 , c2 ] y [c2 , b2 ] el intervalo en el
que se satisfaga el Teorema de Bolzano y lo denotamos por [a3 , b3 ].

4. . . .

Observación. Nótese que necesariamente si el subintervalo [ai , bi ] satisface


las condiciones del Teorema de Bolzano, entonces uno y sólo uno de los
subintervalos [ai , ci ] y [ci , bi ] satisface las condiciones del Teorema de Bolzano.

El proceso anterior terminará cuando o bien encontremos un k tal que


F (ck ) = 0, en cuyo caso habrı́amos encontrado la solución exacta de la
ecuación, o bien cuando se encuentre un k tal que ck sea lo suficientemente
16CAPÍTULO 2. RESOLUCIÓN DE ECUACIONES EN UNA VARIABLE

preciso para ser considerado como solución de la ecuación con la precisión


deseada. En este sentido, si queremos que el error cometido en el cálculo de
la raiz sea inferior a ε, entonces el número mı́nimo de iteraciones k que hemos
de hacer del anterior algoritmo debe satisfacer la siguiente desigualdad:

b−a
< ε.
2k

Ejemplo 3. Calcular la raiz de F (x) = e−x − x = 0 en el intervalo [0, 1]


con un error inferior a 10−3 .
En el Ejemplo 1 hemos demostrado que, efectivamente, existe una única
raiz de dicha ecuación en el intervalo considerado. Calculémosla usando el
Método de la Bisección. Para ello y en primer lugar calcularemos el número
mı́nimo de iteraciones necesarias para obtener dicha raiz con un error inferior
a 10−3 , ası́:

1
< 10−3 ⇔ 1000 < 2k ⇔ k ≥ 10.
2k

Consecuentemente, unos sencillos cálculos muestran lo siguiente:

k ak ck bk
0 0 0.5 1
1 0.5 0.75 1
2 0.5 0.625 0.75
3 0.5 0.5625 0.625
4 0.5625 0.59375 0.625
5 0.5625 0.578125 0.59375
6 0.5625 0.570313 0.578125
7 0.5625 0.566406 0.570313
8 0.566406 0.568359 0.570313
9 0.566406 0.567383 0.568359

En la siguiente figura se puede observar la gráfica de la función y = e−x −x,


ası́ como su raiz:
2.3. CÁLCULO DE LAS RAÍCES 17

Ejemplo 4. Calcular la raiz negativa de F (x) = x4 − x − 10 = 0 con una


precisión de dos cifras decimales exactas.
Como F (x) es un polinomio es una función continua y derivable en todo
el conjunto de los números reales. En primer lugar hemos de aislar las raı́ces
de dicha ecuación en diferentes intervalos. Ası́, la función considerada posee
un sólo extremo:
1
0 = F 0 (x) = 4x3 − 1 ⇔ x = √
3
.
4

Consecuentemente la ecuación F ¡(x) √ = 0¢ tiene,√a lo sumo, dos raı́ces


¡ reales.
√ ¢
00
Su extremo es un mı́nimo pues F 1/ 4 = 6/ 2 > 0 y, además, F 1/ 3 4 =
3 3

1

434
− √314 − 10 < 0, luego la función y = F (x) es de la forma:

Entonces si encontramos dos intervalos en los cuales se verifique el Teore-


ma de Bolzano entonces demostraremos que, efectivamente posee dos raı́ces.
18CAPÍTULO 2. RESOLUCIÓN DE ECUACIONES EN UNA VARIABLE

Ası́ probando con diferentes valores, se obtienen los siguiente subintervalos:

¾
F (−2) = 8 > 0
à [−2, −1]
F (−1) = −8 < 0
F (0) = −10 < 0
¾
F (1) = −10 < 0
à [1, 2]
F (2) = 4 > 0

Luego hay una raiz negativa en el intervalo [−2, −1] y una raiz positiva en
el intervalo [1, 2]. La que nos piden calcular es la negativa.
Dado que hemos de calcularla con una precisión de dos cifras decimales
exactas, entonces ε ≤ 0.5 · 10−3 (en general, si se requiere una precisión de m
cifras decimales exactas, entonces ε ≤ 0.5 · 10−(m+1) ), con lo que el número
de iteraciones necesarias viene dado por:

−1 + 2
< 0.5 · 10−3 ⇔ 2000 < 2k ⇔ k ≥ 11.
2k

Consecuentemente, unos sencillos cálculos muestran lo siguiente:

k ak ck bk
0 −2 −1.5 −1
1 −2 −1.75 −1.5
2 −1.75 −1.625 −1.5
3 −1.75 −1.6875 −1.625
4 −1.75 −1.71875 −1.6875
5 −1.71875 −1.70313 −1.6875
6 −1.70313 −1.69531 −1.6875
7 −1.70313 −1.69922 −1.69531
8 −1.69922 −1.69727 −1.69531
9 −1.69922 −1.69824 −1.69727
10 −1.69824 −1.69775 −1.69727

En la siguiente figura se observa la gráfica de la función considerada con


sus dos raı́ces:
2.3. CÁLCULO DE LAS RAÍCES 19

Ejercicios Propuestos

Ejercicio 1. Calcular la raiz positiva de F (x) = x2 − 2x − 2 = 0 con dos


cifras decimales exactas.

Ejercicio 2. Calcular 7 con dos cifras decimales exactas.
Ejercicio 3. Obtener una aproximación con un error inferior que 10−5 , a
la solución de la ecuación F (x) = ex + 2−x + 2 cos (x) − 6 = 0 en el intervalo
[1, 2].

2.3.2 Método del Punto Fijo


Sea F (x) = 0 una ecuación tal que posee una única raiz c ∈ [a, b]. Grosso
modo, el método del punto fijo se basa en encontrar una función y = G (x)
tal que, amén de otras condiciones de carácter técnico, verifique que:
F (c) = 0 ⇐⇒ G (c) = c,
esto es, dicho método consiste en encontrar la solución de F (x) = 0 en [a, b]
a partir del cálculo del punto fijo de la función y = G (x) en dicho intervalo.
La solución se encontrará sin más que ir iterando sucesivamente la función
y = G (x) a partir de una semilla inicial, con una precisión que dependerá
del número de iteraciones.
De manera rigurosa tenemos las siguientes definiciones y resultados im-
portantes:
Definición. Se dice que x0 es un punto fijo de la función y = G (x) si
G (x0 ) = x0 . Consecuentemente los puntos fijos de y = G (x) son las solu-
ciones de la ecuación x = G (x).
20CAPÍTULO 2. RESOLUCIÓN DE ECUACIONES EN UNA VARIABLE

Definición. Una aplicación G : [a, b] → R se llama contractiva si existe un


k ∈ R con 0 < k < 1, de modo que
|G (x) − G (y)| ≤ k · |x − y| .

A la constante k se la denomina constante de contractividad.

Proposición. Si G es una función derivable en (a, b) y existe k ∈ R, con


0 < k < 1 tal que |G0 (x)| ≤ k para todo x ∈ [a, b], entonces G es contractiva
en [a, b].

Teorema (del punto fijo de Banach). Sea G : [a, b] → R una función


contractiva de constante k ∈ [0, 1) y continua, tal que G ([a, b]) ⊆ [a, b].
Entonces G posee un único punto fijo en [a, b], esto es existe un único c ∈
[a, b] tal que G (c) = c. Además, se verifica que c es el lı́mite de la sucesión
dada por
x0 ∈ [a, b], x0 arbitrario,
{xn = G (xn−1 )}n∈N
y se tiene la siguiente estimación del error:
kn
² = |xn − c| ≤ |x1 − x0 | , n ∈ N, (2.1)
1−k
o bien:
k
² = |xn − c| ≤ |xn − xn−1 | , n ∈ N. (2.2)
1−k

Este último resultado nos muestra la lı́nea de actuación en el presente


algoritmo: se itera un número determinado de veces la función G partiendo
2.3. CÁLCULO DE LAS RAÍCES 21

de una semilla inicial x0 , deteniéndose dicho proceso cuando se alcance la


precisión deseada dada por la cota (2.1) ó (2.2).
Hay que indicar que si k es muy próxima a 1, entonces el error puede ser
muy grande; por ello es conveniente tomar k << 1.

Consecuentemente, el algoritmo del punto fijo para calcular la solución


de F (x) = 0 en [a, b] se puede resumir en lo siguiente:

1. Se busca una función y = G (x) contractiva y continua con k << 1 y


tal que G ([a, b]) ⊆ [a, b] de modo que calcular la solución de F (x) = 0
sea equivalente a calcular el punto fijo de y = G (x) en [a, b].
2. Se elige un x0 ∈ [a, b] y se calcula x1 = G (x0 ).
3. A partir de la cota del error dada por (2.1) se calcula el número de
iteraciones n necesarias.
4. Se calcula Gn (x0 ) ' c.
22CAPÍTULO 2. RESOLUCIÓN DE ECUACIONES EN UNA VARIABLE
2.3. CÁLCULO DE LAS RAÍCES 23

Ejemplo 5. Dos partı́culas α1 y α2 se mueven recorriendo las trayectorias


respectivas

y1 (x) = x2 − 1, x > 0,
y2 (x) = sen (x) , x > 0.

1. Encontrar un intervalo de longitud 1 que contenga al punto c en el que


ambas partı́culas se cortan.

2. Encontrar una función que permita determinar c por el método iterativo


del punto fijo.

3. Determinar una cota del error cometido al tomar como valor de c el


número obtenido en la cuarta iteración del apartado anterior.1

La ecuación que hemos de resolver es y1 (x) = y2 (x), esto es:

x2 − 1 = sen (x) ,

con lo que el punto c será solución de la ecuación:

0 = F (x) = x2 − 1 − sen (x) . (2.3)

Como estamos suponiendo x > 0, dicha solución debe ser positiva. Busque-
mos pues, un intervalo que satisfaga el Teorema de Bolzano2 y que tenga
longitud 1. Ası́ probando:

F (0) = −1 < 0,
F (1) = −sen (1) ' −0.84 < 0,
F (2) = 3 − sen (2) ' 2.09 > 0,

consecuentemente se obtiene que [1, 2] es un candidato al intervalo buscado.


Falta ver que la raiz en él es única. Como:

F 0 (x) = 2x − cos (x) > 0 ∀x ∈ [1, 2],

entonces y = F (x) es una función monótona (creciente) en [1, 2], y, por lo


tanto, la raiz será única.
1
Este problema se ha sacado del libro “ Cálculo I. Teorı́a y problemas de
Análisis Matemático en una variable”, de G. Rodrı́guez et al., 2a ed., Ed. CLAGSA.
2
Obsérvese que y = F (x) es una función continua al ser suma de funciones continuas
24CAPÍTULO 2. RESOLUCIÓN DE ECUACIONES EN UNA VARIABLE

Hemos de encontrar una función y = G (x) satisfaciendo las condiciones


del Teorema del punto fijo de Banach, esto es, continua, contractiva, verifi-
cando G ([1, 2]) ⊆ [1, 2], y tal que F (x) = 0 ⇔ G (x) = x. De la expresión
(2.3) se obtienen tres posibles candidatas:

1 + sen (x) p ¡ ¢
G1 (x) = , G2 (x) = 1 + sen (x), G3 (x) = arcsen x2 − 1 .
x

Es fácil ver que tanto y = G1 (x) como y = G3 (x) no


p son contractivas, luego
no nos sirven. Veamos qué pasa con y = G2 (x) = 1 + sen (x),
p
1. • G2 (x) = 1 + sen (x) es continua en [1, 2] por ser composición
de aplicaciones continuas.
• G2 (x) es contractiva con k = 1/2 ya que:
¯ ¯
¯ cos (x) ¯ 1 1
0 ¯ ¯
|G2 (x)| = ¯ p ¯≤ p ≤ < 1.
¯ 2 1 + sen (x) ¯ 2 1 + sen (x) 2

• Finalmente hemos de ver que G2 ([1, 2]) ⊂ [1, 2]. Demostrar ésto
es fácil a partir de los siguiente hechos:

G2 (x) es creciente en [1, π/2] y decreciente en [π/2, 2],


G2 (1) > 1, G2 (2) > 1,
x = π/2 es un máximo de y = G2 (x) tal que G2 (π/2) ∈ [1, 2].

p
Pues bien, una vez que hemos comprobado que y = G (x) = 1 + sen (x)
verifica las condiciones del Teorema de Banach, podemos aplicar el
método del punto fijo con cuatro iteraciones como pide el enunciado.
2.3. CÁLCULO DE LAS RAÍCES 25

A modo de ejemplo partiremos de dos semillas x0 diferentes:


x0 = 1 x0 = π/2 √
x1 = G (x0 ) = 1.3570081 x1 = G (x0 ) = 2
x2 = G (x1 ) = 1.4061416 x2 = G (x1 ) = 1.40988
x3 = G (x2 ) = 1.4094235 x3 = G (x2 ) = 1.40964
x4 = G (x3 ) = 1.4096126 x4 = G (x3 ) = 1.40962

Si usamos la primera semilla, x0 = 1, la cota del error cometido al suponer


x4 = 1.4096126 como solución aproximada de la ecuación es:

(0.5)4
²≤ · 0.3570081 ' 4.4626 · 10−2 .
0.5
Si por el contrario usamos como semilla x0 = π/2, la cota del error cometido
al suponer x4 = 1.4094235 como solución aproximada de la ecuación es:

(0.5)4 ¯¯ π ¯¯
²≤ · ¯1 − ¯ ' 7.135 · 10−2 .
0.5 2
En la siguiente figura se observa la gráfica de la función y = x2 −1−sen (x)
junto con la raiz de la misma:

Ejemplo 6. Calcular las raı́ces de la ecuación e−x − x = 0 con un error


inferior a 10−3 , usando para ello el método del punto fijo.
En primer lugar hemos de aislar las raı́ces de 0 = F (x) = e−x −x. Veamos
cuántos extremos tiene; ası́:

0 = F 0 (x) = −e−x − 1 ⇔ x = − log (−1) ,

lo cual es imposible, luego la función no posee extremos y, consecuentemente


tendrá una raiz como mucho. Además, dado que F 0 (x) < 0, la función
y = F (x) es decreciente.
26CAPÍTULO 2. RESOLUCIÓN DE ECUACIONES EN UNA VARIABLE

Intentaremos buscar un intervalo en el que se satisfaga el Teorema de


Bolzano probando con diversos valores (obsérvese que claramente la función
y = F (x) es continua):

F (−1) = e + 1 > 0,
F (0) = 1 > 0,
1
F (1) = − 1 < 0.
e
Como se puede apreciar el intervalo [0, 1] satisface las condiciones del Teore-
ma de Bolzano y, consecuentemente, en él se encontrará la única raiz de la
ecuación.
En segundo lugar hemos de buscar una función y = G (x) que verifique
las condiciones del método del punto fijo. Podemos considerar:

y = G (x) = e−x .

Veamos que satisface las condiciones requeridas:

1. y = G (x) = e−x es continua en todo R y, consecuentemente, en el


intervalo [0, 1].

2. Como
¯ ¯ 1
|G0 (x)| = ¯−e−x ¯ = x ≤ 1, ∀x ∈ [0, 1],
e
entonces la función no es contractiva en este intervalo, pues k = 1 y no
se puede encontrar una cota más pequeña. Consecuentemente, hemos
de buscar otro intervalo, ası́ probando:

F (0) = 1 > 0,
F (0.5) = e−0.5 − 0.5 ' 0.10653 > 0,
F (1) = e−1 − 1 < 0,

luego el subintervalo [0.5, 1] verifica el Teorema de Bolzano y, además:

1 1
|G0 (x)| = < √ < 1,
ex e

ya que y = G0 (x) es
√ decreciente y positiva en [0.5, 1]. Luego es con-
tractiva con k = 1/ e.
2.3. CÁLCULO DE LAS RAÍCES 27

3. Veamos, por último, que G ([0.5, 1]) ⊂ [0.5, 1]. Como G0 (x) = −e−x <
0, entonces y = G (x) es decreciente. Además, dado que G (x) > 0, es
obvio que G (1) ≤ G (x) ≤ G (0.5), es decir:
1 1
≤ G (x) ≤ √ ,
e e
con lo que
· ¸
1 1
G ([0.5, 1]) = , √ = [0.3679, 0.6065] Ã [0.5, 1].
e e
Consecuentemente el intervalo que tenemos, [0.5, 1], no nos sirve pues
no se verifica esta última condición. Busquemos pues, otro. Como
µ ¶
1 1 1
F = e− 3 − ' 0.3832 > 0,
3 3
−1
F (1) = e − 1 < 0,
entonces en [ 13 , 1] se verifica el Teorema de Bolzano. Es fácil también
demostrar que la función es contractiva en él con k = e−1/3 , y además,
utilizando un argumento similar al anterior caso se tiene:
µ· ¸¶ · ¸ · ¸
1 1 1 1
G ,1 = , 1/3 ⊂ , 1 .
3 e e 3
£ ¤
Por lo tanto G (x) = e−x en 13 ,£1 verifica
¤ las condiciones del Teorema de
1
Banach, luego escogiendo un x0 ∈ 3 , 1 , se tendrá que Gn (x0 ) es la solución
aproximada requerida.
Ası́ pues tomando x0 = 1/3, es fácil ver que el número de iteraciones a
realizar para obtener la precisión dada en el enunciado es n ≥ 22, con lo que
un sencillo cálculo muestra que:
x22 = 0.567142.

Ejercicios Propuestos

Ejercicio 1. Dar un esquema del algoritmo del método del punto fijo suponien-
do que se usa la cota del error dada por la ecuación (2.2).
Ejercicio 2. Calcular la raiz negativa de F (x) = x4 − x − 10 = 0 con una
precisión de dos cifras decimales exactas.

Ejercicio 3. Calcular 7 con dos cifras decimales exactas usando el método
del punto fijo.
28CAPÍTULO 2. RESOLUCIÓN DE ECUACIONES EN UNA VARIABLE

2.3.3 Método de Newton-Raphson


El método de Newton-Raphson es el más eficaz de los presentados hasta el
momento para el cálculo aproximado de raı́ces debido al hecho de que, por
regla general, el número de iteraciones necesarias para obtener la raiz con la
precisión requerida es muy inferior a las necesitadas con los otros métodos.
En contrapartida, las condiciones que debe satisfacer la función son mucho
más fuertes.
Como en los casos anteriores, supondremos que y = F (x) es una función
que posee una única raiz en el inervalo [a, b]. Entonces:

Teorema. Sea y = F (x) una función tal que F ∈ C 2 ([a, b]), y además:

1. sign (F (a)) 6= sign (F (b)) .

2. sign (F 00 (x)) es constante para todo x ∈ [a, b].

Entonces, si x0 ∈ [a, b] es un punto cualquiera en el que se verifica que


F (x0 ) · F 00 (x0 ) > 0, luego la sucesión definida por:
½ ¾
F (xn−1 )
xn = xn−1 − 0 , (2.4)
F (xn−1 ) n∈N

converge a un punto c ∈ [a, b] tal que F (c) = 0. Además, en estas condi-


ciones, existen dos constantes m y M tales que ∀x ∈ [a, b],

m ≤ |F 0 (x)| , (2.5)
M ≥ |F 00 (x)| , (2.6)

de tal forma que sendas cotas del error cometido al considerar a xn como
solución de la ecuación F (x) = 0 son, respectivamente:

|F (xn )|
ε ≤ , (2.7)
m
M
² ≤ (xn − xn−1 )2 . (2.8)
2m
Consecuentemente el algoritmo definido por el método de Newton-Raphson
para calcular la solución de y = F (x) en el intervalo [a, b] consiste en lo sigu-
iente:

1. Se demuestra que el signo de F 00 (x) es constante en [a, b].

2. Se busca un x0 ∈ [a, b] tal que F (x0 ) · F 00 (x0 ) > 0.


2.3. CÁLCULO DE LAS RAÍCES 29

3. Se calcula la constante m tal que m ≤ |F 0 (x)| para todo x ∈ [a, b].

4. Se van calculando los términos xn dados por (2.4) mientras que no se


satisfaga la cota del error definida en (2.7).

Ejemplo 7. Calcula la raiz real de x5 + 5x + 8 = 0 aplicando el método de


Newton-Raphson con un error inferior a 10−3 .
La función y = F (x) = x5 + 5x + 8 es continua en todo R por ser un
polinomio. Veamos que efectivamente sólo posee una raiz real. Para ello
calcularemos los extremos de la misma:

0 = F 0 (x) = 5x4 + 5 ⇔ 0 = x4 + 1,

que no tiene solución en R, luego a lo sumo existe una única raiz real de
0 = F (x). Busquemos un intervalo en el que se verifique el Teorema de
Bolzano. Como

F (−2) = −34 < 0, F (−1) = 2 > 0,

entonces en [−2, −1] se encontrará la raiz buscada.


Si usamos el método de Newton para calcularla, hemos de comprobar que
00
F (x) posee signo constante en el intervalo considerado. Ası́:

F (x) = x5 + 5x + 8,
F 0 (x) = 5x4 + 5,
F 00 (x) = 20x3 < 0 ∀x ∈ [−2, −1].

Ahora hemos de buscar un punto x0 ∈ [−2, −1] tal que F (x0 )·F 00 (x0 ) > 0.
Para ello basta con tomar x0 = −2.
30CAPÍTULO 2. RESOLUCIÓN DE ECUACIONES EN UNA VARIABLE

Por último hemos de encontrar una constante m que nos proporcione la


cota del error. Sabemos que m ≤ |F 0 (x)| para todo x ∈ [−2, −1], entonces
como F 0 (x) = 5x4 + 5 es positiva y decreciente en [−2, −1] (ya que F 00 (x) =
20x3 < 0 en [−2, −1]) se tiene que m = |F 0 (−1)| = 10. Por lo tanto, una
cota del error debe ser:
|F (xn )|
²≤ ≤ 10−3 ⇔ |F (xn )| ≤ 10−2 .
10
Ası́ pues aplicando reiteradamente el algoritmo del método de Newton-Raphson,
encontramos:

x0 = −2 ⇒ |F (−2)| = 34 ≮ 10−2 ,
F (x0 )
x1 = x0 − = −1.6 ⇒ |F (−1.6)| ' 10.48 ≮ 10−2 ,
F 0 (x0 )
F (x1 )
x2 = x1 − 0 = −1.3224 ⇒ |F (−1.3224)| ' 2.65 ≮ 10−2 ,
F (x1 )
F (x2 )
x3 = x2 − 0 = −1.1915 ⇒ |F (−1.1915)| ' 0.36 ≮ 10−2 ,
F (x2 )
F (x3 )
x4 = x3 − 0 = −1.1677 ⇒ |F (−1.1677)| ' 0.9 · 10−3 < 10−2 .
F (x3 )

Obsérvese que si hubiéramos aplicado el método de la Bisección el número


mı́nimo de iteraciones necesarias para alcanzar la precisión deseada serı́a:

−1 − (−2) −3 1
≤ 10 ⇔ ≤ 10−3 ⇔ 103 ≤ 2n ⇔ n ≥ 10.
2n 2n

Ejemplo 8. Calcula 1 + 3 con un error inferior a 10−4 usando el método
de Newton-Raphson.
2.3. CÁLCULO DE LAS RAÍCES 31
√ √
Para calcular 1 + 3 serı́a suficiente con que calculáramos 3 pues bas-
tarı́a con sumarle un 1 al resultado aproximado
√ obtenido para conseguir el
objetivo deseado. Ası́ pues, es obvio que 3 es la raiz positiva de la ecuación

0 = F (x) = x2 − 3.

Sabemos que 3 ∈ [1.5, 2] y que este intervalo satisface el Teorema de
Bolzano. Además:

F 00 (x) = 2 > 0 ∀x ∈ [1.5, 2],

luego F 00 (x) posee signo constante.


Como “semilla” del método de Newton podemos tomar a x0 = 2 ya que

F (2) · F 00 (2) = 1 · 2 = 2 > 0.

Por otra parte, la constate m que nos da una cota del error es m = F 0 (1.5) =
3 ya que F 0 (x) = 2x es positiva y creciente en [1.5, 2]. Ası́ pues:

|F (xn )|
²≤ ≤ 10−4 ⇔ |F (xn )| ≤ 3 · 10−4 .
3
Consecuentemente:
x0 = 2 ⇒ |F (2)| = 1 ≮ 3 · 10−4 ,
F (x0 )
x1 = x0 − = 1.75 ⇒ |F (1.75)| ' 6.25 · 10−2 ≮ 3 · 10−4 ,
F 0 (x0 )
F (x1 )
x2 = x1 − 0 = 1.73214 ⇒ |F (1.73214)| ' 3.19 · 10−4 ≮ 3 · 10−4 ,
F (x1 )
F (x2 )
x3 = x2 − 0 = 1.73205 ⇒ |F (1.73205)| ' 2.79 · 10−6 < 3 · 10−4 .
F (x2 )
32CAPÍTULO 2. RESOLUCIÓN DE ECUACIONES EN UNA VARIABLE

Obsérvese que si hubiéramos aplicado el método de la Bisección, el número


de iteraciones necesarias hubiera sido:
2 − 1.5 −4 1
≤ 10 ⇔ ≤ 10−4 ⇔ 104 ≤ 2n+1 ⇔ n ≥ 13.
2n 2n+1

Ejemplo 9. Demostrar que la ecuación ex log (x) + x3 − 2 = 0 tiene una


única raiz positiva. Determinar dicha raiz con un error inferior a 10−4 .
Consideremos la función y = F (x) = ex log (x) +x3 −2. Es inmediato ver
que se trata de una función continua en (0, ∞) pues es suma y producto de
tales funciones en dicho intervalo. Para conocer el número de posibles raı́ces
reales de F (x) = 0 podemos estudiar el número de extremos de la función
y = F (x); ası́:
µ ¶
0 x 1
0 = F (x) = e log (x) + + 3x2 ,
x

y como se puede apreciar, resolver esta ecuación es igual de dificil que la


ecuación del enunciado, luego por este camino no llegaremos a ninguna parte.
Intentemos otra vı́a: demostraremos que existe un intervalo en el que se ver-
ifica el Teorema de Bolzano y, además, veremos que la función es monótona;
con ello quedará demostrado que la raiz es única. Ası́, es inmediato ver que
en [1, 2] se satisface el Teorema de Bolzano pues:

F (1) = −1 < 0, F (2) ' 11.12 > 0.

Por otra parte, demostraremos que y = F (x) = ex log (x)+x3 −2 es creciente


en (0, ∞), o lo que es lo mismo, que
µ ¶
0 x 1
F (x) = e log (x) + + 3x2 > 0, ∀x ∈ (0, ∞) .
x

Como:

ex > 0, ∀x ∈ (0, ∞) ,
log (x) < 0, ∀x ∈ (0, 1) , log (x) ≥ 0, ∀x ∈ [1, ∞),
1
> 0, ∀x ∈ (0, ∞) ,
x
3x2 > 0, ∀x ∈ (0, ∞) ,

entonces es obvio que F 0 (x) > 0, ∀x ∈ [1, ∞). El problema aparece en


el intervalo (0, 1) en el que no todos los sumandos son positivos sino que
2.3. CÁLCULO DE LAS RAÍCES 33

existe uno, log (x), que toma valores negativos. Si demostramos que h (x) =
log (x) + x1 es positivo en (0, 1), habremos acabado. Ası́ dado que

1 1 x−1
h0 (x) = − 2 = < 0, ∀x ∈ (0, 1) ,
x x x2
entonces h (x) es decreciente en (0, 1), y como h (1) = 1 > 0, se tendrá que
h (x) > 0, ∀x ∈ (0, 1), con lo que se concluye. Luego consecuentemente, la
ecuación 0 = F (x) = ex log (x) + x3 − 2 posee una única raiz positiva que,
además, se encontrará en el intervalo [1, 2].
Ahora calcularemos dicha raiz usando el Método de Newton. Ası́ y en
primer lugar se tiene que para todo punto x ∈ [1, 2], se verifica:
µ ¶
00 x 2 1 2 1 2x − 1 2x − 1 1
F (x) = e log (x) + − 2 + 6x ≥ − 2 = 2
> ≥ > 0.
x x x x x 4 4

Ejercicios Propuestos

Ejercicio 1. Calcular las raı́ces de la ecuación e−x − x = 0 con un error


inferior a 10−3 , usando para ello el método de Newton-Raphson.

Ejercicio 2. Calcular la raiz negativa de F (x) = x4 − x − 10 = 0 con una


precisión de dos cifras decimales exactas.

Ejercicio 3. Calcular 7 con dos cifras decimales exactas usando el método
de Newton-Raphson.
34CAPÍTULO 2. RESOLUCIÓN DE ECUACIONES EN UNA VARIABLE
Capı́tulo 3
Interpolación Polinomial

3.1 Introducción
En múltiples ocasiones nos encontraremos ante series finitas de datos, fruto
unas veces de mediciones experimentales y otras de valores tomados por
cierta función y = f (x), de la forma:
{(x0 , y0 ) , (x1 , y1 ) , . . . , (xn , yn )} ,
de tal manera que se necesite encontrar una “ley general” que sirva para
su tratamiento de manera sencilla. Dicha “ley general” a la que se adap-
tan los datos no es otra cosa que una cierta función que toma los valores
predeterminados.
Este es precisamente el objetivo de la interpolación: dada una tabla de
datos, se ha de encontrar una función que tome los valores requeridos en los
puntos dados; en el caso que nos ocupa, la función buscada será de carácter
polinómico. La tabla de datos puede proceder o bien de mediciones realizadas
experimentalmente, o bien de una función cuyos valores sólo se conocen en
ciertos puntos.

La función interpoladora servirá para sustituir a la función desconocida,


tanto para evaluarla en puntos en los que se desconoce su valor (interpolación

35
36 CAPÍTULO 3. INTERPOLACIÓN POLINOMIAL

en el sentido estricto), como para conocer su tasa de variación (diferenciación


numérica), o su distribución acumulativa (integración numérica).
Consecuentemente, en este curso el problema de la interpolación se puede
plantear en los siguientes términos: dada una función f : [a, b] → R, cuyo
valor se conoce en n + 1 puntos: x0 , x1 , . . . , xn del intervalo [a, b],

y0 = f (x0 ) , y1 = f (x1 ) , . . . , yn = f (xn ) ,

se debe construir una función polinómica, y = P (x), tal que:

P (x0 ) = y0 , P (x1 ) = y1 , . . . , P (xn ) = yn .

Concretamente, y = P (x) será un polinomio de grado menor o igual que n


y veremos varios métodos para su construcción, entre otros: la fórmula de
Lagrange, el método de Newton y el método de los splines cúbicos.

3.2 Polinomio interpolador de Lagrange


Consideremos una tabla de n + 1 puntos:

x x0 x1 ... xn
y y0 y1 ... yn

de tal forma que xi 6= xj si i 6= j. Entonces existe un único polinomio de


grado n, denominado polinomio de Lagrange, y = Pn (x), tal que Pn (xi ) = yi
para todo i = 0, 1, . . . , n. La expresión explı́cita de dicho polinomio es la
siguiente:
X
n
Pn (x) = Li (x) yi ,
i=0

donde para todo i:

(x − x0 ) · (x − x1 ) · . . . · (x − xi−1 ) · (x − xi+1 ) · . . . · (x − xn )
Li (x) = .
(xi − x0 ) · (xi − x1 ) · . . . · (xi − xi−1 ) · (xi − xi+1 ) · . . . · (xi − xn )

Este método para el cálculo del polinomio interpolador tiene dos incon-
venientes: las operaciones que hay que realizar para calcularlo son muchas
y no se pueden aprovechar dichas cuentas si introducimos un nuevo punto
(xn+1 , yn+1 ) en la tabla de datos, debiéndose calcular desde el principio todos
los coeficientes Li (x).
3.2. POLINOMIO INTERPOLADOR DE LAGRANGE 37

Ejemplo 10. Calcular el polinomio de interpolación de Lagrange que pasa


por los siguientes puntos:1

x −1 0 1 2
y −2 −2 0 4

El polinomio buscado será de la forma:

P3 (x) = L0 (x) y0 + L1 (x) y1 + L2 (x) y2 + L3 (x) y3 ,

donde:
(x − x1 ) · (x − x2 ) · (x − x3 )
L0 (x) =
(x0 − x1 ) · (x0 − x2 ) · (x0 − x3 )
(x) · (x − 1) · (x − 2) x3 − 3x2 + 2x
= =− ,
(−1 − 0) · (−1 − 1) · (−1 − 2) 6
(x − x0 ) · (x − x2 ) · (x − x3 )
L1 (x) =
(x1 − x0 ) · (x1 − x2 ) · (x1 − x3 )
(x + 1) · (x − 1) · (x − 2) x3 − 2x2 − x + 2
= = ,
(0 + 1) · (0 − 1) · (0 − 2) 2
(x − x0 ) · (x − x1 ) · (x − x3 )
L2 (x) =
(x2 − x0 ) · (x2 − x1 ) · (x2 − x3 )
(x + 1) · (x) · (x − 2) x3 − x2 − 2x
= =− ,
(1 + 1) · (1 − 0) · (1 − 2) 2
(x − x0 ) · (x − x1 ) · (x − x2 )
L3 (x) =
(x3 − x0 ) · (x3 − x1 ) · (x3 − x2 )
(x + 1) · (x) · (x − 1) x3 − x
= = .
(2 + 1) · (2 − 0) · (2 − 1) 6
Consecuentemente:
x3 − 3x2 + 2x ¡ 3 ¢ 2¡ 3 ¢
P3 (x) = − x − 2x2 − x + 2 + x −x
3 3

= x2 + x − 2.

En la siguiente figura se pueden observar los puntos de interpolación, ası́


como el polinomio y = P3 (x) cuya gráfica pasa por todos ellos:
1
Este problema se ha sacado del libro “ Cálculo I. Teorı́a y problemas de
Análisis Matemático en una variable”, de G. Rodrı́guez et al., 2a ed., Ed. CLAGSA.
38 CAPÍTULO 3. INTERPOLACIÓN POLINOMIAL

Ejemplo 11. Calcular el polinomio de interpolación de Lagrange que pasa


por los siguientes puntos:
x −1 2 3 4
y 3 1 2 4
y estimar el valor de y correpondiente a x = 1.
El polinomio de interpolación de Lagrange será
P3 (x) = L0 (x) y0 + L1 (x) y1 + L2 (x) y2 + L3 (x) y3 ,
donde
(x − 2) · (x − 3) · (x − 4) x3 − 9x2 + 26x − 24
L0 (x) = =− ,
(−3) · (−4) · (−5) 60
(x − 3) · (x + 1) · (x − 4) x3 − 6x2 + 5x + 12
L1 (x) = = ,
(−1) · 3 · (−2) 6
(x − 2) · (x + 1) · (x − 4) x3 − 5x2 + 2x + 8
L2 (x) = =− ,
1 · 4 · (−1) 4
(x − 2) · (x − 3) · (x + 1) x3 − 4x2 + x + 6
L3 (x) = = .
2·1·5 10
Consecuentemente
1 ¡ 3 ¢
P3 (x) = x + 21x2 − 64x + 96 .
60
Por otra parte, para x = 1 se tendrá:
1 + 21 − 64 + 96 9
P3 (1) = = = 0.9.
60 10
En la siguiente figura se pueden observar los puntos de interpolación, ası́
como el polinomio y = P3 (x) cuya gráfica pasa por todos ellos:
3.2. POLINOMIO INTERPOLADOR DE LAGRANGE 39

Ejemplo 12. Dada la función f (x) = cos (πx), hallar el polinomio que
interpola a f en los puntos {0, 0.5, 1, 1.5}.
La tabla de datos que se tendrá en este caso es la siguiente:

x 0 0.5 1 1.5
y 1 0 −1 0

con lo que el polinomio de interpolación será de la forma:

X
3
P3 (x) = Li (x) yi ,
i=0

donde:

L0 (x) = −1.3333x3 + 4x2 − 3.6667x + 1,


L1 (x) = 4x3 − 10x2 + 6x,
L2 (x) = −4x3 + 8x2 − 3x,
L3 (x) = 1.3333x3 − 2x2 + 0.66667x,

de manera que:

P3 (x) = 2.6667x3 − 4x2 − 0.6667x + 1.

En la siguiente figura se observan los puntos dados en la anterior tabla, la


función y = cos (πx) trazada con lı́nea discontinua y gruesa, y el polinomio
de interpolación dibujado con lı́nea fina y continua:
40 CAPÍTULO 3. INTERPOLACIÓN POLINOMIAL

Ejercicios Propuestos

Ejercicio 1. Calcular el polinomio de interpolación de Lagrange para la


siguiente tabla de puntos:

x −1 1 2
y 2 1 2

y estimar el valor de y para x = 0.

2
Ejercicio 2. Aproximar la función y = ex en el intervalo [0, 2] mediante
un polinomio de grado 2 sabiendo que toma los siguientes valores:

x 0 1 2
y 1 2.718 54.598

Estimar, usando dicho polinomio, el valor de 4 e y compararlo con el valor
obtenido por medio de la calculadora o el ordenador.

Ejercicio 3. Obtener un polinomio de grado 2 que interpola la función


f (x) = 1/x en los puntos x0 = 2, x1 = 2.5 y x2 = 4.
3.3. POLINOMIO INTERPOLADOR DE NEWTON 41

3.3 Polinomio interpolador de Newton


Antes de entrar en la construcción del polinomio interpolador de Newton
veremos algunas definiciones que nos serán de utilidad. Ası́, consideremos de
nuevo una tabla de n + 1 puntos:
x x0 x1 ... xn
y y0 y1 ... yn
Se denominan diferencias divididas de primer orden a los cocientes:
yi+1 − yi
yi,i+1 = [xi , xi+1 ] = , 0 ≤ i ≤ n − 1.
xi+1 − xi
Por otra parte, se llaman diferencias divididas de segundo orden a:
yi+1,i+2 − yi,i+1
yi,i+1,i+2 = [xi , xi+1 , xi+2 ] = , 0 ≤ i ≤ n − 2.
xi+2 − xi
En general, se denominan diferencias divididas de orden k a los siguientes
cocientes:
yi+1,... ,i+k − yi,... ,i+k−1
yi,i+1,... ,i+k = [xi , xi+1 , . . . , xi+k ] = ,
xi+k − xi
donde 0 ≤ i ≤ n − k.
Consecuentemente, a partir de n + 1 puntos se puede construir las difer-
encias divididas hasta el orden n, obteniéndose ası́ la siguiente tabla:
y01
y012
y12 y0123
y123
y23
y01...n−1
.. .. ..
. . . ··· y012...n
y12...n
yn−3,n−2
yn−3,n−2,n−1
yn−2,n−1 yn−3,n−2,n−1,n
yn−2,n−1,n
yn−1,n
42 CAPÍTULO 3. INTERPOLACIÓN POLINOMIAL

Una vez introducidos estos conceptos, el polinomio de Newton se define


de manera explı́cita como sigue:

Pn (x) = y0 + y01 (x − x0 ) + y012 (x − x0 ) (x − x1 ) + . . .


+y01...n (x − x0 ) (x − x1 ) . . . (x − xn−1 )

Este polinomio presenta una serie de ventajas con respecto al polinomio


de Lagrange consistentes en que el número de operaciones a realizar es mu-
cho menor y además si se dispone de un dato adicional (xn+1 , yn+1 ) y se
quiere construir un nuevo polinomio a partir de los n + 2 datos nuevos, las
operaciones realizadas con anterioridad son aprovechables pues bastarı́a con
calcular las siguientes diferencias divididas adicionales:

yn,n+1 , yn−1,n,n+1 , ... , y23...n+1 , y12...n+1 , y01...n+1 .

Consecuentemente, si y = Pn (x) es el polinomio interpolador de Newton


en los puntos x0 , x1 , . . . , xn e y = Pn+1 (x) es el polinomio interpolador de
Newton en los puntos x0 , x1 , . . . , xn , xn+1 , se verificará que:

Pn+1 (x) = Pn (x) + y012...n+1 (x − x0 ) · . . . · (x − xn ) .

Ejemplo 13. Obtener el polinomio de interpolación de Newton correspondi-


ente a la siguiente tabla de datos2 :

x −2 −1 0 1 2
y 2 −2 −2 0 4

Sabemos que dicho polinomio es de la forma:

P4 (x) = y0 + y01 (x − x0 ) + y012 (x − x0 ) (x − x1 )


+y0123 (x − x0 ) (x − x1 ) (x − x2 )
+y01234 (x − x0 ) (x − x1 ) (x − x2 ) (x − x3 ) ,

2
Este problema se ha sacado del libro “ Cálculo I. Teorı́a y problemas de
Análisis Matemático en una variable”, de G. Rodrı́guez et al., 2a ed., Ed. CLAGSA.
3.3. POLINOMIO INTERPOLADOR DE NEWTON 43

donde la tabla de las diferencias divididas que utilizaremos es la siguiente:

y1 − y0
y01 =
x1 − x0
y12 − y01
y012 =
x2 − x0
y2 − y1 y123 − y012
y12 = y0123 =
x2 − x1 x3 − x0
y23 − y12 y1234 − y0123
y123 = y01234 =
x3 − x1 x4 − x0
y3 − y2 y234 − y123
y23 = y1234 =
x3 − x2 x4 − x1
y34 − y23
y234 =
x4 − x2
y4 − y3
y34 =
x4 − x3

Un sencillo cálculo nos muestra que:

y01 = −4 y012 = 2 y0123 = −1/3 y01234 = 1/12


y12 =0 y123 = 1 y1234 = 0
y23 =2 y234 = 1
y34 =4

Por lo tanto el polinomio interpolador de Newton es:

P4 (x) = 2 − 4 (x + 2) + 2 (x + 2) (x + 1)
1 1
− (x + 2) (x + 1) x + (x + 2) (x + 1) x (x − 1)
3 12
7 11 1 1
= −2 + x + x2 − x3 + x4 .
6 12 6 12

En la siguiente figura se pueden observar los puntos de interpolación, ası́


como el polinomio y = P4 (x) cuya gráfica pasa por todos ellos:
44 CAPÍTULO 3. INTERPOLACIÓN POLINOMIAL

Ejemplo 14. Dada la función f (x) = cos (πx), hallar el polinomio de


Newton que interpola a f en los puntos {0, 0.5, 1, 1.5}.
Como vimos en el Ejemplo 12, la tabla de datos es la siguiente:

x 0 0.5 1 1.5
y 1 0 −1 0

Por otra parte, la tabla de las diferencias divididas es:


0−1
y01 = = −2
0.5 − 0
−2 + 2
y012 = =0
1
−1 − 0 4−0 8
y12 = = −2 y0123 = =
1 − 0.5 1.5 − 0 3
2+2
y123 = =4
1
0+1
y23 = =2
1.5 − 1
con lo que el polinomio interpolador de Newton es:
8
P3 (x) = 1 − 2x + 0 · x (x − 0.5) + x (x − 0.5) (x − 1)
3
8 3 2 2
= x − 4x − x + 1.
3 3
En la siguiente figura se pueden observar los puntos de interpolación, ası́
como el polinomio y = P3 (x) cuya gráfica –en trazo continuo– pasa por
todos ellos y la gráfica de la función y = cos (πx) en trazo más grueso y
discontinuo:
3.4. ERROR EN EL POLINOMIO DE INTERPOLACIÓN 45

Ejercicios Propuestos

Ejercicio 1. Calcular el polinomio de interpolación de Newton para la sigu-


iente tabla de puntos:

x −1 1 2
y 2 1 2

y estimar el valor de y para x = 0.


2
Ejercicio 2. Aproximar la función y = ex en el intervalo [0, 2] mediante
un polinomio de grado 2 sabiendo que toma los siguientes valores:

x 0 1 2
y 1 2.718 54.598

Estimar, usando dicho polinomio, el valor de 4 e y compararlo con el valor
obtenido por medio de la interpolación de Lagrange.

Ejercicio 3. Obtener el polinomio de Newton de grado 2 que interpola la


función f (x) = 1/x en los puntos x0 = 2, x1 = 2.5 y x2 = 4.

3.4 Error en el polinomio de interpolación


Cuando se usa un polinomio de interpolación, y = P (x), para aproximar una
función y = f (x) en un cierto intervalo, es posible estimar el error cometido
46 CAPÍTULO 3. INTERPOLACIÓN POLINOMIAL

al usar dicho polinomio como aproximación de la función para todo punto


x ∈ [a, b], de tal forma que dicho error vendrı́a dado por
|f (x) − Pn (x)| .
En este sentido, se tiene el siguiente resultado:

Teorema. Sea f : [a, b] → R una función (n + 1) veces derivable en (a, b) y


sea y = Pn (x) el polinomio interpolador en los puntos:
x a = x0 x1 ... b = xn
y f (x0 ) f (x1 ) . . . f (xn )
Entonces para todo x ∈ [a, b], existe una constante δ x ∈ (a, b) tal que

f (n+1) (δ x ) Y
n
f (x) − Pn (x) = (x − xi ) .
(n + 1)! i=0
¯ ¯
Además, si ¯f (n+1) (x)¯ ≤ M para todo x ∈ (a, b), se tiene la siguiente cota
para el error:
¯ n ¯
M ¯¯Y ¯
¯
|f (x) − Pn (x)| = ¯ (x − xi )¯ .
(n + 1)! ¯ i=0
¯

En general no es cierto que al aumentar el número de puntos sobre los


que se construye el polinomio interpolador, n, el error disminuya. Existen
funciones para las cuales el error aumenta al aumentar n.

Ejemplo 15. Para funciones del tipo y = f (x) = sen (x) ó y = f (x) = ex ,
se verifica que al aumentar
¯ (n+1) el ¯número de puntos n, el error disminuye ya que
la cota superior de ¯f (x)¯ tiende hacia 0 cuando n tiende hacia infinito.
Veámoslo. Si tomamos por ejemplo f (x) = sen (x), se obtiene:
©¯ ¯ ª
max ¯f (n+1) (x)¯ : x ∈ [a, b]
lim = 0,
n→∞ (n + 1)!
ya que
1
lim = 0,
n→∞ (n + 1)!
¯ ¯
y ¯f (n+1) (x)¯ ≤ 1, puesto que
( n+1
(n+1) (−1) 2 sen (x) si n + 1 es par
f (x) = n−1
(−1) 2 cos (x) si n + 1 es impar
3.4. ERROR EN EL POLINOMIO DE INTERPOLACIÓN 47

Ejemplo 16. Calcular una cota del error que se comete al aproximar en el
intervalo [−1, 1] la función f (x) = ex por el polinomio interpolador en los
puntos −1, 0, 1.
El polinomio interpolador de Newton que pasa por estos tres puntos es
de grado 2, P2 (x), y una cota del error cometido es la siguiente:
M M ¯¯ 3 ¯
|f (x) − P2 (x)| ≤ |(x + 1) x (x − 1)| = x − x¯ ,
3! 6
donde |f 000 (x)| ≤ M para todo x ∈ (−1, 1). Ası́, dado que f 000 (x) = ex e
y = f 000 (x) es una función creciente en (−1, 1), entonces |f 000 (x)| ≤ f 000 (1) = e
para todo x ∈ (−1, 1). Consecuentemente se tendrá:
¯ ¯
e ¯¯ 3 ¯ ¯ e (x3 − x) ¯
¯ ¯ ¯.
|f (x) − P2 (x)| ≤ x − x = ¯ ¯
6 6
Por otra parte, como
e (x3 − x)
y = g (x) =
6
√ √
posee un máximo en el punto − 3/3, un mı́nimo en 3/3, y además
¯ Ã √ !¯ ¯ Ã √ !¯ √
¯ 3 ¯¯ ¯¯ 3 ¯¯ 3
¯
¯g − ¯ = ¯g ¯=e ,
¯ 3 ¯ ¯ 3 ¯ 27
entonces:
¯ ¯ √
¯ e (x3 − x) ¯ e 3
¯ ¯≤ ∀x ∈ (−1, 1) ,
¯ 6 ¯ 27
con lo que
|f (x) − P2 (x)| < 0.2.

Ejercicios Propuestos

Ejercicio 1. Calcular una cota del error que se comete al interpolar la


2
función y = ex en el intervalo [0, 2] mediante un polinomio de Newton de
grado 2 sabiendo que toma los siguientes valores:
x 0 1 2
y 1 2.718 54.598

Ejercicio 2. Calcular una cota del error que se comete al utilizar el poli-
nomio de Newton de grado 2 que interpola la función f (x) = 1/x en los
puntos x0 = 2, x1 = 2.5 y x2 = 4.
48 CAPÍTULO 3. INTERPOLACIÓN POLINOMIAL

3.5 Interpolación a trozos


En las dos secciones anteriores hemos introducido sendos métodos para aprox-
imar una función y = f (x) arbitraria o una tabla de puntos obtenidos ex-
perimentalmente, utilizando un polinomio en un intervalo cerrado [a, b]. No
obstante, la naturaleza oscilatoria de los polinomios de grado alto y su alta
sensibilidad a pequeñas modificaciones limita su utilización.
Un procedimiento alternativo consiste en dividir el intervalo [a, b] en una
serie de subintervalos:
[a, x1 ] , [x1 , x2 ] , . . . , [xi , xi+1 ] , . . . , [xn−1 , b] ,
con x0 = a < x1 < . . . < xn−1 < xn = b, y en cada uno de ellos construir un
polinomio (normalmente diferente) de interpolación: y = Pi (x) con 0 ≤ i ≤
n − 1. A ésta es a la que se le denomina interpolación a trozos.

3.5.1 Interpolación lineal a trozos


El método de interpolación a trozos más simple (y que, al mismo tiempo, da
buenos resultados) es el denominado método de interpolación lineal a trozos,
en el que los polinomios y = Pi (x) no son más que lı́neas rectas que unen
los puntos (xi , yi ) y (xi+1 , yi+1 ) para 0 ≤ i ≤ n − 1. De esta forma se obtiene
una lı́nea poligonal y = g (x) que obviamente no es derivable y que aproxima
la función y = f (x) con el siguiente error:
|f (x) − g (x)| ≤ A · B,
donde
|f 00 (x)|
A = max , B = max |xi+1 − xi |2 .
x∈[a,b] 8 0≤i≤n

Este error se puede hacer tan pequeño como se quiera sin más que elegir
los puntos lo suficientemente próximos entre sı́ y siempre que f 00 (x) esté
acotada en [a, b]. La desventaja de este método radica en el hecho de la
no diferenciabilidad en los extremos de los diferentes subintervalos ya que
a menudo las condiciones fı́sicas requieren de esa condición, esto es, que la
función que aproxima sea continuamente diferenciable.

Ejemplo 17. Obtener la función asociada a la interpolación lineal a trozos


en los puntos siguientes correspondientes a la función y = cos (x):
x −π −π/2 0 π/2 π
y −1 0 1 0 −1
3.5. INTERPOLACIÓN A TROZOS 49

El intervalo [−π, π] lo dividiremos en los subintervalos [−π, −π/2], [−π/2, 0],


[0, π/2] y [π/2, π], en cada uno de los cuales calcularemos el polinomio y =
Pi (x), 0 ≤ i ≤ 3, correspondiente a la recta que une los extremos. Ası́:

1. En [−π, −π/2] los extremos son (−π, −1) y (−π/2, 0), luego la recta
que los une es
x+π y+1
π = ,
−2 + π 0+1
con lo que el polinomio buscado es:
2
y = P0 (x) = x + 1.
π

2. En [−π/2, 0] los extremos son (−π/2, 0) y (0, 1), luego la recta que los
une es
x + π2 y−0
π = ,
0+ 2 1−0
con lo que el polinomio buscado es:
2
y = P1 (x) = x + 1.
π

3. En [0, π/2] los extremos son (0, 1) y (π/2, 0), luego la recta que los une
es
x−0 y−1
π = ,
2
−0 0−1
con lo que el polinomio buscado es:
2
y = P2 (x) = − x + 1.
π

4. Finalmente, en [π/2, π] los extremos son (π/2, 0) y (π, −1), luego la


recta que los une es
x − π2 y−0
π = ,
π− 2 −1 − 0
con lo que el polinomio buscado es:
2
y = P3 (x) = − x + 1.
π
50 CAPÍTULO 3. INTERPOLACIÓN POLINOMIAL

Consecuentemente, la función interpoladora buscada es y = g (x), donde:



 2

 πx + 1 si − π ≤ x ≤ 0
g (x) =


 − 2 x + 1 si 0 ≤ x ≤ π
π
En la siguiente figura se observan los puntos de interpolación, la función y =
g (x) en trazo continuo y la función y = cos (x) entrazo grueso y discontinuo:

3.5.2 Interpolación de Hermite


Un método que nos proporciona una función contı́nua y diferenciable, y =
P (x), como aproximación de una función dada, y = f (x), f ∈ C 1 ([a, b]), en
un intervalo [a, b] es el llamado método de interpolación de Hermite. Mediante
el mismo se construye el llamado polinomio de Hermite para la función y =
f (x) en los puntos x0 = a < x1 < . . . < xn−1 < xn = b, que es el único
polinomio de grado menor o igual que 2n + 1 tal que:

P (xi ) = f (xi ) , P 0 (xi ) = f 0 (xi ) , i = 0, 1, . . . , n.

Para obtener dicho polinomio basta con resolver el sistema de 2n + 2 ecua-


ciones lineales que se obtiene de imponer las condiciones que ha de cumplir:


 P (x0 ) = f (x0 )

 0

 P (x0 ) = f 0 (x0 )
..
 .

 P (xn ) = f (xn )


 P 0 (x ) = f 0 (x )
n n
3.5. INTERPOLACIÓN A TROZOS 51

Ejemplo 18. Obtener la función correspondiente a la interpolación de Her-


mite en los puntos siguientes correspondientes a la función y = cos (x) :
x −π −π/2 0 π/2 π
y −1 0 1 0 −1
El polinomio buscado, de grado 9, es de la siguiente forma:
P (x) = a0 + a1 x + a2 x2 + a3 x3 + . . . + a8 x8 + a9 x9 ,
y satisface el siguiente sistema de ecuaciones:
½
−1 = P (−π) 0 = P (−π/2) 1 = P (0) 0 = P (π/2) −1 = P (π)
0 = P 0 (−π) 1 = P 0 (−π/2) 0 = P 0 (0) −1 = P 0 (π/2) 0 = P 0 (π)

cuyas variables son los coeficientes del polinomio P (x), esto es ai con 0 ≤
i ≤ 9. La solución del mismo es:
a0 = 1, a1 = a3 = a5 = a7 = a9 = 0,

48π − 284 338 − 96π


a2 = 2
, a4 = ,
27π 9π 4
144π − 464 608 − 192π
a6 = 6
, a8 = ,
9π 27π 8
con lo que el polinomio de interpolación buscado será:
48π − 284 2 338 − 96π 4 144π − 464 6 608 − 192π 8
P (x) = 1 + x + x + x + x.
27π2 9π 4 9π6 27π 8

En la siguiente figura se observan los puntos de interpolación, la gráfica del


polinomio y = P (x) en trazo continuo y la función y = cos (x) en trazo
grueso y discontinuo:
52 CAPÍTULO 3. INTERPOLACIÓN POLINOMIAL

Ejercicios Propuestos

Ejercicio 1. Calcular el polinomio de interpolación lineal a trozos para la


siguiente tabla de puntos:
x −1 1 2
y 2 1 2
y estimar el valor de y para x = 0.
2
Ejercicio 2. Aproximar la función y = ex en el intervalo [0, 2] mediante el
polinomio de interpolación lineal a trozos y el polinomio de Hermite, sabiendo
que toma los siguientes valores:
x 0 1 2
y 1 2.718 54.598

Estimar, usando dicho polinomio, el valor de 4 e y compararlo con el valor
obtenido por medio de la calculadora o el ordenador.

3.5.3 Interpolación esplı́n cúbica


Podemos desarrollar un método de interpolación a trozos usando los poli-
nomios de Hermite. Ası́ tenemos la que se denomina como interpolación
cúbica de Hermite a trozos, según la cual dada una función derivable f : [a, b] →
R y n+1 puntos x0 = a < x1 < . . . < xn−1 < xn = b, existe una única función
derivable g : [a, b] → R, de modo que en cada intervalo [xi , xi+1 ], y = g (x)
está definida por un polinomio de tercer grado, y = Pi (x), tal que:
Pi (xi ) = f (xi ) , Pi0 (xi ) = f 0 (xi ) ,
Pi (xi+1 ) = f (xi+1 ) , Pi0 (xi+1 ) = f 0 (xi+1 ) ,
con 0 ≤ i ≤ n − 1. Consecuentemente:


 P0 (x) si x ∈ [x0 , x1 ]
y = g (x) = .
.. ..
 .
 P
n−1 (x) si x ∈ [xn−1 , xn ]

Ejemplo 19. Obtener la función correspondiente a la interpolación cúbica


de Hermite a trozos en los puntos siguientes correspondientes a la función
y = sen (x) :
x −π/2 0 π/2 π
y −1 0 1 0
3.5. INTERPOLACIÓN A TROZOS 53

Dividimos el intervalo [−π/2, π] en tres subintervalos: [−π/2, 0], [0, π/2]


y [π/2, π], de tal forma que en cada uno de ellos construimos un polinomio

y = Pi (x) = ai + bi x + ci x2 + di x3 ,

con 0 ≤ i ≤ 2, verificando las condiciones expuestas anteriormente. Ası́,


tenemos el siguiente sistema de ecuaciones:
h π i ½
−1 = P0 (−π/2) 0 = P00 (−π/2)
− ,0 !
2 0 = P0 (0) 1 = P00 (0)
h πi ½
0 = P1 (0) 1 = P10 (0)
0, !
2 1 = P1 (π/2) 0 = P10 (π/2)
hπ i ½
1 = P2 (π/2) 0 = P20 (π/2)
,π !
2 0 = P2 (π) −1 = P20 (π)
cuyas incógnitas son ai , bi , ci , di con 0 ≤ i ≤ 3. La solución del mismo es la
siguiente:
a1 = 0 a2 = 0 a3 = π − 4
24
b1 = 1 b2 = 1 b3 = −5
µ ¶ µ ¶ πµ ¶
1 3 3 1 2 9
c1 = 4 − c2 = 4 − c3 = 4 −
π π2 π2 π π π2
4 4 4 (4 − π)
d1 = 3 (π − 4) d2 = 3 (π − 4) d3 =
π π π3
Consecuentemente se tendrá que:
µ ¶
1 3 4
P0 (x) = x + 4 − 2 x2 + 3 (π − 4) x3 ,
π π π
µ ¶
3 1 4
P1 (x) = x + 4 2
− x2 + 3 (π − 4) x3 ,
π π π
µ ¶ µ ¶
24 2 9 4 (4 − π) 3
P2 (x) = π − 4 + −5 x+4 − 2 x2 + x,
π π π π3
con lo que la función de interpolación viene dada por la siguiente expresión:

 P0 (x) si − π/2 ≤ x ≤ 0
y = g (x) = P1 (x) si 0 < x < π/2

P2 (x) si π/2 ≤ x ≤ π

En la siguiente figura se puede observar la gráfica de y = g (x) en trazo


continuo y la de y = sen (x) en trazo grueso y discontinuo junto con los
puntos de interpolación:
54 CAPÍTULO 3. INTERPOLACIÓN POLINOMIAL

Como contrapartida, si queremos emplear la interpolación de Hermite a


trozos, necesitamos conocer la derivada de la función que a ser aproximada, lo
cual no es siempre posible. Es por ello por lo que este método no es útil cuan-
do se trata de aproximar una tabla de puntos y se desea obtener una función
diferenciable que pase por todos ellos. Ésto último se puede conseguir con la
llamada interpolación mediante trazadores cúbicos ó interpolación mediante
esplines cúbicos, que podrı́a considerarse como el método de interpolación a
trozos de uso más común.
Ası́, dada una tabla de puntos

x a = x0 x1 ... b = xn
y y0 y1 ... yn

se define un esplı́n cúbico para dicha tabla como una función S : [a, b] → R
con las siguientes condiciones:

(1) S es un polinomio de tercer grado en cada subintervalo [xi , xi+1 ] que


denotaremos por Si .

(2) Si (xi ) = yi , para todo i = 0, 1, . . . , n − 1.

(3) Si (xi+1 ) = Si+1 (xi+1 ), para todo i = 0, 1, . . . , n − 1.


0
(4) Si+1 (xi+1 ) = Si0 (xi+1 ), para todo i = 0, 1, . . . , n − 2.
00
(5) Si+1 (xi+1 ) = Si00 (xi+1 ), para todo i = 0, 1, . . . , n − 2.

(6) S 00 (x0 ) = S 00 (xn ) = 0 (condiciones sobre la frontera).


3.5. INTERPOLACIÓN A TROZOS 55

Consecuentemente: 

 S0 (x) si x ∈ [x0 , x1 ]
y = S (x) = .
.. ..
 .
 S
n−1 (x) si x ∈ [xn−1 , xn ]

Ejemplo 20. Determinar el esplı́n cúbico que interpola los valores siguientes:
x 0 1 2 3
y 1 0 0.5 1
y calcular S (0.5), S (1.5) y S 0 (3).3
Según (1), el esplı́n cúbico y = S (x) buscado debe ser de la forma:

 S0 (x) si x ∈ [0, 1]
S (x) = S1 (x) si x ∈ [1, 2]

S2 (x) si x ∈ [2, 3]
donde
Si (x) = ai x3 + bi x2 + ci x + di , 0 ≤ i ≤ 2.
Ahora, imponiendo las condiciones (2)-(6) se obtiene el siguiente sistema de
ecuaciones:


 1 = S0 (0) , 0 = S0 (1) , 0.5 = S1 (2) , 0.5 = S2 (2) , 1 = S2 (3)


S00 (1) = S10 (1) , S10 (2) = S20 (2)




0 = S000 (0) = S200 (3) , S000 (1) = S100 (1) , S100 (2) = S200 (2)
cuyas soluciones son las siguientes:
2 7
a1 = , b1 = 0, c1 = − , d1 = 1,
5 5
1 27 41 19
a2 = − , b2 = , c2 = − , d2 = ,
2 10 10 10
1 9 31 29
a3 = , b3 = − , c3 = , d3 = − .
10 10 10 10
Consecuentemente los polinomios buscados poseen las siguientes expresiones
explı́citas:
2 3 7
S0 (x) = x − x + 1,
5 5
1 3 27 2 41 19
S1 (x) = − x + x − x + ,
2 10 10 10
1 3 9 2 31 29
S2 (x) = x − x + x− .
10 10 10 10
3
Este problema se ha sacado del libro “ Cálculo I. Teorı́a y problemas de
Análisis Matemático en una variable”, de G. Rodrı́guez et al., 2a ed., Ed. CLAGSA.
56 CAPÍTULO 3. INTERPOLACIÓN POLINOMIAL

Por lo tanto:
7 11 2
S (0.5) = , S (1.5) = , S 0 (3) = .
20 80 5

Ejercicios Propuestos

Ejercicio 1. Determinar el esplı́n cúbico que interpola los siguientes puntos

x −1 1 2
y 2 1 2

y estimar el valor de y para x = 0.

Ejercicio 2. Determinar el esplı́n cúbico que interpola los datos f (0) = 0,


f (1) = 1 y f (2) = 2.
Capı́tulo 4
Diferenciación e Integración
Numérica

En esta sección abordaremos el uso de las técnicas de interpolación para re-


solver dos problemas clásicos del Análisis Numérico: la diferenciación numérica
y la integración numérica. En ambos casos, la idea subyacente al método es
la misma: aproximar la derivada de la función en un punto (resp., la inte-
gral de la función en un intervalo) mediante la derivada en dicho punto de su
polinomio de interpolación (resp., la integral en dicho intervalo del polinomio
de interpolación).

4.1 Diferenciación numérica


El principal objetivo de la diferenciación numérica no es el de aproximar el
valor de la derivada de una cierta función conocida, y = f (x), en un punto,
ya que en este caso bastarı́a con calcular de manera exacta la derivada y
posteriormente evaluarla en dicho punto. La importancia de la diferenciación
numérica se hace patente cuando, en vez de trabajar con una función cuya
expresión explı́cita es conocida, se trabaja con un número finito de valores
conocidos de la función.

Supongamos en primer lugar que los datos con los que contamos son una
tabla de puntos:

x a = x0 x1 ... b = xn
y y0 y1 ... yn

correspondientes a los valores que toma una cierta función, y = f (x), cuya
expresión desconocemos. Entonces una aproximación del valor f 0 (c), con

57
58 CAPÍTULO 4. DIFERENCIACIÓN E INTEGRACIÓN NUMÉRICA

c ∈ [a, b], es la siguiente:

f 0 (c) ' Pn0 (c) ,

donde y = Pn (x) es el polinomio de interpolación que pasa por los puntos


anteriormente señalados.
Cuando c = xi , con 0 ≤ i ≤ n y Pn (x) es el polinomio de Lagrange,
podemos dar una cota del error que se comete con dicha aproximación:

M Y
n
0
ε = |f (xi ) − Pn0 (xi )| ≤ (xi − xj ) ,
(n + 1)! j=0
j6=i
¯ ¯
donde ¯f (n+1) (x)¯ ≤ M, para todo x ∈ [a, b].
Por otra parte, podrı́amos también utilizar el desarrollo de Taylor para
calcular f 0 (c) siempre y cuando conozcamos los valores de dicha función en
los puntos c y c + h. Ası́, utilizando el desarrollo de Taylor de segundo orden
obtenemos:
f 0 (c) f 00 (ξ) 2
f (c + h) = f (c) + h+ h, ξ ∈ [c, c + h].
1! 2!
Despejando el valor deseado, conseguimos:

f (c + h) − f (c) h 00
f 0 (c) = − f (ξ) ,
h 2
con lo que podemos poner:

f (c + h) − f (c)
f 0 (c) ' ,
h
siendo el error cometido:
¯ ¯
¯ h 00 ¯ h
¯
ε = ¯ f (ξ)¯¯ ≤ M, |f 00 (x)| ≤ M ∀x ∈ [c, c + h].
2 2

Se puede encontrar una fórmula más exacta para la derivada f 0 (c), siem-
pre y cuando se conozca el valor de la función en los puntos c − h, c y c + h.
En este caso, utilizando sendos desarrollos de Taylor de tercer orden:

f 0 (c) f 00 (c) 2 f 000 (ξ) 3


f (c + h) = f (c) + h+ h + h, ξ ∈ [c, c + h],
1! 2! 3!
f 0 (c) f 00 (c) 2 f 000 (η) 3
f (c − h) = f (c) − h+ h − h, η ∈ [c − h, c],
1! 2! 3!
4.1. DIFERENCIACIÓN NUMÉRICA 59

y restándolos, se obtiene:
f 000 (ξ) + f 000 (η) 3
f (c + h) − f (c − h) = 2f 0 (c) h + h,
6
de donde podemos tomar:
f (c + h) − f (c − h)
f 0 (c) ' ,
2h
siendo el error cometido:
¯ 000 ¯ ¯ ¯
¯ f (ξ) + f 000 (η) 2 ¯ ¯ f 000 (δ) 2 ¯
ε = ¯¯ h ¯¯ = ¯¯ h ¯¯ , δ ∈ [ξ, η] ⊆ [c − h, c + h].
12 6
Nota. En esta última igualdad hemos aplicado el Teorema de los valores in-
termedios, según el cual si y = F (x) es una función continua en [a, b],
entonces toma todos los valores intermedios entre F (a) y F (b). En
particular, existirá un c ∈ [a, b], tal que
F (a) + F (b)
F (c) = .
2
Por lo tanto podemos poner que una cota del error es:
¯ 2 ¯
¯ h 000 ¯ h2
¯
ε = ¯ f (η)¯¯ ≤ M, |f 000 (x)| ≤ M ∀x ∈ [c − h, c + h].
6 6

Ejemplo 21. Dada la siguiente tabla de puntos correspondientes a una fun-


ción y = f (x),
x 0 1 2 3
y 1 0 0.5 1
Calcular f 0 (0.5), y f 0 (3).
Un sencillo cálculo nos muestra que el polinomio de interpolación que
pasa por dichos puntos es el siguiente:
P3 (x) = −0.25x3 + 1.5x2 − 2.25x + 1,
de tal forma que:
f 0 (x) ' P30 (x) = −0.75x2 + 3x − 2.25.
Consecuentemente:
f 0 (0.5) ' P30 (0.5) = −0.9375,
f 0 (3) ' P30 (3) = 0.
60 CAPÍTULO 4. DIFERENCIACIÓN E INTEGRACIÓN NUMÉRICA

Ejercicios Propuestos
Ejercicio 1. Dada la siguiente tabla de puntos correspondientes a una cierta
función y = f (x),
x −1 1 2
y 2 1 2
Calcular f 0 (1) y f 0 (0.5).
Ejercicio 2. Dada la siguiente tabla de puntos correspondientes a la función
y = f (x) = x2 + x,
x −1 0 1 2
y 0 0 2 6
Calcular f 0 (1) y f 0 (0.5). Estimar el error cometido en ambos casos.
Ejercicio 3. Demostrar que se tiene la siguiente aproximación para la se-
gunda derivada de una función, y = f (x) ,en un punto c:
f (c + h) − 2f (c) + f (c − h)
f 00 (c) ' ,
h2
¯ 4 ¯
¯ h (4) ¯ h4 ¯ (4) ¯
ε = ¯ f (η)¯¯ ≤ M,
¯ ¯f (x)¯ ≤ M ∀x ∈ [c − h, c + h].
12 12

4.2 Integración numérica


Las fórmulas de integración numérica tienen como objetivo aproximar el valor
de la integral de una función en un intervalo; de la que sólo se conocen los
valores en algunos puntos, o cuya primitiva es dificil de calcular o no se
2
puede expresar en términos de funciones elementales (por ejemplo, y = e−x ,
y = sen (x2 ), etc.).
Ası́, dada una función y = f (x), el problema que vamos a resolver es el
del cálculo de
Z b
f (x) dx.
a
En general los métodos que expondremos consisten en aproximar dicha in-
tegral por una suma del tipo
Xn
ai f (xi ) ,
i=0
donde a = x0 < . . . < b = xn . En esta sección haremos referencia a dos tipos
fundamentales: los métodos de Newton-Côtes y los métodos compuestos.
4.2. INTEGRACIÓN NUMÉRICA 61

Métodos de Newton-Côtes
Existen multitud de procedimientos basados en el esquema descrito anterior-
mente; no obstante en esta sección expondremos aquellos que estan basados
en el uso del polinomio interpolador, y = Pn (x), de la función y = f (x) en
los puntos x0 , . . . , xn , de tal forma que:
Z b Z b
f (x) dx ' Pn (x) dx.
a a

Son los denominados métodos del Trapecio y de Simpson respectivamente.

1. El método del Trapecio consiste en tomar la siguiente aproximación:


Z b
h
f (x) dx ' (f (a) + f (b)) , h = b − a.
a 2
Obsérvese que esta fórmula se obtiene de integrar el polinomio de in-
terpolación en los puntos (a, f (a)) y (b, f (b)). Una cota del error que
se comete es la siguiente:

h3
ε≤ M, |f 00 (x)| ≤ M para todo x ∈ [a, b].
12

2. El método de Simpson consiste en tomar la siguiente aproximación:


Z b µ µ ¶ ¶
h a+b b−a
f (x) dx ' f (a) + 4f + f (b) , h = .
a 3 2 2

Obsérvese que esta fórmula se obtiene integrando


¡ a+b el ¡polinomio
¢¢ interpo-
a+b
lador de y = f (x) en los puntos (a, f (a)), 2 , f 2 y (b, f (b)).
Una cota del error que se comete es la siguiente:

h5 ¯ (4) ¯
ε≤ M, ¯f (x)¯ ≤ M para todo x ∈ [a, b].
90

Ejemplo 22. Dada la función y = f (x), tal que f (0) = 1, f (1.5) = 0.5 y
f (3) = 1, calcular
Z 3
f (x) dx
0

mediante el método del Trapecio y de Simpson.


62 CAPÍTULO 4. DIFERENCIACIÓN E INTEGRACIÓN NUMÉRICA

Aplicando el método del Trapecio se obtiene:


Z 3
3
f (x) dx ' (f (0) + f (3)) = 3.
0 2
Por otra parte, la aproximación que da el método de Simpson es la siguiente:
Z b
1.5
f (x) dx ' (f (0) + 4f (1.5) + f (3)) = 2.
a 3

Ejemplo 23. Calcular de manera exacta y aproximada la integral


Z π/2
sen (x) dx.
0

De manera exacta se obtiene lo siguiente:


Z π/2 ³π ´
sen (x) dx = − cos (x)]π/2
0 = − cos + cos (0) = 1.
0 2
De forma aproximada aplicaremos el método de Simpson, ası́:
Z π/2
π ³ ³π ´ ³ π ´´
sen (x) dx ' f (0) + 4f +f =
0 12 4 2
π ³ √ ´
= 2 2 + 1 ' 0.957107.
12

4.2.1 Métodos compuestos


Los métodos descritos anteriormente no son adecuados para ser utilizados
en la integración de funciones sobre intervalos grandes ya que, debido a su
propia naturaleza, el error que se cometerı́a serı́a excesivo. Es por ello por
lo que parece apropiado dividir el intervalo en subintervalos más pequeños
y aplicar en ellos los métodos de Newton-Côtes. Ası́, podemos destacar los
siguientes dos métodos compuestos:
1. El método del Trapecio compuesto consiste en dividir el intervalo [a, b]
en n subintervalos iguales:
[a = x0 , x1 ], [x1 , x2 ], . . . , [xn−1 , xn = b],
y aplicar el método del trapecio en cada uno de ellos. Consecuente-
mente se obtiene la siguiente aproximación:
Z b à !
h X
n−1
b−a
f (x) dx ' f (a) + 2 f (xi ) + f (b) , h = ,
a 2 i=1
n
4.2. INTEGRACIÓN NUMÉRICA 63

donde xi = a + ih con 0 ≤ i ≤ n. Una cota del error que se comete es


la siguiente:

(b − a)3
ε≤ M, |f 00 (x)| ≤ M para todo x ∈ [a, b].
12n2

2. El método de Simpson compuesto consiste en dividir el intervalo [a, b]


en n = 2m subintervalos de la misma longitud y aplicar en cada pareja
consecutiva el método de Simpson. Consecuentemente, se obtiene la
siguiente aproximación:
Z b à !
h X
m−1 Xm
f (x) dx ' f (a) + 2 f (x2j ) + 4 f (x2j−1 ) + f (b) ,
a 3 j=1 j=1

donde
b−a
h= ,
n
y xj = a + jh con 0 ≤ j ≤ n. Una cota del error que se comete es la
siguiente:

(b − a)5 ¯ (4) ¯
¯f (x)¯ ≤ M para todo x ∈ [a, b].
ε≤ M,
180n4

Ejemplo 24. Dada la siguiente tabla de puntos correspondientes a la función


y = f (x),

x 0 1 2 3 4
y 1 0 0.5 1 1.5

Calcular
Z 4
f (x) dx
0

mediante el método del Trapecio compuesto y de Simpson compuesto.


Para aplicar el método del Trapecio compuesto hemos de dividir el inter-
valo en subintervalos de la misma longitud. Ası́, obtenemos:

[0, 4] = [0, 1] ∪ [1, 2] ∪ [2, 3] ∪ [3, 4] ,


64 CAPÍTULO 4. DIFERENCIACIÓN E INTEGRACIÓN NUMÉRICA

de tal forma que h = 1, y consecuentemente:


Z b
1
f (x) dx ' [f (0) + 2 (f (1) + f (2) + f (3)) + f (4)]
a 2
1
= [1 + 2 (0 + 0.5 + 1) + 1.5]
2
= 2.75.

Por otro lado, para usar el método de Simpson compuesto hemos de


dividir el intervalo [0, 4] en un número par de subintervalos de igual longitud.
En este caso particular coinciden con los usados para el método del trapecio
y, consecuentemente:
Z b
1
f (x) dx ' [f (0) + 2f (2) + 4 (f (1) + f (3)) + f (4)]
a 3
1
= [1 + 2 · 0.5 + 4 (0 + 1) + 1.5]
3
= 2.5.

Obsérvese que se podı́an haber tomado también los intervalos [0, 4] =


[0, 2]∪[2, 4] para poder aplicar ambos dos métodos pero los resultados obtenidos
hubieran sido peores.

Ejercicios Propuestos

Ejercicio 1. Dada la función f (x) = 4 − 2x2 , calcular de manera aproxi-


mada
Z 1
f (x) dx
0

mediante el método del trapecio y el método de Simpson y comparar los re-


sultados con el valor exacto de la misma.

Ejercicio 2. Usar los métodos del trapecio y de Simpson compuesto para


aproximar el valor de la siguiente integral:
Z 1
sen (x)
dx.
0 x
Capı́tulo 5
Resolución Numérica de EDOs

En esta sección estudiaremos los métodos más importantes de resolución de


ecuaciones diferenciales ordinarias (EDOs), centrando nuestra atención en
las de primer orden.
De manera general, una ecuación diferencial ordinaria de orden k es una
relación entre la variable independiente x, la variable dependiente y (x), y las
sucesivas derivadas de esta última hasta el orden k, y 0 (x) , y 00 (x) , . . . , y (k (x).
Consecuentemente, se puede escribir como sigue:
¡ ¢
F x, y (x) , y 0 (x) , y 00 (x) , . . . , y(k (x) = 0,

o bien, de forma normal :


¡ ¢
y (k = f x, y (x) , y 0 (x) , y 00 (x) , . . . , y (k−1 (x) .

Como hemos comentado anteriormente, nosotros sólo haremos referencia a


EDOs de primer orden y que se puedan expresar en forma normal:
dy
y 0 = f (x, y) ⇔ = f (x, y) .
dx
Antes de entrar a desarrollar los métodos numéricos de resolución de
EDOs de primer orden, es conveniente repasar algunos de los conceptos
básicos asociados a las mismas. Ası́:
Definición. Se denomina solución de una EDO de primer orden, y 0 =
f (x, y), a toda función y = s (x) tal que satisface la siguiente igualdad:

f (x, s (x)) = s0 (x) .

En general las EDOs poseen infinitas soluciones y se suelen imponer condi-


ciones iniciales para limitar el número de las mismas. Ası́:

65
66 CAPÍTULO 5. RESOLUCIÓN NUMÉRICA DE EDOS

Definición. Se denomina solución general de una EDO de primer orden,


y 0 = f (x, y), a toda función y = s (x, C), donde C ∈ R, tal que satisface la
siguiente igualdad:
f (x, s (x, C)) = s0 (x, C) .
Para cada valor concreto de la constante C se obtendrá una solución partic-
ular de la EDO.
Además:
Definición. Se llama problema de Cauchy ó problema del valor inicial (PVI)
al conjunto formado por una EDO y una condición inicial:
½ 0
y = f (x, y) , x ∈ [a, b]
y0 = y (x0 )
Existen diferentes métodos para poder resolver el PVI explı́citamente,
aunque para la mayor parte de las EDOs se desconoce su solución exacta.
En estos casos, existe la posibilidad de obtener la curva solución del PVI
calculándola aproximadamente en algunos de los puntos del intervalo que
nos interesa, mediante métodos numéricos basados en la discretización de la
variable x. De esta manera aproximaremos la solución y (x) en un conjunto
discreto de puntos x0 , . . . , xn ∈ [a, b].
Existen dos tipos de métodos fundamentalmente para llevar a cabo tal
fin, esto es, para obtener valores aproximados a la curva solución y = y (x)
del PVI en un conjunto de puntos igualmente espaciados del intervalo [a, b]:

• Métodos de paso simple: grosso modo se basan en el cálculo de y (xi+1 )


a partir de la información proporcionada por y (xi ).
• Métodos multipaso: en éstos, el cálculo de y (xi+1 ) se realiza a partir de
la información dada por los valores y (xi ) , . . . , y (xi−p ), y del teorema
fundamental del cálculo, consecuencia del cual:
Z xi
y (xi ) = y (xj ) + f (x, y) dx.
xj

Antes de exponerlos, vamos a fijar la notación que emplearemos:


Ası́, denotaremos por x0 = a, x1 , . . . , xn−1 , xn = b al conjunto discreto de
puntos equidistantes del intervalo [a, b] en el que queremos obtener los valores
aproximados de la curva y = y (x), solución del PVI; consecuentemente, dado
que son equidistantes, se tiene:
b−a
xi = x0 + hi, h= .
n
5.1. MÉTODOS DE PASO SIMPLE 67

Para todo 0 ≤ i ≤ n, si y = y (x) es la curva solución, entonces y (xi ) es el


valor exacto de la curva en el punto xi , e yi denotará al valor aproximado de
dicha curva en dicho punto xi obtenido mediante el método numérico. Por
otro lado, y 0 (xi ) = f (xi , y (xi )) es el valor exacto de la derivada de la curva
solución en el punto xi , mientras que fi = f (xi , yi ) es el valor aproximado
de dicha derivada en xi .
Finalmente, ya sabemos que el uso de cualquier método numérico lleva
emparejado un cierto error. En el caso de la resolución de ecuaciones difer-
enciales ordinarias de manera aproximada, podemos destacar dos tipos de
errores:
Error global : en el paso i-ésimo viene dado por Ei = y (xi ) − yi .
Error local: en el paso i-ésimo es ei = ỹ (xi ) − yi , donde ỹ (xi ) es la
solución exacta del siguiente PVI:
½ 0
y = f (x, y)
yi−1 = ỹ (xi−1 )

es decir, es el error cometido en cada paso (la diferencia entre el valor ex-
acto de la solución, suponiendo exacta la anterior aproximación, y el valor
aproximado).
Por regla general, el error global será mayor que la suma de los errores
locales, ya que en cada paso se comete un error local partiendo de unos
valores anteriores que ya no son exactos.

5.1 Métodos de paso simple


Como hemos comentado anteriormente, los métodos paso simple son aquellos
en los que para obtener una aproximación de y (xi+1 ), se utiliza la información
proporcionada por y (xi ). Dentro de estos nos encontramos con los métodos
de Taylor y los métodos de Runge-Kutta.

5.1.1 Métodos de Taylor


Estos métodos se basan en el hecho de que se puede obtener y (xi+1 ) mediante
el desarrollo de Taylor de y (x) en el punto xi :
h2 00 hn
y (xi+1 ) = y (xi ) + hy 0 (xi ) + y (xi ) + . . . + y (n (xi ) + Rn , h = xi+1 − xi .
2! n!

Consecuentemente, en el método numérico sustituirı́amos y (xi ) por el valor


aproximado yi , la derivada y 0 (xi ) por el valor aproximado fi = f (xi , yi ), y
68 CAPÍTULO 5. RESOLUCIÓN NUMÉRICA DE EDOS

las derivadas sucesivas y (k (xi ) por f (k (xi , yi ), con 2 ≤ k ≤ n, esto es:


h2 00 hn
y (xi+1 ) ' yi + hfi + f (xi , yi ) + . . . + f (n (xi , yi ) .
2! n!
Según el grado del polinomio de Taylor que se elija, tendremos diferentes
métodos de Taylor, ası́:

Método de Euler. En este método se usa el polinomio de Taylor de


primer orden. Ası́, dado el PVI
½ 0
y = f (x, y) , x ∈ [a, b]
y0 = y (x0 )

con solución única y (x), el método de Euler consiste en aproximar el valor


de y en los puntos xi = x0 + ih, por los valores yi obtenidos a partir de y0 de
la siguiente manera:

yi+1 = yi + hf (xi , yi ) . (5.1)

Una cota del error local que se comete con este método es:
h2 M
|ei | ≤ , M= sup |y 00 (ξ)| .
2 ξ∈(xi−1 ,xi )

Ejemplo 25. Usar el método de Euler para aproximar la solución del sigu-
iente PVI:

 0 4x
y = −xy + , 0 ≤ x ≤ 1
y
 y (0) = 1

con h = 0.25.1
Dado que h = 0.25, hemos de obtener los valores aproximados de la curva
solución y = y (x) en los puntos:

x0 = 0, x1 = 0.25, x2 = 0.50, x3 = 0.75, x4 = 1,

ya que h = 0.25. Como y0 = 1, entonces usando la fórmula (5.1), que en


nuestro caso particular es:
µ ¶
4xi
yi+1 = yi + h −xi yi + , 0 ≤ i ≤ 4,
yi
1
Este problema se ha sacado del libro “ Cálculo I. Teorı́a y problemas de
Análisis Matemático en una variable”, de G. Rodrı́guez et al., 2a ed., Ed. CLAGSA.
5.1. MÉTODOS DE PASO SIMPLE 69

se obtendrán los siguientes resultados:


i xi yi f (xi , yi )
0 0 1 0
1 0.25 1 0.75
2 0.5 1.1875 1.09046
3 0.75 1.46011 0.959557
4 1 1.69999
Método de Taylor de orden k. Como sabemos, este método consiste
en aproximar y (xi+1 ) por yi+1 , donde:

h2 00 hk
yi+1 = yi + hfi + f (xi , yi ) + . . . + f (k (xi , yi ) , (5.2)
2! k!
para todo 0 ≤ i ≤ n. Una cota para el error local cometido con este método
es la siguiente:
hk+1 M ¯ (k+1 ¯
|ei | ≤ , M= sup ¯y (ξ)¯ .
(k + 1)! ξ∈(xi−1 ,xi )

Ejemplo 26. Usar el método de Taylor de orden 2 con h = 0.1 para aprox-
imar la solución del PVI:2
½ 0
y = 1 + xsen (xy) , 0 ≤ x ≤ 0.5
y (0) = 0
Si hemos de usar el método de Taylor de orden 2, entonces la fórmula
(5.2) en nuestro caso particular será:
h2 0
yi+1 = yi + hf (xi , yi ) + f (xi , yi ) ,
2
donde:

f 0 (x, y (x)) = sen (x · y (x)) + x (y (x) + x · y 0 (x)) cos (x · y (x))


¡ ¢
= sen (x · y (x)) + x · y (x) + x2 + x3 sen (x · y (x)) cos (x · y (x)) .

Consecuentemente, la fórmula que hemos de usar será:

yi+1 = yi + h (1 + xi sen (xi yi ))


h2 £ ¡ ¢ ¤
+ sen (xi yi ) + xi yi + x2i + x3i sen (xi yi ) cos (xi yi ) .
2
2
Este problema se ha sacado del libro “ Cálculo I. Teorı́a y problemas de
Análisis Matemático en una variable”, de G. Rodrı́guez et al., 2a ed., Ed. CLAGSA.
70 CAPÍTULO 5. RESOLUCIÓN NUMÉRICA DE EDOS

Por otro lado, como h = 0.1, los puntos en los que hemos de aproximar la
solución son los siguientes:

x0 = 0, x1 = 0.1, x2 = 0.2, x3 = 0.3, x4 = 0.4, x5 = 0.5.

Ası́ pues, el resultado obtenido es:


xi yi fi fi0
0 0 1 0
0.1 0.1 1.001 0.0300
0.2 0.2002 1.008 0.1203
0.3 0.3016 1.0903 0.2725
0.4 0.4119 1.1640 0.4947
0.5 0.5307

5.1.2 Métodos de Runge-Kutta


Estos métodos consisten en utilizar aproximaciones de la forma:

yi+1 = yi + hΦ (xi , yi , h) , 0 ≤ i ≤ n − 1,

donde Φ es una función cuya expresión explı́cita es una combinación lineal


de las derivadas de y valoradas en puntos convenientemente escogidos. Con
estos métodos se trata de mejorar la aproximación del método de Euler sin
necesidad de recurrir al cálculo de derivadas de orden superior.
El orden de un método de Runge-Kutta indica el número puntos en los que
se evalúa f en cada paso. Para cada orden hay toda una familia de métodos
de Runge-Kutta que se obtienen con distintas elecciones de los coeficientes
de la combinación lineal y los puntos de evaluación.

Método de Runge-Kutta de orden 2. El método más usado es el que


se corresponde con la siguiente fórmula:
h
yi+1 = yi + (k1 + k2 ) , 0 ≤ i ≤ n − 1, (5.3)
2
donde

k1 = f (xi , yi ) , k2 = f (xi+1 , yi + hk1 ) .

Ejemplo 27. Dado el PVI


( 1 y
y0 = 2 − − y2, 1≤x≤2
x x
y (1) = −1
5.1. MÉTODOS DE PASO SIMPLE 71

cuya solución exacta es y (x) = −1/x, usar un método de Runge-Kutta de


orden 2, con h = 0.1 para aproximar la solución y comparar con los valores
reales de y.3
Usaremos el método de Runge-Kutta de orden 2 anterior, con lo que la
fórmula utilizada es (5.3), donde:
1 yi
k1 = 2
− − yi2 ,
xi xi
1 yi + hk1
k2 = 2 − − (yi + hk1 )2 .
xi+1 xi+1

Además, el conjunto de puntos en el que aproximaremos la solución es el


siguiente:

x0 = 1, x1 = 1.1, x2 = 1.2, x3 = 1.3, . . . , x9 = 1.9, x10 = 2.

Ası́ pues, se obtiene el siguiente resultado:

xi yi k1 k2 xi y (xi )
1 −1 1 0.834628 1 −1
1.1 −0908269 0.827193 0.700871 1.1 −0909091
1.2 −0.831865 0.695666 0.597 1.2 −0.833333
1.3 −0.767232 0.593249 0.514719 1.3 −0.769231
1.4 −0.711834 0.51195 0.448427 1.4 −0.714286
1.5 −0.663815 0.446338 0.394228 1.5 −0.666667
1.6 −0.621787 0.392623 0.349348 1.6 −0.625
1.7 −0.584688 0.348095 0.311764 1.7 −0.588235
1.8 −0.551695 0.310772 0.279975 1.8 −0.555556
1.9 −0.522158 0.279179 0.252847 1.9 −0.526316
2 −0.495557 2 −0.5

Como además sabemos que la solución exacta es y (x) = −1/x, entonces


la tabla de valores de la misma en los puntos para los que hemos obtenido
solución aproximada viene dada por la tabla anterior de la derecha.

Métodos de Runge-Kutta de orden 4. El método de Runge-Kutta


de orden 4 más usado es aquel que establece la siguiente aproximación:
h
yi+1 = yi + (k1 + 2k2 + 2k3 + k4 ) , 0 ≤ i ≤ n − 1, (5.4)
6
3
Este problema se ha sacado del libro “ Cálculo I. Teorı́a y problemas de
Análisis Matemático en una variable”, de G. Rodrı́guez et al., 2a ed., Ed. CLAGSA.
72 CAPÍTULO 5. RESOLUCIÓN NUMÉRICA DE EDOS

donde

k1 = f (xi , yi ) ,
µ ¶
h h
k2 = f xi + , yi + k1 ,
2 2
µ ¶
h h
k3 = f xi + , yi + k2 ,
2 2
k4 = f (xi+1 , yi + hk3 ) .

Ejemplo 28. Resolver mediante un método de Runge-Kutta de orden 4 con


h = 0.1 el siguiente PVI:4
½ 0
y = x2 − 3y, 0 ≤ x ≤ 0.4
y (0) = 1

Utilizaremos el método de Runge-Kutta de orden 4 más frecuente que es


aquel que se corresponde con la fórmula (5.4), de tal forma que en nuestro
caso:

k1 = x2i − 3yi ,
2 − 3h 2 6 − 9h h2
k2 = xi + hxi + yi + ,
2 2 4
4 − 6h + 9h2 2 2h − 3h2 −12 − 18h + 27h2 2h2 − 3h3
k3 = xi + xi + yi + ,
4 2 4 8
2 −12h + 18h2 − 27h3 2 6h2 − 9h3
k4 = xi+1 − 3yi + xi − xi
4 2
36h + 54h2 − 81h3 6h3 − 9h4
+ yi − .
4 8
Consecuentemente, se obtiene el siguiente resultado:

xi yi k1 k2 k3 k4
0 1 −3 −2.5475 −2.61537 −2.20538
0.1 0.741147 −2.21344 −1.86892 −1.9206 −1.60726
0.2 0.551151 −1.61345 −1.34893 −1.38861 −1.14686
0.3 0.413894 −1.15168 −0.946429 −0.977217 −0.788516
0.4 0.317435

Por otra parte, la EDO del PVI del enunciado es lineal, luego existe un
procedimiento para el cálculo explı́cito de la solución exacta. Dicha solución
4
Este problema se ha sacado del libro “ Cálculo I. Teorı́a y problemas de
Análisis Matemático en una variable”, de G. Rodrı́guez et al., 2a ed., Ed. CLAGSA.
5.1. MÉTODOS DE PASO SIMPLE 73

es:
µ ¶
25 −3x 1 2 2 2
y (x) = e + x − x+ .
27 3 3 9
La tabla de valores de dicha solución exacta en los puntos para los que hemos
obtenido solución aproximada es:
xi y (xi )
0 1
0.1 0.741127
0.2 0.551121
0.3 0.413860
0.4 0.317402
Como se puede apreciar la solución aproximada dada por el método de Runge-
Kutta de orden 4 es bastante buena.

Ejercicios Propuestos

Ejercicio 1. Usar el método de Euler y el método de Taylor de orden 2 para


aproximar la solución del siguiente PVI:
( 1
y 0 = (y 2 + y) , 1 ≤ x ≤ 3
x
y (1) = −2
donde h = 0.5.
Ejercicio 2. Usar un método de Runge-Kutta de orden 2 y otro de orden 4
para resolver aproximadamente el siguiente PVI tomando h = 0.2:
½ 0
y = cos (y) , 0 ≤ x ≤ 1
y (0) = 0
Comprobar las soluciones aproximadas obtenidas con la solución exacta.
Ejercicio 3. La ley de enfriamiento de Newton establece que
dT
= −k (T − T0 ) ,
dt
donde T (t) es la temperatura de un objeto en el instante t y T0 es la tem-
peratura ambiente. Una taza de café tiene una temperatura de 80o C y se
encuentra en una habitación con una temperatura ambiente de 20o C. En
este caso, k = 0.080. Obtener con un método de Runge-Kutta de orden 4
una tabla de temperaturas del café en los siguientes 10 minutos, a intervalos
de 30 segundos.
74 CAPÍTULO 5. RESOLUCIÓN NUMÉRICA DE EDOS

5.2 Métodos multipaso


Como se ha comentado anteriormente, estos métodos consisten en calcular
el valor aproximado de y (xi+1 ), yi+1 , usando los valores aproximados de

y (xi ) , y (xi−1 ) , . . . , y (xi−p ) ,

que son yi , . . . , yi−p , y de las derivadas

f (xi , y (xi )) , f (xi−1 , y (xi−1 )) , . . . , f (xi−p , y (xi−p )) ,

que son fi , . . . , fi−p . Todos estos métodos se basan en el teorema fundamental


del cálculo, según el cual:
Z b Z b
0
y (b) = y (a) + y (x) dx = y (a) + f (x, y (x)) dx,
a a

de tal forma que aplicando esta fórmula en el intervalo [xi−p , xi+1 ], se obtiene:
Z xi+1
yi+1 = yi−p + f (x, y (x)) dx.
xi−p

R xi+1
Ahora la expresión xi−p f (x, y (x)) dx se aproxima integrando el polinomio
interpolador de orden r, Pr (x), utilizando la tabla de valores:

x xi xi−1 ... xi−r


y fi fi−1 ... fi−r

De esta manera se obtienen fórmulas del siguiente tipo:

yi+1 = yi−p + h (A0 fi + A1 fi−1 + . . . + Ar fi−r ) ,

donde los coeficientes A0 , . . . , Ar dependen de los valores prefijados p y r.


Las distintas elecciones de los parámetros p y r determinarán el método
multipaso elegido.
Hay que destacar que una peculiaridad de los métodos multipaso es la
necesidad de tener previamente calculados los valores de yi−1 , . . . , yi−p para
obtener el valor de yi . Como por los datos del problema, sólo se conoce y0 ,
será necesario calcular por medio de otro método (de paso simple) el resto
de los valores.
Los métodos que estudiaremos serán dos: los métodos de Adams-Bashford
y los métodos predicción-corrección.
5.2. MÉTODOS MULTIPASO 75

5.2.1 Métodos de Adams-Bashford


Estos métodos se corresponden con el caso p = 0, luego vienen dados por la
ecuación:
Z xi+1
yi+1 = yi + Pr (x) dx,
xi

con lo que se obtienen algoritmos de la siguiente forma:

yi+1 = yi + h (A0 fi + A1 fi−1 + . . . + Ar fi−r ) , 0 ≤ i ≤ n − 1,

donde h es la longitud del paso. La expresión que se obtiene al variar el


parámetro r recibe el nombre de fórmula o método de Adams-Bashford de
orden r + 1.

Método de Adams-Bashford de orden 2. Este método se corre-


sponde con el caso r = 1, obteniéndose la siguiente fórmula:
Z xi+1
yi+1 = yi + P1 (x) dx,
xi

siendo P1 (x) el polinomio de interpolación asociado a los puntos:

x xi xi−1
y fi fi−1

Consecuentemente:
fi − fi−1
P1 (x) = fi + (x − xi ) .
h
Integrando se obtiene que el método de Adams-Bashford de orden 2 da la
siguiente aproximación:
h
yi+1 = yi + (3fi − fi−1 ) .
2
Ya hemos comentado que los métodos multipaso no se autoinician. En-
tonces, en el presente método necesitamos calcular y1 previamente. Normal-
mente suele utilizarse como algoritmo de arranque el método de Runge-Kutta
de orden 2 y con él se calcula y1 , después:
h
y2 = y1 + (3f1 − f0 ) ,
2
y se sigue sin problemas.
76 CAPÍTULO 5. RESOLUCIÓN NUMÉRICA DE EDOS

Ejemplo 29. Resolver mediante el método de Adams-Bashford de orden 2


el siguiente PVI:
½ 0
y = x2 − 3y, 0 ≤ x ≤ 0.4
y (0) = 1
donde h = 0.1.
Como se ha comentado anteriormente, vamos a calcular y1 usando el
método de Runge-Kutta de orden 2; ası́:
h
y1 = y0 + (k1 + k2 ) ,
2
donde

k1 = f (x0 , y0 ) = f (0, 1) = −3,


k2 = f (x1 , y0 + hk1 ) = f (0.1, 0.7) = −0.2.

Consecuentemente, un simple cálculo muestra que y1 = 0.84.


Ahora, una vez que tenemos el valor de y1 , podemos calcular el resto de
los valores usando el método de Adams-Bashford de orden 2:
h
yi+1 = yi + (3fi − fi−1 ) , 1 ≤ i ≤ 3,
2
obteniéndose la siguiente tabla de valores:
i xi yi fi
0 0 1 −3
1 0.1 0.84 −2.51
2 0.2 0.6135 −1.8005
3 0.3 0.468925 −1.31677
4 0.4 0.361434 −0.924301
Método de Adams-Bashford de orden 4. Este método se corre-
sponde con el caso r = 3, con lo que el polinomio interpolador, P3 (x), se
calcula teniendo en cuenta los puntos:
x xi xi−1 xi−2
xi−3
y fi fi−1 fi−2
fi−3
Rx
Ahora, integrando en la expresión yi+1 = yi + xii+1 P3 (x) dx, se obtiene la
fórmula del método de Adams-Bashford de orden 4:
h
yi+1 = yi + (55fi − 59fi−1 + 37fi−2 − 9fi−3 ) . (5.5)
24
5.2. MÉTODOS MULTIPASO 77

Al igual que en el caso anterior, este método no se autoinicia, luego necesita-


mos conocer de antemano los valores y0 , y1 , y2 , y3 . El valor y0 lo conocemos, y
se suele utilizar el método de Runge-Kutta de orden 4 para calcular el resto.
Ejemplo 30. Calcular y (1), siendo y (x) la solución del problema de Cauchy
½
y 0 = −2xy 2 , 0 ≤ x ≤ 0.4
y (0) = 1

1. usando el método de Runge-Kutta de orden 4 con h = 0.2.

2. usando el método de Adams-Bashford de orden 4 con h = 2, iniciándolo


con los primeros valores del apartado anterior.

3. obteniendo la solución exacta de la ecuación.

Comparar los resultados5 .

1. Emplearemos el método de Runge-Kutta de orden 4 dado por (5.4),


donde

f (x, y) = −2xy 2 , h = 0.2, 0 ≤ i ≤ 5.

Los valores que se obtienen son los siguientes:

i xi yi
0 0 1
1 0.2 0.961533
2 0.4 0.862052
3 0.6 0.735278
4 0.8 0.609752
5 1 0.500007

2. Vamos a usar la fórmula dada por (5.5) con h = 0.2. Dado que el
cálculo de yi+1 requiere de la evaluación de la función f en (xi , yi ),
(xi−1 , yi−1 ), (xi−2 , yi−2 ), (xi−3 , yi−3 ), el primer elemento que se puede
calcular con esta fórmula es y4 y se usarán para inicial el método los
valores obtenidos en el apartado anterior. El resultado de aplicar el
5
Este problema se ha sacado del libro “ Cálculo I. Teorı́a y problemas de
Análisis Matemático en una variable”, de G. Rodrı́guez et al., 2a ed., Ed. CLAGSA.
78 CAPÍTULO 5. RESOLUCIÓN NUMÉRICA DE EDOS

método se muestra en la siguiente tabla:


i ti yi fi
0 0 1 0
1 0.2 0.961533 −0.369818
2 0.4 0.862052 −0.594506
3 0.6 0.735278 −0.648760
4 0.8 0.616201 −0.607525
5 1 0.501156
Hay que indicar que los valores y4 e y5 se han obtenido del siguiente
modo:
h
y4 = y3 + (55f3 − 59f2 + 37f1 − 9f0 )
24
0.2
= 0.735278 + [55 (−0.648760) − 59 (−0.594506) + 37 (−0.369818)]
24
' 0.616201,
f4 = f (x4 , y4 ) = −0.607525,
h
y5 = y4 + (55f4 − 59f3 + 37f2 − 9f1 ) ' 0.501156.
24
3. La ecuación diferencial del enunciado: y 0 = −2xy 2 es una EDO de
variables separadas:
dy −1
2
= −2xdx ⇔ = −x2 + c, c ∈ R.
y y
Consecuentemente, la solución general de la misma es:
1
y= 2 , c ∈ R.
x +c
Como ha de satisfacer la condición inicial, y (0) = 1, entonces c = 1 y
la solución exacta del PVI del enunciado es:
1
y= 2 .
x +1
La tabla de valores para la solución exacta es la siguiente:
i xi yi
0 0 1
1 0.2 0.961538
2 0.4 0.862068
3 0.6 0.735294
4 0.8 0.609756
5 1 0.5
5.2. MÉTODOS MULTIPASO 79

Como se puede apreciar es mejor la aproximación de y3 e y4 obtenida


por el método de Runge-Kutta.

5.2.2 Métodos de predicción-corrección


Los métodos de predicción-corrección utilizan de modo combinado dos métodos
multipaso. Si se considera una expresión del tipo:
Z xi+1
yi+1 = yi−p + f (x, y (x)) dx,
xi−p

y se aproxima la integral usando un polinomio interpolador en los puntos


xi+1 , xi , . . . , xi−r+1 , entonces se obtiene una fórmula del tipo:
yi+1 = yi−p + h (A0 fi+1 + A1 fi + . . . + Ar fi−r+1 ) ,
que presenta la dificultad de ser un método implı́cito, es decir, se necesita
fi+1 = f (xi+1 , yi+1 ) para calcular precisamente yi+1 . A veces es posible
despejar yi+1 , pero eso no es la norma común. Este obstáculo se salva de la
siguiente manera:

1. Se calcula por algún método explı́cito una primera estimación ȳi+1 de


yi+1 , que se denomina valor predicho de yi+1 , y la fórmula que lo pro-
porciona se denomina fórmula predictora.
2. Dada una estimación ȳi+1 , se calcula f¯i+1 = f (xi+1 , ȳi+1 ), y una nueva
estimación para yi+1 , dada por:
¡ ¢
ỹi+1 = yi−p + h A0 f¯i+1 + A1 fi + . . . + Ar fi−r+1 ,
que recibe el nombre de fórmula correctora.

Hay que indicar que se puede corregir sólo una vez o aplicar varias veces
la fórmula correctora para ası́ obtener correcciones sucesivas.

Método de predicción-corrección de orden 2. En este método la


fórmula predictora que se utiliza es la fórmula de Adams-Bashford de orden
2:
h
ȳi+1 = yi + (3fi − fi−1 ) .
2
La fórmula correctora que se usa viene dada por la siguiente expresión:
Z xi+1
ỹi+1 = yi + P1 (x) dx,
xi
80 CAPÍTULO 5. RESOLUCIÓN NUMÉRICA DE EDOS

donde P1 (x) es el polinomio de interpolación asociado a los puntos:

x xi xi+1
y fi f¯i+1

Consecuentemente, se obtiene:

h¡¯ ¢
ỹi+1 = yi + fi+1 + fi .
2
Ejemplo 31. Resolver mediante un método de predicción-corrección de orden
2 el siguiente PVI:
½ 0
y = sen (y) + x, 0 ≤ x ≤ 1
y (0) = 0

siendo h = 0.1.
Usando el método descrito anteriormente hemos de inicializar el método
calculando y1 . Para ello, dado que estamos usando como fórmula predictora
el método de Adams-Bashford de orden 2, entonces usaremos el método de
Runge Kutta de orden 2 para el cálculo de y1 . Posteriormente utilizaremos
el método descrito anteriormente para el cálculo de ỹi+1 . Ası́ se obtiene la
siguiente tabla de resultados:

i xi ỹi ȳi
0 0 0 −
1 0.1 0.005 −
2 0.2 0.212874 0.02075
3 0.3 0.0498122 0.0492303
4 0.4 0.0918563 0.0912167
5 0.5 0.148822 0.148126
6 0.6 0.222219 0.221477
7 0.7 0.313628 0.312865
8 0.8 0.424619 0.423885
9 0.9 0.556607 0.555989
10 1 0.710624 0.710254

Método de Adams-Moulton de orden 4. En este método se usa


como fórmula predictora la dada por el método de Adams-Bashford de orden
4:
h
ȳi+1 = yi + (55fi − 59fi−1 + 37fi−2 − 9fi−3 ) .
24
5.2. MÉTODOS MULTIPASO 81

Por otra parte, la fórmula correctora se deduce de la expresión:


Z xi+1
ỹi+1 = yi + P3 (x) dx,
xi

donde P3 (x) es el polinomio de interpolación asociado a los puntos:

x xi−2 xi−1 xi xi+1


y fi−2 fi−1 fi f¯i+1

obteniéndose ası́ la fórmula:


h ¡ ¯ ¢
ỹi+1 = yi + 9fi+1 + 19fi − 5fi−1 + fi−2
24
Ejemplo 32. Resolver mediante el método de Adams-Moulton de orden 4 el
siguiente PVI:
 xy
 y0 = − , 1≤x≤2
y 4 − 3x2

y (1) = 1

siendo h = 0.1.
Utilizando el método de Adams-Moulton de orden 4 se obtiene la siguiente
solución:

i xi ỹi ȳi
0 1 1 −
1 1.1 1.04881 −
2 1.2 1.09545 −
3 1.3 1.14018 −
4 1.4 1.18322 1.18321
5 1.5 1.22475 1.22474
6 1.6 1.26491 1.26491
7 1.7 1.30384 1.303804
8 1.8 1.34164 1.34164
9 1.9 1.37841 1.37841
10 2 1.41422 1.41421

Método de Milne de orden 4. En este método se usa como fórmula


predictora la dada por un método multipaso de cuarto orden con p = 3:
4h
ȳi+1 = yi−3 + (2fi − fi−1 + 2fi−2 ) ,
3
82 CAPÍTULO 5. RESOLUCIÓN NUMÉRICA DE EDOS

mientras que la fórmula correctora utiliza un método multipaso con p = 1 y


r = 2:
h¡¯ ¢
ỹi+1 = yi−1 + fi+1 + 4fi + fi−1 ,
3
que consiste en utilizar como aproximación de la integral, la dada por la
fórmula de Simpson.

Ejercicios Propuestos

Ejercicio 1. Resolver mediante el método de Adams-Bashford de orden 2 el


siguiente PVI:
½ 0
y = sen (y) + x, 0 ≤ x ≤ 1
y (0) = 0

siendo h = 0.1.

Ejercicio 2. Resolver mediante el método de Adams-Bashford de orden 4 el


siguiente PVI:
½ 0
y = x2 y − y, 0 ≤ x ≤ 2
y (0) = 1

siendo h = 0.25.

Ejercicio 3. Resolver mediante un método de predicción-corrección de orden


2 el siguiente PVI:
½ 0
y = 1 + xsen (xy) , 0 ≤ x ≤ 1
y (0) = 0

siendo h = 0.1.

Ejercicio 4. Resolver mediante el método de Adams-Moulton de orden 4 el


siguiente PVI:
 1
 y0 = , 0≤x≤2
y (1 + ex )

y (0) = 1

siendo h = 0.2.
Capı́tulo 6

Sistemas de ecuaciones lineales

6.1 Introducción
Es muy frecuente encontrar sistemas de ecuaciones lineales en multitud de
problemas de la Ingenierı́a. Consecuentemente es necesario disponer de las
herramientas matemáticas suficientes para frontar con éxito su resolución.
En la presente sección veremos como los métodos para la resolución de los
sistemas de ecuaciones lineales se dividen en dos grandes grupos: los métodos
directos y los métodos indirectos (o iterativos). Veremos como los primeros
permiten calcular la solución de forma exacta mediante un número finito de
operaciones; éstos son adecuados cuando el número de ecuaciones del sistema
es razonable. Ahora bien, cuando el cálculo de la solución exacta del sistema
se hace inviable, debido fundamentalmente al gran número de ecuaciones
que posee, se hace imprescindible recurrir a los métodos iterativos que dan
la solución con un error previamente acordado.
Se denomina sistema de m ecuaciones lineales con n incógnitas, x1 , . . . , xn ,
al siguiente conjunto 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

siendo aij , bk ∈ R, 1 ≤ i, k ≤ m, 1 ≤ j ≤ n. Podrı́amos escribir este sistema


de forma matricial como sigue:

A · X = B, (6.1)

83
84 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

donde
     
a11 a12 · · · a1n x1 b1
 a21 a22 · · · a2n   x2   b2 
     
A= .. .. ... .. , X= .. , B= .. ,
 . . .   .   . 
am1 am2 · · · amn xn bm

son las matrices de coeficientes, de incógnitas y de términos independientes,


respectivamente. Además, se denomina matriz ampliada a la siguiente:
 
a11 a12 · · · a1n b1
 a21 a22 · · · a2n b2 
∗  
A =  .. .. . . .. ..  .
 . . . . . 
am1 am2 · · · amn bm

Resolver el sistema consiste en encontrar el vector de incógnitas X que


satisface la anterior ecuación. Cuando existe solución, se dice que el sistema
es compatible; compatible determinado cuando dicha solución es única, y
compatible indeterminado cuando existen infinitas soluciones. Si no existe
solución, el sistema se dice que es incompatible.
Existe un criterio que nos permite dilucidar si el sistema (6.1) tiene solu-
ciones o no en función del rango de su matriz de coeficientes y su matriz
ampliada. Ası́:

Teorema de Rouché-Fröbenius. Consideremos un sistema de m ecua-


ciones lineales con n incógnitas: A · X = B. Se verifica que:

• Si rang (A) = rang(A∗ ) = n, el sistema es compatible determinado.


• Si rang (A) = rang (A∗ ) < n, el sistema es compatible indeterminado.
• Si rang (A) 6= rang (A∗ ), el sistema es incompatible.

A partir de ahora, y salvo que se diga lo contrario, supondremos que el


número de ecuaciones coincide con el número de incógnitas, esto es m = n.
Un sistema de ecuaciones lineales se dice que es de Cramer cuando
det (A) 6= 0. Obsérvese que en este caso rang (A) = rang (A∗ ) = n y, con-
secuentemente, es un sistema compatible determinado (admite una única
solución).
Se dice que dos sistemas de ecuaciones lineales son equivalentes cuando
admiten las mismas soluciones.
Un tipo particular de sistema de ecuaciones lineales es aquel en el que la
matriz de los términos independientes, B, es el vector columna nulo, esto es:
6.2. MÉTODOS DIRECTOS 85

bi = 0 para todo i = 1, . . . , n. A estos sistemas se les denomina homogéneos.


Obsérvese que estos sistemas son compatibles puesto que siempre admiten
como solución a:

x1 = 0, . . . , xn = 0.

6.2 Métodos directos


6.2.1 Los métodos más sencillos
Sea A·X = B un sistema de n ecuaciones lineales con n incógnitas compatible
determinado . Los métodos más sencillos para resolverlo son, fundamental-
mente, dos: el método de la matriz inversa y el método de Cramer.
Desde un punto de vista teórico, los sistemas de ecuaciones lineales no
plantean dificultad alguna pues el Teorema de Rouché-Fröbenius y estos
dos métodos que detallaremos a continuación agotan el estudio del prob-
lema. Sin embargo, en la práctica, los sistemas de ecuaciones lineales con los
que se trabajan poseen un número de ecuaciones muy elevado, lo cual hace
prácticamente imposible la utilización de estos métodos de resolución. Es
por ello, por lo que hay que buscar otros métodos que sean más eficientes.

El método de la matriz inversa


Consiste en despejar de la igualdad matricial que representa el sistema, la
matriz columna de las incógnitas, X. Para ello es necesario calcular la matriz
inversa de la matriz de los coeficientes, A−1 . Ası́, se tendrı́a:

X = A−1 · B.

Ejemplo 33. Resolver el siguiente sistema de ecuaciones lineales:




 x2 + 2x3 + x4 =1

x1 + 2x2 + x3 + 3x4 =0

 x1 + x2 − x3 + x4 =5

x2 + 8x3 + 12x4 =2

Matricialmente dicho sistema se escribe como sigue:


     
0 1 2 1 x1 1
 1 2 1 3   x2   0 
     
 1 1 −1 1  ·  x3  =  5  ,
0 1 8 12 x4 2
86 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

de donde:
   −1  
x1 0 1 2 1 1
 x2   1 2 1 3   0 
    · 
 x3  =  1 1 −1 1   5 
x4 0 1 8 12 2
   
4 −11/2 13/2 1/2 1
 −4/3 8/3 −8/3 −1/3   0 
=   
 5/3 −11/6 11/6 1/6  ·  5


−1 1 −1 0 2
 
75/2
 −46/3 
=  
 67/6  .
−6

Obsérvese que la dificultad de este método es puramente de ı́ndole com-


putacional ya que hemos de calcular la inversa de una matriz de orden n.
Para órdenes bajos, el tiempo de cálculo es pequeño, pero a medida que el
orden aumenta, el método se va haciendo menos eficaz.

El método de Cramer

Según este método, las soluciones del sistema de ecuaciones lineales compat-
ible determinado A · X = B se calculan con las siguientes fórmulas:

det (Ai )
xi = , 1 ≤ i ≤ n,
det (A)

donde Ai es la matriz que resulta de sustituir en la matriz de los coeficientes


A, la columa i-ésima por la columna de los términos independientes.

Ejemplo 34. Resolver el siguiente sistema de ecuaciones lineales:




 x1 − x2 + x3 = 4

−x1 + 2x2 − x3 + 2x4 = −3

 x1 − x2 + 5x3 + 2x4 = 16

2x2 + 2x3 + 6x4 = 8
6.2. MÉTODOS DIRECTOS 87

Aplicando el método de Cramer obtenemos:


¯ ¯ ¯ ¯
¯ 4 −1 1 0 ¯¯ ¯ 1 4 1 0 ¯
¯ ¯ ¯
¯ −3 2 −1 2 ¯¯ ¯ −1 −3 −1 2 ¯
¯ ¯ ¯
¯ 16 −1 5 2 ¯¯ ¯ 1 16 5 2 ¯
¯ ¯ ¯
¯ 8 2 2 6 ¯ 8 ¯ 0 8 2 6 ¯ 4
x1 = = = 2, x2 = = = 1,
4 4 4 4
¯ ¯ ¯ ¯
¯ 1 −1 4 0 ¯¯ ¯ 1 −1 1 4 ¯¯
¯ ¯
¯ −1 2 −3 2 ¯¯ ¯ −1 2 −1 −3 ¯¯
¯ ¯
¯ 1 −1 16 2 ¯¯ ¯ 1 −1 5 16 ¯¯
¯ ¯
¯ 0 2 8 6 ¯ 12 ¯ 0 2 2 8 ¯ 0
x3 = = = 3, x4 = = = 0.
4 4 4 4

La dificultad de este método radica en que se han de calcular n + 1


determinantes de orden n. Esto es sencillo si el orden n es bajo. No obstante
para órdenes altos, este método es totalmente ineficaz.

6.2.2 Sistemas lineales diagonales y triangulares


Se dice que un sistema A·X = B es diagonal cuando la matriz de coeficientes
es diagonal, es decir, cuando es de la siguente forma:


 a11 x1 = b1

 a22 x2 = b2
..

 .

 a x =b
nn n n

Obviamente, este tipo de sistema es compatible determinado siempre que


aii 6= 0 para i = 1, . . . , n. En ese caso la solución es:

b1 b2 bn
x1 = , x2 = , . . . , xn = .
a11 a22 ann

Se dice que un sistema A · X = B es triangular superior (resp. inferior )


cuando la matriz de coeficientes es triangular superior (resp. inferior )1 . Ası́,

1
Recordemos que una matriz cuadrada de orden n, A = (aij ), es triangular superior
cuando aij = 0 para i > j, y triangular inferior cuando aij = 0 para i < j.
88 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

tendremos:


 a11 x1 + a12 x2 + a13 x3 + . . . + a1n xn = b1



 a22 x2 + a23 x3 + . . . + a2n xn = b2
triangular superior : a13 x3 + . . . + a1n xn = b3

 ..

 .

 a x =bnn n n



 a11 x1 = b1



 a21 x1 + a22 x2 = b2
triangular inferior : a21 x1 + a22 x2 + a33 x3 = b3

 ..

 .

 a x + a x + a x + ... + a x = b
n1 1 n2 2 n3 3 nn n n

Este tipo de sistemas son compatibles determinados cuando aii 6= 0 para


i = 1, . . . , n. En dicho caso, la solución se calcula de manera muy sencilla
sin más que resolver la ecuación más sencilla e ir sustituyendo en el resto. A
modo de ejemplo, si consideramos el caso triangular superior, la solución se
calcuları́a como sigue:
b1 − a12 x2 − a13 x3 − . . . − a1n xn
a11 x1 + a12 x2 + . . . + a1n xn = b1 ⇒ x1 = = ...
a11
..
.
bn−1 − an−1,n xn ann bn−1 − an−1,n bn
an−1,n−1 xn−1 + an−1,n xn = bn−1 ⇒ xn−1 = =
an−1,n an−1,n ann
bn
ann xn = bn ⇒ xn =
ann

Ejemplo 35. Resolver el siguiente sistema triangular superior de ecuaciones


lineales:


 4x1 − x2 + 2x3 + 3x4 = 20

−2x2 + 7x3 − 4x4 = −7

 6x3 + 5x4 = 4

3x4 = 6
De la última ecuación se deduce que:
6
x4 = = 2.
3
6.2. MÉTODOS DIRECTOS 89

Sustituyendo este resultado en la anterior ecuación se obtiene:

6x3 + 10 = 4 ⇒ x3 = −1.

Siguiendo con el procedimiento, si sustituimos los valores de x3 y x4 en la


segunda ecuación, obtenemos:

−2x2 − 7 − 8 = −7 ⇒ x2 = −4.

Finalmente, de la primera ecuación se sigue:

4x1 + 4 − 2 + 6 = 20 ⇒ x1 = 3.

Ejercicio. Resolver el siguiente sistema triangular de ecuaciones lineales:




 x1 + 2x2 − x4 = 9

−x2 − x3 + 2x4 = −9

 −2x3 + 3x4 = −10

1.5x4 = −3

6.2.3 Eliminación Gaussiana


El método de la eliminación Gaussiana
El método de la eliminación Gaussiana consiste en sustituir la resolución de
un sistema A · X = B por la resolución de otro sistema equivalente2 y que
sea triangular superior, U · X = C.
La dificultad del método radica en el hecho de encontrar las matrices U y
C a partir de la matriz ampliada original A∗ . Ello lo conseguiremos mediante
la utilización de cierto tipo de transformaciones (que aplicadas a un sistema
de ecuaciones lineales da lugar a un sistema equivalente).
Ası́, estas transformaciones son las siguientes:

1. Intercambio de ecuaciones: el orden de ecuaciones puede cambiarse.


Ası́ denotaremos por Eij a la transformación que intercambia las ecua-
ciones i-ésima y j-ésima.

2. Escalado de ecuaciones: se puede multiplicar una ecuación por una


constante no nula. Denotaremos por Ei (k) a la transformación consis-
tente en multiplicar la ecuación i-ésima por la constante k ∈ R.
2
Recordemos que dos sistemas son equivalentes cuando poseen el mismo conjunto de
soluciones.
90 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

3. Sustitución de ecuaciones: se puede reemplazar una ecuación por la


suma de ella misma con un múltiplo de otra ecuación. Denotaremos
por Eij (k) a la transformación que consiste en sustituir la ecuación
i-ésima por ella misma mas k veces la ecuación j-ésima.

Ejemplo 36. Encontrar un sistema equivalente triangular superior al dado


por:


 x1 + 2x2 + x3 + 4x4 = 13

2x1 + 4x3 + 3x4 = 28

 4x + 2x2 + 2x3 + x4 = 20
 1
−3x1 + x2 + 3x3 + 2x4 = 6
La matriz ampliada de este sistema es:
 
1 2 1 4 13
 2 0 4 3 28 
A∗ =  4 2
.
2 1 20 
−3 1 3 2 6
Podemos hacer las siguientes transformaciones elementales hasta obtener una
matriz triangular superior:
   
1 2 1 4 13 1 2 1 4 13
 2 0 4 3 28  E21 (−2)  0 −4 2 −5 2 
  Ã  
 4 2 2 1 20  E31 (−4),E41 (3)  0 −6 −2 −15 −32 
−3 1 3 2 6 0 7 6 14 45
 
1 2 1 4 13
E32 (−3/2)  0 −4 2 −5 2 
à  
E42 (7/4)  0 0 −5 −7.5 −35 
0 0 9.5 5.25 48.5
 
1 2 1 4 13
E43 (19/10)  0 −4 2 −5 2 
à  
 0 0 −5 −7.5 −35  .
0 0 0 −9 −18
Consecuentemente, el sistema de ecuaciones lineales del enunciado es equiv-
alente a este otro sistema:


 x1 + 2x2 + x3 + 4x4 = 13

−4x2 + 2x3 − 5x4 = 2

 −5x3 + 7.5x4 = −35

−9x4 = −18
6.2. MÉTODOS DIRECTOS 91

cuya solución es inmediata:


x1 = 3, x2 = −1, x3 = 4, x4 = 2.
Nota. Hay que indicar que la matriz U puede ser también triangular inferior.

Estrategias de pivoteo
Obsérvese que en el ejemplo anterior utilizamos el elemento aii de la ma-
triz de coeficientes para “hacer ceros” en los elementos ak,i con k > i. El
problema aparece cuando alguno de estos elementos es nulo, es decir, cuando
existe un i tal que aii = 0. En este caso hemos de recurrir a la denominada
estrategia del pivoteo trivial, consistente en intercambiar la ecuación i-ésima
por la ecuación inmediatamente posterior tal que el coeficiente de xi de la
misma fuera no nulo. En caso de que esto no fuera posible, entonces nos
encontrarı́amos con que la matriz de coeficientes del sistema, A, serı́a no
singular y, consecuentemente, el sistema serı́a compatible indeterminado.
Como los ordenadores usan una aritmética con una precisión previamente
fijada, es posible que cada vez que se realice una operación aritmética, se
introduzca un pequeño error. En el siguiente ejemplo se pone de manifiesto
cómo el uso de la estrategia del pivoteo trivial en la eliminación gaussiana
puede llevar aparejado un error apreciable en la solución de un sistema de
ecuaciones lineales calculada con un ordenador:
Ejemplo 37. Calcular la solución del siguiente sistema de ecuaciones lin-
eales:
½
1.133x + 5.281y = 6.414
24.14x − 1.210y = 22.93
Calcularemos la solución de este sistema con cinco cifras decimales exactas
mediante el método de la eliminación gaussiana. Ası́, como:
µ ¶ µ ¶
1.133 5.281 6.414 E21 (−21.31) 1.133 5.281 6.414
à ,
24.14 −1.210 22.93 0 −113.7 −113.8
entonces bastará con resolver el sistema:
½
1.133x + 5.281y = 6.414
−113.7y = −113.8
cuya solución es:
−113.8
y = = 1.001,
−113.7
6.414 − 5.281 · 1.001
x = = 0.9953.
1.133
92 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

Ahora bien, si en vez de “hacer un cero” en el coeficiente (2, 1) de la


matriz ampliada, lo hacemos en el elemento (1, 1), obtenemos:
µ ¶ µ ¶
1.133 5.281 6.414 E12 (0.04693) 0 5.338 5.338
à ,
24.14 −1.210 22.93 24.14 −1.210 22.93

con lo que el sistema a resolver es:


½
5.338y = 5.338
24.14x − 1.210y = 22.93

La solución del mismo es:


5.338
y = = 1.000,
5.338
22.93 + 1.210 · 1.000
x = = 1.000.
24.14
Para solucionar este tipo de problemas se suele utilizar la denominada
estrategia del pivoteo parcial. Ası́, para reducir la propagación de los errores
de redondeo, hemos de comparar el tamaño de todos los elementos de la
columna q, de la matriz de coeficientes A, desde el que está en la diagonal
hasta el de la última fila, esto es: aqq , aq+1,q , . . . , qnq . Si suponemos que el
elemento con mayor valor absoluto se encuentra en la fila k-ésima, akq , con
k ≥ q, entonces tenemos que intercambiar la fila q-ésima por la k-ésima. De
esta manera ayudaremos a que se propague un error más pequeño.

Ejemplo 38. Calcular la solución del siguiente sistema de ecuaciones lin-


eales, utilizando la aritmética del redondeo a cuatro dı́gitos:
½
0.0030x + 59.14y = 59.17
5.291x − 6.130y = 46.78

La matriz ampliada de este sistema es


µ ¶
∗ 0.0030 59.14 59.17
A = ,
5.291 −6.130 46.78

donde es obvio que a11 = 0.0030 < a22 = 5.291, luego siguiendo la estrate-
gia del pivoteo parcial, hemos de intercambiar las filas primera y segunda,
obteniéndose ası́ la matriz equivalente:
µ ¶
5.291 −6.130 46.78
.
0.003000 59.14 59.17
6.2. MÉTODOS DIRECTOS 93

Aplicando ahora el método de la eliminación Gaussiana obtenemos:


µ ¶ µ ¶
5.291 −6.130 46.78 E21 (−0.0005670) 5.291 −6.130 46.78
à ,
0.0030 59.14 59.17 0 59.14 59.14

es decir, el sistema a resolver es:


½
5.291x − 6.130y = 46.78
59.14y = 59.14

cuyas soluciones son:

y = 1.000, x = 10.00.

Podemos aún, reducir más, los efectos de la propagación de errores medi-


ante la estrategia del pivoteo parcial escalado. Según ella se elige el elemento
de la columna q-ésima que se encuentra en, o por debajo de la diagonal
principal, esto es: aqq , aq+1,q , . . . , qnq , que tiene mayor tamaño relativo con
respecto al resto de los elementos de su fila. Es decir, primero se busca en
cada fila, desde la q-ésima hasta la última, el elemento de mayor tamaño, por
ejemplo sr ,

sr = max {|arq | , |ar,q+1 | , . . . , |arn |} , r = q, q + 1, . . . , n.

La fila pivote será la k-ésima, tal que:


½ ¾
|akq | |aqq | |aq+1,q | |anq |
= max , ,... , .
sk sq sq+1 sn
Finalmente se intercambian las filas q-ésima y k-ésima.

Ejemplo 39. Calcular la solución del siguiente sistema de ecuaciones lin-


eales, utilizando la aritmética del redondeo a cuatro dı́gitos:
½
30.00x + 591400y = 591700
5.291x − 6.130y = 46.78

Aplicando la estrategia del pivoteo parcial escalado, se tiene que:


|a11 | |30.00| 30.00
= = = 0.5073 · 10−4 ,
s1 max {|30.00| , |591400|} 591400
|a21 | |5.291| 5.291
= = = 0.8631,
s2 max {|5.291| , |−6.130|} 6.130
94 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

luego hemos de intercambiar las filas primera y segunda y resolver el sistema


½
5.291x − 6.130y = 46.78
30.00x + 591400y = 591700
cuya solución, aplicando de nuevo el método de la eliminación Gaussiana es
x = 10.00 e y = 1.000.

Ejercicios Propuestos

Ejercicio 1. Probar que los dos siguientes sistemas de ecuaciones lineales


son equivalentes y resolverlos:
 
 2x1 + 4x2 − 6x3 = −4  2x1 + 4x2 − 6x3 = −4
x1 + 5x2 + 3x3 = 10 3x2 + 6x3 = 12
 
x1 + 3x2 + 2x3 = 5 3x3 = 3
Ejercicio 2. Resolver, usando el método de la eliminación Gaussiana, los
siguientes sistemas de ecuaciones lineales:

 x1 + x2 + 6x3 = 7
−x1 + 2x2 + 9x3 = 2

x1 − 2x2 + 3x3 = 10


 4x1 + 8x2 + 4x3 = 8

x1 + 5x2 + 4x3 − 3x4 = −4

 x + 4x2 + 7x3 + 2x4 = 10
 1
x1 + 3x2 − 2x4 = −4


 2x1 + 4x2 − 4x3 = 12

x1 + 5x2 − 5x3 − 3x4 = 18

 2x1 + 3x2 + x3 + 3x4 = 8

x1 + 4x2 − 2x3 + 2x4 = 8
Ejercicio 3. Usar la eliminación Gaussiana y la aritmética de tres dı́gitos
para resolver los siguientes sistemas lineales. Después, comparar las aproxi-
maciones con la solución real:
½
0.03x + 58.9y = 59.2
5.31x − 6.10y = 47.0

 3.03x − 12.1y + 14z = −119
−3.03x + 12.1y − 7z = 120

6.11x − 14.2y + 21z = −139
La solución exacta del primero es x = 10 e y = 1, mientras que la del segundo
sistema es x = 0 , y = 10 y z = 1/7.
6.2. MÉTODOS DIRECTOS 95

6.2.4 Factorización LU
En esta sección vamos a introducir un nuevo método para la resolución de un
sistema de ecuaciones lineales (compatible determinado), A · X = B, basado
en la denominada factorización triangular de la matriz de coeficientes.
La factorización triangular o factorización LU de una matriz no singular
(invertible) A consiste en descomponerla como producto de otras dos matri-
ces: A = L · U, de tal forma que la matriz L es triangular inferior, cuyos
coeficientes de la diagonal principal son todos iguales a 1, y la matriz U
es triangular superior, cuyos coeficientes de la diagonal principal son todos
distintos de 0.
En este caso, es decir, en el caso en que la matriz de los coeficientes de
un sistema de ecuaciones lineales admita una factorización LU, la resolución
de dicho sistema se reduce a la resolución de dos sistemas triangulares: uno
superior y otro inferior:
½
U ·X =Y
A·X =B ⇔L·U · X} = B ⇔
| {z L·Y =B
Y

Ejemplo 40. Calcular la solución del siguiente sistema de ecuaciones lin-


eales:


 x1 + 2x2 + 4x3 + x4 = 21

2x1 + 8x2 + 6x3 + 4x4 = 52

 3x1 + 10x2 + 8x3 + 8x4 = 79

4x1 + 12x2 + 10x3 + 6x4 = 82

La matriz de los coeficientes


 
1 2 4 1
 2 8 6 4 
A=
 3 10 8

8 
4 12 10 6

se puede escribir como sigue:


   
1 0 0 0 1 2 4 1
 2 0   
A=
1 0  ·  0 4 −2 2 .
 3 1 1 0   0 0 −2 3 
4 1 2 1 0 0 0 −6
| {z } | {z }
L U
96 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

De esta forma, la resolución del sistema del enunciado se reduce a resolver


los dos siguentes sistemas:


 y1 = 21 y1 = 21

2y1 + y2 = 52 y2 = 10


 2y1 + y2 + y3 = 79 y3 =6

4y1 + y2 + 2y3 + y4 = 82 y4 = −24


 x1 + 2x2 + 4x3 + x4 = y1 (= 21) x1 =1

4x2 − 2x3 + 2x4 = y2 (= 10) x2 =2


 −2x3 + 3x4 = y3 (= 6) x3 =3

−6x4 = y4 (= −24) x4 =4

El problema que plantea este método es el de que encontrar una factor-


ización LU de la matriz A.
El método básico que seguiremos para calcular dicha factorización con-
siste en los siguientes pasos:

1. En primer lugar se calcula mediante transformaciones elementales de


tipo fila de la forma Fij (k)3 , una matriz equivalente a la matriz de
coeficientes A, que sea triangular superior y cuyos coeficientes de la
diagonal principal sean no nulos. Ésta será la matriz U.

2. En segundo lugar se le realizarán a la matriz identidad Id, siguien-


do el orden de las transformaciones elementales hechas anteriormente,
las transformaciones elementales tipo columna Cji (−k). Es decir, en
3
Recordemos que las transformaciones elementales de tipo fila son de tres tipos:
(a) Intercambio de filas: Denotaremos por Fij a la transformación que intercambia las
filas i-ésima y j-ésima.
(b) Escalado de filas: Denotaremos por Fi (k) a la transformación consistente en multi-
plicar la fila i-ésima por la constante k ∈ R.
(c) Sustitución de filas: Denotaremos por Fij (k) a la transformación que consiste en
sustituir la fila i-ésima por ella misma mas k veces la fila j-ésima.
De manera análoga se definirı́an las transformaciones elementales de tipo columna Cij ,
Ci (k) y Cij (k).
Recuérdese, además, que si A y à son dos matrices equivalentes de tal forma que una,
Ã, se obtiene a partir de la otra, A, mediante una serie de transformaciones elementales
de tipo fila: F1 , . . . , Fm y de tipo columna: C1 , . . . , Cl , entonces se verifica que:

P · A · Q = Ã,

donde la matriz P (resp. Q) se obtiene de la matriz Id sin más que hacerle las transfor-
maciones F1 , . . . , Fm (resp. C1 , . . . , Cl ).
6.2. MÉTODOS DIRECTOS 97

vez de realizarle a la Id las transformaciones Fij (k), hemos de hacer


Cji (−k). La matriz resultante será triangular inferior con unos en la
diagonal principal. Ésta será la matriz L.

Ejemplo 41. Calcular la factorización LU de la siguiente matriz invertible:


 
1 2 4 1
 2 8 6 4 
A=  3 10 8 8 

4 12 10 6

Mediante transformaciones elementales tipo fila transformamos A en la


matriz triangular superior U:
A
z
 }| {  
1 2 4 1 1 2 4 1
 2 8 6 4   4 −2 2 
  F21 (−2)
à  0 
 3 10 8 8  F31 (−3),F 41 (−4)
 0 4 −4 5 
4 12 10 6 0 4 −6 2
   
1 2 4 1 1 2 4 1
F32 (−1)  0 4 −2 2  F43 (−2)  0 4 −2 2 
à   à  .
F42 (−1)  0 0 −2 3   0 0 −2 3 
0 0 −4 0 0 0 0 −6
| {z }
U

Ahora, para obtener la matriz L bastará con que hagamos las siguientes
transformaciones a la identidad:
Id
z }| {  
1 0 0 0 1 0 0 0
 0 1 0 0   2 1 0 0 
  C12 Ã
(2)
 
 0 0 1 0  C13 (3),C14 (4)  3 0 1 0 
0 0 0 1 4 0 0 1
   
1 0 0 0 1 0 0 0
C23 (1)  2 1 0 0  (2)  2 1 0 0 
à   C34 à  .
C24 (1)  3 1 1 0   3 1 1 0 
4 1 0 1 4 1 2 1
| {z }
L

Consecuentemente, A = L · U .
98 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

Ejercicios Propuestos

Ejercicio 1. Resolver, usando el método de factorización LU, los siguiente


sistemas de ecuaciones lineales:

 2x1 − x2 + x3 = −1
3x1 + 3x2 + 9x3 = 0

3x1 + 3x2 + 5x3 = 4


 x1 + 2x2 + 4x3 + x4 = 21

2x1 + 8x2 + 6x3 + 4x4 = 52

 3x 1 + 10x2 + 8x3 + 8x4 = 79

4x1 + 12x2 + 10x3 + 6x4 = 82


 x1 + x2 + 3x4 = 4

2x1 + x2 − x3 + x4 = 1

 3x − x2 − x3 + 2x4 = −3
 1
−x1 + 2x2 + 3x3 − x4 = 4
6.2. MÉTODOS DIRECTOS 99

6.2.5 Factorización P A = LU
Obsérvese que en el anterior procedimiento, las únicas transformaciones ele-
mentales de tipo fila para obtener la matriz U , que se utilizan son las de la
forma Fij (k). No obstante, en algunas ocasiones no será posible conseguir
una factorización LU utilizando sólo dichas transformaciones, como se puede
apreciar en el siguiente ejemplo:

Ejemplo 42. Resolver el siguiente sistema de ecuaciones lineales:



 x1 + 2x2 + 3x3 = 0
x1 + 2x2 = 1

x1 − x2 + 2x3 = 2

La matriz de los coeficientes es invertible ya que:


¯ ¯
¯ 1 2 3 ¯¯
¯
¯ 1 2 0 ¯¯ = −9 6= 0,
¯
¯ 1 −1 2 ¯

consecuentemente el sistema es compatible determinado y tendrá una única


solución. Si intentáramos aplicar el método de la factorización LU, obten-
drı́amos:
   
1 2 3 1 2 3
 1 2 0  F21Ã (−1)
 0 0 −3  .
F31 (−1)
1 −1 2 0 −3 −1

Ahora, para conseguir una matriz triangular superior cuyos coeficientes de


la diagonal principal sean no nulos, no queda más remedio que intercambiar
la segunda y tercera filas, esto es, realizar la transformación elemental F23 .
Ello viola una de las condiciones del método de la factorización LU detallado
anteriormente. Obsérvese que en este caso, el problema se solventarı́a sin más
que intercambiar las ecuaciones segunda y tercera entre sı́ antes de iniciar el
proceso y resolver, consecuentemente, el sistema:

 x1 + 2x2 + 3x3 = 1
x1 − x2 + 2x3 = 0

x1 + 2x2 = 2

Para calcular la solución de sistemas de ecuaciones lineales que presentan


la anterior “patologı́a”, introduciremos una variante de la factorización LU
denominada factorización P A = LU .
100 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

Sea A · X = B un sistema de ecuaciones lineales compatible determinado,


tal que la matriz A no admite una factorización LU (debido a que serı́a
necesario realizar una serie de intercambio de filas).
Antes de detallar el método, veamos una definición que nos será de utili-
dad: la matriz de permutación. Supongamos que a la matriz A se le realizan
una serie de transformaciones elementales de tipo fila de la forma Fij , por
ejemplo:
Fi Fi Fi Fi
A Ã ... Ã ... Ã ... Ã
1 1 j 2 2 j
3 3 j
m m j
Ã,
entonces es claro que si hacemos esas mismas transformaciones a la matriz
identidad:
Fi Fi Fi Fi
Id à ... à ... à ... Ã
1 1 j 2 2 j
3 3 j
m m j
P,
se verifica que P · A = Ã.
Obsérvese que à no es más que la matriz A con algunas filas permutadas:
la fila i1 -ésima por la j1 -ésima, la fila i2 -ésima por la j2 -ésima, etc. En este
sentido, la matriz P no es más que la matriz Id a la que le hemos permutado
las mismas filas. Pues bien, dicha matriz P recibe el nombre de matriz de
permutación.
Ası́ pues, el método de la factorización P A = LU consiste en los siguientes
pasos:
1. En primer lugar se calcula mediante transformaciones elementales de
tipo fila de la forma Fij (k) y Fij , una matriz equivalente a la matriz
de coeficientes A, que sea triangular superior y cuyos coeficientes de la
diagonal principal sean no nulos. Ésta será la matriz U.
2. En segundo lugar, se calcula la matriz P sin más que hacerle (en el
mismo orden) a la matriz Id las transformaciones de la forma Fij hechas
anteriormente a A.
3. Finalmente, se le realizarán a la matriz identidad Id, siguiendo el or-
den de las transformaciones elementales del tipo Fij (k) hechas anteri-
ormente a A, las transformaciones elementales tipo columna Cji (−k).
La matriz resultante será triangular inferior con unos en la diagonal
principal. Ésta será la matriz L.
De esta forma el sistema de partida, A · X = B, se reduce a la resolución
del sistema P · A · X = P · B, la resolución del cual se reduce, a su vez, a la
búsqueda de las soluciones de los siguientes dos sistemas triangulares:
L·Y = P ·B
U ·X = Y
6.2. MÉTODOS DIRECTOS 101

Ejemplo 43. Resolver el siguiente sistema de ecuaciones lineales:



 x1 + 2x2 + 3x3 = 1
x1 + 2x2 = 2

x1 − x2 + 2x3 = 0

Aplicando el método de la factorización P A = LU, se obtiene:


     
1 2 3 1 2 3 1 2 3
F21 (−1) F23
A =  1 2 0  Ã  0 0 −3  Ã  0 −3 −1  = U.
F31 (−1)
1 −1 2 0 −3 −1 0 0 −3

Consecuentemente:
   
1 0 0 1 0 0
F23
Id =  0 1 0  Ã  0 0 1  = P,
0 0 1 0 1 0
   
1 0 0 1 0 0
C12 (1)
Id =  0 1 0  Ã  1 1 0  = L.
C13 (1)
0 0 1 1 0 1

Por lo tanto
½
L·Y =P ·B
A·X =B ⇔P ·A·X =P ·B ⇔L·U · X} = P · B ⇔
| {z U ·X =Y
Y

Ası́ pues, los dos sistemas triangulares que hemos de resolver son los sigu-
ientes:

 y1 = 1 y1 = 1
y1 + y2 = 0 ⇒ y2 = −1

y1 + y3 = 2 y3 = 1

 x1 + 2x2 + 3x3 = y1 (= 1) x1 = 10/9
−3x2 − x3 = y2 (= −1) ⇒ x2 = 4/9

−3x3 = y3 (= 1) x3 = −1/3

Ejercicios Propuestos
102 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

Ejercicio 1. Resolver, utilizando el método de la factorización P A = LU,


los siguientes sistemas de ecuaciones lineales:

 x1 + 2x2 + 6x3 = 0
4x1 + 8x2 − x3 = 1

−2x1 + 3x2 + 5x3 = 2

 x1 + 2x2 − x3 = 0
2x1 + 4x2 = 1

x2 − x3 = 2


 x2 + 2x3 + x4 = 8

x1 + 2x2 + x3 + 3x4 = 13

 x1 + x2 − x3 + x4 = 2

x2 + 8x3 + 12x4 = 53


 −x3 + x4 = 8

x1 + x2 − x3 + 2x4 = 13

 x1 + x2 + 3x4 = 2

x1 + 2x2 − x3 + 3x4 = 53

6.2.6 Factorización de Chowlesky


Consideremos un sistema de ecuaciones lineales A·X = B, donde la matriz de
coeficientes A es simétrica y definida positiva4 . El método de la factorización
de Chowleski consiste en descomponer dicha matriz A en la forma:

A = C · C t,

donde B es una matriz triangular inferior. Ello es posible debido al siguiente


resultado:

Teorema. Si la matriz A = (aij )1≤i,j≤n es simétrica y definida positiva,


entonces existe una matriz triangular inferior C = (cij )1≤i,j≤n tal que A =
4
Recuérdese que una matriz cuadrada de orden n, A = (aij )1≤i,j≤n , es definida positiva
cuando X · A · X t > 0 para todo X ∈ Rn . Se verifica además, que la matriz A es definida
positiva si y sólo si se cumple que:
¯ ¯
¯ a11 · · · a1k ¯
¯ ¯
¯ .. .. .. ¯ > 0
¯ . . . ¯¯
¯
¯ ak1 · · · akk ¯

para todo k tal que 1 ≤ k ≤ n.


6.2. MÉTODOS DIRECTOS 103

C · C t . Si se elige cii > 0 para toda i, entonces la anterior factorización es


única.

Los coeficientes de la matriz C se calculan recurrentemente según las


siguientes fórmulas:

Para cada i, 1 ≤ i ≤ n :
 v
 u

 u X
i−1

 c = ta − c2ik

 ii ii
 k=1
(6.2)

 Ã !

 1 X
i−1


 cji = cii aij −
 cik cjk , i+1≤j ≤n
k=1

Pues bien, una vez que conocemos la matriz C, la resolución del sistema
A · X = B se lleva a cabo resolviendo dos sistemas triangulares:

½
t C ·Y =B
A·X =B ⇔C ·C
| {z· X} = B ⇔ Ct · X = Y
Y

Ejemplo 44. Resolver, utilizando el método de Chowleski, el siguiente sis-


tema de ecuaciones lineales:



 x1 − x2 + x3 = 4

−x1 + 2x2 − x3 + 2x4 = −3

 x1 − x2 + 5x3 + 2x4 = 16

2x2 + 2x3 + 6x4 = 8

El sistema propuesto se escribe como sigue:

     
1 −1 1 0 x1 4
 −1 2 −1 2   x2   −3 
   = 
 1 −1 5 2  ·  x3   16  ,
0 2 2 6 x4 8
104 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

donde la matriz de coeficientes, A, es simétrica y definido positiva ya que:


¯ ¯
¯ 1 ¯ = 1 > 0,
¯ ¯
¯ 1 −1 ¯
¯ ¯
¯ −1 2 ¯ = 1 > 0,
¯ ¯
¯ 1 −1 1 ¯
¯ ¯
¯ −1 2 −1 ¯ = 4 > 0,
¯ ¯
¯ 1 −1 5 ¯
¯ ¯
¯ 1 −1 1 0 ¯
¯ ¯
¯ −1 2 −1 2 ¯
¯ ¯
¯ 1 −1 5 2 ¯ = 4 > 0.
¯ ¯
¯ 0 2 2 6 ¯

Consecuentemente, es posible aplicar el método de Chowleski. Ası́ teniendo


en cuenta las fórmulas dadas en (6.2), se obtiene:

c11 = a11 = 1,
a12
c21 = = −1,
c11
a13
c31 = = 1,
c11
a14
c41 = = 0,
c
q11
c22 = a22 − c221 = 1,
a23 − c21 c31
c32 = = 0,
c22
a24 − c21 c41
c42 = = 2,
c
q 22
c33 = a33 − c231 − c232 = 2,
a34 − c31 c41 − c32 c42
c43 = = 1,
c33
q
c44 = a44 − c241 − c242 − c243 = 1.

Por lo tanto
 
1 0 0 0
 −1 1 0 0 
C=
 1
,
0 2 0 
0 2 1 1
6.3. MÉTODOS ITERATIVOS 105

de donde el sistema del inicio se reduce a resolver los siguientes dos sistemas
triangulares:
     
1 0 0 0 y1 4 y1 = 4
 −1 1 0  
0   y2   −3  y =1
 ·  =  ⇒ 2
 1 0 2 0   y3   16  y3 = 6
0 2 1 1 y4 8 y4 = 0
     
1 −1 1 0 x1 4 x1 = 2
 0 1 0 2   x2   1 
 ·  =   ⇒ x2 = 1
 0 0 2 1   x3   6  x3 = 3
0 0 0 1 x4 0 x4 = 0

Ejercicios Propuestos

Ejercicio 1. Resolver, utilizando el método de Chowleski, los siguientes


sistemas de ecuaciones lineales:

 2x1 − x2 = 3
−x1 + 2x2 − x3 = −3

−x2 + 2x3 = 1


 4x1 + x2 + x3 + x4 = 0.65

x1 + 3x2 − x3 + x4 = 0.05

 x1 − x2 + 2x3 = 0.00

x1 + x2 + 2x4 = 0.50

Ejercicio 2. Calcular α ∈ R de modo que la siguiente matriz sea definida


positiva:
 
α 1 −1
A =  1 2 1 .
−1 1 4

6.3 Métodos iterativos


6.3.1 Introducción
Los métodos iterativos no suelen utilizarse para resolver sistemas lineales con
un número pequeño de ecuaciones, ya que el tiempo necesario para calcular
las soluciones con una precisión suficientemente buena es muy superior al que
requieren algunos métodos directos como el de la eliminación gaussiana. No
106 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

obstante, en el caso de tener que resolver sistemas con un gran número de


ecuaciones (estamos hablando del orden de 100.000 ecuaciones), en los que
un alto porcentaje de los elementos de la matriz de coeficientes son nulos,
estos métodos se vuelven muy eficientes.
Grosso modo, dichos métodos consisten en lo siguiente: Dado un sistema
de n ecuaciones lineales, A · X = B, y una aproximación, X (0) ,©a la ªsolución
n (k)
exacta del mismo, X, se genera una sucesión de vectores de R , X 0≤k<∞
,
que converge a X; esto es:
lim X (k) = X.
k→∞

En este sentido, se toma como solución aproximada del sistema A · X = B al


vector X (m) , para un cierto m ≥ 0, que es determinado teniendo en cuenta
el error que se quiere cometer.© ª
Para calcular la sucesión X (k) 0≤k<∞ , se convierte el sistema A · X = B
en otro equivalente a él de la forma:
X = T · X + C,
donde T es una matriz cuadrada de orden n y C ∈ Rn . Posteriormente,
se van calculando los términos de la sucesión mediante el siguiente proceso
iterativo:
X (1) = T · X (0) + C
X (2) = T · X (1) + C
···
X (k+1) = T · X (k) + C
···
La diferente elección de las matrices T y C, dará lugar a los diferentes
métodos. En este curso centraremos la atención en dos de ellos: el método
iterativo de Jacobi y el método iterativo de Gauss-Seidel.

6.3.2 Preliminares algebraicos


Antes de ver los métodos propiamente dichos, hemos de introducir algunos
conceptos y resultados de carácter algebraico que serán necesarios posterior-
mente.

Definición. Una norma vectorial en Rn es una función


k k : Rn → R
X 7→ kXk
6.3. MÉTODOS ITERATIVOS 107

tal que satisface las siguientes propiedades:

1. kXk ≥ 0 para todo X = (x1 , . . . , xn ) ∈ Rn .

2. kXk = 0 si y sólo si X = (0, . . . , 0) ∈ Rn .

3. kαXk = |α| kXk para todo α ∈ R y X ∈ Rn .

4. kX + Y k ≤ kXk + kY k para todo X, Y ∈ Rn .

En este curso haremos referencia a dos normas: la norma euclideana o


norma l2 y la norma l∞ .
La norma euclideana se define como sigue:

k k2 : Rn → R
q
X →
7 kXk2 = x21 + . . . + x2n

Esta norma es la que representa la noción tradicional de distancia respecto


al origen; ası́ kXk2 representa la longitud del segmento que une el origen con
el punto X ∈ Rn .
Por otra parte, la norma l∞ es:

k k∞ : Rn → R
X 7→ kXk∞ = max {|x1 | , . . . , |xn |}

Definición. Se define la distancia entre dos vectores X, Y ∈ Rn según la


norma k k a kX − Y k.
© ª
Definición. Se dice que una sucesión de vectores de Rn , X (k) 0≤k<∞ ,
converge a X ∈ Rn respecto
° de la° norma k k si para todo ε > 0, existe un
entero nε ∈ Z, tal que °X (k) − X ° < ε para todo k > nε . © ª
En el caso particular de considerar la norma l∞ , se verifica que X (k) 0≤k<∞
converge a X ∈ Rn respecto a dicha norma, si y sólo si
(k)
lim xi = xi , 1 ≤ i ≤ n,
k→∞
³ ´
(k) (k)
donde recordemos que X = (x1 , . . . , xn ) y X (k) = x1 , . . . , xn .

Proposición. Para cualquier X ∈ Rn , se verifica que:



kXk∞ ≤ kXk2 ≤ n kXk∞ .
108 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

n 0
© (k) ªdos normas cualesquiera de R , k k y k k , se verifica que si
Teorema. Dadas
la sucesión X 0≤k<∞
converge hacia X respecto a k k, entonces también
convergerá hacia X respecto a la norma k k0 .
Definición. Se denomina norma matricial sobre el espacio vectorial Mn (R),
de las matrices cuadradas de orden n con coeficientes reales, a toda aplicación:
k k : Mn (R) → R
A 7→ kAk
tal que se satisfacen las siguientes propiedades:
1. kAk ≥ 0 para toda A ∈ Mn (R).
2. kAk = 0 si y sólo si A = 0.
3. kαAk = |α| kAk para todo α ∈ R y A ∈ Mn (R).
4. kA + Bk ≤ kAk + kBk para toda A, B ∈ Mn (R).
5. kA · Bk ≤ kAk · kBk para toda A, B ∈ Mn (R).
Definición. Se define la distancia entre dos matrices A, B ∈ Mn (R) re-
specto de la norma matricial k k como kA − Bk.
Teorema. Si k k es una norma vectorial de Rn , entonces la aplicación
k k : Mn (R) → R
A 7→ kAk = max kA · Xk
kXk=1

es una norma matricial sobre Mn (R). A esta norma se la denomina norma


matricial natural o norma matricial asociada a la norma vectorial.
De ahora en adelante y salvo que se diga otra cosa, supondremos que
todas las normas son naturales.
Corolario. Sea k k una norma natural cualquiera, entonces:
kA · Xk ≤ kAk · kXk ,
para todo X ∈ Rn y toda A ∈ Mn (R).
Las normas matriciales a las que haremos referencia en este curso serán
las normas naturales asociadas a las normas vectoriales l2 y l∞ , ası́:
kAk2 = max kA · Xk2 , ∀X ∈ Rn , ∀A ∈ Mn (R) ,
kXk=1

kAk∞ = max kA · Xk∞ , ∀X ∈ Rn , ∀A ∈ Mn (R) .


kXk=1
6.3. MÉTODOS ITERATIVOS 109

Teorema. Sea A = (aij )1≤i,j≤n ∈ Mn (R), entonces se verifica que


( n )
X X
n X
n
kAk∞ = max |a1j | , |a2j | , . . . , |anj | .
j=1 j=1 j=1

Definición. Se denomina radio espectral de una matriz A ∈ Mn (R) y se


denota por ρ (A) a:

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

donde λ1 , . . . , λn son los valores propios5 de la matriz A.

El radio espectral está ı́ntimamente relacionado con la norma de una


matriz, como se puede apreciar en el siguiente resultado:

Teorema. Sea A ∈ Mn (R), entonces se verifica que


p
1. kAk2 = ρ (At · A)

2. ρ (A) ≤ kAk, para toda norma natural k k.

3. Para todo ε > 0, existe una norma natural, k k, tal que

ρ (A) < kAk < ρ (A) + ε.

Por lo tanto, ρ (A) es la cota máxima inferior de las normas naturales


de A.

Definición. Se dice que una matriz A ∈ Mn (R) es convergente si


¡ ¢
lim Ak ij = 0, ∀i, j,
k→∞

¡ ¢
siendo Ak ij el coeficiente (i, j) de la matriz Ak = A · .(k. . · A.

Ejemplo 45. La matriz


à 1
!
2
0
A= 1 1
4 2

5
Obsérvese que puede ocurrir que algunos de ellos q sean iguales entre sı́. Además,
recuérdese que si λj = αj + β j i ∈ C, entonces |λj | = α2j + β 2j .
110 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

es convergente puesto que


à 1
!
2k
0
Ak = 1 1
,
22k 2k

y se tiene que:
1 1
lim = lim = 0.
k→∞ 2k k→∞ 22k

Teorema. Sea A ∈ Mn (R), se verifica que las siguientes afirmaciones son


equivalentes:

1. A es una matriz convergente.

2. limn→∞ kAn k = 0 para alguna norma natural.

3. limn→∞ kAn k = 0 para toda norma natural.

4. ρ (A) < 1

5. limn→∞ An · X = 0 para todo X ∈ Rn .

6.3.3 Método iterativo de Jacobi


El método iterativo de Jacobi consiste en sustituir el sistema de n ecuaciones
lineales

A · X = B,

por otro equivalente a él, de la forma:

X = TJ · X + CJ ,

donde TJ ∈ Mn (R) y CJ ∈ Rn .
La matriz TJ y el vector CJ se calculan como sigue: Descomponemos la
matriz A de la forma:

A = D − L − U,

donde D es la matriz diagonal cuyos coeficientes de la diagonal principal son


los mismos que los coeficientes de la diagonal principal de A, −L es la matriz
triangular inferior correspondiente a A con ceros en la diagonal principal,
6.3. MÉTODOS ITERATIVOS 111

y −U es la matriz triangular superior correspondiente a A con ceros en la


diagonal principal. Es decir,
   
a11 a12 · · · a1n a11 0 · · · 0
 a21 a22 · · · a2n   . .. 
   0 a22 . . . 
A =  .. .. . . ..  =  . . 
 . . . .   .. .. ... 0 
an1 an2 · · · ann 0 ··· 0 ann
| {z }
D
   
0 0 ··· 0 0 −a12 ··· −a1n
 ... ..   ... .. 
 −a 0 .   0 0 . 
− . 21 . . − . . ... .
 .. .. .. 0   .. .. −an−1,n 
−an1 · · · −an,n−1 0 0 ··· 0 0
| {z } | {z }
L U

Consecuentemente, el sistema A · X = B se transforma en:

(D − L − U ) · X = B ⇔ D · X = (L + U) · X + B,

es decir:

X = D−1 · (L + U) · X + D−1 · B.

Por lo tanto las matrices utilizadas en el método de iteración de Jacobi son


las siguientes:

TJ = D−1 · (L + U) , CJ = D−1 · B.

Grosso modo, este método consiste en despejar de la i-ésima ecuación del


sistema A · X = B, la incógnita xi , dando lugar ası́ a las ecuaciones:
X
n
aij bi
xi = − xj + , 1 ≤ i ≤ n.
j=1
aii aii
j6=i

De esta forma se obtiene el sistema X = TJ ·X +CJ , siendo el coeficiente (i, j)


de la matriz TJ el dado por la expresión −aij /aii y CJ = (b1 /a11 , . . . , bn /ann )t .
Obsérvese que este método requiere que aii 6= 0, para todo i. Si alguno
de dichos elementos fuera nulo, entonces la matriz de coeficientes serı́a no
singular y en este caso podrı́amos reordenar las ecuaciones de modo que
aii 6= 0 para todo i. Si queremos acelerar la convergencia, debemos modificar
las ecuaciones de modo que aii sea lo más grande posible.
112 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

Ejemplo 46. Resolver el siguiente sistema de ecuaciones lineales:




 10x1 − x2 + 2x3 = 6

−x1 + 11x2 − x3 + 3x4 = 25

 2x1 − x2 + 10x3 − x4 = −11

3x2 − x3 + 8x4 = 15

Es fácil ver que la solución exacta del mismo viene dada por X = (1, 2, −1, 1)t .
Ahora bien, veamos qué obtenemos si aplicamos el metodo iterativo de Ja-
cobi. Ası́, matricialmente tenemos:
     
10 −1 2 0 x1 6
 −1 11 −1 3   x2   25 
     
 2 −1 10 −1  ·  x3  =  −11 ,
0 3 −1 8 x4 15
| {z } | {z } | {z }
A X B

donde

A = D − L − U,

siendo
     
10 0 0 0 0 0 0 0 0 1 −2 0
 0 11 0 0   1 0 0 
0   0 0 1 −3 
D= ,L = 
 0 0 10 0   ,U =  .
−2 1 0 0   0 0 0 1 
0 0 0 8 0 −3 1 0 0 0 0 0

Pues bien, el sistema A · X = B es equivalente al sistema X = TJ · X + CJ ,


donde
 1 
0 10
− 15 0
 1 1 3 
 11 0 − 11 
TJ = D · (L + U) =  ,
−1 11
 −1 1 0 1 
 5 10 10 

0 − 38 1
8
0
 3 
5
 25 
 
·B = .
−1 11
CJ = D  
 − 11
10 
15
8
6.3. MÉTODOS ITERATIVOS 113

Si iniciamos el proceso iterativo dado por la expresión


X (k+1) = TJ · X (k) + CJ ,
partiendo del vector X (0) = (0, 0, 0, 0)t , entonces se obtiene la siguiente tabla:
(k) (k) (k) (k)
k x1 x2 x3 x4
0 0.0000 0.0000 0.0000 0.0000
1 0.6000 2.2727 −1.1000 1.8750
2 1.0473 1.7159 −0.8052 0.8852
3 0.9326 2.0522 −1.0493 1.1309
4 1.0152 1.9537 −0.9681 0.9739
5 0.9890 2.0114 −1.0103 1.0214
6 1.0032 1.9922 −0.9945 0.9944
7 0.9981 2.0023 −1.0020 1.0036
8 1.0006 1.9987 −0.9990 0.9989
9 0.9997 2.0004 −1.0004 1.0006
10 1.0001 1.9998 −0.9998 0.9998
La decisión de parar después de 10 iteraciones es debida a que hemos impuesto
la condición siguiente para acotar el error:
° (k+1) °
°X − X (k) °∞
(k+1)
< 10−3 ,
kX k∞
lo cual se consigue para k = 10.
Obsérvese que el anterior desarrollo es equivalente a despejar de cada
ecuación la variable correspondiente:

  x1 = 6+x10
2 −2x3

 10x1 − x2 + 2x3 = 6 


 
 x2 = 25+x1 +x3 −3x4
−x1 + 11x2 − x3 + 3x4 = 25 11


 2x 1 − x2 + 10x 3 − x4 = −11 
 x3 = −11+x4 −2x1 +x2
 
 10
3x2 − x3 + 8x4 = 15  15−3x2 +x3
x4 = 8

con lo que el proceso iterativo viene dado por:


(k+1) 1 (k) 2 (k) 6
x1 = x2 − x3 + ,
10 10 10
(k+1) 1 (k) 1 (k) 3 (k) 25
x2 = x1 + x3 − x4 + ,
11 11 11 11
(k+1) 1 (k) 2 (k) 1 (k) 11
x3 = x − x1 + x2 − ,
10 4 10 10 10
(k+1) 3 (k) 1 (k) 15
x4 = − x2 + x3 + .
8 8 8
114 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

Ejemplo 47. Resolver el siguiente sistema de ecuaciones lineales:



 4x − y + z = 7
4x − 8y + z = −21

−2x + y + 5z = 15

En notación matricial, este sistema se escribe como sigue:


     
4 −1 1 x 7
 4 −8 1  ·  y  =  −21  ,
−2 1 5 z 15

donde
 
4 −1 1
A =  4 −8 1 
−2 1 5
     
4 0 0 0 0 0 0 1 −1
=  0 −8 0  −  −4 0 0  −  0 0 −1 
0 0 5 2 −1 0 0 0 0

= D − L − U.

Consecuentemente, el sistema equivalente que podemos construir es X =


TJ · X + CJ , donde:
 
0 14 − 14
 1 
TJ = D−1 · (L + U ) =  2 0 1 
8 
,
2
5
− 15 0
 7 
4
 
CJ = D −1
·B =

21
8
.

3

Por lo tanto, la iteración que hemos de realizar es la siguiente:


   7 
 (k+1)  0 1
− 1  (k) 
x  1
4 4
 x 4
 21 
 y (k+1) =  0 1  · y + 8 
(k) 
(k+1)
 2 8 
(k)
.
z 2
−1 0 z 3
5 5
6.3. MÉTODOS ITERATIVOS 115

Si partimos del punto inicial X (0) = (1, 2, 2)t , entonces obtenemos la siguiente
tabla:

k x(k) y (k) z (k)


0 1.00000 2.00000 2.00000
1 1.75000 3.37500 3.00000
2 1.84375 3.87500 3.02500
3 1.96250 3.92500 2.96250
4 1.99063 3.97656 3.00000
5 1.99414 3.99531 3.00094
6 1.99859 3.99719 2.99859
7 1.99965 3.99912 3.00000
8 1.99978 3.99982 3.00004
9 1.99995 3.99989 2.99995
10 1.99999 3.99997 3.00000
11 1.99999 3.99999 3.00000
12 2.00000 4.00000 3.00000

donde puede apreciarse como después de 12 iteraciones obtenemos la solución


exacta del sistema.
Algunas veces el método iterativo de Jacobi no funciona. Por ejemplo, si
reordenamos las ecuaciones de este último sistema, obtenemos:


 −2x + y + 5z = 15
4x − 8y + z = −21

4x − y + z = 7

con lo que, un sencillo cálculo nos muestra que el proceso iterativo vendrá
dado por:

   
 (k+1)
 0 1 5  (k)
 −5
x  
3 x3
 
 y (k+1)  =  1 0  ·  y (k)  +  21  .
1
 2  8  8 
z (k+1) −4 1 0 z (k) 7
116 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

En este caso, partiendo del mismo X (0) , se obtiene la siguiente tabla:


k x(k) y (k) z (k)
0 1.00000 2.00000 2.00000
1 5.75000 3.37500 1.00000
2 4.54167 5.62500 −16.62500
3 −24.08330 2.81771 −9.54167
4 −13.2135 −10.6094 102.151
5 168.465 8.78711 45.2448
··· ··· ··· ···
12 −6619.11 −22522.3 174214
Como se puede apreciar no converge hacia ninguna solución.

6.3.4 Método iterativo de Gauss-Seidel


Al igual que en el método iterativo de Jacobi, el método iterativo de Gauss-
Seidel consiste en sustituir el sistema de n ecuaciones lineales A · X = B, por
otro equivalente a él, de la forma:
X = TG · X + CG ,
donde TG ∈ Mn (R) y CG ∈ Rn . La matriz TG y el vector CG se calculan
como sigue: Descomponemos la matriz A en la forma:
A = D − L − U,
como en el caso anterior. Entonces el sistema A · X = B se puede sustituir
por:
(D − L − U) · X = B ⇔ (D − L) · X − U · X = B
⇔ X = (D − L)−1 · U · X + (D − L)−1 · B,
con lo que, en este caso:
TG = (D − L)−1 · U,
CG = (D − L)−1 · B.
Obsérvese que para que la matriz triangular inferior D −L sea no singular
(y, consecuentemente, exista (D − L)−1 ), es necesario y suficiente que aii 6= 0,
para todo i.
Este método trata de ser una modificación del método iterativo de Jacobi
que permita acelerar la convergencia. Ası́, en el método de Jacobi se calcula-
ban las componentes de X (k+1) a partir de las de X (k) , es decir, calculánamos
6.3. MÉTODOS ITERATIVOS 117

(k+1) (k) (k)


xi a partir de x1 , . . . , xn . Ahora bien, como X (k+1) es, probablemente,
una mejor aproximación de X que X (k) , se modifica el método de tal forma
(k+1) (k+1) (k+1) (k) (k)
que para el cálculo de xi utilicemos x1 , . . . , xi−1 , xi+1 , . . . , xn .

Ejemplo 48. Resolver el siguiente sistema de ecuaciones lineales:



 4x − y + z = 7
4x − 8y + z = −21

−2x + y + 5z = 15

Este sistema se puede expresar por


     
4 −1 1 x 7
 4 −8 1  ·  y  =  −21 ,
−2 1 5 z 15
| {z } | {z }
A B

donde
     
4 0 0 0 0 0 0 1 −1
A =  0 −8 0  −  −4 0 0  −  0 0 −1 .
0 0 5 2 −1 0 0 0 0
| {z } | {z } | {z }
D L U

Consecuentemente, aplicando el método iterativo de Gauss-Seidel, el sistema


equivalente que podemos construir es X = TG · X + CG , donde:
 
0 14 − 14
 
TG = (D − L)−1 · U =   0 8
1
0  ,
3 1
0 40 − 10
 7 
4
 
CG = (D − L) −1
·B =

7
2
.

3

Por lo tanto, el proceso iterativo viene dado por la expresión:


   7 
 (k+1)  0 1
− 1  (k) 
x 
4 4
 x 4
 7 
 y (k+1) =  0 8 1 
0 · y + 2 
(k) 
(k+1)
 (k)
,
z 0 403 1
− 10 z 3
118 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

a partir de la cual se obtiene la siguiente tabla:


k x(k) y (k) z (k)
0 1.00000 2.00000 2.00000
1 1.75000 3.75000 2.95000
2 1.95000 3.96875 2.98625
3 1.99563 3.99609 2.99903
4 1.99927 3.99951 2.99980
5 1.99993 3.99994 2.99998
6 1.99999 3.99999 2.99998
7 2.00000 4.00000 3.00000
Nótese que la solución exacta se alcanza más rápidamente que en el caso
anterior.
Como se ha comentado anteriormente, este método consiste en utilizar
(k+1) (k+1) (k) (k) (k+1)
las componentes x1 , . . . , xi−1 , xi+1 , . . . , xn para el cálculo de xi , en
(k) (k) (k) (k)
vez de x1 , . . . , xi−1 , xi+1 , . . . , xn , que son las utilizadas en el método itera-
(k+1) (k+1)
tivo de Jacobi. Se supone que x1 , . . . , xi−1 son una mejor aproximación
(k) (k)
a x1 , . . . , xi−1 , que x1 , . . . , xi−1 . Grosso modo ello se harı́a de la siguiente
manera: A partir del sistema del enunciado, y despejando la variable corre-
spondiente de cada ecuación del mismo, obtendremos:

  x = 14 y − 14 z + 74
 4x − y + z = 7 

4x − 8y + z = −21 ⇒ y = 12 x + 18 z + 21
8
 

−2x + y + 5z = 15  z = 2x − 1y + 3
5 5

De aquı́ obtendrı́amos el método de Jacobi:


1 (k) 1 (k) 7
x(k+1) = y − z + ,
4 4 4
(k+1) 1 (k) 1 (k) 21
y = x + z + ,
2 8 8
(k+1) 2 (k) 1 (k)
z = x − y + 3.
5 5
(k+1)
Ahora bien, si para el cálculo de y , utilizamos x(k+1) en vez de x(k) ,
y para el cálculo de z (k+1) utilizamos x(k+1) e y (k+1) , en vez de x(k) e y (k) ,
obtendremos el método iterativo de Gauss-Seidel:
1 (k) 1 (k) 7
x(k+1) = y − z + ,
4 4 4
1 1 21
y (k+1) = x(k+1) + z (k) + ,
2 8 8
2 1
z (k+1) = x(k+1) − y (k+1) + 3.
5 5
6.3. MÉTODOS ITERATIVOS 119

Ejemplo 49. Resolver el siguiente sistema de ecuaciones lineales:




 10x1 − x2 + 2x3 = 6

−x1 + 11x2 − x3 + 3x4 = 25

 2x1 − x2 + 10x3 − x4 = −11

3x2 − x3 + 8x4 = 15

Este sistema en notación matricial es:


     
10 −1 2 0 x1 6
 −1 11 −1 3   x2   25 
 · = ,
 2 −1 10 −1   x3   −11 
0 3 −1 8 x4 15
| {z } | {z } | {z }
A X B

con lo que:

A = D − L − U,

siendo
     
10 0 0 0 0 0 0 0 0 1 −2 0
 0 11 0 0   0   
D=   1 0 0  , U =  0 0 1 −3  .
 0 0 10 0  , L =  −2 1 0 0   0 0 0 1 
0 0 0 8 0 −3 1 0 0 0 0 0

Entonces, un sencillo cálculo nos muestra que:


 1 
0 10
− 15 0
 1 4 3 
 0 − 11 
·U = ,
−1 110 55
TG = (D − L)  0 21 13 4 
 − 1100 275 55 
51 47 49
0 − 8800 − 2200 440
 3 
5
 128 
 
·B = .
−1 55
CG = (D − L)  
 − 543
550 
3867
4400
120 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

Consecuentemente el proceso iterativo viene dado por la siguiente expresión:


 (k+1)   0 1
− 15 0
 
(k)
  3 
x1 10 x1 5
 (k+1)   0    
 x2  
1 4
− 11  
3 (k) 
 x2  
128

 (k+1)  = 
110 55     55 
 x3   0 − 1100 21 13 4   x(k)   − 543  ·
· +
275 55  3  550 
(k+1) (k)
x4 0 − 51
− 47 49 x4 3867
8800 2200 440 4400

Ası́, se obtiene la siguiente tabla de valores partiendo de X (0) = (0, 0, 0, 0),


(k) (k) (k) (k)
k x1 x2 x3 x4
0 0.00000 0.00000 0.00000 0.00000
1 0.60000 2.32727 −0.98727 0.87886
2 1.03018 2.03694 −1.01446 0.98434
3 1.00659 2.00356 −1.00253 0.99835
4 1.00086 2.00030 −1.00031 0.99985
5 1.00009 2.00002 −1.00003 0.99998
6 1.00001 2.00000 −1.00000 0.99999
7 1.00000 2.00000 −1.00000 1.00000
Obsérvese como la convergencia es mucho más rápida que con el método
anterior.

6.3.5 Estudio de la convergencia


Es muy importante conocer bajo qué condiciones es convergente un cierto
método iterativo ya que ello nos ayudará a elegir el más adecuado en ca-
da situación. En esta sección mostraremos algunos de los resultados más
importantes relativos a este hecho. Ası́, se verifica lo siguiente:
© ª
Teorema. Para cualquier X (0) ∈ Rn , la sucesión X (k) 0≤k<∞ dada por

X (k) = T · X (k−1) + C,
converge a la única solución del sistema X = T ·X +C si y sólo si ρ (T ) < 1.

© (k) ª Si kT k < 1 para toda (k)


Corolario. norma matricial natural, entonces la suce-
sión X 0≤k<∞
, definida por X = T ·X (k−1) +C, converge para cualquier
X (0) a un vector X ∈ Rn , y las siguientes cotas del error son válidas:
° ° ° °
(i) °X − X (k) ° ≤ kT kk · °X (0) − X ° ,
° ° kT kk
° (1) °
(ii) °X − X (k) ° ≤ 1−kT k
°X − X (0) ° .
6.3. MÉTODOS ITERATIVOS 121

Obsérvese como de (i) se deduce que:


° ° ° °
°X − X (k) ° ' ρ (T )k · °X (0) − X ° .

Consecuentemente, el criterio de interrupción que usualmente se sigue en los


procesos iterativos descritos anteriormente consiste en la condición:
° (k+1) °
°X − X (k) °
< ε,
kX (k) k

donde ε > 0 es el error que queremos cometer (como mucho) y la norma


utilizada es cualquiera: normalmente la l∞ .

Teorema. Si A es una matriz estrictamente dominante en sentido diag-


onal6 , entonces con cualquier elección (0)
© (k) ªde X , los métodos de Jacobi y de
Gauss-Seidel dan las sucesiones X 0≤k<∞
que convergen a la única solu-
ción de A · X = B.

Del apartado (i) del último corolario se deduce que conviene seleccionar
el método iterativo que reduzca al mı́nimo a ρ (T ) < 1. No existen resultados
generales que nos digan cuál de los dos métodos vistos es más eficaz en un
sistema de ecuaciones arbitrario; no obstante en algunos casos especiales es
posible decidir:

Teorema. Dada la matriz A = (aij )1≤i,j≤n , si aij ≤ 0 para cada i 6= j y


si aii > 0 para todo i, entonces será válida una y sólo una de las siguientes
afirmaciones:

1. 0 ≤ ρ (TG ) < ρ (TJ ) < 1.

2. 1 < ρ (TJ ) < ρ (TG ).

3. ρ (TG ) = ρ (TJ ) = 0.

4. ρ (TG ) = ρ (TJ ) = 1.
6
Recordemos que una matriz cuadrada de orden n, A = (aij )1≤i,j≤n , es estrictamente
dominante en sentido diagonal cuando
n
X
aii > |aij | .
j=1
j6=i

Esto es, cuando en valor absoluto, el coeficiente de la diagonal principal es mayor que la
suma de los valores absolutos del resto de coeficientes de la fila a la que pertenece.
122 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

En consecuencia, se obtiene que:

• Si un método da la convergencia, entonces ambos la dan, y el método


de Gauss-Seidel converge más rápido que el de Jacobi.

• Si un método diverge, entonces ambos divergen y la divergencia más


pronunciada es la de Gauss-Seidel.

La rapidez de la convergencia de un método depende, pues, del radio


espectral de la matriz relacionada con el método; ası́ pues, un procedimiento
para seleccionar un método adecuado consiste en escoger aquél cuya matriz
asociada tenga un radio espectral mı́nimo.

Ejemplo 50. Determinar si los métodos iterativos convergen en el siguiente


sistema de ecuaciones lineales:

 5x − y + z = 10
2x + 8y − z = 11

−x + y + 4z = 3

Este sistema en notación matricial se escribe como sigue:


     
5 −1 1 x 10
A·X =B ⇔ 2 8 −1  ·  y  =  11  ,
−1 1 4 z 3

de tal forma que la matriz A es claramente una matriz estrictamente domi-


nante en sentido diagonal ya que:

5 = |a11 | > |a12 | + |a13 | = 1 + 1 = 2,


8 = |a22 | > |a21 | + |a23 | = 2 + 1 = 3,
4 = |a33 | > |a31 | + |a32 | = 1 + 1 = 2.

Consecuentemente, se deduce que las sucesiones proporcionadas por los métodos


de Jacobi y de Gauss-Seidel convergen hacia la solución exacta del mismo.
Por otro lado, un sencillo cálculo nos muestra que:
 1 1
  1 1

0 5
− 5
0 5
− 5
 1   

TJ =  − 4 0 1 
, T =  0 − 1 7 .
8  G  20 40 
1
4
− 14 0 0 16 1 3
− 32

Los valores propios de TJ son


6.3. MÉTODOS ITERATIVOS 123

{−0.0468363, 0.0234181 − 0.364548i, 0.0234181 + 0.364548i}

con lo que

ρ (TJ ) = max {0.04684, 0.36529, 0.36529} = 0.36529.

Por otro lado, los valores propios de TG son

{0.00000, −0.17872, 0.03497} ,

y consecuentemente ρ (TG ) = 0.17872. Por lo tanto el método iterativo de


Gauss-Seidel converge antes que el de Jacobi.

Ejercicios Propuestos

Ejercicio 1. Obtener las dos primeras iteraciones del método de Jacobi y


el de Gauss-Seidel para los siguientes sistemas lineales utilizando X (0) =
(0, 0, 0):

 3x1 − x2 + x3 = 1
3x1 + 6x2 + 2x3 = 0

3x1 + 3x2 + 7x3 = 4

 10x1 − x2 = 9
−x1 + 10x2 − 2x3 = 7

−2x2 + 10x3 = 6

Ejercicio 2. Aplicar el método de Jacobi para resolver los dos sistemas


anteriores, obteniendo la solución aproximada con un error inferior a 10−3 .

Ejercicio 3. Aplicar el método de Gauss-Seidel para resolver el siguiente


sistema de ecuaciones lineales, obteniendo la solución aproximada con un
error inferior a 10−3 :


 10x1 + 5x2 = 6

5x1 + 10x2 − 4x3 = 25

 −4x2 + 8x3 − x4 = −11

−x3 + 5x4 = −11
124 CAPÍTULO 6. SISTEMAS DE ECUACIONES LINEALES

Ejercicio 4. Consideremos los siguientes sistemas de ecuaciones lineales:



 x − 5y − z = −8
4x + y − z = 13

2x − y − 6z = −2

 2x + 8y − z = 11
5x − y + z = 10

−x + y + 4z = 3

Utilizando X (0) = (0, 0, 0), decidir si los métodos de Jacobi y de Gauss-Seidel


convergen hacia la solución exacta del sistema.
Capı́tulo 7
Aproximación de valores y
vectores propios

7.1 Introducción
En algunos problemas que aparecen en la Ingenierı́a se plantean importantes
cuestiones que, en términos matemáticos se formulan como sigue:

• Siendo A ∈ Mn (R), determinar para qué valores del parámetro λ ∈ R,


la matriz A − λ · Id es singular.
© ª
• Determinar el comportamiento de la sucesión de vectores Ak · X 0≤k<∞ ,
donde A ∈ Mn (R) y X ∈ Rn .
• ¿Cuál es la interpretación geométrica de una transformación

T : Rn → Rn ,

definida mediante la matriz A ∈ Mn (R)?

En la resolución de tales cuestiones juega un papel fundamental la teorı́a


de los valores y vectores propios de una matriz A ∈ Mn (R). Consecuente-
mente, el cálculo eficiente de los mismos es de suma importancia.

7.2 Preliminares algebraicos


En esta sección haremos un repaso de los principales conceptos relacionados
con la teorı́a de los valores y vectores propios. En lo que sigue, se supondrá
(salvo que se haga referencia explı́cita a otra cosa) que el espacio vectorial
en el que trabajaremos es Rn . Ası́:

125
126CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

n
Definición. Un vector, © Z(1)∈ R , se(k)
pone
ª como combinación lineal de un
conjunto de vectores, X , . . . , X , cuando existen k escalares, λ1 ∈
R, . . . , λk ∈ R, tales que Z = λ1 X + . . . + λk X (k) .
(1)

Definición. Se dice que los vectores X (1) , . . . , X (k) son linealmente indepen-
dientes cuando se verifica la siguiente implicación:

0 = c1 X (1) + . . . + ck X (k) ⇒ c1 = . . . = ck = 0,

para todo c1 , . . . , ck ∈ R. En caso contrario se dirá que son linealmente


dependientes. Obsérvese que una consecuencia trivial es que si un conjunto
de vectores es linealmente dependiente, entonces, existe al menos un vector
del conjunto que puede ponerse como combinación lineal del resto de vectores
de dicho conjunto.
© ª
Definición. Se dice que un conjunto vectores, B = X (1) , . . . , X (k) , es
una base del espacio vectorial Rn cuando son linealmente independientes y
k = n = dim (Rn ). Obsérvese, por otra parte, que todo conjunto de n
vectores de Rn linealmente independientes, son una base.
© ª
Definición. Sea B = X (1) , . . . , X (k) una base. Para todo vector Y ∈ Rn ,
existe un único conjunto de escalares, c1 , . . . , cn , tales que:

Y = c1 X (1) + . . . + cn X (n) .

A dichas constantes se las denomina coordenadas del vector Y en la base B.


Obviamente, un mismo vector posee coordenadas © diferentes respecto
ª a
(1) (n)
distintas bases.ªAsı́, si consideramos las bases B = X , . . . , X
© y B̃ =
(1) (n) n
Y ,... ,Y , de tal forma que las coordenadas de Z ∈ R respecto de
la primera base son (x1 , . . . , xn ), y respecto de la segunda son (y1 , . . . , yn ),
entonces la relación existente entre ellas viene dada por el siguiente sistema
de ecuaciones:


 y1 = a11 x1 + a21 x2 + . . . + an1 xn
..
 .
 y = a x + a x + ... + a x
n 1n 1 2n 2 nn n

donde

X (1) = a11 Y (1) + . . . + a1n Y (n)


..
.
X (n) = an1 Y (1) + . . . + ann Y (n)
7.2. PRELIMINARES ALGEBRAICOS 127

Consecuentemente, cuando hablemos de las coordenadas de un cierto vec-


tor, hemos de indicar explı́citamente la base respecto a la cual las estamos
calculando.
En Rn existe una base privilegiada que se denomina base canónica (o base
estándar ). Es aquella cuyos vectores son:
n ³ ´ ³ ´ ³ ´o
C (1) = 1, 0, (n−1
. . . , 0 , C (2) = 0, 1, 0, , (n−2
. . . , , 0 , . . . , C (n) = 0, (n−1
. . . , 0, 1 .

Cuando no se hace referencia a la base respecto a la cual se están tomando


las coordenadas de un vector, se supone que es la base canónica.

Teorema. Dados los vectores de Rn , X (1) , . . . , X (k) , se verifica lo siguiente:

1. Si k > n, entonces los vectores son linealmente dependientes.

2. Si k = n, entonces los vectores son linealmente dependientes si y sólo


si
¯ (1) (1) ¯
¯ x1 x2 · · · x(1) ¯
¯ (2) (2) n ¯
¯ x (2) ¯
¯ 1 x2 · · · xn ¯
¯ . .. ... .. ¯¯ = 0,
¯ .. . . ¯
¯ (n) (n)
¯ x x ··· x
(n) ¯
1 2 n
³ ´
(i) (i) (i) (i)
siendo X (i) = x1 , . . . , xn = x1 C (1) +. . .+xn C (n) ∈ Rn , 1 ≤ i ≤ n.

Definición. Sea A ∈ Mn (R). Se llama polinómico caracterı́stico de A y se


denota por pA (λ) al polinomio de grado n definido de la siguiente manera:
¯ ¯
¯ a11 − λ a · · · a ¯
¯ 12 1n ¯
¯ a21 a22 − λ · · · a2n ¯¯
¯
pA (λ) = det (A − λ · Id) = ¯ .. .. ... .. ¯
¯ . . . ¯
¯ ¯
¯ an1 an2 · · · ann − λ ¯

Definición. Se denominan valores propios (o autovalores) de A a las raı́ces


de su polinomio caracterı́stico. Dado que dicho polinomio caracterı́stico es
de grado n, existirán n raı́ces (complejas), algunas de las cuales pueden
aparecer repetidas. Consecuentemente, dicho polinomio puede factorizarse
como sigue:

pA (λ) = (−1)n (λ − λ1 )m1 · . . . · (λ − λk )mk , m1 + . . . + mk = n,


128CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

donde λ1 , . . . , λk son las k ≤ n raı́ces distintas de pA (λ). Al número entero


positivo mi se le denomina multiplicidad del autovalor λi .

Observación. Obsérvese que, a partir de una matriz A, hemos calculado su


polinómico caracterı́stico asociado: pA (λ) = det (A − λ · Id). Ahora bien, el
recı́proco también es cierto: A partir de cualquier polinomio:
λn + an−1 λn−1 + . . . + a2 λ2 + a1 λ + a0 = (λ − λ1 )m1 · . . . · (λ − λk )mk ,

podemos calcular la matriz A que lo tiene como polinomio caracterı́stico:


 
0 1 0 ··· 0
 0 0 1 ··· 0 
 
 .. .. .. ... .. 
A= . . . . .
 
 0 0 0 ··· 1 
−a0 −a1 −a2 · · · −an−1

Definición. Si λ es un valor propio de A, entonces a todo vector no nulo


X ∈ Rn tal que A · X = λ · X, se le denomina vector propio de A de valor
propio λ. A los vectores propios también se las llama autovectores. El par
(λ, X) recibirá el nombre de pareja autovalor-autovector de A.

Algunas propiedades interesantes son las siguientes:

Proposición. Sea A una matriz cuadrada. Entonces se verifican las sigu-


ientes propiedades:
1. Si λ es un valor propio de A, entonces p (λ) es un valor propio de
p (A), siendo p (x) un polinomio cualquiera. En particular, λk es un
valor propio de Ak .
2. Si¡ A es¢ no singular ( det (A) 6= 0) y λ es un valor propio de A, entonces
p λ−1 es un valor propio de p (A−1 ), siendo p un polinomio arbitrario.
En particular, λ−1 es un valor propio de A−1 .
3. Si A es una matriz real y simétrica, entonces todos sus valores propios
son reales.
4. Si A es una matriz compleja y hermı́tica1 , entonces todos sus valores
propios son reales.
1
Se dice que una matriz compleja A es hermı́tica si A = A∗ , donde A∗ = Āt , siendo
Ā la matriz cuyos coeficientes son los conjugados de los coeficientes de A, es decir, si
A = (aij )1≤i,j≤n , entonces A∗ = Āt = (āji )1≤i,j≤n .
7.2. PRELIMINARES ALGEBRAICOS 129

5. Si A es una matriz hermı́tica y definido positiva2 , entonces todos sus


valores propios son positivos.

6. Si A es una matriz diagonal o triangular, entonces sus valores propios


son los coeficientes de la diagonal principal.

Estos conceptos estan ı́ntimamente relacionados con el Álgebra Lineal:

Teorema. Sea T : Rn → Rn un endomorfismo cuya matriz en una cierta


base es A ∈ Mn (R). Si λ es un autovalor de A, entonces el conjunto
de todos los autovectores de Rn de valor propio λ es el subespacio vectorial
ker (T − λ · Id).

Como consecuencia, se obtienen los siguientes resultados:

Corolario. Para cada autovalor λ existe un autovector que le corresponde.

Corolario. Si el autovalor λ tiene multiplicidad m, entonces existen como


mucho m autovectores linealmente independientes de valor propio λ, esto es,
dim (ker (T − λ · Id)) ≤ m.

Corolario. Si (λ1 , X1 ) y (λ2 , X2 ) son dos parejas de autovalor-autovector


tales que λ1 6= λ2 , entonces X1 y X2 son linealmente independientes. Es
decir, dos vectores propios con valor propio diferente, son linealmente inde-
pendientes.

Corolario. Si los autovalores de una matriz A, λ1 , . . . , λn , son todos difer-


entes entre sı́, entonces una base de Rn es {X1 , . . . , Xn }, donde Xi es un
autovector de autovalor λi .

Corolario. Sea (λ, X) una pareja autovalor-autovector, entonces (λ, αX) es


otra pareja autovalor-autovector para todo α ∈ R.

Como consecuencia de este último corolario, se puede observar que to-


do múltiplo de un autovector es otro autovector, siendo los valores propios
los mismos. Ası́ pues, con el fin de unificar resultados, normalizaremos los
autovectores usando, o bien la norma l∞ , o bien la norma l2 :
µ ¶ µ ¶
X X
(λ, X) Ã λ, ó λ,
kXk2 kXk∞
2
Recordemos que una matriz, A, es definido positiva si X t · A · X > 0 para todo vector
X 6= 0.
130CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

Desde el punto de vista del Álgebra Lineal, la importancia de los au-


tovalores y autovectores estriba en su utilización en la diagonalización de
endomorfismos. Recordemos que si T : Rn → Rn es un endomorfismo cuya
matriz asociada en una cierta base B, es A, entonces el problema de la di-
agonalización de T consiste en determinar si existe otra base B̃ tal que la
matriz de T respecto a esa otra base sea diagonal. Dicho problema queda
resuelto con el siguiente resultado:
Teorema. Sea T : Rn → Rn un endomorfismo cuya matriz asociada en una
cierta base B, es A. Si el polinomio caracterı́stico de A es
pA (x) = (−1)n (λ − λ1 )m1 · . . . · (λ − λk )mk ,
con m1 + . . . + mk = n, entonces T diagonaliza si y sólo si se verifican las
siguientes dos condiciones:
1. Los autovalores son números reales (no complejos estrictos).
2. Para cada i tal que 1 ≤ i ≤ k, se verifica:
dim [ker (T − λi · Id)] = mi

En caso de diagonalización, la matriz diagonal es


 
λ1 0 ··· ··· ··· ··· 0
 (m1
..
 0 ... ...
.
 
 .. ... ... .. 
 . λ1 . 
 . ... ... ... 
..
D=  ..
,
.
 . ... ... 
..
 .. λk 
.
 
 . ... . . . (mk 
 .. 0 
0 ··· ··· ··· ··· 0 λk
y la base respecto a la cual ésta es la matriz de T está formada por los
autovalores correspondientes. Además, se verifica que
D = C −1 · A · C,
siendo C la matriz de cambio de base.
En este sentido diremos que una matriz A diagonaliza (o es diagonal-
izable), cuando el endomorfismo cuya matriz asociada respecto a las bases
canónicas es A, diagonaliza. Ası́, y como consecuencia del anterior teorema,
se obtienen los siguientes resultados:
Corolario.
7.2. PRELIMINARES ALGEBRAICOS 131

1. Si una matriz A ∈ Mn (R) posee n autovalores distintos, entonces es


diagonalizable.

2. Si A ∈ Mn (R) es una matriz simétrica, entonces es diagonalizable.

Definición. Dos matrices, A y B, se dice que son semejantes (o similares)


cuando existe una tercera matriz no singular, P , tal que B = P · A · P −1 .
Obsérvese que si A fuera una matriz diagonal, entonces estarı́amos diciendo
que B es diagonalizable.

Se verifica el siguiente resultado:

Teorema. Dos matrices semejantes poseen los mismos valores propios.

Definición. Dos matrices, A y B, se dice que son unitariamente semejantes


cuando existe una tercera matriz no singular y unitaria3 , U, tal que B =
U · A · U ∗.

El teorema anterior sugiere una estrategia para encontrar los valores pro-
pios de una matriz A: basta con encontrar una matriz semejante a ella, B,
cuya estructura sea mucho más adecuada para calcular dichos valores pro-
pios. En particular, si B es una matriz diagonal o triangular, el cálculo de
los valores propios es inmediato pues, como sabemos, no son más que los
coeficientes de la diagonal principal. De esta manera se verifica el siguiente
resultado:

Teorema de Schur. Toda matriz A ∈ Mn (C) es unitariamente semejante


a una matriz triangular T . Es decir, existe una matriz unitaria y no singular,
U, tal que T = U · A · U ∗ .

Como consecuencia se obtiene:

Colorario.

1. Toda matriz real A ∈ Mn (R) es semejante a una matriz triangular


superior, T . Es decir, existe una matriz no singular, P , y una matriz
triangular superior, T , cuyos coeficientes diagonales son los autovalores
de A, tales que T = P · A · P −1 .
3
Recordemos que una matriz, U , es unitaria cuando U · U ∗ = Id, o lo que es lo mismo,
cuando kU · Xk2 = kXk2 , para todo vector X ∈ Rn .
132CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

2. Toda matriz hermı́tica A ∈ Mn (C) es unitariamente semejante a una


matriz diagonal, D. Es decir, existe una matriz unitaria, U, y una
matriz diagonal, D, cuyos coeficientes diagonales son los autovalores
de A, tales que D = U · A · U ∗ .

Ejemplo 51. Calcular la factorización de Schur de la siguiente matriz:


 
361 123 −180
A =  148 414 −240  ,
−92 169 65

El polinomio caracterı́stico de la matriz A es

pA (x) = −x3 + 840x2 − 205625x + 14531250


= − (x − 125) (x − 465) (x − 250) .

Entonces, su factorización de Schur es T = U · A · U ∗ , donde:


   
0.36 0.48 0.80 125 380 −125
U =  0.48 0.64 −0.60  , T =  0 465 125  .
0.80 −0.60 0.00 0 0 250

La mayor parte de los métodos numéricos para encontrar los valores


propios de una matriz A ∈ Mn (C), utilizan los resultados anteriormente
descritos. Por ejemplo, si conocemos un valor propio, λ, de la matriz A,
entonces mediante un proceso de deflación es posible calcular una matriz
à ∈ Mn−1 (C), cuyos valores propios son los mismos que los de A, con ex-
cepción de λ. El citado proceso de deflación se puede aplicar nuevamente a
à para obtener de esta manera tantos valores propios de A como se deseen.
El proceso de deflación consiste en lo siguiente:

1. Calculemos un vector propio, X, cuyo valor propio sea λ.

2. Calculemos α y β, tales que:



 X , si X 6= 0

β = |X|

 1, si X = 0

2
α = ° °
³ ´° .
°
(n−1
°X − β · 1, 0, . . . , 0 °
2
7.2. PRELIMINARES ALGEBRAICOS 133

3. Calculemos la matriz U = Id − V · V ∗ , donde


³ ³ ´´
V = α X − β · 1, 0, (n−1... ,0 .

4. La matriz à buscada se obtiene de U · A · U ∗ , al omitir la primera fila


y la primera columna.

En algunas ocasiones es necesario determinar de manera aproximada


dónde se encuentran (en el plano complejo) los valores propios de una cierta
matriz, A. El más famoso de los denominados teoremas de localización, es el
siguiente:

Teorema de Gershgorin. El espectro de una matriz A ∈ Mn (C), es decir,


el conjunto de sus valores propios, está contenido en la unión de n discos,
D1 , . . . , Dn , en el plano complejo, donde:
( )
X n
Di = z ∈ C : |z − aii | ≤ |aij | , 1 ≤ i ≤ n.
j=1,j6=i

P
n
Obsérvese que cada disco Di es un cı́rculo de centro aii y radio |aij |.
j=1,j6=i
A estos discos se les denomina cı́rculos de Gershgorin.
Además se verifica también que la unión de cualesquiera k de estos dis-
cos que no corte a los (n − k) restantes contendrá exactamente k (contando
multiplicidades) de los valores caracterı́sticos.

Ejemplo 52. Calcular los cı́rculos de Gershgorin de la siguiente matriz:


 
−1 + i 0 1/4
A =  1/4 1 1/4  ,
1 1 3

Un simple cálculo nos muestra que dichos cı́rculos son:


½ ¯ ¯¾
¯1¯
D1 = z ∈ C : |z − (−1 + i)| ≤ |0| + ¯¯ ¯¯ = {z ∈ C : |z − (−1 + i)| ≤ 1/4} ,
4
½ ¯ ¯ ¯ ¯¾
¯1¯ ¯1¯
D2 = z ∈ C : |z − 1| ≤ ¯¯ ¯¯ + ¯¯ ¯¯ = {z ∈ C : |z − 1| ≤ 1/2} ,
4 4
D3 = {z ∈ C : |z − 3| ≤ |1| + |1|} = {z ∈ C : |z − 3| ≤ 2} .
134CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

Consecuentemente podemos afirmar que todo valor propio, λ, de dicha


matriz deben satisfacer la siguiente desigualdad: 0.5 ≤ λ ≤ 5. De hecho, los
valores propios de la matriz A son 3.18 + 0.01i, −1.05 + 0.99i, 0.88 − 0.003i,
de tal manera que cada uno de ellos está en un cı́rculo, al menos.

En muchas aplicaciones de la Ingenierı́a aparecen involucradas matrices


simétricas, Sn (C). Antes de mostrar algunos de los resultados relacionados
con las mismas, veamos algunos resultados algebraicos de interés:

Definición. Se dice que los vectores X (1) , . . . , X (k) son ortogonales cuando
X (i) • X (j) = 0, i 6= j,
(i) (j) (i) (j)
siendo X (i) • X (j) = x1 x1 + . . . + xn xn el producto escalar de X (i) por
X (j) .
(1)
Definición. Se dice que los vectores X
° (i) , .°. . , X (k) son ortonormales cuando
son ortogonales y de norma unidad: °X ° = 1 para todo i.

Teorema. Si X (1) , . . . , X (k) son ortonormales, entonces son linealmente


independientes.

Definición. Una matriz A ∈ Mn (C) es ortogonal si At = A−1 , o equivalen-


temente A · At = Id.

Entonces se verifica que:

Teorema espectral (Teorema de los ejes principales). Si A ∈ Sn (R)


entonces existe una matriz ortogonal K tal que D = K −1 · A · K, siendo D
la matriz diagonal cuyos coeficentes son los autovalores de A.

Corolario. Si A ∈ Sn (R) entonces existen n autovectores linealmente in-


dependientes de A que son ortogonales. Es más, los autovectores correspon-
dientes a autovalores distintos son ortogonales.
7.3. LOS MÉTODOS DE LAS POTENCIAS 135

Teorema. La matriz A ∈ Sn (C) es definida positiva si y sólo si todos sus


autovalores son positivos.

Teorema del radio espectral. Sea A ∈ Sn (R), entonces

ρ (A) = max {|λ1 | , . . . , |λn |} = kAk2 .

Ejercicios Propuestos

Ejercicio 1. Calcular los discos de Gershgorin de la siguiente matriz:


 
1 3 4 −1
 3 7 −6 1 
A=
 4 −6 3

0 
−1 1 0 5

y deducir alguna caracterı́stica de los valores propios de A.

Ejercicio 2. Calcular los discos de Gershgorin de la siguiente matriz:


 
4 1 1
A= 0 2 1 
−2 0 9

y deducir alguna caracterı́stica de los valores propios de A.

7.3 Los métodos de las potencias


El método de las potencias es un método iterativo que, en ciertas condiciones,
da lugar a una secuencia de números convergentes a un valor propio de la
matriz considerada.
Sea A ∈ Mn (C) tal que λ1 , . . . , λn son sus n valores propios (puede
haber alguno repetido), de tal forma que |λ1 | > |λ2 | ≥ |λ3 | ≥ . . . ≥ |λn |. Sea
{U1 , . . . , Un } una base de Cn formada por vectores propios, tal que Ui es un
vector propio asociado al valor propio λi .
136CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

7.3.1 El método de la potencia


El objetivo del método de las potencias es calcular el único valor propio de
módulo máximo (es decir, el valor propio dominante) de la matriz A y un
vector propio asociado.
Ası́, si X (0) ∈ Cn es un vector propio arbitrario, entonces podemos es-
cribir:
X (0) = µ1 U1 + . . . + µn Un ,
donde podemos suponer (sin pérdida de generalidad) que µ1 6= 0. Además,
como sabemos que todo múltiplo de un vector propio es otro vector propio
del mismo valor propio, entonces podemos poner (renombrando los vectores):
X (0) = U1 + . . . + Un . (7.1)
Si calculamos la secuencia de vectores:
X (1) = A · X (0) ,
X (2) = A · X (1) = A2 · X (0) ,
···
(k)
X = A · X (k−1) = Ak · X (0) ,
···
de tal forma que teniendo en cuenta (7.1), se obtiene:
X (k) = Ak · X (0) = Ak · (U1 + . . . + Un )
= Ak · U1 + . . . + Ak · Un
= λk1 · U1 + . . . + λkn · Un ,
de donde, como suponemos λ1 6= 0, se tiene:
" µ ¶k µ ¶k #
λ2 λn
X (k) = λk1 U1 + U2 + . . . + Un .
λ1 λ1

Ahora, como |λ1 | > |λj | para todo j > 1, entonces |λj | / |λ1 | = |λj /λ1 | < 1,
de donde:
µ ¶k
λj
lim = 0, ∀j > 1.
k→∞ λ1

Consecuentemente, podemos poner:


£ ¤ ¡ ¢
X (k) = λk1 U1 + ε(k) , donde lim ε(k) = 0.
k→∞
7.3. LOS MÉTODOS DE LAS POTENCIAS 137

Por otro lado, si ϕ : Cn → C es un homomorfismo, entonces es claro que:


¡ ¢ £ ¡ ¢¤
ϕ X (k) = λk1 ϕ (U1 ) + ϕ ε(k) ,

de donde, definiendo:
¡ ¢ ¡ ¢
ϕ X (k+1) ϕ (U1 ) + ϕ ε(k+1)
rk = = λ1 ,
ϕ (X (k) ) ϕ (U1 ) + ϕ (ε(k) )

se tiene que

lim (rk ) = λ1 .
k→∞

Consecuentemente, podemos calcular el valor propio dominante de A com-


putando el lı́mite de la secuencia {rk }k≥1 .
Usualmente se suelen normalizar los vectores X (k) utilizando la norma
infinito4 , de tal forma que

X (k)
X (k+1) = A · .
kX (k) k∞

Finalmente, a partir de la secuencia {rk }k≥1 , podemos construir otra se-


cuencia, {sk }k≥3 , mediante la fórmula de aceleración de Aitken:

(rk − rk−1 )2
sk = rk − ,
rk − 2rk−1 + rk−2

que converge a λ1 mucho más rápido que la primera.

Ejemplo 53. Calcular el valor propio dominante de la siguiente matriz:


 
6 5 −5
A =  2 6 −2 
2 5 −1

utilizando para ello X (0) = (−1, 1, 1) y ϕ (z1 , z2 , z3 ) = z2 .

Mediante un simple cálculo podemos construir la siguiente tabla:


4
Recordemos que la norma infinito se define como sigue: si X = (x1 , . . . , xn ), entonces:

kXk∞ = max {|x1 | , . . . , |xn |} .


138CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

i X (i) ri−1 si−1


0 (−1, 1, 1)
1 (−1, 0.3333, 0.3333) 2
2 (−1, −0.1111, −0.1111) −2
3 (−1, 0.4074, −0.4074) 22
4 (−1, −0.6049, −0.6049) 8.9091 13.5294
5 (−1, −0.7366, −0.7366) 7.3061 7.0825
6 (−1, −0.8244, −0.8244) 6.7151 6.3699
.. .. .. ..
. . . .
26 (−1, −0.9999, −0.9999) 6.0001 6.0000
27 (−1, −1, −1) 6.0001 6.0000
28 (−1, −1, −1) 6.0000 6.0000
.. .. .. ..
. . . .

Consecuentemente se obtiene como resultado que el valor propio domi-


nante es 6. En la siguiente figura se puede obervar como la secuencia {sk }k≥3
converge más rápidamente que la secuencia {rk }k≥1 .

Obsérvese que el vector propio de valor propio 6 obtenido es (−1, −1, −1),
ó si se prefiere, (1, 1, 1).

7.3.2 El método de la potencia inversa


Es posible calcular otros valores propios de la matriz A realizando modifica-
ciones al método de la potencia. Por ejemplo, sabemos que si la matriz A es
invertible y λ es un valor propio de A, entonces λ−1 es valor propio de A−1 .
7.3. LOS MÉTODOS DE LAS POTENCIAS 139

Entonces, si λ es el valor propio más pequeño (en módulo) de A, λ−1 es el


valor propio más grande (en módulo) –es decir, el valor propio dominante–
de la matriz A−1 ; consecuentemente aplicando el método de la potencia a la
matriz A−1 podemos calcular el valor propio más pequeño (en módulo) de la
matriz A.

Ejemplo 54. Calcular el valor propio más pequeño (en módulo) de la sigu-
iente matriz:
 
4 −1 1
A =  −1 3 −2  .
1 −2 3

La matriz considerada es no singular ya que |A| = 1/24 6= 0. Además la


matriz inversa es:
 5 1 −1 
18 18 18
 
A −1
=

1
18
11
18
7
18
.

−1 7 11
18 18 18

Pues bien, aplicando el método de la potencia a la matriz A−1 , partiendo del


vector X (0) = (1, 1, 0) y del endomorfismo ϕ (z1 , z2 , z3 ) = z2 , se obtiene la
siguiente tabla:

i X (i) ri−1 si−1


0 (1, 1, 0)
1 (0.5, 1, 0.5) 0.6666
2 (0.2, 1, 0.8) 0.8333
3 (0.0714, 1, 0.9268) 0.9333 1.0833
4 (0.0244, 1, 0.9756) 0.9762 1.0083
5 (0.0082, 1, 0.9918) 0.9919 1.0009
.. .. .. ..
. . . .
15 (4.646 · 10−8 , 1, 1) 0.9999 1.0000
.. .. .. ..
. . . .

de donde se deduce que el valor propio dominante de A−1 es λ = 1, y conse-


cuentemente, el valor propio de menor magnitud (en módulo) de A es 1−1 = 1.
Además el vector propio asociado será el (0, 1, 1).

Observación. A la hora ©de aplicar


ª el método de la potencia a la matriz A−1 ,
la sucesión de vectores X (k) k≥0 se calcula mediante la siguiente fórmula:
140CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

k
X (k) = (A−1 ) · X (k−1) , de tal forma que es necesario calcular explı́citamente
el valor de A−1 . No obstante, este hecho se podrı́a evitar de la siguiente
k
manera: la ecuación X (k) = (A−1 ) · X (k−1) es equivalente a la ecuación
Ak · X (k) = X (k−1) , y el cálculo del vector X (k) puede resultar más sencillo si
resolvemos este sistema. Para ello, basta con calcular la factorización LU de
la matriz A: A = L · U, y resolver el sistema:

U · X (k+1) = L−1 · X (k) .

7.3.3 Los métodos de la potencia desplazada y de la


potencia inversa desplazada
Es posible calcular otros valores propios de la matriz A aparte de los de
máxima y mı́nima magnitud.
Supongamos en primer lugar que queremos calcular el valor propio de A,
λj , que está más alejado de un cierto número µ (esto es, |λj − µ| > |λi − µ|
para todo i 6= j). Entonces si consideramos la matriz desplazada A − µ · Id y
aplicamos el método de la potencia, obtendremos su valor propio dominante:
λj − µ. Consecuentemente, sumando µ a esta cantidad, obtenemos el valor
de λj .

Ejemplo 55. Calcular el valor propio de la siguiente matriz más alejado del
2.
 
6 5 −5
A =  2 6 −2  .
2 5 −1

Un simple cálculo nos muestra que:

 
4 5 −5
A − 2 · Id =  2 4 −2  ,
2 5 −3

y aplicando el método de la potencia a esta matriz, obtenemos la siguiente


tabla:
7.3. LOS MÉTODOS DE LAS POTENCIAS 141

i X (i) ri−1 si−1


0 (2, 2, 1)
1 (1, 0.7692, 0.8462) 5
2 (1, 0.9362, 0.9149) 4.4
3 (1, 0.9534, 0.9585) 4.1818 4.0571
4 (1, 0.9804, 0.9791) 4.0869 4.0139
5 (1, 0.9893, 0.9896) 4.0425 4.0034
.. .. .. ..
. . . .
13 (1, 1, 1) 4.0001 4.0000
.. .. .. ..
. . . .

Consecuentemente, el valor propio más alejado del 2 es el 4 + 2 = 6.

Por otro lado, podemos también calcular el valor propio de la matriz A,


λj , más cercano a un determinado número µ (esto es, |λj − µ| < |λi − µ|
para todo i 6= j). Ası́, para ello basta con que se aplique el método de la
potencia inversa a la matriz A − µ · Id.

Ejemplo 56. Calcular el valor propio de la siguiente matriz más cercano a


−4.
 
−57 192 148
A =  20 −53 −44  .
−48 144 115

Un sencillo cálculo nos muestra que:


 −505 1536 1196

77 77 77
 
(A + 4 · Id)−1 = 

268
77
−797
77
−628
77
.

−48 144 113
7 7 7

Entonces aplicando el método de la potencia se obtiene que el valor propio


dominante de la matriz (A + 4 · Id)−1 es −1, con lo que el valor propio que
estamos buscando será −5.

Ejercicios Propuestos
142CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

Ejercicio 1. Calcular algunos de los valores propios de las siguientes matri-


ces:
 
2 3 4
A =  7 −1 3  ,
1 −1 5
 
5 4 1 1
 4 5 1 1 
B =   1 1 4 2 .

1 1 2 4

Ejercicio 2. Calcular los valores propios de la matriz


 
−57 192 148
A =  20 −53 −44 
−48 144 115

que se encuentran más cercanos a 2 y 8.

7.4 Cálculo de los valores propios de matrices


simétricas
Hay un gran número de problemas en la Ingenierı́a y en la Matemática Apli-
cada que involucran el cálculo de los valores propios de una determinada
matriz simétrica. Consecuentemente se han desarrollado métodos especı́ficos
para tal fin. Ası́, nosotros veremos tres de ellos: el método de Jacobi, el
método de Householder y el algoritmo QR. Empezaremos por el primero de
ellos.

7.4.1 El método de Jacobi


Mediante el método de Jacobi es posible calcular todas las parejas autoval-
or/autovector de una determinada matriz simétrica. Es un método bastante
fiable que se muestra muy eficaz para matrices de orden menor o igual 10, y
aceptable para matrices de orden no superior a 20.
Antes de mostrar el método propiamente dicho, hemos de introducir al-
gunos conceptos teóricos.
7.4. CÁLCULO DE LOS VALORES PROPIOS DE MATRICES SIMÉTRICAS143

Rotaciones planas
Sea X un vector de un espacio vectorial n-dimensional (básicamente, Rn ó
Cn ). Consideremos la aplicación lineal dada por la expresión Y = R · X,
donde R es la siguiente matriz de orden n:
 
1 ··· 0 ··· 0 ··· 0
 .. .. .. .. 
 . . . . 
 
 0 · · · cos (φ) · · · sen (φ) · · · 0  ← fila p
 . .. .. .. 
R=  . . . . . 
 0 · · · −sen (φ) · · · cos (φ) · · · 0  ← fila q
 
 . .. .. .. 
 .. . . . 
0 ··· 0 ··· 0 ··· 1
↑ col. p ↑ col. q
Hay que destacar que en la matriz R, todos los coeficientes que se encuentran
fuera de la diagonal principal son nulos salvo los de las posiciones (p, q) y
(q, p) que toman los valores sen (φ) y −sen (φ), respectivamente. Además,
todos los términos de la diagonal son 1 salvo los que se encuentran en las
posiciones (p, p) y (q, q), cuyo valor es cos (φ).
Si escribimos Y = (y1 , . . . , yn ), X = (x1 , . . . , xn ), la anterior transforma-
ción es como sigue:

 yj = xj , si j 6= p, j 6= q
yp = xp cos (φ) + xq sen (φ)

yq = −xp sen (φ) + xq cos (φ)
Obsérvese que dicha aplicación lineal es una rotación de ángulo φ en el plano.
Eligiendo de manera adecuada dicho ángulo podemos conseguir que yp = 0
ó yq = 0. Consecuentemente a toda matriz R de la anterior forma se la
denomina matriz de rotación de ángulo φ.
Por otra parte, es fácil ver que R−1 = RT (es decir, RT R = Id), con lo
que R es una matriz ortogonal. En consecuencia, existe aplicación inversa:
X = R−1 Y , que es una rotación de ángulo −φ en el plano.

Semejanza de matrices y transformaciones ortogonales


Sabemos que λ es valor propio de la matriz de orden n, A, cuando A·X = λX.
• Supongamos que K es una matriz no singular y consideremos B =
K −1 · A · K. Entonces es fácil ver que
B · K −1 · X = K −1 · A · X = λK −1 · X.
144CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

Si hacemos el cambio de variable Y = K −1 · X, nos queda:


B · Y = λY.
Como se puede observar, λ es valor propio también de B aunque con
vector propio Y (el vector propio X se puede calcular sin más que
aplicar el cambio de variable anteriormente descrito).
• Por otro lado consideremos una matriz R ortogonal, esto es R−1 = RT .
Sea C = RT · A · R, entonces un simple cálculo nos muestra que:
C · RT · X = RT · A · X = λRT · X.
Si hacemos el camnio de variable Y = RT · X, obtenemos:
C · Y = λY.
Al igual que en el caso anterior λ es valor propio tanto de A como
de la matriz C. No obstante en este caso el problema del cálculo del
vector propio X es más sencillo pues en el cambio de variable hemos
de trasponer una matriz (y no invertirla como en el caso anterior).
Obsérvese que si, además A es una matriz simétrica, entonces C tam-
bién es una matriz simétrica ya que:
¡ ¢T ¡ ¢T
C T = RT · A · R = RT · AT · RT = RT · A · R = C.
Por lo tanto si A es una matriz simétrica y R es una matriz ortogonal,
entonces la transformación de A en C dada por la expresión C = RT ·A·
R conserva la simetrı́a y los valores propios, viniendo dada la relación
entre los vectores propios por el cambio de variables Y = RT · X.

El método de Jacobi
Consideremos una matriz simétrica A. A partir de ella construiremos una
sucesión de matrices de rotación {Ri }i≥1 mediante la cual se definirá una
nueva sucesión de matrices, {Di }i≥0 , satisfaciendo las siguientes condiciones:
½
D0 = A
Di = RiT · Di−1 · Ri , i ≥ 1
 
λ1 0 ··· 0
 ... .. 
 0 λ2 . 
lim Di = D =  .. ... ... ,
i→∞  . 0 
0 ··· 0 λn
7.4. CÁLCULO DE LOS VALORES PROPIOS DE MATRICES SIMÉTRICAS145

donde λ1 , . . . , λn son los valores propios de la matriz A.


En consecuencia, haciendo el lı́mite en el infinito, obtendrı́amos el valor
exacto de los valores propios de la matriz A. No obstante, en la práctica
los valores propios aproximados que se toman son los elementos de la di-
agonal principal de la matriz Dk , cuando los coeficientes de la misma no
pertenecientes a dicha diagonal principal son lo suficientemente cercanos a
cero. De esta manera, Dk ≈ D.
Además, este método nos permite calcular los vectores propios asociados
a dichos valores propios. Ası́, obsérvese que
Dk = RkT · Rk−1
T
· . . . · R1T · A · R1 · . . . · Rk−1 · Rk .
Q
Si denotamos R = ki=1 Ri , entonces Dk = R−1 · A · R, con lo que
A · R = R · Dk ≈ R · D.
Ahora bien, si suponemos que las n columnas de R son n vectores: X1 , . . . , Xn ,
esto es, R = (X1 , . . . , Xn ), entonces de la anterior igualdad se sigue que
A · Xj ≈ λXj para todo 1 ≤ j ≤ n, con lo que la columna j-ésima de la ma-
triz R es una aproximación del vector propio correspondiente al valor propio
λj .
Una vez que hemos visto cómo se construyen aproximaciones a los valores
y vectores propios, veamos cómo podemos construir las matrices Di .
El método de Jacobi es un algoritmo ³ iterativo
´ de tal forma que en el
(i)
paso i-ésimo se calcula una matriz Di = djk a partir de una matriz
³ ´
1≤j,k≤n
(i−1)
de rotación Ri y de la matriz Di−1 = djk obtenida en el paso
1≤j,k≤n
anterior.
Básicamente, el objetivo que se persigue en cada paso es reducir a cero
dos de los términos simétricos que están fuera de la diagonal principal de
la matriz Di−1 , por ejemplo los términos que ocupan las posiciones (p, q) y
(q, p), para conseguir ası́ la matriz Di . Para ello bastará con buscar la matriz
de rotación Ri adecuada de tal forma que Di = RiT · Di−1 · Ri , donde
 
1 ··· 0 ··· 0 ··· 0
 .. .. .. .. 
 . . . . 
 
 0 · · · a · · · b · · · 0  ← fila p
 . .. .. .. 
Ri = 
 .. . . . 

 0 · · · −b · · · a · · · 0  ← fila q
 
 . . . . 
 . . .
. .
. .
. 
0 ··· 0 ··· 0 ··· 1
↑ col. p ↑ col. q
146CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

siendo a = cos (φ) y b = sen (φ). Recuérdese que todos los elementos de la
diagonal principal de Ri son 1 salvo los que se encuentran en las posiciones
(p, p) y (q, q) que toman el valor a; además, todos los coeficientes de la
matriz Ri que están fuera de la diagonal principal son nulos salvo los que
se encuentran en las posiciones (p, q) y (q, p) que toman los valores b y −b
respectivamente.
Un sencillo argumento nos muestra que al computar RiT ·Di−1 ·Ri , la matriz
que se obtiene (que es Di ) posee los mismos coeficientes que la matriz Di−1
salvo los que se encuentran en las filas p-ésima, q-ésima, y en las columnas
p-ésima y q-ésima. Es más, se verifican las siguientes igualdades:
(i) (i)
djk = dkj , ∀j, k
(i) (i−1)
djk = djk , j 6= p, q, k 6= p, q
(i) (i−1) (i−1)
djp = adjp − bdjq , j 6= p, q
(i) (i−1) (i−1)
djq = adjq + bdjp , j 6= p, q (7.2)
(i) (i−1) (i−1) (i−1)
dpp = a2 dpp + b2 dqq − 2abdpq
(i) (i−1) (i−1) (i−1)
dqq = b2 dpp + b2 dqq + 2abdpq
³ ´
(i) 2 2 (i−1) (i−1) (i−1)
dpq = (a − b ) dpq + ab dpp − dqq

¿Cómo tiene que ser la matriz Ri para conseguir lo buscado?, es decir,


(i) (i)
dicho de otro modo, ¿cómo han de ser a y b para que dpq = dqp = 0?
Pues bien, como a = cos (φ) y b = sen (φ), hemos de buscar un ángulo φ
que produzca el efecto deseado. Ası́ un sencillo cálculo nos muestra que
a2 − b2
θ = cot (2φ) = .
2ab
(i) (i−1)
Como dpq = 0, suponiendo que dpq 6= 0, entonces de la última ecuación de
(7.2) se obtiene:
(i−1) (i−1)
a2 − b2 dqq − dpp
= (i−1)
= 2θ.
ab dpq
Por otro lado, considerando
b
t = tan (φ) = ,
a
entonces se consigue
1 − t2
θ= ⇒ t2 + 2θt + 1 = 0.
2t
7.4. CÁLCULO DE LOS VALORES PROPIOS DE MATRICES SIMÉTRICAS147

Dado que t = tan (φ), la menor de las raı́ces de la anterior ecuación corre-
sponde al menor ángulo φ que podemos tomar cumpliendo |φ| < π/4. La
forma especial que tiene la anterior ecuación de segundo grado nos permite
trabajar con la siguiente fórmula para hallar la menor de sus raı́ces:

p sign (θ)
t = −θ ± θ2 + 1 = p ,
|θ| + θ2 + 1

donde

½
1, si θ ≥ 0
sign (θ) =
−1, si θ < 0

Una vez que conocemos el valor de t, podemos calcular a y b sin más que
aplicar las siguientes fórmulas:

1
a = √ ,
t2 + 1
b = at.

(i)
En resumidas cuentas, para anular el elemento dpq (y, por simetrı́a, el
(i) (i−1)
coeficiente dqp ) hay que elegir la fila p y la columna q de manera que dpq 6=
0; posteriormente se determinan los siguientes valores preliminares:

(i−1) (i−1)
dqq − dpp
θ = (i−1)
,
2dpq
sign (θ)
t = p ,
|θ| + θ2 + 1
1
a = √ ,
2
t +1
b = at.

³ ´
(i)
Finalmente para determinar todos los coeficientes de la matriz Di = djk ,
1≤j,k≤n
148CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

se aplican las siguientes fórmulas:


(i) (i)
djk = dkj , ∀j, k
(i) (i−1)
djk = djk , j 6= p, q, k 6= p, q
(i) (i−1) (i−1)
djp = adjp − bdjq , j 6= p, q
(i) (i−1) (i−1)
djq = adjq + bdjp , j 6= p, q
(i) (i−1) (i−1) (i−1)
dpp = a2 dpp + b2 dqq − 2abdpq
(i) (i−1) (i−1) (i−1)
dqq = b2 dpp + b2 dqq + 2abdpq
³ ´
(i) (i−1) (i−1) (i−1)
dpq = (a2 − b2 ) dpq + ab dpp − dqq

(i)
Obsérvese que anteriormente hemos dicho que anulamos el término dpq
(i−1)
para el que dpq 6= 0. Ahora bien, para ser rigurosos no podemos elegir
uno de tales coeficientes al azar sino que, para garantizar la convergencia del
método, hemos de tener en cuenta una serie de condiciones.
La velocidad de convergencia del método de Jacobi se estima mediante
la suma de los cuadrados de los elementos que no pertenecen a la diagonal
principal. Ası́, tendremos las siguientes dos magnitudes:
n ¯
X ¯ n ¯
X ¯
¯ (i−1) ¯2 ¯ (i) ¯2
Si−1 = ¯djk ¯ , Si = ¯djk ¯ .
j,k=1 j,k=1
j6=k j6=k

Es fácil ver que la sucesión {Si }i≥0 es monótona decreciente y acotada infe-
riormente por el cero.
(i)
En el algoritmo original debido a Jacobi (1846), el elemento dpq que debe-
mos anular es el elemento no perteneciente a la diagonal principal que tiene
mayor valor absoluto, con lo que se ha de calcular el siguiente valor
©¯ (i−1) ¯ ª
max ¯dpq ¯ tal que p < q .

Mediante esta elección se garantiza que lim Si = 0, y en consecuencia el


i→∞
cálculo de los valores y los vectores propios se aproxima hacia los valores
exactos.
Ahora bien, este método se vuelve poco eficiente cuando el orden de la
matriz A es alto debido al gran número de comparaciones que hay que hacer
(del orden de (n2 − n) /2 comparaciones).
Un método un poco más eficiente es el denominado método de Jacobi
cı́clico que consiste en ir eliminando los elementos por orden estricto de filas.
7.4. CÁLCULO DE LOS VALORES PROPIOS DE MATRICES SIMÉTRICAS149

Se elige un valor ε para la tolerancia, se hace un barrido de toda la matriz


(i−1)
y si se encuentra un elemento dpq de mayor tamaño que ε, entonces se
elimina. En cada barrido se empieza por los elementos de la primera fila:
(i−1) (i−1) (i−1) (i−1)
d12 , . . . , d1n ; luego los de la segunda: d23 , . . . , d2n ; y ası́ sucesiva-
mente. Puede probarse que la convergencia de ambos métodos de Jacobi, el
original y el cı́clico, es cuadrática. Para utilizar el método cı́clico hay que
tener en cuenta que la suma de los cuadrados de los elementos de la diagonal
se va incrementando en cada iteración; es decir, si
n ¯
X ¯
¯ (i−1) ¯2
Ti−1 = ¯djj ¯ ,
j=1

entonces
¯ (i−1) ¯2
Ti = Ti−1 + 2 ¯dpq ¯ .

En consecuencia, la sucesión {Dj }j≥0 tenderá hacia D. Obsérvese que el


tamaño medio de un elemento de la diagonal principal puede calcularse me-
diante la fórmula
r
Ti−1
,
n
y que los tamaños de los elementos que se encuentran fuera de la diagonal
principal deben compararse con
r
Ti−1
ε ,
n
(i−1)
siendo ε la tolerancia fijada de antemano. Por tanto, eliminaremos dpq si
se cumple que
r
¯ (i−1) ¯
¯dpq ¯ > ε Ti−1 .
n
Ejemplo 57. Calcular los valores propios de la siguiente matriz:
 
1 1 2
A =  1 2 −1  .
2 −1 3

En la realización de este ejercicio utilizaremos el algoritmo original de


Jacobi para la determinación del elemento (p, q) a anular.
150CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS
n¯ ¯ ¯ ¯ ¯ ¯o
¯ (0) ¯ ¯ (0) ¯ ¯ (0) ¯
• Ası́, en primer lugar, sea D0 = A. Dado que max ¯d12 ¯ , ¯d13 ¯ , ¯d23 ¯ =
¯ ¯
¯ (0) ¯
¯d13 ¯ = 2, entonces tendremos p = 1, q = 3, con lo que hemos de hacer
(1) (1)
d13 = d31 = 0. Calculando los distintos parámetros obtenemos:
(0) (0)
d33 − d11 3−1 1
θ = (0)
= = ,
2d13 4 2
sign (θ) 1
t = p = q ' 0.618034,
|θ| + θ2 + 1 1
2
+ 54
1
a = √ ' 0.850651,
2
t +1
b = at ' 0.5257.
En consecuencia
 
0.850651 0 0.525731
R1 =  0 1 0 ,
−0.525731 0 0.850651
y, por lo tanto
 
−0.236068 1.37638 0.000000
D1 = R1T · D0 · R1 =  1.37638 2 −0.32492  .
0.000000 −0.32492 4.23607
n¯ ¯ ¯ ¯ ¯ ¯o ¯ ¯
¯ (1) ¯ ¯ (1) ¯ ¯ (1) ¯ ¯ (1) ¯
• Seguidamente, como max ¯d12 ¯ , ¯d13 ¯ , ¯d23 ¯ = ¯d12 ¯ = 1.37638, en-
(2) (2)
tonces tendremos p = 1, q = 2, con lo que hemos de hacer d12 = d21 =
0. Calculando los distintos parámetros obtenemos:
θ = 0.812299, t ' 0.476045, a ' 0.902912, b ' 0.429826.
En consecuencia
 
0.902912 0.429826 0
R2 =  −0.429826 0.902912 0  ,
0 0 1
y
 
−0.891287 0.000000 0.139659
D2 = R2T · D1 · R2 =  0.000000 2.65522 −0.293374  .
0.139659 −0.293374 4.23607
7.4. CÁLCULO DE LOS VALORES PROPIOS DE MATRICES SIMÉTRICAS151
n¯ ¯ ¯ ¯ ¯ ¯o ¯ ¯
¯ (2) ¯ ¯ (2) ¯ ¯ (2) ¯ ¯ (2) ¯
• Dado que max ¯d12 ¯ , ¯d13 ¯ , ¯d23 ¯ = ¯d23 ¯ = 0.293374, entonces ten-
(3) (3)
dremos p = 2, q = 3, con lo que hemos de hacer d23 = d32 = 0.
Calculando los distintos parámetros obtenemos:

θ = −2.69426, t ' −0.179594, a ' 0.984253, b ' −0.176766.

En consecuencia
 
1 0 0
R3 =  0 0.984253 −0.176766  ,
0 0.176766 0.984253
y
 
−0.891287 0.024687 0.13746
D3 = R3T · D2 · R3 =  0.024687 2.65522 0.000000  .
0.13746 0.000000 4.28876
n¯ ¯ ¯ ¯ ¯ ¯o ¯ ¯
¯ (3) ¯ ¯ (3) ¯ ¯ (3) ¯ ¯ (3) ¯
• Como max ¯d12 ¯ , ¯d13 ¯ , ¯d23 ¯ = ¯d13 ¯ = 0.13746, entonces tendremos
(4) (4)
p = 1, q = 3, con lo que hemos de hacer d13 = d31 = 0. Calculando
los distintos parámetros obtenemos:

θ = 18.8420, t ' 0.026518, a ' 0.999649, b ' 0.026508.

En consecuencia
 
0.999649 0 0.026508
R4 =  0 1 −0.176766  ,
−0.026508 0 0.999649
y
 
−0.894932 0.0246783 0.000000
D4 = R4T · D3 · R4 =  0.0246783 2.60253 0.000654  .
0.000000 0.000654 4.2924

Consecuentemente, como se puede apreciar, después de aplicar cuatro


veces el método, los valores propios aproximados que se han obtenido son los
siguientes:

λ1 ≈ −0.894932, λ2 ≈ 2.60253, λ3 ≈ 4.2924

Además en los respectivos vectores propios serán las columnas de la matriz


R1 · R2 · R3 · R4 .
152CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

Si utilizamos Matlab para calcular dichos valores propios, el resultado


que nos da es el siguiente:

λ1 = −0.414214, λ2 = 2.41421, λ3 = 4.

Se puede observar que la aproximación obtenida no es, todavı́a, lo suficien-


temente buena.
Ejemplo 58. Calcular los valores propios de la siguiente matriz:
 
1 0 1
A =  0 −1 3  .
1 3 0

En este problema utilizaremos el método de Jacobi cı́clico utilizando como


tolerancia ε = 10−2

• En primer lugar, como D0 = A, entonces


¯ ¯2 ¯ ¯2 ¯ ¯2
¯ (0) ¯ ¯ (0) ¯ ¯ (0) ¯
T0 = ¯d11 ¯ + ¯d22 ¯ + ¯d33 ¯ = 2,

de donde
r
T0
ε = 0.081.
3
¯ ¯ p ¯ ¯ p ¯ ¯
¯ (0) ¯ ¯ (0) ¯ ¯ (0) ¯
Como ¯d12 ¯ = 0 < ε T0 /3, ¯d13 ¯ = 1 > ε T0 /3 y ¯d23 ¯ = 3 >
p
ε T0 /3, entonces tenemos dos posibles candidatos. Elegiremos aquel
de mayor valor absoluto, es decir, el elemento que anularemos será el
la posición (2, 3), esto es p = 2, q = 3. En consecuencia, un sencillo
cálculo nos muestra que

θ = 0.166666, t ' 0.847127, a ' 0.763020, b ' 0.646375,

con lo que
 
1 −0.646375 0.76302
D1 = R1T · D0 · R1 =  −0.646375 −3.54138 0.000000  .
0.76302 0.000000 2.54138

• Como
¯ ¯2 ¯ ¯2 ¯ ¯2
¯ (1) ¯ ¯ (1) ¯ ¯ (1) ¯
T1 = ¯d11 ¯ + ¯d22 ¯ + ¯d33 ¯ = 20,
7.4. CÁLCULO DE LOS VALORES PROPIOS DE MATRICES SIMÉTRICAS153

entonces
r
T1
ε = 0.0258.
3
¯ ¯ ¯ ¯ ¯ ¯
¯ (1) ¯ ¯ (1) ¯ ¯ (1) ¯
Entonces ¯d12 ¯ > 0.0258, ¯d13 ¯ > 0.0258 y ¯d23 ¯ < 0.0258, entonces
vuelve a haber dos candidatos. El de mayor valor absoluto es el la
posición (1, 3), esto es p = 1, q = 3. En consecuencia, un sencillo
cálculo nos muestra que

θ = 1.010053, t ' 0.411287, a ' 0.924834, b ' 0.380372,

con lo que
 
0.68618 −0.597789 0.000000
D2 = R2T · D1 · R2 =  −0.597789 −3.54138 −0.245863  .
0.000000 −0.245863 2.8552

• Es sencillo ver que


r
T2
ε = 0.0266.
3
¯ ¯ ¯ ¯ ¯ ¯
¯ (2) ¯ ¯ (2) ¯ ¯ (2) ¯
Entonces ¯d12 ¯ > 0.0266, ¯d13 ¯ < 0.0266 y ¯d23 ¯ > 0.0266, entonces
hay otros dos candidatos. El de mayor valor absoluto es el la posición
(1, 2), esto es p = 1, q = 2. En consecuencia, un sencillo cálculo nos
muestra que

θ = 3.535996, t ' 0.138683, a ' 0.990520, b ' 0.137368,

con lo que
 
0.769083 0.000000 0.0337738
D3 = R3T · D2 · R3 =  0.000000 −3.62428 −0.243532  .
0.0337738 −0.243532 2.8552

Ası́ sucesivamente se va repitiendo el proceso hasta que los términos no


pertenecientes a la diagonal principal sean lo suficientemente pequeños.
Si utilizamos Matlab para calcular los valores propios de la matriz del
enunciado, el resultado que no da es el siguiente:

λ1 = 0.76854, λ2 = −3.63343, λ3 = 2.86489.


154CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

Ejemplo 59. Calcular los valores propios de la siguiente matriz:


 
8 −1 3 −1
 −1 6 2 0 
A=  3
.

2 9 1
−1 0 1 7
En este ejercicio, los detalles de carácter computacional, los dejaremos
para el lector.
(1)
En primer lugar anularemos el término d13 . Para ello utilizaremos la
siguiente matriz de rotación:
 
0.763020 0 0.646375 0
 0 1 0 0 
R1 =  −0.646375 0 0.763020 0  .

0 0 0 1
De esta forma, tendremos:
 
5.458619 −2.055770 0 −1.409395
 −2.055770 6 0.879665 0 
D1 = R1T · D0 · R1 = 

.
0 0.879665 11.541381 0.116645 
−1.409395 0 0.116645 7

(2)
A continuación si anulamos el término d12 , se obtiene:
 
3.655795 0 0.579997 −1.059649
 0 7.802824 0.661373 0.929268 
D2 =  0.579997 0.661373 11.541381 0.116645
.

−1.059649 0.929268 0.116645 7
Siguiendo con el proceso y después de 10 iteraciones obtenemos:
 
3.295870 0.002521 0.037859 0
 0.002521 8.405210 −0.004957 0.066758 
D10 = 
 0.037859 −0.004957 11.704123 −0.001430  .

0 0.066758 −0.001430 6.594797


Haciendo 6 iteraciones más, se puede observar como los valores propios que
se obtienen (después de 16 iteraciones) son:
λ1 ≈ 3.295699,
λ2 ≈ 8.407662,
λ3 ≈ 11.704301,
λ4 ≈ 6.592338.
7.4. CÁLCULO DE LOS VALORES PROPIOS DE MATRICES SIMÉTRICAS155

Ejercicios Propuestos

Ejercicio 1. Las lı́neas de código Matlab que se encuentran debajo se cor-


responden con un programa que implementa el método de Jacobi. Completa
dicho programa añadiendo los comentarios oportunos sobre la labor que real-
iza cada proceso y el significado de cada variables
function [V,D]=vvjacobi(A,e)
D=A;
[n,n]=size(A);
V=eye(n);
paso=1;
[m1,p]=max(abs(D-diag(diag(D))));
[m2,q]=max(m1);
p=p(q);
while(paso==1)
theta=(D(q,q)-D(p,p))/2*D(p,q);
t=sign(theta)/(abs(theta)+sqrt(theta^2+1));
a=1/sqrt(t^2+1);
b=a*t;
R=[a,b;-b,a];
D([p,q],:)=R’*D([p,q],:);
D(:,[p,q])=D(:,[p,q])*R;
V(:,[p,q])=V(:,[p,q])*R;
[m1,p]=max(abs(D-diag(diag(D))));
[m2,q]=max(m1);
p=p(q);
if(abs(D(p,q))<e*sqrt(sum(diag(D).^2)/n))
paso=0;
end
end
D=diag(diag(D))

Ejercicio 2. Calcular los valores propios de las siguientes matrices usando


156CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

el método de Jacobi
 
4 3 2 1
 3 4 3 2 
A =  
 2 3 4 3 ,
1 2 3 4
 
2.25 −0.25 −1.25 2.75
 −0.25 2.25 2.75 1.25 
B = 
 −1.25 2.75
.
2.25 −0.25 
2.75 1.25 −0.25 2.25

Ejercicio 3. Calcular los valores propios de las matrices usando el método


de Jacobi

A = (aij )1≤i,j≤30 ,

donde
½
i + j, si i = j
aij =
i · j, si i 6= j
½
cos (sen (i + j)) , si i = j
aij =
i + i · j + j, si i 6= j
7.4. CÁLCULO DE LOS VALORES PROPIOS DE MATRICES SIMÉTRICAS157

7.4.2 El método de Householder


En cada paso del método de Jacobi, el objetivo era anular dos coeficientes
(simétricos) no pertenecientes a la diagonal principal. Dichos coeficientes
nulos dejarı́an de serlo en el siguiente paso del algoritmo, aunque el valor
que toman en dicho paso es pequeño. Consecuentemente hay que realizar
muchas iteraciones para para que los elementos que se encuentran fuera de
la diagonal principal sean lo suficientemente pequeños.
Parece lógico pues, intentar desarrollar un método que en cada paso pro-
duzca varios ceros fuera de la diagonal principal, los cuales permanezcan con
dicho valor en los pasos siguientes del algoritmo. Mediante el método de
Householder se calculará a partir de una matriz A, otra que sea semejante
a ella (y que, por tanto, posea los mismos valores propios) y que sea tridi-
agonal. El cómputo de los valores propios de la misma se podrá realizar de
manera más sencilla.
Dicho método se basa en el siguiente resultado:

Teorema (Reflexión de Householder). Si los vectores X e Y tienen la


misma norma, entonces existe una matriz ortogonal y simétrica, P , tal que

Y = P · X,

donde:

P = Id − 2W · W T ,

siendo
X −Y
W = .
kX − Y k2
Obsérvese que como la matriz P es ortogonal y simétrica, entonces P =
P −1 .
Por otra parte, la aplicación Y = P · X consiste en en reflejar X tomando
la dirección Z = 12 (X + Y ) como eje de reflexión.
158CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

Además se verifica el siguiente corolario:

Corolario. Sea X = (x1 , . . . , xn ) y k ∈ N tal que 1 ≤ k ≤ n − 2. Entonces


existe un vector Wk y una matriz Pk = Id − 2Wk · WkT , tales que:
   
x1 x1
 ..   .. 
 .   . 
   
 xk   xk 
   
Pk · X T = Pk ·  xk+1  =  −S  = Y,
   
 xk+2   0 
 .   . 
 ..   .. 
xn 0
donde
q
S = sign (xk+1 ) x2k+1 + x2k+2 + . . . + x2n ,
X −Y
W = ,
p R
R = 2xk+1 S + 2S 2 .

A la matriz Pk se la denomina k-ésima matriz de Householder.


Una vez que hemos introducido los resultados teóricos en los que se basa
el método de Householder, pasemos a detallarlo.
Supongamos que A es una matriz simétrica de orden n × n, entonces una
sucesión de n − 2 transformaciones de semejanza de la forma P · A · P , donde
las sucesivas matrices P son de Householder, permite reducir A a una matriz,

An−2 = Pn−2 · . . . · P1 · A · P1 · . . . · Pn−2 ,

que es simétrica, tridiagonal y que tiene los mismos valores propios que A.
A esta matriz se la denomina forma de Hessemberg de A.
Veamos cómo podemos construir las matrices de Householder Pk , 1 ≤
k ≤ n − 2. Para simplificar la notación, supondremos n = 5.
Ası́, la primera transformación será P1 · A · P1 , donde P1 se construye
aplicando al anterior corolario siendo X la primera columa de la matriz A.
Ası́, es fácil ver que
 
1 0 0 0 0
 0 ∗ ∗ ∗ ∗ 
 
P1 =  0 ∗ ∗ ∗ ∗ ;

 0 ∗ ∗ ∗ ∗ 
0 ∗ ∗ ∗ ∗
7.4. CÁLCULO DE LOS VALORES PROPIOS DE MATRICES SIMÉTRICAS159

en consecuencia:
 
a11 v1 0 0 0
 u1 w1 ∗ ∗ ∗ 
 
P1 · A · P1 = 
 0 ∗ ∗ ∗ ∗ ,

 0 ∗ ∗ ∗ ∗ 
0 ∗ ∗ ∗ ∗

donde u1 = v1 = −S, ya que la matriz A1 = P1 · A · P1 es simétrica.


La segunda transformación de Householder se aplica a la matriz A1 an-
teriormente calculada, y viene dada por P2 · A1 · P2 , donde la matriz P2 es
calculada aplicando el anterior corolario utilizando como vector X, la segun-
da columa de la matriz A1 . De esta forma:
 
1 0 0 0 0
 0 1 0 0 0 
 
P2 =  0 0 ∗ ∗ ∗ .

 0 0 ∗ ∗ ∗ 
0 0 ∗ ∗ ∗

La submatriz identidad que aparece en P2 garantiza que los ceros que se han
conseguido ya en el primer paso no se van a ver modificados en este segundo
paso. Por lo tanto, se obtiene:
 
a11 v1 0 0 0
 u1 w1 v2 0 0 
 
P2 · A1 · P2 =  
 0 u2 w2 ∗ ∗  = A2 .
 0 0 ∗ ∗ ∗ 
0 0 ∗ ∗ ∗

La tercera transformación de Householder se aplica a la matriz A2 anterior


y, obviamente es P3 ·A2 ·P3 . Siguiendo el procedimiento anterior, la matriz P3
se calcula aplicando el corolario teniendo en cuenta que el vector X utilizado
es la tercera columna de la matriz A2 . En consecuencia:
 
1 0 0 0 0
 0 1 0 0 0 
 
P3 =   0 0 1 0 0 .

 0 0 0 ∗ ∗ 
0 0 0 ∗ ∗

Al igual que en el caso anterior, la submatriz identidad de orden 3 que aparece


en P3 nos garantiza que los ceros conseguidos en los dos pasos anteriores no
160CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

se van a ver alterados en éste. Ası́ pues se obtiene:


 
a11 v1 0 0 0
 u1 w1 v2 0 0 
 
P3 · A2 · P3 = 
 0 u2 w2 v3 0  = A3 .

 0 0 u3 w3 ∗ 
0 0 0 ∗ ∗
Obsérvese que ya hemos conseguido una matriz tridiagonal y simétrica
que posee los mismos valores propios que la matriz A.
Las transformaciones P · A · P no se realizan multiplicando las matri-
ces, sino que es mucho más eficiente hacer algunas manipulaciones con los
vectores utilizados. Ası́ se tiene el siguiente resultado para calcular una
transformación de Householder:

Teorema. Si P = Id − 2W · W T , es una matriz de Householder, entonces


la transformación P · A · P puede obtenerse como sigue:
1. Tomamos V = A · W .
2. Calculamos c = W T · V y Q = V − cW .
3. Entonces
P · A · P = A − 2W · QT − 2Q · W T .

Ejemplo 60. Usando el método de Householder, reducir a forma tridiagonal


la siguiente matriz:
 
4 2 2 1
 2 −3 1 1 
A=  2 1 3 1 .

1 1 1 2
Consideremos pues, en el primer paso, la matriz
 
4 2 2 1
 2 −3 1 1 
A0 =   2
.
1 3 1 
1 1 1 2
Entonces se tendrá que:
³ ´q √
(0) (0),2 (0),2 (0),2
S = sign a21 a21 + a31 + a41 = 4 + 4 + 1 = 3,
q √ √
(0)
R = 2a21 S + 2S 2 = 12 + 18 = 30,
7.4. CÁLCULO DE LOS VALORES PROPIOS DE MATRICES SIMÉTRICAS161

donde, a modo de notación, suponemos que el coeficiente (i, j) de la matriz


(k)
Ak , viene dado por aij . Por lo tanto:
³ ´ ³ ´
(0) (0) (0) (0) (0)
a11 , a21 , a31 , a41 − a11 , −S, 0, 0 (0, 2 + 3, 2, 1) 1
W = = √ = √ (0, 5, 2, 1) ,
R 30 30
1
V = A · W = √ (0, −12, 12, 9) ,
30
T
c = W · V = −0.9,
1
Q = V − cW = √ (0, −7.5, 13.8, 9.9) .
30
En consecuencia:
 
4.0 −3.0 0.0 0.0
 −3.0 2.0 −2.6 −1.8 
A1 = A0 − 2W · QT − 2Q · W T =  
 0.0 −2.6 −0.68 −1.24  .
0.0 −1.8 −1.24 0.68

En el segundo paso del método, obtendremos los siguientes resultados:


³ ´q √ √
(1) (1),2 (1),2
S = sign a32 a32 + a42 = − 2.62 + 1.82 = − 10 ' −3.1623,
q
(0)
R = 2a32 S + 2S 2 ' 6.0369,

con lo que:

W = (0.0000, 0.0000, −0.9545, −0.2982) ,


V = A1 · W = (0.0000, 0.0000, 1.0188, 0.9808) ,
c = W T · V = −1.2649,
Q = V − cW = (0.0000, 0.0000, −0.1886, 0.6037) .

Ası́ pues, la matriz tridiagonal que se obtiene es:


 
4.0 −3.0 0.0 0.0
 −3.0 2.0 3.1623 0.0 
A2 = A1 − 2W · QT − 2Q · W T =   0.0 3.1623 −1.4 −0.2
,

0.0 0.0 −0.2 1.4

con lo que se concluye.


162CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

7.4.3 La factorización QR
Como sabemos, mediante el método de Householder, dada una matriz simétrica
A, podemos calcular una matriz semejante, tridiagonal y simétrica, An−2 .
Como A y An−2 son semejantes, entonces tendrán los mismos valores pro-
pios. Para calcular los valores propios de la matriz An−2 emplearemos el
denominado método de la factorización QR. Según este método, podemos
factorizar toda matriz A, de la forma A = Q · R, donde Q es una matriz
ortogonal, y R es una matriz triangular superior.
Grosso modo, el procedimiento para calcular los valores propios consisten
en el siguiente algoritmo iterativo:

• Consideremos A1 = A. Construiremos una matriz ortogonal Q1 y una


matriz triangular superior R1 , tales que A1 = Q1 · R1 . Posteriormente
calculamos

A2 = R1 · Q1 = QT1 · A1 · Q1 ,

ya que QT1 · A1 = QT1 · Q1 · R1 = R1 . Obsérvese que, como Q1 es


ortogonal, entonces A2 es semejante a A1 y, consecuentemente, poseeran
los mismos valores propios.

• ...

• Consideremos la matriz Ak obtenida en el paso anterior. Construimos


una matriz ortogonal, Qk , y una matriz triangular superior, Rk , tales
que Ak = Qk · Rk , y definimos:

Ak = Rk · Qk = QTk · Ak−1 · Qk .

Las matrices Ak−1 y Ak son semejantes y, consecuentemente, A y Ak


serán también semejantes.

• ...

Bajo ciertas condiciones, la sucesión de matrices ası́ constuida, {Ak }k≥1 ,


converge a una matriz diagonal semejante a la matriz inicial A, con lo que
los elementos de la diagonal serán los valores propios de la matriz de partida.
Obsérvese que si A es una matriz tridiagonal, entonces las matrices Ak
también son tridiagonales.
Por lo tanto, el punto fundamental se centra en cómo calcular las matrices
Q y R, asociadas a una matriz simétrica A. El procedimiento es similar al
método de Householder y, grosso modo, consiste en lo siguiente:
7.4. CÁLCULO DE LOS VALORES PROPIOS DE MATRICES SIMÉTRICAS163

Sea X la primera columna de la matriz A, entonces aplicando el corolario


de la sección anterior, podemos encontrar una matriz de Householder, P1 , de
manera que todas las componentes del vector P1 · X salvo la primera sean
nulas. Ası́, se tendrá:
 
∗ ∗ ∗ ··· ∗ ∗ ∗
 0 ∗ ∗ ··· ∗ ∗ ∗ 
 
 0 ∗ ∗ ··· ∗ ∗ ∗ 
 
 .. .. .. . . .. .. .. 
P1 · A =  . . . . . . . .
 
 0 ∗ ∗ ··· ∗ ∗ ∗ 
 
 0 ∗ ∗ ··· ∗ ∗ ∗ 
0 ∗ ∗ ··· ∗ ∗ ∗
De manera similar, es posible encontrar otra matriz de Householder, P2 , tal
que
 
∗ ∗ ∗ ··· ∗ ∗ ∗
 0 ∗ ∗ ··· ∗ ∗ ∗ 
 
 0 0 ∗ ··· ∗ ∗ ∗ 
 
 
P2 · P1 · A =  ... ... ... . . . ... ... ..
..
 
 0 0 ∗ ··· ∗ ∗ ∗ 
 
 0 0 ∗ ··· ∗ ∗ ∗ 
0 0 ∗ ··· ∗ ∗ ∗
Aplicando pues, el procedimiento a lo largo de n − 1 pasos, se obtiene:
 
∗ ∗ ∗ ··· ∗ ∗ ∗
 0 ∗ ∗ ··· ∗ ∗ ∗ 
 
 0 0 ∗ ··· ∗ ∗ ∗ 
 
 .. .. ..  = R.
Pn−1 · . . . · P1 · A =  ... ... ... . . . . . . 
 
 0 0 0 ··· ∗ ∗ ∗ 
 
 0 0 0 ··· 0 ∗ ∗ 
0 0 0 ··· 0 0 ∗
Ahora bien, como cada matriz de Householder es ortogonal, entonces Q =
P1T · . . . · Pn−1
T
es la matriz ortogonal buscada.
Si dejamos el método tal como está, se demuestra que la convergencia es
lenta. Por ello, vamos a describir una técnica que nos permitirá acelerar la
convergencia del método QR.
Recordemos que si λj es un valor propio de la matriz A, entonces λj − s,
es un valor propio de la matriz A − sj Id. Si partimos (como antes) de una
matriz simétrica y tridiagonal, A1 = A, entonces esta idea se incorpora al
método mediante la siguiente modificación del paso general:
164CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

• En primer lugar se calcula la factorización:


Ai − si Id = Qi · Ri .

• Posteriormente calculamos
Ai+1 = Ri · Qi
para i = 1, 2, . . . , kj , donde {sj } es una sucesión cuyo suma se aproxima
al valor propio λj . Obsérves que la matriz ası́ obtenida, Akj +1 , es
semejante a la matriz A − (s1 + . . . + sj ) Id.
El valor adecuado para la traslación, si , se calcula en cada paso utilizando
los elementos de la esquina inferior derecha de la matriz considerada en dicho
paso. Ası́, para el primer valor propio, λ1 , se calcularán los dos valores propios
de la submatriz cuadrada de orden 2 extraı́da de la esquina inferior derecha:
à !
(1) (1)
an−1,n−1 an−1,n
(1) (1) .
an,n−1 ann
Los valores propios asociados a esta matriz son las raı́ces de la siguiente
ecuación se segundo grado:
³ ´
(1) (1) (1),2
x2 − an−1,n−1 + a(1) (1)
nn x + an−1,n−1 ann − an−1,1 = 0.

Entonces se toma como valor s1 del primer desplazamiento, aquella raı́z que
(1)
esté más cercana de ann .
(k1 )
Hay que indicar que la iteración QR se repite hasta que tengamos an−1,n ≈
0. Si esto ocurre en el paso k1 , entonces tomamos como aproximación al
primer valor propio a s1 + . . . + sk1 ≈ λ1 .
Aplicamos el mismo proceso pero utilizando la submatriz que resulta de
eliminar la última fila y la última columna tantas veces (por ejemplo k2 )
como sean necesarias para que an−2,n−1 ≈ 0, con lo que obtendremos una
aproximación del segundo valor propio.
Seguiremos realizando las sucesivas iteraciones hasta que obtengamos
a12 ≈ 0, en cuyo caso obtendremos una aproximación del valor propio λn−2 .
Finalmente, los valores propios restantes son los valores propios de la
matriz de orden 2 que queda.
Ejemplo 61. Calcular los valores propios de la siguiente matriz:
 
4 2 2 1
 2 −3 1 1 
A=  2 1 3 1 .

1 1 1 2
7.4. CÁLCULO DE LOS VALORES PROPIOS DE MATRICES SIMÉTRICAS165

En el Ejemplo 60 ya construimos una matriz tridiagonal (que denotamos


por A2 ) que es semejante a la del enunciado. Entonces aplicaremos el método
de factorización QR a dicha matriz (denotándola ahora como A1 ):
 
4.0 −3.0 0.0 0.0
 −3.0 2.0 3.1623 0.0 
A1 = 
 0.0 3.1623 −1.4 −0.2  .

0.0 0.0 −0.2 1.4

Ası́, los cuatro elementos de la esquina inferior derecha son


(1) (1) (1) (1)
a33 = −1.4, a34 = a43 = −0.2, a44 = 1.4,

con lo que la ecuación de segundo grado que se forma es x2 − 2 = 0. Las


soluciones de la misma son

x1 = −1.4142,
x2 = 1.4142,
(1)
de las cuales elegimos la má cercana a a44 , como valor del primer desplaza-
miento. Ası́ s1 = 1.4142. En consecuencia, la primera matriz trasladada
es:
 
2.5858 −3 0 0.0
 −3 0.5858 3.1623 0.0 
A1 − s1 Id = 

.
0 3.1623 −2.8142 −0.2 
0 0 −0.2 −0.0142

Si calculamos su factorización QR obtenemos:

A1 − s1 Id = Q1 · R1 ,

donde
 
−0.6529 −0.3886 −0.5553 0.3381
 0.7575 −0.3349 −0.4787 0.2914 
Q1 = 

,

0 0.8584 −0.4382 0.2661
0 0 0.5201 0.8541
 
−3.9601 2.4023 2.3953 0
 0 3.6840 −3.4748 −0.1717 
R1 = 

.

0 0 −0.3846 0.0802
0 0 0 −0.0655
166CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS

En consecuencia:
 
4.4055 2.7905 0 0
 2.7905 −4.2166 0.0191 0 
A2 = R1 · Q1 = 

.
0 0.0191 0.2917 0.0003 
0 0.0003 0.0002

Repitiendo los pasos del algoritmo, se obtiene que el segundo desplaza-


miento es s2 = −0.0602, de tal forma que
 
4.5526 −2.6572 0 0
 −2.6572 −4.2605 0.0191 0 
A3 = R2 · Q2 = 


−5  .
0 −0.0011 0.2917 3 · 10
0 0 3 · 10−5 0.0003

El valor de la tercera traslación es s3 = 0.0003, con lo que


 
4.6264 2.5303 0 0
 2.5303 −4.3349 −0.0011 0 
A4 = R3 · Q3 =  
.
0 −0.0011 0.2915 0 
0 0 0 0

En consecuencia, el primer valor propio viene dado por

λ1 = s1 + s2 + s3 = 1.3543.

Ahora, almacenando λ1 en la primera posición diagonal de A4 , y repitien-


do el proceso pero considerando la submatriz de orden 3 que aparece en la
esquina superior izquierda de A4 , se repite el método.
Ası́, el siguiente desplazamiento es s4 = 0.2915, con lo que A5 = R4 · Q4 ,
y una sencilla cuenta nos muestra que el segundo valor propio viene dado por
λ2 = s1 + s2 + s3 + s4 = 1.6457. En consecuencia:
 
4.2608 −2.6572 0 0
 −2.6572 −4.5523 0 0 
A5 = 
.

0 0 1.6457 0
0 0 0 1.3543

Finalmente, en el último paso del método hay que calcular los valores
propios de la matriz de orden 2 que ocupa la esquina superior izquiera de A5 ,
es decir:
µ ¶
4.2608 −2.6572
.
−2.6572 −4.5523
7.4. CÁLCULO DE LOS VALORES PROPIOS DE MATRICES SIMÉTRICAS167

Procediendo de manera directa, tendremos que la ecuación caracterı́stica es:

x2 + 0.2915x − 26.4575 = 0.

Las raı́ces de esta ecuación son x1 = 5 y x2 = −5.2915, con lo que los dos
últimos valores propios vienen dados por:

λ3 = λ2 + x1 = 6.6457,
λ4 = λ2 + x2 = −3.6457.

Ejercicios Propuestos

Ejercicio 1. Calcular los valores propios de las siguiente matriz:


 
3 2 1
A=  2 3 2 .
1 2 3

Ejercicio 2. Calcular los valores propios de las siguiente matriz:


 
4 3 2 1
 3 4 3 2 
A=  2 3 4 3 .

1 2 3 4
168CAPÍTULO 7. APROXIMACIÓN DE VALORES Y VECTORES PROPIOS
Capı́tulo 8

Factorización SVD

8.1 Descomposición en valores singulares


La descomposición en valores singulares (Singular Value Decomposition, SVD)
es una herramienta muy útil a la hora de resolver sistemas de ecuaciones
lineales o de calcular los valores propios de matrices singulares o mal condi-
cionadas.
El resultado fundamental es el siguiente teorema:

Teorema. Dada una matriz cualquiera A ∈ Mm×n (R), existe una factor-
ización de la misma como sigue:

A = U · D · V T,

donde U ∈ Mm (R), V ∈ Mn (R), son sendas matrices ortogonales 1 , y


1
Recordemos que una matriz Q ∈ Mn (R) es ortogonal cuando todas sus columnas,
q1 , . . . , qn , son vectores ortonormales:
½
1, si i = j
qiT · qj =
0, si i 6= j

Toda matriz ortogonal satisface las siguientes propiedades:

Q · QT = QT · Q = Id,
QT = Q−1 ,
T
(Q · X) · (Q · X) = X T · Y, ∀X, Y ∈ Rn ,
kQ · Xk = kXk , ∀X ∈ Rn .

Además se verifica también que los vectores filas de Q son también ortonormales.

169
170 CAPÍTULO 8. FACTORIZACIÓN SVD

D ∈ Mm×n (R) es una matriz tal que su coeficiente (i, j) es



 0, si i 6= j
dij = 0, si i = j > r

> 0, si i = j ≤ r
Es decir
 
d11 0 ··· ··· ··· 0
 ... ... .. 
 0 . 
 .. .. 
 ... ... 
 . drr . 
D= .. ... . . . ..  ∈ Mm×n (R) .
 . 0 . 
 
 .. ... ... 
 . 0 
0 ··· ··· ··· 0 0
A esta factorización se la denomina descomposición en valores singulares de
la matriz A. A los valores µi = dii , con 1 ≤ i ≤ r, se les denomina valores
singulares de la matriz A.
Obsérvese que la descomposición SVD de una matriz A existe independi-
entemente del rango que ésta posea y de su orden.

Veamos cómo se calculan explı́citamente las matrices U y V .


Como la matriz AT · A es una matriz simétrica, entonces posee n vectores
propios ortogonales: v1 , . . . , vn ∈ Rn , de tal forma que representarán las
columnas de la matriz V , es decir:
 (1) (1)

v1 · · · vn
 ..  ,
V =  ... ...
. 
(n) (n)
v1 · · · vn
³ ´
(1) (n)
donde vi = vi , . . . , vi ∈ Rn , para 1 ≤ i ≤ n.
Consecuentemente, si λ1 , . . . , λn son los valores propios de la matriz AT ·
A, entonces se tendrá que:
¡ T ¢
A · A · vi = λi vi , 1 ≤ i ≤ n,
de donde:
¡ ¢
viT · AT · A · vi = λi viT · vi = λi .
Por lo tanto
λi = viT · AT · A · vi = (A · vi )T · (A · vi ) = kA · vi k2 .
8.1. DESCOMPOSICIÓN EN VALORES SINGULARES 171

Si A es una matriz singular tal que rang (A) = r < n, entonces AT · A


también tendrá rango r. Entonces existirán r valores propios distintos de
cero (mayores que cero), λ1 , . . . , λr , y n − r valores propios iguales a cero,
λr+1 , . . . , λn = 0. Ası́ podemos definir:
p
σj = λj , 1 ≤ j ≤ r,
1
uj = A · vj ∈ Rm , 1 ≤ j ≤ r,
σj
de tal forma que los vectores u1 , . . . , ur son ortogonales:
½
T 1 T T λj T 0, si i 6= j
ui · uj = vj · A · A · vi = vj · vi =
σj σi σj σi 1, si i = j

Este conjunto de vectores ortogonales (y consecuentemente, linealmente inde-


pendientes), se puede completar usando el método de Gram-Schmidt, hasta
una base de Rm , añadiendo otros m − r vectores: ur+1 , . . . , um . Estos m
vectores formarán las columnas de la matriz U, es decir:
 (1) (1)

u1 · · · um
 ..  ,
U =  ... ...
. 
(m) (m)
u1 · · · um
³ ´
(1) (m)
donde vi = vi , . . . , vi ∈ Rm , para 1 ≤ i ≤ m.
En resumidas cuentas, podemos decir que las columnas de la matriz U
son los vectores propios de A · AT , y que las columnas de la matriz V son los
vectores propios de AT · A. Obsérvese que A · AT y AT · A poseen los mismos
valores propios.
Veamos ahora que, con la anterior construcción de las matrices U y V ,
efectivamente se verifica la descomposición SVD de la matriz A. Para ello
consideraremos la matriz U T ·A·V , y demostraremos que U T ·A·V = D, siendo
D una matriz de la forma dada en la sección anterior. Ası́, el coeficiente (i, j)
de la matriz U T · A · V es:
½ T
¡ T ¢ T ui · σ j uj = σ j δ ij , si j ≤ r
U · A · V ij = ui · A · vj =
0, si j > r

con lo que:
½
¡ T ¢ σ k , si i = j = k ≤ r
U · A · V ij = uTi · A · vj =
0, en otro caso

Obsérvese que A · vj = 0 si j > r, y que δij es la delta de Kronecker.


172 CAPÍTULO 8. FACTORIZACIÓN SVD

Por lo tanto U T · A · V = D, de donde A = U · D · V T .

Ejemplo 62. La descomposición SVD de la matriz


 
1 1 1
A=  2 2 2 
3 3 3
es la siguiente:
 
−0.2673 0.9562 0.1195
U =  −0.5345 −0.0439 −0.8440  ,
−0.8018 −0.2895 0.5228
 
6.4807 0 0
D =  0 0 0 ,
0 0 0
 
−0.5774 0.8165 0
V =  −0.57743 −0.4082 −0.7071  .
−0.5774 −0.4082 0.7071
Ejemplo 63. La descomposición SVD de la matriz
 
1 1 1 1
A= 2 2 2 1 
2 3 3 3
es la siguiente:
 
−0.2903 0.0322 0.9564
U =  −0.5119 0.8392 −0.1836  ,
−0.8085 −0.5429 −0.2272
 
6.8541 0 0 0
D =  0 0.9887 0 0 ,
0 0 0.2087 0
 
−0.4276 0.6320 0.6463 0
 −0.5456 0.0829 −0.4421 0.7071 
V = 
 −0.5456 0.0829 −0.4421 −0.7071
.

−0.4709 −0.7660 0.4376 0
Proposición. Se verifican las siguientes propiedades:

• Los vectores u1 , . . . , ur son una base ortonormal de Im (A).


8.1. DESCOMPOSICIÓN EN VALORES SINGULARES 173
¡ ¢
• Los vectores ur+1 , . . . , um son una base ortonormal de ker AT
¡ ¢
• Los vectores v1 , . . . , vr son una base ortonormal de Im AT .
• Los vectores vr+1 , . . . , vn son una base ortonormal de ker (A) .

Obsérvese que estas propiedades se deducen las siguientes relaciones:


¡ ¢
ker AT · A = ker (A)
¡ ¢ ¡ ¢ ¡ ¢
Im AT · A = Im AT = Im A · AT
¡ ¢ ¡ ¢
ker A · AT = ker AT

Una de las aplicaciones más interesantes de la descomposición SVD es el


cálculo de la matriz inversa de una dada. Ası́, si A ∈ Mn (R) es una matriz
no singular, entonces aplicando su descomposición SVD tendremos:

A = U · D · V T,

donde D es una matriz cuadrada diagonal. En consecuencia:


¡ ¢−1 ¡ T ¢−1
A−1 = U · D · V T = V · D−1 · U −1 = V · D−1 · U T .

Ejemplo 64. La descomposición SVD de la matriz


 
1 1 1 0
 2 2 0 2 
A=  3 0
,
3 3 
0 4 4 4
viene dada por las matrices:
 
−0.1534 −0.0630 0.1152 −0.9799
 −0.3204 −0.1759 0.9153 0.1692 
U =   −0.5186 −0.7760 −0.3474 0.0903
,

−0.7777 0.6024 −0.1682 0.0633
 
8.4956 0 0 0
 0 3.4023 0 0 
D =  
,

0 0 2.2382 0
0 0 0 1.1129
 
−0.2766 −0.8062 0.4038 −0.3325
 −0.4597 0.5863 0.5688 −0.3484 
V =   −0.5674 0.0055 −0.7147 −0.4091
.

−0.6247 −0.0794 0.0517 0.7751
174 CAPÍTULO 8. FACTORIZACIÓN SVD

En consecuencia, la inversa de la matriz A es:


 
0.3333 0.1666 0.1111 −0.1666
 0.3333 0.1666 −0.2222 0.0833 
A−1 =   0.3333 −0.3333 0.1111
.
0.0833 
−0.6666 0.1666 0.1111 0.0833

8.2 La matriz pseudoinversa


Definición. El concepto de matriz pseudoinversa o matriz inversa de Moore-
Penrose fue introducido en el año 1955 por R. Penrose. Ası́, dada una matriz
A ∈ Mm×n (R), se define su matriz pseudoinversa, y se denota por A+ , como
la única matriz A+ ∈ Mm×n (R) tal que verifica las siguientes propiedades:

A · A+ · A = A
A+ · A · A+ = A+
¡ ¢T
A · A+ = A · A+
¡ + ¢T
A ·A = A+ · A

Otras caracterı́sticas interesantes de la matriz pseudoinversa vienen dadas


en el siguiente resultado:

Proposición. La matriz pseudoinversa satisface las siguientes propiedades:

1. rang (A+ ) = rang (A).


2. (A+ )+ = A.
3. Si A es una matriz cuadrada y no singular, entonces A+ = A−1 .
¡ ¢+
4. AT = (A+ )T .

Ejemplo 65. La matriz pseudoinversa de la matriz


 
1 1 1 1
A =  2 2 2 2  ∈ M3×4 (R) ,
3 3 3 3
es
 
1/56 1/28 3/56
 1/56 1/28 3/56 
A+ = 
 1/56
 ∈ M4×3 (R) .
1/28 3/56 
1/56 1/28 3/56
8.2. LA MATRIZ PSEUDOINVERSA 175

Obsérvese que rang (A) = 1 < 3, y que A · A+ 6= Id.

Ejemplo 66. La matriz pseudoinversa de la matriz


 
1 1 1 1
A =  2 2 2 1  ∈ M3×4 (R) ,
2 3 3 3
es
 
3 0 −1
 −2 1/2 1/2 
A+ =  
 −2 1/2 1/2  ∈ M4×3 (R) .
−2 −1 0

Obsérvese que rang (A) = 3 y que A · A+ = Id.

Ejemplo 67. La matriz pseudoinversa de la matriz


 
1 1 1 1
 2 2 2 2 
A= 
 3 3 3 3  ∈ M4×4 (R) ,
4 4 4 4
es
 
1/120 1/60 1/40 1/30
 1/120 1/60 1/40 1/30 
A+ = 
 1/120
 ∈ M4×4 (R) .
1/60 1/40 1/30 
1/120 1/60 1/40 1/30

Obsérvese que rang (A) = 1 y que A · A+ 6= Id.

Ejemplo 68. La matriz pseudoinversa de la matriz


 
1 1 1 0
 2 2 0 2 
A= 
 3 0 3 3  ∈ M4×4 (R) ,
0 4 4 4
es
 
1/3 1/6 1/9 −1/6
 1/3 1/6 −2/9 1/12 
A+ =  
 1/3 −1/3 1/9 1/12  ∈ M4×4 (R) .
−1/3 1/6 1/9 1/12
176 CAPÍTULO 8. FACTORIZACIÓN SVD

Obsérvese que rang (A) = 4 (A es no singular) y que A · A+ = Id.

Proposición. La matriz pseudinversa de A ∈ Mm×n (R) se puede definir


en términos de la descomposición SVD de la matriz A como sigue:

A+ = V · D+ · U T ,

donde
 
µ−1
1 0 ··· ··· ··· 0
 ... ... .. 
 0 . 
 . .. 
 . ... ... 
 . µ−1 . 
D+ =  . r
... . . . ..  ∈ Mn×m (R) .
 .. 0 . 
 
 .. ... ... 
 . 0 
0 ··· ··· ··· 0 0

Además se tiene el siguiente resultado:

Proposición. La matriz pseudoinversa verifica las siguientes propiedades:

• (A1 · A2 )+ 6= A+ +
2 · A1

• Si Q ∈ Mn (R) es una matriz ortogonal, entonces (A · Q)+ = Q−1 · A+ .


¡ ¢+ ¡ ¢+
• A+ = AT · A · AT = AT · A · AT .

• A+ · A 6= Id.

• Si A es una matriz de proyección 2 , entonces A · A+ = Id.

• Si A tiene rango máximo, entonces A · A+ = Id.

• Las matrices A · A+ y A+ · A son hermı́ticas.


¡ ¢−1
• Si A · AT es no singular, entonces A+ = AT · AT · A .

2
Se dice que una matriz A, es una matriz de proyección cuando satisface las siguientes
dos condiciones:
1. A es idempotente: A2 = A.
2. A es simétrica: A = AT .
Capı́tulo 9

Ajuste de Datos

9.1 El método de los mı́nimos cuadrados


9.1.1 Ajuste mediante y = ax + b
Como comentamos en el capı́tulo dedicado a la Interpolación, los cientı́ficos se
encuentran muchas veces con tablas de muchos datos que deben interpretar:

x x0 x1 ... xm
y y0 y1 ... ym

En el capı́tulo mencionado mostrábamos diferentes métodos que nos per-


mitı́an construir una curva, definida por una ecuación polinómica, que pasaba
por cada uno de esos puntos.
Supongamos que, por diversos motivos, sabemos que la función que aprox-
ima dichos puntos es de carácter lineal, esto es, viene dada por una expresión
de la forma

y = ax + b,

donde a, b ∈ R.
En este caso, es imposible que dicha recta pase por todos los puntos

(x0 , y0 ) , . . . , (xm , ym ) ,

a no ser que fueran colineales. Precisamente el hecho de que dichos puntos


no se encuentren exactamente sobre la lı́nea recta considerada es debido al
error cometido a la hora de la toma de los datos.

177
178 CAPÍTULO 9. AJUSTE DE DATOS

El error que se comete cuando el punto (xk , yk ) no pertenece a la recta


y = ax + b, viene dado por la expresión:
ek = |axk + b − yk | .
Ası́, el error absoluto para los m + 1 puntos es:
X
m
E (a, b) = e0 + . . . + ek = |axk + b − yk | ,
k=0

que como se puede apreciar es una función de los coeficientes a y b. Conse-


cuentemente deberı́amos elegir a y b para minimizar la función E (a, b). Éste
problema es un ejemplo de la denominada l1 aproximación y para resolverlo
habrı́a que recurrir a técnicas de la Programación Lineal (obsérvese que los
métodos derivados del Cálculo no se podrı́an utilizar debido a que la función
no es diferenciable).
En la práctica lo que se hace es minimizar otra función del error que sı́ es
diferenciable (y que, consecuentemente, permite utilizar técnicas analı́ticas),
a saber:
Xm
Φ (a, b) = (axk + b − yk )2 .
k=0

Esta nueva función es adecuada por diversos motivos de carácter estadı́stico.


Básicamente, si el error sigue una distribución de probabilidad normal, en-
tonces la minimización de Φ da lugar a una mejor estimación de a y b. A
ésto se le denomina l2 aproximación1 .
1
Las aproximaciones l1 y l2 son casos particulares de la norma lp , definida por
à n !1/p
X p
kXkp = |xi | , 1≤p<∞
i=1

donde X = (x1 , . . . , xn ).
9.1. EL MÉTODO DE LOS MÍNIMOS CUADRADOS 179

Si utilizamos las técnicas del Cálculo para calcular el mı́nimo de la fun-


ción Φ, tendremos que éste debe verificar en primer lugar las condiciones de
extremo:


 ∂Φ
 ∂a = 0



 ∂Φ = 0

∂b
que en nuestro caso se reflejan en el siguiente sistema de dos ecuaciones con
dos incógnitas:

 Pm

 0 = xk (axk + b − yk )

 k=0


 P
m

 (axk + b − yk )
 0=
k=0

que se denominan ecuaciones normales y pueden ser escritas como sigue:


 µm ¶ µm ¶
 P 2 P Pm

 x a + x b = xk yk

 k=0 k
k=0
k
k=0

 µm ¶

 P P
m

 xk a + (m + 1) b = yk
k=0 k=0

La solución de dicho sistema es:


" Ã m ! Ã m !#
1 Xm X X
a = (m + 1) xk yk − xk yk ,
d k=0 k=0 k=0
"Ã m !Ã m ! Ã m !Ã m !#
1 X X X X
b = x2k yk − xk xk yk ,
d k=0 k=0 k=0 k=0

donde
à m !2
X
m X
d = (m + 1) x2k − xk .
k=0 k=0

Ejemplo 69. En el caso particular de considerar los datos

{(1, y1 ) , . . . , (n, yn )} ,
180 CAPÍTULO 9. AJUSTE DE DATOS

la recta que mejor los aproxima es y = ax + b, donde:


" #
1 Xn Xn
a = 12 kyk − 6 (n + 1) yk ,
n3 − n k=1 k=1
" #
1 Xn Xn
b = (4n + 2) yk − 6 kyk .
n2 − n k=1 k=1

Ejemplo 70. Calcular la recta que mejor ajusta la siguiente tabla de datos:

x 0 1.5 2 3.5 4 5.5 6 7.8 9 10 11


y 0 2.25 4 12.25 16 30.25 35 60.84 81 100 121

Un sencillo cálculo nos muestra que:

X
m X
m X
m
xk = 60.3, yk = 463.6, xk yk = 4035,
k=0 k=0 k=0
Ãm !2
X
m X
x2k = 463.6, xk = 3636,
k=0 k=0

con lo que

d = 1463, a = 11.23, b = −19.41,

y consecuentemente la recta será

y = 11.23x − 19.41
9.1. EL MÉTODO DE LOS MÍNIMOS CUADRADOS 181

9.1.2 Ajuste mediante sistemas generales de funciones


El método de los mı́nimos cuadrados no se restringe sólo al caso de polinomios
lineales de primer orden (es decir, a expresiones del tipo y = ax + b), sino
que podemos utilizar otro tipo de ecuaciones. Por ejemplo, supongamos que
queremos ajustar una tabla de valores

x x0 x1 ... xm
y y0 y1 ... ym

mediante una función de la forma

y = a ln (x) + bex + cx,

en el sentido de los mı́nimos cuadrados. En este caso las incógnitas serán


tres, a, b, c ∈ R, y la función a minimizar considerada es:

X
m
Φ (a, b, c) = (a ln (xk ) + bexk + cxk − yk )2 .
k=0

Por lo tanto:

∂Φ Xm
0 = =2 (a ln (xk ) + bexk + cxk − yk ) ln (xk ) ,
∂a k=0

∂Φ Xm
0 = =2 (a ln (xk ) + bexk + cxk − yk ) exk ,
∂b k=0

∂Φ Xm
0 = =2 (a ln (xk ) + bexk + cxk − yk ) xk ,
∂c k=0

que dan lugar a las ecuaciones normales:


 µm ¶ µm ¶ µm ¶
 P P x P Pm

 (ln (x ))2
a + e k ln (x ) b + x ln (x ) c = yk ln (xk )


k k k k

 k=0 k=0 k=0 k=0



 µP ¶ µm ¶ µm ¶
m
xk
P 2x P xk
P
m
e ln (xk ) a + e k b+ xk e c= yk exk

 k=0 k=0 k=0 k=0



 µ ¶ µm ¶ µm ¶

 P
m P P 2 Pm

 xk
 xk ln (xk ) a + xk e b+ xk c = yk xk
k=0 k=0 k=0 k=0
182 CAPÍTULO 9. AJUSTE DE DATOS

Ejemplo 71. Calcular la ecuación de la forma y = a ln (x) + bex + cx que


mejor ajusta la siguiente tabla de datos:

x 1 1.5 2 3.5 4 5.5 6 7.8 9 10 11


y 0 2.25 4 12.25 16 30.25 35 60.84 81 100 121

Un sencillo cálculo nos muestra que las ecuaciones normales en este caso
son:

 0 = −1961.27 + 60.70a + 436742.85b + 234.50c
0 = −2.06 · 107 + 436742.85a + 8.28 · 109 b + 1.95 · 106 c

0 = −8072.35 + 234.50a + 1.95 · 106 b + 929.18c

con lo que:

a = −35.84,
b = 0,
c = 16.92.

En consecuencia, la ecuación que mejor ajusta los datos es:

y = −35.84 ln (x) + 16.92x

Como se puede apreciar, en el primer ejemplo utilizamos el sistema de


funciones {g1 (x) = 1, g2 (x) = x} para construir una recta, y = ag2 (x) +
bg1 (x) = ax + b, que aproximara los datos, y en el segundo ejemplo, el
sistema de funciones escogido fue {g1 (x) = ln (x) , g2 (x) = ex , g3 (x) = x}.
Consecuentemente, el método de los mı́nimos cuadrados puede ser aplicado
utilizando familias lineales generales de funciones.
9.1. EL MÉTODO DE LOS MÍNIMOS CUADRADOS 183

Ası́, dada la tabla de datos


x x0 x1 ... xm
y y0 y1 ... ym
consideremos la colección de funciones:

{g0 (x) , g1 (x) , . . . , gn (x)} ,

denominadas funciones base, de tal forma que pretendemos ajustar dichos


datos (en el sentido de los mı́nimos cuadrados) utilizando la función

y = c0 g0 (x) + c1 g1 (x) + . . . + cn gn (x) ,

donde c0 , . . . , cn ∈ R. Entonces, la función a minimizar viene dada por:


" n #2
X
m X
Φ (c0 , . . . , cn ) = cj gj (xk ) − yk .
k=0 j=0

Como antes, las condiciones necesarias para la obtención de un mı́nimo son:


 " #

 ∂Φ Pm P
n

 =2 cj gj (xk ) − yk g0 (xk ) = 0

 ∂c0

 k=0 j=0

..
 .

 " #



 ∂Φ Pm P
n

 ∂c = 2 cj gj (xk ) − yk gn (xk ) = 0
n k=0 j=0

con lo que las ecuaciones normales son:


 ·m ¸

 Pn P Pm

 g0 (xk ) gj (xk ) cj = yk g0 (xk )

 j=0 k=0 k=0


..
 .

 · ¸

 Pn P
m Pm

 gn (xk ) gj (xk ) cj = yk gn (xk )

j=0 k=0 k=0

Obsérvese que las ecuaciones normales forman un sistema de n + 1 ecua-


ciones lineales con n + 1 incógnitas que puede ser resulto, en principio, uti-
lizando el método de la eliminación Gaussiana. No obstante, a la hora de la
verdad puede ser dificil de resolver este sistema si no se toman las oportunas
precauciones a la hora de elegir las funciones base g0 (x) , . . . , gn (x). Ası́,
deben satisfacer una serie de mı́nimas condiciones, a saber:
184 CAPÍTULO 9. AJUSTE DE DATOS

• Deben ser funcionalmente independientes, es decir, si

c0 g0 (x) + . . . + cn gn (x) = 0

para todo x, entonces

c0 = . . . = cn = 0.

• Además, las funciones bases deben ser escogidas de manera adecuada


a los datos a ajustar.

Ejemplo 72. Utilizar el sistema de funciones

{ln (x) , cos (x) , sen (x) , x, ex } .

para ajustar la siguiente tabla de datos:

x 1 1.5 2 3.5 4 5.5 6 7.8 9 10 11


y 0 2.25 4 12.25 16 30.25 35 60.84 81 100 121

En primer lugar, veamos si las funciones base consideradas son funcional-


mente independientes. Ası́ si tenemos la combinación lineal:

c0 ln (x) + c1 cos (x) + c2 sen (x) + c3 x + c4 ex = 0, (9.1)

y la derivamos sucesivas veces, obtenemos:


c0
− c1 sen (x) + c2 cos (x) + c3 + c4 ex = 0, (9.2)
x
c0
− 2 − c1 cos (x) − c2 sen (x) + c4 ex = 0, (9.3)
x
2c0
+ c1 sen (x) − c2 cos (x) + c4 ex = 0, (9.4)
x3
6c0
− 4 + c1 cos (x) + c2 sen (x) + c4 ex = 0, (9.5)
x
24c0
− c1 sen (x) + c2 cos (x) + c4 ex = 0, (9.6)
x5
120c0
− 6 − c1 cos (x) − c2 sen (x) + c4 ex = 0. (9.7)
x
Es fácil ver que de las ecuaciones (9.7) y (9.3), se obtiene que c0 = 0. Por
otra parte, de las ecuaciones (9.6) y (9.2) se deduce que
24c0 c0
+ 2 − c3 = 0,
x5 x
9.2. SISTEMAS ORTOGONALES Y POLINOMIOS DE CHEBYSHEV185

y como sabemos que c0 = 0, entonces es obvio que c3 = 0. Si sumamos


las ecuaciones (9.4) y (9.6) y tenemos en cuenta los anteriores resultados,
conseguimos 2c4 ex = 0, de donde c4 = 0. Finalmente, la ecuación (9.5)
queda c1 cos (x) + c2 sen (x) = 0 para todo x. Obviamente c1 = c2 = 0 ya que
de lo contrario existirı́a un ángulo x tal que cos (x) = sen (x) = 0, lo cual es
imposible.
Por otro lado, las ecuaciones normales en este caso son:


 0 = −1961.27 + 60.70c0 − 6.45c1 − 5.70c2 + 234.50c3 + 436743c4


 0 = 241.56 − 6.45c0 + 9.47c1 + 0.66c2 − 25.08c3 − 49950.6 c4
0 = 244.70 − 5.70c0 + 0.66c1 + 12.53c2 − 21.20c3 − 132810c4



 0 = −8072.35 + 234.50c0 − 25.08c1 − 21.20c2 + 929.18c3 + 1.95 · 106 c4

0 = −2.06 · 107 + 436743c0 − 49950.6c1 − 132810c2 + 1.95 · 106 c3 + 8.28 · 109 c4

de tal forma que


c0 = −46.51, c1 = −3.29, c2 = −5.37, c3 = 19.93, c4 = 0.
En consecuencia, la función que ajusta los datos es:
y = −46.51 ln (x) − 3.29 cos (x) − 5.37sen (x) + 19.93ex .

9.2 Sistemas ortogonales y polinomios de Cheby-


shev
9.2.1 Fundamento teórico
Supongamos que tenemos una colección de funciones base, g0 (x) , . . . , gn (x).
El conjunto de todas las funciones que se pueden poner como combinación
186 CAPÍTULO 9. AJUSTE DE DATOS

lineal de ellas tiene estructura de espacio vectorial:


( )
Xn
G = g (x) = ck gk (x) : c0 , . . . , cn ∈ R .
k=0

Como las funciones base, {g0 (x) , . . . , gn (x)} son funcionalmente indepen-
dientes, entonces formarán una base del espacio vectorial G. Ahora bien,
recuérdese que un espacio vectorial tiene infinitas bases, entonces resulta ra-
zonable preguntarse qué base, {g0 (x) , . . . , gn (x)}, es la mejor para buscar
una función, g (x) = c0 g0 (x) + . . . + cn gn (x), que ajuste de la manera más
precisa una determinada tabla de datos.
Obsérvese que serı́a conveniente que el sistema de ecuaciones normales,
 ·m ¸

 Pn P Pm

 g 0 (xk ) gj (xk ) cj = yk g0 (xk )

 j=0 k=0 k=0


..
 .

 · ¸

 Pn Pm Pm

 g (x ) g (x ) c = yk gn (xk )
 n k j k j
j=0 k=0 k=0

fuera fácilmente resoluble. Desde luego, la situación ideal se presentarı́a


cuando la matriz de coeficientes del anterior sistema fuera la identidad, y
ello ocurre cuando la base elegida tiene la propiedad de la ortonormalidad:
Xm ½
1, si i = j
gi (xk ) gj (xk ) = δ ij =
0, si i 6= j
k=0

En este caso el sistema de ecuaciones normales queda reducido al sistema:



 Pm

 c0 = yk g0 (xk )




k=0
..
 .



 Pm

 cn = yk gn (xk )
k=0

que nos proporcina directamente el valor de los coeficientes.


Por lo tanto, resulta de interés buscar bases del espacio vectorial G que
sean ortonormales. Ello es posible gracias al método de ortonormalización de
Gram-Schmidt, que nos permite calcular una base ortonormal a partir de una
base cualquiera del espacio vectorial. No obstante, en muchas ocasiones no
hace falta recurrir a dicho procedimiento para obtener bases ortonormales.
9.2. SISTEMAS ORTOGONALES Y POLINOMIOS DE CHEBYSHEV187

Por ejemplo, si G es el espacio vectorial de los polinomios de grado menor


o igual que n,

G = Rn [x] = {a0 + a1 x + . . . + an xn , a0 , . . . , an ∈ R} ,

entonces podrı́amos utilizar como base la canónica, esto es:

{g0 (x) = 1, g1 (x) = x, . . . , gn (x) = xn } ,

de tal forma que todo elemento de G se puede escribir como sigue:

X
n
g (x) = ck gk (x) = c0 + c1 x + . . . + cn xn .
k=0

No obstante, aunque esta base es muy natural, no es muy adecuada para nue-
stros propósitos ya que sus elementos son bastante parecidos entre sı́. Como
consecuencia de ello, si tratamos de ajustar una tabla de datos mediante una
función de la forma g (x) = c0 g0 (x) + . . . + cn gn (x), no es sencillo determi-
nar los coeficientes c0 , . . . , cn . En la siguiente figura vemos representados los
polinomios xk , con 1 ≤ k ≤ 11.

Por simplicidad supondremos que la tabla de puntos verifica −1 = x0 <


x1 < . . . < xm = 1. En este caso, una base adecuada la proporcionan los
denominados polinomios de Chebyshev, Tk (x), que vienen definidos por la
siguiente relación de recurrencia:

T0 (x) = 1,
T1 (x) = x,
Tk (x) = 2xTk−1 (x) − Tk−2 (x) , x ≥ 2.
188 CAPÍTULO 9. AJUSTE DE DATOS

De esta forma se tendrá:


T0 (x) = 1,
T1 (x) = x,
T2 (x) = 2x2 − 1,
T3 (x) = 4x3 − 3x,
T4 (x) = 8x4 − 8x2 + 1,
···
En la siguiente figura podemos apreciar la representación gráfica de los
polinomios de Chebyshev Tk (x) , 1 ≤ k ≤ 6.

Alternativamente, podemos escribir Tk (x) = cos (k arccos (x)), para todo


k.
Como hemos comentado anteriormente, a partir de ahora supondremos
que
−1 = x0 < x1 < . . . < xm = 1,
de tal forma que si los primeros polinomios de Chebyshev son usados como
funciones base, el sistema formado por las ecuaciones normales estará bien
condicionado. Si los datos originales no satisfacen la anterior condición, sino
que
a = x0 < x1 < . . . < xm = b,
donde a < −1, y/o b > 1, entonces mediante el cambio de variables:
b−a a+b
x= z+ ,
2 2
tranformamos el intervalo [−1, 1] en el intervalo [a, b].
9.2. SISTEMAS ORTOGONALES Y POLINOMIOS DE CHEBYSHEV189

9.2.2 El algoritmo
En consecuencia, teniendo en cuenta todo lo dicho anteriormente, a contin-
uación se presentará un algoritmo para calcular el polinomio de grado menor
o igual que n + 1 que mejor ajusta la tabla de datos
x x0 x1 ... xm
y y0 y1 ... ym
donde se supone que m >> n.
El algoritmo es como sigue:
1. Determinar el mı́nimo intervalo [a, b] en el que se encuentran x0 , . . . , xm .
Se tendrá:
a = min {x0 , . . . , xm } ,
b = max {x0 , . . . , xm } .

2. Transformar dicho intervalo en el intervalo [−1, 1], mediante el cambio


de variables:
2xk − a − b
xk 7→ zk = , 0 ≤ k ≤ m.
b−a
3. Decidir el valor de n que se va a usar. Usualmente n = 8, 10.
4. Utilizando los polinomios de Chebyshev como base, {T0 (x) , T1 (x) , . . . , Tn (x)},
generar el sistema de ecuaciones formado por las ecuaciones normales:
 ·m ¸

 Pn P Pm

 T0 (zk ) Tj (zk ) cj = yk T0 (zk )

 j=0 k=0 k=0



···



 ·m ¸

 Pn P Pm

 Tn (zk ) Tj (zk ) cj = yk Tn (zk )

j=0 k=0 k=0

5. Resolver el anterior sistema de ecuaciones para obtener c0 , c1 , . . . , cn .


6. Construir la función
g (x) = c0 T0 (x) + c1 T1 (x) + . . . + cn Tn (x) ,
de tal forma que el polinomio buscado es
µ ¶
2x − a − b
g .
b−a
190 CAPÍTULO 9. AJUSTE DE DATOS

9.2.3 Regresión polinomial


Como ya sabemos, una de las aplicaciones más importantes del método de los
mı́nimos cuadrados es la aproximación de una tabla de datos mediante una
curva. Si sabemos de qué tipo tiene que ser la función que produzca dicha
curva, entonces el método de los mı́nimos cuadrados puede ser utilizado para
calcularla explı́citamente.
Por ejemplo, imaginemos que tenemos la siguiente tabla de puntos:

x x0 x1 ... xm
y y0 y1 ... ym

Desde luego utilizando las técnicas tradicionales de interpolación, podemos


encontrar un polinomio de grado m que pase por todos esos puntos de manera
exacta. Ahora bien, si se han cometido errores en la toma de los datos, no
nos interesa encontrar semejante polinomio (pues estarı́amos cometiendo los
mismos errores), sino que es preferible buscar un polinomio de grado menor
que ajuste de manera más aproximada los datos (en el sentido de los mı́nimos
cuadrados).
A continuación mostraremos un procedimiento eficaz para la regresión
polinomial debido a Forsythe (1957). Este método hace uso de un systema
de polinomios ortogonales diseñados ad hoc para cada problema. Ası́, el
objetivo es sustituir la anterior tabla de datos por un polinomio adecuado
de pequeño grado en el que los errores experimentales cometidos en la toma
de los datos hayan desaparecido. En principio, el grado del polinomio es
desconocido.
Debido a razones estadı́sticas, una hipótesis razonable es que existe un
polinomio:

pN (x) = a0 + a1 x + . . . + aN xN ,

que sigue la tendencia de la anterior tabla de datos y que produce valores


satisfaciendo la ecuación:

yi = pN (xi ) + εi , 0 ≤ i ≤ m,

donde εi representa el error cometido al observar el valor yi . Una hipótesis


bastante razonable consiste en suponer que estos errores son variables aleato-
rias independientes que se encuentran normalmente distribuidas.
Sabemos que para un valor fijo arbitrario, n, podemos calcular el poli-
nomio pn (x) mediante el método de los mı́nimos cuadrados (según el cual, los
distintos coeficientes de pn (x) se calculan resolviendo el sistema de las ecua-
ciones normales). Una vez que conocemos el polinomio, podemos calcular su
9.2. SISTEMAS ORTOGONALES Y POLINOMIOS DE CHEBYSHEV191

varianza, σ 2n , mediante la siguiente fórmula:

1 X
m
ε2 + . . . + ε2m
σ 2n = (yi − pn (xi ))2 = 0 .
m − n i=0 m−n

La Estadı́stica nos dice que si la tendencia de los valores de la tabla de datos


es realmente de caracter polinomial de grado N, entonces

σ 20 > σ 21 > . . . > σ 2N = σ 2N+1 = σ 2N+2 = . . . = σ 2m−1 .

Este resultado nos sugiere una estrategia para calcular el polinomio cuando
N es desconocida. Para ello bastará con ir calculando las diferentes varianzas
σ 20 , σ 21 , σ 22 , . . . Ası́ se formará una sucesión decreciente de tal forma que cuando
se alcance un ı́ndice N tal que σ 2N ≈ σ 2N +1 ≈ σ 2N+2 ≈ . . . , entonces pararemos
y consideraremos a pN (x) como el polinomio buscado.
Ahora bien, si las varianzas σ 20 , σ 21 , σ 22 , . . . son calculadas directamente
utilizando su definición, entonces en cada paso tendremos que calcular el
polinomio pi (x) para poder calcular la siguiente varianza. Esto conlleva
mucho esfuerzo computacional y no resulta muy efectivo. No obstante existe
un procedimiento alternativo que nos evita calcularnos todos los polinomios
salvo el deseado. Antes de ver dicho procedimiento, hemos de introducir
algunos conceptos teóricos:

Definición. Dadas dos funciones, f (x) y g (x), tales que en su dominio se


encuentran los puntos x0 , . . . , xm . Entonces, se denomina producto interior
de ambas y se denota por hf, gi a:

X
m
hf, gi = f (xi ) g (xi ) .
i=0

Se verifican, además, las siguientes propiedades:

1. El producto interior es conmutativo: hf, gi = hg, fi.

2. hf, f i > 0 a no ser que f (xi ) = 0 para todo i.

3. Para todo λ ∈ R, se verifica hλf, gi = λ hf, gi.

4. hf, g + hi = hf, gi + hf, hi.

Definición. Se dice que un conjunto de funciones, {f0 , . . . , fn }, es ortogonal


cuando hfi , fj i = 0 si i 6= j.
192 CAPÍTULO 9. AJUSTE DE DATOS

En consecuencia, es posible generar un conjunto ortogonal de polinomios,


{q0 (x) , . . . , qn (x) , . . . }, de manera recursiva teniendo en cuenta las sigu-
ientes fórmulas:

q0 (x) = 1,
q1 (x) = x − α0 ,
qn+1 (x) = (x − αn ) qn (x) − β n qn−1 (x) , n ≥ 1,

donde
hxqn (x) , qn (x)i hxqn (x) , qn−1 (x)i
αn = , βn = .
hqn (x) , qn (x)i hqn−1 (x) , qn−1 (x)i
Se verifica que el sistema de polinomios ortogonales {q0 (x) , . . . , qm−1 (x)}
es una base del espacio vectorial Rm−1 [x]. Además, de la propia construcción
de los polinomios se deduce que cada polinomio qk (x) es de la forma:

qk (x) = xk + (términos de grado inferior) .

Además, si queremos expresar un polinomio de grado n ≤ m − 1, pn (x),


como combinación lineal de esa base, se verificará que:

pn (x) = c0 q0 (x) + c1 q1 (x) + . . . + cm−1 qm−1 (x) ,

donde
hpn (x) , qk (x)i
ck = , 0 ≤ k ≤ m − 1.
hqk (x) , qk (x)i
Una vez que hemos introducido los anteriores conceptos teóricos, volva-
mos al problema que nos ocupaba. Supongamos pues, que F (x) es una
función tal que F (xk ) = yk , con 0 ≤ k ≤ m. Entonces el polinomio, pn (x),
que minimiza la expresión
X
m
(F (xk ) − pn (xk ))2
k=0

viene definido como sigue:

pn (x) = c0 q0 (x) + c1 q1 (x) + . . . + cn qn (x) ,

donde
hF (x) , qk (x)i
ck = .
hqk (x) , qk (x)i
9.2. SISTEMAS ORTOGONALES Y POLINOMIOS DE CHEBYSHEV193

Obsérvese que ck no depende de n, lo cual implica que los distintos polinomios


p0 (x) , p1 (x) , . . . se obtienen sin más que truncar la serie

co q0 (x) + c1 q1 (x) + . . . + cm−1 qm−1 (x) .

Por otro lado, las varianzas pueden ser fácilmente calculadas mediante la
siguiente fórmula:
ρn
σ 2n = ,
m−n
donde
X
m
ρn = (yk − pn (xk ))2 .
k=0

Obsérvese que ρ0 , ρ1 , . . . pueden ser calculadas de manera recursiva mediante


las siguientes relaciones:

hF (x) , q0 (x)i2
ρ0 = hF (x) , F (x)i − ,
hq0 (x) , q0 (x)i

hF (x) , qn (x)i2
ρn = ρn−1 − , n ≥ 1.
hqn (x) , qn (x)i

Ejercicios Propuestos

Ejercicio 1. Usar el método de los mı́nimos cuadrados para encontrar la


función constante que mejor ajusta los siguientes datos:

x −1 2 3
y 5/4 4/3 5/12

Ejercicio 2. Usar el método de los mı́nimos cuadrados para encontrar la


función de la forma y = ax2 + b que mejor ajusta los siguientes datos:

x −1 0 1
y 3.1 0.9 2.9
194 CAPÍTULO 9. AJUSTE DE DATOS

Ejercicio 3. Encontrar la mejor función (en el sentido de los mı́nimos


cuadrados) de la forma y = asen (πx) + b cos (πx) que mejor ajusta la sigu-
iente tabla de datos:

x −1 2 3
y 5/4 4/3 5/12

Ejercicio 4. Se sabe que la viscosidad, V , de un lı́quido varı́a con la tem-


peratura, T , de acuerdo a una ley cuadrática, V = a + bT + cT 2 . Encontrar
los mejores valores a, b, c para la siguiente tabla de datos:

T 1 2 3 4 5 6 7
V 2.31 2.01 1.80 1.66 1.55 1.47 1.41

Ejercicio 5. Determinar la constante c que hace mı́nima la siguiente expre-


sión:
X
m
(f (xk ) − cexk )2 .
k=0

Ejercicio 6. Usando un sistema de polinomios ortogonales, encontrar el


polinomio cuadrático que mejor ajusta las siguientes tablas de datos (en el
sentido de los mı́nimos cuadrados):

x −1 −0.5 0 0.5 1
y −1 0 1 2 1

x −2 −1 0 1 2
y 2 1 1 1 2

9.3 Otras aplicaciones de los mı́nimos cuadra-


dos
9.3.1 Resolución de sistemas incompatibles
El método de los mı́nimos cuadrados puede ser utilizado en otras situaciones.
La primera aplicación que veremos será la resolución de sistemas inconsis-
tentes.
9.3. OTRAS APLICACIONES DE LOS MÍNIMOS CUADRADOS 195

Ası́, sea A · X = B un sistema de m + 1 ecuaciones con n + 1 incógnitas,


tal que m > n, es decir:


 a00 x0 + a01 x1 + . . . + a0n xn = b0


 ···
ak0 x0 + ak1 x1 + . . . + akn xn = bk (9.8)



 · · ·

am0 x0 + am1 x1 + . . . + amn xn = bm

Si tomamos un X = (x0 , x1 , . . . , xm ) arbitrario y lo sustituimos en el anterior


sistema de ecuaciones, entonces existirá una discrepancia entre el miembro
izquierdo de la ecuación k ésima, ak0 x0 + ak1 x1 + . . . + akn xn , y el miembro
derecho, bk . Dicha discrepancia se denomina k-residuo y se denota por εk .
Obviamente, si X fuera la solución del sistema inconsistente (9.8), en-
tonces todos los resı́duos serı́an nulos: ε0 = . . . = εm = 0.
Si, por el contrario, no fuera posible encontrar un vector X cuyos resı́duos
fueran nulos, entonces se dice que el sistema es inconsistente o incompatible.
En este caso, una alternativa para “resolver” el sistema (9.8) consistirá en
minimizar la suma de los cuadrados de los resı́duos:
à n !2
X
m X
m X
Φ (x0 , . . . , xm ) = ε2k = akj xj − bk .
k=0 k=0 j=0

Procediendo como antes, construiremos el sistema:




 ∂Φ

 =0

 ∂x0

..
 .



 ∂Φ

 =0
∂xn
de tal forma que se obtendrá el sistema de ecuaciones normales:
 µm ¶

 P
n P Pm

 ak0 akj xj = bk ak0

 j=0 k=0 k=0


..
 .

 µ ¶

 Pn P
m Pm

 a a x = bk akn
 kn kj j
j=0 k=0 k=0

Este sistema es un sistema de n+1 ecuaciones lineales con n+1 incógnitas que
será compatible siempre que tenga rango máximo la matriz de los coeficientes.
196 CAPÍTULO 9. AJUSTE DE DATOS

Consecuentemente, podrá ser resuelto utilizando el método de la eliminación


Gaussiana y dicha solución se considerará la solución aproximada del sistema
(9.8) en el sentido de los mı́nimos cuadrados.

Ejemplo 73. Encontrar la solución aproximada (en el sentido de los mı́nimos


cudrados) del siguiente sistema incompatible:


 2.12x − 7.86y − 1.01z = 1.97

3.22x − 2.11y + 4.53z = 6.34

 7.29x − 1.23y + 2.53z = 4.22

−1.11x + 3.11y + 5.54z = 3.01

Es sencillo ver que

Φ (x, y, z) = 70.94 − 104.03x + 69.239x2 + 49.38y − 71.75xy


+77.42y 2 − 108.16z + 49.48xz + 24.99yz + 58.63z 2 ,

con lo que el sistema de ecuaciones normales es:



 138.5x − 71.75y + 49.48z = 104
−71.75x + 154.8y + 25.z = −49.38

49.48x + 25y + 117.3z = 108.2

La solución del mismo es

x = 0.26, y = −0.34, z = 0.89,

que será la solución aproximada del sistema del enunciado en el sentido de


los mı́nimos cuadrados.

Hay métodos especı́ficos para resolver este problema sin acudir al método
general descrito anteriormente, y que ganan en eficiencia y precisión. Uno
de tales algoritmos para resolver el sistema incompatible A · X = B, consiste
en factorizar la matriz A como A = Q · R, donde Q es una matriz de orden
(m + 1) × (n + 1) y ortogonal, y R es una matriz cuadrada de orden n + 1
tal que rii > 0 y rij = 0 para j < i. Entonces, la solución en el sentido de los
mı́nimos cuadrados se obtiene utilizando un algoritmo denominado proceso
modificado de Gram-Schmidt.
Otro algoritmo más elaborado utiliza la descomposición en valores singu-
lares de la matriz A. Ası́, se tendrá que A = U ·D·V T , donde U es una matriz
cuadrada de orden m + 1 y ortogonal, V es una matriz cuadrada de orden
n + 1 y ortogonal, y D es una matriz diagonal con coeficientes no negativos
de orden (m + 1) × (n + 1). En este caso se procederá como sigue:
9.3. OTRAS APLICACIONES DE LOS MÍNIMOS CUADRADOS 197

Definamos
ρ = inf {kA · X − Bk tal que X ∈ Rn } .
Entonces la solución mı́nima de nuestro sistema es el punto de menor norma
en el conjunto
{X ∈ Rn tal que kA · X − Bk = ρ} .
Si el sistema es consistente, entonces ρ = 0, y estaremos buscando simple-
mente el punto de menor norma entre todas las soluciones del sistema. Si el
sistema es inconsistente, entonces nosotros queremos que A · X sea lo más
próximo posible a B, esto es kA · X − Bk = ρ. Si hay más de un punto sat-
isfaciendo esta propiedad, entonces elegiremos aquél que esté más próximo
al origen.
Consecuentemente, la solución mı́nima buscada del sistema A · X = B es
A · B, donde A+ = V · D+ · U T es la matriz pseudoinversa de la matriz A.
+

Ejemplo 74. Determinar la mejor solución aproximada del siguiente sis-


tema de ecuaciones lineales incompatible:

 2x + 3y = 1
x − 4y = −9

2x − y = −1
En notación matricial, este sistema se escribe como sigue:
A · X = B,
donde
   
2 3 µ ¶ 1
x
A =  1 −4  , X= , B =  −9  .
y
2 −1 −1
La descomposición en valores singulares de la matriz A es A = U · D · V T ,
donde
   
0.58835 −0.6667 −0.4576 5.0990 0 µ ¶
0 −1
U =  −0.7845 −0.3333 −0.5230  , D =  0 3 ,V = ,
1 0
−0.1961 −0.6667 0.7191 0 0

Consecuentemente, la matriz pseudoinversa de A es


µ ¶
+ + T 0.2222 0.1111 0.2222
A =V ·D ·U = .
0.1154 −0.1538 −0.0385
198 CAPÍTULO 9. AJUSTE DE DATOS

Por lo tanto, la mejor solución en el sentido de los mı́nimos cuadrados es:


µ ¶
+ −1
A ·B = ,
1.5385
es decir x = −1 e y = 1.5385.

9.3.2 Aproximación de una función en un intervalo


Como sabemos, en las dos primeras secciones de este capı́tulo hemos de-
sarrollado el denomiado método de los mı́nimos cuadrados para ajustar una
tabla finita de puntos. Ahora bien, podemos utilizar este mismo método para
aproximar una función, f , que esté definida sobre un intervalo [a, b] ⊂ R.
Imaginémonos pues, que aproximamos la función f mediante la función
g (x) = c0 g0 (x) + . . . + cn gn (x) .
Entonces es natural intentar minimizar la expresión
Z b
Φ (c0 , . . . , cn ) = [g (x) − f (x)]2 dx, (9.9)
a
escogiendo los coeficientes de manera apropiada.
En algunas aplicaciones es conveniente suponer que las funciones f y g
tienen mayor coincidencia en ciertas partes del intervalo [a, b]. Para ello,
podemos modificar la expresión (9.9) incluyendo una función peso positiva,
w (x), tal que w (x) = 1 en aquellas partes en las que se debe producir la
igualdad entre f y g. En consecuencia, tendremos:
Z b
Φ (c0 , . . . , cn ) = [g (x) − f (x)]2 w (x) dx.
a
Al igual que antes, hemos de imponer el sistema


 ∂Φ

 =0

 ∂c0

..
 .



 ∂Φ

 =0
∂cn
que nos proporcionará el sistema de ecuaciones normales:
 n hR i Rb
 P b

 g 0 (x) gj (x) w (x) dx cj = f (x) g0 (x) w (x) dx

 j=0 a a

···

 n hR
P i Rb

 b
g (x) g (x) w (x) dx cj = a f (x) gn (x) w (x) dx
 a n j
j=0
9.3. OTRAS APLICACIONES DE LOS MÍNIMOS CUADRADOS 199

Éste es un sistema de n + 1 ecuaciones con n + 1 incógnitas que puede ser


resuelto utilizando el método de la eliminación Gaussiana.
Al igual que en las secciones previas, todas las consideraciones hechas so-
bre la elección del sistema de funciones base, son válidas aquı́. Consecuente-
mente, la situación ideal es aquella en la que las funciones base, g0 , . . . , gn ,
posean la propiedad de la ortogonalidad2 :
Z b
gi (x) gj (x) w (x) dx = 0 si i 6= j.
a

Ası́ podemos considerar los polinomios de Chebyshev como ejemplo de dicha


propiedad, ya que:

Z 1  0, si i 6= j
¡ ¢
2 −1/2
Ti (x) Tj (x) 1 − x dx = π/2, si i = j > 0
−1 
π, si i = j = 0
−1/2
Obsérvese que la función peso w (x) = (1 − x2 ) asigna un peso mayor al
final del intervalo [−1, 1].

9.3.3 Sistemas de ecuaciones normales no lineales


En esta última sección veremos dos casos en los cuales aparecen ecuaciones
no lineales a la hora de aplicar el método de los mı́nimos cuadrados.

1. Supongamos que una tabla de puntos se quiere ajustar mediante una


función de la forma y = ecx , donde c ∈ R. Aplicando el método de los
mı́nimos cuadrados, tendremos que la función a minimizar es:
X
m
Φ (c) = (ecxk − yk )2 ,
k=0

con lo que el mı́nimo se da cuando

∂Φ Xm
0= =2 (ecxk − yk ) ecxk xk .
∂c k=0

2
Nótese que si una colección de funciones no nulas, g0 , . . . , gn , es ortogonal de acuerdo
a esta definición, entonces la secuencia λ0 g0 , . . . , λn gn será ortonormal para los valores
"Z #−1/2
b
2
λi = gj (x) w (x) dx .
a
200 CAPÍTULO 9. AJUSTE DE DATOS

Ésta es una ecuación no lineal y puede ser resuelta mediante el método


de Newton, siendo la solución calculada aproximada y no exacta. A
este tipo de dificultad se le denomina problema no lineal de los mı́nimos
cuadrados. Podrı́amos resolver este problema mediante el cambio de
variables z = ln (y), con lo que z = cx. En consecuencia, el problema
de minimizar la función
Xm
Φ (c) = (cxk − zk )2 ,
k=0

es trivial y se obtiene:
z0 x0 + z1 x1 + . . . + zm xm
c= .
x20 + x21 + . . . + x2m
2. Supongamos, por otro lado, que la tabla de datos se quiere ajustar
mediante la función
y = a sen (bx) .
¿Podemos usar el método de los mı́nimos cuadrados para determinar
los parámetros a y b? Obsérvese en primer lugar que que el parámetro b
aparece en la anterior función en forma no lineal. De acuerdo al método
de los mı́nimos cuadrados, se debe minimizar la función:
Xm
(a sen (bxk ) − yk )2 .
k=0

El sistema de ecuaciones normales es:


 P m

 2 (a sen (bxk ) − yk ) sen (bxk ) = 0

k=0

 Pm
 2 (a sen (bxk ) − yk ) axk cos (bxk ) = 0
k=0

Si se conociera b, a se podrı́a obtener de cualquiera de las dos ecua-


ciones. El valor correcto de b serı́a aquel que diera lugar al mismo valor
de a en las dos ecuaciones. En consecuencia, cada una de las dos ecua-
ciones normales debe ser resuelta para obtener el valor de a, y dichos
valores deben ser igualados:
Pm Pm
yk sen (bxk ) xk yk cos (bxk )
k=0 k=0
Pm = Pm .
2
(sen (bxk )) xk sen (bxk ) cos (bxk )
k=0 k=0

A partir de esta ecuación, se puede obtener el valor de b.


Parte II
Implementación Computacional

201
Capı́tulo 10
Consideraciones generales

En esta primera sección se mostrarán algunas de las caracterı́sticas funda-


mentales que presenta el programa MatLab. Ası́:

1. La sintaxis del programa MatLab distingue entre mayúsculas y minúsculas.


2. La lı́nea de comandos de MatLab se representa por À (prompt de la
máquina). A continuación se escribirá la operación que se desee hacer
y se pulsará la tecla Intro para realizarla:
À 2+2

ans =
5

3. Las operaciones se avalúan por orden de prioridad: primero las poten-


cias, después las multiplicaciones y divisiones y, finalmente, las sumas
y las restas. Las operaciones de igual prioridad se realizan de izquierda
a derecha:
À 2/2*3-5 À 2/(2*3)-5

ans = ans =
-2 -4.6667

4. Los comentarios que se realizan en MatLab deben ir precedidos por


el sı́mbolo %. Es decir, MatLab ignorará todo lo que vaya precedido
por el sı́mbolo %.
À %3-2
À

203
204 CAPÍTULO 10. CONSIDERACIONES GENERALES

5. Los cálculos que se realizan que no se asignan a una variable en con-


creto, se asignan a la variable de respuesta por defecto que es ans:

À cos(pi)

ans =
-1

À ans
-1

No obstante, si el cálculo se asigna a una variable, el resultado queda


guardado en dicha variable:

À x = sin(3*pi/2)

ans =
-1

Àx
-1

6. Si al final de la instrucción se añade un punto y coma (;), MatLab


no muestra el resultado de la operación aunque sı́ la realiza:

À z = log(3);

Àz

ans =
1.0986

7. MatLab puede trabajar con números complejos sin ningún tipo de prob-
lema. La unidad imaginaria se representa por la variable i ó por la
variable j:

À sqrt(-2) À 2*i-i^4

ans = ans =
0+1.4142i -1.000+2.000i
205

8. El usuario puede determinar el número de decimales con que MatLab


realiza los cálculos. Hay que indicar que ello no modifica la precisión
con la que se hacen los cálculos, sino con el aspecto con que éstos
aparecen por pantalla. Por defecto se utilizan cuatro cifras decimales:

À exp(2.3)

ans =
9.9742

Podemos usar la instrucción format long para mostrar de forma ex-


tendida el número de decimales:

À format long
À exp(2.3)

ans =
9.97418245481472

9. El usuario puede conocer las variables que ha utilizado durante la sesión


con la instrucción who:

À who

Yourvariables are:
ans x z

Si se quiere más información, puede utilizarse whos:

À whos

Name Size Bytes Class

ans 1×1 8 double array


x 1×1 8 double array
z 1×1 8 double array
Grand total is 3 elements using 24 bytes

Además el usuario puede borrar el valor asignado a una variable con la


206 CAPÍTULO 10. CONSIDERACIONES GENERALES

instrucción clear:
À z = log(3)

ans =
1.0986
À clear z
Àz

??? Undefined function or variable ’z’.


Capı́tulo 11

Vectores y matrices

En esta sección veremos cómo MatLab puede trabajar con vectores y ma-
trices. De hecho, MatLab interpreta todas las variables como matrices1
(en particular, los escalares son matrices 1 × 1), y las operaciones habituales
(suma: +, resta: −, producto: ∗) las entiende por defecto como operaciones
matriciales.
MatLab trabaja con vectores y matrices siguiendo las siguientes direc-
trices:

1. Las matrices se indican mediante corchetes, de tal forma que los ele-
mentos de una misma fila se separan por comas (,) o espacios ( ), y las
distintas filas vienen separadas mediante punto y coma (;)

À M=[1,2,3;4 5 6;7, 8 9]

M=
1 2 3
4 5 6
7 8 9

2. Dado que los vectores son matrices de una sóla fila o columa, entonces

1
Obsérvese que el nombre MatLab procede de Matrix Laboratory.

207
208 CAPÍTULO 11. VECTORES Y MATRICES

se construyen como tales:

À V=[1,2,3]

V=
1 2 3

À W=[1;2;3]

W=
1
2
3

3. Podemos acceder a los elementos de una matriz o vector a través de


su ı́ndice. Por ejemplo, mediante la instrucción M(1,3) estarı́amos
obteniendo el coeficiente (1, 3) de la matriz M:

À M(1,3)

ans =
3

À V(2)

ans =
2

Podemos incluso cambiar un determinado elemento de un vector o una


matriz sin más que realizar una asignación mediante el operador “=”:

À M(2,3)=0

M=
1 2 3
4 5 0
7 8 9

4. Para crear un vector con valores equidistantes se utiliza la instrucción:

<inicio>:<incremento>:<fin>
209

de tal forma que construirı́amos el vector:

(inicio, inicio + incremento, inicio + 2 · incremento, . . . , fin) .

À U=23:2:32

U=
23 25 27 29 31

À 1.2:-1.4:-4

ans=
1.2000 − 0.2000 − 1.6000 − 3.0000

5. El operador “:” sirve también para especificar un rango de subı́ndices


210 CAPÍTULO 11. VECTORES Y MATRICES

de un vector o de una matriz:


À U(2:4)

ans=
25 27 29

À M(4:7)

ans =
2 5 8 3

À M(1:2,2:3)

ans =
2 3
5 0

À M(1,:)

ans =
1 2 3

À M(:,3)

ans =
3
0
9

À M(1:2,[1,3])

ans =
1 3
4 0
211

6. Existen instrucciones especı́ficas para construir determinados tipos de


matrices:

À diag(U)
À eye(3)
ans =
ans =
23 0 0 0 0
1 0 0
0 25 0 0 0
0 1 0
0 0 27 0 0
0 0 1
0 0 0 29 0
0 0 0 0 31
À ones(3)
À diag(diag(M))
ans =
1 1 1
ans =
1 1 1
1 0 0
1 1 1
0 5 0
0 0 9
À zeros(3)
À tril(M)
ans =
0 0 0
ans =
0 0 0
1 0 0
0 0 0
4 5 0
7 8 9
À zeros(3,4)
À triu(M)
ans =
0 0 0 0
ans =
0 0 0 0
1 2 3
0 0 0 0
0 5 0
0 0 9
À rot90(M)
À rand(2,3)
ans =
3 0 9
ans =
2 5 8
0.9501 0.6068 0.8913
1 4 7
0.3211 0.4860 0.7621

7. MatLab puede realizar infinidad de operaciones con vectores y matri-


212 CAPÍTULO 11. VECTORES Y MATRICES

ces. Una pequeña muestra es la siguiente:

À A=[1,2;3,4];B=ones(2);
À W=A(:,1);

À 2*A % Multiplicación por un escalar

ans =
2 4
6 8

À A’ % Calcula la transpuesta

ans =
1 3
2 4

À A+B % Calcula la suma

ans =
2 3
4 5

À A*B % Calcula el producto

ans =
3 3
7 7

À A*W % Calcula el producto

ans =
7
15
213

À A*W’

??? Error using ==> *


Inner matrix dimensions must agree.

À inv(A) % Calcula la inversa

ans =
−2.0000 1.0000
1.5000 −0.5000

À det(B) % Calcula el determinante

ans =
0

À A^6 % Calcula la potencia

ans =
5743 8370
12555 18298

À U(1,1:2)*W % Calcula el producto escalar

ans =
98

À size(M) % Calcula la dimensión de la matriz

ans=
3 3
214 CAPÍTULO 11. VECTORES Y MATRICES

À size(W) % Calcula la dimensión del vector

ans=
2 1

À length(U) % Calcula el número de coordenadas del vector

ans=
5

8. Es posible también efectuar operaciones con vectores y matrices “ele-


mento a elemento”. Para ello bastará con agregar un punto (.) antes
del operador correspondiente. Ası́:

À A.*B

ans=
1 2
3 4

À B./A

ans=
1.000 0.5000
0.3333 0.2500

À A.^3

ans=
1 8
27 64
215

9. Además, MatLab permite aplicar una determinada función a un vec-


tor o a una matriz:
À log(A)

ans=
0 0.6931
1.0986 1.3863

À sin(W)

ans=
0.8415
0.1411

Problemas Propuestos
Problema 1. Calcular la norma euclı́dea2 de un vector arbitrario V.

Problema 2. Construye un vector cuyos elementos son los valores de n2 ,


para n = 1, 2, . . . , 8.

Problema 3. Dado un número entero positivo n, construye la matriz

M = (mij )1≤i,j≤n ,

tal que
½
1, si |i − j| = 1
mij =
0, en otro caso

2
Recuérdese que la norma euclı́dea de un vector v = (v1 , . . . , vn ), es:
q
2 2
kvk2 = |v1 | + . . . + |vn |
216 CAPÍTULO 11. VECTORES Y MATRICES
Capı́tulo 12

Cálculo diferencial e integral

La derivación y la integración son dos operaciones básicas en el estudio y


las aplicaciones del Cálculo. Además son utilizadas con gran asiduidad en
multitud de disciplinas de la Ingenierı́a. De ahı́ que dediquemos una sección
a su tratamiento mediante MatLab.
Para poder derivar e integrar una función mediante las correspondientes
instrucciones implementadas en MatLab, es necesario haber definido previ-
amente de manera simbólica dicha función:

À f=’cos(x)’

f=
cos(x)

À g=’x^2+3*x-1’

g=
xˆ2 + 3 ∗ x − 1

Hay que destacar que MatLab considera simbólica cualquier expresión que
venga definida entre comillas simples. Las variables de estas expresiones son
variables simbólicas, es decir, sin valor numérico asignado. Utilizaremos la
instrucción symvar para conocer qué variables simbólicas posee una determi-
nada expresión:

À symvar(g)

ans =
’x’

217
218 CAPÍTULO 12. CÁLCULO DIFERENCIAL E INTEGRAL

Pues bien, la instrucción que utilizaremos para derivar funciones previa-


mente definidas es diff:

À diff(f)

ans =
-sin(x)

À diff(g)

ans =
2*x+3

Obsérvese que no hemos especificado la variable respecto a la cual se va a


realizar la derivada. MatLab entiende por defecto que dicha variable es la
determinada por symvar.

À h=’2*sin(x)-4*log(y)’;
À diff(h,’x’)

ans =
2*cos(x)

ÀÀ diff(h,’y’)

ans =
-4/y

ÀÀ diff(diff(h,’x’),’y’)

ans =
0

Se puede también calcular la derivada n-ésima de una determinada fun-


ción:

À diff(h,’x’,3)

ans =
-2*cos(x)

Para calcular la integral indefinida de una función se utiliza la instrucción


219

int como sigue:

À int(h,’x’)

ans =
-2*cos(x)-4*log(y)*x

À int(h,’y’)

ans =
2*sin(x)*y-4*y*log(y)+4*y

À int(int(h,’x’),’y’)

ans =
-2*cos(x)*y-4*x*y*log(y)+4*x*y

Además podemos calcular la integral definida de una función:

À funcion=’tan(x)-x^2’
À int(funcion,’x’,1,2)

ans =
-log(-cos(2))-7/3+log(cos(1))

À int(int(h,’x’,1,2),’y’,2,3)

ans =
-2*cos(2)-12*log(3)+4+2*cos(1)+8*log(2)
220 CAPÍTULO 12. CÁLCULO DIFERENCIAL E INTEGRAL
Capı́tulo 13
Representación gráfica de
funciones

El programa MatLab puede representar gráficos bidimensionales (curvas) y


tridimensionales (superficies).
La instrucción básica que utiliza MatLab para dibujar una gráfica de
una función en una sóla variable es plot:
À t=(0:1:10);
À curva=cos(t);
À plot(t,curva)

Como se puede observar, creamos un vector, t, con los puntos en los


que vamos a valorar la función a representar, que hemos almacenado en la

221
222 CAPÍTULO 13. REPRESENTACIÓN GRÁFICA DE FUNCIONES

variable curva. Cuantos más puntos tomemos, más “suave” será la función
construida:

À t=(0:0.5:10);
À curva=cos(t);
À plot(t,curva)

MatLab también puede representar una lista de puntos mediante esta


instrucción:

À X=[1:20];
À Y=X.^3;
À plot(X,Y)
223

Otra función, mucho más versatil que la anterior, y que también permite
representar funciones en el plano es fplot:

À fplot(’tan(x)’,[-1,1])

Mediante dicha función podemos variar el intervalo de la ordenada:

À fplot(’tan(x)’,[-1,1,0,4])
224 CAPÍTULO 13. REPRESENTACIÓN GRÁFICA DE FUNCIONES

Podemos incluso representar varias funciones en la misma ventana:

À funciones=’[cos(x),sin(x),x^2]’
À fplot(funciones,[0,pi])

Por otro lado la instrucción básica utilizada por MatLab para representar
225

superficies es plot3:

À X=[1:20];
À Y=X.^2;
À Z=X.^3;
À plot3(X,Y,Z)

Obsérvese que lo que se hace es representar en el espacio tridimensional


el conjunto de puntos:

©¡ ¢ ª
x0 , x20 , x30 , x0 = 1, 2, . . . , 20 ,

y después unirlos mediante una curva.


Otra instrucción, más potente que la anterior, es surf, combinada con
meshgrid:

À [X,Y]=meshgrid(-7.5:0.5:7.5);
À Z = sin(sqrt(X.ˆ2 + Y.ˆ2))./sqrt(X.ˆ2 + Y.ˆ2);
À surf(X, Y, Z)
226 CAPÍTULO 13. REPRESENTACIÓN GRÁFICA DE FUNCIONES

Si, en vez de surf, se utiliza surfc, se representan además las curvas de


nivel:
Capı́tulo 14

Manipulación de ecuaciones

MatLab permite gestionar (simplificar, expandir, resolver, etc.) diferentes


tipos de ecuaciones: lineales, no lineales, trascendentes, polinómicas, etc. Las
instrucciones más importantes implementadas a tal fin son las siguientes:

Mediante la instrucción solve podemos resolver una ecuación en la vari-


able especificada:

À solve(’xˆ3 − xˆ2 + x − 1’,’x’)

ans =
[1]
[i]
[-i]

À solve(’cos(x) − x’,’x’)

ans =
.73908513321516064165531208767387

227
228 CAPÍTULO 14. MANIPULACIÓN DE ECUACIONES

Además, se pueden resolver sistemas de ecuaciones:

À [x,y,z]=solve(’x+y+z=1’,’3*x+y=3’,’x-2*y-z=0’,’x’,’y’,’z’)

x=
4/5

y=
3/5

z=
−2/5

Además podemos utilizar la instrucción fzero para calcular la solución


de una determinada función cerca de un punto determinado:

À fzero(’xˆ2 − 4’,1)

ans =
2

À fzero(’xˆ2 − 4’,-1)

ans =
−2

À [fzero(’x*sin(x)-1/2’,2), fzero(’x*sin(x)-1/2’,4)]

ans =
0.7408 2.9726

MatLab permite introducir un polinomio mediante un vector de coefi-


cientes. Ası́ el vector

[an , an-1 , ..., a1 , a0 ]

representará el polinomio

an xn + an−1 xn−1 + . . . + a1 x + a0 .

En este caso podemos utilizar la instrucción roots para calcular las raı́ces
229

del polinomio considerado:


À polinomio = [1, 2, 3]

ans =
-1.0000+1.4142i
-1.0000-1.4142i
Podemos expandir lo máximo posible una expresión algebraica, realizando
totalmente los productos y potencias mediante la instrucción expand. Es
necesario indicarle a MatLab las variables simbólicas utilizadas mediante la
instrucción syms.
À syms x y
À expand((x-1)^4)

ans =
x^4-4*x^3+6*x^2-4*x+1

À expand((cos(x+y))^2)

ans =
cos(x)^2*cos(y)^2-2*cos(x)*cos(y)*sin(x)*sin(y)+sin(x)^2*sin(y)^2

À expand(exp((x+y)^2))

ans =
exp(x^2)*exp(x*y)^2*exp(y^2)

La instrucción factor escribe una expresión algebraica expandida como


producto de factores:
À syms x y
À factor(x^3-y^3)

ans =
(x-y)*(x^2+x*y+y^2)

À factor(x^4-4*x^3+6*x^2-4*x+1)

ans =
(x-1)^4
230 CAPÍTULO 14. MANIPULACIÓN DE ECUACIONES

Mediante la instrucción simplify se simplifica lo más posible una expre-


sión algebraica:

À syms x y z
À simplify(exp(z*log(sqrt(x+y))))

ans =
(x+y)^(1/2*z)

À simplify(sin(x)^2+cos(x)^2)

ans =
1

Con la instrucción collect se agrupa la expresión algebraica polinómica


en potencias ordenadas de las variables indicadas:

À syms x y z
À collect(2*x-2*x*y,x)

ans =
(2-2*y)*x

À collect(y*x*z-x*z^3+x*y^2-2*x^2+y^2*z^4-log(z))

ans =
-2*x^2+(y*z-z^3+y^2)*x+y^2*z^4-log(z)

Hay que destacar que MatLab permite trabajar de manera muy eficiente
con polinomios ya que, como hemos visto anteriormente, el tratamiento de
los mismos lo hace como vectores. MatLab posee instrucciones particulares
para trabajar con ellos (como hemos visto con la instrucción roots para el
cálculo de sus raı́ces). Otras instrucciones especı́ficas para el tratamiento de
polinomios son las siguentes:

1. Mediante la instrucción poly se obtiene el polinomio cuyas raı́ces son


las componentes del vector especificado, o bien, se obtiene el polinomio
231

caracterı́stico de la matriz especificada:

À vector=[1,2,3]
À poly(vector)

ans =
1 -6 11 -6

À matriz=[1,2,3;4,5,6;7,8,9]
À poly(matriz)

ans =
1.0000 -15.0000 -18.0000 -0.0000

2. Para evaluar un polinomio en un punto se utiliza la instrucción polyval:

À polinomio=[2,3,1,0,6]
À polyval(polinomio,3)

ans =
258

3. Mediante la instrucción conv se calcula el producto de dos polinomios


especificados en términos del vector de sus coeficientes:

À p=[1,2,3,4,5]
À q=[5,4,3,2,1]
À conv(p,q)

ans =
5 14 26 40 55 40 26 14 5

4. Mediante la instrucción poly2sym se convierte un vector en un poli-


nomio simbólico cuyos coeficientes son los elementos del vector

À p=[1,2,3,4,5]
À poly2sym(p)

ans =
x^4+2*x^3+3*x^2+4*x+5
232 CAPÍTULO 14. MANIPULACIÓN DE ECUACIONES

Por su parte, la instrucción sym2poly convierte un polinomio simbólico


en un vector cuyos elementos son los coeficientes del polinomio:

À polinomio=x^2+x+1
À sym2poly(polinomio)

ans =
1 1 1

5. La instrucción polyder da el vector cuyos elementos son los coeficientes


del polinomio derivada primera del especificado:

À polyder(p)

ans =
4 6 6 4
Capı́tulo 15

Programación en MatLab

MatLab puede utilizarse como un lenguaje de programación de alto nivel.


Los programas de MatLab suelen escribirse en ficheros denominados M-
ficheros.

15.1 Creación de M-ficheros


Para crear un M-fichero se utiliza el Editor que se activa “cliqueando” en
File→New →M-file. El Editor se abre con un fichero en blanco en el cual
crearemos el M-fichero introduciendo las instrucciones de MatLab ade-
cuadas para realizar el objetivo del programa.
El M-fichero debe ser almacenado en disco con la extensión “.m” dentro
del path de subdirectorios de MatLab.
Para ejecutar un M-fichero basta con teclear su nombre (sin extensión)
en modo interactivo sobre la ventana de comandos y pulsar Enter. MatLab
interpreta secuencialmente todos los comandos o sentencias incluidos en las
diferentes lı́neas del M-fichero y los ejecuta. Normalmente no aparecen en
pantalla los literales de los comandos que MatLab va interpretando, salvo
que se active el comando echo on, y sólo se van viendo los resultados de las
ejecuciones sucesivas de los comandos interpretados

15.2 Definición de funciones


La instrucción function permite la definición de funciones a medida en Mat-
Lab, constituyendo una de las aplicaciones más útiles de los M-ficheros. La

233
234 CAPÍTULO 15. PROGRAMACIÓN EN MATLAB

sintaxis de la misma es la siguiente:

function #parámetros de salida#


= #nombre de la f unción#(#parámetros de entrada#)

#cuerpo de la f unción#

Cuando los parámetros de salida son más de uno, se escriben entre corchetes
y separados por comas. Si los parámetros de entrada son más de uno, se sep-
aran por comas. El cuerpo de la función es la sintaxis que la define, y debe
incluir comandos o instrucciones que asignen valores a los parámetros de sal-
ida. Cada comando o instrucción del cuerpo suele ir en una lı́nea que finaliza
con una coma o con un punto y coma en caso de que se definan variables
(para evitar repeticiones en las salidas al ejecutar la función). Una vez que la
función ha sido construida, se guarda en un M-fichero denominado #nombre
de la función#.m para su uso posterior.
Obsérvese que es recomendable guardar las funciones como M-ficheros
cuyo nombre sea igual al nombre de la propia función y en un subdirectorio
que esté reconocido por MatLab. Para ver los subdirectorios reconocidos
por MatLab, se ha de “cliquear” en File→Set Path. Si se quiere añadir
uno nuevo, basta con “cliquear” en Add Folder... (si sólo se quiere añadir el
directorio especificado a continuación), o en Add with Subfolders (si se quiere
añadir el directorio especificado a continuación con todos sus subdirectorios).

Ejemplo. Vamos a construir una función, que denominaremos media, que


calcule la media aritmética de un conjunto de datos.
Para ello crearemos un M-fichero, media.m, en el que escribiremos las
siguientes instrucciones:

function m = media(vector)
% Esta función calcula la media aritmética
m = sum(vector)/length(vector)

Ası́ pues, si queremos calcular la media aritmética de los valores {1, 2, 3},
bastará con que tecleemos desde la ventana de comandos del MatLab:

À media([1,2,3])

ans=
2
15.3. VARIABLES LOCALES Y GLOBALES 235

Obsérvese, además, que si tecleamos help media, MatLab nos devolverá el


texto que hemos escrito como comentario en el M-fichero, esto es:

À help media

Esta función calcula la media aritmética

La evaluación de una función en sus argumentos (o parámetros de en-


trada) puede llevarse a cabo también mediante la instrucción feval, cuya
sintaxis es como sigue:

feval(’nombre de la f unción’,argumento 1, argumento 2,...)

Ası́
À feval(’media’,[1,2,3])

ans=
2

Problema. Construir una función que calcule las dos raı́ces de un polinomio
de segundo grado.

15.3 Variables locales y globales


Usualmente, cada función de MatLab construida como un M-fichero con-
tiene a sus variables como variables locales, es decir, como variables cuyo
efecto está limitado al interior del M-fichero, sin afectar a otros M-ficheros
o a la ventana de comandos del programa. No obstante, es posible definir
variables en el interior de M-ficheros de modo que tengan validez fuera de los
mismos. Ello se consigue con la instrucción global.

15.4 Operadores relacionales


MatLab posee sı́mbolos para denotar las operaciones relacionales. Los op-
eradores relacionales ejecutan comparaciones elemento a elemento entre dos
matrices y devuelven una matriz del mismo tamaño cuyos elementos son ceros
si la correspondiente relación es cierta, o unos si la correspondiente relación
es falsa. Los operadores relacionales también permiten comparar escalares
con vectores o matrices, en cuyo caso se compara el escalar con todos los
elementos de la matriz.
236 CAPÍTULO 15. PROGRAMACIÓN EN MATLAB

Los operadores relacionales de los que dispone MatLab son los siguientes:

< menor
<= menor o igual
> mayor
>= mayor o igual
== igualdad
∼= desigualdad

15.5 Control de flujo


El uso de funciones recursivas, condicionales y definidas a trozos es muy
común en Matemáticas. Para la implementación computacional de este tipo
de funciones es necesario la utilización de bucles. Obviamente, la definición
de estas funciones se llevará a cabo a través de M-ficheros mediante el uso
de una serie de instrucciones que pasamos a comentar.

15.5.1 La instrucción for


Esta instrucción permite la ejecución reiterada de un comando o grupo de
comandos un número determinado de veces. La sintaxis de esta instrucción
es la siguiente:

for variable = expresion


comandos
end

El conjunto de comandos se separan por comas, a no ser que algún comando


definiera una variable, en cuyo caso se finalizarı́a con punto y coma para
evitar repeticiones en la salida.

Ejemplo. Dado un número entero positivo n, construir una función que


calcule la matriz

M = (mij )1≤i,j≤n ,

tal que

i−j
mij = .
i+j
15.5. CONTROL DE FLUJO 237

Bastará con que creemos en un M-fichero la función matij como sigue:


function matriz = matij(n)
for i=1:n
for j=1:n
matriz(i,j)=(i-j)/(i+j);
end
end
Ası́, a modo de ejemplo:

À matij(3)

ans=
0 -0.3333 -0.5000
0.3333 0 -0.2000
0.5000 0.2000 0
Problema. Construir una función que calcule la matriz de Hilbert de orden
n, siendo dicha matriz de la siguiente forma:
1
H = (hij )1≤i,j≤n , hij = .
i+j−1

15.5.2 La instrucción while


Esta instrucción permite la ejecución de un comando o grupo de comandos un
número determinado de veces mientras que se cumpla una condición lógica
especificada. La sintaxis de esta instrucción es como sigue:
while condición
comandos
end

Ejemplo. Calcular el mayor número cuyo factorial no sea superior a 10100

Bastará con que creemos el siguiente M-fichero, denominado factoriza-


cion.m:
n=1;
while prod(1:n)<10^100
n=n+1;
end
n
238 CAPÍTULO 15. PROGRAMACIÓN EN MATLAB

Ası́, si lo ejecutamos:
À factorizacion

ans=
70
Problema. Construir, usando la instrucción while, una función que calcule
el número entero más grande, n, tal que

1 + 2 + . . . + n < 10100

15.5.3 La instrucción if
Mediante esta instrucción se pueden ejecutar secuencias de comandos si se
cumplen determinadas condiciones. La sintaxis de este bucle es la siguiente:
if condición
comandos
end
En este caso particular, se ejecutan los comandos si la condición es cierta.
No obstante podemos tener una sintaxis un poco más general:
if condición
comandos 1
else
comandos 2
end
En este caso se ejecutan los comandos 1 si la condición es verdadera, y se
ejecutan los comandos 2 si la condición es falsa.
Además, se pueden anidar varias instrucciones if, utilizándose para ello
la instrucción elseif:
if condición 1
comandos 1
elseif condición 2
comandos 2
elseif condición 3
comandos 3
··· ···
else
end
15.5. CONTROL DE FLUJO 239

En este caso se ejecutan los comandos 1 si la condición 1 es cierta, se


ejecutan los comandos 2 si la condicion 1 es falsa y la condición 2 es
verdadera, se ejecutan los comandos 3 si las condiciones 1 y 2 son falsas y
la condición 3 verdadera, etc.

Ejemplo. Dado un número entero positivo n, construir una función que


calcule la matriz

M = (mij )1≤i,j≤n ,

tal que
½
1, si |i − j| = 1
mij =
0, en otro caso

Definiremos la función banda mediante el M-fichero, banda.m, para im-


plementar dicho cálculo. Las lı́neas de comando de dicho fichero son las
siguientes:

function matriz = banda(n)


% Esta función calcula una matriz de banda de
% orden 1 con unos como coeficientes no nulos
for i=1:n
for j=1:n
if abs(i-j)==1
matriz(i,j)=1;
else
matriz(i,j)=0;
end
end
end

Problema. Construir una función que indique si un número introducido es


negativo, par o impar1 .

15.5.4 Las instrucción switch


La instrucción switch ejecuta ciertos comandos basándose en el valor que
tome una determinada variable o expresión. La sintáxis de la misma es la
1
Indicación. La instrucción rem(a,b) da el resto de la división del número a entre el
número b.
240 CAPÍTULO 15. PROGRAMACIÓN EN MATLAB

siguiente:

switch expresión
case valor 1
comandos 1
case valor 2
comandos 2
···
otherwise
comandos finales
end

Se ejecutan los comandos x cuando el valor que toma la expresión coincide


con el valor x; si ninguno de dichos valores es tomado por la expresión,
entonces se ejecuntan los comandos finales.

Ejemplo. Construir una función que indique si el determinante de una


matriz es igual a 0, 2 ó a otro valor.
La función la denominaremos valdet y vendrá construida en el fichero
valdet.m, cuyas lı́neas de comandos son las siguientes:

function valdet(m)
% Esta función calcula el valor del
% determinante de una cierta matriz.
switch det(m)
case 0
disp(’determinante igual a 0’)
case 2
disp(’determinante igual a 2’)
otherwise
disp(’determinante distinto de 0 y 2’)
end

Problema. Construir una función, usando la instrucción switch, que in-


dique si dos vectores son perpendiculares o no.

15.6 Subfunciones
Las funciones construidas mediante M-ficheros pueden contener dentro de
su código definidas otras funciones. La función principal en el M-fichero se
15.6. SUBFUNCIONES 241

denomina función primaria (que es la función que invoca el M-fichero). Cada


subfunción viene acompañada de su propia lı́nea de definición de función.

Ejemplo. Construir una función que calcule una matriz de orden n × n2 ,


M = (mij ), cuyo coeficiente (i, j) viene dado por la siguiente expresión:

i+j
mij = 2 .
i + j2
La función que construiremos la denominaremos mc y vendrá construida
en el fichero mc.m, cuyas lı́neas de comandos son las siguientes:

function matriz = mc(n)


for i=1:n
for j=1:n^2
matriz(i,j)=numerador(i,j)/denominador(i,j);
end
end
function a = numerador(x,y)
a = sqrt(x+y);
function b = denominador(x,y)
b = x^2+y^2;
242 CAPÍTULO 15. PROGRAMACIÓN EN MATLAB
Capı́tulo 16
Sistemas de ecuaciones

243

También podría gustarte