Sei sulla pagina 1di 728

Ingeniería de los

Algoritmos y Métodos Numéricos


Un acercamiento práctico avanzado a la computación
científica e ingenieril con MATLAB

Segunda edición

Matriz dispersa 118.142.155118.142.155


UFSMC

José Luis de la Fuente O’Connor


/ŶŐĞŶŝĞƌşĂĚĞůŽƐůŐŽƌŝƚŵŽƐLJDĠƚŽĚŽƐEƵŵĠƌŝĐŽƐ͘hŶĂĐĞƌĐĂŵŝĞŶƚŽƉƌĄĐƚŝĐŽĂǀĂŶnjĂĚŽĂ
ůĂĐŽŵƉƵƚĂĐŝſŶĐŝĞŶƚşĨŝĐĂĞŝŶŐĞŶŝĞƌŝůĐŽŶDĂƚůĂď

WƌŝŵĞƌĂĞĚŝĐŝſŶ͗ĞŶĞƌŽϮϬϭϳ

Segunda edición: septiembre 2017

ΞĞƌĞĐŚŽƐĚĞĞĚŝĐŝſŶƌĞƐĞƌǀĂĚŽƐ͘

ĚŝƚŽƌŝĂůşƌĐƵůŽZŽũŽ͘

ǁǁǁ͘ĞĚŝƚŽƌŝĂůĐŝƌĐƵůŽƌŽũŽ͘ĐŽŵ

ŝŶĨŽΛĞĚŝƚŽƌŝĂůĐŝƌĐƵůŽƌŽũŽ͘ĐŽŵ

ŽůĞĐĐŝſŶΞ/ŶǀĞƐƚŝŐĂĐŝſŶ

ĚŝĐŝſŶ͗ĚŝƚŽƌŝĂůşƌĐƵůŽZŽũŽ

DĂƋƵĞƚĂĐŝſŶ͗Ξ:>&K

&ŽƚŽŐƌĂĨşĂĚĞĐƵďŝĞƌƚĂ͗ΞͲͲͲͲ

ŝƐĞŹŽĚĞƉŽƌƚĂĚĂ͗ΞDĂƌƚĂZŽĚƌşŐƵĞnj

WƌŽĚƵĐŝĚŽƉŽƌ͗ĚŝƚŽƌŝĂůşƌĐƵůŽZŽũŽ͘

/^E͗

WM^/dK>'>͗$/

EŝŶŐƵŶĂƉĂƌƚĞĚĞĞƐƚĂƉƵďůŝĐĂĐŝſŶ͕ŝŶĐůƵŝĚŽĞůĚŝƐĞŹŽĚĞĐƵďŝĞƌƚĂ͕ƉƵĞĚĞƐĞƌƌĞƉƌŽĚƵĐŝĚĂ͕
ĂůŵĂĐĞŶĂĚĂŽƚƌĂŶƐŵŝƚŝĚĂĞŶŵĂŶĞƌĂĂůŐƵŶĂLJƉŽƌŶŝŶŐƷŶŵĞĚŝŽ͕LJĂƐĞĂĞůĞĐƚƌſŶŝĐŽ͕
ƋƵşŵŝĐŽ͕ŵĞĐĄŶŝĐŽ͕ſƉƚŝĐŽ͕ĚĞŐƌĂďĂĐŝſŶ͕ĞŶ/ŶƚĞƌŶĞƚŽĚĞĨŽƚŽĐŽƉŝĂ͕ƐŝŶƉĞƌŵŝƐŽƉƌĞǀŝŽĚĞů
ĞĚŝƚŽƌŽĚĞůĂƵƚŽƌ͘dŽĚŽƐůŽƐĚĞƌĞĐŚŽƐƌĞƐĞƌǀĂĚŽƐ͘ĚŝƚŽƌŝĂůşƌĐƵůŽZŽũŽŶŽƚŝĞŶĞƉŽƌƋƵĠ
ĞƐƚĂƌĚĞĂĐƵĞƌĚŽĐŽŶůĂƐŽƉŝŶŝŽŶĞƐĚĞůĂƵƚŽƌŽĐŽŶĞůƚĞdžƚŽĚĞůĂƉƵďůŝĐĂĐŝſŶ͕ƌĞĐŽƌĚĂŶĚŽ
ƐŝĞŵƉƌĞƋƵĞůĂŽďƌĂƋƵĞƚŝĞŶĞĞŶƐƵƐŵĂŶŽƐƉƵĞĚĞƐĞƌƵŶĂŶŽǀĞůĂĚĞĨŝĐĐŝſŶŽƵŶĞŶƐĂLJŽĞŶ
ĞůƋƵĞĞůĂƵƚŽƌŚĂŐĂǀĂůŽƌĂĐŝŽŶĞƐƉĞƌƐŽŶĂůĞƐLJƐƵďũĞƚŝǀĂƐ͘

ͨƵĂůƋƵŝĞƌĨŽƌŵĂĚĞƌĞƉƌŽĚƵĐĐŝſŶ͕ĚŝƐƚƌŝďƵĐŝſŶ͕ĐŽŵƵŶŝĐĂĐŝſŶƉƷďůŝĐĂŽƚƌĂŶƐĨŽƌŵĂĐŝſŶĚĞ
ĞƐƚĂŽďƌĂƐſůŽƉƵĞĚĞƐĞƌƌĞĂůŝnjĂĚĂĐŽŶůĂĂƵƚŽƌŝnjĂĐŝſŶĚĞƐƵƐƚŝƚƵůĂƌĞƐ͕ƐĂůǀŽĞdžĐĞƉĐŝſŶ
ƉƌĞǀŝƐƚĂƉŽƌůĂůĞLJ͘ŝƌşũĂƐĞĂZK;ĞŶƚƌŽƐƉĂŹŽůĚĞĞƌĞĐŚŽƐZĞƉƌŽŐƌĄĨŝĐŽƐͿƐŝŶĞĐĞƐŝƚĂ
ĨŽƚŽĐŽƉŝĂƌŽĞƐĐĂŶĞĂƌĂůŐƷŶĨƌĂŐŵĞŶƚŽĚĞĞƐƚĂŽďƌĂ;ǁǁǁ͘ĐŽŶůŝĐĞŶĐŝĂ͘ĐŽŵ͖ϵϭϳϬϮϭϵϳϬͬ
ϵϯϮϳϮϬϰϰϳͿͩ͘

/DWZ^KE^WHʹhE/MEhZKW
Dedicado a mi esposa, María Milagros Sagaseta de Ylurdoz, a mis hijos, Sandra y Alberto,
y a la memoria de mis padres Magdalena y José Luis,
con mi agradecimiento siempre por lo que han representado en mi vida

I
II
Índice

Prefacio a la segunda edición XIII

Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos 1


1.1 Por dónde empezar y qué herramientas vamos a manejar . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Algunos conceptos y principios básicos de los algoritmos numéricos . . . . . . . . . . . . . . . . . 3
1.2.1 Normalización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1.1 Desnormalización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2 Sistema binario de numeración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Formato binario estándar IEEE para representar números. Precisión doble, palabra de 64 bits y
sistema normalizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.1 Precisión sencilla, palabra de 32 bits y sistema normalizado . . . . . . . . . . . . . . . . . . . 10
1.3.2 Codificación o representación de un número . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4 La aritmética en un ordenador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5 Fuentes de errores en los algoritmos y modelos numéricos. Evaluación y análisis . . . . . . . . . . 14
1.5.1 Error de cancelación o pérdida de relevancia . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5.2 Errores presentes en los algoritmos numéricos . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.5.2.1 Truncamiento de series . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.5.2.2 Solución de una ecuación cuadrática . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.5.2.3 Aproximación de la derivada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.5.2.4 Otra suma de infinitos sumandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.5.2.5 Polinomio de Wilkinson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.6 Operaciones de cálculo numérico con vectores y matrices . . . . . . . . . . . . . . . . . . . . . . . 22
1.6.1 Producto de una matriz por un vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.6.2 Producto de dos matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.6.2.1 Fórmula de Strassen para multiplicar matrices . . . . . . . . . . . . . . . . . . . . . 25
1.6.3 Normas de vectores y matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.6.3.1 Vectoriales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.6.3.2 Normas matriciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Capítulo 2. Resolución de ecuaciones no lineales de una variable 31


2.1 Formulación del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2 Indagación geométrica. El método de la Bisección . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3 Error hacia delante y hacia atrás de los algoritmos numéricos . . . . . . . . . . . . . . . . . . . . 34
2.4 La iteración de punto fijo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5 Velocidad de convergencia de una sucesión y proceso iterativo . . . . . . . . . . . . . . . . . . . . 38
2.6 Método de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.6.1 Convergencia del método de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.6.2 Variantes del método de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.6.2.1 Método de Newton por diferencias finitas . . . . . . . . . . . . . . . . . . . . . . . . 44
2.6.2.2 Método de Newton-Raphson relajado . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.6.2.3 Método de Halley . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
III
IV j Índice

2.7 Métodos iterativos sin derivadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47


2.7.1 Método de la secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.7.2 Métodos de la falsa posición y de Illinois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.7.3 Método de Muller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.7.4 El método de Brent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.8 Raíces de un polinomio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.8.1 Deflación de un polinomio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.8.2 Evaluación de un polinomio y sus derivadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.8.3 Método de Laguerre para determinar una raíz . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución 57


3.1 El problema y sus principios teóricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.2 Métodos directos de resolución numérica. Eliminación de Gauss . . . . . . . . . . . . . . . . . . . 61
3.2.1 Pivotación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.2.1.1 El algoritmo de la eliminación de Gauss con pivotación parcial . . . . . . . . . . . . 68
3.2.2 Número de operaciones del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.2.3 Método de Gauss-Jordan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.3 Condicionamiento de sistemas de ecuaciones lineales . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.3.1 Cálculo del número de condición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.4 Fuentes de errores en la eliminación de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.5 Matlab y los sistemas de ecuaciones lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.6 Factorización LU de la matriz del sistema de ecuaciones . . . . . . . . . . . . . . . . . . . . . . . 79
3.6.1 La factorización LU y la eliminación de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.6.2 Existencia y unicidad de la factorización LU . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.6.3 Métodos numéricos directos para la obtención de factorizaciones LU . . . . . . . . . . . . . . 80
3.6.3.1 Método de Crout. Versión LU 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.6.3.2 Método de Crout. Versión L1 U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.6.4 Obtención de la matriz inversa a partir de la factorización LU . . . . . . . . . . . . . . . . . . 85
3.6.5 Matlab y la factorización LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.7 Solución de sistemas de ecuaciones lineales modificados . . . . . . . . . . . . . . . . . . . . . . . . 85
3.8 Refinamiento iterativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.9 Sistemas de ecuaciones lineales con matrices simétricas . . . . . . . . . . . . . . . . . . . . . . . . 87
3.9.1 Factorización LDLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.9.2 Factorización de Cholesky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.9.3 Matlab y la factorización de Cholesky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.9.4 Matrices simétricas semidefinidas positivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.9.5 Pivotación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.9.6 Matrices simétricas indefinidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

Capítulo 4. Mínimos cuadrados lineales 95


4.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.2 Principios teóricos de la resolución del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.2.1 Sistemas de ecuaciones lineales incompatibles. Ecuaciones normales . . . . . . . . . . . . . . 100
4.2.2 Sistemas de ecuaciones lineales indeterminados . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.3 Resolución numérica del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.3.1 Método de Gram-Schmidt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.3.2 Método de Gram-Schmidt modificado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.3.3 Factorización QR de la matriz del sistema de ecuaciones lineales . . . . . . . . . . . . . . . . 106
4.3.3.1 Transformaciones de Householder . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
4.3.3.2 Transformaciones de Givens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
4.3.3.3 Transformaciones rápidas de Givens . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Índice j V

4.3.4 Descomposición en valores singulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116


4.3.5 Comparación de los diversos métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.4 Matlab y el problema de mínimos cuadrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

Capítulo 5. Funciones de interpolación y aproximación 121


5.1 Interpolación versus aproximación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.2 Interpolación numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
5.3 Interpolación polinómica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
5.3.1 Polinomios de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.3.2 Polinomios de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
5.3.3 Polinomios Ortogonales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.4 Interpolación polinómica por trozos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
5.4.1 Interpolación de Hermite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
5.4.2 Splines cúbicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
5.4.3 Curvas de Bézier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
5.4.4 B-splines (basis spline) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

Capítulo 6. Funciones trigonométricas de interpolación y ajuste. La Transformada de Fourier 141


6.1 Funciones trigonométricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.2 Interpolación trigonométrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
6.3 Elementos de números complejos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.4 Transformada Discreta de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
6.5 Transformada Rápida de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
6.5.1 Interpolación trigonométrica con la Transformada Rápida de Fourier . . . . . . . . . . . . . . . 150
6.5.2 Aplicaciones prácticas: Sonido, ruido, filtrado, ... . . . . . . . . . . . . . . . . . . . . . . . . . 153
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

Capítulo 7. Sistemas lineales de grandes dimensiones. Matrices dispersas 155


7.1 Matrices dispersas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
7.1.1 Galería de ejemplos gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
7.2 Almacenamiento en ordenador de matrices dispersas . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.2.1 Por coordenadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.2.2 Almacenamiento por filas o columnas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.2.3 Almacenamiento por perfil o envolvente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
7.3 Operaciones algebraicas de matrices dispersas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
7.3.1 Producto interior de dos vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
7.3.2 Multiplicación de matrices por vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
7.3.2.1 Multiplicación de un vector por una matriz . . . . . . . . . . . . . . . . . . . . . . . 160
7.3.3 Otras operaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
7.4 Solución de sistemas de ecuaciones lineales de matriz dispersa . . . . . . . . . . . . . . . . . . . . 160
7.4.1 Ordenación de las ecuaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
7.4.2 Matrices dispersas simétricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
7.4.2.1 Nociones básicas sobre teoría de grafos . . . . . . . . . . . . . . . . . . . . . . . . . 165
7.4.2.2 Interpretación de la eliminación de Gauss mediante grafos . . . . . . . . . . . . . . . 166
7.4.2.3 El algoritmo de Grado Mínimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
7.4.2.4 El algoritmo de Cuthill-McKee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
7.4.2.5 Selección del nudo inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
7.4.2.6 El algoritmo inverso de Cuthill-McKee. Reducción de la envolvente de una matriz
dispersa simétrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
7.4.3 Matrices dispersas no simétricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
7.4.3.1 Nociones básicas sobre grafos dirigidos . . . . . . . . . . . . . . . . . . . . . . . . . 174
VI j Índice

7.4.3.2 Eliminación de Gauss en matrices dispersas no simétricas . . . . . . . . . . . . . . . 176


7.4.3.3 Estructura triangular en bloques y transversal completo . . . . . . . . . . . . . . . . 176
7.4.3.4 Algoritmo de Hall para obtener un transversal completo . . . . . . . . . . . . . . . . 176
7.4.3.5 Permutaciones simétricas para obtener una estructura triangular en bloques . . . . . . 177
7.4.3.6 Matrices dispersas generales: eliminación de Gauss . . . . . . . . . . . . . . . . . . 178
7.5 Problemas de mínimos cuadrados lineales de grandes dimensiones . . . . . . . . . . . . . . . . . . 178
7.5.1 Transformaciones ortogonales. Método de George-Heath . . . . . . . . . . . . . . . . . . . . . 179
7.5.1.1 Ordenación de las filas de la matriz del sistema . . . . . . . . . . . . . . . . . . . . . 179
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

Capítulo 8. Sistemas de ecuaciones lineales. Algoritmos de resolución iterativos 183


8.1 Método de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
8.2 Método Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
8.3 Métodos de relajación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
8.3.1 Método SOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
8.3.2 Método SSOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
8.4 Métodos estacionarios para matrices dispersas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
8.5 Métodos no estacionarios. De dirección de descenso . . . . . . . . . . . . . . . . . . . . . . . . . . 192
8.5.1 Obtención de direcciones de descenso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
8.5.1.1 Relajación de una variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
8.5.1.2 Relajación SOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
8.5.1.3 Máxima pendiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
8.5.2 Método de los gradientes conjugados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
8.5.2.1 Implementación práctica de los gradientes conjugados . . . . . . . . . . . . . . . . . 203
8.6 Métodos de subespacios de Krylov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
8.6.1 Métodos GMRES para matrices no simétricas . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
8.6.1.1 GMRES con acondicionado previo . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
8.6.2 Métodos de proyección para matrices simétricas . . . . . . . . . . . . . . . . . . . . . . . . . 209
8.7 Comparación numérica de algunos métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

Capítulo 9. Sistemas de ecuaciones no lineales 215


9.1 El problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
9.1.1 Estudios de cargas en sistemas de generación y transporte de energía eléctrica . . . . . . . . . . 215
9.2 Método de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
9.2.1 Modificaciones del Método de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . 218
9.2.1.1 Newton-Raphson por diferencias finitas . . . . . . . . . . . . . . . . . . . . . . . . . 218
9.2.1.2 Newton modificado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
9.2.1.3 Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
9.2.1.4 Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
9.2.1.5 Relajación SOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
9.3 Métodos cuasi Newton. Método de Broyden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
9.3.1 Implementación práctica del método de Broyden . . . . . . . . . . . . . . . . . . . . . . . . . 221
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

Capítulo 10. Mínimos cuadrados no lineales 223


10.1 Definición del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
10.2 Estimación del estado de sistemas eléctricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
10.3 Resolución numérica del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
10.3.1 Método de Gauss-Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
10.3.2 Método de Levenberg-Marquardt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
10.3.3 Método de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Índice j VII

Capítulo 11. Valores y vectores propios. Valores singulares 237


11.1 Principios teóricos y algunas propiedades de los valores y vectores propios . . . . . . . . . . . . . 239
11.1.1 Valores propios de matrices destacadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
11.1.2 Triangularización de Schur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
11.2 Localización de valores propios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
11.3 Obtención numérica de los valores y vectores propios . . . . . . . . . . . . . . . . . . . . . . . . . 245
11.3.1 Método de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
11.3.2 Método de la iteración de la potencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
11.3.2.1 Mejora del método: desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
11.3.3 Método de la iteración inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
11.3.3.1 Mejora del método: desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
11.3.4 Iteración mediante cociente de Rayleigh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
11.3.5 Deflación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
11.3.6 Iteración simultánea o de subespacio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
11.3.7 Iteración QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
11.3.8 Iteración QR con desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
11.3.8.1 Iteración QR con doble desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . 257
11.3.8.2 Algoritmo QR. Transformaciones preliminares . . . . . . . . . . . . . . . . . . . . . 259
11.3.9 Subespacios de Krylov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
11.3.10 Comparación de los métodos presentados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
11.4 Cálculo de los valores singulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
11.4.1 Algoritmo de Golub y Reinsch. Primera fase: Bidiagonalización . . . . . . . . . . . . . . . . . 265
11.4.2 Algoritmo de Golub y Reinsch. Segunda fase . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
11.4.3 Algoritmo de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

Capítulo 12. Optimización. Programación no lineal sin condiciones 270


12.1 El problema de la optimización sin condiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
12.2 Condiciones para la existencia de un punto mínimo . . . . . . . . . . . . . . . . . . . . . . . . . . 271
12.3 Obtención de la solución. Métodos de dirección de descenso . . . . . . . . . . . . . . . . . . . . . . 273
12.3.1 Amplitud de paso (linesearch) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
12.3.2 Método de la dirección del gradiente o de la máxima pendiente . . . . . . . . . . . . . . . . . . 275
12.3.3 Método de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
12.3.3.1 Combinación de máxima pendiente y Newton . . . . . . . . . . . . . . . . . . . . . 278
12.3.4 Métodos de Newton Amortiguado y de Región de Confianza . . . . . . . . . . . . . . . . . . . 281
12.3.4.1 Newton amortiguado. Cálculo de la dirección . . . . . . . . . . . . . . . . . . . . . 282
12.3.4.2 Región de confianza. Cálculo de la dirección de descenso . . . . . . . . . . . . . . . 283
12.3.5 Algoritmo de los gradientes conjugados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
12.3.6 Métodos cuasi Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
12.3.7 Ejemplo general de recapitulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293

Capítulo 13. Optimización Lineal. Introducción a la Programación Lineal 295


13.1 Formulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
13.2 Definiciones y formas de programas lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
13.3 Desarrollo histórico de la Programación Lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
13.4 Formulación de problemas de Programación Lineal . . . . . . . . . . . . . . . . . . . . . . . . . . 297
13.4.1 La dieta alimenticia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
13.4.2 Planificación de la generación de energía eléctrica . . . . . . . . . . . . . . . . . . . . . . . . 298
13.4.3 Optimización de flujos en redes_Network flows . . . . . . . . . . . . . . . . . . . . . . . . . . 305
13.4.4 La emisión de deuda pública_Portfolio analysis . . . . . . . . . . . . . . . . . . . . . . . . . . 305
13.4.5 Transporte de mercancías_Transportation and logistics management . . . . . . . . . . . . . . . 306
13.5 Consideraciones geométricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
VIII j Índice

13.5.1 Convexidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307


13.5.2 Formas de la solución u óptimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
13.5.2.1 Geometría del problema con condiciones de igualdad . . . . . . . . . . . . . . . . . 309
13.5.2.2 Geometría con condiciones de desigualdad . . . . . . . . . . . . . . . . . . . . . . . 310
13.6 Politopos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
13.7 Puntos extremos y soluciones básicas factibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
13.7.1 Teoremas fundamentales de la Programación Lineal . . . . . . . . . . . . . . . . . . . . . . . 317
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

Capítulo 14. Programación lineal. El método Símplex 319


14.1 Condiciones de punto óptimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
14.1.1 Interpretación económica de los multiplicadores símplex . . . . . . . . . . . . . . . . . . . . . 321
14.2 Mejorar una solución básica factible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
14.3 El algoritmo Símplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
14.3.1 Degeneración y ciclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
14.3.1.1 La regla de Bland . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
14.4 Solución básica factible inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
14.4.1 Variables artificiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
14.4.2 Método de penalización o de la M grande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
14.5 Análisis de sensibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
14.5.1 Cambios en el vector de costes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
14.5.2 Cambios en el vector b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
14.6 El método Símplex para variables acotadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
14.7 Implementaciones divulgativas o “comerciales” del Símplex . . . . . . . . . . . . . . . . . . . . . . 356
14.7.1 Forma de “tableau” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
14.7.1.1 Otras variantes y mejoras del Símplex . . . . . . . . . . . . . . . . . . . . . . . . . 358
14.8 Complejidad computacional del algoritmo Símplex . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

Capítulo 15. Dualidad en Programación Lineal. Métodos de puntos interiores 361


15.1 Dualidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
15.1.1 Interpretación geométrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
15.2 Resultados importantes de la Dualidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
15.3 El algoritmo dual del Símplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
15.3.1 El problema de la dieta (otra vez) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
15.3.1.1 El formato MPS: Mathematical Programming System . . . . . . . . . . . . . . . . . 371
15.4 Métodos de punto interior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
15.4.1 Formulación del procedimiento general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
15.4.2 Resolución numérica y algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379

Capítulo 16. Optimización. Programación no lineal con condiciones 385


16.1 Formulación del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
16.2 Condiciones de Karush-Kuhn-Tucker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
16.2.1 Condiciones de óptimo de segundo orden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
16.3 Algoritmos de PNL con condiciones. Programación cuadrática . . . . . . . . . . . . . . . . . . . . 390
16.3.1 Programación Cuadrática con condiciones de igualdad . . . . . . . . . . . . . . . . . . . . . . 391
16.3.1.1 Método del subespacio imagen de la matriz A . . . . . . . . . . . . . . . . . . . . . 391
16.3.1.2 Método del subespacio núcleo de la matriz A . . . . . . . . . . . . . . . . . . . . . . 392
16.3.2 Programación Cuadrática con condiciones generales . . . . . . . . . . . . . . . . . . . . . . . 394
16.4 Programación Cuadrática Secuencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
16.4.1 SQP con condiciones de igualdad solamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
16.4.2 SQP con condiciones de desigualdad solamente . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Índice j IX

16.4.3 SQP con condiciones de todo tipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405


16.5 Métodos de puntos interiores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
16.5.1 Aproximación cuasi Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
16.5.2 Implementación práctica en Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

Capítulo 17. Optimización. Programación entera 417


17.1 El problema de la Programación Entera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
17.1.1 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
17.1.1.1 El problema de la mochila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
17.1.1.2 Gestión de un servicio hospitalario . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
17.2 Resolución gráfica del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
17.3 Resolución numérica. Relajaciones en la formulación . . . . . . . . . . . . . . . . . . . . . . . . . 420
17.3.1 Relajación lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
17.4 Algoritmo de planos o cortes de Gomory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
17.5 Algoritmos Branch and Bound - ramificación y acotación . . . . . . . . . . . . . . . . . . . . . . . 423
17.5.1 Branch-and-bound con relajación lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
17.5.1.1 División de ramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
17.5.1.2 Selección del nudo a estudiar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
17.5.2 Selección de la variable de ramificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
17.5.2.1 Penalizaciones de variables básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
17.5.2.2 Penalizaciones de variables no básicas . . . . . . . . . . . . . . . . . . . . . . . . . 435
17.6 Programación no lineal con variables Enteras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440

Capítulo 18. Derivación e integración de funciones 441


18.1 Derivación numérica de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
18.1.1 Fórmulas centradas con error de segundo y cuarto orden . . . . . . . . . . . . . . . . . . . . . 444
18.1.2 Extrapolación de Richardson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
18.1.3 Fórmulas basadas en el polinomio de interpolación de Newton . . . . . . . . . . . . . . . . . . 445
18.1.4 Derivación simbólica con Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
18.2 Integración numérica de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
18.2.1 Fórmulas de Newton-Cotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
18.2.1.1 Fórmula compuesta del trapecio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
18.2.1.2 Fórmula compuesta del Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
18.2.2 Fórmulas abiertas y cerradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
18.2.3 Método de Romberg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
18.2.4 Cuadratura de Gauss-Legendre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
18.2.4.1 Integrales múltiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
18.2.5 Cuadratura adaptativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458

Capítulo 19. Integración de ecuaciones diferenciales ordinarias 459


19.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
19.2 Integración numérica de ecuaciones diferenciales ordinarias . . . . . . . . . . . . . . . . . . . . . 460
19.2.1 Método de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
19.2.2 Mejoras del método de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
19.2.2.1 Método de Heun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
19.2.2.2 Método del punto medio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
19.2.3 Método de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
19.2.4 Métodos de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
19.2.4.1 Deducción de las fórmulas de Runge-Kutta de orden 2 . . . . . . . . . . . . . . . . . 466
19.2.4.2 Fórmulas de Runge-Kutta de orden superior a 2 . . . . . . . . . . . . . . . . . . . . 467
X j Índice

19.2.4.3 Métodos Runge-Kutta de paso variable . . . . . . . . . . . . . . . . . . . . . . . . . 468


19.2.4.4 Método Runge-Kutta-Fehlberg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
19.2.5 Métodos implícitos y problemas rígidos o stiff . . . . . . . . . . . . . . . . . . . . . . . . . . 470
19.2.5.1 El método de Euler hacia atrás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
19.2.6 Métodos multipaso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
19.2.6.1 Métodos predictor-corrector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
19.3 Sistemas de ecuaciones diferenciales ordinarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
19.4 Ecuaciones diferenciales de orden superior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476

Capítulo 20. Integración de ecuaciones diferenciales ordinarias con condiciones de Contorno o Frontera 477
20.1 El método del disparo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
20.2 Método de las diferencias finitas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
20.3 Métodos de colocación y de elementos finitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
20.3.1 Método de colocación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
20.3.2 Método de los elementos finitos de Galerkin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487

Capítulo 21. Resolución numérica de ecuaciones en derivadas parciales 489


21.1 Ecuaciones en derivadas parciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
21.1.1 Ejemplos de EDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
21.2 Resolución de ecuaciones parabólicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
21.2.1 Resolución por diferencias adelantadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
21.2.2 Resolución por diferencias atrasadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
21.2.3 El método Crank–Nicolson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
21.3 Resolución de ecuaciones hiperbólicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
21.4 Resolución de ecuaciones elípticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
21.4.1 Método de las diferencias finitas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
21.4.2 Método de los elementos finitos, FEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
21.5 Resolución de EDP no lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509

Apéndices 511

Apéndice A. Rudimentos matemáticos: definiciones, notación y proposiciones esenciales 513


A.1 Conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
A.2 Espacios vectoriales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
A.2.1 Espacios vectoriales con estructuras adicionales . . . . . . . . . . . . . . . . . . . . . . . . . . 518
A.2.1.1 Espacios normados y espacios métricos . . . . . . . . . . . . . . . . . . . . . . . . . 518
A.2.1.2 Espacios con producto interior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
A.2.1.3 Espacios de Hilbert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
A.2.1.4 Espacios de Lebesgue y espacios de Sobolev . . . . . . . . . . . . . . . . . . . . . . 529
A.3 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
A.3.1 Normas de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
A.3.2 Matrices interesantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
A.3.3 Valores propios, valores singulares y formas cuadráticas . . . . . . . . . . . . . . . . . . . . . 539
A.3.3.1 Valores propios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
A.3.3.2 Valores singulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
A.3.4 Formas cuadráticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
A.4 Funciones, sucesiones y series de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
A.4.1 Derivada y diferenciabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
A.4.1.1 Subgradiente y subdiferencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
A.4.2 Integral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
Índice j XI

A.4.3 Sucesiones de funciones, series funcionales y de potencias. Convergencia . . . . . . . . . . . . 552


A.4.3.1 Convergencia puntual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
A.4.3.2 Convergencia uniforme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
A.4.3.3 Series funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
A.4.3.4 Series de potencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
A.4.4 Resultados importantes de análisis funcional . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
A.5 Optimización y Programación Matemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
A.5.1 Condiciones necesarias y suficientes de existencia de un punto mínimo de una función . . . . . 559
A.5.2 Conjuntos convexos y geometría de la convexidad . . . . . . . . . . . . . . . . . . . . . . . . 560
A.5.2.1 Conos apropiados y desigualdades generalizadas . . . . . . . . . . . . . . . . . . . . 567
A.5.2.2 Elementos mínimos y minimales. Cono dual . . . . . . . . . . . . . . . . . . . . . . 568
A.5.2.3 Hiperplano separador. Lema de Farkas . . . . . . . . . . . . . . . . . . . . . . . . . 571
A.5.3 Caracterización de las soluciones del problema de optimización y condiciones que cumple un
punto óptimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
A.5.4 Dualidad en optimización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
A.5.4.1 Dualidad Lagrangiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
A.5.4.2 Dualidad de Wolfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
A.5.5 Funciones conjugadas-funciones de Fenchel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
A.5.6 Optimización SDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
A.5.6.1 Definiciones y planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . 588
A.5.7 Optimización vectorial y multicriterio o multiobjetivo . . . . . . . . . . . . . . . . . . . . . . 591
A.5.7.1 Óptimo y óptimos de Pareto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
A.5.7.2 Escalarización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
A.5.7.3 Optimización multicriterio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
A.6 Elementos de cálculo integral, campos escalares y campos vectoriales . . . . . . . . . . . . . . . . 596
A.6.1 Integrales de línea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
A.6.1.1 Integrales de línea en campos vectoriales . . . . . . . . . . . . . . . . . . . . . . . . 599
A.6.2 El teorema de Green . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
A.6.3 El teorema de Stokes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
A.7 Sobre el método de los elementos finitos de Ritz-Galerkin para resolver ecuaciones en derivadas
parciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
A.7.1 Solución de una ecuación en derivadas parciales . . . . . . . . . . . . . . . . . . . . . . . . . 606
A.7.1.1 El problema en forma débil o variacional . . . . . . . . . . . . . . . . . . . . . . . . 607
A.7.1.2 Espacios de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
A.7.1.3 Discretización del problema en un subespacio de elementos finitos lineales . . . . . . 609
A.7.1.4 Reformulación del problema como un sistema de ecuaciones lineales . . . . . . . . . 612
A.7.2 Fundamentos de funcionales y cálculo de variaciones . . . . . . . . . . . . . . . . . . . . . . . 614
A.7.2.1 Proposiciones esenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
A.8 Elementos de números y funciones complejas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
A.8.1 Integración. Teorema de Cauchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
A.9 Análisis de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
A.9.1 Series de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
A.9.1.1 Expresión compleja de la serie de Fourier . . . . . . . . . . . . . . . . . . . . . . . . 625
A.9.1.2 Convergencia de las series de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . 626
A.9.1.3 Propiedades de las series de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
A.9.2 La Transformada de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
A.9.2.1 Propiedades de la transformada de Fourier . . . . . . . . . . . . . . . . . . . . . . . 632
A.9.2.2 La Transformada de Fourier discreta . . . . . . . . . . . . . . . . . . . . . . . . . . 633
A.10 La Transformada del coseno discreta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
A.11 La Transformada de Laplace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
A.12 Análisis de componentes principales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641
A.12.1 Algunos conceptos de estadística . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
XII j Índice

A.12.2 Planteamiento del problema matemático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643


A.13 Cálculo estocástico y simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
A.13.1 Variables aleatorias y espacios de probabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . 647
A.13.2 Procesos estocásticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
A.13.2.1 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
A.13.3 Simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
A.13.3.1 Generación de números aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
A.13.3.2 Simulación de variables aleatorias . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
A.13.3.3 El método Montecarlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
A.13.4 Ecuaciones diferenciales estocásticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
A.13.4.1 Integración numérica de ecuaciones diferenciales estocásticas . . . . . . . . . . . . . 662
A.13.5 Aplicación del cálculo estocástico a la cobertura y valoración de derivados financieros. El mo-
delo de Black y Scholes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663

Apéndice B. Listado de algunos programas presentados 665


B.1 cgLanczos_1.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
B.2 Rsimplex_1.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
B.3 PLip_1.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669

Bibliografía 677

Índice de materias y autores 693


Prefacio a la segunda edición

E STE libro tiene que ver con el análisis numérico y la computación científica e ingenieril. Una rama de las matemá-
ticas que proporciona herramientas y métodos para resolver problemas de forma numérica siguiendo procedimien-
tos/algoritmos que lo garantizan.
El objetivo que persigue es desarrollar procedimientos computacionales detallados, capaces de ser implementados
en ordenadores digitales, y estudiar sus características de rendimiento y velocidad, con el fin de resolver problemas
concretos que surgen de la realidad cotidiana, en las ciencias y la ingeniería. Aquí presento su segunda edición, que
consolida mucho la anterior y amplía y mejora el alcance de los procedimientos y técnicas que he considerado.
El conjunto del libro es una síntesis de una exhaustiva recopilación —a modo de guía práctica profesional— de
muchos años dedicado a estudiar, investigar y enseñar lo practicado y aprendido en el desempeño de mi profesión de
ingeniero eléctrico y económico. En esencia, en todo lo que tiene que ver con las técnicas y algoritmos numéricos que nos
permiten, mediante el Cálculo y Análisis Matemático, y la Ingeniería de sus Métodos Numéricos, modelizar y simular
la realidad con la que nos enfrentamos a diario para identificarla y tratar de resolver los diversos problemas prácticos
que nos acucian y que la inteligencia humana decide enfrentar. Bastantes de los ejemplos que se exponen se refieren a
la ingeniería eléctrica —o están basados en ella–, aunque son extensibles a otros muchos campos del conocimiento y la
ciencia como trato de exponer.
Basándose en el mayor rigor cronológico y matemático posible, el contenido que cubre el libro se orienta hacia la
práctica con ordenador de los algoritmos y métodos que se presentan en diversas áreas del cálculo y análisis para resolver
problemas matemáticos numéricos de la envergadura que hoy se requiere. El instrumento de ayuda que propongo utilizar
para hacerlo con el máximo aprovechamiento práctico es M ATLAB. Su potencia de cálculo y aplicaciones en muchos
ámbitos de la ciencia, la ingeniería y las disciplinas sociales hace que con él se pueda resolver cualquier problema que
se le presente a un ingeniero o científico en la práctica o, cuando no lo pueda abarcar, sí diseñar a escala modos de
tratarlo por partes para integrarlos en sistemas más potentes. Hay alternativas a M ATLAB, por supuesto, pero con ésta se
puede llegar a casi cualquier resquicio de la computación científica, ingenieril y social, de forma relativamente sencilla
y compacta.
La forma de abordar cada unos de los capítulos, y su objetivo de derivar utilidades o programas que funcionen, no
aboca a dictar las recetas correspondientes para tal o cual cuestión concreta, sino que se sigue un procedimiento basado
en la disección de los asuntos generales, el análisis pormenorizado de sus componentes desde el rigor matemático más
adecuado según las referencias disponibles y, al final, en la elaboración de un programa o código que lo resuelve,
tratando de hacerlo de la forma más eficaz posible. Los diversos módulos o códigos listados se pueden combinar para
tratar problemas más grandes o que conlleven diversas etapas en su tratamiento. De esta manera sigo la máxima de
Confucio, 551-479 a.C., que ha presidido habitualmente mi trayectoria vital: “Me lo contaron y lo olvidé; lo vi y lo
entendí; lo hice y lo aprendí.”
Con lo que expone el libro también pretendo hacer mucho más intuitivas y fáciles de comprender cómo funcionan las
matemáticas y los algoritmos detrás de muchos de los procedimientos y métodos que hoy en día están presentes en los
desarrollos del Big Data, optimización matemática y otras cuestiones de la economía digital con la que convivimos todos
los días. Con los del libro como referencia básica se puede tratar de mejorarlos, hacerlos evolucionar o imaginar otros
para desarrollar las nuevas herramientas de optimización no lineal, integración de ecuaciones diferenciales complicadas,
etc. que se necesitan en estos desafíos y otros que se pondrán por delante muy pronto en el devenir de la ingeniería y las
ciencias sociales.
El resultado que es materialmente este libro no habría sido posible sin el concurso, inconsciente o perfectamente
consciente, de muchas personas individuales y colectivas. Me gustaría mencionar aquí las contribuciones concretas de

XIII
XIV j Prefacio a la segunda edición

autores —a los que he seguido fundamentalmente— como Stephen Boyd, colega de la Universidad de Stanford, David
Nualart, Ignacio Villanueva, Timothy Sauer, David Luenberger, Francisco Javier Sayas, David Aledo y Manuel Contre-
ras. Como decía Isaac Newton, gracias por permitirme auparme a sus hombros de gigantes. También a mis compañeros
del Departamento de Ingeniería Matemática de la Universidad Politécnica de Madrid. Sobre su esfuerzo me he permitido
elevar mis humildes conocimientos. Me gustaría también agradecer sus materiales e inmateriales aportaciones a todos
mis alumnos de la Escuela Técnica Superior de Ingenieros Industriales de Madrid, de los que he aprendido muchísimas
cosas en mi tarea como profesor en la cotidianidad de las clases en las que trato de transmitirles lo que creo es bueno
para su formación, además del conocimiento práctico sobre el que baso mis aportaciones.
A través de mi sito web trato de devolver modestamente todas esas aportaciones poniendo en el dominio público todas
mis lecciones académicas, el propio libro en su totalidad y los programas de ordenador que en él se utilizan o listan, así
como otros que he desarrollado a lo largo de los últimos años. El número de visitas del sitio demuestra no estar del todo
errado.
La elaboración palpable de este libro ha sido posible gracias esencialmente a LATEX. Un software, sistema de prepara-
ción de documentos, gran instrumento tipográfico para escritura científica e ingenieril —como se desee— que, junto a
un gran número de programas y aplicaciones que lo soportan y potencian, constituye una maravilla de la técnica digital
moderna de tipografía. Desde estas humildes líneas agradezco al Profesor Donald Knuth, de la Universidad de Stanford,
a quien tuve el privilegio de seguir en clase en esa formidable universidad, el prodigio que concibió, TEX, que constituye
su base esencial, y el ponerlo desde el primer momento en el dominio público. También he utilizado WinEdt, un editor
muy completo diseñado durante los últimos años para sacar el máximo partido de TEX y LATEX.
Esta edición profundiza bastante más que la anterior en los rudimentos matemáticos que fundamentan los algoritmos
que se presentan y las teorías que los soportan. Todos ellos están contenidos en el apéndice A. También mejora un gran
número de algoritmos y cómo usarlos con M ATLAB de forma más eficiente. Incorpora, igualmente, nuevos procedi-
mientos numéricos y mejoras en los incluidos en la edición anterior, de acuerdo con las últimas mejoras investigadas
y probadas. También se ha incluido un Índice de Materias para dar más consistencia al manejo del libro como obra de
consulta esporádica, o de conceptos básicos de matemáticas, estadística y economía que tienen que ver con la temática
general estudiada en el libro. Las referencias incluidas al final del volumen se han complementado y depurado según su
disponibilidad y actualidad.
¡Que les pueda ser útil!

José Luis de la Fuente O’Connor


Alcobendas, 28 de agosto de 2017
www.jldelafuenteoconnor.es
Capítulo 1

Fundamentos de la ingeniería matemática y


sus algoritmos

Contenido
1.1 Por dónde empezar y qué herramientas vamos a manejar . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Algunos conceptos y principios básicos de los algoritmos numéricos . . . . . . . . . . . . . . . . . 3
1.3 Formato binario estándar IEEE para representar números. Precisión doble, palabra de 64 bits y
sistema normalizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 La aritmética en un ordenador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5 Fuentes de errores en los algoritmos y modelos numéricos. Evaluación y análisis . . . . . . . . . . 14
1.6 Operaciones de cálculo numérico con vectores y matrices . . . . . . . . . . . . . . . . . . . . . . . 22
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

E N nuestro quehacer diario, consciente e inconscientemente, realizamos muchas operaciones numéricas que confia-
mos ciegamente a los algoritmos numéricos, ordenadores y máquinas a nuestro alcance.
Como los ingenieros somos los que producimos una parte importante de esos procedimientos numéricos, es primordial
que sepamos con cierto detalle qué hacen, cuáles son sus cimientos y cómo lo hacen. Los algoritmos siguen unos
procedimientos formales en las máquinas donde funcionan que son fuente de muchas posibles mejoras, fallos latentes, y
problemas prácticos de implementación, interpretación y precisión. Es importante conocer todo este entorno para poder
interpretar adecuadamente los resultados que obtienen. Vamos a ello.

1.1 Por dónde empezar y qué herramientas vamos a manejar


Para abordar la ingeniería matemática con alguna operación numérica aparentemente sencilla, calculemos, por ejemplo,
el valor del polinomio
p.x/ D 2x 4 C 3x 3 3x 2 C 5x 1;
en el punto x D 1=2.
Supongamos que toda la información y los datos que se necesitan para hacer esta operación están adecuadamente
guardados en el ordenador que nos va a ayudar a hacerla.
¿Cómo debería hacerse de la mejor manera posible a mano y con una máquina?
De acuerdo con nuestros conocimientos de este momento, la primera forma de evaluar el polinomio en el punto dado
procedería más o menos así:
 
1 1 1 1 1 1 1 1 1 1 1 5
p D2    C3   3  C5 1D :
2 2 2 2 2 2 2 2 2 2 2 4
2 j Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos

El número total de multiplicaciones que realizamos es 10; el de sumas/restas, 4.


Una segunda manera podría consistir en hacer estas operaciones
1 1

1 2 1
2
 2
D 2
D 4
! y guardarlo

1 2 1

1 3
2
 2
D 2
! y guardarlo

1 3 1

1 4
2
 2
D 2
! y guardarlo

y luego
   4  3  2
1 1 1 1 1 5
p D2 C3 3 C5 1D :
2 2 2 2 2 4
El número total de multiplicaciones en este caso es 3, para las potencias de 12 , más 4 después. Las sumas y restas son
las mismas.
Es evidente que, si esto hay que hacerlo muchas veces, el ahorro en tiempo de esta segunda forma de proceder puede
ser muy significativo.
¿Se puede hacer mejor aún? Probablemente. Consideremos el polinomio reescrito así

p.x/ D 1 C x 5 3x C 3x 2 C 2x 3
 
D 1Cx 5Cx 3 C 3x C 2x 2
  

D 1Cx 5Cx 3 C x 3 C 2x
  

D 1Cx 5Cx 3Cx 3Cx2

y evaluémoslo de dentro hacia afuera


1
2
 2 más 3 D 4
1
2
 4 más 3D 1
1 9
2
 . 1/ más 5 D 2
1 9 5
2
 2
más 1D 4
:
Esta forma de actuar, que necesita 4 multiplicaciones y 4 sumas, se conoce como regla de Horner, o “multiplicación
anidada”, por William George Horner, Inglaterra, 1786-1837.

Horner

Si el polinomio es de grado d , se necesitarán d multiplicaciones y d sumas.

La mayoría de las ideas fundamentales de la ciencia son esencialmente sencillas y, por regla general,
pueden ser expresadas en un lenguaje comprensible para todos
Albert Einstein, 1879-1955.
En igualdad de condiciones la solución más sencilla es probablemente la correcta
Guillermo de Ockham, 1285-1347.

La línea de exposición que acabamos de presentar es el paradigma conceptual que destacaremos en este libro. En
resumen:
1.2 Algunos conceptos y principios básicos de los algoritmos numéricos j 3

Los ordenadores son muy rápidos haciendo cosas muy sencillas.


Con aquellos, las cosas muy sencillas que se repiten indefinidamente, hay que hacerlas de forma óptima y buscar
con su ingeniería el conseguirlo paso a paso.
La mejor forma de hacer ciertas cosas y cálculos en ordenador no siempre es la más obvia.
Para terminar con estas consideraciones sobre la evaluación de polinomios, cualquiera como

c1 C c2 x C c3 x 2 C c4 x 3 C c5 x 4

se puede escribir así  


 
c1 C x c2 C x c3 C x c4 C x.c5 / ;

e incluso así   

c1 C .x b1 / c2 C .x b2 / c3 C .x b3 / c4 C .x b4 /.c5 / ;

donde b1 , b2 , b3 y b4 son los que se conocen como puntos de base (que pueden ser o no cero).
Para ayudarnos con un instrumento informático que nos permita manejar números y operaciones con ellos, vamos
a contar con el software M ATLAB. Es una herramienta muy sofisticada que utiliza un código propio en el cual las
operaciones que acabamos de ver se pueden programar como sigue para hacerlas de forma muy eficaz.

function y=Horner(d,c,x,b)
% Se evalúa en el punto x el polinomio de grado d definido en el vector c
% Entrada: c(d+1), coeficientes del polinomio: c1, c2,...;
% x, punto (vector) en el que se evalúa el polinomio;
% b, puntos base, si es el caso.
% Salida: y, valor numérico del polinomio en x
%
if nargin<4, b=zeros(d,1); end
y=c(d+1);
for i=d:-1:1
y = y.*(x-b(i))+c(i);
end
end

En este libro vamos a hacer funcionar a M ATLAB de varias maneras: con aplicaciones autónomas para él, ejecutando
unos códigos elaborados al efecto por nosotros y en lo que se denomina su “escritorio” o espacio de trabajo. En éste, una
sesión interactiva con el ordenador para utilizar la rutina Horner se transcribe en lo que sigue.

>> Horner(4,[-1 5 -3 3 2],1/2)


ans =
1.250000000000000
>> Horner(4,[-1 5 -3 3 2],1/2,[0 0 0 0])
ans =
1.250000000000000
>> Horner(4,[-1 5 -3 3 2],[-2 -1 0 1 2])
ans =
-15 -10 -1 6 53
>>

Los símbolos >> son los que usa M ATLAB para ponerse secuencialmente a nuestra disposición en una sesión de trabajo.

1.2 Algunos conceptos y principios básicos de los algoritmos nu-


méricos  ÈOJHEUD:LNLSHG

Álgebra
Definición 1.1 Un algoritmo es un conjunto ordenado y finito de operaciones y reglas que permite hallar la solución
de un problema, o realizar una actividad relativamente compleja.
'H:LNLSHGLDODHQFLFORSHGLDOLEUH
El origen etimológico del término o voz algoritmo deriva del nombre de Muhammad ibn Musa al-Khwarizmi, sabio
persa —783-850 aproximadamente—, considerado uno de(Oálgebra GHOiUDEHήΒΠϟ΍al­ŷabr
UHLQWHJUDFLyQUHFRPSRVLFLyQ
los padres del Álgebra ( ), que escribió entre los
PDWHPiWLFDTXHHVWXGLDODFRPELQDFLyQGHHOHPHQWRVGHHVWUXFWXU
D FLHUWDV UHJODV 2ULJLQDOPHQWH HVRV HOHPHQWRV SRGtDQ VHU
4 j Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos
Nonlinear optimization: motivation, past and perspectives History

Euclid (300 BC) Al-Khwarizmi (783-850)

años 800 y 825 la obra Quitab Al Jabr Al Mugabala, donde se recogía el sistema de numeración indio y el concepto de
cero.

Al-Khwarizmi

La velocidad de los algoritmos para realizar operaciones numéricas, sus prestaciones y precisión dependen en gran
Philippe Toint (Namur) April 2009 30 / 323

medida de la exactitud con la que se pueden representar en la máquina donde se han de procesar los números, datos y
las operaciones a llevar a cabo.
Para diseñar algoritmos y codificarlos en un lenguaje que la máquina donde van a funcionar interprete adecuada-
mente, es aconsejable conocer cómo opera la aritmética de esa máquina y los parámetros esenciales de su sistema de
numeración.
Los ordenadores y calculadoras guardan la información numérica y alfanumérica que se les suministra mediante una
aproximación numérica, o codificación, de ella. En general, lo hacen empaquetándola en grupos de bits —unidad básica
de información—, denominados bytes (grupos de 8 bits).
Los ordenadores tienen varias formas estándar de representar un dato numérico:
Formato entero —sin decimales (integer)— o
Formato de coma o punto flotante (real): nuestro formato decimal, cuyo origen indo-arábigo se sitúa entre los
siglos IV y VI de nuestra era, y que fue transmitido a Europa gracias a la Escuela de Kerala, en la India.
Además de estos formatos se pueden gestionar otros tipos de datos, algunos de los cuales se indican en la tabla del
cuadro 1.1.

char/string Para almacenar o manipular caracteres alfanuméricos


logical Para designar variables o valores que sólo admiten el 1 o el 0 o el verdadero o falso
single/double Para almacenar variables o datos numéricos en precisión sencilla –4 bytes– o doble –8
bytes–. Lo habitual en M ATLAB es double
complex Para almacenar variables complejas, cuando no se quiere guardar la parte real y la
imaginaria por separado

Cuadro 1.1

La representación de cualquier número entero en un ordenador en formato entero es exacta, siempre y cuando su valor
esté comprendido dentro de los límites que admite la máquina.
En formato real sólo es posible representar un conjunto finito de números de la recta real, F , (F  R). Este conjunto
está formado por elementos de la forma
 
d1 d2 dp
f D˙ C 2 C  C p  ˇe
ˇ ˇ ˇ
D ˙0; d1 d2    dp  ˇ e

donde: ˇ es la base de numeración, 0  di  ˇ 1; i D 1; : : : ; p;


p el número de dígitos significativos, o longitud de mantisa (precisión);
e el exponente, L (underflow)  e  U (overflow).

La ristra de dígitos d1 , d2 , : : :, dp se denomina mantisa. En la tabla del cuadro 1.2 se pueden ver los parámetros esen-
ciales de los sistemas de numeración de varias máquinas y procesadores tradicionales.
1.2 Algunos conceptos y principios básicos de los algoritmos numéricos j 5

Máquina Precisión ˇ p L U
Simple 2 24 126 127
IEEE st. 754-1985 normali. Doble 2 53 1022 1023
Extendida 2 64 16381 16384
Simple 16 6 64 63
IBM mainframe Doble 16 14 64 63
Extendida 16 28 64 63
Simple 2 48 8192 8191
Cray (superordenador)
Doble 2 96 16383 16384
Calculadoras HP 10 12 499 499

Cuadro 1.2: Parámetros esenciales de los sistemas de numeración de varias máquinas

1.2.1 Normalización
Un sistema de numeración se dice normalizado si al representar cualquier número que no es cero el primer dígito de la
mantisa es siempre distinto de cero.
Ventajas: I. En binario el primer dígito es siempre 1, por lo que no es necesario guardarlo. Cualquier otro
número sería ˙1;bbb : : : bb  2p .
II. Una única representación de un número.
III. No se malgastan dígitos (ceros) a la izquierda del primero no cero.
En un sistema normalizado un número distinto de cero f está acotado de la siguiente manera:
ˇ L  jf j  ˇ U C1 .1 ˇ p
/:
El conjunto F de números representables exactamente en una máquina no es evidentemente infinito: tiene un número
de elementos fijo igual a
2.ˇ 1/ˇ p 1 .U L C 1/ C 1:
Los distintos factores de esta expresión son:
2: pues dos son las opciones de signo.
ˇ 1: número de posibles valores distintos del dígito más significativo de la mantisa.
ˇ: posibles valores por cada uno de los p 1 dígitos restantes de la mantisa, incluyendo el cero.
U L C 1 valores posibles del exponente.
Estos elementos no están igualmente espaciados sobre la recta real sino en potencias sucesivas de ˇ.
Si el número que se quiere representar es uno de estos elementos se guardaría en toda su exactitud; si no, una aproxi-
mación.
Ejemplo 1.1 Si se trabaja en una máquina normalizada en la que ˇ D 2, p D 2 (realmente habría 3 dígitos), L D 1
y U D 1, los 25 elementos del conjunto F de esa máquina, y sus valores, son los representados por muescas en la recta
de la figura que sigue.

3;5 3 2;5 2 1;5 1 0;5 0 0;5 1 1;5 2 2;5 3 3;5

El número más grande positivo representable es



.1;11/2  21 D 2  1 C 1=2 C 1=22
D 2  .1 C 0;5 C 0;25/ D 3;510 I
el más pequeño en valor absoluto, .1;00/2  2 1
D 0;510 :
Desnormalización
6 j Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos

 La normalización produce un vacío de números en torno al 0.


1.2.1.1 Desnormalización
La desnormalización facilita rellenarlo cuando el exponente del número sea el
La normalización produce un vacío de números en torno al 0. La desnormalización, que permite que haya ceros en los
mínimo, permitiendo que haya ceros en los dígitos más significativos de la
primeros dígitos de la mantisa, facilita rellenarlo cuando el exponente del número sea el mínimo.
mantisa.

3;5 3 2;5 2 1;5 1 0;5 0 0;5 1 1;5 2 2;5 3 3;5

En el sistema de “juguete” anterior, el vacío central se podría rellenar con elementos cuya mantisa no empieza por 1.
Se podrían añadir 3 más a cada lado del cero, siendo el más pequeño positivo representable el .0;01/2  2 1 D
.0;125/10 .  En el sistema de “juguete” anterior, el vacío central se podría rellenar con
La desnormalización amplía
elementos cuyael mantisa
rango de no
números representables,
empieza aunque la
por 1. Se podrían precisión
añadir de esos
3 más de más
a cada ladoes menor que la
general al tener del
menos dígitos no cero.
cero, siendo el más pequeño positivo representable el
.0;01/2  2 1
D .0;125/10.
1.2.2 Sistema binario de numeración
Es el sistemadeLa
numeración universal amplía
desnormalización con el que trabajan
el rango decasi todas las
números máquinas de cálculo
representables, aunqueelectrónicas
la y los ordena-
dores a nuestra disposición. 19/133

En este sistema, cualquier número se expresa mediante una ristra de dígitos bi de la forma
a b c 1 2 3    b2 b1 b0 ,b 1b 2 
d e f g 9 4 6 5

donde cada dígito hbinario,


i j
o bit, es 0 ó 101. 8 7
En el sistema decimal, de base 10, el equivalente a ese número cualquiera sería el resultado de estas operaciones
   b2 22 C b1 21 C b0 20 C b 12
1
Cb 22
2
 :
El número 4 en base 10 sería en binario 1002 y el fraccionario 3=410 sería en binario 0;112 .
Para convertir cualquier número del sistema decimal al binario habría que hacer lo siguiente:
Parte entera Se divide por 2 sucesivamente y se guardan los restos, 0 ó 1, de cada división. Esos restos se ordenan
desde el primero al último y se disponen de derecha a izquierda empezando por el primero. La ristra de dígitos así
obtenida es la representación en binario. Por ejemplo, con 53;7 hacemos
53  2 D 26 r 1
26  2 D 13 r 0
13  2 D 6r 1
62 D 3r 0
32 D 1r 1
12 D 0r 1:
El número 5310 es en binario 1101012 .
Comprobando 1101012 D 25 C 24 C 22 C 20 D 32 C 16 C 4 C 1 D 5310 .
Parte fraccionaria Se hace el proceso inverso: se multiplica la parte fraccionaria por 2 y se guardan las partes enteras.
Al final se disponen los enteros obtenidos, sucesivamente, a la derecha de la coma.
Con 53;7:
0;7  2 D 0;4 C 1
0;4  2 D 0;8 C 0
0;8  2 D 0;6 C 1
0;6  2 D 0;2 C 1
0;2  2 D 0;4 C 0
0;4  2 D 0;8 C 0
::
:
1.3 Formato binario estándar IEEE para representar números. Precisión doble, palabra de 64 bits y sistema normalizado j 7

Se ve que el proceso llega un momento que se repite indefinidamente cada cuatro pasos. Es decir,
0;7 D 0;101102 :
En resumen, el número 53;710 es en binario 110101;101102 .
Las máquinas con las que trabajamos habitualmente hacen esto de forma recurrente y muy eficazmente.
Para convertir cualquier número del sistema binario al decimal, con el mismo esquema formal, habría que hacer esto:
Parte entera Se suman las sucesivas potencias de 2. Por ejemplo, 101012 D 124 C023 C122 C021 C120 D 2110 .
Parte fraccionaria Si es finita, se procede de forma similar, por ejemplo
 
1 1 1 1 1 1 11
0;10112 D C 3 C 4 D C C D :
2 2 2 2 8 16 16 10
Si es infinita, lo más fácil es usar el desplazamiento por potencias de 2.
Por ejemplo, si se quiere convertir a base 10 el número x D 0;10112 , primero se multiplica por 24 , lo que desplaza
la coma cuatro posiciones a la derecha; luego se resta el original:
24  x D 1011;1011
x D 0000;1011:
Restando 
24 1  x D 10112 D 1110 :
Luego se despeja x, quedando que x D 11=1510 :
Otro ejemplo: x D 0;10101.
Primero se multiplica por 22 : y D 22  x D 10;101. La parte entera es 2 y con la parte fraccionaria, z D 0;101, se
procede como antes:
23  z D 101;101
z D 000;101:
De aquí, restando, 7z D 5, por lo que la parte fraccionaria es z D 5=7.
El resultado 22  x D y D 2 C 5=7, por lo que x D 2 2 y D 19=2810 .
El cuadro 1.3 lista los formatos habituales con los que un ordenador presenta a un usuario la información que guarda
en binario de un número cualquiera.

Decimal Binario Octal (base 8) Hexadecimal (base 16)


0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10
17 10001 21 11

Cuadro 1.3: Formatos de la información de diversos números en un ordenador

Por ejemplo, comprobemos en una sesión de trabajo de M ATLAB como éste nos devuelve en hexadecimal ciertos datos
que le damos. El resultado se puede ver en le cuadro 1.4.
8 j Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos

>> format hex


>> 1
ans =
3ff0000000000000
>> 9.4
ans =
4022cccccccccccd
>> 1/0
ans =
7ff0000000000000
>> 0/0
ans =
fff8000000000000
>>

Cuadro 1.4

1.3 Formato binario estándar IEEE para representar números.


Precisión doble, palabra de 64 bits y sistema normalizado
El esquema de cuál es la disposición física en el ordenador de esa “palabra” de 64 bits es este

63 62 52 51 0
S Exponente Mantisa

El bit de signo es S : 0 para números positivos; 1 para los negativos. El exponente (11 bits) no tiene bit de signo: cualquier
exponente1 es 0  Exp  2047. Para que sea siempre positivo tiene un sesgo, el número 1023 D 210 1.
La representación con este estándar de cualquier dato numérico es:

. 1/S  2.E xp 1023/


 1;M ant i sa:

Si Exp D 2047 y M ¤ 0, el valor es NaN ("Not a number").


Si Exp D 2047 y M D 0, el valor es -Inf si S D 1; Inf, si S D 0.
Si Exp D 1 y M D 0, el valor es el más pequeño representable: 2 1022 .
Si Exp D 0 y M ¤ 0, valores desnormalizados, el valor es . 1/S  2 1022  0;M ant i sa.
Si Exp D 0, M D 0 y S D 1, el valor es -0.
Si Exp D 0, M D 0 y S D 0, el valor es 0.
En el caso de 1 D C1; 0000000000000000000000000000000000000000000000000000  20 , su codificación interna es

0 01111111111 0000000000000000000000000000000000000000000000000000

una vez se añade 1023 al exponente. Entonces 0011111111112 D 3FF16 .


El siguiente número mayor que 1 con este formato estándar es

C1; 0000000000000000000000000000000000000000000000000001  20 ;

o 1 C 2 52 . Interno 0 01111001011 0000000000000000000000000000000000000000000000000000 El exponente es


0011110010112 D 3CB16 D 97110 . Es decir, 2971 1023 D 2 52 .
Volviendo a repasar la sesión interactiva anterior con M ATLAB resulta la parte izquierda del cuadro 1.5. El número
9;4 D 1001;0110 se guarda así:

0 10000000010 0010 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1101 D
D 4022C C C C C C C C C C CD:
1 2047 D 211 1
1.3 Formato binario estándar IEEE para representar números. Precisión doble, palabra de 64 bits y sistema normalizado j 9

>> format hex; 1


ans = >> 1+2^-53==1
3ff0000000000000 ans =
>> 9.4 1
ans = >> 1+2^-52==1
4022cccccccccccd ans =
>> 1/0, 0/0 0
ans = >> 2^-53
7ff0000000000000 ans =
ans = 1.110223024625157e-016
fff8000000000000 >> ans*2
>> eps ans =
ans = 2.220446049250313e-016
3cb0000000000000 >> eps
>> 1+2^-52 ans =
ans = 2.220446049250313e-016
1.000000000000000

Cuadro 1.5

La mantisa se ha troceado en grupos de 4 bits para hacerlos corresponder con el formato hexadecimal. El exponente
es 1023 C 3 D 1026 D .10000000010/2 . Añadiendo el bit de signo, los doce primeros bits, en hexadecimal, resultan
40216 . Hay que tener en cuenta que al ajustar un número a lo que admite una máquina muchas veces se pierde algo de
información como veremos inmediatamente.
Los resultados de la sesión con M ATLAB de la parte izquierda del cuadro 1.5 corroboran la representación interna de
1=0 D 1 y 0=0 D NaN.
Si jugamos un poco más con las posibilidades que nos permite M ATLAB, para comprobar qué pasa en la realidad con
estos conceptos y con ciertos números dentro de la máquina, se obtiene el resto de lo que se muestra en dicho cuadro 1.5.
Definición 1.2 Se denomina epsilon de una máquina, maq K , a la distancia entre 1 y el número más pequeño mayor
que uno del sistema de numeración de esa máquina. Si éste es el IEEE estándar de precisión doble, maq
K D2
52
:
Para calcular el epsilon de una máquina se puede utilizar epsilon.m, un script de M ATLAB que se lista a continua-
ción.
function eps=epsilon
eps=1;
while 1+eps~=1
eps=eps/2;
end
eps=eps*2;
end

Los resultados de utilizarlo y el que da el propio M ATLAB son estos:

>> eps1=epsilon
eps1 =
2.220446049250313e-016
>> eps % El de MATLAB
eps =
2.220446049250313e-016

Los números positivos más grande y más pequeño que M ATLAB puede representar en precisión doble son:

fmi n D 2 1022 D 2;225073858507201  10 308


fmax D .1 2 53 /  21024 D 1;7976931348623157  10308
fmi ndesnor: D 2 1022 52 D 4;940656458412465  10 324

Con la utilidad vpa() de M ATLAB, que nos permite realizar operaciones con la precisión que queramos, se obtiene
lo que expresa el cuadro 1.6 a la izquierda. Si se hacen algunas comprobaciones con M ATLAB utilizando realmax y
realmin resulta lo que se indica en ese cuadro a la derecha.
10 j Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos

>> realmin
ans =
2.225073858507201e-308
>> realmax
>> digits(35) Variable Precision Arithmetic
ans =
>> vpa(’(1-2^(-53))*2^1024’) 1.797693134862316e+308
>> realmax*2
ans = ans =
1.7976931348623157081452742373170436*10^308 Inf
>> (1-2^(-53))*2^1024 >> realmin/2
ans =
ans = 1.112536929253601e-308
Inf >> realmin/(2^52)
ans =
>> 2^(-1022) 4.940656458412465e-324
ans = >> ans/2
2.225073858507201e-308 ans =
0
>> vpa(’2^(-1028)’)
ans =
3.4766779039175021610784886208318814*10^(-310)

Cuadro 1.6

1.3.1 Precisión sencilla, palabra de 32 bits y sistema normalizado


31 30 23 22 0
S Exponente Mantisa

Los valores típicos con los que se trabaja en esta precisión son los de la tabla del cuadro 1.7. La tabla del 1.8 explicita
una comparación de los parámetros más significativos de las precisiones doble y sencilla en un ordenador estándar.

S E xp M Valor
0 11111111 00000100000000000000000 NaN
1 11111111 00100010001001010101010 NaN
0 11111111 00000000000000000000000 1
0 10000001 10100000000000000000000 C1  2129 127  1;101 D 6; 5
0 10000000 00000000000000000000000 C1  2128 127  1;0 D 2
0 00000001 00000000000000000000000 C1  21 127  1;0 D 2 126
0 00000000 10000000000000000000000 C1  2 126  0;1 D 2 127
0 00000000 00000000000000000000001 C1  2 126  2 23 D 2 149
0 00000000 00000000000000000000000 0
1 00000000 00000000000000000000000 -0
1 10000001 10100000000000000000000 1  2129 127  1;101 D 6; 5
1 11111111 00000000000000000000000 1

Cuadro 1.7: Valores de cómo representa diversos números un ordenador en precisión sencilla

1.3.2 Codificación o representación de un número


Para comprender un poco mejor cómo codifica un número el estándar IEEE, volvamos a 9;4 D .1001;0110/2 . En
principio, en precisión doble, este número se “ve” así

C1; 0010110011001100110011001100110011001100110011001100 110 : : :  23 ;

con los primeros 52 bits de la mantisa encuadrados o encajados en el compartimento reservado por la máquina para él.
Ahora bien, ¿cómo se encaja adecuadamente una ristra infinita de decimales binarios en el sistema de numeración de
IEEE?
1.3 Formato binario estándar IEEE para representar números. Precisión doble, palabra de 64 bits y sistema normalizado j 11

Precisión simple Precisión doble


dígitos significativos (p) 24 bits 53 bits
longitud del exponente 8 bits 11 bits
bits de información 32 64
emax 127 1023
emi n -126 -1022
valor más grande normalizado 2127  1038 21023  10308
valor más pequeño normalizado 2 126  10 38 2 1022  10 308

maqui
K na 21 24  10 7 21 53  10 16

Precisión simple Precisión doble


E xp D 0 0 < E xp < 255 0 < E xp < 2047 Exp=255 (s) ó 2047(d)
M D0 ˙0 potencias de 2 ˙1
M ¤ 0 desnormalizados números ordinarios NaN

Cuadro 1.8: Diferencias más significativas entre IEEE en precisión sencilla y precisión doble

¿Truncándola o cortándola? Es decir, abandonando o ignorando los que no caben en esa “caja”.
¿Redondeándola? En otras palabras, haciendo algo más inteligente para que se pierda la menor cantidad de infor-
mación de ese número.
El modelo general de cómo un ordenador representa en coma flotante (formato decimal) un número lo definen

el conjunto G D fx 2 R W m  jxj  M g [ f0g


y la aplicación f l./ W G ! F

el elemento c 2 F más próximo a x, si se redondea;
tales que f l.x/ D
el c 2 F más cercano a x que satisfaga jcj  jxj, si se trunca.

En una máquina ficticia que trabajase con ˇ D 10 y con p D k el efecto de redondeo y truncamiento sería:
Truncando, el número real
x D C0;d1 d2 d3 : : : dk dkC1 dkC2 : : :  10n
perdería los dígitos dkC1 ; : : : quedando C0;d1 d2 d3 : : : dk  10n .
Redondeando, se añadiría 5  10n .kC1/ al número en cuestión y luego se truncaría.
Si por ejemplo en una máquina ficticia p D 3, el número 0;3246 se representaría con 0;324 truncando y con 0;325
redondeando. El error de redondeo interno de una máquina es debido a ese truncamiento o redondeo.

La técnica o regla de redondeo al más cercano de IEEE consiste en sumar un 1 al bit número 52 si el 53 es 1, o
no hacer nada –redondear por lo bajo– en el 52 si el 53 es 0.

Excepción: Si los bits que siguen al 52 son 10000 : : : (a medio camino entre el valor superior e inferior) se redondea de
tal manera que el 52 sea siempre 0.
Con este criterio el número 9;4 quedaría así:

C1; 0010110011001100110011001100110011001100110011001101  23 :

Se ha desechado la ristra 0;1100  2 52


 23 D 0;0110  2 51
 23 D 0;4  2 48
y se ha sumado 2 52
 23 D 2 49
al
redondear.
En resumen
f l.9;4/ D 9;4 C 2 49 0;4  2 48

D 9;4 C 1 0;8 2 49
D 9;4 C 0;2  2 49 :
12 j Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos

Se ha cometido así un error de redondeo al guardarlo de 0;2  2 49


.
Definición 1.3 El error absoluto de la representación x  del número x en un ordenador es jx x  j.
El error absoluto de la representación de un número x en el sistema de coma, o punto, flotante de un ordenador es
jx f l.x/j.
Definición 1.4 El error relativo de la representación x  del número x en un ordenador es
jx x  j
:
jxj

El error relativo de redondeo del sistema de numeración IEEE, f l.x/, está acotado de la siguiente manera

jx xj 1
 maq
K :
jxj 2

El redondeo afecta a la representación de todos los resultados de las operaciones pues f l.x/ D x.1 C ı/, jıj <
1
 K .
2 maq

1.4 La aritmética en un ordenador


Para ver cómo lleva a cabo las operaciones aritméticas elementales un ordenador, empecemos analizando brevemente la
suma de dos cantidades cualquiera. El cuadro 1.9 explicita cómo se suman en un ordenador moderno los números 3 y 14.
Hay que tener mucho cuidado con los casos extremos de números con exponentes muy dispares. Ver el cuadro 1.10.

310 = 1;100  21 D 1;100  21024 1023


1410 = 1;110  23 D 1;110  21026 1023
Alineamiento
310 = 0;011  21026 1023
1410 = 1;110  21026 1023
Suma
0;011
1;110
10;001 ) 10;001  21026 1023
D 1;0001  21027 1023 D 100012 D 1710

Cuadro 1.9: Operación de suma de los números 3 y 14 dentro de un ordenador binario moderno

>> x=2^30
x =
1.073741824000000e+009
>> 2^-22
ans =
2.384185791015625e-07
>> x+2^-22==x
ans =
0
>> x+2^-23==x
ans =
1
>> 2^-23
ans =
1.192092895507813e-07

Cuadro 1.10
1.4 La aritmética en un ordenador j 13

El sistema de numeración de un ordenador, F , tiene definidas entre sus elementos todas las operaciones aritméticas
habituales. Dada la finitud de F son operaciones aritméticas de precisión finita.
Si 2 designa cualquiera de las cuatro operaciones aritméticas elementales C, ,  y , y ja2bj pertenece al conjunto
G, antes definido, el resultado de cualquier cómputo o cálculo en ordenador con ellas dará como resultado f l.a2b/.
Cualquier operación aritmética en ordenador cumple que
f l.a2b/ D .a2b/.1 C ı/
1
donde jıj < maq
2 K :
Si las operaciones aritméticas elementales en una máquina se representan por ˚, , ˝ y ˛, el resultado de aplicarlas
será siempre:
a ˚ b D f l.f l.a/ C f l.b//I
a b D f l.f l.a/ f l.b//I
a ˝ b D f l.f l.a/  f l.b// y
a ˛ b D f l.f l.a/  f l.b//:
El error relativo de cualquiera de estas operaciones es siempre entonces
ja2b f l.a2b/j 1
 maq
K :
ja2bj 2
Para ver lo que esto implica en una máquina ficticia con ˇ D 10, p D 3, en la que la representación se hace mediante
truncamiento:
La operación aritmética .10 3 C 1/ 1 dará como resultado
3
f lŒf l.10 C 1/ 1 D 0:
El error relativo es 1 (el 100 %). Por el contrario,
3 3
f lŒ10 C f l.1 1/ D 10 ;
da un resultado exacto.
La aritmética de coma flotante, por consiguiente, no es asociativa: .1 C =2/ C =2 D 1, pero 1 C .=2 C =2/ > 1.
Ni distributiva: .a C b/  c ¤ a  c C b  c.
Juguemos un poco con M ATLAB otra vez para comprobar qué pasa en la realidad interna de una máquina normal.
Recordemos que
f l.x/ D 1 si 1 < x  1 C M
f l.x/ D 1 C 2m si 1 C m < x < 1 C 2m :
Una sesión de trabajo llevando la mantisa a sus límites y actuando sobre el número 9;4, podría resultar en algo como lo
que se ve en el cuadro 1.11.
El error en la codificación de 3;4 era 0;2  2 49 . Cuando se le resta 9 el error sigue siendo el mismo pues la represen-
tación de este número es exacta. El número 0;4 tiene un error de representación de f l.0;4/ D 0;4 C 0;1  2 52 , lo que
hace que el error final sea

0;2  2 49 0;1  2 52 D 0;1  2 52 24 1 D 3  2 53 :
Ejemplo 1.2 Supongamos que se quiere operar con los números x D 1
3
ey D 5
7
en una máquina con ˇ D 10 y p D 5
que usa truncamiento.
La representación en esa máquina de esos números será
f l.x/ D 0,33333  100 y f l.y/ D 0,71428  100 :
Los resultados de diversas operaciones y sus errores son:
Operación Resultado Valor Real Error Absoluto Error Relativo
x˚y 0,10476  10 1
22=21 0,190  10 4
0,182  10 4

y x 0,38095  100 8=21 0,238  10 5


0,625  10 5

x˝y 0,23809  100 5=21 0,524  10 5


0,220  10 4

y˛x 0,21428  101 15=7 0,571  10 4


0,267  10 4
14 j Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos

>> e = 1 - 3*(4/3 - 1)
e = >> 1+(2^53-2^53)
2.2204e-016 ans =
>> a = 0.0; 1
for i = 1:10 >> sin(pi)
a = a + 0.1; ans =
end 1.2246e-016
a == 1 >> format long
ans = >> x=9.4
0 x =
>> b = 1e-16 + 1 - 1e-16; 9.400000000000000
c = 1e-16 - 1e-16 + 1; >> y=x-9
b == c y =
ans = 0.400000000000000
0 >> z=y-0.4
>> (2^53 + 1) - 2^53 z =
ans = 3.330669073875470e-016
0 >> 3*2^-53
>> 1+2^53-2^53 ans =
ans = 3.330669073875470e-016
0

Cuadro 1.11

Como el error máximo relativo es 0;267  10 4 , la aritmética de ese ordenador para estos cálculos produce errores
satisfactorios.
Usemos ahora estos números: u D 0;714251, v D 98765;9 y w D 0;111111  10 4 .
Su representación en esa máquina será

f l.u/ D 0,71425  100 ; f l.v/ D 0,98765  105 y f l.w/ D 0,11111  10 4


:

Hagamos unas operaciones sencillas. Como muestra la tabla de resultados que sigue, y u produce un error absoluto
pequeño pero un error relativo bastante grande:

Operación Resultado Valor Real Error Absoluto Error Relativo


y u 0,30000  10 4
0,34714  10 4
0,471  10 5 0,136
.y u/ ˛ w 0,27000  101 0,31243  101 0,424 0,136
.y u/ ˝ v 0,29629  101 0,34285  101 0,465 0,136
u˚v 0,98765  105 0,98766  105 0,161  101 0,163  10 4

La división posterior por w y multiplicación por v amplifica el error absoluto sin modificar el error relativo.
Por el contrario, la adición del número grande v y el pequeño u produce un error absoluto grande pero no un gran
error relativo.

1.5 Fuentes de errores en los algoritmos y modelos numéricos.


Evaluación y análisis
Un algoritmo perfectamente diseñado se puede utilizar en problemas mal condicionados, en los cuales los errores tienden
a crecer de una forma incontrolada según se llevan a cabo operaciones aritméticas.
La condición de un problema es directamente proporcional a la sensibilidad de los resultados a pequeñas variaciones
en los datos. Si la condición es muy grande, deben esperarse dificultades aunque los datos iniciales sean exactos, pues
los errores numéricos tenderán a amplificarse.
También se pueden dar algoritmos inestables, que no tienen en cuenta esas consideraciones a escala de operaciones
individuales, u otras como vemos a continuación.
1.5 Fuentes de errores en los algoritmos y modelos numéricos. Evaluación y análisis j 15

1.5.1 Error de cancelación o pérdida de relevancia


Analicemos esta operación, que debería dar 1.

>> x=1.e-15; ((1+x)-1)/x


ans = 1.110223024625157e+000

El error de cancelación, o de pérdida de relevancia o significancia, se refiere a la pérdida de dígitos que conlleva la
representación final de ciertas operaciones —resta esencialmente— entre números de magnitud similar, o muy grandes
y muy pequeños, que dan un resultado con un número de dígitos representable muy pequeño.
Como acabamos de ver, para llevar a cabo sumas y multiplicaciones de dos números, primero son convertidos a un
formato de exponente común. Si el desplazamiento que ello conlleva en uno de los dos supera los dígitos significativos
que la máquina permite, se puede perder toda la información de ese número, o introducir una nueva, incontrolable, que
afecte mucho al resultado final. Por ejemplo, el resultado de las operaciones que siguen de M ATLAB puede llamar a
engaño.
>> format long
>> a=0.483525656234498
a =
0.483525656234498
>> b=0.483525534699123
b =
0.483525534699123
>> a-b
ans =
1.215353749861592e-007

Veamos qué pasa en M ATLAB con x=1.e-15 tal como se hace en el cuadro 1.12. Al añadirse a 1:e 15 un 1, la mantisa

>> format long


>> x=1.e-15;
>> x
x =
1.000000000000000e-015
>> 1+x
ans =
1.000000000000001e+000
>> (1+x)-1
ans =
1.110223024625157e-015
>> 1+x
ans =
1.000000000000001e+000
>> ans-1
ans =
1.110223024625157e-015
>> ans/x
ans =
1.110223024625157e+000
>>

Cuadro 1.12

resultante sólo tiene un dígito significativo, o poco más, con respecto a la información originalmente suministrada.
Ejemplo 1.3 Considérese ahora la función f .x/ D .1 cos x/=x 2 . Si x D 1;2  10 5
, el valor de cos x, redondeado a
diez2 dígitos significativos, es
c D 0;9999999999
por lo que
1 c D 0;0000000001:
La representación por el ordenador de 1 c sólo posee un dígito real.
2 El valor con treinta dígitos es 0,999999999928000000000863999999.
16 j Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos

Utilicemos ahora la rutina vpa() de M ATLAB con distintos números de dígitos significativos:
>> vpa(’1-cos(0.000012)’,10)
ans =
.1e-9
>> vpa(’1-cos(0.000012)’,30)
ans =
.71999999999136000000e-10

El valor de la función que se busca, con lo obtenido en primer lugar, es


1 c 10 10
D D 0;6944 : : :
x2 1;44  10 10

el cual es erróneo pues 0  f .x/ < 1=2 para todo x ¤ 0. De hecho,


>> vpa(’1-cos(0.000012)’,10)/vpa(’0.000012^2’,10)
ans =
.69444444444444444444444444444444 % PERO.....
>> vpa(’1-cos(0.000012)’,50)/vpa(’0.000012*0.000012’,50)
ans =
.49999999999400000000002880000000
>>

Para evitar de una forma inteligente el error de cancelación de este caso, como cos x D 1 2 sen2 .x=2/, es fácil ver
que
 
1 sen.x=2/ 2
f .x/ D :
2 x=2
Calculando f .x/ mediante esta fórmula y aproximando sen.x=2/ con 10 dígitos significativos, el resultado es f .x/ D
0;5, que se aproxima al valor exacto en 10 dígitos.
>> vpa(’sin(0.000012/2)^2’,10)/vpa(’(0.000012/2)^2’,10)/2
ans =
.50000000000000000000000000000000
>>

En general, no es buena práctica dar por buenos números de magnitud muy pequeña resultado de una diferencia de
números mucho más grandes.
La representación en el entorno de 0 de
 
.1 cos x/ 1 sen.x=2/ 2
f .x/ D y g.x/ D :
x2 2 x=2
es la de la figura 1.1. La impresión de un cierto caos de precisión cerca de 0 es indudable.

1.5.2 Errores presentes en los algoritmos numéricos


1.5.2.1 Truncamiento de series
Un ejemplo clásico de algoritmo numérico es el del cálculo de una serie exponencial como, por ejemplo, e x
. La
expresión del desarrollo en serie de e x es:
x2 x3
ex D 1 C x C C C 
2Š 3Š
Si se desea calcular e 5,5 mediante esta expresión en una máquina con ˇ D 10 y p D 5, los resultados que se obtienen
son los siguientes:
e 5,5 D C1,0000 5,5000 C 15,125 27,730 C 38,129
41,942 C 38,446 30,208 C 20,768 12,692
C 6,9803 3,4902 C 1,5997   
D C0,0026363:
1 − cos2 x sin2 x
f (x) = , g(x) =
x2 1.5 Fuentes de errores en los algoritmos
x2 y modelos numéricos. Evaluación y análisis j 17
1.001
f
g

0.999
−0.01 0 0.01

.1 cos x/
results of cos xFigura
and1.1:
sinOscilaciones de f .x/ D to 10
x were rounded en el entorno de 0
x 2 decimal digits; other
calculations are exact
La suma de términos se trunca después del 25, pues los siguientes no aportan dígitos significativos a la precisión del
resultado. Problem conditioning and stability of algorithms 17-7

El valor real de e 5,5 es 0,00408677. Como se puede comprobar, la diferencia con 0,0026363 es muy importante:
absoluta y relativamente.
El problema con esta forma de calcular e 5,5 surge de la suma y resta de valores relativamente próximos en magnitud,
con la consiguiente pérdida de dígitos significativos por cancelación.
Una alternativa mejor es obtener el desarrollo en serie de e 5;5 y luego calcular el recíproco. Sería:

5;5 1 1
e D D D 0;0040865:
e 5;5 1 C 5;5 C 15;125 C   
Lo que lista el cuadro 1.13 es un programa de M ATLAB para calcular e x por desarrollo en serie y determinar los
errores que se cometen y cuándo ocurren.

function ssum = expSeriesPlot(x,tol)


% Suma de n términos de la serie exp**x
% Datos: x = exponente del número e
% tol = (opcional) tolerancia de la suma. Por defecto: tol = 5e-9
% La suma termina cuando T_k/S_k < tol, donde T_k es el
% término k-esimo y S_k la suma acumulada (con ese término).
if nargin < 2, tol=5e-9; end
term = 1; ssum = term; Eabs(1)=abs(ssum-exp(x)); k=1; % Inicializar valores
fprintf(’Aproximación en serie de exp(%f)\n\n’,x); % Cabecera salida
fprintf(’ k término k suma Error abs. serie\n’);
fprintf(’%3d %11.3e %11.3e %16.3e\n’,1,x,ssum,Eabs(1));
while abs(term/ssum)>tol % Bucle principal
k=k+1;
term = term*x/(k-1); % Siguiente término de la serie
ssum = ssum + term; Eabs(k) = abs(ssum-exp(x));
fprintf(’%3d %11.3e %11.3e %16.3e\n’,k,term,ssum,Eabs(k));
end
semilogy(1:k,Eabs,’-’); xlabel(’Número de términos’); ylabel(’Error absoluto’);
fprintf(’\nError de truncamiento después de %d términos: %11.3e\n\n’,k,Eabs(k));
end

Cuadro 1.13

En el cuadro 1.14 se lista la sesión interactiva con M ATLAB que utilizamos para calcular e 10 con el código anterior
(con una precisión mínima de 5e 12) y el gráfico del error absoluto respecto del número de términos considerado en
la serie.
Para k < 48 el error que se comete al evaluar la serie con la fórmula lo determina el truncamiento de la misma. A
partir de k > 48 es el error de redondeo interno el que evita que se pueda mejorar el resultado.
Este ejemplo pone de manifiesto la interdependencia entre los errores de redondeo internos de la máquina por la
representación de números y los errores debidos al truncamiento de series de cálculos que llevan a efecto determinados
18 j Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos

4
10

>> expSeriesPlot(-10,5e-12)
2
10
Aproximación en serie de exp(-10.000000)
k término k suma Error abs. serie 0
10
1 -1.000e+001 1.000e+000 1.000e+000
2 -1.000e+001 -9.000e+000 9.000e+000 −2
10
3 5.000e+001 4.100e+001 4.100e+001

Error absoluto
. −4

.
10

49 8.055e-014 4.540e-005 1.258e-013


50 -1.644e-014 4.540e-005 1.422e-013
−6
10

51 3.288e-015 4.540e-005 1.389e-013


52 -6.447e-016 4.540e-005 1.396e-013 −8
10
53 1.240e-016 4.540e-005 1.394e-013
Error de truncamiento después de 53 términos: 1.394e-013 −10
10
ans =
4.5400e-005 −12
10
>>
−14
10
0 10 20 30 40 50 60
Numero de terminos

Cuadro 1.14: Obtención de e 10 y error absoluto de calcular expSeriesPlot(-10,5e-12)

algoritmos. Lo que añade no poca incertidumbre adicional a los resultados de cualquier algoritmo numérico.

1.5.2.2 Solución de una ecuación cuadrática


Desde el punto de vista teórico, resolver la ecuación cuadrática ax 2 C bx C c D 0 es un problema trivial. Desde el
punto de vista numérico con precisión finita, no tanto.
Como es sabido, si a, b y c son números reales y a ¤ 0, las dos soluciones de la ecuación, x1 y x2 , están dadas por
las expresiones p
b C b 2 4ac
x1 D (1.1)
2a
y p
b b 2 4ac
x2 D : (1.2)
2a
Veamos lo que ocurre al aplicar directamente estas fórmulas en una máquina en la que ˇ D 10, p D 8, L D 50 y
U D 50.
Si a D 1, b D 105 y c D 1, las raíces auténticas de la ecuación son
x1 D 99999;999990 y x2 D 0;000010000000001:
Si se usan las expresiones (1.1) y (1.2) en la máquina apuntada, el resultado es
x1 D 100000;00 y x2 D 0;0:
Al calcular x1 y x2 ha habido un error de cancelación catastrófico, pues
 2 
fl 105 4 D 1010 :

La forma de evitarlo consiste en usar el signo de b para determinar cuál de las expresiones de (1.1) o (1.2) produciría
menor error de cancelación, y usarla para calcular la raíz de mayor valor absoluto, de acuerdo con la fórmula
 p 
b C signo.b/ b 2 4ac
x1 D :
2a
Como ax 2 C bx C c D a.x x1 /.x x2 /, lo que implica que ax1 x2 D c, la otra raíz se podría calcular usando la
expresión
c
x2 D :
ax1
1.5 Fuentes de errores en los algoritmos y modelos numéricos. Evaluación y análisis j 19

Aplicando este criterio en el ejemplo apuntado se obtendrían las raíces

x1 D 100000;00 y x2 D 0;00001

ambas buenas soluciones.

1.5.2.3 Aproximación de la derivada


De la definición de derivada de una función f W R ! R en un punto x,
f .x C h/ f .x/
f 0 .x/ D lKım ;
h!0 h
se puede deducir la aproximación por diferencias finitas muy habitual en cálculo numérico
f .x C h/ f .x/
f 0 .x/  :
h
Por el desarrollo en serie Taylor de la función f hasta segundas derivadas, formulado en 1715 por Brook Taylor, Reino
Unido, 1685-1731,

Taylor

se tiene que
f .x C h/ D f .x/ C f 0 .x/h C f 00 . /h2 =2;
para algún  2 Œx; x C h. Es decir,

f 0 .x/ D .f .x C h/ f .x// = h C f 00 . /h=2:

Esta expresión nos dice que el error de la aproximación por diferencias finitas, resultado del truncamiento de esa
fórmula a partir del tercer término, estará acotado pues M h=2, donde M acota jf 00 .t /j en un t cerca de x.
Suponiendo por otro lado que el error interno del cálculo de la función es , el error de redondeo interno de evaluar la
derivada por la fórmula de diferencias finitas estará acotado por 2= h.
El error total del cálculo en la derivada está acotado en consecuencia por la suma de los dos posibles componentes de
error,
Mh 2
C :
2 h
El primer término decrece, y el segundo se incrementa, al decrecer h
Haciendo la derivada de esta suma con respecto a h igual a cero, se obtiene que la misma se minimiza cuando
p
h  2 =M :

Para la función f .x/ D sen.x/, en x D 1, tomandopM D 1, el error total de la aproximación por diferencias finitas se
representa en la figura 1.2. Su mínimo es  10 8  .
El error de truncamiento en la aproximación por diferencias finitas puede reducirse usando la fórmula centrada:
f .x C h/ f .x h/
f 0 .x/  :
2h
En términos generales, los errores de redondeo tienden a prevalecer en los cálculos algebraicos de algoritmos que
llegan a una solución en un número de pasos finito, mientras que los de truncamiento sobresalen en los que se utilizan
derivadas, integrales, y no linealidades en general. Éste suele ser el caso de los algoritmos de procesos infinitos o cuasi
infinitos.
20 j Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos

2
10

0
10

−2
10

−4
10
total error
−6
10

error
−8
10

−10
10

−12
10

−14
10 truncation error rounding error

−16
10

−18
10
−16 −14 −12 −10 −8 −6 −4 −2 0
10 10 10 10 10 10 10 10 10
step size

Figura 1.2: Error total de la aproximación por diferencias finitas de f .x/ D sen.x/

1.5.2.4 Otra suma de infinitos sumandos


Como es sabido
X
1
2
2
k D D 1;64493406684822640606569166266 : : :
6
kD1

Supongamos que no se conoce el resultado o que se desea calcularlo con un ordenador.


Parece lógico codificar un bucle en k mediante el cual se sumen los términos de la serie hasta que el resultado no se
vea alterado por la incorporación de nuevos dígitos.
En un ordenador estándar, utilizando precisión sencilla, el valor que se obtiene a partir de k D 4096 es 1;64472532.
El truncamiento que llevaría a cabo este algoritmo haría que el resultado sólo se aproximase al exacto en cuatro dígitos,
cuando lo esperable, de acuerdo con el sistema de numeración de la máquina, serían 6 dígitos mínimo. ¿Qué pasa?
La respuesta está en la forma en que se efectúa la suma: primero los números de valor mayor y después los más
pequeños. En efecto, en k D 4096 se lleva a cabo la siguiente operación: s C 4096 2 . El término 4096 2 D 2 24 y
s  1;6.
Como ya hemos visto, la precisión sencilla utiliza una mantisa de 24 bits por lo que 4096 2 , frente a s  1;6, se sale
de la ventana de valores que admite la palabra de ordenador que ha de representar el resultado. Igual ocurriría con los
términos sucesivos.
Una forma de superar estas limitaciones consiste en acumular primero la suma de los términos más pequeños y luego
la de los grandes. Ello requiere anticipar cuántos términos se necesitan. Si la programamos en un pequeño código para
M ATLAB quedaría así:
function Suma_de_serie_1(j)
% Se simula suma 1/k^2 con infinitos sumandos
suma=0; i=j;
while i~=0
suma=suma+1/i/i;
i=i-1;
end
fprintf(’ Suma = %21.17f\n’,suma);
end

Si se utilizan 1010 términos, el valor que se obtiene con este código de M ATLAB es

>> tic, Suma_de_serie_1(10000000000), toc


Suma = 1.64493406674822640
Elapsed time is 73.001613 seconds.
>>

Es decir, el exacto con 10 dígitos significativos.


1.6 Fuentes de errores en los algoritmos y modelos numéricos. Evaluación y análisis j 21

Analicemos, por último, con la utilidad vpa(), esta variante del problema

>> i=vpa(’1’,30)
i =
function suma = Suma_de_serie_3(i,j)
1.0
%
>> tic, Suma_de_serie_3(i,200000), toc
suma=i*0;
ans =
for i1=i:j, suma=suma+1/i1/i1; end
1.6449290668607264156390818334169
end
Elapsed time is 282.695168 seconds.
>>

El tiempo en los cálculos se dispara pues la utilización de vpa() tiene un coste elevadísimo en términos de operaciones
a realizar.

1.5.2.5 Polinomio de Wilkinson


Toma el nombre de James Hardy Wilkinson, del National Physical Laboratory, Reino Unido, 1919-1986.

Wilkinson

Tiene esta expresión


w.x/ D .x 1/.x 2/    .x 20/;
y la forma de la figura 1.3.

Figura 1.3: Gráfico del polinomio de Wilkinson

Si se expande
w.x/ D x 20 210x 19 C 20615x 18 1256850x 17 C 53327946x 16 1672280820x 15 C
C40171771630x 14 756111184500x 13 C 11310276995381x 12
135585182899530x 11 C 1307535010540395x 10 10142299865511450x 9 C
C63030812099294896x 8 311333643161390640x 7 C
C1206647803780373360x 6 3599979517947607200x 5 C
C8037811822645051776x 4 12870931245150988800x 3 C
C13803759753640704000x 2 8752948036761600000xC
C2432902008176640000:

Saquemos partido durante un rato a este polinomio mediante una sesión de M ATLAB en la que utilizamos también las
herramientas de la matemática simbólica del mismo, todo ello según se indica el cuadro 1.15.
Veamos qué pasa si codificamos la expresiones anteriores en una function() y probamos más cosas para tratar de
resolver la ecuación con el polinomio de Wilkinson. El resultado está en el cuadro 1.16. La diferencia que debería dar
fzero(), según nuestro código, es cero, pues 16 es una de sus raíces.
22 j Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos

>> n = 20;
>> syms x % ENTRAMOS EN LOS CÁLCULOS SIMBÓLICOS DE MATLAB
>> P20 = prod(x-(1:n))
P20 =
(x - 1)*(x - 2)*(x - 3)*(x - 4)*(x - 5)*(x - 6)*(x - 7)*(x - 8)*(x - 9)*(x - 10)*(x - 11)*
(x - 12)*(x - 13)*(x - 14)*(x - 15)*(x - 16)*(x - 17)*(x - 18)*(x - 19)*(x - 20)
>> P = expand(P20)
P =
x^20 - 210*x^19 + 20615*x^18 - 1256850*x^17 + 53327946*x^16 - 1672280820*x^15 +
40171771630*x^14 - 756111184500*x^13 + 11310276995381*x^12 - 135585182899530*x^11 +
1307535010540395*x^10 - 10142299865511450*x^9 + 63030812099294896*x^8 -
311333643161390640*x^7 + 1206647803780373360*x^6 - 3599979517947607200*x^5 +
8037811822645051776*x^4 - 12870931245150988800*x^3 + 13803759753640704000*x^2 -
8752948036761600000*x + 2432902008176640000

Cuadro 1.15

function y=wilkpoly(x) >> fzero(@wilkpoly,16) % Raíz del poli. con MATLAB


% Evalua en x el polinomio de Wilkinson ans = 16.014680305804578
y=x^(20)-210*x^(19)+20615*x^(18)-1256850*x^(17)... %
+53327946*x^(16)-1672280820*x^(15)+40171771630*x^(14)... >> Z = sort(solve(P))’
-756111184500*x^(13)+11310276995381*x^(12)... Z =
-135585182899530*x^(11)+1307535010540395*x^(10); [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
y=y-10142299865511450*x^9+63030812099294896*x^8; 16,17,18,19,20]
y=y-311333643161390640*x^7+1206647803780373360*x^6; >> subs(P20,16)
y=y-3599979517947607200*x^5+8037811822645051776*x^4; ans = 0
y=y-12870931245150988800*x^3+ 13803759753640704000*x^2; >> y=wilkpoly(16)
y=y-8752948036761600000*x+2432902008176640000; y = -6.0293e+09
end

Cuadro 1.16

1.6 Operaciones de cálculo numérico con vectores y matrices


Las operaciones de cálculo numérico con vectores y matrices, es decir,
los productos de vectores por matrices y de dos matrices;
el cálculo de normas de vectores y matrices;
la evaluación del condicionamiento de sistemas de ecuaciones lineales,
son fundamentales en los métodos y algoritmos que estudiamos y analizamos en este libro.

Conocer cómo se llevan a cabo en un ordenador y optimizarlas es primordial

1.6.1 Producto de una matriz por un vector


Comencemos por y D Ax, donde A 2 Rmn y x 2 Rn . Cada coeficiente del vector y se obtiene mediante esta fórmula:
n
i
yi D aij  xj :
j D1

Esta operación se puede interpretar como:


Combinar linealmente los vectores columna de A;
Una serie de productos interiores de los vectores fila de A por x.
Usando un metalenguaje propio con el que vamos a describir a lo largo de este libro los distintos algoritmos que pre-
sentamos, este producto de matriz por vector en forma de algoritmo se estructuraría y presentaría como lo que lista el
cuadro 1.17. Para ser factible, las dimensiones deben cumplir que

— – —
Œm  n  Œn  1 D Œm  1 :
A x y
1.6 Operaciones de cálculo numérico con vectores y matrices j 23

 Producto y D Ax
Hacer y D 0
for i D 1 to m
for j D 1 to n
y.i / D y.i / C a.i; j /x.j /
end
end

Cuadro 1.17

En la zona de trabajo de M ATLAB se haría sin más que dar la instrucción >> y=A*x.
Si el algoritmo lo programamos con un conjunto de instrucciones como las que “entiende” M ATLAB se obtendría algo
así:
function y=Ax(A,x)
[m n]=size(A);
y=zeros(m,1);
for i=1:m
for j=1:n
y(i)=y(i)+A(i,j)*x(j);
end
end
end

En este script —o guión de instrucciones para M ATLAB— el bucle con el índice j materializa el producto interior de
la fila i de A por el vector x.
También se podría hacer algo un poco más sofisticado como lo que sigue.

function y = MatVecF(A,x)
[m n] = size(A);
y = zeros(m,1);
for i=1:m
y(i) = A(i,:)*x;
end
end

Éste sería el algoritmo programado en su versión por filas: una sucesión de productos interiores: los vectores fila de A,
A(i,:) en código de M ATLAB, por el vector x.
El algoritmo por columnas materializa que la operación Ax es equivalente a efectuar una combinación lineal de los
vectores columna de A. Por ejemplo,
2 3 2 3 2 3 2 3 2 3
1 2   17C28 1 2 23
7
y D Ax D 4 3 45 D 4 3  7 C 4  8 5 D 7 4 3 5 C 8 4 4 5 D 4 53 5 :
8
5 6 57C68 5 6 83

Codificado para M ATLAB quedaría así:

function y = MatVecC(A,x)
[m n] = size(A);
y = zeros(m,1);
for j=1:n
y = y + A(:,j)*x(j);
end
end

La operación Ax conlleva realizar O.mn/ multiplicaciones e igual número de sumas/restas. El que lleven más o menos
tiempo de ordenador dependerá de cómo se realiza la operación y la forma de almacenar en la memoria la matriz A.
Si la matriz se guarda por columnas (lo habitual por defecto), la operación en su forma por columnas requerirá menos
tiempo que la versión por filas, pues los coeficientes a los que se accede están contiguos en la memoria y se pueden
conseguir de una sola vez: una ristra de ellos: row, o renglón.
24 j Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos

Para realizar la operación y T D x T A, en vez de y D Ax, los programas anteriores se convertirían en los que siguen.

function y=VecMatF(x,A) function y=VecMatC(x,A)


[m n] = size(A); [m n] = size(A);
y = zeros(1,n); y = zeros(1,n);
for j=1:m for j=1:n
y = y+x(j)*A(j,:); y(j) = y(j)+x*A(:,j);
end end
end end

1.6.2 Producto de dos matrices


Si A 2 Rmr y B 2 Rrn son dos matrices dadas, el producto, C 2 Rmn D AB resulta de la fórmula
r
i
cij D ai k  bkj ;
kD1

para todo 1  i  m y 1  j  n. El algoritmo y su codificación directa en M ATLAB son los que se presentan en el
cuadro 1.18.

Inner Product (Row) ViewC DofABMatrix–Matrix


 Producto
function C = MatMatInt(A,B)
Hacer C D 0
Product
for j D 1 to n Column View of Matrix–Matrix
[m r]=size(A);
C = zeros(m,n);
[r n]=size(B); Product
for i D 1 to m for j=1:n
for k D 1 to r for i=1:m
c.i; j / D c.i; j / C a.i; k/  b.k; j / C(i,j) = A(i,:)*B(:,j);
end end
end
end
e product AB produces matrix C . The cij The
aend product
element AB end
produces a matrix C .
The columns of C are
is the
er product of row i of A and column j of B .linear combinations of the columns of A.
Cuadro 1.18

AB = C ⇐⇒ cij = a(i)b(j) AB = C ⇐⇒ c(j) = Ab(j)
Cada coeficiente cij es el resultado de un producto interior como indica la parte izquierda de la figura 1.4, pero cada
columna j de la matriz producto C es el resultado de multiplicar A por el vector columna j -ésimo de B (parte derecha).
) is a row vector, b(j) is a column vector. c(j) and b(j) are column vectors.

i i i
j j j j
= =
cij

r r

Figura 1.4 A b( j ) c( j )
a'(i ) b( j ) cij

Usando la potencia de M ATLAB el producto podría


The hacerse
columnasí:view of the matrix–matrix product AB = C is
e inner product view of the matrix–matrix product is easier to
helpful because it shows the relationship between the columns of
e for hand calculations. function C = MatMatVec(A,B)
and the[rcolumns
Ar]=size(A);
[m n]=size(B);of C .
C = zeros(m,n);
for j=1:n
C(:,j) = A*B(:,j);
end
end

La matriz resultado C también se puede ver como la suma de r matrices de rango uno, cada una resultado del producto
1.6 Operaciones de cálculo numérico con vectores y matrices j 25

exterior de dos vectores. Recordemos que el producto exterior de u y v es


2 3 2 3
u1 u1 v1 u1 v2    u1 vn
6 u2 7 6 u2 v1 u2 v2    u2 vn 7
6 7 6 7
uvT D 6 : 7 Œv1 v2    vn  D 6 : :: : : :: 7 :
4 :: 5 4 :: : : : 5
um um v1 um v2    um vn

Según esto,
r
i
C D AB D A.W; k/B.k; W/:
kD1

Una vez más en M ATLAB:


function C = MatMatExte(A,B)
[m r]=size(A); [r n]=size(B);
C = zeros(m,n);
for k=1:r
C = C + A(:,k)*B(k,:);
end
end

Todos estos métodos realizan O.mnr/ multiplicaciones e igual número de sumas/restas. El procedimiento más ade-
cuado para programarlo en ordenador dependerá de cómo se almacenan en él las matrices. El más eficaz suele ser el que
denominábamos MatMatVec. Lo veremos más adelante con un ejemplo.

1.6.2.1 Fórmula de Strassen para multiplicar matrices


Desarrollada en 1969 por Volker Strassen, Alemania, 1936-.

Strassen

Se usa para multiplicar dos matrices A y B cuadradas de dimensión un número potencia de 2: 2p .


Se basa en una reordenación inteligente de los cálculos convencionales. Si A y B son bloques 2  2, el producto es
    
C 11 C 12 A11 A12 B11 B12
D
C 21 C 22 A21 A22 B21 B22
 
A11 B11 C A12 B21 A11 B12 C A12 B22
D :
A21 B11 C A22 B21 A21 B12 C A22 B22

Esta operación, en términos de bloques, necesita 8 multiplicaciones y 4 sumas en su forma tradicional. Strassen propone
reagrupar las operaciones de tal manera que sólo se necesiten 7 multiplicaciones y 18 sumas. Para ello, haciendo las 7
multiplicaciones

P 1 D .A11 C A22 /.B11 C B22 /


P 2 D .A21 C A22 /B11
P 3 D A11 .B12 B22 /
P 4 D A22 .B21 B11 /
P 5 D .A11 C A12 /B22
P 6 D .A21 A11 /.B11 C B12 /
26 j Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos

P 7 D .A12 A22 /.B21 C B22 / el resultado final sale de

C 11 D P 1 C P 4 P5 C P7
C 12 D P 3 C P 5
C 21 D P 2 C P 4
C 22 D P 1 C P 3 P 2 C P 6:

Generalizando, si las 7 multiplicaciones son de matrices n  n, como las submatrices son .n=2/  .n=2/, se requieren
 
7 3 7 2 9
n multiplicaciones C n .n 2/ C n2 sumas:
8 8 2

La operación “natural” requeriría n3 multiplicaciones y n2 .n 1/ sumas.


Para un dimensión n suficientemente grande el procedimiento de Strassen reduce las operaciones por un factor de
alrededor de 7=8 con respecto a la operación tradicional, Si se aplica recursivamente la idea y se van dividiendo las
submatrices en cuatro bloques, cada unos de estos en otros cuatro y así sucesivamente, el procedimiento mejorará
sustancialmente el número total de operaciones que hay que efectuar. El número de éstas que realmente se hace con las
fórmulas de Strassen, para matrices grandes, es O.nlg2 7 /.
El orden de las matrices de menor tamaño al que se puede aplicar esta idea es nmi n D 16, pues con bloques más
reducidos el número de operaciones que se realiza es mayor que el ordinario.
En la carrera por conseguir algoritmos más rápidos para multiplicar matrices, Winograd y Coppersmith presentaron
en 1987 uno de O.n2;376 / operaciones. Se sigue trabajando....
Codificadas en M ATLAB, las fórmulas de Strassen para matrices n  n, con n D 2p , son las que del cuadro 1.19.

function C = strass(A,B)
% Calcula C=AxB mediante la fórmula de Strassen
% A,B matrices n x n; n potencia de 2.
%
n = length(A);
if n-2^(log2(n))~=0, error(’n no es pot. de 2’); end
if n <= 16, C = A*B;
else
m = n/2; u = 1:m; v = m+1:n;
P1 = strass(A(u,u)+A(v,v),B(u,u)+B(v,v));
P2 = strass(A(v,u)+A(v,v),B(u,u));
P3 = strass(A(u,u),B(u,v)-B(v,v));
P4 = strass(A(v,v),B(v,u)-B(u,u));
P5 = strass(A(u,u)+A(u,v),B(v,v));
P6 = strass(A(v,u)-A(u,u),B(u,u) + B(u,v));
P7 = strass(A(u,v)-A(v,v),B(v,u)+B(v,v));
C = [P1+P4-P5+P7 P3+P5; P2+P4 P1+P3-P2+P6];
end
end

Cuadro 1.19

Para conocer los tiempos de cálculo y prestaciones de estas fórmulas y los anteriores algoritmos de multiplicación,
utilizaremos un programa, TiemposAxB, que multiplica dos matrices cuadradas de un tamaño dado con todos los algo-
ritmos presentados. Sus resultados se listan en el cuadro 1.20. Como se puede observar en él, al ir doblando el tamaño
de las matrices, los tiempos se multiplican aproximadamente por 23 . Las precisiones son muy parecidas.

1.6.3 Normas de vectores y matrices


1.6.3.1 Vectoriales
Un espacio vectorial E sobre el cuerpo K (R o C) se dice que es un espacio vectorial normado si en él se define una
norma vectorial como una aplicación k  k W E ! R que verifica

1) kvk D 0 H) v D 0 y x ¤ 0 H) kxk > 0;


1.6 Operaciones de cálculo numérico con vectores y matrices j 27

>> TiemposAxB(256)
Error en Int: 7.105427e-014
Error en Exte: 1.705303e-013
Error en Vec: 1.705303e-013
Error en Strass: 7.531753e-013
Tiempos: Int: 0.374; Exte: 0.827; Vec: 0.016; Strass: 0.109; MATLAB: 0.000
>> TiemposAxB(512)
Error en Int: 1.136868e-013
Error en Exte: 3.694822e-013
Error en Vec: 3.694822e-013
Error en Strass: 3.041123e-012
Tiempos: Int: 1.607; Exte: 2.730; Vec: 0.172; Strass: 0.640; MATLAB: 0.062
>> TiemposAxB(1024)
Error en Int: 3.410605e-13
Error en Exte: 1.108447e-12
Error en Vec: 1.108447e-12
Error en Strass: 1.642775e-11
3.1 Espacios normados
Tiempos: Int: 10.516; Exte: 17.906; Vec: 0.625; Strass: 2.891; MATLAB: 0.188
>> TiemposAxB(2048)
Error en Int: 5.684342e-13
Error en Exte: 3.069545e-12
Si en un espacio vectorial E sobre K (R o C) se define una norma vectorial c
Error en Vec: 3.069545e-12 k  k W E ! R que verifica
Error en Strass: 7.560175e-11
Tiempos: Int: 90.000; Exte: 170.953; Vec: 12.938; Strass: 17.234; MATLAB: 0.750
>> TiemposAxB(4096) kvk D 0 H) v D 0 y x ¤ 0 H) kxk > 0;
Error en Int: 9.094947e-13
Error en Exte: 8.867573e-12
Error en Vec: 8.867573e-12 k˛vk D j˛jkvk para ˛ 2 K y v 2 E;
Error en Strass: 3.319656e-10
ku C vk  kuk C kvk
Tiempos: Int: 4537.313; Exte: 970.969; Vec: 108.250; Strass: 78.938; MATLAB: 5.609 8u; v 2 E;

se Cuadro
dice que1.20
E es un espacio vectorial normado.
La condición kuCvk  kukCkvk es la desigualdad de Minkowski; se conoce
del triángulo. Es una generalización del hecho de que un lado de un triángulo no p
2) k˛vk D j˛jkvkla suma
para de ˛
los2otros
K ydos:
v 2ver
E;figura. Una variante de esta regla es la siguiente:
3) ku C vk  kuk C kvk 8u; v 2 E: ku vk  kuk kvk:

La condición ku C vk  kuk C kvk se conoce como regla del triángulo. Su expresión gráfica es la de la figura 1.5. Es

v
uCv

u
Figura 1.5
Figura 3.1: Representación gráfica de la regla del triángulo

una generalización del hecho de que la longitud de un En


lado
el de un triángulo
espacio vectorialnoKpuede
n
, paraser
1 mayor queselatiene
p < 1, sumalade las dedelosnormas
familia
otros dos. Una variante útil es esta: ku vk  kuk kvk.  1=p
En el espacio vectorial Kn , para 1  p < 1, se tiene la familia de normas kxk D jx jp C    C jx jp ;
p 1 n

 1=p
denominadas
p normas p p de Hölder. Casos particulares lo constituyen las correspo
kxkp D pjxDj
1 2: C    C jx n j ;

X n
kxk D
denominadas normas p de Hölder, o normas `p . Su formulación se debe a Otto Hölder, Alemania,
1 jxi1859-1937.
j
i D1
p
kxk2 D jx1 j2 C    C jxn j2 :
Esta última se denomina en Rn norma euclídea. También en Kn es una norma la
Hölder kxk1 D mKax jxi j :
1in

Estas normas cumplen, cualquiera que sea x 2 Kn , que


kxk1  kxk2  kxk1  nkxk1 :

Si la bola cerrada unidad en R2 es el conjunto fx 2 R2 W kxk  1g, sus form


28 j Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos

Casos particulares muy utilizados corresponden a p D 1, p D 2 y p D 1:

X
n
kxk1 D jxi j
iD1
kxk1 D mK
qax1i n jxi j
kxk2 D jx1 j2 C    C jxn j2 (norma euclídea en Rn )

Cumplen, cualquiera que sea x 2 Kn , que kxk1  kxk2  kxk1  nkxk1 .


Si la bola cerrada
– Si el unidad
conjunto enRR22W es
fx 2 kxkel conjunto 2 Rcerrada
fxbola
 1g es la
2
 1g, suenforma en espacios vectoriales normados por la
W kxk unidad
1, 2, 1 yRp2,son las que representa la figura 1.6.
su forma para las normas vectoriales 1, 2, 1, y p son estas.
2
2

i
kxk
x11 D
= |xijx
| ij D1
i=1
iD1

q
 √ q
kxk
x22 D |x11|j22+C|xjx
= jx 2 2
j DxT xx T x D 1
2 | 2=

∞ D mK
kxk1 ax jx
i ij D 1
1≤i≤2 1i2

kxkp D Œjx1jp C jx2jp 1=p ; .1  p < 1/


D1
28/63

Figura 1.6: Forma de la bola unidad para diferentes normas en R2


a b c 1 2 3

En el espacio C Œ0; 1, de funciones en C continuas del intervalo Œ0; 1 —también se puede ver escrito Œ0 1—, son
d e f g 9 4 6 5

normas h i j 10 8 7

"Z #1=p
1
kf kp D jf .t /jp dt
0
y
kf k1 D mKax jf .t /j :
t2Œ0;1

En un espacio vectorial normado se define la distancia entre dos elementos u y v mediante


d.u; v/ D ku vk :
Esta definición convierte a cualquier espacio vectorial normado en un espacio métrico.
En un espacio euclídeo n-dimensional, expresado Rn o En (espacio de Hilbert de dimensión finita), el ángulo entre
dos vectores cualesquiera x e y es  T 
x y
 D arc cos ;
kxkkyk
donde
xT y
D ; 1    1:
kxkkyk
Si los vectores son ortogonales: x T y D 0;  D =2;  D 0.
Vectores alineados: x T y D kxkkyk;  D 0;  D 1
Vectores opuestos: x T y D kxkkyk;  D ;  D 1.
Si forman un ángulo agudo: x T y > 0;  < =2;  > 0.
Ángulo obtuso: x T y < 0;  > =2;  < 0.
1.6 Operaciones de cálculo numérico con vectores y matrices j 29

1.6.3.2 Normas matriciales


Se define sobre Rmn como una aplicación k  k W Rmn ! R que cumple estos cuatro requisitos:
1) kAk D 0 H) A D 0
2) kAk D jj  kAk
3) kA C Bk  kAk C kBk
4) kABk  kAk  kBk
Existen normas sobre el espacio Rmn que no son normas matriciales pues no cumplen la propiedad 4. Así, si se define
kAk D mKax jaij j ;
1i;j n
h i  
se satisfacen el 1, 2 y 3. Sin embargo, tomando A D B D 11
11
, es fácil ver que kABk D 22 22 D 2 > kAkkBk D
1, por lo que no se cumple el 4.
Definición 1.5 Una norma matricial k  k sobre Rmn se dice consistente con una norma vectorial k  k0 sobre Rn
cuando para cada matriz A y cada vector x se cumple que
kAxk0  kAk  kxk0 :

Se demuestra que para toda norma matricial es posible construir una norma vectorial consistente. Recíprocamente, a
toda norma vectorial sobre Rn se le puede asociar una norma matricial consistente. Una norma matricial es una norma
vectorial compatible con el producto.
Una norma matricial consistente con una cierta norma vectorial k  k se construye mediante la definición
kAxk
kAk D sup :
0¤x2Rn
kxk

Esta norma matricial se dice inducida por la norma vectorial.


La norma matricial inducida por la norma euclídea de Rn es la norma espectral, norma euclídea o norma 2:
 1=2 q
x T A T Ax
kAk2 D sup D max .A T A/ D max .A/
0¤x2Rn xT x

donde  designa un valor propio de A y  un valor singular.


Las normas matriciales inducidas más generales son

X
m
kAk1 D mKax jaij j (columnas) y
1j n
i D1

X
n
kAk1 D mKax jaij j (filas) :
1im
j D1

Si k  k es la norma inducida por una cierta norma vectorial y k  k0 es una norma matricial cualquiera consistente con
esa norma vectorial, se cumple, para toda matriz A, que kAk  kAk0 .
Un ejemplo importante de norma matricial es la norma de Frobenius, por Ferdinand Georg Frobenius, Alemania
1849-1917.

Frobenius
30 j Capítulo 1. Fundamentos de la ingeniería matemática y sus algoritmos

Se define como X 
kAk2F D 2
aij D traza A H A ;
1i;j n
Pn
donde la traza de una matriz A de orden n es iD1 ai i .
La norma de Frobenius cumple que kABkF  kAkF  kBkF .
La norma espectral y la norma de Frobenius cumplen que kAk2  kAkF .
Ejemplo 1.4 El efecto que produce aplicar la transformación lineal basada en la matriz
 
12
AD
02
al círculo unidad, con las normas k  k1 , k  k2 y k  k1 en R2 , es el de la figura 1.7.

[2, 2]T

[0, 1]T
A1 = 4
[1, 0]T
norma
norma11
[1, 0]T

A2 ≈ 2,9208
norma
norma22

A∞ = 3
norma
norma1

– La
Figura 1.7: aplicación
Efecto transforma
de una aplicación el vector
lineal sobre la bola unidad en sícon
Œ1; 0Tunidad)
e 1 D (círculo mismo y normas
diferentes
e 2 D Œ0; 1 en Œ2;
T
 
2 .
T
    39/63

La aplicación transforma el vector e1 D 10 en sí mismo;


 0  e2 D  1 en 2 . Tomando
0 2
  la norma 1, el vector unitario
que más se amplifica al aplicarle la transformación es 1 (o 1 ), que pasa a ser 22 . Su factor de amplificación, en
0

términos de la norma 1, es 4. a b c 1 2 3

Tomando la norma 2, el vector unitario que más se amplifica es el que se representa en la figura con una recta discon-
d e f g 9 4 6 5

tinua. El factor de amplificación es 2;9208.


h i j 10 8 7

Para la norma
  1, igualmente, el vector unitario
  que más se amplifica es el que se representa también con la recta
discontinua: 11 , que pasa a transformarse en 32 . El factor de amplificación correspondiente es en este caso 3 ya que
 
1
 1  1 D 1
3 D 3:
2 1

Referencias, fuentes y lecturas complementarias


Casi todo lo expuesto en este capítulo es material bastante estándar en libros, papers y apuntes de análisis numérico o
métodos numéricos. Hay muchas referencias de teoría de errores en entornos numéricos finitos donde se puede encontrar
más ampliado lo expuesto aquí. Lo presentado se puede seguir perfectamente en Sauer [2012], Burden y Faires [2015],
Higham [2002], Golub y Van Loan [2013], Eldén et al. [2004] y en los libros del autor. La mejor referencia para el
tratamiento de errores y sus implicaciones prácticas es, a mi entender, Higham [2002]. Todos los programas de ordenador
y las sesiones de M ATLAB han sido elaborados por el autor y se pueden descargar desde su sitio Web.
Capítulo 2

Resolución de ecuaciones no lineales de una


variable

Contenido
2.1 Formulación del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2 Indagación geométrica. El método de la Bisección . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3 Error hacia delante y hacia atrás de los algoritmos numéricos . . . . . . . . . . . . . . . . . . . . 34
2.4 La iteración de punto fijo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5 Velocidad de convergencia de una sucesión y proceso iterativo . . . . . . . . . . . . . . . . . . . . 38
2.6 Método de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.7 Métodos iterativos sin derivadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.8 Raíces de un polinomio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

2.1 Formulación del problema

E N términos matemáticos,

dada f W R ! R; hallar un xN tal que f .x/


N D 0.

La función f se supone continua y derivable en algún conjunto abierto de R.


Los algoritmos que estudiamos son procedimientos iterativos en los que se avanza progresivamente hacía una solución.

2.2 Indagación geométrica. El método de la Bisección


El resultado en el que se basa este enfoque del problema y el método correspondiente para resolverlo es este teorema:
Teorema 2.1 Valor intermedio. Si f W R ! R es una función continua en Œa b y f .a/  x  f .b/ o f .b/  x  f .a/,
existe un punto c, a  c  b, en el cual f .c/ D x.
La idea esencial que sigue el método de la bisección y la figura que lo soporta son las de la figura 2.1. La enunciación
32 j Capítulo 2. Resolución de ecuaciones no lineales de una variable

Si la función f W R ! R es continua en un intervalo Œa b y en sus extremos


cambia de signo, lo que indica que f .a/f .b/ < 0, existirá un c —una raíz—,
tal que a < c < b, en el que f .c/ D 0. Reduciendo convenientemente el
intervalo de confinamiento Œa b se llegará a acotar el valor de c tanto como se
desee.

Figura 2.1

del procedimiento es atribuida a Bernard Bolzano, Praga, Bohemia (hoy República Checa), 1781-1848.

Bolzano

La mecánica numérica que sigue el algoritmo correspondiente es la que sigue:

I. Se comienza con unos u D f .a/ y v D f .b/, tales que uv < 0. Se determina c D 21 .a C b/ y se calcula
w D f .c/.
Si f .c/ D 0 se ha llegado a la solución;
si no, se cumplirá que wu < 0 ó wv < 0.
II. Si wu < 0, la solución estará en Œa c; si wv < 0, en Œc b.
III. Se estudia el nuevo intervalo donde esté la raíz, reduciéndolo secuencialmente en dos mitades hasta que se
estreche lo que se desee el intervalo de confinamiento que contenga la solución.

Los dos casos que se pueden presentar en la primera iteración del método son los que esquematiza la figura 2.2.

f (a) f (a)
f (x )
f (c)
f (x )

[ ] ] [ [ ]
a c b a c b
f (c) f (b) f (b)

Figura 2.2: Alternativas en la aplicación del método de la bisección según donde esté la raíz

Si el intervalo con que se empieza el proceso iterativo, Œa0 b0 , contiene una solución r, usando como estimación de
ésta c0 D .a0 C b0 /=2, se tendrá que
b0 a0
e0 D jr c0 j  :
2
2.3 Error hacia delante y hacia atrás de los algoritmos numéricos j 33

En cualquier iteración, razonando de forma similar,

bi ai
ei D jr ci j  ; i D 0; 1; 2; : : :
2

Teorema 2.2 Al aplicar el método de la bisección a una función f W R ! R, continua en un intervalo Œa b en el que
f .a/f .b/ < 0, después de n iteraciones, en las que se habrán evaluado la función n C 2 veces, se habrá obtenido un
valor de la solución cn tal que su error
b a
jr cn j  nC1 ;
2
donde r es el valor real de la solución.

Definición 2.1 Una solución es correcta en p posiciones decimales si el error es menor que 0;5  10 p
.

Ejemplo 2.1 La codificación del método de la bisección en esta function de M ATLAB que sigue sirve para calcular
x sen.x/ 1 D 0 en 1  x  2 (radianes).

function sol=Bisec_0(fun,a,b,tol)
% Método de la Bisección para resolver f(x)=0
if nargin<4, tol=sqrt(eps); end
fa=fun(a); fb=fun(b);
if sign(fa)*sign(fb)>=0, error(’ El intervalo (a,b) no contiene la solución\n’), end
while abs(b-a)/2 > tol
c=(a+b)/2;
fc = fun(c);
if fc==0, break, end
if sign(fc)*sign(fa) < 0
b=c; fb=fc;
else
a=c; fa=fc; % No es necesario hacer fa=fc;
end
fprintf(’ %17.15f %17.15f\n’,a,b);
end
sol = (a+b)/2;
end

Los valores de los extremos del intervalo Œa b que se obtienen al hacer en M ATLAB

>> f=@(x) x*sin(x)-1;


>> Bisec_0(f,1,2}

son los de la tabla del cuadro 2.1.


k a b k a b
1 1,0000000000000 1,5000000000000 13 1,1141357421875 1,1142578125000
2 1,0000000000000 1,2500000000000 14 1,1141357421875 1,1141967773437
3 1,0000000000000 1,1250000000000 15 1,1141357421875 1,1141662597656
4 1,0625000000000 1,1250000000000 16 1,1141510009765 1,1141662597656
5 1,0937500000000 1,1250000000000 17 1,1141510009765 1,1141586303710
6 1,1093750000000 1,1250000000000 18 1,1141548156738 1,1141586303710
7 1,1093750000000 1,1171875000000 19 1,1141567230224 1,1141586303710
8 1,1132812500000 1,1171875000000 20 1,1141567230224 1,1141576766967
9 1,1132812500000 1,1152343750000 21 1.1141567230224 1.1141571998596
10 1,1132812500000 1,1142578125000 22 1.1141569614410 1.1141571998596
11 1,1137695312500 1,1142578125000 23 1.1141570806503 1.1141571998596
12 1,1140136718750 1,1142578125000 24 1.1141571402549 1.1141571998596
25 1.1141571402549 1.1141571700572

Cuadro 2.1: Proceso iterativo para resolver con Bisec_0() el problema x sen.x/ 1D0

En la figura 2.3 se representa geométricamente cómo procede el método de la bisección para llegar a la solución del
problema de este ejemplo.
34 j Capítulo 2. Resolución de ecuaciones no lineales de una variable

Intervalo inicial

Figura 2.3: El método de la bisección aplicado a x sen.x/ 1D0

2.3 Error hacia delante y hacia atrás de los algoritmos numéricos


El proceso que se lleva a cabo para obtener la solución de un problema cualquiera mediante un algoritmo se esquematiza
en un diagrama de bloques así:

Datos que Proceso de


definen el ! solución o ! Solución
problema algoritmo

El problema es la entrada, o el dato, que se proporciona a esa función de transferencia que es el algoritmo. La
solución, la salida.
En lo que estudiamos en este capítulo, el problema es una ecuación de una variable; el algoritmo, o función de
transferencia, cualquiera de los que veremos.
Definición 2.2 Si f .x/ es una función y r una raíz de la misma, f .r/ D 0. Supongamos que xa es una aproximación
a r obtenida por un algoritmo. El error hacia atrás del algoritmo con la aproximación xa es jf .xa /j y el error hacia
delante es jr xa j.
El error hacia atrás está en el lado izquierdo del esquema anterior, o a la entrada. Es la cantidad que tendría que cambiar
el problema (la función) para hacer que la ecuación se equilibre con la aproximación xa de la salida. Es jf .xa /j.
El error hacia delante está en el lado derecho, o a la salida (solución del problema). Es la cantidad que tendría que
cambiar la solución aproximada para que sea correcta, es decir, jr xa j.
Ejemplo 2.2 Estudiemos x 3 2x 2 C 43 x 8
27
D 0. Podemos comprobar que f .0/f .1/ D . 8=27/.1=27/ < 0.
Apliquemos el método de la bisección.

>> f1=@(x) x^3-2*x^2+x*4/3-8/27;


>> xc=Bisec_0(f1,0,1)

Con M ATLAB en una sesión interactiva se obtiene lo que lista el cuadro 2.2. La raíz auténtica es 0;6666666666666 : : :.
Aunque se aumente la precisión, el proceso es el mismo y sólo consigue 5 dígitos significativos de la misma, ¿por qué?
No es culpa del método de la bisección, sino de la incapacidad de la aritmética de precisión doble de la máquina para
calcular el valor de la función f con precisión suficiente cerca de la raíz. Cualquier método que se base en esta aritmética
de maquina está destinado al mismo “fracaso”.
2.4 La iteración de punto fijo j 35

>> f1=@(x) x^3-2*x^2+x*4/3-8/27; >> f1=@(x) x^3-2*x^2+x*4/3-8/27;


>> xc=Bisec_0(f1,0,1) >> xc=Bisec_0(f1,0,1,eps)
0.500000000000000 1.000000000000000 0.500000000000000 1.000000000000000
0.500000000000000 0.750000000000000 0.500000000000000 0.750000000000000
0.625000000000000 0.750000000000000 0.625000000000000 0.750000000000000
0.625000000000000 0.687500000000000 0.625000000000000 0.687500000000000
0.656250000000000 0.687500000000000 0.656250000000000 0.687500000000000
0.656250000000000 0.671875000000000 0.656250000000000 0.671875000000000
0.664062500000000 0.671875000000000 0.664062500000000 0.671875000000000
0.664062500000000 0.667968750000000 0.664062500000000 0.667968750000000
0.666015625000000 0.667968750000000 0.666015625000000 0.667968750000000
0.666015625000000 0.666992187500000 0.666015625000000 0.666992187500000
0.666503906250000 0.666992187500000 0.666503906250000 0.666992187500000
0.666503906250000 0.666748046875000 0.666503906250000 0.666748046875000
0.666625976562500 0.666748046875000 0.666625976562500 0.666748046875000
0.666625976562500 0.666687011718750 0.666625976562500 0.666687011718750
0.666656494140625 0.666687011718750 0.666656494140625 0.666687011718750
0.666656494140625 0.666671752929688 0.666656494140625 0.666671752929688
xc = xc =
0.666664123535156 0.666664123535156

Cuadro 2.2

La razón se esquematiza en la figura 2.4. Si la aritmética de la máquina muestra que la función es igual a cero en un
valor que no es exactamente una raíz, no hay manera de que el método o algoritmo pueda
1.3 Limits of recuperarse
Accuracy ni hacer mucho
| 45
más.

(a) de la zona próxima a la raíz de la ecuación x 3(b)2x 2 C 4 x


Figura 2.4: Zoom 8
D0
3 27

Figure 1.7 The shape of a function near a multiple root. (a) Plot of f (x) =
El error hacia atrás
x 3 − es
2x 2cercano
+ 4/3x a−8/27.
máq  (b)2;2  10 16 , mientras
Magnification quethe
of (a), near el error
root rhacia
= 2/3.delante es aproximadamente 10 5 .
There are
Como el error hacia
manyatrás no puede
floating point disminuirse por 10
numbers within debajo
–5 of de
2/3un error
that are relativo
roots aspor
far debajo del épsilon de la máquina,
as the computer
tampoco es posible disminuir el error hacia delante.
is concerned. We know from calculus that 2/3 is the only root.
Hay que destacar que este ejemplo es bastante especial pues la función tiene una raíz triple en r D 2=3,
 
this chapter; for now, wef .x/
justDneed 4 8 2 3
x 3 to2xfeed
2
C it the function
D x and a: starting guess. It has no
better luck: 3 27 3

>> fzero(’x.ˆ3-2*x.ˆ2+4*x/3-8/27’,1)
Definición 2.3 Si una función continua y derivable m veces tiene en r una raíz, f .r/ D 0, y 0 D f .r/ D f 0 .r/ D
f 00 .r/ D ans
   D=f .m 1/ .r/, pero f .m/ .r/ ¤ 0, se dice que f tiene una raíz de multiplicidad m en r. Se dice que f
tiene una raíz múltiple en r si la multiplicidad es mayor que uno. La raíz es simple si la multiplicidad es igual a uno.
0.66666250845989

2.4 Laclear
iteración de punto fijo
The reason that all methods fail to get more than five correct digits for this example is
from Figure 1.7. The only information any method has is the function, computed in
double
Es otra forma precision.
de atacar If the computer
el problema arithmetic
que queremos resolver.isObservemos
showing theelfunction to be
cuadro 2.3. Lazero at a nonroot,
sucesión de puntos de iterar
la función there
cosenoisparece
no wayquethe
converge
methoda un punto
can concreto,
recover. Anotherr. way to state the difficulty is to say that
an approximate solution can be as close as possible to a solution as far as the y-axis is
concerned, but not so close on the x-axis.
36 j Capítulo 2. Resolución de ecuaciones no lineales de una variable

>> cos(1) >> cos(ans) >> cos(ans)


ans = 0.540302305868140 ans = 0.750417761763761 ans = 0.738369204122323 >> cos(ans)
>> cos(ans) >> cos(ans) >> cos(ans) ans = 0.739130176529671
ans = 0.857553215846393 ans = 0.731404042422510 ans = 0.739567202212256 >> cos(ans)
>> cos(ans) >> cos(ans) >> cos(ans) ans = 0.739054790746917
ans = 0.654289790497779 ans = 0.744237354900557 ans = 0.738760319874211 >> cos(ans)
>> cos(ans) >> cos(ans) >> cos(ans) ans = 0.739105571926536
ans = 0.793480358742566 ans = 0.735604740436347 ans = 0.739303892396906 >> cos(ans)
>> cos(ans) >> cos(ans) >> cos(ans) ans = 0.739071365298945
ans = 0.701368773622757 ans = 0.741425086610109 ans = 0.738937756715344 >> cos(ans)
>> cos(ans) >> cos(ans) >> cos(ans) ans = 0.739094407379091
ans = 0.763959682900654 ans = 0.737506890513243 ans = 0.739184399771494 >> cos(ans)
>> cos(ans) >> cos(ans) >> cos(ans) ans = 0.739078885994992
ans = 0.722102425026708 ans = 0.740147335567876 ans = 0.739018262427412

Cuadro 2.3

Definición 2.4 Un número real r es un punto fijo de la función f .x/ si


f .r/ D r:

La iteración de punto fijo sirve para resolver problemas de punto fijo f .x/ D x. Se puede usar para resolver f .x/ D 0
si la función se puede expresar como g.x/ D x. Un algoritmo que siguiese esta idea y su codificación en M ATLAB
podrían ser como los que siguen.

function xc=fpi(g,x0,k)
 Esquema general de la Iteración de Punto Fijo % fpi: Calcula la solución de f(x)=x; it. punto fijo
Dados Un x WD x0 y una t ol. Hacer f ound WD f al se % Input: inline function g, partida x0, itera. k
while (not f ound ) and (k < kmax ) % Output: Solución x
Hacer xk WD f .xk 1 ) x(1)=x0;
for i=1:k
if (xk xk 1 < t ol), f ound WD true, end x(i+1)=g(x(i));
k WD k C 1 end
end xc=x(k+1);
end

Para el caso de f .x/ D cos.x/, haciendo hasta treinta iteraciones en una sesión de M ATLAB, daría:

>> f=@(x)cos(x);
>> xc = fpi(f,1,15)
xc =
0.738369204122323
>> xc = fpi(f,1,30)
xc =
0.739087042695332

Ejemplo 2.3 Resolvamos la ecuación x 3 C x 1 D 0. Expresémosla de varias formas con el formato g.x/ D x:

xD1 x3;

en este caso g.x/ D 1 x 3 . También p


3
xD 1 x;
p
siendo aquí g.x/ D 3 1 x. Si añadimos 2x a los lados de la ecuación, también,
3

3x 3 C x 1 D 2x 3

3x 2 C 1 x D 1 C 2x 3
1 C 2x 3
xD
1 C 3x 2

siendo g.x/ D .1 C 2x 3 /=.1 C 3x 2 /.


En esta figura 2.5 se pueden ver distintas geometrías de las y D g.x/ y, partiendo de un mismo punto x0 , los primeros
pasos de la iteración de punto fijo con ellas. La primera diverge, la segunda converge y la tercera también converge, pero
height g(xi ) across to the diagonal line y = x. This geometric illustration of a Fixed-Point
Iteration is called a cobweb diagram. 2.4 La iteración de punto fijo j 37

y y y

1 1 1

x x x
x2 x0 r x1 1 x0 r x1 1 x0 r 1
x2

Figura 2.5: Distintas formas de acercarse a la solución, o alejarse, en iteraciones de punto fijo
Figure 1.3 Geometric view of FPI. The fixed point is the intersection of g(x) and the
0
mucho más rápidamente. Veamos
diagonal line. Threepor qué. Aparentemente,
examples of g(x) are shown la pendiente
togetherdewith
la función,
the firstgfew cercaofdel punto fijo, tiene
.x/,steps
algo que ver. Volveremos sobre esto.
3
FPI. (a) g(x) = 1 – x (b) g(x) = (1 – x) 1 /3 3 2
(c) g(x) = (1 + 2x )/(1 + 3x )
Consideremos ahora la ecuación
x 3 sen.x/ D 0:
In Figure 1.3(a), the path starts at x0 = 0.5, and moves up to the function and horizontal
Al tratarse de una
to the pointfunción
(0.875,senoidal,
0.875)habrá
on thevarios puntoswhich
diagonal, para los
is cuales
(x1 , x1f)..x/ x1Calcularemos
D 0.
Next, el más próximo a
should be substituted
x D 1.
into g(x). This is done the same way it was done for x , by moving vertically to the function.
Si seguimos una estrategia de punto fijo, buscaremos una función0g W R ! R, un xN tal que xN D g.x/ N y aplicaremos
This yields
un procedimiento x2 ≈a0.3300,
iterativo partir deand after moving
la relación horizontally
de recurrencia xkC1 Dtog.x move the y-value to an x-value,
k /. ¿Qué formas de x D g.x/, y por tanto
relación we continue the
de recurrencia, se same way to
nosppueden get xpara
ocurrir 3 , x4utilizar?
, . . . . As we saw earlier, the result of FPI for this g(x)
La primera
is notpodría ser x D sen.x/:
successful—the 3
La relación
iterates eventually de recurrencia
tend toward correspondiente
alternating sería
between 0 and 1, neither
of which are fixed points. p
xkC1 D 3 sen.xk /:
Fixed-Point Iteration is more successful in Figure 1.3(b). Although the g(x) here looks
Si comenzamos
roughlyelsimilar
procesoto
iterativo
the g(x)desde 1 (radianes),
x0 D(a),
in part there is asesignificant
tendrá que difference,
en los distintos pasos,
which we will clarify
p
in the next section. You may want x1 toD speculate
3 on0;944
sen.x0 / D what the difference is. What makes FPI
spiral in toward the fixed point in (b), p and spiral out away from the fixed point in (a)?
x2 D 3 sen.0;944/ D 0;932
Figure 1.3(c) shows an example of very p fast convergence. Does this picture help with your
speculation? If you guessed that it x3has 3
sen.0;932/toDdo
D something 0;929
with the slope of g(x) near the fixed
point, you are correct. ::
:
La solución converge a xN D 0;92862.
1.2.3
También Linear
podemos D sen.x/
hacer xconvergence
x2
oflaFixed-Point
, por lo que Iteration
relación de recurrencia sería

The convergence properties of FPI canx be easily sen.x k/


explained by a careful look at the algorithm
kC1 D 2
:
in the simplest possible situation. Figure 1.4 shows x k Fixed-Point Iteration for two linear
Partiendofunctions
de x0 D 1,g1se(x) = − 32 los
obtienen x +puntos
5
and g (x) = − 1
x + 3
. In each case, the fixed point is x = 1,
 3 2 2  21  2
   
but |g1 (1)| = − 2 > 1 while |g2 (1)| = − 2 k < 1. Following the vertical and horizontal
k x
arrows that describe FPI, we see the reason 0 1;
for000 the difference. Because the slope of g1 at
1 0; 841
the fixed point is greater than one, the vertical 2
segments, the ones that represent the change
1; 053
from xn to xn + 1 , are increasing in length3as FPI 0; 783 proceeds. As a result, the iteration “spirals
out’’ from the fixed point x = 1, even if4 the1; 149 initial guess x0 was quite near. For g2 , the
situation is reversed: The slope of g2 is ::: less than ::
:
one, the vertical segments decrease in
length,
El proceso andVeamos
diverge. FPI “spirals in’’ toward
geométricamente quéthe solution.
ocurre en estos Thus,
dos |g (r)| makes
procesos a travésthe crucial
de la figura difference
2.6.
p
betweendedivergence
El itinerario and convergence.
la parte izquierda de la figura es el de xkC1 D 3 sen.xk /.
El que define
That’s the geometric view. In terms of equations, it helps to write g1 (x) and g2 (x) in
terms of x − r, where r = 1 is the fixedxkC1 point: sen.xk /
D
xk2
(x) =
genera lo que se denomina una tela de arañag1entre − 32 (xy D
la recta − x1)y +
la función
1 y D g.x/.

g1 (x) − 1 = − 32 (x − 1)
3
38 j Capítulo 2. Resolución de ecuaciones no lineales de una variable

Figura 2.6: Diferentes formas de converger con una iteración de punto fijo

Si se analiza el comportamiento de diversas relaciones de recurrencia se puede constatar una relación directa entre
el comportamiento del proceso iterativo y las pendientes de g en el entorno de x:
N

Si jg 0 .x/j
N D v < 1 y el punto de partida está cerca de x,
N el proceso converge linealmente a velocidad v. Si
jg 0 .x/j
N > 1, diverge.

p
En el caso de xkC1 D 3
sen.xk /,
2=3
.sen.x//
g 0 .x/ D cos.x/:
3
En xN  0;929, g 0 .0;929/  0;23.
Por el contrario, para xkC1 D sen.xk /=xk2 ,

cos.x/ sen.x/
g 0 .x/ D 2 :
x2 x3
En xN  0;929, g 0 .0;929/  1;23.
Teorema 2.3 Si f W R ! R es una función continua y derivable, f .r/ D r y S D jf 0 .r/j < 1, la iteración de punto
fijo, para estimaciones iniciales lo suficientemente próximas a r, converge linealmente hacia el punto r, con razón S .

Definición 2.5 Sea ei el error en el paso i de un método iterativo. Si


eiC1
lKım D S < 1;
i!1 ei
se dice que el método converge linealmente con razón S .

2.5 Velocidad de convergencia de una sucesión y proceso iterativo


Definición 2.6 Sea una sucesión fxi g1 
i D0 , xi 2 R, convergente a x . El orden de convergencia de fxi g es el máximo
de los números no negativos r que satisface
jxiC1 x  j
0  lKım < 1:
i!1 jxi x  jr
Si r D 1, la sucesión se dice que converge linealmente; si r D 2, se dice que lo hace cuadráticamente; si r D 3,
cúbicamente, etc. El valor del límite, ˇ, se conoce como razón, o constante de error asintótico.

Definición 2.7 Un método iterativo xiC1 D f .xi /; i D 1; 2; : : :, que parte de un punto x0 , se dice que tiene una
velocidad de convergencia de orden r cuando la sucesión fxi g1
iD0 converge con orden r hacia la solución x.
2.5 Velocidad de convergencia de una sucesión y proceso iterativo j 39

Si la convergencia es lineal y
jxi C1 x  j
lKım D ˇ D 0;
i !1 jxi xj
la convergencia es superlineal.
Ejemplo 2.4 Consideremos la sucesión escalar definida por
k
xk D c 2 ;

donde c cumple 0  c < 1. La sucesión converge a cero. Calculemos su orden de convergencia:


kC1
jxkC1 0j c2
lKım D lKım D 1:
k!1 jxk 0j2 k!1 c 2kC1

Es decir, converge cuadráticamente a 0.


La convergencia cuadrática quiere decir, grosso modo, que en las proximidades del límite o solución el número de
dígitos significativos que aporta cada paso del proceso al valor de la solución es el doble que el anterior.
En la columna 2 de la tabla del cuadro 2.4 se pueden ver los distintos puntos de la sucesión de este ejemplo para
c D 0;99.

k k
k c2 .c D 0; 99/ c2 .c D 2; 2/ 1=k k
0 0,9900000000000000 2,200000000000000 1,000000000000000
1 0,9801000000000000 1,483239697419133 0,250000000000000
2 0,9605960099999999 1,217883285630907 0,037037037037037
3 0,9227446944279201 1,103577494166543 0,003906250000000
4 0,8514577710948755 1,050512967157732 0,000320000000000
5 0,7249803359578534 1,024945348376065 0,000021433470507
6 0,5255964875255620 1,012395845692812 0,000001214265678
7 0,2762516676992083 1,006178833852518 0,000000059604644
8 0,0763149839065938 1,003084659364561 0,000000002581174
9 0,0058239767686636 1,001541142122759 0,100000000000000E-10
10 0,0000339187054019 1,000770274400054 0,350493899481392E-12
11 0,1150478576143195E-08 1,000385063063246 0,112156654784615E-13
12 0,1323600954164474E-17 1,000192513000995 0,330169095523011E-15
13 0,1751919485865107E-35 1,000096251868287 0,899927452978128E-17
14 0,3069221884953861E-71 1,000048124776146 0,228365826052116E-18
15 0,9420122979079730E-143 1,000024062098581 0,542101086242752E-20
16 0,8873871694098596E-286 1,000012030976918 0,120883864830239E-21

Cuadro 2.4: Convergencia de varias sucesiones

Ejemplo 2.5 Consideremos la sucesión convergente a 1 que define,


k
xk D c 2 ;

con c  0.
Analicemos su orden de convergencia:
.kC1/
jxkC1 1j c2 1
lKım D lKım
k!1 jxk
k
1j k!1 c 2 1
.kC1/
c2 1
D lKım .kC1/
 .kC1/

k!1 c2 1 c2 C1
1 1
D lKım .kC1/
D :
k!1 c2 C1 2
40 j Capítulo 2. Resolución de ecuaciones no lineales de una variable

Converge linealmente. Esta convergencia significa que cada iteración añade un número de dígitos constante a la
solución final: concretamente, log10 ˇ dígitos por iteración.
Ejemplo 2.6 Analicemos por último la sucesión que define

1
xk D :
kk
Converge a cero. En la columna 4 de la tabla se pueden ver los primeros puntos de esta sucesión.
Estudiemos su orden de convergencia:

1
jxkC1 j .k C 1/kC1 1
lKım D lKım D lKım   D 0:
k!1 jxk j k!1 1 k!1 1 kC1
kk k 1C
k

Es decir, converge superlinealmente a cero.


La convergencia superlineal significa que cada iteración añade un número creciente de dígitos a la solución
final; concretamente r dígitos más que la iteración precedente.
La siguiente tabla resume las diferencias numéricas más relevantes entre varias velocidades de convergencia.

k Error Convergencia
1 10 2 ; 10 3 ;10 4 ; 10 5 ; : : : Lineal, con ˇ D 10 1
2 10 2 ; 10 4 ;10 6 ; 10 8 ; : : : Lineal, con ˇ D 10 2
3 10 2 ; 10 3 ;10 5 ; 10 8 ; : : : Superlineal: entre lineal y cuadrática
4 10 2 ; 10 4 ;10 8 ; 10 16 ; : : : Cuadrática
5 10 2 ; 10 6 ;10 24 ; : : : Cúbica

La convergencia de una sucesión de vectores necesita de una función que los convierta en un número para poderla
medir. Lo usual es usar algún tipo de norma.

2.6 Método de Newton-Raphson


Teniendo presente todo lo apuntado hasta este momento para resolver el problema que hemos planteado:

Sería deseable disponer de una vía sistemática y fiable de construir un modelo x D g.x/ para hallar la
solución xN de la ecuación f .x/ D 0, comenzando desde cualquier x0 próximo a la solución y sin
preocuparnos de que jg 0 .x/j
N < 1.

Isaac Newton, Inglaterra, 1642-1727, la persona con una de las mentes más portentosas que ha dado la Humanidad,
fue el primero que ideó esa vía y la forma de llevarla a la práctica de manera sencilla.

Newton

Su idea consiste en reemplazar la función f .x/ en cada punto del proceso iterativo por el modelo de ella que define
su recta tangente en ese punto (linealizar la función en un punto).
2.6 Método de Newton-Raphson j 41

En x D x1 la ecuación de la recta tangente a f .x/ es


y D f .x1 / C f 0 .x1 /.x x1 /:
En x D x1 , y D f .x1 / por lo que la ordenada de esta ecuación es la misma que la de f .
La pendiente de f en x1 es la misma que la de y: f 0 .x1 /.
El siguiente punto del proceso iterativo lo determina la solución de y.x/ D 0, es decir, dónde esa recta tangente
corta al eje x:
0 D f .x1 / C f 0 .x1 /.x x1 /:
La solución de esta última ecuación es
f .x1 /
x D x1 :
f 0 .x1 /
En la figura 2.7 se esquematiza este paso del proceso iterativo de Newton.

x2 x1 x
f (x )

Figura 2.7: Esquema básico del proceso iterativo de Newton-Raphson

La relación general de recurrencia del método de Newton, o Newton-Raphson (por Joseph Raphson, Inglaterra, 1648-
1715),

Raphson

para encontrar una solución de la ecuación f .x/ D 0 es

f .xk /
xkC1 D xk .
f 0 .xk /

Ejemplo 2.7 Si aplicamos el método de Newton-Raphson al problema x 3 sen.x/ D 0. La relación de recurrencia


sería
xk3 sen.xk /
xkC1 D xk :
3xk2 cos.xk /
En los términos en que nos expresábamos al comienzo de este apartado (recordemos la relación x D g.x/), el método
de Newton hace
x 3 sen.x/
gN .x/ D x :
3x 2 cos.x/

En el cuadro 2.5 se lista un código de M ATLAB para resolver por el método de Newton un problema, y concretamente
x 3 sen.x/ D 0. Si se parte de x0 D 1;4, con la instrucción >> Newton(@Newt_1,1.4) los puntos que se obtienen
con ese código son los de la tabla a la izquierda de la figura 2.9, en la que también se ven los pasos del método hacia la
solución.
42 j Capítulo 2. Resolución de ecuaciones no lineales de una variable

function raiz=Newton(fun,x,tol)
%Newton para una variable
x0=0; if nargin<3, tol=eps^0.5; end
while abs(x-x0)>tol function [f df]=Newt_1(x)
x0=x; f = x^3-sin(x);
[f df] = fun(x0); if nargout<2, return, end
x=x0-f/df; df = 3*x*x-cos(x);
fprintf(’ %18.15f\n’, x); end
end
raiz=x;
end

Cuadro 2.5

Método de Newton
2.5

2
k xk
1 1.092024491974 1.5
2 0.958975041400
f(x)

3 0.929997813651
1
4 0.928629313033
5 0.928626308746 Solución
0.5
6 0.928626308732

0
32 1 0

0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5
x

Figura 2.8

Figura 2.9: El método de Newton aplicado a x 3 sen.x/ D 0

2.6.1 Convergencia del método de Newton


Teorema 2.4 Sea la función f W R ! R, continúa y derivable al menos dos veces. Dado un punto r en el que
f .r/ D 0, si f 0 .r/ ¤ 0, el método de Newton es local y cuadráticamente convergente a r. El error ei en el paso i de
su proceso, ei D jxi rj, satisface que
ei C1
lKım D M;
i!1 e 2
i
donde
f 00 .r/
M D :
2f 0 .r/

El teorema garantiza la convergencia del método de Newton sólo si se inicia desde un punto x0 aceptable.
El método puede no funcionar si jx0 xj N es grande. Por ejemplo, considérese el problema clásico de hallar la solución
de arctan.x/ D 0 que ilustra la figura 2.10.
Partiendo de cualquier punto del intervalo [1,39 1,40] el método cicla obteniéndose x1 D x0 , x2 D x0 , x3 D x0 ,
: : : Si x0 < 1;39, el procedimiento converge; si x0 > 1;40, diverge.
El teorema anterior también impone que f 0 .r/ debe ser distinta de cero para que el método de Newton converja
cuadráticamente a r.
Teorema 2.5 Si una función f , continua y derivable m C 1 veces en Œa b, tiene en r una raíz de multiplicidad m, el
método de Newton converge linealmente a r y el error en el paso i , ei D jxi rj satisface
ei C1 m 1
lKım D :
i!1 ei m
2.6 Método de Newton-Raphson j 43

f (x) = arctan(x)

−x 0 x0

Figura 2.10: Proceso iterativo de Newton para arctan.x/ D 0

Veamos el efecto de una raíz múltiple en la convergencia del método de Newton-Raphson. Apliquémoslo simultánea-
mente a f1 .x/ D x 2 1 D 0 y f2 .x/ D x 2 2x C 1 D 0. f2 tiene una raíz múltiple en x D 1. Partiendo de x0 D 2 se
obtienen los resultados de la tabla que sigue.
f1 .x/ D x 2 1D0 f2 .x/ D x 2 2x C 1 D 0
2 x0 2
1,25 x1 1,5
1,025 x2 1,25
1,0003048780488 x3 1,125
1,0000000464611 x4 1,0625
1,0 x5 1,03125

El error en la convergencia de f2 es
e5 1;03125 1 m 1
D D 0;5 D ;
e4 1;0625 1 m
lo que verifica que la multiplicidad es m D 2.
Teorema 2.6 Si una función continua y derivable m C 1 veces en Œa; b tiene en r una raíz de multiplicidad m > 1, el
método de Newton modificado mediante esta fórmula de recurrencia
mf .xi /
xi C1 D xi
f 0 .xi /
converge cuadráticamente a r.

Ejemplo 2.8 Estudiemos la solución de f .x/ D sen.x/Cx 2 cos.x/ x 2 x D 0. Partiremos de x0 D 1, modificaremos


el código de antes para admitir raíces múltiples e incorporaremos la fórmula de recurrencia directamente en el código.
Antes, verificamos que
f .x/ D sen.x/ C x 2 cos.x/ x 2 x
f 0 .x/ D cos.x/ C 2x cos.x/ x 2 sen.x/ 2x 1
f 00 .x/ D sen.x/ C 2 cos.x/ 4x sen.x/ x 2 cos.x/ 2
f 000 .x/ D cos.x/ 6 sen.x/ 6x cos.x/ C x 2 sen.x/
y comprobamos cada derivada en x D 0. Todas son cero salvo f 000 .0/ D 1, por lo que x D 0 es una raíz triple. Toda
la información la incorporamos en el código de M ATLAB del cuadro 2.6. A su lado esta la sesión interactiva en la que se
ve la convergencia del método. A pesar de la multiplicidad 3 de la raíz se consigue casi la convergencia cuadrática.

2.6.2 Variantes del método de Newton-Raphson


La primera consiste en incorporar algún mecanismo de salvaguarda que permita avanzar en todos los pasos del proceso
iterativo hacia la solución del problema. Es decir, disminuir siempre el valor de f .x/ de un punto a otro del proceso.
Recordemos que la resolución de la ecuación de Newton no sólo define un nuevo punto del proceso iterativo, xkC1 ,
sino una dirección, f 0 .xk /, a lo largo de la cual se da un paso igual a xkC1 xk . Puede que ese paso sea bueno y la
función f .x/ en el nuevo punto adquiera un valor menor que el que tenía en xk , pero también que sea mayor y el proceso
diverja, siendo en cualquier caso buena la dirección calculada.
44 j Capítulo 2. Resolución de ecuaciones no lineales de una variable

function x0=Newton_multiple_modificado_1
>> x=Newton_multiple_modificado_1
%Newton para una variable raíz triple
0.164770719582242
x0=0; x=1; tol=0.000001;
0.016207337711438
while abs(x-x0)>tol
0.000246541437739
x0=x;
0.000000060720923
x=x0-(sin(x0)+x0^2*cos(x0)-x0^2-x0)*3/(cos(x0)+2*x0*cos(x0)-x0^2*sin(x0)-2*x0-1);
-0.000000002389877
fprintf(’ %18.15f\n’, x);
x =
end
6.0721e-08
end

Cuadro 2.6

Intuitivamente, un mecanismo tan sencillo como este puede hacer el trabajo:

Si el paso completo xkC1 xk produce un aumento, disminuirlo hasta que jf .xkC1 /j < jf .xk /j.

Lo plasma el algoritmo que sigue.


f .xk /
xkC1 D xk
f 0 .xk /
while .jf .xkC1 /j  jf .xk /j/ do
xkC1 C xk
xkC1
2
end

Lo esquematiza la figura 2.11. En ella se ilustra el caso de cómo el mecanismo apuntado salva las dificultades que

x k +1

xk (x k +1 + x k )/2

x k +1

Figura 2.11: El método de Newton con mecanismo de salvaguarda

0
surgirían de aplicar el procedimiento de Newton sin él. El punto xkC1 , que sería el que determinaría el paso de Newton,
0
no valdría. Tampoco .xkC1 C xk /=2. Sí, al final,
0
xkC1 Cxk
xk C 2
xkC1 D :
2

2.6.2.1 Método de Newton por diferencias finitas


Hasta ahora hemos supuesto que se conoce la expresión de la derivada de la función f .x/, y por tanto, es fácilmente
evaluable en un determinado punto. No siempre es así.
Bien porque su determinación analítica es muy complicada —la función f .x/ surge de un procedimiento experi-
mental, por ejemplo— o
Porque el usuario del método no desea obtenerla.
El método de Newton por diferencias finitas resulta de sustituir en el original la derivada de la función f .x/ por su
definición,
f .xk C h/ f .xk /
f 0 .xk / D lKım ;
h!0 h
2.6 Método de Newton-Raphson j 45

utilizándola en la fórmula de recurrencia.


Si se hace
ak D .f .xk C h/ f .xk //= h;
la relación de recurrencia del método de Newton queda

f .xk /
xkC1 D xk :
ak

Teorema 2.7 Sea la función f W D ! R con dominio de definición en un intervalo abierto D y derivada continua en
él. Supóngase que, para todo x 2 D, jf 0 .x/j   para algún  > 0. Si f .x/ D 0 tiene solución xN 2 D, existen unas
constantes positivas  y 0 tales que si fhk g es una sucesión de números reales tales que 0 < jhk j  0 y si jx0 xj
N < ,
la sucesión fxk g que define
f .xk / f .xk C hk / f .xk /
xkC1 D xk ; con ak D ; k D 0; 1; : : :
ak hk
converge linealmente a x. N Si lKımk!1 hk D 0, la convergencia es superlineal. Si existe alguna constante c1 tal que
N o, de forma equivalente, una constante c2 tal que jhk j  c2 jf .xk /j, la convergencia es cuadrática.
jhk j  c1 jxk xj,
Si existe alguna constante c3 tal que jhk j  c3 jxk xk 1 j, la convergencia es al menos cuadrática cada dos pasos.
La elección de h es crítica para el buen funcionamiento del procedimiento: no debe ser muy pequeño, de tal manera
que
f l.xk C h/ ¤ f l.xk /
ni que, dado que f es continua y su derivada también, al evaluar la función en dos puntos muy próximos, ocurra que

f l.f .xk C h// D f l.f .xk //:

Una regla habitual es la de elegir p


jhj D  mKaxftip x; jxk jg;
donde tip x indica la magnitud típica de x y  es la precisión de la máquina en la que se utiliza el correspondiente código.
Para un problema bien escalado bastaría hacer
p
jhj D maq
K

Cuando existen problemas de precisión se puede recurrir a la aproximación de f 0 .xk / dada por
f .xk C h/ f .xk h/ p
ak D con h D 3 maq:
K :
2h
¡OJO! El número de veces que se evalúa la función se duplica.
Ejemplo 2.9 Calculemos la solución de f .x/ D x 2 1, partiendo de x D 2, mediante Newton y Newton por diferencias
finitas. Los resultados obtenidos con uno y otro código del cuadro 2.7 son los de la tabla que se ve en el mismo cuadro.
Como se puede observar, son prácticamente los mismos.
En la práctica, si se acondicionan los parámetros convenientemente, el método de Newton y el de Newton por diferen-
cias finitas funcionan casi igual.

2.6.2.2 Método de Newton-Raphson relajado


Esta variante utiliza como dirección de búsqueda la misma en cada iteración, f 0 .x0 /. El esquema de cómo procede se
ve en la figura 2.12. La derivada de la función se puede evaluar cada n iteraciones.
Si la pendiente de f en x0 difiere significativamente de la de f en la solución, la convergencia puede ser muy lenta o
no existir.
46 j Capítulo 2. Resolución de ecuaciones no lineales de una variable

% Newton de x^2-1=0
% Newton dif. finitas de x^2-1=0 Newton Newton Dif. Fin.
x=2.0; x0=0.0;
x=2.0; x0=0.0; h=sqrt(eps); 1,250000000000000 1,250000000000000
fx=@(x)x^2-1; x0
fx=@(x)x^2-1;
derfx=@(x)2*x; 1,025000000000000 x1 1,025000001341105
while abs(x-x0)>eps
while abs(x-x0)>eps 1,000304878048780 x2 1,000304878371890
x0=x;
x0=x; 1,000000046461147 x3 1,000000046463329
x=x0-fx(x0)/((fx(x0+h)-fx(x0))/h);
x=x0-fx(x0)/derfx(x0); 1,000000000000001 1,000000000000001
fprintf(’ %18.15f\n’,x) x4
fprintf(’ %18.15f\n’,x) 1,000000000000000 1,000000000000000
end x5
end

Cuadro 2.7

x3 x2 x1 x0 x
f (x )

Figura 2.12: El método de Newton relajado

Si utilizamos esta variante para resolver x 3 sen.x/ D 0, partiendo de x0 D 1;1, los puntos del proceso que se
obtienen son los de la tabla del cuadro 2.8, en el cual también se incluye el código utilizado.

k xk
0 1,100000000000000 x1=1.1; tol=sqrt(eps);
1 1,000000000000000 dx = 3*x1*x1-cos(x1); x2=1;
2 0,950091669305211 fx = @(x)x^3-sin(x); % función
.. while abs(x2-x1)>tol
fprintf(’ %18.15f\n’, x1);
12 0,928627359757290 x1=x2;
13 0,928626701921047 x2=x1-fx(x1)/dx;
14 0,928626455824360 end
15 0,928626363759310

Cuadro 2.8: Convergencia de x 3 sen.x/ D 0 con Newton-Raphson relajado

La convergencia es bastante peor que la del método de Newton.


Una variante interesante próxima a esta es la conocida como composite Newton, que evalúa la derivada cada dos
iteraciones. El código correspondiente y la resolución con él de x 3 sen.x/ D 0, partiendo de x0 D 1;4, son los del
cuadro 2.9.

2.6.2.3 Método de Halley


Su idea consiste en reemplazar la función f .x/ en cada punto del proceso iterativo por el modelo que define de ella su
aproximación por desarrollo en serie de Taylor hasta segunda derivada en ese punto. En x D x1 esa aproximación de
f .x/ es
.x x1 /2
y D f .x1 / C f 0 .x1 /.x x1 / C f 00 .x1 / :
2
El siguiente punto del proceso iterativo sale de resolver y.x/ D 0, es decir, donde esa función corta al eje x:

.x x1 /2
0 D f .x1 / C f 0 .x1 /.x x1 / C f 00 .x1 / :
2
2.7 Métodos iterativos sin derivadas j 47

function raiz=Newton_composite(fun,x,tol)
% Newton composite: misma der. dos iteraciones
in=1; x1=0; x2=2;
if nargin<3, tol=eps^0.5; end >> raiz=Newton_composite(@Newt_1,1.4)
if nargin==2, x1=0; x2=x; end 1.092024491973809
while abs(x2-x1)>tol 1.019398480362132
x1=x2; 0.939380250610315
if in 0.930994424066045
[f df] = fun(x1); in = 0; 0.928635243248317
else 0.928626375994235
[f] = fun(x1); in = 1; 0.928626308731742
end 0.928626308731734
x2=x1-f/df; raiz =
fprintf(’%18.15f\n’, x2); 0.928626308731734
end
raiz=x2;
end

Cuadro 2.9

La solución de esta última ecuación es


p
f 0 .x1 / ˙ Œf 0 .x1 /2 2f .x1 /f 00 .x1 /
x D x1 C :
f 00 .x1 /
Esta forma de actuar fue formulada por el astrónomo, matemático y físico inglés Edmund Halley, Inglaterra, 1656-1742,
conocido por el cálculo de la trayectoria del cometa Halley.

Halley

Con una convergencia cúbica, su relación general de recurrencia para encontrar una solución de la ecuación f .x/ D 0
es esta
2f .xk /f 0 .xk /
xkC1 D xk
2Œf 0 .xk /2 f .xk /f 00 .xk /

Una variante muy similar de este algoritmo es debida a Pafnuty Lvovich Chebyshev, Rusia, 1821-1894. Su fórmula de
recurrencia es
 
f .xk / f .xk /f 00 .xk /
xkC1 D xk 1C
f 0 .xk / 2Œf 0 .xk /2

La codificación en M ATLAB del algoritmo de Halley para resolver x C ln.x/ D 0 se lista en el cuadro 2.10.

2.7 Métodos iterativos sin derivadas


2.7.1 Método de la secante
Utiliza como dirección de búsqueda de la solución, en vez de la tangente en un punto de la función del método de
Newton-Raphson, la que determina una recta secante a la función en dos puntos sucesivos del proceso iterativo. La
figura 2.13 ilustra esta aproximación.
Si en una iteración k del proceso la ecuación de Newton es
f .xk /
xkC1 D xk ;
f 0 .xk /
48 j Capítulo 2. Resolución de ecuaciones no lineales de una variable

function HalleysMethod_log1
% Método de Halley para resolver f(x) = x+ln(x) = 0
i = 1; p0 = 1; % condiciones iniciales
N = 100; % máximo número de iteraciones
error = 0.000000001; % precisión de la solución
syms ’x’
f(x) = x + log(x); % La función que se estudia
dx = diff(f); ddx = diff(dx); % primera y segunda derivada de f(x)
while i <= N
p = p0 - (f(p0)/dx(p0))*(1 - (f(p0)*ddx(p0)/dx(p0)^2))^(-1); % relación de recurrencia
if (abs(p - p0)/abs(p)) < error % para cuando la diferencia entre dos puntos del proceso menor que tolerancia
fprintf(’Solución: %15.13f; %3.0f iteraciones.\n’, double(p),i)
return
end
i = i + 1; p0 = p; % adapta p0
end
fprintf(’No converge en %d iteraciones; precision buscada %d \n’, N, error)
end

Cuadro 2.10: Algoritmo de Halley para M ATLAB

x k +1 xk x k −1 x
f (x )

Figura 2.13: El método de la secante

la idea es reemplazar f 0 .xk / por


f .xk / f .xk 1/
:
xk xk 1
La relación de recurrencia del proceso iterativo de la secante queda

xk xk 1
xkC1 D xk f .xk /.
f .xk / f .xk 1/

p
El método de la secante converge superlinealmente a la solución con orden ˛ D .1 C 5/=2 D 1; 618 (la razón
áurea). De hecho, si r es la solución,
ˇ 00 ˇ
ˇ f .r/ ˇ˛ 1 ˛
ei C1  ˇ 0 ˇˇ
ˇ ei :
2f .r/

Resolvamos con este método y M ATLAB la ecuación x 3 sen.x/ D 0. Codificamos para ello lo necesario y resolvemos
mediante una sesión interactiva. El resultado es el cuadro 2.11.

2.7.2 Métodos de la falsa posición y de Illinois


Conocido como Regula Falsi. Al igual que el de la secante, utiliza como aproximación de la función en un punto —o
dirección de búsqueda— una recta secante a la función en dos puntos sucesivos del proceso iterativo en los que la función
toma valores de signo opuesto. La idea se esquematiza en la figura 2.14a. La velocidad de convergencia es superlineal
de orden 1,618: la razón áurea de nuevo.
2.7 Métodos iterativos sin derivadas j 49

function raiz=Newton_sec(fun,x,tol)
>> Newton_sec(@Newt_sec_1,1.4)
%Newton para una variable
1.065107226548895
x1=x; x2=x-0.1; if nargin<3, tol=eps^0.5; end
function [f df]=Newt_sec_1(x0,x1) 0.978070204938512
while abs(x2-x1)>tol
fx = @(x)x^3-sin(x); 0.937387385189276
x0=x1; x1=x2;
f = fx(x1); 0.929273092828631
[f df] = fun(x0,x1);
if nargout<2, return, end 0.928635284046901
x2=x1-f/df;
df = (fx(x1)-fx(x0))/(x1-x0); 0.928626318027714
fprintf(’ %18.15f\n’, x2);
end 0.928626308731868
end
ans =
raiz=x2;
0.9286
end

Cuadro 2.11

En determinadas circunstancias desfavorables, tanto el método de la secante como el de la falsa posición pueden
presentar problemas de convergencia. Es el caso de la figura 2.14b, donde se representa un ejemplo de convergencia
“lenta”.

x2
x2 f (x )
x3
x4 f (x )

x
x1 x1 x3

(a) El método de la falsa posición (b) Convergencia lenta de los métodos de la secante y falsa posi-
ción
Figura 2.14

Para remediar estas deficiencias de ambos métodos, en los años 50 del siglo XX se desarrolló una variante de regula
falsi denominada de Illinois. La idea es usar como puntos para trazar la recta secante, además del calculado .xiC1 ; fiC1 /:
1. Si fi C1 fi < 0, el punto .xi 1 ; fi 1 / se reemplaza por .xi ; fi /.
2. Si fi C1 fi > 0, el punto .xi 1 ; fi 1 / se reemplaza por .xi 1 ; fi 1 =2/.
Donde corte esta secante al eje de las x será el nuevo punto del proceso iterativo. El algoritmo de Illinois programado en
M ATLAB, así como una sesión de trabajo para resolver cos.x/ x 3 D 0, se listan en el cuadro 2.12.

function [x,k]=illinois(f,a,b,tol) >> fx1 = @(x)cos(x)-x^3;


% Illinois Algorithm >> [x,k]=illinois(fx1,0,1,1.e-4)
fa=f(a); fb=f(b); k=1; 0.685073357326045
while abs(b-a)>tol 0.841355125665652
step=fa*(a-b)/(fb-fa); 0.878745153000139
x=a+step; 0.865161061169064
fx=f(x); 0.865470035939167
if sign(fx)~=sign(fb) 0.865477925839117
a=b; fa=fb; x =
else fa=fa/2; end 0.865477925839117
b=x; fb=fx; k=k+1; fprintf(’ %18.15f\n’,x); k =
end 7
end >>

Cuadro 2.12
50 j Capítulo 2. Resolución de ecuaciones no lineales de una variable

2.7.3 Método de Muller


Presentado en 1956 por David Eugene Muller, EE.UU., 1924-2008.

Muller

Utiliza una variante del método de la secante: una interpolación cuadrática de tres puntos del proceso iterativo para, a
partir de las raíces de esa interpolación, definir un nuevo punto del proceso. La idea la plasma la figura 2.15.

f (x )

p(x )

| | | |
x0 x1 x2 x3

Figura 2.15: Ilustración de las aproximaciones del método de Muller

Si se consideran los puntos x0 , x1 y x2 , el procedimiento aproxima a estos puntos el polinomio de segundo grado

p.x/ D a.x x2 /2 C b.x x2 / C c

que pasa por .x0 ; f .x0 //, .x1 ; f .x1 // y .x2 ; f .x2 //.
Los parámetros a, b y c de ese polinomio se determinan a partir de las siguientes condiciones:

f .x0 / D a.x0 x2 /2 C b.x0 x2 / C c;


f .x1 / D a.x1 x2 /2 C b.x1 x2 / C c y
f .x2 / D c:
Resolviendo el sistema de 2 ecuaciones con 2 incógnitas
 
.x0 x2 /2 .x0 x2 / a f .x0 / f .x2 /
D
.x1 x2 /2 .x1 x2 / b f .x1 / f .x2 /

se obtiene la expresión de los parámetros a y b. Es


    
a 1 .x1 x2 / .x0 x2 / f .x0 / f .x2 /
D :
b .x0 x2 /.x1 x2 /.x0 x1 / .x1 x2 /2 .x0 x2 /2 f .x1 / f .x2 /

Para determinar el nuevo punto del proceso se aplica la fórmula


2c
zD p ;
b˙ b2 4ac
escogiéndose el signo, de los dos posibles, que garantice el denominador más grande en valor absoluto:
2.7 Métodos iterativos sin derivadas j 51

Si b > 0, el signo positivo;


si b < 0, el negativo.
El nuevo punto x3 será entonces x3 D x2 C z. En el cuadro 2.13 se lista la codificación en M ATLAB del método de
Muller para resolver x 3 sen.x/ D 0 y el proceso de convergencia del problema partiendo de x0 D 1;5, x1 D 1;2 y
x2 D 1;0.

function Muller_2(fx,x0,x1,x2) % Método de Muller


tol=eps(’double’);
fx0=fx(x0); fx1=fx(x1); fx2=fx(x2); iter=1;
while abs(fx2)>tol
c=fx2; d0=x0-x2; d1=x1-x2; det=d0*d1*(x0-x1);
b=(d0*d0*(fx1-fx2)-d1*d1*(fx0-fx2))/det;
a=(d1*(fx0-fx2)-d0*(fx1-fx2))/det;
di=sqrt(b*b-4*a*c);
>> Muller_2(@Newt_1,1,1.2,1.5)
isig=1; if b<0 isig=-1; end
0.921801501077276 -1.342037938307972e-02 1
z=(-2)*c/(b+isig*di); x3=x2+z;
0.928699331903730 1.451947876007775e-04 2
if abs(x3-x1)<abs(x3-x0)
0.928626328365127 3.903326339926849e-08 3
u=x1; x1=x0; x0=u; u=fx1; fx1=fx0; fx0=u;
0.928626308731740 1.065814103640150e-14 4
end
0.928626308731734 0.000000000000000e+00 5
if abs(x3-x2)<abs(x3-x1), u=x2; x1=u; u=fx2; fx1=u; end
x2=x3; fx2=fx(x2);
if ~isreal(x2)
fprintf(’%17.14f+%17.14fi %23.15f %4.0f\n’,real(x2),imag(x2),fx2,iter);
else fprintf(’%17.15f %23.15e %4.0f\n’,x2,fx2,iter); end
iter=iter+1;
end
end

Cuadro 2.13

Obsérvese que el número de iteraciones, para la precisión que se obtiene, decrece apreciablemente comparándolo con
el de otros métodos.
Si hay que calcular una de las raíces complejas de x 3 C x 2 C x C 1 con este método, una sesión de M ATLAB resultaría
como se lista en el cuadro 2.14.

>> Muller_2(@Muller_2_2,0,0.1,1)
-0.21428571428571+0.65595130066457i 0.668124392614188 1
-0.16304914264115+1.15401500391091i 0.178872980763637 2
0.03069686090353+0.97963558152672i-0.016395820078345 3
0.00106074539714+1.00049046815007i-0.003104663615609 4
-0.00000339553880+1.00000042898932i 0.000005933119030 5
-0.00000000004554+0.99999999997470i 0.000000000141669 6
-0.00000000000000+1.00000000000000i 0.000000000000000 7
>>c=[1 1 1 1];
>> roots(c)
ans =
-1.0000
-0.0000 + 1.0000i
-0.0000 - 1.0000i

Cuadro 2.14: Convergencia del método de Muller con una raíz compleja

2.7.4 El método de Brent


Utiliza en cada punto lo más conveniente de las estrategias del de la bisección y del de la secante (o Muller). En su
acepción moderna fue formulado en 1973 por Richard Peirce Brent, Australia, 1946.

Brent
52 j Capítulo 2. Resolución de ecuaciones no lineales de una variable

Anteriormente fue propuesto, en la década de 1960, por Dekker y Van Wijngaarden del Mathematical Center de Ams-
terdam. 1.5 Root-Finding without Derivatives | 65
Se aplica a un intervalo Œa; b en cuyos extremos la función adopta signos distintos. Sigue la pista a un punto xi , que
es el mejor en el sentido
Quadratic delInterpolation
error haciamethod
atrás, yisaattempted,
un intervalo
andŒa bi  para
i ; result
the la raíz.
is used to replace one of xi , ai , bi
Aplica una interpolación
if (1) the backward error improves and (2) the bracketing interval is acut
cuadrática inversa (no y D p.x/ sino x D p.y/) los
at tres
leastpuntos
in half. .f .xi /; xi /, .f .ai /; ai /
If not,
y .f .bi /; bi / conthe
el fin de reemplazar uno de ellos con aquel —único— donde x D p.y
Secant Method is attempted with the same goal. If it fails as well, a Bisection MethodD 0/.
En la figura 2.16 stepseiscompara la geometría
taken, guaranteeing thatdel
themétodo de Muller
uncertainty is cut atconleastlainde la interpolación cuadrática inversa. Si el
half.

xIQI
x0 x2 x x1 x
M

Figura 2.16: Geometría del método de Muller y la de la interpolación cuadrática inversa


Figure 1.13 Comparison of Muller’s Method step with Inverse Quadratic Iteration
step. The former is determined by an interpolating parabola y = p(x); the latter, by an
error hacia atrás mejora y el intervalo
interpolating de xconfinamiento
parabola = p(y). de la solución se reduce al menos la mitad, el punto obtenido
reemplaza a uno de los tres vigentes. Si no se cumplen esos requisitos se intenta el método de la secante con el mismo
objetivo. Si también falla, se realiza
Matlab’s un paso
command fzerodel método de laa bisección.
implements La codificación
version of Brent’s completa
Method, along with de
a este método con
las alternativas indicadas es la del
preprocessing step,cuadro 2.15.a good initial bracketing interval if one is not provided by
to discover
the user. The stopping criterion is of a mixed forward/backward error type. The algorithm
function
terminates whenvalue
the =change
Brent(a,b,machep,t,f)
from xi to the new point xi+1 is less than 2mach max(1, xi ), or
when %%theBrent calcula la raíz de f(x)=0 en [a,b].
backward error |f (x
En [a,b] debe darse cambioi )| achieves machine zero.
de signo en f(x): preci. raíz 6*MACHEPS*abs(C)+2*T.
%
The preprocessing step is not triggered if the user provides an initial bracketing
interval.sa The
= a; following
sb = b; fa use
= f(sa);
of thefbcommand
= f(sb); centers
= sa; the
fc =function
fa; e = fsb-sa;
(x) =dx=3 e;
+ x − 1 and
while 1
the initialif bracketing interval
abs(fc)<abs(fb), [0, 1]sb=c;
sa=sb; and c=sa;
asks fa=fb;
Matlab to display
fb=fc; partial results on each
fc=fa; end
iteration:tol = 2.0*machep*abs(s)+t; m = 0.5*(c-sb);
if abs(m)<=tol | fb==0.0, break, end
if abs(e)<tol | abs(fa)<=abs(fb), e = m; d = e;
>> f=@(x)
else xˆ3+x-1;
s = fb/fa;
>> fzero(f,[0 1],optimset(’Display’,’iter’))
if sa==c, p = 2.0*m*s; q = 1.0-s; % Interpolación lineal
else
Func-count x
q = fa/fc; r = fb/fc;
f(x)
% Interpolación
Procedure
cuadrática
1 p = s*(2.0*m*q*(q-r)-(sb-sa)*(r-1.0));
0 % -1 inversa initial
2 q = (q-1.0)*(r-1.0)*(s-1.0);
1 1 initial
3 end 0.5 -0.375 bisection
if 0.0 < p, q = -q; else, p = - p; end
4 s = e; e0.636364
= d; -0.105935 interpolation
5 if 2.0*p<3.0*m*q-abs(tol*q)
0.684910 & p < 0.00620153
abs(0.5*s*q) interpolation
6 d = p/q;
0.682225 -0.000246683 interpolation
else
7 0.682328
e = m; d = e;
-5.43508e-007 interpolation
8 end 0.682328 1.50102e-013 interpolation
9 end 0.682328 0 interpolation
sa = sb;
Zero found infathe
= fb;interval: [0, 1].
if tol < abs(d), sb = sb + d;
elseif 0.0<m, sb = sb + tol; else, sb = sb-tol; end
ans= fb = f(sb);
if (0.0<fb & 0.0<fc) | (fb<=0.0 & fc<=0.0)
c = sa; fc = fa; e = sb-sa; d = e;
0.68232780382802
end
end
value = the
Alternatively, sb; command
return
end
>> fzero(f,1)
Cuadro 2.15: Codificación en M ATLAB del método de Brent
looks for a root of f (x) near x = 1 by first locating a bracketing interval and then applying
Brent’s Method.
Este método es el que usa M ATLAB en la rutina fzero. Si probamos ésta y Brent en una sesión de M ATLAB con el
2.8 Raíces de un polinomio j 53

problema anterior, x 3 2x 2 C 34 x 8
27
D 0, se obtiene lo que recogen las distintas partes del cuadro 2.16.

>> f1=@(x) x^3-2*x^2+x*4/3-8/27;


>> tic, x=Brent(0,1,eps,eps,f1), toc
x =
0.666670143350873
Elapsed time is 0.000297 seconds.

>> tic, fzero(f1,[0 1],optimset(’Display’,’iter’)), toc 27 0.667595 7.99392e-10 interpolation


Func-count x f(x) Procedure 28 0.667402 3.97894e-10 interpolation
2 1 0.037037 initial 29 0.667216 1.65654e-10 interpolation
3 0.888889 0.0109739 interpolation 30 0.667216 1.65654e-10 bisection
4 0.843776 0.00555553 interpolation 31 0.667039 5.17053e-11 interpolation
32 0.666962 2.5736e-11 interpolation
5 0.798619 0.00229748 interpolation 33 0.666887 1.07147e-11 interpolation
6 0.798619 0.00229748 bisection 34 0.666887 1.07147e-11 bisection
7 0.755766 0.00070733 interpolation 35 0.666816 3.34444e-12 interpolation
8 0.737384 0.000353658 interpolation 36 0.666785 1.66456e-12 interpolation
9 0.71944 0.000146977 interpolation 37 0.666755 6.93112e-13 interpolation
10 0.71944 0.000146977 bisection 38 0.666755 6.93112e-13 bisection
11 0.702418 4.56958e-05 interpolation 39 0.666727 2.16271e-13 interpolation
40 0.666714 1.07692e-13 interpolation
12 0.695012 2.27741e-05 interpolation 41 0.666702 4.4964e-14 interpolation
13 0.687828 9.47672e-06 interpolation 42 0.666702 4.4964e-14 bisection
14 0.687828 9.47672e-06 bisection 43 0.666691 1.39888e-14 interpolation
15 0.681016 2.95457e-06 interpolation 44 0.666686 6.99441e-15 interpolation
16 0.67804 1.47117e-06 interpolation 45 0.666681 2.88658e-15 interpolation
17 0.675159 6.124e-07 interpolation 46 0.666681 2.88658e-15 bisection
18 0.675159 6.124e-07 bisection 47 0.666676 9.99201e-16 interpolation
48 0.666674 3.33067e-16 interpolation
19 0.672426 1.91084e-07 interpolation 49 0.666673 3.33067e-16 interpolation
20 0.671232 9.51209e-08 interpolation 50 0.666673 3.33067e-16 bisection
21 0.670075 3.95999e-08 interpolation 51 0.66667 -1.11022e-16 interpolation
22 0.670075 3.95999e-08 bisection 52 0.666671 1.11022e-16 interpolation
23 0.668979 1.23591e-08 interpolation 53 0.66667 0 bisection
24 0.668499 6.15183e-09 interpolation Zero found in the interval [0, 1]
25 0.668035 2.56116e-09 interpolation ans = 0.666670143350873
Elapsed time is 0.193985 seconds.
26 0.668035 2.56116e-09 bisection

Cuadro 2.16

2.8 Raíces de un polinomio


Un polinomio de grado n, pn .x/ D a1 x n C a2 x n 1 C    C an x C anC1 , donde los coeficientes ai pueden ser números
reales o complejos, es un caso particular del problema que estudiamos en este capitulo. No obstante, existen procedimien-
tos concretos para obtener todas sus raíces. Si tiene raíces complejas, se darán en pares de la forma .xr C ixi ; xr ixi /,
donde xr y xi son las partes reales e imaginarias, respectivamente.
Lo que sigue está inspirado en Kiusalaas [2010]. Antes de presentar cómo abordar la resolución de este problema
mediante una estrategia esencialmente basada en lo que conocemos por este capítulo, vamos a utilizar dos algoritmos
auxiliares que nos van a ser de gran utilidad. El primero de ellos es una ampliación del de Horner, que conocemos, para
evaluar un polinomio.

2.8.1 Deflación de un polinomio


Si se ha calculado o se conoce una raíz r de pn .x/ D 0, es muy útil poder expresar el polinomio así

px .x/ D .x r/pn 1 .x/:

El haberlo hecho supone una deflación o división sintética. Si se consigue, las raíces del polinomio que quedan por
calcular serían las de pn 1 .x/. Una deflación gradual, paso a paso, que calcule sucesivamente una raíz de los pn 1 .x/
que se vayan obteniendo progresivamente es lo que conseguirá calcular todas las raíces del polinomio que se estudia. Si
se tiene que
pn 1 .x/ D b1 x n 1 C b2 x n 2 C    C bn 1 x C bn ;
54 j Capítulo 2. Resolución de ecuaciones no lineales de una variable

la ecuación anterior queda



a1 x n C a2 x n 1
C    C an x C anC1 D .x r/ b1 x n 1
C b2 x n 2
C    C bn 1x C bn :

Igualando los coeficientes de la misma potencia de x en ambos miembros se obtiene que

b1 D a1 b2 D a2 C rb1    bn D an C rbn 1

lo que conduce al algoritmo de deflación de Horner que se indica, codificado en M ATLAB, en el cuadro 2.17.

function b = deflpoly(a,r)
% Horner’s deflation:
% a(1)*x^n + a(2)*x^(n-1) + ... + a(n+1) =
% = (x-r)[b(1)*x^(n-1) + b(2)*x^(n-2) + ... + b(n)]
n = length(a) - 1; b = zeros(n,1); b(1) = a(1);
for i = 2:n, b(i) = a(i) + r*b(i-1); end
end

Cuadro 2.17: Algoritmo de deflación de Horner

2.8.2 Evaluación de un polinomio y sus derivadas


Recordemos la regla de Horner de la página 2. Para evaluar un polinomio pn .x/ lo mejor es proceder secuencialmente
así:

p0 .x/ D a1
p1 .x/ D a2 C xp0 .x/
p2 .x/ D a3 C xp1 .x/
p3 .x/ D a4 C xp2 .x/
::
:
pn .x/ D anC1 C xpn 1 .x/

Es decir, para un polinomio de grado n

p0 .x/ D a1 pi .x/ D anCi C xpi 1 .x/; i D 1; 2; : : : ; n:

Las derivadas primera y segunda saldrían de estas expresiones

p00 .x/ D 0 pi0 .x/ D pi 0


1 .x/ C xpi 1 .x/; i D 1; 2; : : : ; n:
p000 .x/ D0 pi00 .x/ D 2pi0 1 .x/ C xpi00 1 .x/; i D 1; 2; : : : ; n:

Si se escriben en código de M ATLAB resulta lo que se indica en el cuadro 2.18.

function [p,dp,ddp] = evalpoly(a,x)


% Evaluates p=a(1)*x^n + a(2)*x^(n-1) + ... + a(n+1)
% and derivatives dp and ddp.
n = length(a) - 1; p = a(1); dp = 0.0; ddp = 0.0;
for i = 1:n
ddp = ddp*x + 2.0*dp;
dp = dp*x + p;
p = p*x + a(i+1);
end
end

Cuadro 2.18: Algoritmo para evaluar un polinomio y sus derivadas primera y segunda
2.8 Raíces de un polinomio j 55

2.8.3 Método de Laguerre para determinar una raíz


Debe su nombre al trabajo de Edmond Laguerre, Francia 1834-1886.

Laguerre

Si se considera un caso especial de polinomio de grado n en el que una raíz es x D r y las n 1 restantes es una raíz
múltiple x D q, dicho polinomio se podría expresar así

pn .x/ D .x r/.x q/n 1


:

Si calculamos su derivada con respecto a x se tiene que


 
1 n 1
pn0 .x/ D .x q/n 1
C .n 1/.x r/.x q/n 2
D pn .x/ C :
x r x q

Es decir,
pn0 .x/ 1 n 1
D C : (2.1)
pn .x/ x r x q
Si derivamos de nuevo,
 2
pn00 .x/ pn0 .x/ 1 n 1
D : (2.2)
pn .x/ pn .x/ .x r/2 .x q/2
Si introducimos la notación que sigue

pn0 .x/ pn00 .x/


g.x/ D y h.x/ D g 2 .x/ ;
pn .x/ pn .x/

las ecuaciones (2.1) y (2.2) quedan

1
n 1
g.x/ D C
rx x q
1 n 1
h.x/ D 2
C :
.x r/ .x q/2

Si despejamos de la primera de estas dos ecuaciones x q y lo sustituimos en la segunda, obtenemos una función
cuadrática de x r, la solución de la cual es la denominada fórmula de Laguerre. Tiene por expresión
n
x rD p :
g.x/ ˙ .n 1/Œnh.x/ g 2 .x/

El algoritmo de Laguerre para calcular las raíces de un polinomio es el del cuadro 2.19. Su convergencia es cúbica. Si
se escribe en M ATLAB resulta lo que se indica en el cuadro 2.20. En el centro están las raíces que calcula de la ecuación
polinómica x 4 5x 3 9x 2 C 155 250 D 0. A la derecha las raíces calculadas del polinomio de Wilkinson mediante
el algoritmo de Laguerre y roots() de M ATLAB. Se comparan en este caso mediante la norma las desviaciones de los
valores obtenidos y los que deberían dar.
Se podría utilizar un procedimiento parecido a éste, Newton-Horner, de convergencia cuadrática, en el que el algoritmo
de Newton sustituiría al de Laguerre. Lo demás sería igual.
56 j Capítulo 2. Resolución de ecuaciones no lineales de una variable

1. –
Comenzar con un número cualquiera como raíz x de pn .x/ D 0
2. Evaluar pn .x/, pn0 .x/ y pn00 .x/ mediate evalpoly()

3. –
Calcular el valor de g.x/ y h.x/.
4. –
Determinar una raíz mejor r con la fórmula de Laguerre (adecuando el signo correspondiente de la
raíz cuadrada).
5. – Hacer x r y repetir los pasos 2 a 5 hasta que jpn .x/j < t ol o jx rj < t ol, siendo t ol una
precisión dada.
Cuadro 2.19: Algoritmo de Laguerre para calcular las raíces de pn .x/ D 0

function [root,ite] = polyroots(a,tol)


% Returns all the roots of the polynomial
% a(1)*x^n + a(2)*x^(n-1) + ... + a(n+1).
if nargin==1, tol = 1.0e-6; end
n = length(a) - 1;
root = zeros(n,1); ite = zeros(n,1);
for i = 1:n
[x,it] = laguerre(a,tol);
if abs(imag(x))<tol, x = real(x); end
root(i) = x; ite(i)=it; >> [root,ite]=polyroots([1 -5 -9 155 -250])
a = deflpoly(a,x); root = >> a=poly(1:20);
end 2.0000 + 0.0000i >> [root,ite]=polyroots(a);
end 4.0000 + 3.0000i >> norm(sort(root)-[1:20]’)
-5.0000 + 0.0000i ans =
function [x,i] = laguerre(a,tol) 4.0000 - 3.0000i 0.0358
% Returns a root of the polynomial ite = >> y=roots(a);
% a(1)*x^n + a(2)*x^(n-1) + ... + a(n+1). 4 >> norm(sort(y)-[1:20]’)
x = randn; n = length(a) - 1; 5 ans =
for i = 1:50 2 0.1082
[p,dp,ddp] = evalpoly(a,x); 2 >>
if abs(p)<tol, return, end >>
g = dp/p; h = g*g - ddp/p;
f = sqrt((n - 1)*(n*h - g*g));
if abs(g + f)>=abs(g - f), dx = n/(g + f);
else dx = n/(g - f); end
x = x - dx;
if abs(dx)<tol, return, end
end
error(’Too many iterations in laguerre’)
end

Cuadro 2.20: Algoritmo de Laguerre para obtener las raíces de pn .x/ D 0 y dos aplicaciones prácticas

Referencias, fuentes y lecturas complementarias


Lo asuntos que cubre este capítulo los he ordenado según un criterio que permita dar entrada de forma natural y sencilla
a todos los que vienen después. Lo expuesto está sacado de las fuentes a las que se puede recurrir sistemáticamente
para estudiar los asuntos tratados. Son, esencialmente, Burden y Faires [2011], Dennis y Schnabel [1996], Hager [1988],
Heath [2002], Nocedal y Wright [2006], Quarteroni, Sacco y Saleri [2000] y Sauer [2012]. El hilo conductor básico de
lo expuesto lo marca este último pues es el más moderno y el que mejor se adapta, creo, a la enseñanza de ingenieros y
a la utilización inmediata de M ATLAB. Los programas de ordenador son míos o variantes de disponibles en la red.
Capítulo 3

Sistemas de ecuaciones lineales. Métodos


directos de resolución

Contenido
3.1 El problema y sus principios teóricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.2 Métodos directos de resolución numérica. Eliminación de Gauss . . . . . . . . . . . . . . . . . . . 61
3.3 Condicionamiento de sistemas de ecuaciones lineales . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.4 Fuentes de errores en la eliminación de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.5 Matlab y los sistemas de ecuaciones lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.6 Factorización LU de la matriz del sistema de ecuaciones . . . . . . . . . . . . . . . . . . . . . . . 79
3.7 Solución de sistemas de ecuaciones lineales modificados . . . . . . . . . . . . . . . . . . . . . . . 85
3.8 Refinamiento iterativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.9 Sistemas de ecuaciones lineales con matrices simétricas . . . . . . . . . . . . . . . . . . . . . . . . 87
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

3.1 El problema y sus principios teóricos

S E trata de obtener el vector solución x que cumple un conjunto, o sistema, de ecuaciones lineales como
a11 x1 C a12 x2 C    C a1n xn D b1
a21 x1 C a22 x2 C    C a2n xn D b2
:: :: :: ::
: : : :
am1 x1 C am2 x2 C    C amn xn D bm :

Los números aij son los coeficientes del sistema y b D Œb1 ; : : : ; bm T el término independiente.
Hay que obtener el valor del vector x D Œx1 ; : : : ; xn T que hace que se cumplan simultáneamente todas las igualdades.
Si se introducen las matrices y vectores
2 3 2 3 2 3
a11 a12    a1n x1 b1
6 a21 a22    a2n 7 6 x2 7 6 b2 7
6 7 6 7 6 7
AD6 : :: :: 7 ; x D 6 :: 7 y b D 6 : 7;
4 :: : : 5 4 : 5 4 : 5
:
am1 am2    amn xn xm
el sistema se puede representar de forma más compacta por
Ax D b:
58 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

 Casos posibles de sistemas lineales, una vez más


En general A 2 Rmn , x 2 Rn y b 2 Rm , pero también pueden pertenecer al cuerpo de los números complejos.
m=n
Los casos posibles de sistemas de ecuaciones lineales se esquematizan en la figura 3.1.
m=n · = m=n
rango(A ) = m = n
m =n · = m =n · =
rango(A) = m = n rango(A) < m = n
· = · =
rango(A) = m = n rango(A) < m = n
1a 1b
1a 1b
m>n · = m>n · =
m>n · = m>n · =
rango(A ) = n < m rango(A) < n < m
m>n · = m>n · =
rango(A) = n < m rango(A) < n < m

rango(A) = n < m rango(A) < n < m

2a 2b
2a 2b
m<n m<n
m<n · = m<n · =
rango(A) = m < n · = rango(A) < m < n · =
m<n m<n
rango(A) = m < n = rango(A) < m < n =
· ·
rango(A) = m < n rango(A) < m < n
3a 3b 5/101
Figura 3.1: Casos posibles de sistemas de ecuaciones lineales según la estructura y rango de la matriz A
3a 3b
Recordemos para empezar algunos resultados de la teoría de álgebra lineal.
Teorema 3.1
a c
b
Compatibilidad de un1 sistema
2
de
3
ecuaciones lineales. La ecuación Ax D b admite solución si y sólo si
g
d e f 9 4
rango.Ajb/
6 5
D rango.A/:
h i j 10 8 7

Corolario 3.2 Si A mn tiene rango m, Ax D b siempre tiene solución.

Teorema 3.3 Si x0 es una solución de Ax D b, el conjunto de soluciones de la ecuación está dado por x0 C ker.A/.

Corolario 3.4 Una solución de Ax D b es única si y sólo si ker.A/ D ;.

Teorema 3.5 La ecuación Ax D 0, A mn , n > m, siempre tiene una solución no trivial.

Teorema 3.6 Si A es una matriz cuadrada de orden n, las siguientes condiciones son equivalentes:
1. rango.A/ D n.
2. ker.A/ D ;.
3. Los vectores columna de A son linealmente independientes.
4. Los vectores fila de A son linealmente independientes.
5. Existe una matriz de orden n, A 1 , tal que A 1 A D AA 1 D I

Ejemplo 3.1 Hay que modelizar el sistema de refrigeración de una tarjeta electrónica para poder usar un reloj de
Objective: Find the temperature of an integrated circuit (IC)
package mounted on a heat spreader. The system of equations is
obtained from a thermal resistive network model. 3.1 El problema y sus principios teóricos j 59

impulsos con la mayor frecuencia de oscilación posible.


Adoptamos el modelo físico y matemático
Physical Model:simplificado de la figura 3.2 en el queModel:
Mathematical se esquematiza un tiristor o un
transistor montado en una placa disipadora de calor.

aire
Q1 Q2
c Τp Τw
Qc
R2

Q3 R3 Q4 R4 Q5 R5

Tp Tw
Τa Τa Τa
temperatura exterior Ta

Figura 3.2: Ejemplo de un modelo de aplicación de sistemas de ecuaciones lineales

Si el sistema necesita Qc watios de potencia y se supone un modelo resistivo del flujo de aire entre los nudos del
sistema, aplicando los principios de conservación de la energía se obtienen estas ecuaciones:

1 1
Q1 D .Tc Tp / Q4 D .Tp Ta / Qc D Q1 C Q3
R1 R4
1 1
Q2 D .Tp Tw / Q2 D .Tw Ta / Q1 D Q2 C Q4
R2 R5
1
Q3 D .Tc Ta /:
R3
NMM: Solving Systems of Equations page 7
Se conocen Qc y Ta . Las resistencias se pueden conocer sabiendo el material de las placas y sus propiedades. Las
incógnitas son entonces Q1 , Q2 , Q3 , Q4 , Tc , Tp y Tw .
Como hay siete ecuaciones, reagrupando las ecuaciones para aislar las incógnitas:

R1 Q1 Tc C T9 D 0
R2 Q2 Tp C Tw D 0
R3 Q3 Tc D Ta
R4 Q4 Tp D Ta
R5 Q2 Tw D Ta
Q1 C Q3 D Qc
Q1 Q2 Q4 D 0:

En forma matricial, el sistema tiene la siguiente expresión:


2 32 3 2 3
R1 0 0 0 1 1 0 Q1 0
6 0 R2 0 0 17 6Q2 7 6 07
6 0 1 76 7 6 7
6 0 0R 0 07 6 7 6 Ta 7
6 3 1 0 7 6Q3 7 6 7
6 76 7 6 7
6 0 0 0 R4 0 1 07 6Q4 7 D 6 Ta 7
6 76 7 6 7
6 0 R5 0 0 0 0 17 6 Tc 7 6 Ta 7
6 76 7 6 7
4 1 0 1 0 0 0 05 4 Tp 5 4 Qc 5
1 1 0 1 0 0 0 Tw 0

Los flujos de calor se obtendrán resolviendo este sistema.


En una sesión de trabajo con M ATLAB, si R1 D 100, R2 D 200, R3 D 50, R4 D 100, R5 D 300, Ta D 50 y
Qc D 25, se haría algo como lo que indica el cuadro 3.1.
60 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

>> A=[100 0 0 0 -1 1 0; 0 200 0 0 0 -1 1; 0 0 50 0 -1 0 0;...


0 0 0 100 0 -1 0; 0 300 0 0 0 0 -1; 1 0 1 0 0 0 0;1 -1 0 -1 0 0 0]
A =
100 0 0 0 -1 1 0
0 200 0 0 0 -1 1
0 0 50 0 -1 0 0
0 0 0 100 0 -1 0
0 300 0 0 0 0 -1
1 0 1 0 0 0 0
1 -1 0 -1 0 0 0
>> b=[0;0;-50;-50;-50;25;0]
b =
0
0
-50
-50
-50
25
0
>> x=A\b
x =
1.0e+003 *
0.00535714285714
0.00089285714286
0.01964285714286
0.00446428571429
1.03214285714286
0.49642857142857
0.31785714285714

Cuadro 3.1

Analicemos ahora geométricamente el problema de resolver un sistema de dos ecuaciones lineales con dos incógnitas:

a11 x1 C a12 x2 D b1
a21 x1 C a22 x2 D b2 :
Cada una de las ecuaciones que componen el sistema representa una recta en el espacio euclídeo de dimensión dos.
Se ve en la figura 3.3.

x2

a11 x 1 + a12 x 2 = b1

a21 x 1 + a22 x 2 = b2

x1

Figura 3.3: Dos ecuaciones y su intersección en el espacio euclídeo de dimensión dos

El proceso de obtener la solución del sistema tiene como objeto determinar las coordenadas del punto donde se
cortan.
Las expresiones gráficas de las diversas formas que pueden adoptar los sistemas de ecuaciones lineales son, esquemá-
ticamente, las tres de la figura 3.4.
Generalizando a Rn , la resolución de un sistema de ecuaciones lineales consiste en determinar las coordenadas del(los)
punto(s) de intersección de los hiperplanos asociados a cada una de las ecuaciones. En R3 , por ejemplo, el sistema

x1 2x2 C x3 D 0
2x2 8x3 D 8
4x1 C 5x2 C 9x3 D 9
3.2 Métodos directos de resolución numérica. Eliminación de Gauss j 61

 $)"15&3  /LQHDU(TXDWLRQVLQ/LQHDU$OJHEUD

,WLVFRQYHQLHQWWRFRPELQHWKHUHVXOWVRIWKHVHWZR
2
x1 " 2x2 D "3 1
x2 D 16 40
x3 D 3 0

1RZ KDYLQJFOHDQHGRXWWKHFROXPQDERYHWKH x3 LQ
HTXDWLRQDQGXVHLWWRHOLPLQDWHWKH "2x2 DERYHLW
x  WKHUHLVQRZQRDULWKPHWLFLQYROYLQJ
Figura 3.4: Diversas posibilidades de sistemas de ecuaciones 3en dimensión dos x3 WHUPV
DQGREWDLQWKHV\VWHP
8̂ 2
<x1 D 29 1
tiene por solución única el punto x D Œ29; 16; 3 , como se ve en la figura 3.5.
T
40
x2 D 16
www.FreeLibros.me :̂
x D 3 0
3

7KHZRUNLVHVVHQWLDOO\GRQH ,WVKRZVWKDWWKHRQO
.29; 16; 3/ +RZHYHU VLQFHWKHUHDUHVRPDQ\FDOFXO
WRFKHFNWKHZRUN 7RYHULI\WKDW .29; 16; 3/ LV DVR
WKHOHIWVLGHRIWKHRULJLQDOV\VWHP DQGFRPSXWH

.29/ " 2.16/ C .3/ D 29 " 3


(29, 16, 3) 2.16/ " 8.3/ D 32 " 2
(DFKRIWKHRULJLQDOHTXDWLRQV "4.29/ C 5.16/ C 9.3/ D "116
Figura 3.5: Solución de un sistema de tres ecuaciones lineales
GHWHUPLQHVDSODQHLQWKUHH
GLPHQVLRQDOVSDFH 7KHSRLQW 7KHUHVXOWVDJUHHZLWKWKHULJKWVLGHRIWKHRULJLQDO
El punto x D Œ29; 16; 3T está en los tres.29;
planos OLHVLQDOOWKUHHSODQHV
16; 3/ que definen las ecuaciones del sistema. Constatémoslo con unas
RIWKHV\VWHP
instrucciones de M ATLAB:
([DPSOHLOOXVWUDWHVKRZRSHUDWLRQVRQHTXDWLR
>> A=[1 -2 1;0 2 -8;-4 5 9]; RSHUDWLRQVRQWKHDSSURSULDWHURZVRIWKHDXJPHQWHG
>> b=[0;8;-9];
>> A\b OLVWHGHDUOLHUFRUUHVSRQGWRWKHIROORZLQJRSHUDWLRQV
ans =
29
16
3 &-&.&/5"3: 308 01&3"5*0/4
 5HSODFHPHQW 5HSODFHRQHURZE\WKHVXPR
Geométricamente, en el subespacio de los vectores columna de la matriz, Im.A/,
URZsi se escribe el sistema de dos
ecuaciones con dos incógnitas de la forma  ,QWHUFKDQJH ,QWHUFKDQJHWZRURZV
       6FDOLQJ 0XOWLSO\DOOHQWULHVLQDURZE\DQR
a11 a12 b1
x1 C x2 D ;
a21 a22 b2
5RZRSHUDWLRQVFDQEHDSSOLHGWRDQ\PDWUL[
el problema es el de descomponer linealmente el vector b en los dos vectoresDXJPHQWHGPDWUL[RIDOLQHDUV\VWHP
columna de la matriz de coeficientes7ZRPDWULFHV
tal
como se ve en la figura 3.6. LVDVHTXHQFHRIHOHPHQWDU\URZRSHUDWLRQVWKDWWUDQ
En Rn el problema es el de la búsqueda de la descomposición lineal de un vector según los n vectores de la base de
,WLVLPSRUWDQWWRQRWHWKDWURZRSHUDWLRQVDUH
Im.A/. FKDQJHG WKH\FDQEHUHWXUQHGWRWKHLURULJLQDOSRV
URZLVVFDOHGE\DQRQ]HURFRQVWDQW c  WKHQPXOWLSO
WKHRULJLQDOURZ )LQDOO\ FRQVLGHUDUHSODFHPHQWR
URZVDQG³DQGVXSSRVHWKDW c WLPHVURZLVDGG
3.2 Métodos directos de resolución numérica. Eliminación de Gauss 7R´UHYHUVHµWKLVRSHUDWLRQ DGG "c WLPHVURZWR
URZ  6HH([HUFLVHV²DWWKHHQGRIWKLVVHFWLR
Los métodos directos resuelven el problema en etapas, siendo el número de éstas fijo y función de la dimensión del
problema. ò $ FRPPRQSDUDSKUDVHRIURZUHSODFHPHQWLV´$GGWRRQHURZ
62 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

 
b1
b2

 
a11
a21

 
a12
a22

Figura 3.6: Dos ecuaciones y su solución en el espacio Im.A/

El más clásico es el debido a Gauss —por Carl Friedrich Gauss, Alemania, 1777-1855—,

Gauss

quien lo aplicó por primera vez en 1809 con motivo de unos estudios sobre órbitas de cuerpos celestes.
Supondremos que la matriz cuadrada A es de rango completo –regular–, por lo tanto invertible, y que si eventualmente
no lo es el procedimiento deberá detectarlo. La mecánica del método consiste en aplicar al sistema
9
a11 x1 C a12 x2 C    C a1n xn D b1 >
>
>
a21 x1 C a22 x2 C    C a2n xn D b2 =
:: :: :: :: > Ax D b
: : : : >
>
;
an1 x1 C an2 x2 C    C ann xn D bn

n 1 transformaciones lineales que lo conviertan en otro más fácil de resolver. Concretamente, en uno triangular
superior de la forma 9
u11x1 C u12x2 C    C u1nxn D b10 =
u22x2 C    C u2nxn D b20 0
U xxDD
U b0 : b :
;
::: :::
unnxn D bn0 ;

Tal sistema triangular superior, siempre y cuando se satisfaga que


ui i ¤ 0; i D 1; : : : ; n;
es fácilmente resoluble de manera recurrente mediante las fórmulas
0 1
1 @ 0 X n
xk D bk uki xi A ; k D 1; : : : ; n:
ukk
i DkC1

Este proceso se conoce como sustitución inversa.


En cada una de las n 1 etapas apuntadas del método, con otras tantas transformaciones lineales, hay que llevar a
cabo:
3.2 Métodos directos de resolución numérica. Eliminación de Gauss j 63

1. Una multiplicación de una de las ecuaciones del sistema por un número distinto de cero.
2. Una sustitución de una ecuación del sistema (o varias) por la que resulta de sumarle otra multiplicada por un factor.
3. Una posible permutación del orden en que aparecen en el sistema las ecuaciones del mismo.
Para introducir de forma práctica el método lo vamos a hacer resolviendo sobre la marcha un sistema en el que se
presentan las diversas opciones y variantes. Concretamente

2x1 C x2 C 4x4 D 2
4x1 2x2 C 3x3 7x4 D 9
4x1 C x2 2x3 C 8x4 D 2
3x2 12x3 x4 D 2:
Escrito en la forma matricial Ax D b, los distintos elementos son
2 3 2 3 23
2 1 0 4 2 x1
6 4 2 3 77 6 7 6 x2 7
AD6 7; b D 6 97 y xD6 7
4 4 1 2 85 4 25 4 x3 5 :
0 3 12 1 2 x4
Reconfiguremos inicialmente la matriz A añadiéndole a su derecha la columna del término independiente b —matriz
b es decir,
aumentada—, y llamemos a la nueva matriz A;
2 3
2 1 0 4 2
6 3 7 97
b D ŒAjb D 6 4 2 7:
A 4 4 1 2 8 25
0 3 12 1 2
Apliquemos ahora la mecánica del método en 3 etapas.

Etapa 1
Comprobemos el valor del coeficiente aO 11 —denominado elemento pivote—. Si es distinto de cero, pivotando sobre él,
hagamos cero los coeficientes de la primera columna por debajo de ese aO 11
Para ello, calculamos para cada fila 2; 3; : : : ; n los factores o multiplicadores
aO i1
ri D ; i D 2; : : : ; n:
aO 11
A continuación, restamos de las filas i D 2; 3; : : : ; n, la primera multiplicada por ri . El resultado será que todos los
coeficientes debajo de la diagonal principal de la columna 1 se harán cero.
Los demás coeficientes de A b debajo de la primera fila se verán afectados como indica esta expresión:

aO ij aO ij ri  aO 1j ; i D 2; : : : ; nI j D 2; : : : ; n C 1:
En el ejemplo, los multiplicadores son

r2 D aO 21 =aO 11 D 4=2 D 2
r3 D aO 31 =aO 11 D 4=2 D 2
r4 D aO 41 =aO 11 D 0=2 D 0:

b que cambian de valor y cómo lo hacen se apunta en la fórmula 3.1. La nueva matriz A
Los coeficientes de la matriz A b1,
b
resultado de transformar A, es:
2 3
2 1 0 4 2
6 3 1 57
b1 D 6 0 0 7:
A 40 1 2 0 25
0 3 12 1 2
64 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

en la 2a fila: aO 21 0
aO 22 aO 22 r2  aO 12 D 2 C 21 D 0
aO 23 aO 23 r2  aO 13 D 3 C 20 D 3
aO 24 aO 24 r2  aO 14 D 7 C 24 D 1
aO 25 aO 25 r2  aO 15 D 9 C 22 D 5I
en la 3a fila: aO 31 0
aO 32 aO 32 r3  aO 12 D 1 21 D 1
aO 33 aO 33 r3  aO 13 D 2 20 D 2
aO 34 aO 34 r3  aO 14 D 8 24 D 0
aO 35 aO 35 r3  aO 15 D 2 22 D 2I
en la 4a fila: aO 41 0
aO 42 aO 42 r3  aO 12 D 3 01 D 3
aO 43 aO 43 r4  aO 13 D 12 00 D 12
aO 44 aO 44 r4  aO 14 D 1 04 D 1
aO 45 aO 45 r4  aO 15 D 2 02 D 2:

Fórmula 3.1

b
Se puede comprobar fácilmente que se hubiese obtenido exactamente el mismo resultado de haber premultiplicado A
por la denominada transformación de Gauss, definida por la matriz triangular inferior unitaria
2 3
1000
6 2 1 0 07
L1 D 6 4 2 0 1 05;
7

0001
denominada matriz de transformación de Gauss. En efecto,
2 32 3 2 3
1000 2 1 0 4 2 2 1 0 4 2
6 2 1 0 076 4 2 3 7 7
97 60 6 0 3 1 57
bD6 76 D 7:
L1 A 4 2 0 1 054 4 1 2 8 25 40 1 2 0 25
0001 0 3 12 1 2 0 3 12 1 2

La matriz L1 también se puede escribir de la forma L1 D I ˛e1T , donde


2 3 2 3
0 1
6 27 607
˛D6 4 25
7 y e1 D 6405:
7

0 0
Su inversa es 2 3
1 0 0 0
6 2 1 0 07
L1 1 D6
4 2
7:
0 1 05
0 0 0 1
La única diferencia de esta matriz con L1 es el signo de los coeficientes de la primera columna debajo de la diagonal
b 1 D L1 A.
principal. En resumen, A b

Etapa 2
b1.
Hagamos cero los coeficientes debajo de la diagonal principal de la 2a columna de A
3.2 Métodos directos de resolución numérica. Eliminación de Gauss j 65

Al tratar de hacerlo, vemos que el coeficiente pivote aO 22


1
es cero, lo que nos impide proceder como en la etapa anterior.
Comprobemos entonces si algún coeficiente de la columna 2 por debajo de aO 22 1
no es 0:
Si no hay ninguno, esta columna es combinación lineal de la primera y por tanto la matriz es singular.
Si hay varios, escojamos el de mayor valor absoluto e intercambiemos la fila de ese coeficiente con la segunda.
En el ejemplo, el coeficiente de mayor valor absoluto debajo de la diagonal principal en la segunda columna, 3, se
encuentra en la fila 4. Intercambiamos esa fila 4 con la 2. Se obtendrá
2 3
2 1 0 4 2
6 27
b 01 D 6 0 3 12 1 7:
A 40 1 2 0 25
0 0 3 1 5

b 1 por la permutación
Esto mismo se obtiene premultiplicando A
2 3
1 0 0 0
60 0 0 17
P1 D 6
40
7:
0 1 05
0 1 0 0

b 0 , es:
Recapitulemos lo hecho hasta ahora: la matriz con la que vamos a operar a continuación, A 1

b 01 D P 1 L1 A:
A b

Apliquemos ahora a la columna 2 la misma idea que a la columna 1 y hagamos cero sus coeficientes 3 a n. Los nuevos
multiplicadores saldrán de la expresión
0
aO 1
ri D 1i 20 ; i D 3; 4:
aO 22
b 0 por debajo de la segunda fila se obtendrán aplicando la expresión
Los nuevos valores de los coeficientes de la matriz A 1

10 10 1 0
aO ij aO ij ri  aO 2j ; i D 3; 4I j D 3; : : : ; 5:

Los valores de los multiplicadores para el ejemplo son


0 0
1
r3 D aO 32 1
=aO 22 D 1=3 y
1 01 0
r4 D aO 42 =aO 22 D 0:

b 0 resultante:
Los nuevos coeficientes de la matriz A 1

en la 3a fila: 1 0
aO 32 0
10 1 0 1 0 1
aO 33 aO 33 r3  aO 23 D 2C 3
 12 D 2
10 10 10 1
aO 34 aO 34 r3  aO 24 D 0C 3
1 D 1=3
10 10 10 1
aO 35 aO 35 r3  aO 25 D 2 3
2 D 8=3I
en la 4a fila: 10
aO 42 0
10 1 0 1 0
aO 43 aO 43 r4  aO 23 D 3 0  12 D 3
10 10 10
aO 44 aO 44 r4  aO 24 D 1 01 D 1
10 10 10
aO 45 aO 45 r4  aO 25 D 5 02 D 5:

Al ser r4 D 0 los cálculos para adaptar la cuarta fila podrían haberse evitado.
66 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

La nueva matriz resultado de las transformaciones de esta segunda etapa es


2 3
2 1 0 4 2
60 3 12 1 27
b2 D 6 7;
A 40 0 2 1=3 8=3 5
0 0 3 1 5

matriz que se expresa a partir de la inicial como

b 2 D L2 P 1 L1 A;
A b
2 3
1 000
60 1 0 07
donde L2 D 6
40
7.
1=3 1 0 5
0 001

Etapa 3
Para conseguir transformar el sistema original en uno triangular superior sólo resta anular el coeficiente aO 43
2
.
El coeficiente de la diagonal principal aO 33 es distinto de cero, luego procedemos a calcular el multiplicador r4 :
2

2 2
r4 D aO 43 =aO 33 D 3=2:

b 2 por debajo de la tercera fila se obtendrán aplicando la expresión


Los nuevos valores de los coeficientes de la matriz A
2 2 2
aO ij aO ij ri  aO 3j ; i D 4I j D 4; 5:

En concreto, en la cuarta fila:


2
aO 43 0
2 2 2 3 1
aO 44 aO 44 r4  aO 34 D 1 2
 3
D 1=2
2 2 2 3 8
aO 45 aO 45 r4  aO 35 D 5C 2
 3
D 1:
La nueva matriz resultado de estas transformaciones es
2 3
2 1 0 4 2
60 3 12 1 27
b3 D 6 7:
A 40 0 2 1=3 8=3 5
0 0 0 1=2 1

b una serie de transformaciones; concre-


A este resultado se ha llegado al final después de aplicar a la matriz inicial A
tamente:
Ab 3 D L3 L2 P 1 L1 A;
b

donde 2 3
1 0 0 0
60 1 0 07
L3 D 6
40
7:
0 1 05
0 0 3=2 1
En conclusión, la matriz original que definía el sistema, A, se puede transformar en la triangular superior U aplicán-
b Es decir,
dole las mismas transformaciones que a A.

U D L3 L2 P 1 L1 A:
3.2 Métodos directos de resolución numérica. Eliminación de Gauss j 67

Como a b también se le han efectuado las mismas transformaciones llegándose a b0 , resolver el sistema de ecuaciones
original es equivalente a resolver
U x D b0

En el ejemplo,
2 32 3 2 3
2 1 0 4 x1 2
60 3 12 1 7 6 7 6 27
6 7 6 x2 7 D 6 7:
40 0 2 1=3 5 4 x3 5 4 8=3 5
0 0 0 1=2 x4 1
La solución se lleva a cabo mediante sustitución inversa:

x4 D 2;

sustituyendo en la tercera ecuación,


8=3 . 2/.1=3/
x3 D D 1;
2
y, con estos nuevos valores, haciéndolo en la segunda,
2 . 1/. 2/ . 12/. 1/
x2 D D 4:
3
Por último, sustituyendo los valores de las variables ya calculados en la primera ecuación se obtiene
2 4. 2/ 1.4/
x1 D D 3:
2
La solución de nuestro ejemplo es pues
2 3 2 3
x1 3
6 x2 7 6 4 7
6 7D6 7
4 x3 5 4 1 5 :
x4 2

3.2.1 Pivotación
Veamos qué ocurre si resolvemos con el procedimiento estudiado, en una máquina teórica con sólo tres dígitos signifi-
cativos y que redondea, el pequeño sistema
     
10 4 1 x1 1
D

1 1 x2
„ƒ‚… „ƒ‚…
x
2

A b

de solución exacta Œ0;99989999; 1;00010001T . Aplicando la mecánica y los pasos apuntados, como 10 4
no es cero,
en una primera etapa se obtendrían una nueva matriz A1 y un nuevo vector b1 ,
   
10 4 1 1
A1 D y b 1 D :
0 1 104 2 104

Ahora bien, el número 1 104 D 9999 la máquina lo redondearía a 104 ; de la misma forma procedería con 2 104 .
La solución del sistema que daría la máquina sería

104
x2 D D1
104 muy distinta de la real.
1 x2
x1 D D0
10 4
68 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

La elección del pivote, y su uso, además de que el multiplicador no sea un posible ai i D 0, también tiene por objeto
que ese multiplicador no tenga una magnitud muy diferente a 1. Su sentido es aumentar la estabilidad numérica del
procedimiento. Es por esto por lo que siempre se prefiere escoger el coeficiente pivote de mayor magnitud de entre los
de debajo de la diagonal principal.
En este último ejemplo, en la primera etapa, en vez de operar sobre la matriz anterior, como el valor absoluto del
coeficiente a21 es mayor que el del a11 , se debería intercambiar la fila 1 con la 2 obteniéndose
   
0 1 1 0 2
A D y b D :
10 4 1 1
Continuando con el procedimiento normal, después de la primera etapa, se llegará a
   
1 1 2
A10 D y b 0
1 D :
0 1 10 4 1 2  10 4
Por redondeos internos, la máquina representaría estas matrices así:
   
0 11 0 2
A1 D y b1 D :
01 1
La solución de este sistema de ecuaciones sería
   
x1 1
D ;
x2 1
mucho mejor que la anterior, pues la real como apuntábamos es
0,9998
x2 D D 0,99989999
0,9999
x1 D 1,00010001:
La diferencia entre las dos formas de proceder anteriores es fundamental desde el punto de vista numérico en un
ordenador. En la primera, al usar el multiplicador 104 , el efecto de restar 104 veces la ecuación superior de la ecuación
inferior hace que la primera domine la ecuación final.
Aunque al principio del proceso había dos ecuaciones, o fuentes de información independientes, actuando de la manera
inicial, después de la primera eliminación quedaron en esencia dos copias de la ecuación superior pues la inferior, a
efectos prácticos, había desaparecido. La solución obtenida con esa forma de actuar, como es lógico, no satisface la
ecuación inferior como sería deseable. A este efecto o fenómeno se le conoce en análisis numérico como dominancia.
El proceso de pivotación descrito de intercambiar filas se conoce como pivotación parcial. Su por qué radica en la
aritmética de precisión finita con la que trabajan todos los ordenadores (que desafortunadamente domina el entorno
de cálculo científico e ingenieril actual) y en el hecho de que los factores o multiplicadores antes introducidos son
inversamente proporcionales al coeficiente pivote: si éste es demasiado pequeño puede amplificar los errores de redondeo
a lo largo del proceso de solución y favorecer la dominancia que se ha descrito.
Una segunda estrategia de pivotación es la denominada pivotación total. Consiste en buscar en una etapa i el co-
eficiente de mayor valor absoluto en la submatriz Ai Wn;i Wn . Es lo que describe la figura 3.7a. La pivotación total es la
estrategia óptima desde el punto de vista de minimizar errores.
Una tercera estrategia de pivotación es la denominada rook pivoting. Consiste en encontrar los coeficientes de la
submatriz Ai Wn;i Wn que sean máximos en su fila y columna y luego decidir, de acuerdo con algún criterio, cuál de ellos
sería el pivote. En la matriz de la figura 3.7b (Higham [2002]) se escogería el 9 en la primera pivotación.
En la práctica, la pivotación parcial produce muy buenos resultados y excelentes prestaciones numéricas por lo que
rara vez se usa otra.

3.2.1.1 El algoritmo de la eliminación de Gauss con pivotación parcial


En el cuadro 3.2 se lista el algoritmo que resuelve mediante eliminación de Gauss con pivotación parcial el sistema de
ecuaciones lineales Ax D b. A su lado está su codificación en M ATLAB sacando partido de todas las prestaciones de
este software.
Full Pivoting
To avoid division by zero, swap the row having the zero pivot
with one of the rows below it. 3.2 Métodos directos de resolución numérica. Eliminación de Gauss j 69
9 . 1 GAUSSIAN ELIMINATION AND PIVOTING STRATEGIES

4
15

1 10 1 2 5

4
Rows completed in Rows completed in

0 5 2 2
forward elimination. forward elimination.

2 0 3 1
0 Row with zero pivot
0 element * Row with zero pivot element

4 4
2a 2 1 0
Rows to search for a 3
more favorable pivot Rows to search for
* element. *
1
more favorable pivot
element. 3 1
1 0 3 0 12
(a) Pivotación total en filas y columnas
Columns to search for a more
Figure
favorable pivot element.
9 .1. (b) Rook pivoting
Illustration of how rook pivoting searches for the first pivot for a particul
6 x 6 matrix (with the positive integer entries shown) . Each dot denotes a putative piv
To minimize the effect of Figura 3.7:
roundoff, Estrategias
always choosedethe
pivotación
row that total
that isytested
rooktopivoting
see if it is the largest in magnitude in both its row and its column.
puts the largest pivot element on the diagonal, i.e., find ip such
that |aip,i| = max(|ak,i |) for k = i, . . . , n works so well, complete pivoting is used only in special situations (see the Note
and References ) .
 Resolución de Ax D b Also of interest, but much less well known, is the Took pivoting strategy, whic
 Transformación de la Matriz Aumentada ŒAjb chooses at each stage a pivot intermediate in size between the pivots that woul
for i D 1 to n 1 be chosen by partial pivoting and complete pivoting. At the start of the kth stag
Determinar índice p 2 fi; i C 1; : : : ; ng tal que function [x]=Gauss(A,b)
rows k and T and columns k and 8 are interchanged, where
% Solución de Ax=b mediante eliminación de Gauss
ja.p; i /j D mKaxij n ja.j; i /j.
n=size(A,1); x=zeros(n,1);
Intercambiar filas p e i . for i=1:n-1 % Transformación matriz A en n-1 etapas
for j D i C 1 to n [p,maxk]=max(abs(A(i:n,i)));
in other words, a pivot is maxk=maxk+i-1;
chosen that is the largest in magnitude in both its colum
 D a.j; i /=a.i; i / if i~=maxk
( as for partial pivoting) and its row. The pivot search can be coded as follows:
for k D i C 1 to n C 1 A([i maxk],:) = A([maxk i],:); b([i maxk]) = b([maxk i]);
k/   a.i; k/ end
a.j; k/
NMM: Solving Systemsa.j;
of Equations page 37 80 = k
j=i+1:n; for p = 1, 2, . . .
end A(j,i) = A(j,i)/A(i,i);
end Tp = row indexA(j,j) of first =element
A(j,j)-A(j,i)*A(i,j);
of max. modulus among {ai, sp_J Y= k
b(j) = b(j)-b(i)*A(j,i);
if p > 1 and [ arp, Sp_ I [ = [ arp _ 1 , Sp _ I [
end end
take arp _I , Sp _ 1 as pivot, quit
 Sustitución Inversa. for
NMM: Solving Systems of i=n:-1:1
Equations % Sustitución inversa page 39
end
x(i)=(b(i)-A(i,i+1:n)*x(i+1:n))/A(i,i);
for j D n to 01 1 end 8 p = col. index of first element of max. modulus among {arp ,j }j= k
X n  if t arp ) SP [ = t arp , Sp - 1 [ take arp , Sp- 1 as pivot, quit, end
end
x.j / @b.j / a.j; k/  x.k/A a.j; j / end
kDj C1
The rook pivoting strategy takes its name from the fact that the search for
end
pivot corresponds to the moves of a rook in chess; see Figure 9 . 1 . Note that i
the pivot search, elements previously considered can be skipped; in the followin
discussion we will assume that this refinement is incorporated, though it may no
Cuadro 3.2 be worthwhile in practice.
Clearly, the search for a pivot in rook pivoting involves at least twice as man
comparisons as for partial pivoting, and if the whole submatrix has to be searche
then the number of comparisons is the same as for complete pivoting. Foster [43
El código de M ATLAB pretende poderse aplicar a un sistema de 1cualquier
997 , Thm. 5]tamaño.
shows thatResolvamos { a��
if the elements a ) }i,j =k are independent
continuación con identicall
este programa, en una sesión de M ATLAB, el sistema del ejemplo y otro mucho más grande generado artificialmente.

>> A=randn(4000);
>> A=[2 1 0 4;-4 -2 3 -7;4 1 -2 8;0 -3 -12 -1]; >> x=ones(4000,1);
>> Gauss(A,b) >> b=A*x;
ans = >> tic,norm(x-Gauss(A,b)),toc
3.0000 ans = 4.2042e-11
4.0000 Elapsed time is 173.586543 seconds.
-1.0000 >> tic,norm(x-A\b),toc
-2.0000 ans = 6.6135e-11
Elapsed time is 0.827066 seconds.

Como se ve, la utilización de ese código frente al procedimiento estándar de M ATLAB, para un sistema relativamente
grande, 4000  4000, es muy desfavorable en tiempo de cálculo. No así en la precisión obtenida.
Desde el punto de vista de la codificación del algoritmo, conviene mejorar dos aspectos:
No es realmente necesario intercambiar las filas una vez elegido el coeficiente pivote de cada etapa; basta con tener
constancia en cada momento dónde están las filas que se intercambian.
Tal como está estructurado el programa sólo se podría resolver un sistema (el definido por el b dado) y no, como es
lo más habitual, distintos sistemas con la misma matriz A y diversos términos independientes.
El primero se puede paliar mediante la introducción de un vector índice, IPIV, de dimensión el número de ecuaciones,
70 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

inicializado a la posición inicial en el sistema de cada una de las ecuaciones; es decir,


2 3
1
627
6 7
IPIV D 6 37
6:7
4 :: 5
n

Cuando haya que intercambiar dos filas en un etapa, no se hará intercambiando físicamente los coeficientes de esas
dos filas, sino las correspondientes de IPIV.
Si en una primera etapa hay que utilizar como pivote el de la cuarta fila, el vector índice después de esa etapa quedaría
2 3
4
627
637
6 7
IPIV D 6 1 7 :
6:7
4:5
48/128

:
Si al final de un proceso de resolución de unn sistema
de cinco ecuaciones con
cinco incógnitas, el vector puntero resultase
Si al final de un proceso de resolución de un sistema 5  52 3 puntero resultase
el vector
24 3
6247
6
6 27
7
D6
6577;
IPIVD
IPIV
6 55
4 7;
41 5 1
33
la matriz A 0 que se obtendría no resultaría ser estrictamente triangular superior.
0
la matriz ATendría la formanoque
que se obtendría sigue.ser estrictamente triangular superior. Tendría la forma que sigue.
resultaría

Para obtener Ax D b habría que aplicar esas mismas manipulaciones de filas a b, o tenerlo en cuenta.
 Para obtener Ax D b habría que aplicar esas mismas manipulaciones de filas a
Para evitar el segundo inconveniente habría que guardar adecuadamente la información que definen los multiplicado-
res asociadosb,a ocada
tenerlo
fila deen cuenta.
cada etapa. Los i 1 multiplicadores se pueden alojar en los lugares vacíos —o mejor dicho,
que se hacen cero— que provocan las transformaciones que propician: en la etapa i , debajo de la diagonal principal en
la columna i.
En el ejemplo, con esta idea, al final del proceso:
a b c 1 2 3
2 3
2 1 0 4
e f g 9 4 6 6 2 3 12 1 7
5

AD6 7
d

h i j 10 8 7 4 2 1=3 2 1=3 5 :
0 0 3=2 1=2

Los multiplicadores eran 2, 2, 1=3 y 3=2.


Verifiquemos con M ATLAB con las sencillas operaciones que indica el cuadro 3.3.

3.2.2 Número de operaciones del algoritmo


Dos de los factores más importantes que influyen en las prestaciones de un algoritmo son:
Su estabilidad numérica ante los diversos errores.
3.2 Métodos directos de resolución numérica. Eliminación de Gauss j 71

>> I=eye(4); L1=I; L2=I; L3=I;


>> L1(2:3,1)=[-2 2]; L2(3,2)=1/3; L3(4,3)=3/2; P=I([1 4 3 2],:);
>> U=[2 1 0 4;0 -3 -12 -1;0 0 2 1/3; 0 0 0 1/2];
>> L=L1*P*L2*L3; L*U, A
ans =
2 1 0 4
-4 -2 3 -7
4 1 -2 8
0 -3 -12 -1
A =
2 1 0 4
-4 -2 3 -7
4 1 -2 8
0 -3 -12 -1

Cuadro 3.3

La cantidad de tiempo necesaria para completar los cálculos y operaciones que conlleva.
Ambos factores dependen del número de operaciones aritméticas necesarias para la aplicación del algoritmo.
Los tiempos necesarios para realizar en un ordenador la multiplicación y la división de dos números son aproximada-
mente iguales y considerablemente mayores, en términos relativos, que los requeridos para realizar la suma o diferencia,
que también son muy semejantes entre sí.
La eliminación de Gauss para resolver un sistema de ecuaciones lineales, en la primera etapa, realiza las operaciones
que se representan simbólicamente en la figura 3.8.

           
      0 2  2 2 2
:::: :: :: :: : : :: :: ::
: : : : : ! :: :: : : :
      0 2  2 22
      0 2  2 22

Figura 3.8: Operaciones que se realizan en la primera etapa de la Eliminación de Gauss y coeficientes afectados

El símbolo 2 designa los coeficientes de la matriz que se ven afectados en esa etapa y que, en principio, son distintos
de cero.
Si en la etapa i se está transformando una matriz n  n, las operaciones que en ella se realizan son:

n i divisiones para el cálculo de los multiplicadores;


.n i /.n i C 1/ multiplicaciones y restas para modificar los coeficientes de la matriz por debajo de la fila i
que no están en la propia columna i .
En cada etapa se efectúan
.n i / C .n i /.n i C 1/ D .n i /.n i C 2/
multiplicaciones y divisiones y
.n i /.n i C 1/
sumas y restas.
En n 1 etapas de que consta el proceso, se harán el número de operación que indica la fórmula 3.2.
El comportamiento de esos valores para n grande tiende a
1 3
n :
3
El proceso de sustitución inversa requiere .n i / multiplicaciones y .n i 1/ sumas, para cada término del sumatorio,
y una resta y una división. El número total de operaciones de todo el proceso es
X
n 1
n2 C n
1C ..n i / C 1/ D multiplicaciones y divisiones
2
iD1
72 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

Multiplicaciones y divisiones:

X1
n X1
n X1
n X1
n
.n i/.n i C 2/ D .n2 C 2n/ 1 2.n C 1/ iC i2
i D1 i D1 iD1 iD1
.n 1/n
D .n2 C 2n/.n 1/ 2.n C 1/
2
.n
1/n.2n 1/
C
6
2n3 C 3n2 5n
D
6
Sumas y restas:

X1
n X1
n X1
n X1
n
.n i/.n i C 1/ D .n2 C n/ 1 .2n C 1/ iC i2
i D1 i D1 i D1 i D1
.n 1/n
D .n2 C n/.n 1/ .2n C 1/
2
.n 1/n.2n 1/
C
6
n3 n
D :
3
Fórmula 3.2

y
X
n 1
n2 n
..n i 1/ C 1/ D sumas y restas.
2
iD1
Contando la totalidad de la transformación de la matriz del sistema y la sustitución inversa, la eliminación de Gauss
requiere
2n3 C 3n2 5n n2 C n n3 C 2n2 n
C D multiplicaciones y divisiones
6 2 3
y
n3 n n2 n 2n3 C 3n2 5n
C D sumas y restas.
3 2 6
Para valores de n elevados, estas expresiones tienden a

1 3
n WD O.n3 =3/
3

lo que refleja la importante magnitud del número de operaciones.


Aunque la cantidad n3 =3 puede parecer muy grande, recordemos las fórmulas de Cramer para la solución de sistemas
de ecuaciones 2 3
a11    a1i 1 b1 a1iC1    a1n
6 a21    a2i 1 b2 a2iC1    a2n 7
det.Bi / 6 7
xi D ; donde Bi D 6 : :: :: :: :: 7 :
det.A/ 4 :: : : : : 5
an1    ani 1 bn ani C1    ann
Mediante estas fórmulas se requieren:
8
< .n C 1/Š sumas,
.n C 2/Š multiplicaciones y
:
n divisiones.
3.3 Condicionamiento de sistemas de ecuaciones lineales j 73

Para diez ecuaciones con diez incógnitas se requerirán:



740 operaciones utilizando eliminación de Gauss.
500.000.000 operaciones, aproximadamente, aplicando las fórmulas de Cramer.

3.2.3 Método de Gauss-Jordan


Es una extensión natural de la eliminación de Gauss para obtener A 1 . Consiste en hacer cero en cada columna de A
no sólo los coeficientes que están debajo de la diagonal principal sino también los de encima. Debe su nombre a Gauss
y a Wilhelm Jordan, Alemania, 1842-1899.

Jordan

Una etapa i de la eliminación de Gauss estaba caracterizada por la matriz

Li D I ˛i eiT ;

donde 2 3 2 3
0 0
6 7 6:7
6 :: 7 6 :: 7
6 : 7 6 7
6 i i 7 6 7
˛i D 6 ai C1 i =ai i 7 fila i C 1 y ei D 6 1 7 fila i :
6 7 6:7
6 :: 7 6:7
4 : 5 4:5
i
ani =aii i 0
En la etapa i de este método, la matriz de transformación de Gauss-Jordan es

Ti D I ˛i eiT ;

donde 2 3 2 3
i
a1i =aii i 0
6 7 6:7
6 :: 7 6 :: 7
6 : 7 6 7
6 7 6 7
˛i D 6 1=aii i 7 fila i y ei D 6 1 7 fila i :
6 7 6:7
6 :: 7 6:7
4 : 5 4:5
i
ani =aii i 0
Si se tiene en cuenta que A 0 D A y A n D I, se concluye que

Tn 1    T 2 T 1 A D I;

y por tanto que A 1 D T n 1    T 2 T 1 :


Las multiplicaciones y divisiones, y sumas y restas, son en ambos casos O.n3 =2/.

3.3 Condicionamiento de sistemas de ecuaciones lineales


En un sentido general se dice que un problema o un algoritmo está bien condicionado si pequeñas perturbaciones en los
parámetros que lo definen producen pequeños cambios en los resultados.
Consideremos el caso de una carga sujeta a una superficie firme mediante un cable o una barra de hierro.
74 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

Aumentando la carga en pequeñas cantidades el cable sufre unos pequeños estiramientos proporcionales a los in-
crementos de esa carga.
Alcanzado el umbral de la zona de fluencia del material del cable, incrementos muy pequeños de la carga suponen,
proporcionalmente, grandes estiramientos del cable.
Antes de este umbral, el problema estiramiento/carga se puede decir que está bien condicionado; en la zona de
fluencia el problema está mal condicionado.
El condicionamiento de un sistema de ecuaciones lineales Ax D b lo caracterizará la sensibilidad del vector solución
x a pequeños cambios, tanto en el término de la derecha, b, como en los coeficientes que definen la matriz A.
Como sabemos, el ordenador o máquina que resuelve Ax D b, al no trabajar más que con una precisión determinada,
resolverá una aproximación
.A C A/x D b C b:
Si el algoritmo utilizado es estable y el sistema también, el resultado obtenido debe ser muy parecido al real.
Si el sistema está mal condicionado, sin embargo, o el algoritmo no es numéricamente estable, la solución puede
diferir sustancialmente de la real.
Ejemplo 3.2 Consideremos los dos sistemas de ecuaciones lineales
    
8 5 x1 3
Ax D b ! D
4 10 x2 14
y     
b xO D bO ! 0;66 3;34 xO 1 4
A D :
1;99 10;01 xO 2 12
La solución de ambos es el vector Œ1; 1T .
Si introducimos una pequeña perturbación b D Œ 0,04; 0,06T en el término independiente del primer sistema,
su solución pasará a ser Œ0,993; 0,9968T . El cambio relativo en la norma euclídea del vector b es
q
kbk2 0;042 C 0;062
D p  0,0050:
kbk2 32 C 142
Por lo que respecta al vector solución, ese cambio relativo en la norma euclídea es
q
kxk2 .1 0;993/2 C .1 0;9968/2
D p  0;0054:
kxk2 12 C 12
Como se puede ver, un pequeño cambio en el vector b induce un cambio pequeño en el vector solución.
O su
Introduciendo el mismo cambio bO D Œ 0,04; 0,06T en el término independiente del segundo sistema, b,
O
solución pasa a ser Œ6; 0 . Es decir, un cambio relativo en la norma euclídea de b igual a
T

q
0;042 C 0;062
p D 0,0057;
42 C 122
produce un cambio en el vector solución igual a:
p
52 C 12
p D 3,6055:
12 C 12
Evidentemente, el segundo sistema es mucho más sensible a cambios en el término independiente que el primero como
se puede ver en la figura 3.9. A su izquierda se representa el primer sistema; el segundo a la derecha.
Las dos rectas que representan las ecuaciones del primer sistema se cortan nítidamente en el punto Œ1; 1T .
En el caso del segundo sistema, aun usando una resolución gráfica mayor, apenas se diferencian las dos rectas y
mucho menos dónde se cortan.
3.3 Condicionamiento de sistemas de ecuaciones lineales j 75

x2 x2

x1 x1

Figura 3.9

Estudiemos cómo cuantificar la sensibilidad de Ax D b a pequeñas modificaciones tanto en el término independiente


como en los coeficientes de la matriz A.
Analicemos en primer lugar el caso de una modificación b del término independiente. Veamos cómo se relaciona la
solución de
A.x C x/ D b C b
con la de
Ax D b:
Designemos por k  k cualquier norma vectorial y su norma matricial consistente correspondiente. De las igualdades

A.x C x/ D b C b y Ax D b;

se obtiene, restando y despejando x, que


1
x D A b:
De la definición de norma matricial consistente con una norma vectorial se tiene que
1
kxk  kA k kbk (3.1)

y que kbk  kAk kxk o, lo que es lo mismo, que

1 kAk
 : (3.2)
kxk kbk

Combinando (3.1) y (3.2) se deduce que el error relativo, kxk=kxk, de la solución del sistema Ax D b al modificar
el término independiente de b a b C b es

kxk 1 kbk
 kAk kA k :
kxk kbk

Definición 3.1 Sea k  k una norma matricial consistente con una norma vectorial. Asociado a esa norma, el número
de condición de una matriz invertible A, .A/, es:
1
.A/ D kAk kA k:

El número de condición de una matriz expresa lo cerca que esa matriz está de la singularidad

Las matrices con números de condición próximos a la unidad, se dicen bien condicionadas; las que tienen números de
condición altos, mal condicionadas.
76 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

Si los datos de un sistema Ax D b son exactos con la precisión de la máquina, el error relativo de la solución cumple
que
jjx  xjj
 .A/:
jjxjj
El concepto de número de condición de una matriz se generaliza a cualquier matriz A (no necesariamente cuadrada)
de rango completo mediante la expresión
.A/ D kAk kA Ž k;
donde A Ž es la matriz pseudoinversa de la matriz A.
El número de condición de una matriz A es un indicador del error de amplificación que produce en un vector x el
someterlo a la transformación que define dicha matriz A.
Concretamente, si la esfera unidad se somete a esa transformación, según se indica en la figura 3.10, el número de
condición 2 asociado a la norma euclídea será igual al cociente de las longitudes de los semiejes mayor y menor, 1 y
2 , del hiperelipsoide resultante de esa transformación.

σ2 σ1

x Ax
Figura 3.10

Estudiemos ahora la sensibilidad a pequeñas perturbaciones en los coeficientes de A. Comparemos las soluciones de

Ax D b y .A C A/.x C x/ D b:

La segunda igualdad, haciendo x D A 1


A.x C x/, despreciando el producto A  x, con Ax D b, queda
1
kxk  kA k kAk kxk:

Expresión que también se puede escribir como

kxk 1 kAk
 kA k kAk :
kxk kAk

Así pues el error relativo en la solución que resulta de perturbar ligeramente los coeficientes de la matriz del sistema
Ax D b está también acotado en términos del número de condición de la matriz A.
Teorema 3.7 Para toda matriz A de rango completo:
1. Su número de condición .A/  1.
2. .A/ D .A Ž /.
3. .˛A/ D .A/ para todo escalar ˛ ¤ 0.
 .A/
4. 2 .A/ D n , donde n y 1 son, respectivamente, los valores singulares mayor y menor de la matriz A.
1 .A/
axi ji .A/j
5. 2 .A/ D mK
mKıni ji .A/j
, si A es simétrica.
6. 2 .A A/ D 2 .A/.
T 2

7. Su número 2 .A/ D 1 si la matriz es la identidad o se trata de una matriz ortogonal.


8. Su número de condición 2 .A/ es invariante frente a transformaciones ortogonales.
3.4 Fuentes de errores en la eliminación de Gauss j 77

Los distintos números de condición de una matriz A 2 Rnn asociados con las normas matriciales más habituales
cumplen que:
2 .A/=n  1 .A/  n 2 .A/I
1 .A/=n  2 .A/  n 1 .A/I
1 .A/=n2  1 .A/  n2 1 .A/:
Volvamos al ejemplo que utilizábamos para concretar estos conceptos. La matriz
 
8 5
AD ;
4 10

cuya inversa es  
1 0;10 0;05
A D ;
0;04 0;08
tiene un número de condición 1 .A/ D kAk1 kA k1 D 15  0,14 D 2,1. El de
1

 
b 0,66 3,34
AD ;
1,99 10,01

cuya inversa es  
b 1 250,25 83,5
A D ;
49,75 16,5
b D kAk
es 1 .A/ b 1 kA b 1 k1 D 13,35  300 D 4.005: tres órdenes de magnitud superior.
Un error que se comete con frecuencia es asimilar el concepto de número de condición de una matriz con el de su
determinante y que, en ese sentido, a mayor determinante, mayor número de condición. Nada más lejos de la realidad.
Ejemplo 3.3 Sea A una matriz diagonal de orden 100 definida por

a11 D 1I ai i D 0,1 2  i  100:

De esta matriz, kAk2 D 1 y kA 1


k2 D 10. El número de condición 2 .A/ D 10. Por el contrario, su determinante es
det.A/ D 1  .0; 1/99 D 10 99 .
Ejemplo 3.4 Sea A una matriz bidiagonal y su inversa como siguen:
2 3 2 3
12 1 2 4    . 2/n 1
6 12 7 6 27
6 7 6 1 2 . 2/n 7
6 7 6 7
6 1 2 7 6 :: 7
AD6 6
7
:: :: 7 I A D 6
1
1 : 7:
6 : : 7 6 7
6 7 6 :: :: 7
4 1 25 4 : : 5
1 1

Sus diversas normas son kAk1 D kAk1 D 3 y kA 1 k1 D kA 1 k1 D D 1 C 2 C 4 C    C 2n 1


D 2n 1. Sus
números de condición, 1 .A/ D 1 .A/  3  2n . Su determinante, 1.

3.3.1 Cálculo del número de condición


Calcular directamente el número de condición de una matriz es una tarea numérica muy costosa: O.n3 /.
No obstante, como .A/ es un buen diagnóstico de las implicaciones que el uso de esa matriz puede comportar en un
proceso numérico, se puede realizar una estimación de su orden de magnitud.
Existen diversos buenos algoritmos para estimar el número de condición de una matriz en O.n2 / operaciones.
En M ATLAB lo estiman condest y rcond; lo calcula exactamente cond.
Siempre que se usa el operador “n”, M ATLAB usa rcond para comprobar la condición de la matriz afectada.
78 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

2.3 Sources of Error | 87


3.4 Fuentes de errores en la eliminación de Gauss
Solving the resulting equations
Conviene disponer de otros indicadores, además del número de condición de la matriz A, para conocer la fuente de los
posibles errores en la solución de un sistema de ecuaciones
x1 + x2 lineales
= 2 mediante la eliminación de Gauss.
Definición 3.2 Sea xa una solución aproximada del sistema
−0.0001x 2 = lineal Ax D b. El vector residuo es r D b
−0.0001 Axa . El
error hacia atrás de esa solución es la norma del vector residuo, kb Axa k, y el error hacia delante kx xa k.
yields
Ejemplo 3.5 Vamos analizar [x
the asolution estos ] = [1,haciendo
1 , x2errores 1]. uso del sistema
The backward error is the infinity norm of the vector
 x1 Cx2 D 2  
2 1;0001x1 C x2
1 D 2;00011 −1
b − Axa = −
2.0001 1.0001 1 3.0001
T
 los errores hacia
cuya solución es Œ1; 1 . Queremos calcular  delante
 atrás y hacia  
de la solución aproximada Œ 1; 3;0001> .
Se tiene que: 2 2.0001 −0.0001
= − = ,
Error hacia atrás: 2.0001
  2  0.0001

2 1 1 1
b Ax D
which is 0.0001. The forward error 2;0001
is the infinity1;0001
norm1of the difference
3;00001
     :
 2   
2;0001 0;0001
D1 −1 D2
x − xa = −
2;0001 2 = 0;0001 ,
1 3.0001 −2.0001
Si utilizamos la norma infinito, por ejemplo, este error es 0;0001.
Errorwhich
hacia delante
is 2.0001.       
1 1 2
x xa D D :
1 3;0001 2;0001
Figure 2.2 helps to clarify how there can be a small backward error and large forward
Con elerror
mismo tiposame
at the de norma,
time.este error
Even es 2;0001.
though the “approximate root’’ (−1, 3.0001) is relatively far
El número de condición 1 .A/ D 40:004;0001. La figura 3.11 aclara cómo puede haber un error pequeño hacia atrás
from the exact root (1, 1), it nearly lies on both lines.>This is possible because the two lines
y uno grande hacia delante al mismo tiempo. El punto Œ 1; 3;0001 está relativamente lejos de ıla solución, pero cerca
are almost
de ambas rectas, parallel.
pues casi If the lines are far from parallel, the forward and backward errors will
be closer in ı son paralelas. El error relativo hacia atrás del sistema Ax D b es krk kbk. El error relativo
magnitude.
hacia delante, kx xa k kxk.

y
3

2
x
–1 1

Figura
Figure 3.11: Representación
2.2 The geometry del sistema
behind lineal de2.11.
Example ecuaciones
Systemmal condicionado
(2.17) del ejemplo
is represented by 3.5
the lines x2 = 2 – x1 and x2 = 2.0001 – 1.0001x1 , which intersect at (1,1). The point
El factor de magnificación o amplificación
( –1, 3.0001) nearly delon
misses lying error
bothpara Ax
lines b es laa razón
D being
and de los
solution. Thedos:
differences
between the lines is exaggerated in the figure—they are actually much closer. kx xa k
error relativo hacia delante kxk
factor de amplificación del error D D krk
:
error realtivo hacia atrás
Denote the residual by r = b − Axa . The relative backward error ofkbk
system Ax = b
is defined
Para el sistema to becon normas infinito, el error relativo hacia atrás es
anterior,
0;0001 ||r||∞
 0;00005 , D 0;005 %
2;0001 ||b||∞

and the relative forward error is


3.6 Factorización LU de la matriz del sistema de ecuaciones j 79

y el error relativo hacia adelante


2;0001
D 2;0001  200 %:
1
El factor de amplificación del error es
kx xa k1
kxk1
krk1
D 2;0001=.0;0001=2;0001/ D 40004;0001:
kbk1

El número de condición de una matriz cuadrada es el factor de magnificación del error máximo, sobre todos los
posibles b, de resolver Ax D b.

3.5 Matlab y los sistemas de ecuaciones lineales


Repasemos un poco pues es casi trivial. Para resolver un sistema Ax D b sólo hay que hacer x=A\b. Con el ejemplo
que estamos manejando y una sesión interactiva de M ATLAB:

>> A=[2 1 0 4;-4 -2 3 -7;4 1 -2 8;0 -3 -12 -1]; b=[2;-9;2;2];


>> A\b
ans =
3.0000
4.0000
-1.0000
-2.0000

Podemos utilizar un script como el diseñado —guardado en Gauss.m—, con el fin de comprobar y experimentar:

>> Gauss(A,b)
ans =
3.0000
4.0000
-1.0000
-2.0000

Utilizando linsolve(), otra utilidad de M ATLAB muy interesante:

>> linsolve(A,b)
ans =
3.0000
4.0000
-1.0000
-2.0000

Las utilidades y funcionalidades que proporciona M ATLAB para resolver sistemas de ecuaciones lineales, o estudiarlos,
son múltiples. Sus orígenes fueron, precisamente, los de resolver y analizar este tipo de problemas. Las expuestas aquí
son sólo una mínima parte.

3.6 Factorización LU de la matriz del sistema de ecuaciones


El cálculo de la descomposición A D LU se conoce como factorización o descomposición LU .
Si se dispone de esta factorización, resolver Ax D b se convierte en dar solución a LU x D b a través de dos
sistemas de ecuaciones triangulares:

primero Ly D b y luego U x D y:

Esto es extremadamente útil cuando se requiere resolver sistemas de ecuaciones en los que la matriz A es siempre
la misma y sólo cambia es el término independiente.
80 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

3.6.1 La factorización LU y la eliminación de Gauss


Una forma de conseguir la factorización LU es la propia eliminación de Gauss. Mediante unas permutaciones y unas
transformaciones definidas por matrices elementales, ese método conseguía:

Ln 1P n 1    L1 P 1 A D U :

De este proceso, haciendo P D P n 1    P1 y


1
L D P.Ln 1P n 1    L2 P 2 L1 P 1 / ;

se puede comprobar (de forma no trivial aunque accesible) que se obtiene la factorización

PA D LU :

3.6.2 Existencia y unicidad de la factorización LU


Teorema 3.8 Sea A una matriz cuadrada regular de orden n. Existe una matriz de permutación P y dos matrices, una
triangular inferior y otra triangular superior, L y U , respectivamente, tales que
PA D LU :
La matriz L tiene todos los coeficientes de la diagonal principal igual a 1.

Lema 3.9 La matriz A admite una factorización LU si y sólo si se cumple que det.Ak / ¤ 0; k D 1; : : : ; n:

Teorema 3.10 Si una matriz regular A de orden n admite una factorización A D LU , donde L es una matriz triangular
inferior de coeficientes diagonales 1 y U una triangular superior, esa factorización es única.

3.6.3 Métodos numéricos directos para la obtención de factorizaciones LU


3.6.3.1 Método de Crout. Versión LU 1
Toma su nombre de Prescott Durand Crout, EE.UU., 1907-1984.

Crout

Supongamos que se desea obtener la factorización en la forma LU 1 , donde U 1 designa una matriz triangular superior
en la que todos los coeficientes de la diagonal principal son 1.
Si la matriz A es de orden 3 y se quiere factorizarla de la forma
2 3 2 32 3
a11 a12 a13 l11 0 0 1 u12 u13
4 a21 a22 a23 5 D 4 l21 l22 0 5 4 0 1 u23 5 ;
a31 a32 a33 l31 l32 l33 0 0 1

usando las reglas de multiplicación de matrices se obtendrá:

1a col. de L: l11 D a11


l21 D a21
l31 D a31 I
3.6 Factorización LU de la matriz del sistema de ecuaciones j 81


l u D a12
2a fila de U : 11 12 ! u1j D a1j = l11 ; j D 2; 3I
l11 u13 D a13

l u C l22 D a22
2a col. de L: 21 12 ! li 2 D ai 2 li1 u12 ; i D 2; 3I
l31 u12 C l32 D a32
2a fila de U : l21 u13 C l22 u23 D a23 ! u2j D .a2j l21 u1j /= l22 ; j D 3I
X
i 1
3a col. de L: l31 u13 C l32 u23 C l33 D a33 ! li 3 D ai 3 lij uj i ; i D 3:
j D1

En general, las fórmulas de recurrencia que se pueden deducir de este proceso, denominado factorización LU de
Crout, son:
li1 D ai1 ; i D 1; 2; : : : ; n;
u1j D a1j = l11 ; j > 1;
Pk 1
l i k D ai k pD1 lip upk ; i  k;
 Pk 1 ı
ukj D akj pD1 lkp upj lkk ; j > k:
El algoritmo de Crout para factorizar una matriz regular A nn
D LU 1 y su codificación en M ATLAB son estos.

 Factorización A D LU por algoritmo de Crout


for k D 1 to n
for i D k to n
kX1 function [L U]=LUCrout(a)
l.i; k/ a.i; k/ l.i; p/u.p; k/ % Factorización LU por Crout
n=size(a,1); L=zeros(n); U=eye(n);
pD1 for k=1:n
end i=k:n; L(i,k)=a(i,k)-L(i,1:k-1)*U(1:k-1,k);
for i D k C 1 0
to n 1 i=k+1:n; U(k,i)=(a(k,i)-L(k,1:k-1)*U(1:k-1,i))/L(k,k);
kX1  end
u.k; i / @a.k; i / l.k; p/u.p; i /A l.k; k/ end
pD1
end
end

Como apuntábamos en la eliminación de Gauss, se puede aprovechar la estructura de la matriz A para guardar en ella
las nuevas matrices L y U . El mismo código de M ATLAB quedaría así.

function [L U]=Crout_1(A)
% Factorización LU por Crout
n=size(A,1);
for k=1:n
i=k:n; A(i,k)=A(i,k)-A(i,1:k-1)*A(1:k-1,k);
i=k+1:n; A(k,i)=(A(k,i)-A(k,1:k-1)*A(1:k-1,i))/A(k,k);
end
L=tril(A,0); U=triu(A,1)+eye(n,n);
end

h 10 10 20 i h 10 ih1 1 2i
Con lo que ya sabemos, factoricemos la matriz 20 25 40 , cuyo resultado es LU D 20 5 1 0 . Numérica-
30 50 61 30 20 1 1
mente se puede conseguir en una sencilla sesión de trabajo de M ATLAB usando Crout_1() como indica el cuadro 3.4.

Ejemplo 3.6 Se desea factorizar en una máquina con cuatro dígitos significativos la matriz
2 3
0,001 2,000 3,000
A D 4 -1,000 3,712 4,623 5
-2,000 1,072 5,643

Las operaciones dentro de la máquina conllevan estos cálculos y aproximaciones:


l11 D 0,001I
82 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

>> A=[10 10 20;20 25 40;30 50 61];


>> [L,U]=Crout_1(A)
L =
10 0 0
20 5 0
30 20 1
U =
1 1 2
0 1 0
0 0 1

Cuadro 3.4

l21 D -1,000I
l31 D -2,000I
 
2,000
u12 D f l D 2000I
0,001
 
3,000
u13 D f l D 3000I
0,001
l22 D f l Œ3,712 C .1,000/.2000/ D 2004I
l32 D f l Œ1,072 C .2,000/.2000/ D 4001I
 
4,623 C .1,000/.3000/
u23 D f l D 1,500 y
2004
l33 D f lŒ5,643 C (2,000)(3,000) (4,001)(1,500) D 5,642:

¡Ojo! El cálculo de l33 conlleva la pérdida de tres dígitos por redondeo: el valor que debería dar es 5,922.

Pivotación
El ejemplo pone de manifiesto que, aunque se sepa que una matriz no es singular y que su factorización LU teóricamente
existe, los errores de redondeo que se pueden producir al trabajar en una máquina pueden dar al traste con el resultado.
Es aconsejable realizar pivotación pues.
Al final de un proceso con pivotación se obtendría

PA D LU

es decir, no la factorización LU de la matriz original sino de PA.


El esquema de algoritmo con pivotación y su traducción en código de M ATLAB son los del cuadro 3.5. Si se factoriza

 Factorización LU de Crout con pivot. parcial


for k D 1 to n
for i D k to n
kX1 function [L U p]=CroutP(a)
l.i; k/ a.i; k/ l.i; p/u.p; k/ % Factorización LU por Crout con pivotación
n=size(a,1); p=1:n;
pD1
for k=1:n
end i=k:n; a(i,k)=a(i,k)-a(i,1:k-1)*a(1:k-1,k);
Determinar índice p 2 fk; k C 1; : : : ; ng tal que [r,m]=max(abs(a(k:n,k))); m=m+k-1;
ja.p; i /j D mKaxij n ja.j; i /j. if a(m,k)==0, continue, end
Intercambiar filas p y k. if k~=m, a([k m],:)=a([m k],:); p([k m])=p([m k]); end
for i D k C 1 0 to n i=k+1:n; a(k,i)=(a(k,i)-a(k,1:k-1)*a(1:k-1,i))/a(k,k);
1 end
kX1 
L=tril(a,0); U=triu(a,1)+eye(n,n);
u.k; i / @ a.k; i / l.k; p/u.p; i /A l.k; k/ end
pD1
end
end

Cuadro 3.5
3.6 Factorización LU de la matriz del sistema de ecuaciones j 83

h 10 10 20 i
la matriz 20 25 40 con este algoritmo, al final de este proceso el vector IPVT./ que indica las pivotaciones realizadas
30 50 61
es Œ3, 2, 1 , como se ve en este cuadro.
T

>> A=[10 10 20;20 25 40;30 50 61];


>> [L U p]=CroutP(A)
L =
30.0000 0 0
20.0000 -8.3333 0
10.0000 -6.6667 0.2000
U =
1.0000 1.6667 2.0333
0 1.0000 0.0800
p =
3 2 1

La matriz que realmente se ha factorizado es


2 3 2 32 3
30 50 61 30 1 1;6667 2;0333
PA D 420 25 405 D 420 8;3333 54 1 0;08005 :
10 10 20 10 6;6667 0; 2 1

El algoritmo de Crout requiere O.n3 =3/ multiplicaciones/divisiones y sumas/restas para la factorización de la matriz.

3.6.3.2 Método de Crout. Versión L1 U


Si se quiere conseguir la factorización L1 U de una matriz 3  3,
2 3 2 32 3
a11 a12 a13 1 0 0 u11 u12 u13
4 a21 a22 a23 5 D 4 l21 1 0 5 4 0 u22 u23 5 ;
a31 a32 a33 l31 l32 1 0 0 u33

operando:
1a fila de U : u11 D a11
u12 D a12
u13 D a13 I )
l u D a21
1a col. de L: 21 11 ! li1 D ai1 =u11 ; i D 2; 3I
l31 u11 D a31
)
l u C u22 D a22
2a fila de U : 21 12 ! u2j D a2j l21 u1j ; j D 2; 3I
l21 u13 C u32 D a23
2a col. de L: l31 u12 C l32 u22 D a32 ! li 2 D .ai 2 li1 u12 /=u22 ; i D 3I
jX1
3a fila de U : l31 u13 C l32 u23 C u33 D a33 ! u3j D a3j l3i uij ; j D 3:
i D1
Las fórmulas de recurrencia que se pueden deducir de este proceso son:

u1j D a1j ; j D 1; 2; : : : ; n;
li1 D ai1 =u11 ; j > 1;
Pk 1
ukj D akj pD1 lkp upj ;  j  k;
Pk 1 ı
li k D ai k pD1 lip upk ukk ; i > k:

El algoritmo de Crout para factorizar —sin pivotación— una matriz regular A nn en la forma L1 U , su codificación
en M ATLAB y el resultado con la matriz precedente son los incluidos en el cuadro 3.6.
La versión en M ATLAB de ese algoritmo incorporando la pivotación es la del cuadro 3.7.
Si comparamos en una sesión de M ATLAB lo que se consigue con este último algoritmo y con los recursos del propio
software para lo mismo, lu(), se obtiene lo que se ve en el cuadro 3.8. Las respuestas son idénticas.
84 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

 Factorización L1 U por Crout sin pivotación


>> [L U]=Croutl1u(A)
for k D 1 to n L =
for j D k to n function [L,U]=Croutl1u(a) 1 0 0
kX1 % Factorización L1U por Crout 2 1 0
u.k; j / a.k; j / l.k; p/u.p; j / n=size(a,1); 3 4 1
pD1 for k=1:n-1 U =
end i=k+1:n; 10 10 20
a(i,k)=a(i,k)/a(k,k); 0 5 0
for i D k C 10to n 1 a(i,i)=a(i,i)-a(i,k)*a(k,i); 0 0 1
kX1  end >> L*U
l.i; k/ @a.i; k/ l.i; p/u.p; k/A u.k; k/ L=tril(a,-1)+eye(n,n); U=triu(a); ans =
pD1 end 10 10 20
end 20 25 40
30 50 61
end

Cuadro 3.6

function [L,U,P]=CroutP1(a)
% Factorización L1U por Crout con pivotación
n=size(a,1); p=1:n;
for k=1:n-1
[r,m]=max(abs(a(k:n,k)));
m=m+k-1;
if a(m,k)==0, continue, end
if k~=m, a([k m],:)=a([m k],:); p([k m])=p([m k]); end
i=k+1:n;
a(i,k)=a(i,k)/a(k,k); a(i,i)=a(i,i)-a(i,k)*a(k,i);
end
L=tril(a,-1)+eye(n,n); U=triu(a); P=eye(n); P=P(p,:);
end

Cuadro 3.7

>> [L,U,P] = lu(A)


L = 1.0000 0 0
>> [L U P]=CroutP1(A)
0.6667 1.0000 0
L = 1.0000 0 0
0.6667 1.0000 0 0.3333 0.8000 1.0000
0.3333 0.8000 1.0000 U = 30.0000 50.0000 61.0000
U = 30.0000 50.0000 61.0000 0 -8.3333 -0.6667
0 -8.3333 -0.6667 0 0 0.2000
0 0 0.2000 P = 0 0 1
P = 0 0 1
0 1 0 0 1 0
1 0 0 >> P*L*U 1 0 0
ans = 10 10 20 >> P*L*U
20 25 40 ans =10 10 20
30 50 61 20 25 40
>> norm(P*A-L*U)
ans = 0
30 50 61
>> norm(P*A-L*U)
ans = 0

Cuadro 3.8
3.7 Solución de sistemas de ecuaciones lineales modificados j 85

3.6.4 Obtención de la matriz inversa a partir de la factorización LU


Si se designa por X la matriz inversa de A 2 Rnn , los n vectores columna de X son los vectores solución de los
sistemas Axi D ei , i D 1; : : : ; n.
Si suponemos que tenemos la factorización PA D LU de una matriz A, donde P es una matriz de permutación, para
obtener su inversa habría que resolver los 2n sistemas de ecuaciones siguientes:
Lyi D Pei ; U xi D yi ; i D 1; : : : ; n:
Es decir 2n sistemas de ecuaciones lineales con matrices triangulares en los que sólo cambian los términos independien-
tes. Un programa codificado para hacerlo en M ATLAB sería el del cuadro 3.9. El resultado de una sesión de M ATLAB

function InvA = InvLU_1(A)


% Inversa de A a partir de su fact. LU
[m n]=size(A); InvA=zeros(m); b=zeros(m,1);
[L U P] = lu(A);
for i=1:m
b(i) = 1;
InvA(:,i) = U\(L\(P*b)); b(i) = 0;
end
end

Cuadro 3.9

para ponerlo a priueba con diversos sistemas de tamaño creciente se lista en el cuadro 3.10. En él se ven los tiempos de
ese código y el que utiliza el propio M ATLAB, así como la precisión de los resultados obtenidos en ambos casos.

>> A=rand(20);
>> max(max(A*InvLU_1(A)-eye(20)))
ans = 2.109423746787797e-015
>> A=rand(1000);
>> tic, max(max(A*InvLU_1(A)-eye(1000))), toc
ans = 5.251354906476990e-013
Elapsed time is 4.017733 seconds.
>> tic, max(max(A*inv(A)-eye(1000))), toc
ans = 5.207778652760453e-013
Elapsed time is 0.447034 seconds.
>> tic, max(max(A*(A\eye(1000))-eye(1000))), toc
ans = 3.934630399271555e-013
Elapsed time is 0.393214 seconds.

Cuadro 3.10

3.6.5 Matlab y la factorización LU


Para resolver Ax D b con M ATLAB, usando la factorización LU de A, se utiliza [L U P]=lu(A) y luego se obtiene
la solución del sistema haciendo x=U\(L\(P*b)).
Apliquemos esta idea a uno de los ejemplos que acabamos de usar y hagamos unas comprobaciones como se indica
en el cuadro 3.11. Se pueden reproducir estos resultados copiando y pegando en el escritorio de M ATLAB. ¿Qué pasa?

3.7 Solución de sistemas de ecuaciones lineales modificados


Si en Ax D b se modifica el vector b pero no A, no es necesario rehacer la factorización LU para resolver el nuevo
sistema.
Si se modifica ligeramente la matriz A, por ejemplo el coeficiente aj k , con lo que A D A ˛ej ekT , puede que no sea
necesario tampoco recalcular la factorización en su totalidad.
La fórmula de Sherman-Morrison-Woodbury proporciona la inversa de una matriz en términos de los vectores de
una modificación a la misma de rango uno del tipo uvT :
 1  1 T
A uvT D A 1 C A 1 u 1 vT A 1 u v A 1:
86 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

>> A=[2 1 0 4;0 -3 -12 -1;0 -1 -2 0;0 0 3 1];


>> b=[2;2;-2;-5]; >> x=U\(L\(P*b))
>> [L U P]=lu(A) x = 3.0000
L = 1.0000 0 0 0 4.0000 tic % Tiempos LU: Otra forma
0 1.0000 0 0 -1.0000 [L U P] = lu(A);
0 0 1.0000 0 -2.0000 A=rand(200,200); for i=1:1000
0 0.3333 0.6667 1.0000 tic % Ensayo tiempos LU b=rand(200,1);
U = 2.0000 1.0000 0 4.0000 for i=1:1000 x=U\(L\(P*b));
0 -3.0000 -12.0000 -1.0000 b=rand(200,1); end
0 0 3.0000 1.0000 x=A\b; toc
0 0 0 -0.3333 end Elapsed time is 0.089372 seconds
P = 1 0 0 0 toc
0 1 0 0 Elapsed time is 0.828548 seconds
0 0 0 1

Cuadro 3.11

Para resolver el nuevo sistema .A uvT /x D b, usando la fórmula, se obtendría


 1  1
xD A uvT b D A 1 b C A 1 u 1 vT A 1 u vT A 1
b;
operación que podría hacerse en tres pasos sucesivos:
1. Resolviendo Az D u y obteniendo así z.
2. Resolviendo Ay D b para obtener y.
3. Calculando la soluciónx D y C ..vT y/=.1 vT z//z.
Como A ya está factorizada, este procedimiento requiere solo sustituciones inversas y productos interiores; es decir
O.n2 / operaciones frente a las O.n3 =3/ de la factorización.
Ejemplo 3.7 Consideremos la matriz
2 3 2 32 3
2 4 2 100 24 2
AD4 4 9 35 D 4 2 1 0540 1 15
2 3 7
™™
111 00 4

L U
a la que se le efectúa una modificación consistente en cambiar el coeficiente a32 de -3 a -1. En este caso
2 3 2 3
0 0
uD 4 0 5 y v D 15;
4
2 0

con lo que la matriz resultante es A uvT . Con la factorización LU de A, se resuelve Az D u y Ay D b, dando


2 3 2 3
3=2 1
z D 4 1=2 5 y y D 4 2 5 :
1=2 2
Por último,
3 2 3 2
2 3
1T 3=2 7
v y 2
xDyC z D 4 25 C 4 1=2 5 D 4 4 5 :
1 vT z 1 1=2
2 1=2 0

3.8 Refinamiento iterativo


Fue formulado en la década de 1960 por James Hardy Wilkinson, del National Physical Laboratory. Supongamos que
se tiene una solución aproximada x0 del sistema de ecuaciones lineales Ax D b y que el residuo r1 D Ax0 b no es
cero. Resolvamos exactamente
Az1 D r1
3.9 Sistemas de ecuaciones lineales con matrices simétricas j 87

y hagamos y D x0 C z1 como una corrección o mejora de la solución. Se cumple que

Ay D A.x0 C z1 /
D Ax0 C Az1
D Ax0 r1
D b:

La solución x0 C z1 sería la exacta del sistema original. Aunque esa solución exacta no lo fuera del todo, el vector y sí
sería mejor que x0 .
Si el nuevo vector de residuos r2 no cumpliese unos requisitos de precisión, se puede resolver el sistema Az2 D r2
y hacer
y D x1 C z2 ;
lo que hará que la solución se aproxime un poco más a x que x0 .
Si es necesario, se calcula un nuevo vector de residuos, r3 y se continua el proceso hasta que la solución se aproxime
tanto como se quiera a la esperada. El script de M ATLAB del cuadro 3.12 lleva a cabo este proceso a mano. El vector

% Script_Ref.m - Script de Refinamiento Iterativo


n=6; format short
A=hilb(n); % Matriz de Hilbert (muy mal condicionada)
b=A*ones(n,1); pause % Elegimos término independiente para sol. x=1.
x=A\b % Solución, evidentemente, =1
B=A; B(6,1)=B(6,1)+1.e-06; % En B está A perturbada un poquito
x1=B\b, pause % Veamos la nueva solución; difiere bastante

xex=ones(n,1); % Calculemos cuánto


norm(xex-x1,2) % Como magnitud calculemos la norma 2 de la desviaci.
norm(xex-x,2), pause

res=b-A*x1; % Hagamos una iteración del Refinamiento iterativo


x1=x1+B\res
norm(xex-x1,2), pause

res=b-A*x1; format long % Hagamos otra iteración del Refinamiento iterativo


x1=x1+B\res
norm(xex-x1,2), pause

res=b-A*x1; % Hagamos otra iteración del Refinamiento iterativo


x1=x1+B\res, norm(xex-x1,2)

Cuadro 3.12

de residuos debe calcularse con más precisión que la usada para calcular la solución inicial. Un pequeño código para
probar estas ideas y una sesión de M ATLAB se indican en el cuadro 3.13.

function x = Iter_ref(A,b) >> A=hilb(6); x=ones(6,1); b=A*x;


%Refinamiento iterativo con 4 iteraciones. >> x=Iter_ref(A,b);
[~,n]=size(A); x=inv(A)*b+1e-3*randn(n,1); % ¡OJO! con esto ans = 0.0019
[L,U]=lu(A); ans = 7.7568e-10
for k = 1:4, r = A*x-b; z = -U\(L\r); norm(z), x = x+z; end ans = 7.0729e-10
end ans = 7.0729e-10

Cuadro 3.13

3.9 Sistemas de ecuaciones lineales con matrices simétricas


3.9.1 Factorización LDLT
Teorema 3.11 Si A admite una factorización LDM T y es simétrica, L D M .
88 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

Lema 3.12 Si todas las submatrices principales de una matriz A 2 Rnn son regulares, existen dos matrices triangula-
res inferiores unitarias únicas, L y M , y otra diagonal también única, D D diag.d1 ; : : : ; dn /, tales que A D LDM T .
Para derivar unas fórmulas de recurrencia para obtener la factorización LDLT vamos a partir de un ejemplo simbólico
de orden 3, 2 3 2 32 32 3
a11 a21 a31 1 0 0 d11 1 l21 l31
4 a21 a22 a32 5 D 4 l21 1 0 5 4 d22 5 4 0 1 l32 5 :
a31 a32 a33 l31 l32 1 d33 0 0 1
Operando de acuerdo con las reglas de multiplicación matricial y ordenando convenientemente los resultados se llega a
que
a11 D d11
a21 D l21 d11
a31 D l31 d11
2
a22 D l21 d11 C d22
a32 D l31 l21 d11 C l32 d22
2 2
a33 D l31 d11 C l32 d22 C d33 :
Generalizando, se formula el algoritmo del cuadro 3.14. Este algoritmo requiere O.n3 =6/ multiplicaciones y divisiones
y sumas y restas. Si no se efectúan pivotaciones, el procedimiento numérico puede fallar por la posible presencia de
coeficientes pivote muy pequeños, o por la acumulación de errores de redondeo o de cancelación importantes.

 Factorización A D LDLT sin pivotación


for k D 1 to n
kX1
d.k/ a.k; k/ a2 .k; p/d.p/
pD1
if d.k/ D 0 then stop
for i D k C 1 0
to n 1
kX1 
a.i; k/ @a.i; k/ a.i; p/a.k; p/d.p/A d.k/
pD1
end
end

Cuadro 3.14

3.9.2 Factorización de Cholesky


Está pensada para matrices definidas positivas. Una matriz es definida positiva si para todo x ¤ 0 se cumple que
x TAx > 0. Todos sus valores propios son positivos.
Las matrices simétricas definidas positivas admiten la descomposición

A D GT G;

donde G es una matriz triangular superior con todos sus coeficientes de la diagonal principal positivos. Estas matrices
se presentan muy frecuentemente en
Ajuste de funciones por mínimos cuadrados.
Análisis de estructuras mecánicas.
Problemas relacionados con el análisis de sistemas eléctricos de generación y transporte de energía.
En muchos procedimientos de optimización lineal y no lineal, etc.
En general, en todas aquellas aplicaciones donde al modelizar un sistema la expresión x T Ax mide la energía presente,
o disponible, o cualquier otra magnitud física que sólo admite cantidades positivas en un entorno determinado.
3.9 Sistemas de ecuaciones lineales con matrices simétricas j 89

Lema 3.13 Las submatrices principales de una matriz definida positiva son definidas positivas.

Teorema 3.14 Si A es una matriz definida positiva de orden n, tiene una descomposición de la forma LDM T , siendo
todos los coeficientes de la matriz diagonal D positivos.

Teorema 3.15 Si A es una matriz simétrica definida positiva de orden n, existe una única matriz triangular superior,
G , con todos sus coeficientes diagonales positivos, tal que A D G T G .
Esta factorización fue formulada por André Louis Cholesky, Francia, 1875-1918, durante su estancia como coman-
dante del ejército francés en la ocupación internacional de Creta entre 1906 y 1909.

Cholesky

Procedamos a simular el algoritmo con la descomposición simbólica de una matriz 3  3. Si se desea obtener la
factorización
2 3 2 32 3
a11 a12 a13 g11 0 0 g11 g12 g13
4 a12 a22 a23 5 D 4 g12 g22 0 5 4 0 g22 g23 5 ;
a13 a23 a33 g13 g23 g33 0 0 g33
operando de acuerdo con las reglas de multiplicación matricial se obtiene lo que sigue.

2
a11 D g11
a12 D g11 g12
a13 D g11 g13
2 2
a22 D g12 C g22
a23 D g12 g13 C g22 g23
2 2 2
a33 D g13 C g23 C g33 :

Generalizando se llega a formular el algoritmo y su traducción a código de M ATLAB del cuadro 3.15. El algoritmo

 Factorización de Cholesky A D G T G
for i D 1 to n s function G=Chols_1(A)
iX1 % Factorización de Cholesky
g.i; i / a.i; i / g 2 .k; i/ n=size(A,1);
for i=1:n, j=i+1:n;
kD1
A(i,i)=sqrt(A(i,i));
for j D i C 1 to
0n 1 A(i,j)=A(i,j)/A(i,i);
iX1  A(j,j)=A(j,j)-A(i,j)’*A(i,j);
g.i; j / @a.i; j / g.k; i /g.k; j /A g.i; i / end
kD1 G=triu(A);
end end
end

Cuadro 3.15

requiere O.n3 =6/ operaciones de multiplicación+división y de suma+resta. Con él y ese código, la factorización de una
matriz A dada y sus resultados son los del cuadro 3.16.
90 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

>> A=[5 1 -2 0;1 2 0 0;-2 0 4 1;0 0 1 3];


>> G=Chols_1(A)
G =
2.2361 0.4472 -0.8944 0
0 1.3416 0.2981 0
0 0 1.7638 0.5669
2 3 0 0 0 1.6366
5 1 20 >> G’*G
6 1 2 0 07 en M ATLAB ans =
AD4
4 15
! 5.0000 1.0000 -2.0000 0
2 0 1.0000 2.0000 0 0
0 0 13 -2.0000 0 4.0000 1.0000
0 0 1.0000 3.0000
>> G=chol(A)
G =
2.2361 0.4472 -0.8944 0
0 1.3416 0.2981 0
0 0 1.7638 0.5669
0 0 0 1.6366

Cuadro 3.16

3.9.3 Matlab y la factorización de Cholesky


Para resolver utilizando la factorización de Cholesky un sistema lineal de ecuaciones Ax D b, dentro de M ATLAB, hay
que usar la instrucción G=chol(A).
Teniendo en cuenta que lo que se lleva a cabo es la factorización A D G T G , la solución del sistema correspondiente
se puede obtener haciendo x=G\(G’\b).
Para utilizar esta operación en una sesión interactiva de M ATLAB con un ejemplo de los que estamos manejando,
habría que hacer algo semejante a lo que se presenta en el cuadro 3.17.

>> A=[5 1 -2 0;1 2 0 0;-2 0 4 1;0 0 1 3];


>> b=[1;5;14;15];
>> G=chol(A)
G =
2.2361 0.4472 -0.8944 0
0 1.3416 0.2981 0
0 0 1.7638 0.5669
0 0 0 1.6366

>> x=G\(G’\b)
x =
1.0000
2.0000
3.0000
4.0000

Cuadro 3.17

3.9.4 Matrices simétricas semidefinidas positivas


Una matriz A se dice semidefinida positiva, si para todo x ¤ 0, x T Ax  0.
Teorema 3.16 Si A 2 Rnn es simétrica semidefinida positiva se cumple que
jaij j  .ai i C ajj /=2
p
jaij j  ai i ajj .i ¤ j /
mKax jaij j D mKax ai i
i;j i
ai i D 0 ) aij D aj i D 0; j D 1; : : : ; n:

Si el algoritmo de Cholesky se aplica a una matriz semidefinida positiva y en una de sus etapas el coeficiente akk es
cero, este teorema garantiza que aj k D 0; j D k; : : : n, por lo que no habría que hacer nada más en la columna k. En la
práctica, los errores de redondeo internos impiden los ceros exactos por lo que se recurre a la pivotación.
3.9 Sistemas de ecuaciones lineales con matrices simétricas j 91

3.9.5 Pivotación
Para mantener la simetría de la matriz correspondiente las pivotaciones han de ser simétricas: si se intercambian dos
filas también hay que intercambiar las columnas simétricas: A PAP T . La pivotación en Cholesky se lleva adelante
así:
En cada etapa k del proceso se determina el coeficiente de mayor valor de la diagonal principal,
mKaxkj n ajj :
Si no es cero se intercambian las filas/columnas p y k, siempre y cuando k ¤ p;
si es cero, el resto de la matriz por factorizar sería nula y no se haría nada más, o se emitiría un mensaje de
alerta.
El algoritmo de Cholesky con pivotación para matrices semidefinidas positivas es el del cuadro 3.18. En M ATLAB y con
un ejemplo se obtiene lo que indica el cuadro 3.19.

 Factorización de Cholesky A D G T G con pivotación


for i D 1 to n
Determinar índice p 2 fi; i C 1; ng tal que ja.p; p/j D mKaxij n fja.j; j /jg
if a.p; p/ > 0
Intercambiar
vfilas/columnas p y i .
u
u iX 1
g.i; i / ta.i; i / g 2 .k; i /
kD1
for j D i C 1 to
0n 1
iX1 
g.i; j / @a.i; j / g.k; i /g.k; j /A g.i; i /
kD1
end
end
end

Cuadro 3.18

3.9.6 Matrices simétricas indefinidas


Una matriz A se dice indefinida si para algunos vectores x ¤ 0 la forma cuadrática x T Ax es positiva y para otros
negativa. Para factorizar este tipo de matrices se usan pivotaciones por bloques en la diagonal principal

PAP T D LBLT

donde L es triangular inferior unitaria y B diagonal en bloques 1  1 ó 2  2.


La explicación de la mecánica de estos métodos y en qué son mejores unos u otros necesita bastante extensión y
muchos tecnicismos de análisis numérico (ver de la Fuente [1998]), por lo que simplemente apuntamos aquí los más
conocidos para realizarlas. Se citan en la tabla del cuadro 3.20 (las matrices T son tridiagonales).

Método Estrategia Operaciones


T T
Parlett y Reid PAP D LT L O.n3 =3/
Aasen PAP T D LT LT O.n3 =6/
Bunch y Parlett PAP T D LBLT O.n3 =6/ C O.n3 =6/ comparaciones
Bunch y Kaufman PAP T D LBLT O.n3 =6/ C .n2 1/ comparaciones

Cuadro 3.20

De esos algoritmos, el más significado es el de James R. Bunch y Linda Kaufman, 1977. En alguna de sus variantes
es el mayoritariamente presente en los códigos profesionales y comerciales para factorizar matrices simétricas. Una
92 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución

function [R, P, I] = Chol_p(A, pivot)


%Chol_p Cholesky factorization with pivoting of a pos. semidefinite matrix.
% [R, P] = Chol_p(A) returns R and a permutation matrix P such that
% R’*R = P’*A*P. Only the upper triangular part of A is used.
% [R, P, I] = Chol_p(A) returns in addition the index I of the last
% positive diagonal element of R. The first I rows of R contain
% the Cholesky factor of A.
% [R, I] = Chol_p(A, 0) forces P = EYE(SIZE(A)), and therefore produces
% the same output as R = CHOL(A) when A is positive definite (to
>> A=[5 1 -2 0;1 2 0 0;-2 0 4 1;0 0 1 3];
% within roundoff).
>> b=[1;5;14;15];
% Reference: G.H. Golub and C.F. Van Loan, Matrix Computations, Second
>> G=chol(A)
% Edition, Johns Hopkins University Press, Baltimore, Maryland, 1989.
G =
if nargin == 2, piv = pivot; else piv = 1; end
2.2361 0.4472 -0.8944 0
[~,n] = size(A); pp = 1:n; I = [];
0 1.3416 0.2981 0
for k = 1:n
0 0 1.7638 0.5669
if piv, d = diag(A); [big, m] = max( d(k:n) ); m = m+k-1;
0 0 0 1.6366
else big = A(k,k); m = k;
end
>> [R,G1]=Chol_p(A)
if big < 0, I = k; break, end
R =
% Symmetric row/column permutations.
2.2361 -0.8944 0 0.4472
if m ~= k
0 1.7889 0.5590 0.2236
A(:,[k m]) = A(:,[m k]); A([k m],:) = A([m k],:); pp([k m]) = pp([m k]);
0 0 1.6394 -0.0762
end
0 0 0 1.3207
if big == 0
G1 =
if norm(A(k+1:n,k)) ~= 0, I = k; break
1 0 0 0
else continue
0 0 0 1
end
0 1 0 0
end
0 0 1 0
A(k,k) = sqrt(A(k,k));
>> G1’\(R\(R’\(G1\b)))
if k == n, break, end
ans =
A(k, k+1:n) = A(k, k+1:n) / A(k,k);
1.0000
2.0000
% For simplicity update the whole of the remaining submatrix (rather
3.0000
% than just the upper triangle).
4.0000
j = k+1:n; A(j,j) = A(j,j) - A(k,j)’*A(k,j);
end
R = triu(A);
if I > 0
if nargout < 3, error(’Matrix must be positive semidefinite.’), end
R = R(1:I-1,:);
end
if piv == 0, P = I; else P = eye(n); P = P(:,pp); end
end

Cuadro 3.19

codificación en M ATLAB se puede ver en el cuadro 3.21 de la página 93. El parámetro rho que devuelve la rutina es el
factor de crecimiento máximo de los pivotes a lo largo del proceso. El código trata de minimizarlo.
Con una matriz de Hankel, Hermann Hankel, Alemania, 1839-1873, ideal para probar este tipo de algoritmos, funciona
como se puede ver en el cuadro 3.22 de la página 93.

Referencias, fuentes y lecturas complementarias


Las referencias básicas de lo presentado en este capítulo son Burden y Faires [2011]; Eldén et al. [2004]; Ciarlet [1988];
Forsythe, Malcolm y Moler [1977]; Golub y Van Loan [2013]; Heath [2002]; Lascaux y Théodor [1986]; Sauer [2012];
Stewart [1973]; Stoer y Bulirsch [1980]; Strang [1976] y Wilkinson [1965].
Todos los programas de ordenador, salvo el último, son del autor; están basados en los correspondientes algoritmos y
en apreciaciones obtenidas de Internet. El que plasma el de Bunch y Kaufman sigue el programa SSIFA de Dongarra,
Bunch, Moler y Stewart [1979]. El relativo a la descomposición en valores singulares de una matriz está basado en el
de Forsythe, Malcolm y Moler [1977] y en el de Press, Flannery, Teukolsky y Vetterling [1986]. Otros libros donde
se pueden encontrar programas parecidos son: Atkinson, Harley y Hudson [1989]; Forsythe, Malcolm y Moler [1977];
Hager [1988]; Lascaux y Théodor [1986]; Lawson y Hanson [1974] y [1995]; Longley [1984]; Quarteroni et al. [2000]
y Press, Flannery, Teukolsky y Vetterling [1986]. Las versiones en F ORTRAN de casi todos los programas están en de la
Fuente [1998]. Algunas referencias interesante de los comienzos históricos de los asuntos estudiados en este capítulo se
pueden encontrar en Longley [1984] y Schrijver [1986].
3.9 Sistemas de ecuaciones lineales con matrices simétricas j 93

function [L,D,P,rho] = Diagpiv_1(A)


%DIAGPIV Factorización de Pivotación diagonal con pivotación parcial.
% Matriz de entrada, A (simétrica). Matrices de salida: permutación P,
% triangular inferior unitaria L, D matriz diagonal en bloques 1x1 o 2x2.
% P*A*P’ = L*D*L’.
% Ref. J.R. Bunch and L. Kaufman, Some stable methods for calculating
% inertia and solving symmetric linear systems, Math. Comp. 1977.
if norm(triu(A,1)’-tril(A,-1),1),error(’A no simétrica’),end if s == 1 % Bloque diagonal 1x1
n = max(size(A)); k = 1; pp = 1:n; D(k,k) = A(k,k); i = k+1:n;
D = eye(n); L = eye(n); A(i,k) = A(i,k)/A(k,k);
L(i,k) = A(i,k);
normA = norm(A(:),inf); rho = normA;
A(i,i) = A(i,i) - A(i,k) * A(k,i);
alpha = (1 + sqrt(17))/8; elseif s == 2 % Bloque diagonal 2x2
while k < n E = A(k:k+1,k:k+1);
[lambda,r] = max( abs(A(k+1:n,k)) ); D(k:k+1,k:k+1) = E;
r = r(1) + k; C = A(k+2:n,k:k+1);
if lambda > 0 temp = C/E;
L(k+2:n,k:k+1) = temp;
swap = 0;
A(k+2:n,k+2:n) = A(k+2:n,k+2:n) - temp*C’; Bunch
if abs(A(k,k))>=alpha*lambda
end
s = 1; if k+s <= n
else rho = max(rho,max(max(abs(A(k+s:n,k+s:n)))));
temp = A(k:n,r); temp(r-k+1) = 0; end
sigma = norm(temp,inf); else % Nada, elemento en diagonal 0
if alpha*lambda^2 <= abs(A(k,k))*sigma s = 1; D(k,k) = A(k,k);
s = 1; end
k = k + s;
elseif abs(A(r,r)) >= alpha*sigma
if k == n, D(n,n) = A(n,n); break, end
swap = 1; m1 = k; m2 = r; s = 1; end
else if nargout>=3, P = eye(n); P = P(pp,:); end
swap = 1; m1 = k+1; m2 = r; s = 2; rho = rho/normA;
end end
end Kaufman
% -----
if swap
A( [m1, m2],: ) = A( [m2, m1],: ); A( :,[m1, m2] ) = A( :,[m2, m1] );
L( [m1, m2],: ) = L( [m2, m1],: ); L( :,[m1, m2] ) = L( :,[m2, m1] );
pp( [m1, m2] ) = pp( [m2, m1] );
end

Cuadro 3.21: Algoritmo de Bunch y Kaufman

>> A = gallery(’ris’,6)
A =
0.0909 0.1111 0.1429 0.2000 0.3333 1.0000
0.1111 0.1429 0.2000 0.3333 1.0000 -1.0000
0.1429 0.2000 0.3333 1.0000 -1.0000 -0.3333
0.2000 0.3333 1.0000 -1.0000 -0.3333 -0.2000
0.3333 1.0000 -1.0000 -0.3333 -0.2000 -0.1429
1.0000 -1.0000 -0.3333 -0.2000 -0.1429 -0.1111
>> cond(A)
ans = 2.2185
>> [L D P rho]=Diagpiv_1(A)
L =
1.0000 0 0 0 0 0
0 1.0000 0 0 0 0 >> eig(A)
-0.1760 0.2160 1.0000 0 0 0 ans =
-0.3143 0.1714 -1.1905 1.0000 0 0 -1.5708
-0.1048 0.3429 0.2646 -0.6667 1.0000 0 -1.5705
-0.9778 0.2000 -0.6173 0.6222 0 1.0000
-1.4438
Hankel
D =
0.0909 1.0000 0 0 0 0 0.7080
1.0000 -0.1111 0 0 0 0 1.5622
0 0 -0.9216 0 0 0 1.5708
0 0 0 1.7415 0 0
0 0 0 0 -0.8256 1.9264
0 0 0 0 1.9264 0.1284
P =
1 0 0 0 0 0
0 0 0 0 0 1
0 0 0 1 0 0
0 0 1 0 0 0
0 0 0 0 1 0
0 1 0 0 0 0
rho = 1.9264
>> max(max(L*D*L’-P*A*P’))
ans = 1.665334536937735e-016

Cuadro 3.22
94 j Capítulo 3. Sistemas de ecuaciones lineales. Métodos directos de resolución
Capítulo 4

Mínimos cuadrados lineales

Contenido
4.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.2 Principios teóricos de la resolución del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.2.1 Sistemas de ecuaciones lineales incompatibles. Ecuaciones normales . . . . . . . . . . . . . 100
4.2.2 Sistemas de ecuaciones lineales indeterminados . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.3 Resolución numérica del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.3.1 Método de Gram-Schmidt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.3.2 Método de Gram-Schmidt modificado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.3.3 Factorización QR de la matriz del sistema de ecuaciones lineales . . . . . . . . . . . . . . . 106
4.3.4 Descomposición en valores singulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.3.5 Comparación de los diversos métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.4 Matlab y el problema de mínimos cuadrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

4.1 Introducción

M UCHOS modelos matemáticos que usan técnicas de estimación, regresión y optimización se han convertido en
herramientas fundamentales de la ciencia, la ingeniería, el marketing y otras disciplinas para ayudar a la toma de
decisiones y el análisis.
Para dotarse de datos a gran escala o conocer y controlar en tiempo real el estado y funcionamiento de diversos sistemas
de operación, control o predicción, del tipo que sean, es necesario primero tomar medidas fielmente de los mismos y
posteriormente actuar a partir de determinados modelos o estimadores.
Cualquier medida siempre está sujeta a errores, por pequeños que sean estos, por el desajuste físico de la calibración
del aparato que la realiza, su propia imperfección, las condiciones ambientales, las vibraciones, el envejecimiento de la
maquinaria, etc. En el caso de datos sociales, por la falta de homogeneidad de la muestra, dispersión de la población,
circunstancias de quiénes las toman, etc.
Par mitigar el efecto de esos errores en los datos, aislarlos, identificarlos y filtrarlos se toma un número de medidas de
los parámetros que definen un sistema bastante mayor del estrictamente necesario –redundante–.
La redundancia de medidas conduce normalmente, en los modelos matemáticos que determinan cómo se relacionan
los parámetros y las variables de funcionamiento de un sistema, a sistemas de ecuaciones incompatibles con muchas
más ecuaciones que incógnitas. La falta de suficientes medidas, lleva a sistemas indeterminados.
Para obtener la solución más probable que represente un sistema y que mejor se aproxime a la ideal si no se diesen
esos errores, se proyecta el problema en un subespacio de menor dimensión al que representa el universo inicial, con el
fin de filtrar, aislar o desechar los datos irrelevantes o poco significativos.
96 j Capítulo 4. Mínimos cuadrados lineales

La proyección más común es la ortogonal, que determinan entre otros el método de los mínimos cuadrados. Su funda-
mento está en el Teorema de la Proyección de la página 528. Otras proyecciones con otras métricas —como las de PCA,
 Casos posibles de sistemas lineales, una vez más
norma 1, etc.— se pueden consultar en el apéndice A.
Como enunciamos en capítulos anteriores, los casos posibles de estructuras de sistemas lineales son los de la figura 4.1.
m=n
m=n · = m=n
rango(A) = m = n
m =n · = m= n · =
rango(A) = m = n rango(A) < m = n
· = · =
rango(A) = m = n rango(A) < m = n
1a 1b
1a 1b
m>n · = m>n · =
m>n · = m>n · =
rango(A) = n < m rango(A) < n < m
m>n · = m>n · =
rango(A) = n < m rango(A) < n < m

rango(A) = n < m rango(A) < n < m

2a 2b
2a 2b
m<n m<n
m<n · = m<n · =
rango(A) = m < n · = rango(A) < m < n · =
m<n m<n
rango(A) = m < n = rango(A) < m < n =
· ·
rango(A) = m < n rango(A) < m < n
3a 3b 5/101

Figura 4.1: Casos posibles de sistemas de ecuaciones lineales según la estructura y rango de la matriz A
3a 3b
En este capítulo estudiaremos problemas Ax D b sin solución (tradicional numérica), pues rango.Ajb/ ¤ rango.A/,
a c 1 2 3
como se expresab
en la figura 4.2. Esto es así cuando b … Im.A/.
d e f g 9 4 6 5

i j 10 8 7
b
h

a8

01234 a6

Figura 4.2: Problema Ax D b sin solución pues b … Im.A/

Al no existir esa solución podemos estimar una pseudosolución que cumpla un criterio que la aproxime a una tradi-
cional; en concreto, el de minimizar la norma kAx bk2 . En la figura 4.3 se puede ver la geometría de lo que tratamos
de resolver y qué significa el mínimo de esa norma.
VHOHFW WKHYHFWRU A[ ZLOOQHFHVVDULO\EHLQWKHFROXPQVSDFH &RO A 6RZHVHHNDQ [
WKDWPDNHV A[ WKHFORVHVWSRLQWLQ &RO A WR E 6HH)LJ 2IFRXUVH LI E KDSSHQVWREH
LQ &RO A WKHQ E LV A[ IRUVRPH [ DQGVXFKDQ [ LVD´OHDVWVTXDUHVVROXWLRQµ 4.1 Introducción j 97

Ax̂ Ax
0
Im(A) Ax

'*(63&
Figura 4.3: Distintas  7KHYHFWRU
pseudosoluciones E LVFORVHUWR
de Ax AO[ WKDQ
D b y la de mínima norma kAx bk2
WR A[ IRURWKHU [

También veremos cómo resolver problemas con muchas soluciones. De todas las posibles, estudiaremos y obtendre-
mos:
Aquella, o aquellas x, cuya norma euclídea, kxk2 , es mínima.
Otro tipo de solución, por ejemplo:
m ˇ
X ˇ
ˇ T ˇ
 Que minimice ˇaj x bj ˇ :

j D1 ˇo
ˇ ˇ
 Que minimice mKax ˇajT x bj ˇ :
j
El hecho de que se minimice la norma euclídea –raiz cuadrada positiva de la suma de los cuadrados de las desvia-
ciones entre dos vectores de valores reales– es lo que da nombre a los procedimientos para resolver esos problemas:
mínimos cuadrados. Formalmente el problema que trataremos de resolver es:

Dada una matriz A 2 Rmn , de rango k  mKın.m; n/, y un vector b 2 Rm , encontrar un vector x 2 Rn que
minimice kAx bk2 .

El ejemplo por excelencia de las técnicas de mínimos cuadrados consiste en ajustar a un conjunto de m pares de
puntos .ti ; bi / una función f .x; t / de n parámetros independientes x1 ; x2 : : : xn .
Los pares de puntos los pueden definir unas mediciones, bi , obtenidas en unos tiempos, ti .
Si la función es lineal en x1 ; : : : ; xn se tiene un problema de mínimos cuadrados lineales en el que, si los n pa-
rámetros se disponen como los coeficientes de un vector n-dimensional, x, y los datos obtenidos en otro vector
m-dimensional b (usualmente m  n), se llega a una relación de la forma Ax D b, donde A 2 Rmn , x 2 Rn y
b 2 Rm .
Ejemplo 4.1 Supongamos que queremos ajustar al conjunto de pares de puntos f.ti ; bi /g = f.1; 2/; .2; 3/; .3; 5/ , .4; 6/g
la función
f .x1 ; x2 ; x3 ; t / D x1 C x2 t C x3 t 2 ;
según la idea que representa la figura del cuadro 4.1.
Para los datos y parámetros de este ejemplo el sistema Ax D b queda así:
2 3 2 3
1 1 1 2 3 2
61 x1
6 2 47 637
7 4 x2 5 D 6 7 :
41 3 95 455

™– ”
x3
1 4 16 6
x
A b

Usando el apoyo de M ATLAB y una táctica de “ajuste” por mínimos cuadrados, se podría hacer lo que sigue.

>> x=[1 2 3 4];


>> y=[2 3 5 6];
>> p=polyfit(x,y,2)
p =
-0.0000 1.4000 0.5000
98 j Capítulo 4. Mínimos cuadrados lineales

b
f (x 1 , x 2 , x 3 , t ) = x 1+ x 2 t + x 3 t 2

5
>> Am=[1 1 1;1 2 4;1 3 9;1 4 16];
4 >> b=[2 3 5 6];
>> Am\b
ans =
3 0.50000000000000
1.40000000000000
-0.00000000000000
2

1 2 3 4 5 6 7 t

Cuadro 4.1: Datos y ajuste en una sesión de M ATLAB de una función polinómica de segundo grado a los datos del ejemplo 4.1

Si se quiere profundizar un poco en el problema dibujando los datos y la función ajustada, habría que hacer lo que se ve
en la figura 4.4.

>> x1=linspace(0,5,150); 4
>> y1=polyval(p,x1);
>> plot(x,y,’o’,x1,y1,’-’)
3

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

Figura 4.4: Linea y D 0; 5 C 1; 4t que mejor ajusta M ATLAB a los cuatro puntos dados

Hay innumerables sistemas de la ciencia, ingeniería, economía, etc. que recurren a modelos de mínimos cuadrados.
En la bibliografía se pueden consultar algunos muy técnicos de éxito en áreas de conocimiento y prácticas muy variadas.

4.2 Principios teóricos de la resolución del problema


Teorema 4.1 Descomposición en valores singulares. Si A 2 Rmn es una matriz de rango r, existen matrices ortogo-
nales U 2 Rmm y V 2 Rnn tales que
A D U †V T ; (4.1)
donde 

†r 0
†D ;
0 0
4.2 Principios teóricos de la resolución del problema j 99

† 2 Rmn y †r D diag.1 , 2 ; : : : ; r /, con 1  2      r > 0. Si las matrices U y V se escriben como


U D Œu1 ; : : : ; um  y V D Œv1 ; : : : ; vn  ;
los ui y vi son los vectores singulares izquierdos y derechos, respectivamente, correspondientes a los valores singulares
i , i D 1; : : : ; r.

Teorema 4.2 El vector  


†r 1 0
xDV UTb
0 0
es la solución del problema minimizarx2Rn kAx bk2 que hace mínima kxk2 ,

Definición 4.1 A la matriz  


†r 1 0
Ž
A DV U T 2 Rnn
0 0
se la denomina matriz pseudoinversa o inversa generalizada Moore-Penrose de A.
De acuerdo con esta definición, la solución de mKınx2Rn kAx bk2 es
Ž
x D A b:
Además, conforme al Teorema de la Proyección —que se puede consultar el la página 528—, se cumple que x ? ker.A/
y que Ax D P Im.A/ b, donde P Im.A/ b es la matriz de proyección ortogonal de b sobre Im.A/, paralelamente a
ker.A T /.
Obsérvese que .A T /Ž D .A Ž /T . En general, .AB/Ž ¤ B Ž A Ž . La matriz pseudoinversa satisface las denominadas
condiciones de Penrose:
AA Ž A D A
A Ž AA Ž D A Ž
.AA Ž /T D AA Ž
.A Ž A/T D A Ž A:

Las fórmulas para obtener las matrices de proyección ortogonal sobre los cuatro subespacios fundamentales de A son

P Im.A/ D AA Ž
P ker.AT / D I AA Ž
P Im.AT / D AŽA
P ker.A/ D I AŽA

Dos casos de matriz pseudoinversa son fundamentales:

a) Si A 2 Rmn , m  n y rango.A/ D n,

A Ž D .A T A/ 1
AT :

b) Si A 2 Rmn , m  n y rango.A/ D m,

A Ž D A T .AA T / 1
:

a) es el problema de mínimos cuadrados resultante de un sistema de ecuaciones incompatible, con matriz de rango
completo.
b) es el de un sistema de ecuaciones compatible indeterminado con matriz de rango completo: resuelve este pro-
blema:
minimizar kxk2 ; donde S D fx W Ax D bg:
x2S
100 j Capítulo 4. Mínimos cuadrados lineales

4.2.1 Sistemas de ecuaciones lineales incompatibles. Ecuaciones normales


Si se tiene una ecuación Ax D b, A 2 Rmn , que no tiene solución pues b … Im.A/, se puede buscar una pseudosolu-
ción, x, que acerque Ax lo más posible a b en el sentido de la k  k2 , es decir,

mKın kAx bk2 :


x2Rn

Teorema 4.3 Sean X e Y dos espacios vectoriales de dimensiones finitas n y m sobre el cuerpo R y A una transforma-
ción lineal representada en dos bases de X e Y por la matriz A. Para un vector dado b 2 Y , el vector x 2 X minimiza
kAx bk2 si y sólo si A T Ax D A T b.

Demostración. Sean Im.A/ D fAx W x 2 Rn g y ker.A/ D fx W Ax D 0g. El complemento ortogonal del conjunto
Im.A/ será:
.Im.A//? D fr W r T z D 0; 8z 2 Im.A/g D fr W r T A D 0T g
D fr W A T r D 0g D ker.A T /:

El problema planteado es obviamente equivalente a minimizar kb bk O 2 , donde bO 2 Im.A/.


Por el teorema de la proyección de la página 528, bO es un vector que minimiza la norma anterior si y sólo si b bO 2
.Im.A//? ; es decir, si b bO 2 ker.A T /, o de forma equivalente, 0 D A T .b b/ O D A T b A T Ax.

La representación geométrica en tres dimensiones es la de la figura 4.5.

r = b − Ax ∈ (Im(A))⊥ ⇒ A T (b − Ax ) = 0

a2 Al sistema de ecuaciones que define la relación


a 2x 2
A TAx D A T b

Ax se le denomina ecuaciones normales.


a 1x 1
Im(A) a1

Figura 4.5: Geometría de los sistemas de ecuaciones lineales incompatibles

El vector de residuos, r D b Ax, es ortogonal a Im.A/ y a los vectores que lo definen, a1 y a2 . Es decir, se cumple
que A T .Ax b/ D 0.
El vector solución de las ecuaciones normales, x, es único si A T A es invertible (si y sólo si la transformación lineal
A es inyectiva: rango.A/ D n). En este caso

x D .A T A/ 1
A T b:

Si la matriz A T A es invertible,
rDb Ax D .I P Im.A/ /b;
donde P Im.A/ D A.A T A/ 1
A T es la matriz de proyección ortogonal sobre Im.A/ paralelamente a ker.A T /.

4.2.2 Sistemas de ecuaciones lineales indeterminados


Si el sistema tiene más de una solución, siempre se puede calcular aquella de menor norma euclídea.
4.3 Resolución numérica del problema j 101

Teorema 4.4 Sean X e Y dos espacios vectoriales de dimensiones n y m sobre el cuerpo R y A una transformación
lineal representada en dos bases de X e Y por la matriz A. El vector x de norma euclídea mínima que satisface la
ecuación Ax D b es el dado por x D A T z, donde z es una solución de la ecuación AA T z D b.

Demostración. Si x1 es una solución de la ecuación Ax D b, cualquier solución de la misma se puede expresar como
x D x1 C u, donde u 2 ker.A/; es decir, estará en la variedad lineal x1 C ker.A/.
El teorema de la proyección de la página 528 garantiza la existencia en esta variedad lineal de un único x tal que su
norma kxk2 es mínima y además pertenece a .ker.A//? .
Como x 2 .ker.A//? , pertenecerá a Im.A T /, es decir, se podrá expresar como x D A T z para algún z 2 Y . Como
Ax D b, entonces AA T z D b.
Cuando la matriz AA T es invertible, la solución óptima es

x D A T .AA T / 1
b:

La interpretación geométrica del resultado de este último teorema en R3 es la de la figura 4.6.

u
x 9 x7
x
80123A
x7 3

0123A3
Figura 4.6: Geometría de los sistemas de ecuaciones lineales indeterminados

 
Ejemplo 4.2 Se quiere obtener la solución de norma euclídea mínima de la ecuación indeterminada Œ 1 2  xx12 D 3.
Cualquier solución se podrá expresar como x1 C ker.A/, donde x1 es cualquier vector solución (por ejemplo Œ 1 1 T )
y ker.A/ es el que se ve en la figura 4.7. La solución que se busca es
    1    

  1 1   1 3 1 3=5
x DA AA T
T
bD 12 3D D :
2 2 5 2 6=5

En la figura se ve que está en Im.A T /.

4.3 Resolución numérica del problema


Se puede recurrir a las ecuaciones normales y resolverlas con cualquiera de los métodos estudiados para sistemas con
matriz cuadrada y simétrica, como lo es
A TAx D A T b, en el caso de que el sistema fuese incompatible, o a
AA Tz D b, cuando se diese un sistema indeterminado.
Los números de condición, 2 , de AA T y A T A son el cuadrado del de la matriz A, por lo que si el problema
originalmente no está bien condicionado, las dificultades numéricas pueden resultar insalvables al resolver el sistema
correspondiente.
Ejemplo 4.3 Consideremos la matriz
21 1 1 1 13
6" 7
6 " 7
AD6 7:
4 " 5
"
"
102 j Capítulo 4. Mínimos cuadrados lineales
SOLUTION FOR A SYSTEM OF LINEAR EQUATIONS 75

2

x2 Im.A T /
1.5
(3/5, 6/5) = x


(1, 1) = x 1
1

subespacio de soluciones

(3, 0)

1 2 x1 3

ker.A/

 La solución que se busca es Figure 2.1 A minimum-norm solution. x 
Figura 4.7: Solución denorma
  euclídea mínima
 de1 la ecuación
  Π2 D 3
1 2  x1
  1 1   1 3 1 0;6
x and
DAanyT vector
AAinT the bDnull space of A1 can
2 be expressed D as :
3Dby Eq. (2.1.4)
El rango de A es 5, para " ¤ 0. La matriz 2  − 2 5 2 1;2
x1 1
Ax− = [2
1 2] = 0; 3 (E2.1.4)
x2− = − x1−
Se ve que está en Im.A T /. 2x2−
1C" 1 1 1 2 1
6 1 1 C "2 1 1 7
6 the minimum-norm solution 7
30/101
1
6
We use Eq. (2.1.7) to obtain 7
A AD6 1
T
1 1C" 2
1 1 7
6   
−1  2  7
41 1 11 13 = 13 C1" = 10.6 5 (E2.1.5)
xo+ = AT [AA1T ]−12 b =3
a b c
[1 2]
d e f g 9 4 6
25 1 1 2 1 5 12 1 C1.2
"2
h i j 10 8 7
o+
también es de rango Note
5, para " ¤ 0. El número de condición 2 .A T A/xD is2 .A/
from Fig. 2.1 that the minimum-norm solution the 2intersection 2of 2
D .5 C " /=" .
the solution space and the row space and
2 is the closest to the origin among the5
Si " es mayor quevectors
la precisión de la
in the solutionmáquina
space. pero " no (por ejemplo, si " D 0,5  10 , "2 D 0,25  10 10
y la
precisión de la máquina  D 1,0  10 ), la representación interna de la matriz A T A será
10

2 3
2.1.3 The Overdetermined Case (M 1 1>1N):1 1LSE Solution
If the number (M) of (independent)6 7greater than the number (N )
1 1 1 1 1
1 1 1 1is7
6equations
4 1satisfying
of unknowns, there exists no solution 5
1 1 1 1 1 all the equations strictly. Thus
we try to find the LSE (least-squares error)
1 1 1 1 1 minimizing the norm of the
solution
(inevitable) error vector
e = Ax
por lo que, a efectos numéricos en esa máquina, esta − b será singular y de rango(2.1.8)
matriz 1: las ecuaciones normales no
servirían.
Then, our problem is to minimize the objective function
Otro aspecto importante que aconseja tener mucho cuidado al utilizar A T A ó AA T , nace del hecho de que aun cuando
= 12 ||e||2 =cero,
la matriz original A tenga muchosJelementos
1
2
||AxA−Tb||
A o=AA
2
2
[Ax −
1 T
− totalmente
b]T [Axser
pueden b] densas.
(2.1.9)
Un ejemplo serían 2 3
1111 2 3
60 7 1111
6 7 61 1 1 17
6 7
AD6 0 7 ; y AT A D 6 41 1 1 15:
7
6 7
4 0 5
1111
0

4.3.1 Método de Gram-Schmidt


Obtiene una base ortonormalizada del subespacio Im.A/.
Comienza normalizando el primer vector columna de la matriz, a1 : e1 D a1 =ka1 k2 .
A continuación se sustrae del vector a2 su coeficiente en la dirección de e1 , ha2 je1 ie1 , resultando un vector orto-
gonal a e1 , el cual a su vez se normaliza: : : El proceso continúa con los demás vectores columna de A.
4.3 Resolución numérica del problema j 103

El número de operaciones del método es O.mn2 / sumas+restas y multiplicaciones+divisiones y O.n/ raíces cuadra-
das.
Los diversos vectores ortonormales de la base de Im.A/ se obtienen como se apunta en la figura 4.8.

e 1
3|
e1
a1 a
e1 D I −
ka1 k2 e3
a3 a 3 − a 3 |e 1 e 1 − a 3 |e 2 e 2

a2 ha2 je1 ie1 a3


e2 D I a 3 |e 2 e 2
ka2 ha2 je1 ie1 k2 e2
a3 ha3 je1 ie1 ha3 je2 ie2 e1
e3 D I
ka3 ha3 je1 ie1 ha3 je2 ie2 k2
::
: a 3 |e 1 e 1

Figura 4.8: Proceso de ortogonalización de Gram-Schmidt

Este método se debe al trabajo de Jorgen Pedersen Gram, Dinamarca, 1850-1916 y Erhard Schmidt, Alemania, 1876-
1959.

Gram Schmidt

El algoritmo para ortogonalizar los vectores columna de una matriz general A mn es el siguiente.

 Ortogonalización de A por Gram-Schmidt


for j D 1 to n
e.1 W m; j / a.1 W m; j /
for i D 1 to j 1
u.i; j / e.1 W m; i /T  a.1 W m; j /
e.1 W m; j / e.1 W m; j / u.i; j /  e.1 W m; i /
end v
uX
u m
u.j; j / t e.k; j /2
kD1
e.1 W m; j / e.1 W m; j /=u.j; j /
end

El algoritmo hace A D E U , donde E mn es la matriz de columnas ei y U nn la matriz triangular superior de los
productos interiores auxiliares uij . Sustituyendo esta expresión de A en las ecuaciones normales, A T Ax D A T b,
resulta que
U T ET EU x D U T ET b

y, por fin, dado que E T E D I,


U x D E T b:

Un sistema triangular superior.


En condiciones adecuadas, por consiguiente, el método de Gram-Schmidt podría valer para resolver un problema
lineal de mínimos cuadrados.
104 j Capítulo 4. Mínimos cuadrados lineales

4.3.2 Método de Gram-Schmidt modificado


Su formulación se debe al trabajo de John R. Rice, EE.UU. 1934-.

Rice

Según avanza, el método de Gram-Schmidt en la práctica va perdiendo ortogonalidad en los vectores ei por errores
numéricos y, especialmente, si alguno de los vectores columna aj está próximo al subespacio generado por los vectores
anteriores e1 ; : : : ; ej 1 .
Pj 1
En ese caso, los sumandos de la expresión aj iD1 haj jei iei pueden llegar a ser muy pequeños, o muy distantes
unos de otros pero con un resultado final que puede ser muy pequeño, por lo que el error numérico que se va produciendo
es relativamente grande. Al dividir el resultado por su norma (también muy pequeña) los errores se amplificarán aún más.
En 1966 J.R. Rice modificó el orden de las operaciones del método haciendo que en una etapa k en vez de sustraer
del vector ak sus proyecciones sobre los k 1 vectores ei ya calculados, el vector ek se hace igual a ak al principio
y luego se le van sustrayendo su proyección en e1 , pasando el resultado a ser el nuevo ek , el cual se proyecta luego en
e2 , y así sucesivamente en cada uno de los k 1 ei anteriores. El resultado es sustancialmente mejor numéricamente
aunque formalmente casi idéntico como se ve en el cuadro 4.2.

 Algoritmo clásico de Gram-Schmidt  Algoritmo modificado de Gram-Schmidt


for j D 1 to n for j D 1 to n
e.1 W m; j / a.1 W m; j / e.1 W m; j / a.1 W m; j /
for i D 1 to j 1 for i D 1 to j 1
u.i; j / e.1 W m; i /T  a.1 W m; j / u.i; j / e.1 W m; i /T  e.1 W m; j /
e.1 W m; j / e.1 W m; j / u.i; j /  e.1 W m; i / e.1 W m; j / e.1 W m; j / u.i; j /  e.1 W m; i /
end v end v
uX uX
u m u m
u.j; j / t e.k; j /2 u.j; j / t e.k; j /2
kD1 kD1
e.1 W m; j / e.1 W m; j /=u.j; j / e.1 W m; j / e.1 W m; j /=u.j; j /
end end

Cuadro 4.2

Los códigos de las versiones clásica y modificada del algoritmo, escritas en M ATLAB, son las del cuadro 4.3. La única
diferencia está en la cuarta línea del código: el vector e reemplaza al correspondiente aj .
El “cara a cara” del método clásico y el modificado en un código M ATLAB supercompacto es este.

function [Q, R] = gs_m(A) function [Q, R] = gs_c(A)


[m, n] = size(A); [m, n] = size(A);
Q = zeros(m,n); Q = zeros(m,n);
R = zeros(n); R = zeros(n);
for j=1:n for j=1:n
R(j,j) = norm(A(:,j)); R(1:j-1,j) = Q(:,1:j-1)’*A(:,j);
Q(:,j) = A(:,j)/R(j,j); temp = A(:,j) - Q(:,1:j-1)*R(1:j-1,j);
R(j,j+1:n) = Q(:,j)’*A(:,j+1:n); R(j,j) = norm(temp);
A(:,j+1:n) = A(:,j+1:n) - Q(:,j)*R(j,j+1:n); Q(:,j) = temp/R(j,j);
end end

Si los probamos para verificar sus prestaciones con un problema difícil y con el del ejemplo inicial, todo ello en una
sesión de M ATLAB, resulta lo que refleja el cuadro 4.4.
Comprobemos ahora la ortogonalidad de los resultados que obtiene el procedimiento original y el modificado. Lo
programamos para usar una matriz de Hilbert 77 —muy mal condicionada— y lo probamos en una sesión. El resultado
es lo del cuadro 4.5.
4.3 Resolución numérica del problema j 105

function [x r2 e]=Grmsch_3(A,b) function [x r2 e]=Grmsch_2(A,b)


% Se resuelve Ax=b mediante Gram-Schmidt modificado % Se resuelve Ax=b mediante Gram-Schmidt clásico
[m,n]=size(A); x=zeros(n,1); e=zeros(m,n); [m,n]=size(A); x=zeros(n,1); e=zeros(m,n);
u=triu(zeros(n,n)); u=triu(zeros(n,n));
for j=1:n for j=1:n
e(:,j)=A(:,j); e(:,j)=A(:,j);
for i=1:j-1 for i=1:j-1
u(i,j)=e(:,i)’*e(:,j); u(i,j)=e(:,i)’*A(:,j);
e(:,j)=e(:,j)-u(i,j)*e(:,i); e(:,j)=e(:,j)-u(i,j)*e(:,i);
end end
u(j,j)=norm(e(:,j)); u(j,j)=norm(e(:,j));
e(:,j)=e(:,j)/u(j,j); e(:,j)=e(:,j)/u(j,j);
end end
for i=n:-1:1 % Rx=b for i=n:-1:1 % Rx=b
x(i)=(e(:,i)’*b-u(i,i+1:n)*x(i+1:n))/u(i,i); x(i)=(e(:,i)’*b-u(i,i+1:n)*x(i+1:n))/u(i,i);
end end
r2=norm(abs(A*x-b),2)^2; % Residuos^2 r2=norm(abs(A*x-b),2)^2; % Residuos^2
end end

Cuadro 4.3

>> n=7; A=hilb(n); >> A=[1 1 1;1 2 4;1 3 9;1 4 16] >> [x r2]=Grmsch_3(A,b) % MODIFICADO
>> [Q, R]=gs_c(A); A = x =
>> norm(Q’*Q-eye(n)) 1 1 1 0.5000
ans = 1 2 4 1.4000
0.156453367259543 1 3 9 -0.0000
>> [Q1, R]=gs_m(A); 1 4 16 r2 =
>> norm(Q1’*Q1-eye(n)) >> b=[2;3;5;6] 0.2000
ans = b = >> A\b
1.090139262380597e-009 2 ans =
>> cond(A) 3 0.5000
ans = 5 1.4000
4.753673562966472e+008 6 -0.0000

Cuadro 4.4

>> Script_GRSCH_1
ans = 4.7537e+08
Clásico:
x =
1.1983
-7.1874
81.7515
-318.3887
594.3144
-517.0744
172.5582
e =
% Script_GRSCH_1.m_Script de Ortogonalidad Gram Schmidt clásico y modificado
0.8133 -0.5438 0.1991 -0.0551 0.0120 -0.0020 -0.0011
format short
0.4067 0.3033 -0.6886 0.4760 -0.1974 0.0541 0.0298
0.2711 0.3939 -0.2071 -0.4901 0.6108 -0.3269 -0.1579
n=7; A=hilb(n);
0.2033 0.3817 0.1124 -0.4396 -0.2542 0.6411 0.1833
% Matriz de Hilbert (muy mal condicionada)
0.1627 0.3514 0.2915 -0.1123 -0.4992 -0.2022 0.3445
cond(A), pause
0.1356 0.3202 0.3892 0.2309 -0.1506 -0.5418 -0.8078
0.1162 0.2921 0.4407 0.5206 0.5013 0.3805 0.4115
b=A*ones(n,1); % Término independiente para x=1.
ans = 870.8917
disp(’Clásico:’), [x r2 e]=Grmsch_2(A,b); % Gram Schmidt clásico
ortogonalidad = 0.6954
x, pause, e, pause, norm(abs(x-ones(n,1)),2), pause
Modificado:
x =
ortogonalidad=norm(e’*e-eye(n)), pause % Ortogonalidad matriz e
1.0052
0.7926
disp(’Modificado:’), [x r2 e]=Grmsch_3(A,b);% Gram Schmidt modificado
3.0065
x, pause, e, pause, norm(abs(x-ones(n,1)),2), pause
-6.8260
15.3845
ortogonalidad=norm(e’*e-eye(n)) % Ortogonalidad matriz e
-11.4559
5.0969
e =
0.8133 -0.5438 0.1991 -0.0551 0.0120 -0.0020 0.0002
0.4067 0.3033 -0.6886 0.4760 -0.1974 0.0541 -0.0091
0.2711 0.3939 -0.2071 -0.4901 0.6108 -0.3269 0.0907
0.2033 0.3817 0.1124 -0.4396 -0.2542 0.6410 -0.3626
0.1627 0.3514 0.2915 -0.1123 -0.4992 -0.2022 0.6800
0.1356 0.3202 0.3892 0.2309 -0.1506 -0.5418 -0.5984
0.1162 0.2921 0.4407 0.5206 0.5013 0.3805 0.1995
ans = 21.0752
ortogonalidad = 1.9358e-08

Cuadro 4.5
106 j Capítulo 4. Mínimos cuadrados lineales

4.3.3 Factorización QR de la matriz del sistema de ecuaciones lineales


Las transformaciones ortogonales conservan la norma euclídea; esto es, si Qnn es una matriz ortogonal y x un vector
n-dimensional, se cumple que
kQxk2 D kxk2 :
p q p
En efecto, kQxk2 D hQxjQxi D x T QT Qx D x T x D kxk2 :
Según esto, si Q es una matriz ortogonal, al premultiplicar el vector Ax b por ella, su norma euclídea queda igual:

kQAx Qbk2 D kQ.Ax b/k2 D kAx bk2 :

La idea de lo que sigue es usar transformaciones ortogonales para convertir el problema en otro más sencillo de
resolver numéricamente.
Si A 2 Rmn , m > n, b 2 Rm , rango.A/ D n y se han efectuado una serie de transformaciones ortogonales que
refleja un matriz ortogonal Q 2 Rmm tal que
 
R1 n
QA D R D
0 m n

y R 1 es triangular superior, si se hace


 
c n
Qb D ;
d m n
entonces  
R1x c
kAx bk2 D kQAx
Qbk2 D
d
2

q
D kR 1 x ck22 C kdk22 ; para cualquier x 2 Rn .

La solución de mKınx2Rn kAx bk2 será aquella que haga mínimo

kR 1 x ck22 C kdk22 :

Como kdk22 es constante, la solución será la que haga mínimo el otro sumando: cuando R 1 x D c .
Resolviendo este sistema por sustitución inversa se llega a la solución del problema de mínimos cuadrados.
La suma de residuos al cuadrado será kdk22 y el vector de residuos
 
0 T
rDQ :
d

El proceso de reducción de A a R se denomina factorización QR o triangularización ortogonal.


Teorema 4.5 Sea la matriz A 2 Rmn de rango n y su factorización A D QR. El factor R tiene todos los elementos
de su diagonal principal positivos y es igual al que resulta de la factorización de Cholesky, G T G , de A T A.

Demostración. Si rango.A/ D n, de acuerdo con un teorema anterior, la factorización de Cholesky de A T A es única.


El teorema de la proyección de la página 528 garantiza la existencia en esta variedad lineal de un único x tal que su
norma kxk2 es mínima y además pertenece a .ker.A//? . Por otro lado,
h i  
T T R1
T
A A D R 1 ; 0 QQ D R T1 R 1 :
0
4.3 Resolución numérica del problema j 107

4.3.3.1 Transformaciones de Householder


Deben su nombre a su descubridor, Alston Scott Householder, EE.UU., 1904-1993.

Householder

Definición 4.2 Se denomina transformación o reflexión de Householder a una transformación lineal de Rn en Rn


caracterizada por una matriz H nn –de Householder– de la forma H D I 2wwT donde w 2 Rn ; kwk2 D 1, es el
vector de Householder.

Teorema 4.6 Toda transformación de Householder es simétrica y ortogonal.

Demostración. Por definición H T D I 2.wwT /T D I 2.wT /T wT D I 2wwT D H . Como además wT w D


kwk22 D 1,
H T H D H 2 D .I 2wwT /.I 2wwT /
D I 4wwT C 4w.wT w/wT D I:

Aplicar una transformación de Householder a un vector cualquiera equivale a obtener su reflejo respecto al subespacio
.Im.w//? , como se ve en la figura 4.9.

7 w 9a w
w

0120w 445
8

Ha
7 w 9a w

Figura 4.9: Transformación o reflexión de Householder

En efecto
H a D .I 2wwT /a D a 2wwT a D a 2.wT a/w:
El vector .wT a/w es la proyección de a sobre w; es decir, H a es igual al vector a menos dos veces su proyección sobre
w.
Lo esencial de estas transformaciones es su capacidad de hacer cero determinados coeficientes de un vector dado
—modificarlo ortogonalmente—:
Si x e y son dos vectores no nulos de igual norma euclídea y se hace
1
wD .x y/;
kx yk2

entonces .I 2wwT /x D y.
Comprobémoslo:
!
.x y/T x x y
.I T
2ww /x D x 2 p p D
.x y/T .x y/ .x y/T .x y/
108 j Capítulo 4. Mínimos cuadrados lineales

 
xT x y T x
Dx 2 .x y/
.x y/T .x y/
 T 
x x yT x
Dx 2 .x y/ D y:
2.x T x y T x/
Esto es así pues, al tener x e y la misma norma euclídea, .x y/T .x y/ D x T x y T x xT y C y T y D
2.x T x y T x/, pues x T x D y T y y y T x D x T y.
Este resultado, geométricamente, se deduce inmediatamente de la reflexión antes mencionada.
El vector w es colineal con el vector x y.
Como x e y tienen la misma longitud, la reflexión de x respecto a .Im.w//? es y.

678
3

01203445
8
Figura 4.10: Transformación de Householder para convertir un vector x en uno dado y

Para un sistema Ax D b se pueden construir transformaciones de Householder que anulen los coeficientes que se
deseen de cada vector columna de A dejando los demás como estaban.
La ilustración de la figura 4.11 representa los cuatro pasos del proceso de reducir una matriz A 64 a una triangular
superior R 64 .

×××× 2222 2222 2222 2222


×××× 0 222 0 0 0
×××× 0 222 0 0 0 0  0 0 
×××× 0 222 0 0 0 0 0 0 0 03
×××× 0 222 0 0 0 0 0 0 0 0 0
×××× 0 222 0 0 0 0 0 0 0 0 0
A0 A1 A2 A3 A4

Figura 4.11

La matriz A1 resultaría de la transformación H 1 A0 ; la A2 sería H 2 A1 D H 2 H 1 A0 ; y así cuatro veces.


A una matriz m  n se le aplicará una sucesión k D 1; : : : ; n de transformaciones, cada una de las cuales ha de
hacer cero los coeficientes k C 1; : : : ; m del vector columna k.
Se pretende que la transformación k-ésima, es decir H k , haga:

a para i D 1; 2; : : : ; k 1
H k ak D y D i k
0 para i D k C 1; : : : ; m:
A tal fin, los coeficientes del vector y deberán ser:
y1 D a1k
y2 D a2k
::
: q
2
yk D ˙ akk 2
C akC1k 2
C    C amk ¡OJO signos!
ykC1 D 0
::
:
ym D 0:
4.3 Resolución numérica del problema j 109

Como y12 C y22 C    C ym2 2


D a1k C a2k2 2
C    C amk , jjyjj2 D jjak jj2 .
La transformación H k tendrá como vector w D .ak y/=kak yk2 .
El coeficiente k-ésimo de y puede adoptar dos signos. Para evitar errores de cancelación, se escoge el signo opuesto
al del coeficiente k-ésimo de ak .
En esta figura 4.12 se ven las dos posibilidades para transformar a en un vector de igual magnitud pero con su
coeficiente a2 D 0: es decir, convertirlo en y o y 0 , Con el criterio apuntado, la transformación que hay que usar es la

x2

w
w alt
a

y a1 − y a1 y a1 + y x1

Figura 4.12: Dos posibilidades de transformar a en otro vector con coeficiente a2 D 0

que define w, que convierte a en y 0 . Su primer coeficiente es w1 D a1 . y1 / D a1 C y1 ; el segundo, el de a en x2 .


La transformación alternativa, walt convertiría a a y: su primer coeficiente es a1 y1 ; el segundo el mismo de w.
En conclusión, en la transformación de Householder k-ésima que se aplica a la matriz A, los valores numéricos del
vector w son: 2 3
0
6 :: 7
6 7
6 : 7
6 7
1 6 akk C s  signo.akk / 7
wD p 6 7;
2s.s C jakk j/ 6
6
akC1k 7
7
6 :: 7
4 : 5
amk
q
donde s D akk 2 2
C akC1k 2
C    C amk .

Caso numérico 1: Resolución de Ax D b, A mn , m > n y rango completo


h i
Mediante transformaciones de Householder se reduce A a una triangular superior R 1 y el vector b a Œ dc .
0
La solución de mKınx2Rn kAx bk2 sería la misma de R 1 x D c, por sustitución inversa. La suma de residuos al
cuadrado será kdk22 .
El vector de residuos r se puede obtener, si el algoritmo ha transformado b en Œ dc , sin más que hacer:
 
0
r
d
for k D n to 1
r H kr
end
El algoritmo formal para llevar a cabo estas operaciones es el del cuadro 4.6. Escrito en código de M ATLAB, con la
posibilidad de obtener Q y R, así como su ejecución para resolver el ejemplo que manejamos, son los del cuadro 4.7.
El número de operaciones de este algoritmo es:
O.mn2 n3 =3/ sumas+restas y multiplicaciones+divisiones, para transformar la matriz A en R;
n raíces cuadradas
O.n2 =2/ de la sustitución inversa.
110 j Capítulo 4. Mínimos cuadrados lineales

 Resolución de Ax D b por transf. de Householder


 Transformación columnas de la Matriz A mn
for j D 1 to n
fja.j; j /j; : : : ; ja.m;
if mKaxq  j /jg D 0 then stop
Pm
D a.k; j /2  sig no.a.j; j //
kDj
ı Pm
w.j W m/ a.j W m; j /; w.j / w.j / C ; ˇ D 2 2
kDj w .k/; a.j; j / 
for l D j C 1 to n 
a.j W m; l/ a.j W m; l/ w.j W m/  w T .j W m/  a.j W m; l/  ˇ
end
 Transformación del vector b. 
b.j W m/ b.j W m/ w.j W m/  w T .j W m/  b.j W m/  ˇ
end
 Resolución del sistema  Rx D b. ı
Pn
for j D n to 1, x.j / b.j / kDj C1 a.j; k/  x.k/ a.j; j /, end
 Residuos P al cuadrado.
m 2
rescua kDnC1 b .k/

Cuadro 4.6

Caso numérico 2: Resolución de Ax D b, A mn , n > m y rango completo


Este problema, si tiene solución, es indeterminado: tiene muchas. La de menor norma euclídea se puede calcular me-
diante estos pasos:
Paso 1 Se aplica el algoritmo QR a la matriz A T , en vez de a A. Resultará
 
T T R
Q A D :
0
 
R
Es decir, A D QT
, donde Q es una matriz ortogonal n  n y R una triangular superior m  m.
0

function [x r2 Q R]=Qrdes_3(A,b)
>> A=[1 1 1;1 2 4;1 3 9;1 4 16]
% Resolución de Ax=b mediante transformaciones de Householder; calcula Q y R
A =
[m n]=size(A); x=zeros(n,1); Q=eye(m);
1 1 1
for j=1:n
1 2 4
w=Housv(A(j:m,j)); % Householder de a(j:m,j)
1 3 9
A(j:m,j:n)=A(j:m,j:n)-2*w*(w’*A(j:m,j:n));
1 4 16
b(j:m)=b(j:m)-2*w*(w’*b(j:m));
>> b=[2;3;5;6]
Qk=eye(m);
b =
Qk(j:m,j:m)=eye(m+1-j)-2*(w*w’);
2
Q=Qk*Q;
3
end
5
for i=n:-1:1 % Rx=b
6
x(i)=(b(i)-x(i+1:n)’*A(i,i+1:n)’)/A(i,i);
>> [x r]=Qrdes_3(A,b)
end
x =
r2=norm(b(n+1:m))^2; % Residuos al cuadrado
0.5000
R=triu(A); Q=Q’; % Matrices R y Q
1.4000
end
-0.0000
r =
function w = Housv(x)
0.2000
% Transformación de Householder del vector x.
>> A\b
m=max(abs(x)); w=x/m;
ans =
sw=1; if w(1)<0, sw=-1; end
0.5000
w(1)=w(1)+sw*norm(w);
1.4000
w=w/norm(w); w=w(:);
-0.0000
end

Cuadro 4.7
 
Paso 2 La matriz original A será A D R T ; 0T QT . Si se sustituye en la ecuación Ax D b, se tendrá que
 T T T
R ; 0 Q x D b:
4.3 Resolución numérica del problema j 111

Haciendo el cambio de variable z D QT x, la última ecuación queda


 T T
R ; 0 z D b:

Como zT z D .QTx/T .QT x/ D x T QT Qx D x T x, las  normas euclídeas de x y z serán iguales. Estructurando


el vector z en zzR0 y b de igual manera, la solución de R T ; 0T z D b saldrá de resolver
1
R T zR D bR ;
siendo los demás
Comocoeficientes
el vector dedelresiduos,
vector z, rz0=
, nulos.
b − Ax, es ortogonal al subespacio (en este caso es un
Paso 3 El vector solución x que se busca resultará de deshacer
plano) Im(A), lo es a los vectores que el cambio
lo definen: a1 y a2de variable
; es AT (Ax − b)es=decir:
decir, introducido; 0. Si la
T
matriz A A es invertible,  
r = b − Ax = (I z −P )b,
x D Q R : Im(A)
T −1 T 0
donde PIm(A) = A(A A) A es la matriz de proyección ortogonal sobre Im(A) paralelamente
a ker(AT ).Como el vector de residuos, r = b − Ax, es ortogonal al subespacio (en este caso es
Caso numérico 3: Resolución
un plano) Im(A), lo esnumérica de Ax
a los vectores b, A mn
que loDdefinen: a1 ,ym
a2> óm<
; esndecir, ATn y rango
(Ax − b) = incompleto
0. Si la
T
matriz A A es invertible,
Caso más general que se puede dar en mínimos cuadrados de ecuaciones lineales.
r = b − Ax = (I − PIm(A) )b,
Paso 1 Se transforma la matriz A mediante transformaciones de Householder y permutaciones de columnas para
T −1 T
llegar a: donde PIm(A) = A(A A) A es la matriz de proyección ortogonal sobre Im(A) paralelamente
a ker(AT ).
r

0 m−r

En cada etapa k de este proceso se calcula la norma euclídea de ak , k; : : : ; n, limitándose a sus coeficientes
k; : : : ; m y se intercambia la columna k con la de mayor norma.
Paso 2 Del Paso anterior se ha llegado a
   
R 11R 12 r c r
QAP D R D y Qb D ;
0 R 22 m r d m r
r n r
donde kR 22 k2  1 kAk2 . A partir de aquí hay dos opciones:
Que r D n (rango completo). La solución sale de resolver R 11 x D c.  
Que r < n (rango incompleto). Se construyen unas transformaciones ortogonales, Qnn , tales que R 11 ; R 12 Q1 D
  1
W ; 0 , donde W rr es triangular superior. ¿Cómo hacerlo? Se actúa sobre ŒR 11 , R 12 T y se llega a b).

a) b)
r

n−r 0
r

Eso se hace en r etapas como se ve a continuación. En una de ellas, k, se premultiplica por una transformación
de Householder que haga cero los elementos r C 1 a n de la columna k y que deje inalterados del 1 al k 1
y del k C 1 a r.
112 j Capítulo 4. Mínimos cuadrados lineales

× × × × ×
× × × × × × × × × ×
× × × 1 × × × 2 × × × 3 × × × 4 × × ×
× × × × × × × × × × × × × × × × × × × ×
× × × ⊗ × × ⊗ 0 × ⊗ 0 0 ⊗ 0 0 0 0 0 0 0
× × × ⊗ × × ⊗ 0 × ⊗ 0 0 ⊗ 0 0 0 0 0 0 0

El óvalo indica el elemento que se utiliza para definir cada transformación. Los que se hacen cero con ella
mediante el signo ˝.
Paso 3 De los dos pasos anteriores se tendrá que

kAx bk2 D k.QAP/.P T x/ Qbk2 :

Ahora bien, .QAP/P T x se puede escribir .QAP/Q1 QT1 P T x y también,


   
W 0 T T c
Q1 P x D :
0 0 d

Si se hace QT1 P T x D y y se resuelve W y1 D c, el vector solución que se busca, x, resultará de


 
y1
x D PQ1 :
0

Traducido todo el proceso de resolución del problema en código de M ATLAB y aplicado en una sencilla sesión de
M ATLAB a un problema sintético (construido para que la matriz del problema sea de rango incompleto y haya muchas
más ecuaciones que incógnitas), podría resultar algo como lo que muestra el cuadro 4.8. Si utilizamos el código de ese
mismo cuadro para resolver el ejemplo que estamos analizando para introducir los diversos métodos resultará lo que se
indica también en el cuadro 4.8.

4.3.3.2 Transformaciones de Givens


Definición 4.3 Transformación de Givens en una transformación lineal ortogonal de Rn en Rn caracterizada por dos
parámetros c y s, tales que c 2 C s 2 D 1 y una matriz
2 3
1
6 :: 7
6 : 7
6 7
6 c s 7
6 7 i
G .i; j / D 6 :: 7
6 : 7 j
6 s c 7
6 7
4 ::
: 5
1

Deben su nombre a James Wallace Givens, EE.UU., 1910-1993.

Givens
4.3 Resolución numérica del problema j 113

>> a=rand(200,4);
>> b=a*ones(4,1);
>> A=[a a(:,1)*2+a(:,2)*0.5...
a(:,3)*2+a(:,4)*0.5...
function [x r res]=Mincua_QR(A,b) a(:,2)*2+a(:,3)*0.5];
% Resolución de Ax=b general mediante transformaciones de Householder >> size(A)
% Posible rango incompleto r ans = 200 7
[m n]=size(A); x=zeros(n,1); tol=sqrt(eps); W=zeros(n,m); ip=1:n; r=n; >> format long
for j=1:n >> [x r res]=Mincua_QR(A,b)
jm=j; c=0; x =0.168704156479218
for k=j:n 0.156479217603912
h=norm(A(j:m,k)); 0.009779951100245
if h>c, c=h; jm=k; end 0.792176039119804
end 0.415647921760391
if jm~=j, A(:,[j jm])=A(:,[jm j]); ip([j jm]) = ip([jm j]); end 0.415647921760391
if j==m, break, end 0.317848410757946
w=Housv(A(j:m,j)); % Householder de A(j:m,j); luego a A y b r = 4
A(j:m,j:n)=A(j:m,j:n)-2*w*(w’*A(j:m,j:n)); b(j:m)=b(j:m)-2*w*(w’*b(j:m)); res = 1.205973193713402e-029
end %
for j=1:n % Ver rango % Comprobación del resultado
if abs(A(j,j))<=tol, r=j-1; break, end %
end >> x-pinv(A)*b
res=norm(b(r+1:m))^2; w1=zeros(r,n-r+1); ans = 1.0e-015 *
W(1:n,1:r)=A(1:r,1:n)’; % Trasp. de A = W -0.111022302462516
if r~=n 0.333066907387547
for i=r:-1:1 0.194289029309402
w1(i,1:n-r+1)=Housv([W(i,i);W(r+1:n,i)]); % Householder hacia W -0.333066907387547
W([i r+1:n],i:-1:1)=W([i r+1:n],i:-1:1)-2*w1(i,:)’*(w1(i,:)*W([i r+1:n],i:-1:1)); 0.166533453693773
end -0.943689570931383
end 0.499600361081320
for i=r:-1:1 % Resol. Wx=c
x(i)=(b(i)-x(i+1:r)’*W(i+1:r,i))/W(i,i); >> A=[1 1 1;1 2 4;1 3 9;1 4 16];
end >> b=[2;3;5;6];
if r~=n >> [x r res]=Mincua_QR(A,b)
x(r+1:n)=0; % Aplicar a x ultimas Householder hacia W x = 0.500000000000000
for i=1:r, x([i r+1:n])=x([i r+1:n])-2*w1(i,:)’*(w1(i,:)*x([i r+1:n])); end 1.400000000000000
end 0
x(ip)=x(:); % Deshacer perm. col. r = 3
end res = 0.200000000000001
>> A\b
ans = 0.5000
1.4000
-0.0000

Cuadro 4.8

Al aplicar a x 2 Rn una transformación, o rotación, de Givens, G .i; j / W Rn ! Rn , con c D cos  y s D sen ,


producirá lo siguiente:

2 3
x1
::
6 7
6 : 7
6 xi 1 7
6 xi cos  C xj sen  7 i
6 7
6 xi C1 7
G .i; j /x D 6 7
::
6 : 7
6 xj 1 7
6 7
6 xi sen  C xj cos  7 j
6 xj C1 7
4 :: 5
:
xn

Se rota el vector x un ángulo  en el subespacio que generan los vectores ei y ej de Rn .


Para hacer cero alguno de los coeficientes i ó j de un vector x, concretamente el j , se deberá escoger un  tal que
xi sen  C xj cos  D 0, es decir, habrá que hacer

xj
tan  D ;
xi
114 j Capítulo 4. Mínimos cuadrados lineales

o, lo que es equivalente,
xi
c D cos  D q
xi2 C xj2
y
xj
s D sen  D q :
xi2 C xj2
Ejemplo 4.4 En la figura 4.13 se describe, en el espacio euclídeo tridimensional, la rotación del vector
2 3
1
x D 15
4
1
en el plano z y para anular su tercer coeficiente.

z ....
....
....
....
....
....
...
...
...
...
..
..
...
...
...
x ..
..
1 ..
..
..
..
..
..
..
..
..
..
...
...
...
...
...
1 ..
..
..
y
............................
..... ...
... ..
... ...
... ..
...
1
...........
... x
........

Figura 4.13: Transformación o rotación del vector x en otro de su misma magnitud con su coeficiente x3 D 0

Como el ángulo que hay que rotar x es 45ı , la matriz de Givens que hay que utilizar es,
2 3
1 p0 p0
G .2; 3/ D 4 0 p2=2 p2=2 5 :
0 2=2 2=2
El nuevo vector será 3 2
p1
G x D x0 D 4 2 5 :
0
p
Las normas euclídeas de éste y del original son 3.
Mediante transformaciones de Givens se puede reducir la matriz de un problema de mínimos cuadrados, en n etapas,
a una triangular superior R. En cada una de esas etapas, j , se harían cero, uno a uno, los coeficientes j C 1 a m.
     
Ejemplo 4.5 Las operaciones necesarias para transformar la matriz    en R 00 0 
 
, son las de la figura 4.14.
 0 0 0
Los símbolos 2, y 5 indican que el coeficiente al que se hace referencia ha experimentado 1, 2 ó 3 transformaciones
desde su valor inicial .
El algoritmo numérico completo para resolver Ax D b usando transformaciones de Givens es el que describe el
cuadro 4.9. El número de operaciones que requiere para transformar A es:
O.2mn2 2n3 =3/ sumas+restas y multiplicaciones+divisiones
O.mn=2/ raíces cuadradas y
O.n2 =2/ sumas+restas y multiplicaciones+divisiones para efectuar la sustitución inversa.
Su traducción a código de M ATLAB y una sesión utilizándola se listan en del cuadro 4.10.
4.3 Resolución numérica del problema j 115

3 2 2 3
222
6 0 2 27 6 0 2 27
A1 D G .1; 2/A D 6 7
4    5 ; A2 D G .1; 3/A1 D
6 7
4 0 2 25;
 
2 3 2 3
555 555
6 0 2 27 60 7
A3 D G .1; 4/A2 D 6 7
4 0 2 2 5 ; A4 D G .2; 3/A3 D
6
40 0
7;
5
0 2 2 0 2 2
2 3 2 3
555 555
6 0 5 57 6 0 5 57
A5 D G .2; 4/A4 D 6
40 0
7 ; A6 D G .3; 4/A5 D
5
6 7
4 0 0 55:
0 0 0 0 0

Figura 4.14

Las transformaciones de Givens, con precisiones semejantes, son el doble de caras que las de Householder. La pre-
gunta entonces es obvia, ¿cuándo utilizar Givens y no Householder, y viceversa? La respuesta se deduce de considerar
la estructura de la matriz A del problema:
Si ésta es densa, es decir, muchos de sus coeficientes son distintos de cero, el método de Householder es el más
aconsejable;
Si la estructura de A es dispersa, o con muy pocos coeficientes distintos de cero, convendrá centrarse en hacer cero
sólo aquellos elementos no nulos en las columnas correspondientes, por lo que, a priori, el método de Givens deberá
ser más ventajoso.

 Resolución de Ax D b por transf. de Givens


 Transformación de la Matriz A mn
for i D 1 to n
for k D i C 1 to m
 Hacer nulo el elemento .k; i /.
if a.k; i / ¤ 0 then
if ja.k; i /j  ja.i; i /j then p
t D a.i; i /=a.k; i /I s D 1= 1 C t 2 I c D s  t
else p
t D a.k; i /=a.i; i /I c D 1= 1 C t 2 I s D c  t
end
a.i; i / c  a.i; i / C s  a.k; i /
for j D i C 1 to n
aux D c  a.i; j / C s  a.k; j /; a.k; j / s  a.i; j / C c  a.k; j /; a.i; j / aux
end
 Transformación del vector b.
aux D c  b.i / C s  b.k/; b.k/ s  b.i / C c  b.k/; a.i / aux
end
end
end
 Resolución del sistema Rx D b.
for j D n to 1 
Pn
x.j / b.j / kDj C1 a.j; k/  x.k/ =a.j; j /
end
 Residuos P al cuadrado.
m 2
rescua kDnC1 b .k/

Cuadro 4.9
116 j Capítulo 4. Mínimos cuadrados lineales

function [x r2]=Givens(A,b)
% Resolución de Ax=b mediante transformaciones de Givens
>> A=[1 1 1;1 2 4;1 3 9;1 4 16]
[m,n]=size(A); x=zeros(n,1);
A =
for i=1:n % Factorización de A
1 1 1
for k=i+1:m
1 2 4
if 1+abs(A(k,i))==1, continue, end
1 3 9
if abs(A(k,i))>=abs(A(i,i))
1 4 16
t=A(i,i)/A(k,i); s=1/sqrt(1+t*t);
>> b=[2;3;5;6]
c=s*t;
b =
else
2
t=A(k,i)/A(i,i); c=1/sqrt(1+t*t);
3
s=c*t;
5
end
6
A(i,i)=c*A(i,i)+s*A(k,i);
>> [x,r]=Givens(A,b)
q(i+1:n)=c*A(i,i+1:n)+s*A(k,i+1:n);
x =
A(k,i+1:n)=-s*A(i,i+1:n)+c*A(k,i+1:n);
0.5000
A(i,i+1:n)=q(i+1:n);
1.4000
q1=c*b(i)+s*b(k); % Transformar b
-0.0000
b(k)=-s*b(i)+c*b(k);
r =
b(i)=q1;
0.2000
end
>> A\b
end
ans =
for i=n:-1:1 % Sustitución inversa
0.5000
x(i)=(b(i)-A(i,i+1:n)*x(i+1:n))/A(i,i);
1.4000
end
-0.0000
r2=norm(b(n+1:m))^2; % Residuos al cuadrado
end

Cuadro 4.10

4.3.3.3 Transformaciones rápidas de Givens


La idea es conseguir con ellas velocidad de Householder con unas matrices M 2 Rmm tales que

MA D S

sea triangular superior y que M M T D D D diag.d1 ; : : : ; dm /.


Como D 1=2 M es ortogonal (pues .D 1=2 M /.M T D 1=2 / D D 1=2
DD 1=2
D I), se tiene que
  1     
1 1=2 1=2
ADM S D D M D S D MT D 1=2
D 1=2
S

es la factorización QR de A. h i h i
Si se eligen adecuadamente esas M a partir de unas matrices básicas M 1 D ˇ11 ˛11 y M 2 D ˇ12 ˛12 , que cum-
plan que 1  ˛i ˇi  0, denominadas transformaciones rápidas de Givens, una reordenación de los cálculos de la
factorización puede conseguir la velocidad de las transformaciones de Householder con las ventajas de las de Givens.

4.3.4 Descomposición en valores singulares


Existen diversos métodos iterativos (que veremos en el capítulo dedicado a valores propios) para calcular la descompo-
sición numérica en valores singulares A D U †V T . Partiendo de ella, la solución de mKınx2Rn kAx bk2 es
 
†r 1 0
xDV U T b:
0 0

Para cualquier matriz A mn , de rango completo o incompleto, la solución del problema de menor norma euclídea es

X uT b
i
xD vi :
i
i ¤0
4.4 Matlab y el problema de mínimos cuadrados j 117

Ejemplo 4.6 Utilizando la descomposición U †V T de A resolver


2 3 2 3
1 6 11 5
6 2 7 12 7 2 x 3 657
6 7 1 6 7
6 7 6 7
6 3 8 13 7 4 x2 5 D 657 :
6 7 6 7
4 4 9 14 5 x3 455
5 10 15 „ ƒ‚ …
™ x 5
„ƒ‚…
A b

La descomposición en valores singulares es

A D U †V T
2 0;3546 32 3
0;6887 0;5700 0;1764 0;2096 35;1272 0 0
 
6 0;3987 0;3756 0;7455 0;2235 0;3071
7 6 0 2;4654 0
7 0;2017 0;8903 0;4082
D4 0;4428 0;0624 0;1702 0;3652 0;7985 5 4 0 0 0;0000 5 0;5168 0;2573 0;8165 :
0;4870 0;2507 0;2966 0;7652 0;1627 0 0 0 0;8320 0;3757 0;4082
0;5311 0;5638 0;0490 0;4472 0;4445 0 0 0

Como el valor singular 3 D 0, la solución de norma euclídea mínima se obtiene de

uT1 b uT b
xD v1 C 2 v2
1 " 2 # " # " #
0;2017 0;8903 0;5
11;0709 1;5606
D 35;1272
0;5168 C 2;4654
0;2573 D 0;0 :
0;8320 0;3757 0;5

El código que se lista a continuación resuelve el ejemplo llamando a svd() de M ATLAB para obtener la descompo-
sición en valores singulares de A. Lo acompaña una sesión para resolver el problema del ejemplo.

function [x S r] = Svdre(A,b)
>> A=[1 1 1;1 2 4;1 3 9;1 4 16];
% Resolución ||Ax-b|| mediante la desc. en valores singulares de A
>> b=[2;3;5;6];
[m,n] = size(A); tol=sqrt(eps); tmp=zeros(m); x=zeros(n,1);
>> [x,S,r]=Svdre(A,b)
[U S V]=svd(A); S=diag(S); r=0;
x =
for j=1:n
0.5000
if S(j)>=tol
1.4000
r=r+1;
-0.0000
tmp(r)=dot(U(:,j),b)/S(j);
S =
end
19.6214
end
1.7121
for j=1:r
0.2663
x=x+tmp(j)*(V(:,j));
r =
end
3
end

4.3.5 Comparación de los diversos métodos


En la tabla del cuadro 4.11 se listan los métodos estudiados, y dos variantes del que utiliza la descomposición en valores
singulares de la matriz A. Se indica también el número de operaciones que comporta cada método.
Los métodos basados en transformaciones ortogonales son los más precisos y más habituales. El basado en SVD es el
más robusto, aunque más caro desde el punto de vista computacional.

4.4 Matlab y el problema de mínimos cuadrados


Para calibrar las posibilidades comparadas de M ATLAB con los problemas de mínimos cuadrados, vamos a utilizarlo
para ajustar a unos puntos la función
y D c1 xe c2 x;
que se utiliza en prospección de hidrocarburos y minerales.
118 j Capítulo 4. Mínimos cuadrados lineales

Método Operaciones
mn2 3
Ecuaciones Normales 2
C n6
3
Transformaciones de Householder mn2 n3
Transformaciones de Givens 2mn2 23 n3
Método de Gram Schmidt mn 2

Método de Gram Schmidt Modificado mn2


Método de Golub-Reinsch (SVD) 2mn2 C 4n3
Método de Golub-Reinsch-Chan (SVD) mn2 C 17
3
n3

Cuadro 4.11

Como no disponemos de datos reales, vamos a generar unos sintéticos haciendo c1 D 5 y c2 D 3. Generaremos 300
puntos y los perturbaremos con un ruido aleatorio normalizado de media 0.
Utilizaremos como métodos para obtener los parámetros c1 y c2 , en un modelo linealizado, con ayuda de las rutinas
de M ATLAB:
El operador n
Las ecuaciones normales
La descomposición QR
El método de Gram-Schmidt
La descomposición en valores singulares y
La matriz pseudoinversa,
Para linealizar el modelo original, haremos los cambios v D ln.y=x/, u D x, ˇ D ln c1 y ˛ D c2 , resultando

v D ˛u C ˇ:

El diary de la sesión de M ATLAB es el que sigue.

>> x0=0.01; %primer punto de muestra >> c2=R\(Q’*v)


>> x=linspace(x0,2,300); % 300 puntos c2 =
>> y=5*x.*exp(-3*x); %nube de puntos 1.6443 % Tercera respuesta
>> yn=abs(y+0.05*(rand(size(x))-0.5)); % + ruido: valores pos. -3.0579
>> v=log(yn./x); %cambio de variable >> [Q,R]=gs_m(A); % Gram-Schmidt modi.
>> x=x(:); v=v(:); >> c3=R\(Q’*v)
>> A=[ones(size(x)) x]; % Matriz del sistema c3 =
>> c=A\v % Prim. respuesta: con \ 1.6443 % Cuarta respuesta
c = -3.0579
1.6443 >> format long
-3.0579 >> c4=pinv(A)*v % Matriz pseudoinversa
>> G=chol(A’*A); % Ecuaciones normales c4 =
>> c1=G\(G’\(A’*v)); 1.64428682050583 % Quinta respuesta
>> c1 -3.05786465731645
c1 = >> [U S V]=svd(A); % Descomposición val. sing.
1.6443 % Segunda respuesta >> c5=V\(S\(U\v))
-3.0579 c5 =
>> [Q,R]=qr(A,0); % Factorización QR 1.64428682050583 % Sexta respuesta
-3.05786465731645

Los resultados son prácticamente idénticos. Habría que utilizar también las rutinas de tiempos para tener otro indicador
sobre el esfuerzo bruto invertido en cada caso.
Los gráficos finales, con 100 y 300 puntos sintéticos, la función original y la ajustada, son los de la figura 4.15.
Pasando el diary anterior a un script.m de M ATLAB para generar las alternativas que sea (con las instrucciones para
200 puntos), se llega al cuadro 4.12.

Referencias, fuentes y lecturas complementarias


La temática de este capítulo y lo que le rodea en muchos ámbitos de la ciencia y la ingeniería es riquísima en referencias.
Muchas de las que se listan al final del libro se refieren de alguna forma a ella. En su mayoría se aplican a problemas
concretos para ajustar funciones determinadas.
4.4 Matlab y el problema de mínimos cuadrados j 119

0.7 0.7
original original
+ruido +ruido
0.6 0.6
ajustado
ajustado

0.5 0.5

c1 = 5.6363 c2 = −3.1949 c1 = 5.3481 c2 = -3.1191


0.4 0.4
100 puntos "sintéticos" 300 puntos "sintéticos"

y
y

0.3 0.3

0.2 0.2

0.1 0.1

0 0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x x

Figura 4.15: Ajustes con 100 y 300 puntos

function demoXexp(n)
% demoXexp Ajuste datos sintéticos a y = c(1)*x*exp(c(2)*x)
%
% Dato: n = (opcional) número de puntos sintéticos a generar.
% defecto=200
%
if nargin<1, n=200; end
x0=0.01;
x=linspace(x0,2,n); % Construcción de los datos
y=5*x.*exp(-3*x); %
yn=abs(y+0.05*(rand(size(x))-0.5)); % con cambio de variable
v=log(yn./x); %
x=x(:); v=v(:); % para linealizar el
A=[ones(size(x)) x]; % modelo
c=A\v; %

fprintf(’Parámetros ajustados:\ncon A\\b:’...


’ c1 = %18.15f c2 = %18.15f\n’,exp(c(1)),c(2));
% --- Plot datos
xfit = linspace(min(x),max(x));
yfit = exp(c(1))*xfit.*exp(c(2)*xfit);
if n<30, s = ’v’; else s = ’-’; end % Símbolo para datos originales
plot(x,y,s,x,yn,’o’,xfit,yfit,’--’);
xlabel(’x’); ylabel(’y’); legend(’original’,’+ruido’,’ajustado’);
xmax = max(x); ymax = max(y);
text(0.5*xmax,0.7*ymax,sprintf(’c1 = %6.4f c2 = %6.4f’,exp(c(1)),c(2)));
text(0.5*xmax,0.6*ymax,sprintf(’%d puntos "sintéticos"’,n));

% --- Plot funciones ajustadas


% Cholesky
G=chol(A’*A); c1=G\(G’\(A’*v));
fprintf(’con chol(A\’’*A); c1 = %18.15f c2 = %18.15f\n’,exp(c1(1)),c1(2));

% Factorización QR
[Q,R]=qr(A,0); c2=R\(Q’*v);
fprintf(’con [Q,R]=qr(A); c1 = %18.15f c2 = %18.15f\n’,exp(c2(1)),c2(2));

% Gram.Schmidt modificado
[Q,R]=gs_m(A); c3=R\(Q’*v);
fprintf(’con [Q,R]=gr_m(A); c1 = %18.15f c2 = %18.15f\n’,exp(c3(1)),c3(2));

% Matriz pseudoinversa
c4=pinv(A)*v;
fprintf(’con pinv(A)*b; c1 = %18.15f c2 = %18.15f\n’,exp(c4(1)),c4(2));

% Descomposición en valores singulares


[U S V]=svd(A); c5=V\(S\(U\v));
fprintf(’con [U S V]=svd(A); c1 = %18.15f c2 = %18.15f\n’,exp(c5(1)),c5(2));

Cuadro 4.12: script.m para 200 puntos


120 j Capítulo 4. Mínimos cuadrados lineales

Las referencias básicas de lo presentado son: Burden y Faires [2011]; Eldén et al. [2004]; Ciarlet [1988]; Golub y Van
Loan [2013]; Heath [2002]; Sauer [2012]; Stoer y Bulirsch [1980]; Strang [1976] y Wilkinson [1965].
Las de autores clásicos de mínimos cuadrados: Björk [1996] y [2015]; Gill, Murray y Wright [1991]; Quarteroni et
al. [2000]; Lawson y Hanson [1974] y [1995]. Sobre todos, destaca, según mi modesto entender, Björk. Tanto a escala
europea como americana, que es lo mismo que decir a escala mundial.
Los programas de ordenador los he ido puliendo a lo largo de los años. Son la traducción —mejorados– en M ATLAB
de otros en Fortran o C que se pueden encontrar en mis libros y en multitud de sitios de Internet.
Capítulo 5

Funciones de interpolación y aproximación

Contenido
5.1 Interpolación
Examples versus aproximación . . . . . . . . .Polynomial . . . . . . . . . . . . . . . . . . . . . 121
. . . . . interpolation Piecewise
5.2 Interpolación numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
5.3 Interpolación polinómica . . . . . . . . . . . . . . . . . . .Basic . . . . . . . . . . . . . . . . . 123
. . . . . motivations
5.3.1 Polinomios de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.3.2 Polinomios de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
5.3.3 Polinomios Ortogonales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.4 Interpolación polinómica por trozos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
5.4.1 Interpolación de Hermite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
I Plotting a smooth curve through discrete data points
5.4.2 Splines cúbicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
5.4.3 Curvas de Bézier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Suppose we have a sequence of data points
5.4.4 B-splines (basis spline) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Referencias, fuentes y lecturas complementarias . . . . Coordinates
. . . . . . . . . . . . .x.1. . . x. .2 . . . ·. ·. ·. . . x
139
n

Function y1 y2 ··· yn
5.1 Interpolación versus aproximación

L AS diferencias entre la interpolación y la aproximación matemática, grosso modo, son las que plasma la figura 5.1a.
En general,v.s. Curve Fitting
Interpolation
Iy ajuste.
 Interpolación vs. aproximación Try to plot a smooth curve (a continuous differentiable function)
y Datos conocidos
y known data connecting these discrete points.
Función
curve fit aproximada
Interpolación
interpolation

x
x
 El ajuste, en Interpolación
general,
Curve fitting:
(a) buscay&predecir
fit function data notuna tendencia
exactly
aproximación
agree o el
matemáticas (b) Interpolación de unos puntos por una función
comportamiento
Interpolation: function passes exactly through known dado;
de datos de acuerdo con un modelo data
la interpolación, que la función, o funciones,
Figuraa5.1:
queInterpolación
de lugar incluya
versus aproximación
todos los datos conocidos, habitualmente buenos. 8/83

Interpolation & Extrapolation


a b c 1 2 3

d e f g 9 4 6 5
Interpolation approximate within the range of independent variable
122 j Capítulo 5. Funciones de interpolación y aproximación

la aproximación o ajuste busca predecir una tendencia o el comportamiento de unos datos de acuerdo con un modelo
establecido;
la interpolación, que la función, o funciones, que se obtenga de ella incluya todos los datos conocidos, habitualmente
considerados buenos.
La interpolación tiene como objetivo la obtención de nuevos puntos de una sucesión, o conjunto de ellos, que obe-
dece a algún patrón determinado —ver figura 5.1b—. Busca obtener una función que se verifique en todos los puntos
conocidos y que permita calcular tantos nuevos como se desee. Algo tan aparentemente intuitivo como lo que expresa
esa figura, en la que los datos son los círculos rellenos y el resultado la función que permite dibujar la curva que los
realiza a todos. El conseguirlo no es tan fácil.
Un ejemplo habitual cercano a esta idea sería el de encontrar el valor de y para un x cualquiera en un experimento en
el que se han obtenido un conjunto de duplas .x; y/, como se razona en la figura 5.2.
La aproximación busca una función que de resultados tan cercanos como sea posible a los de otra, o a un conjunto de
datos, no necesariamente “pasando” por, o cumpliéndose para todos ellos.
También, aproximar una función a otra para evitar tener que evaluar su “complicada” expresión; por ejemplo la de la
distribución normal estándar, ˇ x
1 y 2 =2
N.x/ D p e dy:
2
1
 LaEn
interpolación tieneobtener
muchos casos, como los
objeto la obtención
parámetros de función
de una nuevos puntos
teórica apreestablecida que mejor se ajusta a puntos empíricos.
partir
El del conocimiento
ajuste por mínimos
Interpolation de un
betweencuadradosconjunto discreto de ellos.
del capítulo anterior sería todo el aparato teórico y practico puesto a disposición de
data points
este propósito.
 Por ejemplo,
Consider
También, encontrar
a setpoder
of xy data el valor
collected
derivar de y an
during
o integrar para un dados
x cualquiera
experiment.
valores en formaen un
de tabla, hacer pasar por datos discretos, o cerca de ellos,
experimento
funciones en el
continuas
We use interpolation que se han obtenido
y derivables,
technique to estimate un conjunto de puntos
: : : y at x where there’s no data.
.x; y/.
y
y Datos
knownconocidos
data

La interpolación se puede ver como lo inverso


de la evaluación de una función, en la que se
¿Cuál is
esthe
el valor de pide un valor de y para cada valor dado de x. En
What
y que corresponde
corresponding a
value
la interpolación, dados esos puntos y, calcular
of y for
este x? this x ? la función que pueda generarlos.

x 5/82

Figura 5.2: Interpolación y evaluación de una función


a b c 1 2 3

d e f g 9 4 6 5

BASIC IDEAS
h i j 10 8 7

5.2 Interpolación numérica


From the known data ( xi , yi ), interpolate yˆ = F ( xˆ ) for xˆ ≠ x i

x y y F(x)
Para1 obtener
1
una función de interpolación, f .x/, un primer acercamiento al problema consiste en obtenerla mediante
M M
una combinación lineal de un conjunto de funciones estándar o funciones base fáciles de obtener.
xi se considera
Si y i interpolate
un conjunto de n funciones
ŷ base, j , j D 1; : : : ; n, se pretende que
xˆ → yˆ
x i +1 y i +1
M M X
n
f .x/ D cxj j .x/:
xn yn x̂
j D1
Determining coefficient a1, a2, . . . , an of basis function F(x)
Las funciones base —no triviales de presuponer en cualquier caso— pueden ser diversas:
F(x) = a1Φ1(x) + a2Φ2(x) + . . . + anΦn(x)
Polinomios, polinomios por trozos o porciones de ellos.
Funciones racionales.
Polynomials are often used as the basis functions.
Funciones trigonométricas, :::
F(x) = a + a x + a x2 + . . . + a xn-1
1 2 3 n
5.3 Interpolación polinómica j 123

El proceso de interpolar lo desencadena un muestreo de un modelo, o de un experimento, del que se obtienen m datos
a los que se quiere hacer corresponder una función que se cumpla en todos esos datos.
Por experiencia, intuición, o inteligencia operativa, se escogen n funciones base j para combinarlas y, mediante un
proceso algebraico que desmenuzaremos, se llega a un sistema de ecuaciones lineales de la forma
n
i
cj j .xi / D f .xi /; i D 1; : : : ; m:
j D1

Este sistema:
Si m > n lo normal es que sea incompatible y habría que resolverlo mediante técnicas de mínimos cuadrados.
Si m < n tendrá muchas soluciones y habrá que considerar alguna de ellas por el criterio que sea adecuado.
Si m D n se puede determinar una única solución.
Para empezar con la exposición de las técnicas a emplear, vamos a ejecutar y analizar, a modo de prueba, el guión o
script de M ATLAB, Interpolacion_eje1.m. Su listado y resultados en una sesión de M ATLAB se pueden ver en la
figura 5.3. Lo iremos viendo en lo que sigue.

>> Interpolacion_eje1
p =
-0.0022 0.1802 0.3544
p =
-0.0000 0.0017 -0.0529 0.6705 -0.6192
% Interpolacion_eje1.m

xdat = [1 5 10 30 50]; 6

ydat = log(xdat);
plot(xdat,ydat, ’o’)
5
hold on

pause 4

p = polyfit(xdat,ydat,2) % grado 2
xvet=1:0.1:50; 3
plot(xvet,polyval(p,xvet))
hold on
2
pause

p = polyfit(xdat,ydat,4) % grado 4 1

plot(xvet,polyval(p,xvet))
0

-1
0 5 10 15 20 25 30 35 40 45 50

Figura 5.3: Fichero con ejercicio de interpolación y sus resultados

5.3 Interpolación polinómica


Teorema 5.1 Principal de la interpolación polinómica. Sean .x1 ; y1 /, .x2 ; y2 /, : : : ; .xn ; yn / n duplas de puntos con
distintas xi . Existe un polinomio, y sólo uno, P , de grado n 1, o menor, que satisface P .xi / D yi , i D 1; : : : ; n.
La polinómica es la forma más extendida de interpolación. En la expresión

X
n
cj j .xi / D f .xi /; i D 1; : : : ; n;
j D1

como funciones base se escogen monomios j .x/ D x j 1


.
124 j Capítulo 5. Funciones de interpolación y aproximación

Da lugar a pn 1 .x/ D c1 C c2 x C c3 x 2 C    C cn x n 1 , siendo los ci la solución del sistema lineal de Vandermonde


2 32 3 2 3
1 x1    x1n 1 c1 f .x1 /
61 x2    x n 1 7 6c2 7 6f .x2 /7
6 2 76 7 6 7
Ac D 6 : : : : 76 : 7 D 6 : 7:
4 :: :: : : :: 5 4 :: 5 4 :: 5
1 xn    xnn 1
cn f .xn /

Ejemplo 5.1 Consideremos estos precios del gas natural:

Año x 2007 2008 2009 2010 2011 2012


Precio y 133,5 132,2 138,7 141,5 137,6 144,2
Si construimos un pequeño script de M ATLAB para analizar las prestaciones de la interpolación polinómica con
estos datos resultaría algo como lo de la figura 5.4. A su lado se ve la sesión de ejecución del mismo y el gráfico a que
da lugar. Algo no parece ir bien del todo, sin haber hecho nada incorrectamente.

year=[2007 2008 2009 2010 2011 2012]’; >> Interpolacion_eje2


precio=[133.5 132.2 138.7 141.5 137.6 144.2]’; Warning: Matrix is close to singular or badly scaled.
M = vander(year); Results may be inaccurate. RCOND = 7.482181e-033.
a = M\precio; > In Interpolacion_eje2 at 4
x=linspace(min(year),max(year));
p=polyval(a,x); 146
plot(year,precio ,’o’,x,p,’-’);
hold on 144

pause 142

x1 = 2007:1:2012; 140

y = interp1(year,precio,x1,’linear’);
plot(year,precio,’o’,x1,y,’-’) 138

hold on
136

pause 134

ys = year-mean(year); 132
A = vander(ys);
a = A\precio; 130
ds = x - mean(year);
p = polyval(a,ds); 128
2006 2006.5 2007 2007.5 2008 2008.5 2009 2009.5 2010 2010.5 2011
plot(year,precio,’o’,x,p,’-’);

Figura 5.4: Interpolación de diversos precios del gas natural

5.3.1 Polinomios de Lagrange


Deben su formulación al trabajo de Joseph-Louis Lagrange, Turin 1736-París 1813.

Lagrange

Dados dos puntos .x1 ; y1 / y .x2 ; y2 /, el polinomio lineal que los interpola es

p1 .x/ D c1 C c2 x;

siendo y1 x2 y2 x1 y2 y1
c1 D y c2 D :
x2 x1 x2 x1
5.3 Interpolación polinómica j 125

Sustituyendo estas expresiones en la de p1 .x/ y ordenando el resultado se tiene que


x x2 x x1
p1 .x/ D y1 C y2 D y1 `1 .x/ C y2 `2 .x/:
x1 x2 x2 x1
`1 y `2 son los polinomios de interpolación de Lagrange de primer orden.
En general, para un conjunto de datos .xi ; yi /, i D 1; : : : ; n, las funciones base de Lagrange en el cuerpo Pn 1 son
Y
n
.x xk /
kD1; k¤j
`j .x/ D ; j D 1; : : : ; n:
Y
n
.xj xk /
kD1; k¤j

Cada una de las funciones `j .x/ son polinomios de grado n 1 y cumplen que
(
1 si i D j
`j .xi / D ıij D ; i; j D 1; : : : ; n:
0 si i ¤ j
 En la figura se ven las funciones base de Lagrange para
En la figura 5.5 se pueden verx las
D funciones base de
Œ0 0;25 0;50 Lagrange
0;75 1T . para cinco puntos.
Funciones base de Lagrange para x=[0.00, 0.25, 0.50, 0.75, 1.00]
1.2

1 l2 l4
0.8
l3
0.6
l1 l5
0.4
lk(x)

0.2

−0.2

−0.4

−0.6
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x
Figura 5.5: Funciones base de Lagrange para cinco puntos igualmente espaciados de 0 a 1
15/83

Con esta base, la matriz A para elaborar la interpolación ya no es de Vandermonde sino la identidad, I, y el polinomio
de interpolación a b c 1 2 3

pn 1 .x/ D y1 `1 .x/ C y2 `2 .x/ C    C yn `n .x/:


d e f g 9 4 6 5

h i j 10 8 7

Un posible código de M ATLAB para obtener la interpolación de unos puntos con polinomios de Lagrange y un script
para su utilización se listan en el cuadro 5.1. El resultado que se obtiene de ejecutar en una sesión de M ATLAB ese
script con la instrucción >>do_Lagrange_int es el de la figura de ese cuadro.
Volvamos al problema de los precios del gas natural y utilicemos otro script de M ATLAB, como el del cuadro 5.2,
que ejecutamos y obtenemos la figura que se ve en él.

5.3.2 Polinomios de Newton


El polinomio de interpolación de Newton tiene la forma
pn 1 .x/ D d1 C d2 .x x1 / C d3 .x x1 /.x x2 / C    C dn .x x1 /.x x2 /    .x xn 1 /:

Sus funciones base son


jY1
j .x/ D .x xk /; j D 1; : : : ; n:
kD1
126 j Capítulo 5. Funciones de interpolación y aproximación

% do_Lagrange_int.m
x = [-2 -1 1 2]; y=[-6 0 0 6];
l = lagrang_int(x,y);
xx = [-2:0.02:2]; yy = polyval(l,xx);
plot(xx,yy,’b’,x,y,’o’)
function [l,L]=lagrang_int(x,y)
% Calcula el polinomio de interpolación de Lagrange 6
% x e y vectores de datos, l coef. polinomio resultante
% L polinomio base
N=length(x)-1; l=0; 4

for m=1:N+1
P=1; 2
for k=1:N+1
if k~=m, P=conv(P,poly(x(k)))/(x(m)-x(k)); end
end 0
L(m,:)=P; % Polinomios de Lagrange base
l=l+y(m)*P; % Coef. polinomio resultante
end
−2

end
−4

−6
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2
Cuadro 5.1
145

% do_Lagrange_int_gas_1.m 140
year = [2007 2008 2009 2010 2011 2012]’;
precio= [133.5 132.2 138.7 141.5 137.6 144.2]’;
ys = year-mean(year);
l = lagrang_int(ys,precio)
x = linspace(min(year),max(year),200); 135
ds = x - mean(year);
p=polyval(l,ds); plot(year,precio ,’o’,x,p,’-’);

 En la figura se ven las funciones base de1302007


Newton 2008
para 2009 2010 2011 2012
x D Œ0 0;50 1;00 1;50 2T . Cuadro 5.2
Funciones base de Newton para x=[0.00, 0.50, 1.00, 1.50, 2.00]
3

2.5

1.5
Newk(x)

1
1
0.5 2 3 4 5

−0.5
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x
Figura 5.6: Funciones base de Newton para cinco puntos igualmente espaciados de 0 a 2
22/58
5.3 Interpolación polinómica j 127

El polinomio de interpolación entonces pn 1 .x/ D d1 1 .x/ C d2 2 .x/ C    C dn n .x/. En la figura 5.6 se ven las
funciones base para x D Œ0 0;50 1;00 P 1;50 2 .
T

El que p.xi / D f .xi / hace que jnD1 dj j .xi / D f .xi /, i D 1; : : : ; n, lo que lleva a un sistema de ecuaciones
lineales de los di . Para i < j , j .xi / D 0, por lo que la matriz A es triangular inferior, con aij D j .xi /.
Ejemplo 5.2 Calculemos el polinomio de interpolación de Newton para los puntos . 2; 27/, .0; 1/ y .1; 0/. El
sistema que hay que resolver es
2 32 32 3
1 0 0 d1 y1
41 x2 x1 0 5 4d2 5 4y2 5 :
1 x3 x1 .x3 x1 /.x3 x2 / d3 y3
Sustituyendo
2 32 32 3
100 d1 27
41 2 05 4d2 5 4 15 :
133 d3 0
cuya solución es d D Œ 27 13 4T . El polinomio es por consiguiente
p.x/ D 27 C 13.x C 2/ 4.x C 2/x:
El cálculo polinomio de interpolación de Newton se puede optimizar usando las denominadas diferencias divididas.
Para ello, volviendo a la expresión matricial general anterior para un polinomio de segundo grado,
2 32 3 2 3
1 0 0 c1 y1
4 1 x2 x1 0 5 4 c2 5 D 4 y2 5 ;
1 x3 x1 .x3 x1 /.x3 x2 / c3 y3
si se sustrae de la segunda fila la primera, y de la tercera también la primera, se tiene que
2 32 3 2 3
1 0 0 c1 y1
4 0 x2 x1 0 5 4 c2 5 D 4 y2 y1 5 :
0 x3 x1 .x3 x1 /.x3 x2 / c3 y3 y1
Si se divide la segunda fila por .x2 x1 / y la tercera por .x3x1 / se llega a
2 32 32 y 3
10 0 c1 1
40 1 5 4 5 6 y2 y1 7
0 c2 4 x2 x1 5 :
0 1 x3 x2 c3 y3 y1
x3 x1

De la segunda fila se obtiene que c2 D .y2 y1 /=.x2 x1 /.


Se introducen ahora las diferencias divididas de primer orden
y2 y1 y3 y1
f Œx1 ; x2   y f Œx1 ; x3   :
x2 x1 x3 x1
Si se sustrae la tercera fila de la segunda se llega a
2 32 3 2 y1
3
10 0 c1
40 1 6 7
0 5 4 c2 5 D 4 f Œx1 ; x2  5:
0 0 x3 x 2 c3 f Œx1 ; x3  f Œx1 ; x2 
Si se divide la tercera fila por x3 x2 se llega a
2 32 3 2 y1
3
100 c1
4 0 1 0 5 4 c2 5 D 6
4 f Œx1 ; x2  5 ;
7
001 c3 f Œx1 ; x2 ; x3 
128 j Capítulo 5. Funciones de interpolación y aproximación

donde
f Œx1 ; x3  f Œx1 ; x2  no trivial f Œx2 ; x3  f Œx1 ; x2 
f Œx1 ; x2 ; x3   D :
x3 x2 x3 x1
Lo no trivial
y3 y1 y2 y1 y y y2 y1  y 
x1 / x3 x1 y2 Cy2 2 y1
f Œx1 ;x3  f Œx1 ;x2  x3 x1 x2 x1 .x3 x2 x1 y3 y1 x2 x1 .x3 x2 Cx2 x1 /
x3 x2 D x3 x2 D 3 1
.x3 x2 /.x3 x1 / D .x3 x2 /.x3 x1 /

y3 y2 y2 y1 .y2 y1 /.x3 x2 / .y2 y1 /.x2 x1 / y3 y2 y2 y1


x3 x2 C x3 x2 .x2 x1 /.x3 x2 / .x2 x1 /.x3 x2 / x3 x2 x2 x1 f Œx2 ;x3  f Œx1 ;x2 
D x3 x1 D x3 x1 D x3 x1

Con estas fórmulas de recurrencia, para un polinomio de segundo grado,


c1 D f Œx1  D y1
y2 y1
c2 D f Œx1 ; x2  D
x2 x1 y3 y2 y2 y1
f Œx2 ; x3  f Œx1 ; x2  x3 x2 x2 x1
c3 D f Œx1 ; x2 ; x3  D D
x3 x1 x3 x1
En general
f ŒxiC1 ; : : : ; xj  f Œxi ; : : : ; xj 1
f Œxi ; : : : ; xj  D :
xj xi
Las diferencias divididas se pueden calcular en forma de tabla
x f Œ f Œ;  f Œ; ;  f Œ; ; ; 
x1 f Œx1 
f Œx1 ; x2 
x2 f Œx2  f Œx1 ; x2 ; x3 
f Œx2 ; x3  f Œx1 ; x2 ; x3 ; x4 
x3 f Œx3  f Œx2 ; x3 ; x4 
f Œx3 ; x4 
x4 f Œx4 
Ejemplo 5.3 Calcular el polinomio de interpolación de Newton de los puntos

3
x 1 2
0 2

13 5
y 3 4
3 3

La tabla de diferencias divididas es:


x f Œ f Œ;  f Œ; ;  f Œ; ; ; 
x1 f Œx1 
f Œx1 ; x2 
x2 f Œx2  f Œx1 ; x2 ; x3 
f Œx2 ; x3  f Œx1 ; x2 ; x3 ; x4 
x3 f Œx3  f Œx2 ; x3 ; x4 
f Œx3 ; x4 
x4 f Œx4 
En números
x f Œ f Œ;  f Œ; ;  f Œ; ; ; 
1 3
1
2
3 13 1
2 4 3
1 2
6
0 3 5
3
2
5 3
2 3
5.3 Interpolación polinómica j 129

El polinomio es entonces
 
p3 .x/ D 3 C 21 .x 1/ C 13 .x 1/ x 32 2.x 1/ x 32 x
10 16
D3 x C x 2 2x 3 :
3 3
El programa de M ATLAB de la parte de arriba del cuadro 5.3 realiza la interpolación de Newton. Debajo de él hay un
script con un ejemplo que invoca el anterior. Los resultados de ejecutarlo se presentan en el recuadro y en la figura
más abajo.

function [n,DD]=Newton_int_1(x,y)
% Interpolación con polinomios de Newton
% Vectores de entrada x e y; salida: coef. en n y dif. en DD
N = length(x)-1;
DD = zeros(N+1,N+1); DD(1:N+1,1) = y(:);
for k=2:N+1
for m=1:N+2-k
DD(m,k)=(DD(m+1,k-1)-DD(m,k-1))/(x(m+k-1)-x(m)); % Difer. divididas
end
end
a = DD(1,:); n = a(N+1);
for k=N:-1:1
n = [n a(k)] - [0 n*x(k)]; % n(x)*(x-x(k-1))+a_k-1
end
end

%do_newton_int_1.m
x=[-2 -1 1 2 4]; y=[-6 0 0 6 60]; % datos ordenados
[n,DD] = Newton_int_1(x,y)
n0 = lagrang_int(x,y) % por comparar con Lagrange
x = [1 2 4 -1 -2]; y=[0 6 60 0 -6]; % orden aleatorio datos
[n1,DD]= Newton_int_1(x,y)
xx = [-2: 0.02 : 4]; yy = polyval(n,xx);
clf, plot(xx,yy,’b-’,x,y,’o’) % se dibuja último caso
60

>> do_newton_int_1 50
n = 0 1 0 -1 0
DD =
-6 6 -2 1 0 40
0 0 2 1 0
0 6 7 0 0
6 27 0 0 0 30
60 0 0 0 0
n0 = 0.0000 1.0000 0.0000 -1.0000 0
20
n1 = 0 1 0 -1 0
DD =
0 6 7 1 0 10
6 27 5 1 0
60 12 1 0 0
0 6 0 0 0 0
-6 0 0 0 0

−10
−2 −1 0 1 2 3 4

Cuadro 5.3: Código para llevarla a cabo y ejemplo de interpolación con polinomios de Newton

Si en una sesión de M ATLAB, por otro lado, resolvemos manualmente el ejemplo 5.3 mediante la tabla de diferencias
divididas, resulta lo que se lista en el cuadro 5.4

5.3.3 Polinomios Ortogonales


Un espacio vectorial muy utilizado para recabar funciones base de interpolación es el de los polinomios ortogonales, Pn .
En él, el producto interior de dos polinomios hp; qi en el intervalo Œa; b se define como
l b
hp; qi D p.x/q.x/!.x/ dx;
a
Se puede usar cualquier procedimiento de ortogonalización, por ejemplo Gram-Schmidt, para obtener una
base
130 ortonormal de un
j Capítulo 5. Funciones espacioy de
de interpolación polinomios. Por ejemplo, si !.x/ D 1, y en el intervalo Œ 1; 1 se aplica
aproximación

Gram-Schmidt a los monomios 1, x, x 2 , x 3 ; : : :, escalando los resultados para que pk .1/ D 1, para cada k, se
obtienen los polinomios de Legendre: >> x=[1 3/2 0 2]; y=[3 13/4 3 5/3];
>> [n DD]=Newton_int_1(x,y)
n = -2.0000 5.3333 -3.3333 3.0000
1; x; .3x 2DD = 1/=2; .5x 3 3x/=2;
3.0000 0.5000 0.3333 -2.0000
3.2500 0.1667 -1.6667 0
.35x 4 2
30x C 3/8; .63x
3.0000 -0.6667 5 0 30
70x C 15x/=8; : : : ;
1.6667 0 0 0

Los primeros n forman una base ortogonal de Pn 1 . Su fórmula


Cuadro 5.4 general es

1 di h 2 i
i
p .x/ D
donde !.x/ es una función de prueba (o deiponderación) .x
no negativa. 1/ :
Los polinomios son ortogonales si hp; qi D 0.
2i iŠ dx i
Un conjunto de polinomios fpi g es ortonormal si
(
Estos polinomios deben su nombre al gran Andrien-Marie Legendre, Francia, 1752-1833.
1 para i D j
hpi ; pj i D
0 para i ¤ j:

Se puede usar cualquier procedimiento de ortogonalización, por ejemplo Gram-Schmidt, para obtener una base orto-
normal de un espacio de polinomios. Por ejemplo, si !.x/ D 1, y en el intervalo Œ 1; 1 se aplica Gram-Schmidt a los
monomios 1, x, x 2 , x 3 ; : : :, escalando los resultados para que pk .1/ D 1, para cada k, se obtienen los polinomios de
Legendre:

1; x; .3x 2 1/=2; .5x 3 3x/=2; .35x 4 30x 2 C 3/8; .63x 5 70x 3 C 15x/=8; : : :

En la figura 5.7 se representan los seis primeros.


En la figura que sigue se representan los seis primeros polinomios de Legendre.

P0
P1
P3
P5

P4
P2

1O de ponderación. Figura 5.7

Los primeros n forman una base ortogonal de Pn 1. Su fórmula general es

1 di  2 
pi .x/ D .x 1/i :
2i i Š dx i

Estos polinomios deben su nombre al gran Andrien-Marie Legendre, Francia, 1752-1833.

Legendre
5.3 Interpolación polinómica j 131

Polinomio Símbolo Intervalo Función de ponderación


Legendre Pk Œ 1; 1 1
Chebyshev, primer tipo Tk Œ 1; 1 .1 x 2 / 1=2
Chebyshev, segundo tipo Uk Œ 1; 1 .1 x 2 /1=2
Jacobi Jk Œ 1; 1 .1 x/˛ .1 C x/ˇ ; ˛; ˇ > 1
Laguerre Lk Œ0; 1/ e x
2
Hermite Hk . 1; 1/ e x

Cuadro 5.5

Otros polinomios ortogonales conocidos son lo que se enuncian en el cuadro 5.5.


Los polinomios ortogonales tienen propiedades muy útiles para los algoritmos numéricos. Satisfacen fórmulas de
recurrencia que los hacen fáciles de generar y evaluar; por ejemplo,

pkC1 .x/ D .˛k x C ˇk /pk .x/ k pk 1 .x/:

La de los polinomios de Legendre, concretamente,

.k C 1/PkC1 .x/ D .2k C 1/xPk .x/ kPk 1 .x/:

También se usan frecuentemente para aproximar por mínimos cuadrados funciones mediante polinomios de cualquier
grado, pues la ortogonalidad hace que la matriz del sistema que se resuelve sea diagonal.
Los polinomios de Chebyshev son otra familia de polinomios ortogonales fundamental. En su forma trigonométrica
se definen, para x 2 Œ 1; 1, por la identidad

Tk .x/ D cos.k arc cos.x//

además de que T0 .x/ D 1 y T1 .x/ D x. Los cinco primeros los representa la gráfica de la figura 5.8 en la que se lista
también el programa que los calcula. Su fórmula de recurrencia de tres términos es TkC1 .x/ D 2xTk .x/ Tk 1 .x/. Los
primeros son,
1; x; 2x 2 1; 4x 3 3x; 8x 4 8x 2 C 1; 16x 5 20x 3 C 5x; : : : ;

Deben su nombre a Pafnuti Lvóvich Chebyshov, Rusia, 1821-1894.

Chebyshev

La propiedad quizás más interesante de esta familia de polinomios es la equialternancia, o equioscilación, pues los
sucesivos puntos extremos tienen igual magnitud pero signo distinto, como se aprecia en la figura anterior.
En interpolación polinómica de puntos de una función continua, el error máximo en un intervalo se minimiza si se
escogen como puntos de interpolación las raíces de los extremos de un polinomio de Chebyshev de grado adecuado: los
nudos o puntos de Chebyshev.
Los puntos de un polinomio de Chebyshev Tk son los k ceros o raíces de ese polinomio, es decir,
 
2i 1
xi D cos  ; i D 1; : : : ; k
2k
cs412: introduction to numerical analysis 10/12/10
132 j Capítulo 5. Funciones de interpolación y aproximación

Lecture 10: Introduction to Splines


Polinomios de Chebyshev
Instructor: Professor Amos Ron Scribes: Mark Cowlishaw, Nathanael Fillmore
1

P1

function p=chebypoly(n) %n es grado 0,1,2...


0.5
%
p=zeros(n+1,1); p1=[1]; p2=[1 0];
1 Review of Chebyshev Points
if n==0, p=p1;
P4
P2

elseif n==1, p=p2;


0
else

y
Last time we talked
for i=2:n briefly about using Chebyshev points for polynomial interpolation. The idea is
that our choice of interpolation points can have a large impact on the errorP3 of our interpolant. Recall
p =2*[p2 0]-[0 0 p1];
p1=p2;
the expression
p2=p; for error in polynomial interpolation (Given f the function we are approximating,
-0.5

interval end
[a, b], interpolation points ~x = (x0 , x1 , . . . , xn ), and interpolant pn ):
P5
end
end
-1
à n !
f (n+1) (c) Y
E(t) = f (t) − pn (t) = ·
-1 -0.8
(t −
-0.6
xi )-0.4 (for 0x some
-0.2 0.2
c ∈0.4[a, b])
0.6 0.8 1
(1)
(n + 1)!
Figura 5.8: Cinco primeros polinomios i=0
| de Chebyshev
{z y el
} código que los genera
(a)
y los k C 1 puntos extremos (máximos y mínimos), incluidos los de los extremos del intervalo, es decir
If we know a great deal about the function  f , then we may be able to choose points so as to
i
reduce the error. If we don’t have such cos
xi D information D 0; : : : ;the
; i about k: function, however, the best we can
k
do is to reduce the product (a). The Chebyshev points effectively minimize the maximum value of
Los puntos de Chebyshev son las abcisas de los puntos igualmente espaciados a lo largo de la semicircunferencia de
the radio
product
1 en R(a).
2
como se ve en la figura 5.9.
1

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1

Figura 5.9: Puntos de Chebyshev para interpolación

Figure
Si por ejemplo queremos usar puntos 1: Choosing
de Chebyshev Chebyshev
como abcisas Points e interpolar en el intervalo Œ 1; 1
de interpolación
puntos de la función de Runge
Recall the process for selecting Chebyshev points
f .x/ D
1 over an interval [a, b], as shown in Figure 1:
1 C 25x 2
1. Draw
(debida theDavid
a Carl semicircle on [a,Alemania,
Tolmé Runge, b] centered at the midpoint ((a + b)/2).
1856-1927),

2. To select N + 1 points, split the semicircle into N arcs of equal length.


3. Project the arcs onto the x-axis, giving the following
Runge formula for each Chebyshev point xj
µ ¶
a+b b−a j·π
xj = + · cos (for j = 0, 1, . . . , N )
2 2 N
5.4 Interpolación polinómica por trozos j 133

a través de puntos igualmente espaciados en las abcisas —fenómeno de Runge— y de Chebyshev, el resultado que se
obtiene con polinomios de Newton es el de la figura 5.10.

2 1.2

1
1.5
0.8
1
0.6

0.5 0.4

0.2
0
0

−0.5 −0.2
−1 −0.5 0 0.5 1 −1 −0.5 0 0.5 1

% Chebyshev_ejemplo_1.m
f = @(x)1./(1+25*x.^2); n = 11;
xe = linspace(-1,1,n);
xc = cos((2*(1:n)-1)*pi/2/n);
t = -1:.01:1;
c = Newton_int_1(xe,f(xe)); t1 = polyval(c,t);
subplot(121), plot(t,f(t),’b’,t,t1,’r’,xe,f(xe),’o’)
c = Newton_int_1(xc,f(xc)); t1 = polyval(c,t);
subplot(122), plot(t,f(t),’b’,t,t1,’r’,xc,f(xc),’o’)

Figura 5.10: Fenómeno de Runge sin usar puntos de Chebyshev y con ellos. El programa que se ha usado para obtener estos
gráficos

Se puede probar que el polinomio de Chebyshev de grado n que mejor interpola puntos de una función f .x/ usando
puntos de Chebyshev es:
n !
1 X X
nC1 i nC1
2
p.x/ D f .xi / C Tk .xi /f .xi / Tk .x/:
nC1
› i D1
nC1
kD1 Ÿ iD1

c0 ck

Para calcular el valor de ese p.x/ en determinados puntos se puede usar el algoritmo de Clenshaw —por Charles
William Clenshaw, Reino Unido, 1926-2004, del NPL—, una generalización de la regla de recurrencia de Horner. Su
expresión es
Xn
ck Tk .x/ D u0 xu1 ;
kD0

donde un D cn ; un 1 D cn 1 C 2xun y uj D cj C 2xuj C1 uj C2 ; j D n 2; n 1; : : : ; 0.


Los dos programas de M ATLAB del cuadro 5.6 calculan ese polinomio y lo evalúan para determinados puntos. Si se
utilizan con las instrucciones del mismo cuadro se obtiene el resultado de la figura en él incluida, que es idéntica al de
la figura 5.10.

5.4 Interpolación polinómica por trozos


Al interpolar mediante un único polinomio un conjunto amplio de datos algunas veces se pueden producir resultados
poco satisfactorios en forma de oscilaciones, o “ruido”. Una mejora sustancial se consigue si se interpola cada intervalo
entre datos mediante un único polinomio u otra función. La más simple entre éstas es un segmento de línea recta entre
cada dos datos o nudos. Pero hay más lógicamente.
134 j Capítulo 5. Funciones de interpolación y aproximación

>> f = @(x)1./(1+25*x.^2);
>> [c,x] = chebpol_int(f,11);
>> t = -1:.01:1;
>> plot(t,f(t),’b’,t,chebpol_clenshaw(c,t),...
function u = chebpol_clenshaw(c,x) ’r’,x,f(x),’ok’)
function [c,x] = chebpol_int(fn,n) n = length(c); 1.2
x = cos((2*(1:n)’-1)*pi/2/n); u = c(n)*ones(size(x));
y = fn(x); if n > 1
1
T = [zeros(n,1) ones(n,1)]; ujp1 = u;
c = [sum(y)/n zeros(1,n-1)]; u = c(n-1) + 2*x*c(n);
a = 1; for j = n-2:-1:1
0.8

for k = 2:n ujp2 = ujp1;


T = [T(:,2) a*x.*T(:,2)-T(:,1)]; ujp1 = u; 0.6

c(k) = sum(T(:,2).* y)*2/n; u = c(j)+2*x.*ujp1-ujp2;


a = 2; end 0.4

end u = u-x.*ujp1;
end end 0.2

end
0

−0.2
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1

Cuadro 5.6

5.4.1 Interpolación de Hermite


Esta interpolación tiene en cuenta los valores en puntos concretos de la función que hay que aproximar por interpolación
y el de sus derivadas. Cada tramo entre puntos es un polinomio de tercer grado con primera derivada continua en los
extremos. El número de ecuaciones que se añade así al sistema lineal que subyace en el proceso es importante. Se debe
al trabajo de Charles Hermite, Francia, 1822-1901.

Hermite

Supongamos que se quiere aproximar mediante interpolación f .x/ en el intervalo Œxi ; xd  con un polinomio de tercer
grado
p.x/ D a C b.x xi / C c.x xi /2 C d.x xi /2 .x xd /;
y que f .xi / D yi , f .xd / D yd , p.xi / D yi , p.xd / D yd , p 0 .xi / D si y p 0 .xd / D sd .
Necesitaremos calcular a, b, c y d . La derivada del polinomio es

p 0 .x/ D b C 2c.x xi / C d 2.x xi /.x xd / C .x xi /2 :

Sustituyendo los valores conocidos se tiene que

a D yi a C b.xd xi / C c.xd xi /2 D yd
b D si b C 2c.xd xi / C d.xd xi /2 D sd :

Escribiendo esto en forma matricial, se llega a


2 32 3 2 3
1 0 0 0 a yi
60 1 0 0 7 6 b 7 6 si 7
6 76 7 D 6 7:
4 1 xi xd .xd xi /2 0 5 4 c 5 4 yd 5
2
0 1 2.xd xi / .xd xi / d sd
5.4 Interpolación polinómica por trozos j 135

Si se tienen n nudos o datos, hará falta determinar 4.n 1/ parámetros de los polinomios. El que se requiera que
interpolen
166 | CHAPTER esos n datos añade 2.n 1/ ecuaciones, pues cada n 1 cúbica debe verificar los valores en sus extremos. El
3 Interpolation
que tengan derivadas continuas añade otras n 2 ecuaciones para cada punto de unión.
El total de
2. ecuaciones es 3n program
Build a Matlab 4, lo que deja 4.nthe1/
to evaluate cosine n parámetros
C 4 D correct
3nfunction libres. places
to 10 decimal La interpolación
using por tanto no
es única, por loChebyshev
que se pueden fijar más condiciones para esos grados de libertad: monotonicidad, convexidad,
interpolation. Start by interpolating on a fundamental domain [0, π/2], and extend etc.
La función que realiza esta aproximación en M ATLAB es pchip. Una sesión de trabajo con
your answer to inputs between −10 and 10 . You may want to use some of the Matlab code
4 4 un ejemplo sencillo la
refleja el cuadrowritten
5.7. in this chapter.

3. Carry out the steps of Computer Problem1


2 for ln x, for inputs x between 10−4 and 104 . Use
[1, e] as the fundamental domain. What is the degree of the interpolation polynomial that
0.8
guarantees 10 correct digits? Your program should begin by finding the integer k such that
ek ≤ x < ek+1 . Then xe−k lies in the0.6
fundamental domain. Demonstrate the accuracy of your
program by comparing it with Matlab’s0.4 log command.

4. >>Let
x = -3:3; |x|
f (x) = e . Compare evenly spaced 0.2 interpolation with Chebyshev interpolation by
>> y = [-1 -1 -1 0 1 1 1];
>>plotting degree n polynomials of both 0types on the interval [−1, 1], for n = 10 and 20. For
t = -3:.01:3;
>>evenly
p = pchip(x,y,t);
spaced interpolation, the left and right interpolation base points should be −1 and 1. By
>> plot(x,y,’o’,t,p,’-’) −0.2
sampling at a 0.01 step size, create the empirical interpolation errors for each type, and plot a
>> legend(’datos’,’pchip’,3)
comparison. Can the Runge phenomenon −0.4 be observed in this problem?

4 for f (x) = e−x .


−0.6 2
5. Carry out the steps of Computer Problem
−0.8 datos
pchip
−1
−3 −2 −1 0 1 2 3

3.4 CUBIC SPLINES


Cuadro 5.7
Splines represent an alternative approach to data interpolation. In polynomial interpola-
tion, a single formula, given by a polynomial, is used to meet all data points. The idea of
splines is to use several formulas, each a low-degree polynomial, to pass through the data
5.4.2 Splines points.cúbicas
The simplest example of a spline is a linear spline, in which one “connects the dots’’with
Una spline es una curva definida
straight-line mediante
segments. Assumeporciones
that wedeare
polinomios deof
given a set grado
datak, con continuidad
points (x1 , y1 ), . . . ,hasta
(xn , ylan )derivada k 1.
Una spline cúbica es un polinomio de tercer grado con continuidad hasta la segunda derivada.
with x1 < · · · < xn . A linear spline consists of the n − 1 line segments that are drawn
La idea de interpolar
between mediante
neighboringsplines
pairsesofusar varias
points. porciones
Figure deshows
3.12(a) spline,acada una
linear correspondiente
spline where, between a un polinomio de
grado bajo, paraeach
hacerlas
neighboring pair of points (xi , yi ), (xi+1 , yi+1 ), the linear function y = ai + bi xelisque se conectan
coincidir con varios puntos. El ejemplo más simple es un(a) spline lineal, en
los puntos a interpolar mediante
drawn through thesegmentos
two points. de The
recta. En ladata
given figura 5.11insethe
points muestra
figureun areejemplo de 1),
(1, 2), (2, spline lineal y el mismo
(4, 4),
con spline cúbica.
and (5, 3), and the linear spline is given by

y y
4 4

3 3

2 2

1 1

x x
1 2 3 4 5 1 2 3 4 5

Figura
(a) 5.11: Interpolación con spline lineal y spline (b)
cúbica

Figure 3.12 Splines through four data points. (a) Linear spline through (1,2), (2,1),
El desarrollo histórico de las splines y los protagonistas del mismo se indican en la figura 5.12.
(4,4), and (5,3) consists of three linear polynomials given by (3.15). (b) Cubic spline
through the same points, given by (3.16).
136 j Capítulo 5. Funciones de interpolación y aproximación

Splines
Paul de Faget de Casteljau 1930-
French mathematician/physicist
1958-1992: Citroën; unpublished work in 1958
Pierre Bezier 1910-1999
1933-1975: engineer at Renault
1960: beginning of CADCAM work, Bezier curves

Isaac Jacob Schoenberg 1903-1990


Born in Romania (Landau’s son-in-law). To USA in 1930.
Chicago, Harvard, Princeton, Swarthmore, Colby…
1941-1966: University of Pennsylvania
1943-1945: Army Ballistic Research Laboratory
1946: two papers on splines
1966-1973: U. of Wisconsin
Carl de Boor 1937-
Born in what became East Germany. To USA in 1959.
1960-1964: General Motors (grad student intern)
1962: first of many publications on splines
Purdue, Michigan…
1972- U. of Wisconsin

Figura 5.12: Desarrollo histórico de los splines y sus principales protagonistas. Trefethen [2005]

Como en el caso de Hermite, las splines cúbicas para interpolar n puntos de una función imponen 3n 4 condiciones,
más n 2 adicionales por requerirse la continuidad de la segunda derivada.
Los dos grados de libertad adicionales se fijan si, por ejemplo,
Las primeras derivadas en los extremos izquierdo y derecho se fijan en sendos valores.
Las segundas derivadas en los extremos son cero.
Las primeras y segundas derivadas en los extremos son iguales dos a dos, etc.
Ejemplo 5.4 Estudiemos la interpolación de tres puntos .x1 ; y1 /, .x2 ; y2 / y .x3 ; y3 /. Los polinomios de los dos tramos
podrían ser
p1 .x/ D ˛1 C ˛2 x C ˛3 x 2 C ˛4 x 3
p2 .x/ D ˇ1 C ˇ2 x C ˇ3 x 2 C ˇ4 x 3 :
Se necesitan 8 ecuaciones para determinar los parámetros.
El que las cúbicas pasen por los puntos dados impone las siguientes condiciones

˛1 C ˛2 x1 C ˛3 x12 C ˛4 x13 D y1
˛1 C ˛2 x2 C ˛3 x22 C ˛4 x23 D y2
ˇ1 C ˇ2 x2 C ˇ3 x22 C ˇ4 x23 D y2
ˇ1 C ˇ2 x3 C ˇ3 x32 C ˇ4 x33 D y3 :

La continuidad de las primeras derivadas en x2 impone esta condición

˛2 C 2˛3 x2 C 3˛4 x22 D ˇ2 C 2ˇ3 x2 C 3ˇ4 x22 :

La continuidad de las segundas derivadas en x2 impone esta otra

2˛3 C 6˛4 x2 D 2ˇ3 C 6ˇ4 x2 :

Por definición, se impone que las segundas derivadas en los extremos sean cero, lo que hace que

2˛3 C 6˛4 x1 D 0 y 2ˇ3 C 6ˇ4 x3 D 0:


5.4 Interpolación polinómica por trozos j 137

Todo en forma matricial queda


2 32 3 2 3
1 x1 x12 x13 0 0 0 0 ˛1 y1
61 x2 x22 x23 0 0 07 6 ˛2 7 6 y 2 7
6 0 76 7 6 7
60 x22 x23 7 6 7 6 7
6 0 0 0 1 x2 7 6 ˛3 7 6 y 3 7
60 x32 x33 7 6 7 6 7
6 0 0 0 1 x3 7 6 ˛4 7 D 6 y 4 7 :
60 1 2x2 3x22 0 1 3x22 7 6 7 6 7
6 2x2 7 6 ˇ1 7 6 0 7
60 6x2 7 6 7 6 7
6 0 2 6x2 0 0 2 7 6 ˇ2 7 6 0 7
40 0 2 6x1 0 0 0 0 5 4 ˇ3 5 4 0 5
0 0 0 00 0 2 6x3 ˇ4 0

Resolviendo este sistema se obtiene la solución deseada.


En M ATLAB esta función se realiza con spline, de C. de Boor. Una sesión de trabajo para comparar los resultados
con Hermite y la gráfica que resulta son los de la figura 5.13.

1.5

x = -3:3; 0.5
y = [-1 -1 -1 0 1 1 1];
t = -3:.01:3;
p = pchip(x,y,t); 0
s = spline(x,y,t);
plot(x,y,’o’,t,p,’-’,t,s,’-.’)
−0.5
legend(’datos’,’pchip’,’spline’,4)

−1 datos
pchip
spline
−1.5
−3 −2 −1 0 1 2 3

Figura 5.13

5.4.3 Curvas de Bézier


Dadas a conocer en los años 60 del siglo XX a través del trabajo de Pierre Bézier en Renault y Paul de Faget de Casteljau
en Citroën.
Se pueden ver como splines que a partir de unos puntos de control, o polígono de control, permiten al usuario controlar
las pendientes en esos puntos y modelizar curvas a voluntad, escalándolas sin límite. Su aplicación inicial era el diseño
de carrocerías de automóviles, barcos, hélices de barcos, etc.
Las funciones de base de las curvas de Bézier son los polinomios de Bernstein —conocidos desde 1912—, formulados
por Sergei Natanovich Bernstein, Rusia, 1880-1968. Ver figura 5.14.
Una curva de Bézier lineal que pasa por dos puntos P0 D .x0 ; y0 / y P1 D .x1 ; y1 / es la línea recta
B.t / D P0 C t .P1 P0 / D .1 t /P0 C tP1 ; 0  t  1:
Curva de Bézier de grado 1

Una cuadrática definida por tres puntos de control P0 D .x0 ; y0 /, P1 D .x1 ; y1 / y P2 D .x2 ; y2 / es la curva
B.t / D .1 t /2 P0 C 2.1 t /tP1 C t 2 P2 ; 0  t  1:
Curva de Bézier de grado 2

Una cúbica definida por cuatro puntos de control P0 D .x0 ; y0 /, P1 D .x1 ; y1 /, P2 D .x2 ; y2 / y P3 D .x3 ; y3 / es
138 j Capítulo 5. Funciones de interpolación y aproximación

AZUL

CYAN
Polinomios de Bernstein en t 2 Œ0; 1 para las
curvas de Bézier y0 D .1 t/3 , azul, y1 D
VERDE
3.1 t/2 t , verde, y2 D 3.1 t/t 2 , rojo y y3 D
ROJO
t 3 , cyan.

Bernstein

Figura 5.14

B.t / D .1 t /3 P0 C 3.1 t /2 tP1 C 3.1 t /t 2 P2 C 3t 2 P3 ; 3.51: Bézier Curves | 179


0t 
Curva de Bézier de grado 3
15. Compile a list of 121 hourly temperatures over five consecutive days from a weather data
Una de cuarto grado en Bézier de grado 4. Let
website. más, Bézier de
De x0=0:6:120 grado
denote 5. and y0 denote the temperatures at hours
hours,
La curvas de Bézier se pueden conectar
0, 6, 12,unas conCarry
. . . , 120. otrasout
con diversas
steps (a)–(c)continuidades y ampliarse
of Computer Problem paraadapted.
14, suitably definir superficies
en 3D.

Ejemplo 5.5 A BÉZIER


3.5 partir de los puntos de inicio y final .1; 1/ y .2; 2/, con los de control .1; 3/ y .3; 3/, vamos a calcular la
CURVES
curva de Bézier correspondiente. Vamos a utilizar las curvas de Bézier en forma paramétrica
Bézier curves are splines that allow the user to control the slopes at the knots. In return for
2 the first
the extrax.t / D x1the
freedom, Csmoothness
bx t C cx t of C dx t 3 and second derivatives across the knot, which
are automatic
y.t / D y1 C by t C cy t C dyof
features of the cubic splines
2
t 3the
: previous section, are no longer guaranteed.
Bézier splines are appropriate for cases where corners (discontinuous first derivatives) and
abrupt changes in curvature (discontinuous second derivatives) are occasionally needed.
donde
Pierre Bézier developed the idea during his work for the Renault automobile com-
pany. The same bx Didea 3.xwas 2 x1 /
discovered independently by Paul de Casteljau, working for
Citroen, a rival c D 3.x
x automobile 3 xcompany.
2/ bx It was considered an industrial secret by both com-
panies, and the D xthat
dx fact 4 bothx1 had bx developed
cx the idea came to light only after Bézier pub-
lished his research. Today
by D 3.y2 y1 / the Bézier curve is a cornerstone of computer-aided design and
manufacturing.
Each piece
cy Dof3.y y2 / Bézier
a 3planar
by spline is determined by four points (x , y ),
1 1
(x2 , y2 ), (x3 ,dyy3 ),D(xy4 ,4y4 ).y1The bfirst
y cy : last of the points are endpoints of the spline
and
curve, and the middle two are control points, as shown in Figure 3.14. The curve leaves
En el caso que nos ocupa, .x1 ; y1 / (x
D1 ,.1;
y1 ) 1/, .xthe
along 2 / D .1;
2 ; ytangent 3/, .x(x3 ;2 y−3 /x1D
direction , y2.3; y1 )yand
− 3/ .xends
4 ; y4at D4 ,.2;
/ (x y4 )2/. Lathe
along curva y las
tangent
ecuaciones de x e y son las indicadas en la figura
direction (x4 − 5.15.
x3 , y4 − y3 ). The equations that accomplish this are expressed as a para-
metric curve (x(t), y(t)) for 0 ≤ t ≤ 1.
y
3 (x2, y2) (x3, y3)

2
x.t / D 1 C 6t 2 5t 3 (x4, y4)
y.t / D 1 C 6t 6t 2 C t 3 :
1
(x1, y1)

x
1 2 3

Figure 3.14 BézierFiguracurve5.15


of Example 3.15. The points (x1 , y1 ) and (x4 , y4 ) are spline
points, while (x2 , y2 ) and (x3 , y3 ) are control points.

Bézier curve

Given endpoints (x1 , y1 ), (x4 , y4 )


5.4 Interpolación polinómica por trozos j 139

5.4.4 B-splines (basis spline)


Las B-splines son una generalización reciente de la curvas de Bézier, con las ventajas de los splines y sin alguno de los
problemas de aquellas. Su formulación se debe al trabajo de Isaac Jacob Schoenberg, Rumanía 1903-EE.UU. 1990.

Schoenberg

Son curvas hechas con trozos polinómicos de grado p. En la de la figura 5.16 se representa una curva de Bézier frente a
una B-spline con los mismos
370
puntos de control.
8 Polynomial Interpolation
370 8 Polynomial Interpolation

Figura
Fig. 8.15. 5.16:
Fig. Curva de Béziercurve
8.15.ofComparison
Comparison a Bézier y aB-spline
of Bézier con(left)
(left)curve
and aidénticos
and a puntos de B-spline
parametric
parametric control
B-spline (right).(right).
The vertices of The
the vertices of the characteristic
characteristic polygon arepolygon
denoted areby
denoted
◦ by ◦

Las B-splines pueden ser evaluadas de una manera numéricamente estable por el algoritmo de C. de Boor. Su extensión
son las NURBS: Non-uniform rational B-splines. Un ejemplo es el de la figura 5.17.

Referencias, fuentes y lecturas complementarias


Fig. 8.16. Some parametric B-splines as functions of the number and positions
of the vertices of the characteristic polygon. Notice in the third figure (right) the
Casi todo lo expuesto Fig.
en este
8.16.capítulo
Some es fruto
parametric
localization del
effects dueestudio
B-splines as del
to moving temavertex
functions
a single enthe
of múltiples papers
number and y documentos encontrados en
positions
of básicas
Internet. Las referencias the vertices of presentado,
de lo the characteristic
por polygon.
lo que a Notice
libros in the third figure
consagrados (right) the
se refiere, son Briggs y Henson [1995];
localization effects Indue to moving
Figure a single vertex
8.15 a[2012].
comparison is made between Bézier curves and parametric
Burden y Faires [2011]; Rao et al. [2010] y Sauer
B-splines for the approximation of a given characteristic polygon.
Sobre el desarrollo histórico de los
In Figure 8.15splines
We se puede
a comparison
conclude consultar
thisissection
made between
by la magnífica
noticing Bézier curvescharla
that parametric and deB-splines
Trefethen
parametric
cubic [2005].
allow
Todos los programasB-splines
de ordenador forson
for the del autor;
obtaining locallyestán
approximation basados
straight
of a givenlines byen los correspondientes
aligning
characteristic four algoritmos
consecutive vertices
polygon. (see y contrastados con
ejemplos obtenidos de Internet.
We conclude Figure
this 8.16) andby
section that a parametric
noticing B-spline cancubic
that parametric be constrained
B-splines at a specific
allow
point of straight
for obtaining locally the characteristic
lines bypolygon by simply
aligning making threevertices
four consecutive consecutive
(seepoints
of the polygon coincide with the desired point.
Figure 8.16) and that a parametric B-spline can be constrained at a specific
point of the characteristic polygon by simply making three consecutive points
of the polygon8.9
coincide with the desired point.
Applications
In this section we consider two problems arising from the solution of fourth-
order differential
8.9 Applications equations and from the reconstruction of images in axial
tomographies.
In this section we consider two problems arising from the solution of fourth-
8.9.1equations
order differential Finite Element Analysis
and from of a ClampedofBeam
the reconstruction images in axial
tomographies.Let us employ piecewise Hermite polynomials (see Section 8.5) for the numeri-
cal approximation of the transversal bending of a clamped beam. This problem
8.9.1 Finite was already Analysis
Element considered in
ofSection 4.7.2 where
a Clamped Beamcentered finite differences were
used.
Let us employ piecewise Hermite polynomials (see Section 8.5) for the numeri-
cal approximation of the transversal bending of a clamped beam. This problem
was already considered in Section 4.7.2 where centered finite differences were
used.
140 j Capítulo 5. Funciones de interpolación y aproximación

Figura 5.17: Curvas NURBS


Capítulo 6

Funciones trigonométricas de interpolación


y ajuste. La Transformada de Fourier

Contenido
6.1 Funciones trigonométricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.2 Interpolación trigonométrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
6.3 Elementos de números complejos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.4 Transformada Discreta de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
6.5 Transformada Rápida de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
6.5.1 Interpolación trigonométrica con la Transformada Rápida de Fourier . . . . . . . . . . . . . . 150
6.5.2 Aplicaciones prácticas: Sonido, ruido, filtrado, ... . . . . . . . . . . . . . . . . . . . . . . . . 153
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

L AS señales y datos que nos llegan o vemos a diario pueden ser digitales o analógicos. El término analógico se
refiere a la información que es continua. El digital se refiere a la información que tiene estadios discretos.
El procesamiento digital de señales —DSP, Digital Signal Processing— es uno de los elementos primordiales de la
economía digital que viene desarrollándose tan rápidamente en nuestra economía y sociedad desde hace años. El núcleo
básico de todo ello está cimentado en lo que tratamos en este capítulo.

6.1 Funciones trigonométricas


Las funciones trigonométricas a base de senos y cosenos son idóneas para modelizar y tratar, mediante interpolación
o ajuste, la información de fenómenos cíclicos o periódicos: señales acústicas, ópticas, económicas y sociales. Esas
funciones cumplen que
x.t / D x.t C T / D x.t C 2T / D    D x.t C nT /;

para un periodo T .
La representación de una función continua o discreta mediante combinaciones lineales de senos y cosenos permite
descomponerla en su espacio de frecuencias —como se esquematiza en la figura 6.1— lo que ayuda a un análisis más
preciso de algunos de sus parámetros básicos, o más útiles para determinados fines.
También se pueden analizar de esa manera las distintas frecuencias de señales luminosas, sonido y muchos otros tipos
de mediciones como pretende esquematizar la figura 6.2.
Gran parte de lo que estudiamos en este capítulo se debe al genio creador del matemático y físico Jean-Baptiste Joseph
142 j Capítulo 6. Funciones trigonométricas de interpolación y ajuste. La Transformada de Fourier

Figura 6.1: Descomposición de señales en sus componentes y en el dominio de sus frecuencias

Figura 6.2

Fourier, Francia, 1768-1830, conocido universalmente por su Théorie analytique de la chaleur.

Fourier

Estudiando cómo se transmite el calor, Fourier demostró que cualquier función periódica y continua, C Œ0; 2, puede
representarse como una suma infinita (serie de Fourier) de polinomios trigonométricos sinusoidales de la forma
1
a0
i h i
x.t / D C aj cos.2f0 tj / C bj sen.2f0 tj / ;
2
j D1

donde f0 es la frecuencia fundamental, inversa del periodo T , f0 D 1=T y los aj y bj vienen dados por las fórmulas de
Euler: l T
2
aj D x.t / cos.2f0 tj / dt; para j D 0; 1; : : :
T
0
y
l T
2
bj D x.t / sen.2f0 tj / dt; para j D 1; 2; : : :
T
0
6.2 Interpolación trigonométrica j 143

Leonhard Euler, Basilea 1707-San Petersburgo 1783, es otro de los formidables genios —gigantes, como apuntaba
Newton— con los que nos encontramos una vez más, de las varias que lo hacemos a lo largo de este libro.

Euler

1102_ch16_380-404.qxd 12/17/10 8:17 AM Page 382


Las funciones 1=2, sen.2f0 tj /, cos.2f0 tj /; j D 1; : : : constituyen una base de un espacio vectorial de dimensión
infinita —espacio de Hilbert— de funciones ortogonales, con el producto interior
a01102_ch16_380-404.qxd 12/17/10 8:17 AM Page 382 Z 2
hf; gi D f .t /g.t / dt:
0
382 Los jaFOURIER
y b sonANALYSIS
los coeficientes
de x.t / en dicha base.
j

mos
382
la siguiente función y.t / D A0 C C1 cos.!0t C  /.
Veamos la siguiente función y.t / D A0 C C1 cos.!0 t C  /.
FOURIER ANALYSIS
y(t)
amos la siguiente función y.t / D A0 C C1 cos.!0t C  /.
y(t) C1
2

C1 a0 D 1;7
2
1 C1 D 1
a0
T
! D 2f D 2=T D 2=.1;5s/
1θ A0 Fase,  D =3 D 1;0472 radianes .0;25s/
T
θ 1 2 t, s Frec. fundamental, f D 1=T D 1=.1;5s/ D 0;6667 Hz
0 π1 2π 2 3π t, s ωt, rad
0 π (a)2π 3π ωt, rad
Descompuesta en sus tres(a)componentes se ve así:
2
2 A0
a0

1 1
b 1 sen(ωB 1 sin (ω0t)
0t) a1 D 0;5
0 0 b1 D 0;866
a 1 cos(ω0A
t) cos (ω t)
1 0 y.t/ D a0 C a1 cos.!0 t/ C b1 sen.!0 t/
1
1
(b)

a parte (a) se representa la funciónmuchas


En general, . En estedecaso A0 D 1;7
las señales , C1 D 1, que
habituales ! Drecibimos
2f D 2=T frutoD de2=.1;5s/
las comunicaciones, o del comportamiento de
parte
fase  (a) se representa
D =3 1;0472FIGURE
D distintos la función
16.2.0;25s/
radianes . En . este caso A0 fDD1;7
La frecuencia 1=T, CD 1 D 1, ! DD2f
1=.1;5s/ 0;6667 D Hz.
2=T D 2=.1;5s/
objetos que las emiten, incorporan
= A 0 + C1 cos( armónicos
t+ ). ForDo componentes
case, A0 = 1.7, que es interesante estudiar para conocerlas mejor
se se
b) D la=3
 ve D 1;0472
expresión
FIGURE
(a)
deC(a)
la función
of 16.2
radianes
A plot the sinusoidal
.0;25s/ . Las),y(t)
function frecuencia D0A
fradians
D 1=T
C
this1=.1;5s/
cos.! C D1 sen.!
0;6667 Hz.
o tratarlas
1 =A1, para
0 =
plot of en
thesus
su
2/T =tres componentes:
utilización
2/(1.5
sinusoidal comercial. ==/3
and y(t)
function y.t/
AEl0 + la
C figura
1
= A6.3
1.0472
cos(
0 0t +
1 se
).
(= 0.25
For
0 t /
presenta
s).
this B una
Other
case, A 0 = 0 t/periódica general, aproximación de una
señal
1.7,
Ase
1 Dve0;5
la expresión
y B1 D 0;866 deC1la= . función
parameters
digital, 1,  used=toen
2/T sus
describe
y sus descomposición= tres componentes:
the curve
2/(1.5 are
s), the
andfrequency
 = /3 D
f =radians
y.t/ A
0/(2), = C A
which for
1.0472 cos.!
this
(= case
0.25t
is / C
s). B 1 sen.!0 t/
Other
s) = 0.6667 Hz anden armónicos ens.el(b)tiempo y enexpression
frecuencias.
0 0 1 0
1 cycle/(1.5 period T = 1.5
D 0;5 y B1 D 0;866 used to describe thethecurve
. is y(t)
parameters are the frequency An alternative
f = 0/(2), whichoffor
the
this case is
1 same curve = A0 + A1 cos(0t) + B1 sin(0t). The three components of this function
1 cycle/(1.5 s) = 0.6667
A1 = Hz
0.5 and
and Bthe period T = 1.5 s. (b) An alternative expression of6/35
the
are depicted in (b), where 1 = –0.866. The summation of the three curves in
same
(b) yieldscurve = Ain
is y(t)curve
the single 0 +
(a).A1 cos(0t) + B1 sin(0t). The three components of this function
6.2 (b)areInterpolación trigonométrica
6/35
depicted in (b), where A = 0.5 and B = –0.866. The summation of the three curves in
1 1
yields the single curve in (a).
clear-cut convention for choosing either function, and in any case, the results will be iden-
c
b 1
tical because
Se pretende
2
conthe
3
two
ella functions aremediante
representar simply offset time by π/2de
uninpolinomio radians.
gradoFor
m this chapter,
en Œ0; 2/ una función periódica de la que se conocen
g weclear-cut
9 will use convention
the6 cosine, for choosing
which either function,
can be expressed and in any case, the results will be iden-
generally as
n datos 1igualmente 3 espaciados fx0 ; x1 ; : : : ; xn 1 g —tren de impulsos— en ese intervalo. Se hará así
e f 4 5
c
b
tical 2
because+the
10 f (t)8 = A7
two functions are simply offset in time by π/2 radians. (16.2)
For this chapter,
i j 0 C1 cos(ω0 t + θ)
e f g we9 will use
4 the6 cosine,
5 which can be expressed
a X
generally
m as Xm
Inspection of Eq. (16.2) indicates that four
p.t parameters
/D
0 serve to uniquely characterize the
C aj cos.jt / C bj sen.jt /;
i j 10 f (t)
sinusoid 8 = 16.2a):
(Fig. A70 + C1 cos(ω0 t + θ) 2 (16.2)
j D1 j D1
• Inspection
The meanofvalue 0 sets the
Eq. A(16.2) average that
indicates heightfour
above the abscissa.
parameters serve to uniquely characterize the
• sinusoid
The amplitude C1 specifies the height of the oscillation.
(Fig. 16.2a):
• The angular frequency ω0 characterizes how often the cycles occur.
144 j Capítulo 6. Funciones trigonométricas de interpolación y ajuste. La Transformada de Fourier

A composite periodic signal

Decomposition of a composite periodic signal in the time and frequency domains

Figura 6.3: Descomposición característica de una función periódica compuesta en sus armónicos y en su espectro de frecuen-
cias

n  4   o
2.n 1/
cumpliéndose en los puntos .0; x0 /; 2
n
; x1 ; n
; x2 ; : : : ; n
; xn 1 .
El grado m del polinomio depende del tamaño de la muestra, n. Si n es par, sería m D n=2; si es impar, m D .n 1/=2.
Para obtenerlo de la manera que conocemos habría que determinar 2m C 1 parámetros: a0 , ai , bi , i D 1, : : : ; m.

Ejemplo 6.1 Interpolemos a los datos ˚   


2 4 6
.0; 1/; 4
;3 ; 4
; 5 ; 4
;2
el polinomio
a0 a2
p.t / D C a1 cos .1  t / C cos .2  t / C b1 sen .1  t / C b2 sen .2  t/ :
2 2

Para obtener los coeficientes a0 , a1 , a2 , b1 y b2 planteamos un sistema de ecuaciones lineales del tipo Ax D b, en el
que la matriz A es del tipo Vandermonde, y b D Œ1; 3; 5; 2T .
El sistema que hay que resolver, en forma matricial, es

2 3
1
1 1
0 0 2 3
6
2
  
2
    7 a0 2 3
6 76 7 1
6 76
1
cos 1  21 1
2 cos 2 
21
sen 1  21