You are on page 1of 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


/vP v] Œ_ o}• oP}Œ]šu}• Ç D š} }• Eµu Œ] }•X hv Œ u] vš} ‰Œ š] } À vÌ }
o }u‰µš ]•v ] vš_(] ]vP v] Œ]o }v D šo

WŒ]u Œ ] ]•vW v Œ} îìíó

^ Pµv ] ]•vW • ‰š] u Œ îìíó

ž Œ Z}• ] ]•v Œ • ŒÀ }•X

]š}Œ] o _Œ µo} Z}i}X

ÁÁÁX ]š}Œ] o ]Œ µo}Œ}i}X }u

]v(}› ]š}Œ] o ]Œ µo}Œ}i}X }u

}o ]•v ž /vÀ •š]P ]•v

] ]•vW ]š}Œ] o _Œ µo} Z}i}

D ‹µ š ]•vW ž :>&K

&}š}PŒ (_ µ ] Œš W ž rrrr

]• y} ‰}Œš W ž D Œš Z} Œ_Pµ Ì

WŒ} µ ] } ‰}ŒW ]š}Œ] o _Œ µo} Z}i}X

/^ EW

WM^/dK > ' >W $/

E]vPµv ‰ Œš •š ‰µ o] ]•vU ]v oµ] } o ]• y} µ ] Œš U ‰µ • Œ Œ ‰Œ} µ ] U


ou v } šŒ v•u]š] v u v Œ oPµv Ç ‰}Œ v]vP·v u ]}U Ç • o šŒ•v] }U
‹µ_u] }U u v] }U •‰š] }U PŒ ]•vU v /vš Œv š } (}š} }‰] U •]v ‰ Œu]•} ‰Œ À]} o
]š}Œ } o µš}ŒX d} }• o}• Œ Z}• Œ • ŒÀ }•X ]š}Œ] o _Œ µo} Z}i} v} š] v ‰}Œ ‹µ
•š Œ µ Œ } }v o • }‰]v]}v • o µš}Œ } }v o š Æš} o ‰µ o] ]•vU Œ }Œ v }
•] u‰Œ ‹µ o } Œ ‹µ š] v v •µ• u v}• ‰µ • Œ µv v}À o (] ]•v } µv v• Ç} v
o ‹µ o µš}Œ Z P À o}Œ ]}v • ‰ Œ•}v o • Ç •µ i š]À •X

h µ o‹µ] Œ (}Œu Œ ‰Œ} µ ]•vU ]•šŒ] µ ]•vU }uµv] ]•v ‰· o] } šŒ v•(}Œu ]•v
•š } Œ ••o} ‰µ • Œ Œ o]Ì }v o µš}Œ]Ì ]•v •µ• š]šµo Œ •U • oÀ} Æ ‰ ]•v
‰Œ À]•š ‰}Œ o o ÇX ]Œ_i • ZK ~ všŒ} •‰ y}o Œ Z}• Z ‰Œ}PŒ (] }•• •] v •]š
(}š} }‰] Œ } • v Œ oP·v (Œ Pu vš} •š } Œ ~ÁÁÁX }vo] v ] X }uV õí óìî íõ óì l
õï îóî ìð ðó•Xi

/DWZ ^K E ^W H t hE/ME hZKW


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:
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
1
el más pequeño en valor absoluto, .1;00/2  2 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
1
.0;01/2  2 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 anti 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 anti 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
52
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 :
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


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 :
52
Se ha desechado la ristra 0;1100  2  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

49
Se ha cometido así un error de redondeo al guardarlo de 0;2  2 .
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 ✷ designa cualquiera de las cuatro operaciones aritméticas elementales C, ,  y , y ja✷bj pertenece al conjunto
G, antes definido, el resultado de cualquier cómputo o cálculo en ordenador con ellas dará como resultado f l.a✷b/.
Cualquier operación aritmética en ordenador cumple que
f l.a✷b/ D .a✷b/.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
ja✷b f l.a✷b/j 1
 maq
K :
ja✷bj 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 :
1 5
Ejemplo 1.2 Supongamos que se quiere operar con los números x D 3
ey D 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
1 4 4
x˚y 0,10476  10 22=21 0,190  10 0,182  10
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


4 4
y u 0,30000  10 0,34714  10 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
x
Un ejemplo clásico de algoritmo numérico es el del cálculo de una serie exponencial como, por ejemplo, e . 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:
Effect of rounding error on algorithms

Example: two expressions for the same function:

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

2
>> expSeriesPlot(-10,5e-12) 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 −6
50 -1.644e-014 4.540e-005 1.422e-013 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
1
X
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:

i
n

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
12   17C28 1 2 23
7
y D Ax D 4 3 4 5 D 4 3  7 C 4  8 5 D 7 4 3 5 C 8 4 4 5 D 4 53 5 :
8
56 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

i
r

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
The product AB produces matrix C . The cij The
aend product
element is the AB end
produces a matrix C .
The columns of C are
nner 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).
a′(i) 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
The inner product view of the matrix–matrix product is easier to
helpful because it shows the relationship between the columns of
se for hand calculations. function C = MatMatVec(A,B)
Ar]=size(A);
[m n]=size(B);of C .
and the[rcolumns
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

MM: A Review of Linear Algebra page 45

NMM: A Review of Linear Algebra page 44


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,
i
r

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 2
n multiplicaciones C n .n 2/ C n 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
Espacios normados
3.1
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 com
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 5.609
Tiempos: Int: 4537.313; Exte: 970.969; Vec: 108.250; Strass: 78.938; MATLAB: vk  kuk C kvk 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 tam
del triángulo. Es una generalización del hecho de que un lado de un triángulo no pue
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 p
kxk D jx j C    C jx j p
;
p 1 n

 1=p
denominadas
p normas p p de Hölder. Casos particulares lo constituyen las correspond
kxkp D pjxD
1 j 2:C    C jxn 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 da
Hölder kxk1 D mKax jxi j :
1in

Estas normas cumplen, cualquiera que sea x 2 K , que n

kxk1  kxk2  kxk1  nkxk1 :

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


vectoriales 1, 2, 1, y p son las que representa la figura 3.2.

7
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
m
X
kAk1 D mKax jaij j (columnas) y
1j n
i D1
n
X
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
norma1
norma ∞

– La
Figura 1.7: aplicación
Efecto transforma
de una aplicación el vector
lineal sobre la bola unidad Œ1; 0Tunidad)
e 1 D (círculo en sícon
mismo y normas
diferentes
T T
e 2 D Œ0; 1 en Œ2;  
2 .     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 D1
 1  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
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

,QWHUYDOR LQLFLDO

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 34 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
1.3 Limits
valor que no es exactamente una raíz, no hay manera de que el método o algoritmo puedaof recuperarse
Accuracy ni | 45
hacer mucho
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
   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
f 00 .r/ D ans
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 coseno parece que converge a un punto concreto, r.
there is no way the method can recover. Another 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.
These observations motivate some key definitions.

DEFINITION 1.8 Assume that f is a function and that r is a root, meaning that it satisfies f (r) = 0. Assume
that xa is an approximation to r. For the root-finding problem, the backward error of the
approximation xa is |f (xa )| and the forward error is |r − xa |. ❒
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 tol. 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 < tol), 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 3 a los lados de la ecuación, también,

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
CHAPTER 1 Solving Equations

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
¿Qué formas detox an
D x-value,
g.x/, y por tanto
k
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 3 sen.x/:
successful—the 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
3 5 1 3
functions g (x) = −
Partiendo de x0 D 1, 1se obtienen x + and g (x) = − x + . In each case, the fixed point is x = 1,

 2 los puntos
3
2

2  21  2
but |g1 (1)| = − 2 > 1 while |g2 (1)| =k − 2xk < 1. Following the vertical and horizontal
  
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,
1; 053
the ones that represent the change
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
genera lo que se denomina una tela de arañag1entre
(x) = − 3 (xy D
la recta − x1)y +
2
la función
1 y D g.x/.

g1 (x) − 1 = − 23 (x − 1)
xi+1 − 1 = − 23 (xi − 1). (1.8)
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 g1i 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 c 2 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 x0 1,250000000000000
fx=@(x)x^2-1;
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 x4 1,000000000000001
fprintf(’ %18.15f\n’,x)
fprintf(’ %18.15f\n’,x) 1,000000000000000 x5 1,000000000000000
end
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 1 C
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
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 cuadrática
if (1) the backward errorinversa
improves (no D the
andy(2) p.x/ sino x D
bracketing p.y/)is acut
interval los
at tres
leastpuntos
in half. .f .xi /; xi /, .f .ai /; ai /
If not,
y .f .bi /; bi / conthe
el fin de reemplazar
Secant uno de ellos
Method is attempted withcon
theaquel
same —único— donde
goal. If it fails x Dap.y
as well, D 0/.Method
Bisection
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 2ǫmach max(1, xi ), or
when %%theBrent calcula la raíz de f(x)=0 en [a,b].
backward error |f (xi )| achieves
En [a,b] debe darse cambio
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;
>> fzero(f,[0 1],optimset(’Display’,’iter’))
s = fb/fa;
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 0
p = s*(2.0*m*q*(q-r)-(sb-sa)*(r-1.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 0.684910
if 2.0*p<3.0*m*q-abs(tol*q) & 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
Alternatively,
value = the
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 43 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 2pi 1 .x/ C xpi00 1 .x/;
0
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

n 1
1
g.x/ D C
x
r x q
1 n 1
h.x/ D C :
.x r/2 .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 < tol o jx rj < tol, siendo tol 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.
a c
Teorema 3.1
b
Compatibilidad de un1 sistema
2 3
de 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
Thermal Model of an IC Package (1)

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 0 1 17 6Q2 7 6 07
6 76 7 6 7
6 0 0R 0 1 0 07 6 7 6 Ta 7
6 3 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
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
X n
1 @ 0
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 8 5 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
A 7:
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
Ab1 D 6 0 0 7:
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
L1 A 76 D 7:
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
1000
6 2 1 0 07
L1 1 D6 7
4 2 0 1 05:
0001
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
Hagamos cero los coeficientes debajo de la diagonal principal de la 2a columna de A
b1.
3.2 Métodos directos de resolución numérica. Eliminación de Gauss j 65

1
Al tratar de hacerlo, vemos que el coeficiente pivote aO 22 es cero, lo que nos impide proceder como en la etapa anterior.
1
Comprobemos entonces si algún coeficiente de la columna 2 por debajo de aO 22 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 0 3 12 1 27
b 01 D 6
A 7:
40 1 2 0 25
0 0 3 1 5

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

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 10
aO ij aO ij ri  aO 2j ; i D 3; 4I j D 3; : : : ; 5:

Los valores de los multiplicadores para el ejemplo son

1 0 1 0
r3 D aO 32 =aO 22 D 1=3 y
1 0 1 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 10 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 10 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
A 7;
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
2
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
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
A 7:
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
10 0 0
60 1 0 07
L3 D 6
40 0
7:
1 05
00 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 47
6 7D6 7:
4 x3 5 4 15
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 2
™ „ƒ‚… „ƒ‚…
A x 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
   
1 1 2
A0 D 4 y b 0
D :
10 1 1
Continuando con el procedimiento normal, después de la primera etapa, se llegará a
   
0 1 1 0 2
A1 D y b1 D :
0 1 10 4 1 2  10 4
Por redondeos internos, la máquina representaría estas matrices así:
   
11 2
A10 D y b01 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;iWn . 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;iWn 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.
Partial Pivoting

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
g : _ e?**7 1Œ7'77  oV£VH !H7* _Bg

Rows completed in Rows completed in


¹ *¹ ¹ ¹  *
forward elimination. forward elimination.
*¹ * ¹ ¹
0 Row with zero pivot
0 element * Row with zero pivot element
¹ *¹ 5 Té 
Rows to search for a 5é for
 a ¹ Té *
more favorable pivot Rows to search
* element. * more favorable pivot
element. ¹   5é ¹
¹ *¹ é *¹ ¹
(a) Pivotación total en filas y columnas
Columns to search for a more (b) Rook pivoting
…äù2‰ ?œ'[
é méBééLé
$)$
émé$é‚
éLémé é)['
g  ¹
favorable pivot element.
% ! % ¯éhBé $é
8L$é $$é $8$
é
BÙ é Ì)é "é"$$
é é[8L$éLé
To minimize the effect of Figura 3.7:
roundoff, Estrategias
always choosedethe
pivotación
row that total y rook pivoting $é'$
éé8["$é8é6é
éBé "é
é )'[3é
é8
é$
$"éé
$$é8mé8é
é
puts the largest pivot element on the diagonal, i.e., find ip such
that |aip,i| = max(|ak,i |) for k = i, . . . , n )• 
        s
  x!   ?
 Resolución de Ax D b ͐!  •2 
 F)• _j `
3 ¡ G   
 Transformación de la Matriz Aumentada ŒAjb          
    R 2       
for i D 1 to n 1 2 2 ¡    
  ? Í    ! ° •
Determinar índice p 2 fi; i C 1; : : : ; ng tal que function [x]=Gauss(A,b)
¡°   !7   
°  K    ¢ 
% 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))); maxk=maxk+i-1;
  •      
  2  

 D a.j; i/=a.i; i/ if i~=maxk
  !  ˆ 
 ? +    2    !¤
for k D i C 1 to n C 1 A([i maxk],:) = A([maxk i],:); b([i maxk]) = b([maxk i]);
a.j; k/ a.j; k/   a.i; k/ end
NMM: Solving Systems of Equations page 37 K +~ °
j=i+1:n;
end !  +~ _• %•: Ž :
A(j,i) = A(j,i)/A(i,i); A(j,j) = A(j,j)-A(j,i)*A(i,j);
end !17 +~  D!ˆ
  !
DŽ
 
 ?$& =7#  0D
b(j) = b(j)-b(i)*A(j,i);
!  ~ _   ! $:8 7#  Dõ +~ ! $:8 #   8 # D––
end end
NMM: Solving Systems of i=n:-1:1
Equations ) $;8 #  9 # D  • I page 39
 Sustitución Inversa. for % Sustitución inversa
 
x(i)=(b(i)-A(i,i+1:n)*x(i+1:n))/A(i,i);
for j D n to 01 1 •* +~ ` D!ˆ 
 !
DŽ
 
 @$:8 + B, 0D
 end
Xn
end D8 D w • I• 
! > $;D8 DDY! õ +~ > $<D8 DD7 ±! õ ) $<D8  D
x.j / @b.j / a.j; k/  x.k/ A a.j; j /  
kDj C1
+  )    )   
 !
  !        ! 
end
    
 ! )  Q  T ( : _ :  s   
  •
     2) Q   !
 
   ˆ
   ¡   
 
Cuadro 3.2 2    ?
L•  ! )  w w


!  •  !  2
 D 28  
  
2! 
 
! 
 Ž T8 úÍ1BX
El código de M ATLAB pretende poderse aplicar a un sistema de žcualquier
 v +
` BStamaño.
   Resolvamos A $|
! 
  a  C' - 0D   
continuación con    
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 48/128
4:5
:
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
el vector
3 puntero resultase
24 3
6247
6
6 277
IPIV D
IPIV D 6
657
6 5
7;
7;
4
415 5 1
33
lamatrizA 0 queseobtendríanoresultaría serestrictamentetriangular superior.
0
la matriz ATendríalaforma
que se obtendría noquesigue.
resultaría ser estrictamente triangular superior. Tendría la forma que sigue.

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
d e f g 9 4 6 6 2 3 12 1 7
5

h i j 10 8 7
AD6 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 ✷  ✷ ✷ ✷
:: :: :: :: :: :: :: :: :: ::
: : : : : ! : : : : :
      0 ✷  ✷ ✷ ✷
      0 ✷  ✷ ✷ ✷

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

El símbolo ✷ 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
n 1
X 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:
n
X1 n
X1 n
X1 n
X1
.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:
n
X1 n
X1 n
X1 n
X1
.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
n 1
X 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
det.Bi / 6 a21    a2i 1 b2 a2i C1    a2n 7
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 i 7 6 7
˛i D 6 1=ai 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.
Introduciendo el mismo cambio bO D Œ 0,04; 0,06T en el término independiente del segundo sistema, b,
O su
solución pasa a ser Œ6; 0T . Es decir, un cambio relativo en la norma euclídea de bO igual a
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

[ $[
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:
1
La segunda igualdad, haciendo x D A 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/
mKaxi ji .A/j
5. 2 .A/ D mKın j .A/j , si A es simétrica.
i i
6. 2 .A T A/ D 22 .A/.
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
1
tiene un número de condición 1 .A/ D kAk1 kA k1 D 15  0,14 D 2,1. El de
 
b D 0,66 3,34 ;
A
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:


1
De esta matriz, kAk2 D 1 y kA 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 the asolution
Vamos analizar [x 1 , x2errores
estos 1].
] = [1,haciendo uso del sistema
The backward error is the infinity norm of the vector
x1 Cx2 D 2
2 1;0001x1 C x21 D 2;00011
  
−1
b − Axa = −
2.0001 1.0001 1 3.0001
cuya solución es Œ1; 1T . Queremos calcular
 los errores hacia
 atrás y hacia
 delante
 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;0001
 2   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 :
error realtivo hacia atrás krk
Denote the residual by r = b − Axa . The relative backward error ofkbk
system Ax = b
is defined to becon normas infinito, el error relativo hacia atrás es
Para el sistema anterior,
0;0001 ||r||∞
2;0001
 0;00005 , D 0;005 %
||b||∞

and the relative forward error is


||x − xa ||∞
.
||x||∞
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


l11 u12 D a12
2a fila de U : ! u1j D a1j = l11 ; j D 2; 3I
l11 u13 D a13

a l21 u12 C l22 D a22
2 col. de L: ! 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
i 1
X
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
li k D ai k pD1 lip upk ; i  k;
 Pk 1 ı
ukj D akj pD1 l kp upj lkk ; j > k:
nn
El algoritmo de Crout para factorizar una matriz regular A 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
T
es Œ3, 2, 1 , como se ve en este cuadro.

>> 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
)
a l21 u12 C u22 D a22
2 fila de U : ! 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
u D 4 05 y v D 415;
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,
2 3 2 3 2 3
1 3=2 7
vT 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
51 20 >> G’*G
6 12 0 07 en M ATLAB ans =
AD4 !
20 4 15 5.0000
1.0000
1.0000
2.0000
-2.0000
0
0
0
00 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 iX 1
u
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.n =6/ C O.n3 =6/ comparaciones
3

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].
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 · =
r ango(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 b c 1 2 3
como se expresa 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.
IRU DOO [ LQ Rn

7KH PRVW LPSRUWDQW DVSHFW RI WKH OHDVW VTXDUHV SUREOHP LV WKDW QR PDWWHU ZKDW [ ZH
VHOHFW WKH YHFWRU A[ ZLOO QHFHVVDULO\ EH LQ WKH FROXPQ VSDFH &RO A 6R ZH VHHN DQ [
WKDW PDNHV A[ WKH FORVHVW SRLQW LQ &RO A WR E 6HH )LJ 2I FRXUVH LI E KDSSHQV WR EH
LQ &RO A WKHQ E LV A[ IRU VRPH [ DQG VXFK DQ [ LV D ´OHDVW VTXDUHV VROXWLRQ µ 4.1 Introducción j 97

Ax̂ Ax
0
Im(A) Ax

'*(63&
Figura 4.3: Distintas  7KH YHFWRU
pseudosoluciones E LVDFORVHU
de Ax b y la de AO[ WKDQ
WR mínima norma kAx bk2
WR A[ IRU RWKHU [

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
11 1 2 3 2
61 2 4 7 x 1 637
6 7 4 5 6 7
4 1 3 9 5 x2 D 4 5 5 :
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Ž D V 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/.


O
Por el teorema de la proyección de la página 528, b 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
T
x DA AA 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, 1) = x1

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 de norma
  euclídea mínima
  1 de la    2 D 3
ecuación Œ 1 2  x1
  1 1   1 3 1 0;6
x and AAinT the bD
DAanyT vector null 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
T = [2 3 (E2.1.4)
x2− = − x1−

Ax 1 2] = 0;
Se ve que está en Im.A /. 2x2−
1C" 1 1 1 2 1
6 1 1 C "2 1 1 1 7
30/101
6 the minimum-norm solution
We use Eq. (2.1.7) to obtain 7
T 6 7
A AD6 1 1 1 C "2 1 1 7
6   
−1  2  7
a b
xo+ = AT [AA1T ]−12 b =3
c 41 1
[1 2]
11 13 = 13 C1" = 10.6 5 (E2.1.5)
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 and2 is the closest to the origin among the5 2 10
Si " es mayor quevectors
la precisión de la máquina
in the solution space. pero " no (por ejemplo, si " D 0,5  10 , " D 0,25  10 y la
precisión de la máquina  D 1,0  10 10 ), la representación interna de la matriz A T A será
2 3
2.1.3 The Overdetermined Case (M 1 1>1N): 1 1LSE Solution
If the number (M) of (independent)6
1 1 1 1 1is7greater than the number (N )
6equations
1 1 1 17
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
por lo que, a efectos numéricos en esa máquina, esta matriz
e = Ax − b será singular y de rango(2.1.8)
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|| 2
A o=AA
1 T
2
b]T [Axser
pueden
[Ax − − totalmente
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
a1 |e 1
a 3
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
r D QT :
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.

8
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 2wwT /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 .

×××× ✷✷✷✷ ✷✷✷✷ ✷✷✷✷ ✷✷✷✷


×××× 0 ✷✷✷ 0 0 0
×××× 0 ✷✷✷ 0 0 0 0 ▽▽ 0 0 ▽▽
×××× 0 ✷✷✷ 0 0 0 0 0▽ 0 0 0✸
×××× 0 ✷✷✷ 0 0 0 0 0▽ 0 0 0 0
×××× 0 ✷✷✷ 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 2 2
yk D ˙ akk C akC1k 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
2 2 2
donde s D akk C akC1k 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
if mKaxq  j /jg D 0 then stop
fja.j; j /j; : : : ; ja.m;
Pm 2
D kDj a.k; j /  sig no.a.j; j //
ı Pm 2
w.j W m/ a.j W m; j /; w.j / w.j / C ; ˇ D 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á
 
R
QT A T D :
0
 
R
Es decir, A T D Q , 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 z R 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
plano) Im(A),x lo
solución queessea busca
los vectores
resultaráque lo definen:
de deshacer a1 y a2de
el cambio ; es AT (Ax − b)es=decir:
decir, introducido;
variable 0. Si la
matriz AT A es invertible,  
r = b − Ax = (I z −P )b,
x D Q R : Im(A)
0
donde PIm(A) = A(AT A)−1 AT 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
T
a ker(A ).
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, Q1nn , tales que R 11 ; R 12 Q1 D
 
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 c
QT1 P T 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 c s 7
6 7 i
6 :: 7
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 xi 1 7
6 7
6 xi cos  C xj sen  7 i
6 xi C1 7
6 :: 7
G .i; j /x D 6
6 : 7
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 415
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.
     
0 
Ejemplo 4.5 Las operaciones necesarias para transformar la matriz  
 en R 0 0  , son las de la figura 4.14.
 0 0 0
Los símbolos ✷, 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
✷✷✷
6 0 ✷ ✷7 6 0 ✷ ✷7
A1 D G .1; 2/A D 6 7
4    5 ; A2 D G .1; 3/A1 D
6 7
4 0 ✷ ✷5;
 
2 3 2 3
555 555
6 0 ✷ ✷7 60 7
A3 D G .1; 4/A2 D 6 7
4 0 ✷ ✷ 5 ; A4 D G .2; 3/A3 D
6
40 0
7;
5
0 ✷ ✷ 0 ✷ ✷
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 0;6887 0;5700 0;1764 0;2096
32 35;1272 0 0
3
0;3987 0;3756 0;7455 0;2235 0;3071 0 2;4654 0
 0;2017 0;8903 0;4082

6 7 6 7
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
2
Método de Gram Schmidt mn
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 po
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
◮ 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
Try to
◮y ajuste.
 Interpolación vs. aproximación plot a smooth curve (a continuous differentiable function)
yy known data
Datos conocidos connecting these discrete points.
curve fit aproximada
Función
interpolation
Interpolación

x
x
Curve fitting:
 El ajuste,(a) fit function
en Interpolación & data
general, buscay predecirnot exactly agree
una tendencia o el
aproximación matemáticas (b) Interpolación de unos puntos por una función
comportamiento de datospasses
Interpolation: function de acuerdo
exactlycon un modelo
through known dado;
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

e f g

Interpolation approximate within the range of independent variable


d 9 4 6 5

h i j 10 8 7

of the given data set.

Extrapolation approximate outside the range of independent variable


of the given data set.
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 del conocimiento
Interpolation between de un
data conjunto
points discreto de ellos.
El ajuste por mínimos cuadrados del capítulo anterior sería todo el aparato teórico y practico puesto a disposición de
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 technique
continuas
We use interpolation que se han obtenido
y derivables, unxconjunto
: : : y at
to estimate de puntos
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
n
X
M M
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

i
n

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
6
xdat = [1 5 10 30 50];
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
n
X
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
n
Y
.x xk /
kD1; k¤j
`j .x/ D n
; j D 1; : : : ; n:
Y
.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
4
N=length(x)-1; l=0;
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
−2
end
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

a b c 1 2 3

d e f g 9 4 6 5

h i j 10 8 7
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
T
funciones base para x D Œ0 0;50 1;00 Pn 1;50 2 .
El que p.xi / D f .xi / hace que j D1 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 x 2 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 .x3 x1 / se llega a
2 32 3 2 3
10 0 c1 y1
40 1 0 5 4c2 5 6 y y 7
4 x2 x 1 5 :
2 1
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 x2 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
3 1 x2 x1 y3 y1 x2 x1 .x3 x2 Cx2 x1 /
x3 x2 D x3 x2 D .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 x 2 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 12 .x 1/ C 13 .x 1/ x 32 2.x 1/ x 23 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
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


3ROLQRPLRV GH &KHE\VKHY
Instructor: Professor Amos Ron Scribes: Mark Cowlishaw, Nathanael Fillmore
3

function p=chebypoly(n) %n es grado 0,1,2...


%
p=zeros(n+1,1); p1=[1]; p2=[1 0];
1 Review of Chebyshev Points
if n==0, p=p1;
3
3

elseif n==1, p=p2;

\
else
Last timeforwe talked briefly about using Chebyshev points for polynomial interpolation. The idea is
i=2:n
that our choice of0]-[0
p =2*[p2 interpolation
0 p1]; points can have a large impact on the error3 of our interpolant. Recall
p1=p2;
the expression
p2=p; for error in polynomial interpolation (Given f the function we are approximating,
interval end
[a, b], interpolation points ~x = (x0 , x1 , . . . , xn ), and interpolant pn ):
3
end
end
à n
!
f (n+1) (c) Y
E(t) = f (t) − pn (t) = · (t − xi ) (for [ some c ∈ [a, b]) (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

1
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:

nC1 in
nC1
!
1 X 2 X
p.x/ D f .xi / C Tk .xi /f .xi / Tk .x/:
nC1 nC1
i D1 iD1
› kD1 Ÿ
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);
0.8
a = 1; for j = n-2:-1:1
for k = 2:n ujp2 = ujp1;
0.6
T = [T(:,2) a*x.*T(:,2)-T(:,1)]; ujp1 = u;
c(k) = sum(T(:,2).* y)*2/n; u = c(j)+2*x.*ujp1-ujp2;
0.4
a = 2; end
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
166 | CHAPTER 3 Interpolation
interpolen esos n datos añade 2.n 1/ ecuaciones, pues cada n 1 cúbica debe verificar los valores en sus extremos. El
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ásStart
interpolation. condiciones para esos
by interpolating ongrados de libertad:
a fundamental monotonicidad,
domain convexidad, etc.
[0, π/2], and extend
La función que yourrealiza
answeresta aproximación
to inputs en M
between −10 104 . es
ATLAB
4 and Youpchip. Unatosesión
may want de trabajo
use some con un code
of the Matlab ejemplo sencillo la
5.7. in this chapter.
refleja el cuadrowritten

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
k k+1 −k
e ≤ x < e . Then xe 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
>> t = -3:.01:3; n polynomials of both types on the interval [−1, 1], for n = 10 and 20. For
0
>>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?

−0.6 2
5. Carry out the steps of Computer Problem 4 for f (x) = e−x .
−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
figureunareejemplo 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 0 07 6 ˛2 7 6 y 2 7
6 76 7 6 7
60 0 0 0 1 x2 x22 x23 7 6 7 6 7
6 7 6 ˛3 7 6 y 3 7
60 0 0 0 1 x3 x32 x3 7 6
3 7 7 6 7
6 6 ˛4 7 D 6 y 4 7 :
60 1 2x2 3x22 0 1 2x2 2 7 6
3x2 7 6 ˇ1 7 6 7
6 7 6 0 7
60 0 2 6x2 0 0 2 7 6
6x2 7 6 ˇ2 77 6 0 7
6 6 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.

3.5
Ejemplo 5.5 A BÉZIER
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 features
y1 Cofbythe tCcubic
cy t splines
2
C dyof 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.xwas2 x1 /
discovered independently by Paul de Casteljau, working for
Citroen, a rival D 3.x3 xcompany.
cx automobile 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.
by D 3.y Today the y Bézier
/ curve is a cornerstone of computer-aided design and
2 1
manufacturing.
c y D 3.y
Each piece of a planar 3 y2 / Bézier
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ézier curve5.15


Figura 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 )


control points (x2 , y2 ), (x3 , y3 )
Set

bx = 3(x2 − x1 )
cx = 3(x3 − x2 ) − bx
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 deldueestudio
B-splines
effects as del temavertex
functions
to moving a single enthe
of múltiples papers
number and y documentos encontrados en
positions
Internet. Las referencias básicas de lo presentado, por lo que a libros consagrados se refiere, the
of the vertices of the characteristic polygon. Notice in the third figure (right) son Briggs y Henson [1995];
localization effects In
due to moving
Figure a single vertex
8.15 a comparison is made between Bézier curves and parametric
Burden y Faires [2011]; Rao et al. [2010] y Sauer [2012].
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
Bézier
noticing charla
curves and
that parametric 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 concludeFigure
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.
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
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

ha01102_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
cha01102_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 ajFOURIER ANALYSIS
y bj son los coeficientes de x.t/ en dicha base.
amos
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)
Veamos 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)

En general,
n la parte (a) se representa la funciónmuchas . En este decaso
las señales
A0 D 1;7 habituales
, C1 D 1, que ! Drecibimos
2f D 2=T frutoD de2=.1;5s/
las comunicaciones, o del comportamiento de
a parte
la fase  (a) se representa
D =3 FIGURE
D distintos
1;0472 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/
(aFIGUREobjetos
) A plot of 16.2 que las
the sinusoidal emiten,
function incorporan armónicos o componentes que es interesante estudiar para conocerlas mejor
nfase D la=3
 ve D 1;0472 radianes .0;25s/ . Las),yfrecuencia
(t) = A 0 + C1 cos(␻
y.t/ D D0A
fradianst+ ␪). ForD
1=T
C A
this1=.1;5s/
case, A0 = 1.7,
cos.! t / C BD1 sen.!
0;6667 Hz.
(b) se expresión deC(1la
o tratarlas
a)=Afunción
para
1,plot
␻0 = of en
thesus
su
2␲/ T =tres componentes:
utilización
2␲/(1.5
sinusoidal comercial.
and y␪(t=
function AEl
) =␲/3 0 + la
C figura
1 cos(␻
=
0 6.3
1.0472
0t +
1 se
(=
␪). presenta
0.25
For
0 s).
this una
Other
case, A 0 = 0 t /periódica general, aproximación de una
señal
1.7,
(b)Ase
on Dve la
0;5 expresión
y B D de
0;866 la
parameters
. función
used en
to sus
describetres
the componentes:
curve are the frequency
C1 = 1, ␻0 = 2␲/T = 2␲/(1.5 s), and ␪ = ␲/3 radians 0= 1.0472
digital, y sus descomposición y.t/
f = ␻D A
/(2␲), C A
which for cos.!
this
1 (= 0.25case t/
is C B
0 s). Other 1 sen.!0 t/
s) = 0.6667 Hz anden armónicos ens.el(btiempo y enexpression
frecuencias.
1 1 0
1 cycle/(1.5
A1 D 0;5 y B1 D parameters
0;866 . is yused to describe thethecurve
period T = 1.5
are the frequency) An alternative
f = ␻0/(2␲), whichoffor
the
this case is
same curve (t) = A0 + A1 cos(␻0t) + B1 sin(␻0t). The three components of this function
1 cycle/(1.5
are depicted in (bs)), = 0.6667
where A1 = Hz
0.5 and
and Bthe period T = 1.5 s. (b) An alternative expression of6/35
the
1 = –0.866. The summation of the three curves in
(bsame
) yieldscurve is y(tcurve
the single ) = Ain (a).A1 cos(␻0t) + B1 sin(␻0t). The three components of this function
0 +

6.2 are
Interpolació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
(b) yields the single curve in (a).
clear-cut convention for choosing either function, and in any case, the results will be iden-
a b c 1 2 3
Se pretende conthe
tical because ella representar
two functions aremediante
simply offsetuninpolinomio
time by π/2de gradoFor
radians. en Œ0;
m this 2/ una función periódica de la que se conocen
chapter,
g weclear-cut
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 datos9 1igualmente espaciados —tren en ese intervalo. Se hará así
e
de impulsos—
f
d
b c
4
2 3
5
fx ;
0 1x ; : : : ; x n 1 g
tical because+the
10 f (t)8 = A7
two functions are simply offset in time by π/2 radians. (16.2)
For this chapter,
h i j 0 C1 cos(ω0 t + θ)
we9 will use the6 cosine, which can be expressed m m
a generally
X as X
e f g 4 5
Inspection of Eq. (16.2) indicates that four 0 serve to uniquely characterize the
8 = 16.2a):
10 f (t) A70 + C1 cos(ω0 t + θ)
p.t/parameters
D C aj cos.jt/ C bj sen.jt/;
(16.2)
i j sinusoid (Fig. 2
j D1 j D1
The meanofvalue
• Inspection Eq. A(16.2)
0 sets the average that
indicates heightfour
above the abscissa.
parameters serve to uniquely characterize the
The amplitude
• sinusoid C1 specifies the height of the oscillation.
(Fig. 16.2a):
• The angular frequency ω0 characterizes how often the cycles occur.
• • The
The mean
phase value
angle (orAphase
0 setsshift)
the average height above
θ parameterizes thetoabscissa.
the extent which the sinusoid is
• shifted horizontally.C1 specifies the height of the oscillation.
The amplitude
• The angular frequency ω0 characterizes how often the cycles occur.
• The phase angle (or phase shift) θ parameterizes the extent to which the sinusoid is
shifted horizontally.
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 1 1
3
2 1 2 0 2 0 3
6        a0 7 2 3
6 1 21 1 21 21 7 21 1
6 2 cos 1  4 cos 2 
2 4 sen 1  sen 2 
4 766 a1 4
7
7 6 37
6        7 6 a2 7D6 7
6
6 1
7
746 7 4 5 5:
6 2 cos 1  22
4
1
2 cos 2 22
4 sen 1  22
4 sen 2  22
4 7 b1 5
4         5 b2 2
1
2 cos 1  23
4
1
2 cos 2 
23
4 sen 1  23
4 sen 2  23
4
6.3 Elementos de números complejos j 145

Simplificando resulta así 21 32 3


1
2
1 2
00 a0 2 3
61 76a 7 1
6 0 1
1 07 6 17
62 2 76 7 6 37
61 7 6 a2 7 D 6 7:
6 1 1
0 07 6 7 4 55
42 2 5 4 b1 5
1 1 2
2
0 2
10 b2
Resolviéndolo, como solución de norma euclídea mínima, da
2 3 2 13
a0 2
6 a 7 6 37
6 17 6 7
6 7 6 97
6 a2 7 D 6 2 7 :
6 7 6 17
4 b1 5 4 2 5
b2 0
El polinomio de interpolación es entonces
1 9 1
p.t/ D C 3 cos.t/ cos.2t/ C sen.t/:
4 4 2
Sustituyendo 0, =2,  y 3=2 en este polinomio se puede comprobar que se consiguen los valores de la muestra.

6.3 Elementos de números complejos


p p
Los números del cuerpo C de lo complejos surgen
p para dar sentido a raíces de números negativos, a2 D ˙a 1.
Para ello se utiliza la unidad imaginaria i D 1.
Cualquier complejo z D x C yi , donde x es la parte real e y la imaginaria (ambas reales), se representa geométrica-
mente en el plano complejo así:

Recordando que e i' D cos ' C i sen ', apla que se conoce como identidad de Euler, en su forma polar se escribe
z D re i' D r cos ' C i sen ' , donde r D x 2 C y 2 y ' D arctan.y=x/.
10.1 The Fourier Transform | 469
La circunferencia de radio unidad en el plano complejo es el lugar geométrico de los números complejos con r D 1.
y


e2 = i

e4

e iπ= –1 + 0i e0= 1 + 0i
x

Figure 10.2 Unit circle in the complex plane. Complex numbers of the form eiθ for some
angle θ have magnitude one and lie on the unit circle.

z = a + bi = reiθ , (10.1)

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

Si se multiplican dos números e i y e i de esa circunferencia,


 
e i e i D cos  C i sen  cos C i sen

D cos  cos sen  sen C i sen  cos C sen cos  :
i i i i
Teniendo en cuenta que cos  D e Ce 2
y sen  D i e 2 e , reordenando, e i. C / D cos. C / C i sen. C /.
Por tanto, el producto de dos números complejos en la circunferencia de radio unidad es otro número de la misma
circunferencia cuyo ángulo es la suma de los dos precedentes.
Los números Moivre, z, —por Abraham de Moivre, Francia, 1667-1754—, tales que z n 1 D 0, raíces n-ésimas de
la unidad, tienen bastante interés:
En la recta de números reales sólo hay dos: 1 y 1.
p 4
En el plano complejo hay muchos. Por ejemplo, i es una raíz cuarta de 1: i 4 D 1 D . 1/2 D 1.

Moivre

Están localizados en la circunferencia del plano complejo de radio la unidad: forman los vértices de un polígono regular
de n lados con un vértice en 1. En la figura 6.4 se ilustran cinco raíces. Una raíz n-ésima de la unidad se denomina
)LIWK URRWV RI XQLW\

íL

Figura 6.4: Las cinco raíces de z 5 1D0

primitiva si no es una raíz k-ésima para k < n. Así, 1 es una raíz segunda primitiva de la unidad y cuarta no primitiva
de ella. De otra manera, la raíz n-ésima de la unidad ˛ es primitiva, si sólo si sus k-ésimas potencias, k D 0; 1; : : : ; n 1
son distintas. Las raíces cuartas de 1 son: 1, 1, i , i . En el caso de 1 sus potencias de grado 0, 1, 2 y 3 son iguales;
no es raíz primitiva. Para i , se calcula que las potencias de grado 0, 1, 2, 3 son, respectivamente, 1, i , 1, i, distintas,
luego i es una raíz cuarta primitiva de 1.
Es fácil ver que, para una n cualquiera, el número complejo !n D e i 2=n es una raíz n-ésima primitiva de la unidad
(también lo es !n D e i 2=n ). En la figura 6.5 se pueden ver la raíz cuarta primitiva de la unidad !4 D e i 2=4 y las
otras tres. Son, en general, las potencias !4k , k D 0; 1; 2; 3. Las !nk se denominan también factores twiddle.
Se puede verificar que la raíz n-ésima de la unidad, ! D e i 2=n , con n > 1, cumple que

1 C ! C !2 C !3 C    C !n 1
D 0;
2 4 6 2.n 1/
1 C ! C ! C ! C  C ! D 0;
ILOH ' 'URSER[ (VFXHOD $B7UDEDMRB(VFXHOD 2QH 5RRW VYJ
1 C ! 3 C ! 6 C ! 9 C    C ! 3.n 1/
D 0;
148 j Capítulo 6. Funciones trigonométricas de interpolación y ajuste. La Transformada de Fourier

2 3
!0 !0 !0    !0
6! 0 ! 1 !2    !n 1 7
6 7
6 0 2 7
Fn D p1n 6 ! ! !4    ! 2.n 1/ 7
6 : :: :: :: 7
6 : 7
4 : : : : 5
1/2
! 0 ! n 1 ! 2.n 1/
   ! .n

se la denomina matriz de Fourier. Todas sus filas y columnas, excepto las primeras, suman cero. La inversa de la matriz
de Fourier es
2 0 3
! !0 !0  !0
6! 0 ! 1 ! 2    ! .n 1/ 7
6 7
6 7
Fn 1 D p1n 6 !0 ! 2 ! 4    ! 2.n 1/ 7
6 : :: :: :: 7
6 : 7
4 : : : : 5
0 .n 1/ 2.n 1/ .n 1/2
! ! !  !

y la Transformada Discreta de Fourier inversa de y es x D Fn 1 y.


Dado que un número complejo en la circunferencia unidad, z D e i D cos  C i sen  , tiene como recíproco, su
complejo conjugado, e i D cos  i sen , la inversa de la matriz Fn será la que tenga como coeficientes los complejos
conjugados los de Fn , es decir

Fn 1 D F n :

La matriz de Fourier es una matriz unitaria, F F D I, por lo que, recordemos, al multiplicarla por cualquier vector,
éste conserva su norma.
Aplicar la Transformada Discreta de Fourier requiere O.n2 / operaciones, concretamente n2 multiplicaciones y n.n 1/
sumas; aplicar la inversa lo mismo.

Ejemplo 6.2 Calculemos la TDF del vector x D Œ1; 0; 1; 0T .


i 2=4 i =2
Sea en este caso ! la raíz cuarta de la unidad, es decir ! D e D e D cos.=2/ i sen.=2/ D i. La
transformada es
2 3 2 32 3 2 32 3 2 3
y0 1 1 1 1 1 1 1 1 1 1 0
6 y1 7 6 1 ! !2 !37 6 07 6
1 61 i 1 i7 6 07 617
7 6
6 7D p1 6 76 7D 76 D 7:
4 y2 5 4 41 ! 2 !4 ! 65 4
15 2 41 1 1 1 4
5 15 405
y3 1 !3 !6 !9 0 1 i 1 i 0 1

Si utilizamos la rutina de M ATLAB para hacer TDF, fft, hay que tener en cuenta que su normalización es un poco
diferente, y hay que usar fft(x)/sqrt(n). Para la inversa ifft(y)*sqrt(n). En una sesión de M ATLAB se consigue
lo que sigue.

>> x=[1 0 -1 0];


>> fft(x)
ans =
0 2 0 2
>> fft(x)/sqrt(4)
ans =
0 1 0 1
>> ifft(ans)*sqrt(4)
ans =
1 0 -1 0

Una propiedad importante de la TDF es que si n es par y el vector x D Œx0 ; x1 ; : : : ; xn 1


T
tienes todos sus coefi-
6.5 Transformada Rápida de Fourier j 149

cientes reales, los de su transformado, y, son los siguientes, para por ejemplo n D 8,

2 3
x0 2 3 2 3
6 x1 7 a0 y0
6 7 6 a1 C i b1 7 6 :: 7
6 x2 7 6 7 6 7
6 7 6 a C ib 7 6 : 7
6x 7 6 2 27 6 yn 7
6 37 6 7 6 17
6 7 6 a C i b3 7 6 2 n 7
F8 6 x 4 7 D 6 3 D y
7 6 2 7:
6 7 6 a4 7 6 7
6 x5 7 6 7 6yn 7
6 7 6 a3 i b3 7 6 2 1 7
6 x6 7 6 7 6 : 7
6 7 4 a2 i b2 5 4 :: 5
4 x7 5
a1 i b1 y1
x8

6.5 Transformada Rápida de Fourier


Como acabamos de ver la TDF necesita para su cálculo O.n2 / operaciones. Cooley y Tukey formularon en 1965 uno de
los algoritmos más importantes del Siglo XX. La Transformada Rápida de Fourier, FFT.

James William Cooley, 1926 y


John Tukey, 1915-2000. EE.UU.

Este algoritmo sigue una estrategia del divide y vencerás para hacer mucho más rápido la TDF. Requiere O.n log n/
operaciones. Su aportación fundamental es haber convertido el tratamiento de señales de lo analógico a lo digital,
ampliando casi hasta el infinito su campo de aplicación.
Si expresamos la TDF, Fn x, de la forma
2 3 2 3
y0 x0
6 :: 7 1 6 : 7
4 : 5 D p M n 4 :: 5 ;
n
yn 1 xn 1

donde
2 3
!0 !0 !0    !0
6 !0 !1 !2    !n 1 7
6 7
6 0 2 7
Mn D 6 ! ! !4    ! 2.n 1/ 7 ;
6 : :: :: :: 7
6 : 7
4 : : : : 5
1/2
! 0 ! n 1 ! 2.n 1/
   ! .n

veamos cómo calcular de forma recursiva el producto z D M n x.


Empecemos simulando su mecánica con n D 4. Si ! D e i 2=4 , la TDF es

2 3 2 0 32 3
z0 ! !0 !0 !0 x0
6 z1 7 6 ! 0 !1 !2 !3 7 6 x1 7
6 7D6 76 7:
4 z2 5 4 ! 0 !2 !4 ! 6 5 4 x2 5
z3 !0 !3 !6 !9 x3
150 j Capítulo 6. Funciones trigonométricas de interpolación y ajuste. La Transformada de Fourier

Reordenando las operaciones de tal manera que los términos pares aparezcan primero se tiene que

z 0 D ! 0 x0 C ! 0 x2 C ! 0 ! 0 x1 C ! 0 x3

z 1 D ! 0 x0 C ! 2 x2 C ! 1 ! 0 x1 C ! 2 x3

z 2 D ! 0 x0 C ! 4 x2 C ! 2 ! 0 x1 C ! 4 x3

z 3 D ! 0 x0 C ! 6 x2 C ! 3 ! 0 x1 C ! 6 x3 :

Usando el hecho de que ! 4 D 1, las ecuaciones anteriores quedan


 
z0 D ! 0 x0 C ! 0 x2 C ! 0 ! 0 x1 C ! 0 x3
 
z1 D ! 0 x0 C ! 2 x2 C ! 1 ! 0 x1 C ! 2 x3
 
z2 D ! 0 x0 C ! 0 x2 C ! 2 ! 0 x1 C ! 0 x3
 
z3 D ! 0 x0 C ! 2 x2 C ! 3 ! 0 x1 C ! 2 x3 :
Los términos entre paréntesis en las primeras dos líneas se repiten en las dos siguiente. Hagamos
u0 D 0 x0 C 0 x2 v0 D 0 x1 C 0 x3
y ;
u1 D 0 x0 C 1 x2 v1 D 0 x1 C 1 x3

donde  D ! 2 , la segunda raíz de la unidad. Los vectores u D Œu0 ; u1 T y v D Œv0 ; v1 T son básicamente
 
x
u D M2 0
x2
 
x1
v D M2
x3
por lo que el original M 4 x es
z0 D u0 C ! 0 v0
z1 D u1 C ! 1 v1
z2 D u0 C ! 2 v0
z3 D u1 C ! 3 v1 :
La TDF.4/ original
p se ha transformado en un par de TDF.2/ más algunas pocas multiplicaciones y sumas. Si ignora-
mos el término 1= n una TDF.n/ se puede reducir al cálculo de dos TDF.n=2/ más 2n 1 operaciones adicionales.

6.5.1 Interpolación trigonométrica con la Transformada Rápida de Fourier


Dado un intervalo Œc; d  y un número positivo n, definamos t D .d c/=n y unos tj D c C jt, j D 0; : : : ; n 1,
igualmente espaciados en el intervalo.
Para un vector dado x al que le aplicaremos la Transformada de Fourier, cada uno de sus coeficientes, xj , lo interpre-
taremos como una medida de un conjunto de ellas tomadas a una señal en los tiempos tj . Si y D Fn x es la TDF de x,
cada coeficiente xj vendrá dado por la fórmula de la inversa de TDF:
i2k.tj c/
n 1 n 1 n 1
1 X 
k j 1 X X e d c
xj D p yk ! Dp yk e i 2kj=n D yk p :
n n n
kD0 kD0 kD0
œ
Q.t/

Esta expresión la podemos ver como la que materializa, mediante TDF, una interpolación de los puntos .tj ; xj / con
funciones de base trigonométricas
i2k.t c/
e d c
p ; k D 0; : : : ; n 1
n
6.5 Transformada Rápida de Fourier j 151

con coeficientes, o pesos, yk D ak C i bk . Del desarrollo de Q.t /, es decir,

i
n 1
 
1 2k.t c/ 2k.t c/
Q.t / D p .ak C i bk / cos C i sen ;
n d c d c
kD0

si los xj son reales, la función trigonométrica de orden n que interpola los puntos .tj ; xj / es

i
n 1
 
1 2k.t c/ 2k.t c/
Pn .t/ D p ak cos bk sen :
n d c d c
kD0

Simplificando un poco más esta fórmula, si n es par, se llega a que


n
2 1 
i 
a0 2 2k.t c/ 2k.t c/ an =2 n.t c/
Pn .t/ D p C p ak cos bk sen C p cos
n n d c d c n d c
kD0

satisfaciendo que Pn .tj / D xj , j D 0; : : : ; n 1.


Ejemplo 6.3 Calculemos el polinomio trigonométrico de interpolación del vector x D Œ1; 0; 1; 0T . El intervalo es
Œ0; 1; t D Œ0; 1=4; 1=2; 3=4T . La TDF de x es y D Œ0; 1; 0; 1T . Los coeficientes de la interpolación son ak Ci bk D yk ,
por lo que a0 D a2 D 0, a1 D a3 D 1 y b0 D b1 D b2 D b3 D 0. Aplicando la fórmula anterior, el polinomio
trigonométrico de interpolación es:
a0  a2
P4 .t/ D C a1 cos 2 t b1 sen 2 t C cos 4 t D cos 2 t:
2 2

Ejemplo 6.4 Obtengamos el polinomio trigonométrico de interpolación de x D Œ 2;2 2;8 6;1 3;9 0;0
1;1 0;6 1;1T en el intervalo Œ0; 1. La Transformada de Fourier es
2 3
5;5154
6 1;0528 C 3;6195i 7
6 7
6 1;5910 1;1667i 7
6 7
6 7
6 0;5028 0;2695i 7
yD6 7:
6 0;7778 7
6 7
6 0;5028 C 0;2695i 7
6 7
4 1;5910 C 1;1667i 5
1;0528 3;6195i

Aplicando la fórmula para obtener el polinomio, se tiene que


5;5154 1;0528
P8 .t/ D p p cos 2 t 3;6195
p sen 2 t
8 2 2

C 1;5910
p cos 4 t C 1;1667
p sen 4 t
2 2
0;5028
p cos 6 t C 0;2695
p sen 6 t 0;7778
p cos 8 t
2 2 8

D 1;95 0;7445 cos 2 t 2;5594 sen 2 t


C1;125 cos 4 t C 0;825 sen 4 t
0;3555 cos 6 t C 0;1906 sen 6 t 0;275 cos 8 t:

El resultado se ve gráficamente en la figura 6.6.


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

-1

-2
y

-3

-4

-5

-6

-7
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Tiempo

Figura 6.6

Una consecuencia práctica muy importante del hecho de que en el polinomio trigonométrico de interpolación Pn .t/
las funciones de base sean ortogonales es que si m < n entonces
m
2 1 
i 
a0 2 2k.tj c/ 2k.tj c/ am =2 n.t c/
Pm .t/ D p C p ak cos bk sen C p cos
n n d c d c n d c
kD0

es la mejor aproximación de mínimos cuadrados de orden m a los datos .tj ; xj /; j D 0; : : : ; n 1.


Esto quiere decir que para el último ejemplo, los polinomios trigonométricos de interpolación P4 .t/ y P6 .t/ serán

P4 .t/ D 1;95 0;7445 cos 2 t 2;5594 sen 2 t C 1;125 cos 4 t


P6 .t/ D 1;95 0;7445 cos 2 t 2;5594 sen 2 t
C1;125 cos 4 t C 0;825 sen 4 t 0;3555 cos 6 t:

El resultado se ve gráficamente en la figura 6.7.

2 2

1 1

0 0

-1 -1

-2 -2

-3 -3

-4 -4

-5 -5

-6 -6

-7 -7
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Figura 6.7
6.5 Transformada Rápida de Fourier j 153

6.5.2 Aplicaciones prácticas: Sonido, ruido, filtrado, ...


Se pueden utilizar los innumerables recursos de M ATLAB. Por ejemplo

>> load handel


>> plot(y(1:256))
>> xp=dftfilter([0,1],y(1:256),64,256,256);

0.2

0.15

0.2
0.1

0.15
0.05
0.1

0
0.05

0 -0.05

-0.05
-0.1

-0.1
-0.15
-0.15

-0.2
-0.2

-0.25 -0.25
0 50 100 150 200 250 300 0 50 100 150 200 250 300

>> sound(y,Fs)
>> xp=dftfilter([0,1],y,10000,73113,73113);
>> sound(xp,Fs)
>> xp=dftfilter([0,1],y,73112,73113,73113);
>> sound(xp,Fs)

Referencias, fuentes y lecturas complementarias


Como en el capítulo anterior, pues éste es una continuación de aquel, todo lo expuesto es fruto del estudio del tema en
múltiples papers y documentos encontrados en Internet. Las referencias básicas de lo presentado son Briggs y Henson
[1995]; Burden y Faires [2011]; De Boor, C [2001]; Heath [2002]; Rao et al. [2010] y Sauer [2012].
En el apéndice A.1, a partir de la página 621, se puede encontrar todo lo relativo a Análisis, Series y Transformada de
Fourier mucho más extendido y, tal vez, documentado.
Todos los pequeños programas de ordenador de este capítulo han sido elaborados por del autor; están basados en los
correspondientes algoritmos y en ejemplos también obtenidos en Internet.
154 j Capítulo 6. Funciones trigonométricas de interpolación y ajuste. La Transformada de Fourier
Capítulo 7

Sistemas lineales de grandes dimensiones.


Matrices dispersas

Contenido
7.1 Matrices dispersas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
7.2 Almacenamiento en ordenador de matrices dispersas . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.3 Operaciones algebraicas de matrices dispersas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
7.4 Solución de sistemas de ecuaciones lineales de matriz dispersa . . . . . . . . . . . . . . . . . . . . 160
7.5 Problemas de mínimos cuadrados lineales de grandes dimensiones . . . . . . . . . . . . . . . . . 178
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

7.1 Matrices dispersas

M UCHOS de los modelos matemáticos que en la actualidad interpretan y simulan fenómenos reales de diversa
complejidad, o sirven de ayuda para tomar decisiones, abocan a sistemas de ecuaciones de gran tamaño con
decenas, cientos de miles y muchos millones de variables.
Esas matrices de gran tamaño suelen tener muchos de sus coeficientes cero y muy “dispersos” en su estructura (espa-
cial), por lo que se ha acuñado el término dispersas para referirse a ellas.
En lo que sigue y a lo largo de todo este libro consideraremos dispersa a una matriz que teniendo pocos coeficientes
distintos de cero merece la pena aplicarle procedimientos diseñados para ello. Algunos autores, no obstante, definen una
C1
matriz nn como dispersa si el número de coeficientes no nulos es n C1 , donde < 1. La densidad sería n n2 D n 1 .
Valores típicos de ese parámetro suelen ser: D 0;2 para problemas de análisis de sistemas eléctricos de generación y
transporte de energía; D 0;5 para matrices en banda asociadas a problemas de análisis de estructuras; etc.

7.1.1 Galería de ejemplos gráficos


El sitio web de referencia para ver la estructura y procedencia de matrices dispersas de muchos tamaños es The Univer-
sity of Florida Sparse Matrix Collection
La primera de las matrices que podemos citar como paradigma de matriz dispersa es una que usamos continuamente,
la del buscador de Google (ahora > 8  109 ). Se esquematiza en la figura 7.1.
Otras cuantas figuras de las estructuras de matrices de problemas de ingeniería y economía son las que se presentan
en la figura 7.2.
La ingeniería, estudio e investigación de los modelos matemáticos y sistemas de ecuaciones con matrices dispersas
abarca tres grandes áreas:
156 j Capítulo 7. Sistemas lineales de grandes dimensiones. Matrices dispersas

A Sparse Matrix You Use Every Day

Power Systems; BCSPWR07 Simulation of Computing Systems; GRE 1107

Figura 7.1: La matriz de Google

200

TURES OF 400

M VARIOUS Power Systems; BCSPWR07 600


Simulation of Computing Systems; GRE 1107

800

ent structures 1000

1200

1400

1600

0 200 400 600 800 1000 1200 1400 1600


Power Systems; BCSPWR07 Chemical Engineering; WEST0381
Simulation of Computing Systems; GRE 1107 Economic Modelling; ORANI678
Thermal Simulation; SHERMAN2 bcspwr09; nz = 6511

Chemical Engineering; WEST0381 Economic Modelling; ORANI678

3 Dynamic Calculation in Structures; BCSSTM13 Chemical Engineering; WEST0381 Economic Modelling; ORANI678

Figura 7.2: Matrices dispersas generales


7.2 Almacenamiento en ordenador de matrices dispersas j 157

Almacenamiento de las matrices en un ordenador.


Ordenación de las ecuaciones del sistema con el fin de reducir el número de coeficientes nuevos no nulos que se
crean en la factorización de la matriz.
Implementación óptima para matrices de grandes dimensiones de los métodos numéricos generales más avanzados
para resolver sistemas de ecuaciones tradicionales.

7.2 Almacenamiento en ordenador de matrices dispersas


7.2.1 Por coordenadas
Mediante un conjunto de triples, .aij , i , j /, que definen las “coordenadas”, o información esencial, de cada coeficiente
distinto de cero.
Ejemplo 7.1 Si se quiere almacenar según este esquema
2 3
1 0 0 10 Coeficientes
6 7
62 0 2 0 37 Vector 1 2 3 4 5 6 7 8 9 10 11
6 7
AD6
60 3 0 0 07
7$ ifi 1 1 2 2 2 3 4 4 5 5 5
6 7
40 4 0 4 05 ico 1 4 1 3 5 2 2 4 1 3 5
5 0 5 06 val 1 -1 2 -2 3 -3 4 -4 5 -5 6

se definen los tres vectores ifi, ico y val: los dos primeros basta que sean integer; val debe ser real.

7.2.2 Almacenamiento por filas o columnas


Es el más extendido. En una matriz m  n define tres vectores:
val Debe contener todos los coeficientes distintos de cero de la matriz, fila a fila, enumerados consecutivamente;
ico De la misma dimensión de val, con los subíndices columna de los coeficientes de val;
ia De dimensión m C 1, con las posiciones en val y ico del primer coeficiente no nulo de cada fila de la matriz.
2 3
1 0 0 10 Coeficientes
62 0 2 0 37 Vector 1 2 3 4 5 6 7 8 9 10 11
6 7
6 7
A D 6 0 3 0 0 0 7 $ ia 1 3 6 7 9 12
6 7
40 4 0 4 05 ic 1 4 1 3 5 2 2 4 1 3 5
5 0 5 06 va 1 -1 2 -2 3 -3 4 -4 5 -5 6
La información de la fila r estará entre las posiciones ia(r) y ia(r C1)-1 en ico y val, excepto si ia(r C1)=ia(r),
en cuyo caso la fila r estaría vacía.
La parte de un programa M ATLAB para recuperar en el vector vec() la fila i de una matriz podría ser este

vec = 0;
for ii=ia(i):ia(i+1)-1
vec(ico(ii))=val(ii);
end

Recuperar la columna k sería un poco más complicado:

vec=0;
for j=1:m
for ii=ia(j):ia(j+1)-1
if ico(ii)==k vec(j)=val(ii), break
elseif ico(ii)>k break
end
end
158 j Capítulo 7. Sistemas lineales de grandes dimensiones. Matrices dispersas

7.2.3 Almacenamiento por perfil o envolvente


Definición 7.1 Si fi D mKınfj W aij ¤ 0g y li D mKaxfj W aij ¤ 0g, una matriz A mn tiene un ancho de banda de
filas w si
w D mKax wi ; wi D .li fi C 1/;
1im

donde wi es el ancho de la fila i. La envolvente de A; Env.A/, es el conjunto Env.A/ D f.i; j / W fi  j  li ; 1 


i  mg.
Las matrices en banda son aquellas cuyos coeficientes están contenidos en una franja alrededor de su diagonal princi-
pal. Es de interés como dispersa si w  n.
Ejemplo 7.2 La envolvente de la matriz
1 2 3 4 5 6 7
2 3
1  
2 6  0  7 Env.A/Df.1; 1/; .1; 2/; .1; 3/; .1; 4/; .2; 1/; .2; 2/; .2; 3/; .2; 4/;
6 7
6 7
3 6  0  7 .3; 3/; .3; 4/; .3; 5/; .3; 6/; .4; 2/; .4; 3/; .4; 4/;
6 7 es
AD 4 6  0  7 .5; 4/; .5; 5/; .5; 6/; .5; 7/;
6 7
5 6    7 .6; 2/; .6; 3/; .6; 4/; .6; 5/; .6; 6/; .6; 7/; .7; 7/g:
6 7
6 4   0 0  5
7 
Este esquema guarda los coeficientes de la envolvente mediante tres vectores:
val Contiene todos los coeficientes de la envolvente;
ifa Con los índices fi de cada fila i ;
ia De dimensión m C 1, si la matriz es m  n, con las posiciones en val del primer coeficiente no nulo de las filas
que se corresponden con el orden de los coeficientes de ia.
Por ejemplo,
2 3
1 0 200 Coeficientes Para recuperar una fila en M ATLAB:
62 3 0 0 07
6 7 Vector 1 2 3 4 5 6 7 8 9 10 11 12
6 7 vec = 0;
60 0 6 0 07 j = 0;
AD6 7 $ ia 1 4 6 7 10 12 13 for ii=ia(i):ia(i+1)-1
60 4 0 4 07
6 7 ifa 1 1 3 2 4 5
vec(ifa(i)+j)=val(ii);
40 0 0 3 15 j = j+1;
end
0 0 006 val 1 0 -2 2 3 6 -4 0 4 3 1 6

Definición 7.2 El ancho de banda (o de semibanda) de una matriz simétrica B 2 Rnn , ˇ, se define como
ˇ D mKax ˇi ; ˇi D i fi ;
1i n

donde ˇi es el ancho de la fila i.


¡Ojo! Esta definición sólo se refiere al número de diagonales por encima y debajo de la diagonal principal, sin
considerar ésta. La envolvente de una matriz simétrica es Env.B/ D f.i; j / W fi  j  i; 1  i  ng.
Para guardar una matriz simétrica no sería necesario ifa. Por ejemplo,
2 3
10 2 3 0 0 Coeficientes
6 2 4 0 3 07
6 7 Vector 1 2 3 4 5 6 7 8 9 10
6 7
B D 6 3 0 6 0 07 $ Obsérvese que la dimensión de ib es n.
6 7 ib 1 4 7 8 10
4 0 3 0 1 85
00083 val 10 2 3 4 0 3 6 1 8 3

Si los anchos de banda son iguales, ib no sería necesario: sólo val y ˇi .


7.3 Operaciones algebraicas de matrices dispersas j 159

7.3 Operaciones algebraicas de matrices dispersas


El concepto estructura simbólica de una matriz expresa la disposición espacial de los coeficientes distintos de cero en la
matriz.

7.3.1 Producto interior de dos vectores


Calculemos el producto interior de dos vectores a y b,
n
X
hD ai bi ;
i D1

almacenados como dispersos según el esquema de filas. Lo más eficaz es definir un vector ip, de dimensión n, en el que
se guardan los punteros de los coeficientes no nulos de vala o valb.
Por ejemplo, si el vector a está definido por

Coeficientes
el vector ip, una vez alma- Coeficientes
Vector 1 2 3 4
cenados los punteros, queda- Vector 1 2 3 4 5 6 7 8 9 10 11   
icoa 10 3 7 4 ría ip 0 0 2 4 0 0 3 0 0 1 0 
vala 0,2 0,3 0,4 -0,5

a3 está en la posición 2 de vala, a4 en la posición 4, a7 en la 3, etc.


Con los coeficientes no nulos de b, se usa ip y, si es necesario, se multiplican los coeficientes acumulando el
resultado en h. Si b es
Coeficientes
Vector 1 2 3
icob 5 4 10
valb 0,6 0,7 0,5

el primer coeficiente no nulo de b es b5 D 0;6.


Ahora bien, ip(5)=0, por lo que a5 b5 D 0, no siendo necesario efectuar esta última operación : : :
Estas ideas en M ATLAB darían lugar a:

ip = 0
for i=1:na, ip((icoa(i)) = i; end
h = 0.0;
for i=1:nb
if ip(icob(i))~=0
h=h+vala(ip(icob(i)))*valb(i);
end
end

Hacer ip(   )=0 es costoso numéricamente: es necesario realizar muchas operaciones, aunque triviales, si n es grande.
Si un vector se multiplica por otros muchos (caso por ejemplo de productos de matrices), evidentemente, sólo es
necesario inicializar ip a cero una vez.

7.3.2 Multiplicación de matrices por vectores


Supondremos que el vector está almacenado en toda su extensión. Nos interesamos en primer lugar por la operación
c D Ab, donde A 2 Rmn , b 2 Rn y c 2 Rm . Si c se guarda en toda su extensión y A según el esquema por filas,
para realizar la operación basta saber qué coeficientes son no nulos en cada fila de la matriz A, multiplicarlos por el
correspondiente de b y acumular el resultado. En M ATLAB esto se podría hacer como indica el cuadro 7.1.
160 j Capítulo 7. Sistemas lineales de grandes dimensiones. Matrices dispersas

for i=1:m
iai=ia(i); iai1=ia(i+1)-1;
s = val(iai:iai1)*b(ico(iai):ico(iai1));
c(i) = s;
end

Cuadro 7.1

7.3.2.1 Multiplicación de un vector por una matriz


Queremos efectuar la operación c T D bT A, donde A 2 Rmn , b 2 Rm y c 2 Rn . Consideremos el siguiente ejemplo
simbólico de este producto,

  c1 D b1 a11 C b2 a21
a11 a12 a13
Œc1 c2 c3  D Œb1 b2  ! c2 D b1 a12 C b2 a22
a21 a22 a23
c3 D b1 a13 C b2 a23 :

Si la matriz está almacenada por filas, reescribamos las ecuaciones y traduzcamos todo a código de M ATLAB

c = 0;
c1 b1 a11 c1 c1 C b2 a21 for i=1:n
bi = b(i);
c2 b1 a12 y c2 c2 C b2 a22 for ii=ia(i):ia(i+1)-1
j = ico(ii); c(j) = c(j)+val(ii)*bi;
c3 b1 a13 c3 c3 C b2 a23 end
end

En este caso se puede acceder a los coeficientes secuencialmente por filas e ir acumulando los resultados de las opera-
ciones en los propios coeficientes de c.

7.3.3 Otras operaciones


Operaciones como la suma de matrices, la multiplicación, la multiplicación A T A, etc. se pueden llevar a cabo muy
eficazmente, en general, mediante dos etapas: la simbólica y la numérica:
La simbólica determina, mediante vectores-puntero, esa estructura de coeficientes no nulos de la matriz que ha de
resultar de la operación.
La numérica, los valores distintos de cero en las posiciones ya reservadas al efecto en la etapa anterior.

7.4 Solución de sistemas de ecuaciones lineales de matriz dispersa


Seguiremos un esquema general de actuación como el que indica el cuadro 7.2.

Paso 1 – Determinar la estructura simbólica de la matriz A.


Paso 2 – Obtener unas permutaciones P y Q tales que PAQ tenga una estructura de dispersidad óptima.
Paso 3 – Factorizar simbólicamente la matriz PAQ y generar las estructuras de datos y memoria necesarias
para L y U .
Paso 4 – Calcular numéricamente LU D PAQ y c D Pb.
Paso 5 – Resolver Lz D c, U y D z y, por fin, x D Qy.

Cuadro 7.2: Algoritmo general para resolver grandes sistemas de ecuaciones lineales
7.4 Solución de sistemas de ecuaciones lineales de matriz dispersa j 161

7.4.1 Ordenación de las ecuaciones


Al resolver un sistema de ecuaciones lineales de matriz dispersa, el orden en que se disponen sus filas o columnas tiene
una importancia fundamental.
Consideremos una matriz A, de estructura simbólica simétrica, cuyo patrón de coeficientes distintos de cero es el de
la figura 7.3.

Figura 7.3: Matriz 14  14, dispersa, y el patrón de sus coeficientes distintos de cero

Si se utiliza la eliminación de Gauss para resolver dicho sistema, en el transcurso de dicha factorización se harán
distintos de cero 46 coeficientes —coeficientes de relleno (fill-in en la literatura anglosajona)—: los que en la figura 7.4
aparecen sombreados.

Figura 7.4: Matriz 14  14 una vez factorizada mediante eliminación de Gauss

Si las filas y las columnas del mismo sistema se reordenan de acuerdo con el algoritmo de grado mínimo (que estu-
diaremos) se obtiene un patrón de coeficientes distintos de cero que se ve en la figura 7.5.
Si esta matriz se factoriza también mediante eliminación de Gauss el número de nuevos coeficientes distintos de cero
que se crean en el proceso es cero.
Reordenar las matrices para reducir el número de coeficientes de relleno presenta tres ventajas fundamentales:
Una disminución del número de posiciones de memoria que se han de reservar para los nuevos coeficientes que se
harán distintos de cero en un proceso de factorización.
Una disminución del número de operaciones a realizar y, por lo tanto, el tiempo total de cálculo para factorizar la
matriz y resolver el correspondiente sistema.
Una mejora de la estabilidad numérica del proceso global de resolución del sistema al disminuir el número de
coeficientes que habrá que considerar y por tanto disminuir la probabilidad de encontrar grandes diferencias entre
ellos, errores de cancelación, etc.
El número de operaciones que habría que realizar para factorizar la matriz del ejemplo mediante eliminación de Gauss
y luego resolver el sistema correspondiente, si se operase con esta matriz como densa, como dispersa sin reordenar filas
y columnas y como si fuese dispersa reordenando filas y columnas, sería el que indica el cuadro 7.3.
 Si las filas y las columnas del mismo sistema se reordenan de acuerdo con el
algoritmo de grado mínimo (que estudiaremos) se obtiene un patrón de
162 j Capítulo 7. Sistemas lineales de grandes dimensiones. Matrices dispersas
coeficientes distintos de cero como este.

Figura 7.5: última


Si esta Reordenación de los
matriz secoeficientes
factoriza detambién
la matriz 14  14 segúneliminación
mediante el algoritmo dede
Grado Mínimo
Gauss, el
número de nuevos coeficientes distintos de cero que se crean en el proceso es
Matriz Matriz
cero. Matriz Dispersa Dispersa
Operación Densa sin Ordenar Ordenada 42/126

Factorización 1911 408 105


Sustitución Inversa 196 94 48
a b c 1 2 3

0Cuadro 7.3: Número


e f deg operaciones a 4realizar en5 la factorización0y solución del problema con la matrix 14  14
d 9 6

h i j 10 8 7
50 50

lograr una ordenación óptima es necesario considerar la estructura


Para100 100 de los coeficientes de la matriz, cómo se
almacena y el tipo de operaciones que se van a realizar con ella.
150 150
Si las matrices son de estructura simétrica y se almacenan según un esquema de perfil o envolvente, también interesa
poder disponer
200 de un algoritmo de ordenación que compacte los coeficientes
200 cerca de la diagonal principal.
Uno para ese propósito es el algoritmo de Cuthill-McKee que veremos más adelante.
El250 250
resultado de aplicarlo a una matriz simétrica 35  35 es el de la figura que sigue.
300 300

350 350

400 400

450 450

0 100 200 300 400 0 100 200 300 400


el = 7551 el = 24226

También existen diversas formas de ordenar matrices dispersas de estructura simbólica no simétrica. Entre las más
usadas está la que ordenar la matriz A de tal forma que se consiga una estructura triangular inferior en bloques del
tipo que se indica en la figura.

A11

A = A21 A22

A31 A32 A33


7.4 Solución de sistemas de ecuaciones lineales de matriz dispersa j 163

Si se dividen los vectores x y b como A, el sistema se tratará mucho más eficazmente resolviendo los subsistemas
i 1
X
Ai i xi D bi Aij xj ; i D 1; 2; 3:
j D1

Para ello sólo es necesario factorizar las submatrices Ai i pues los bloques o submatrices Aij , i > j , sólo se han de
multiplicar por los subvectores xj . Los nuevos coeficientes distintos de cero sólo se podrán crear en esas submatrices en
la diagonal principal.
Si como ejemplo consideramos una matriz simétrica 1616 como la que se muestra en la figura 7.6, se puede conseguir
una reordenación en triangular inferior en bloques de ella como se indica.

Figura 7.6: Matriz dispersa 16  16 antes y después de ordenarla para hacerla triangular inferior en bloques

7.4.2 Matrices dispersas simétricas


La eliminación de Gauss —o cualquier otra factorización similar— de matrices dispersas simétricas puede crear coefi-
cientes no nulos nuevos en su proceso. Para evitarlo lo más posible hay que reordenar sus filas y las columnas.
Si a la matriz de Ax D b se le aplican unas de permutaciones, representadas por P, el sistema se puede reescribir,
P A P T Px D Pb;
pues P T P D I. Haciendo y D Px y c D Pb, se tiene que
By D c;
donde B D PAP T es la matriz A reordenada. La matriz B es también dispersa y simétrica. Si A es definida positiva,
lo mismo ocurre con B.
Encontrar una permutaciones P que produzcan el menor relleno posible al factorizar B no es fácil:
Si A es de orden n, el número posible de ordenaciones es nŠ Imposible analizar todas si n es grande.
No existe ningún algoritmo que garantice la ordenación óptima.
Existen algunos algoritmos heurísticos para tratar de llegar a un resultado próximo al óptimo.
En las imágenes de la figura 7.7 se representan los patrones de coeficientes distintos de cero de una matriz simétrica
480  480, antes y después de factorizarla.
Las dos primeras representan la matriz sin reordenar y el resultado que produciría factorizarla de la forma LLT . Las
otras dos, el mismo caso cuando se reordena la matriz original mediante el algoritmo de grado mínimo.
Las dos de la figura 7.8 representan la matriz reordenada mediante el algoritmo de Cuthill-McKee y el factor L
resultante. Obsérvese que L tiene en el primer caso 30:366 coeficientes distintos de cero, 9:196 en el segundo y 24:226
en el tercero.
Con estos argumentos y otros que iremos proponiendo, es bastante evidente esta conclusión:

Elegir un buen método de reordenación de una matriz dispersa es esencial


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

0 0 0 0

50 50 50 50

100 100 100 100

150 150 150 150

200 200 200 200

250 250 250 250

300 300 300 300

350 350 350 350

400 400 400 400

450 450 450 450

0 0 100 100 200 200 300 300 400 400 0 0 100 100 200 200 300 300 400 400
el = el
7551
= 7551 el = el = 30366
30366

00 0 0

50
50 50 50

100
100 100 100

150
150 150 150

200
200 200 200

250
250 250 250

300
300 300 300

350
350 350 350

400
400 400 400

450
450 450 450

00 100
100 200
200 300
300 400
400 0 0 100 100 200 200 300 300 400 400
el == 7551
el 7551 el = 9196
el = 9196

Figura 7.7: Matriz dispersa 480  480 antes y después de factorizarla con y sin reordenaciones previas

Figura 7.8: Matriz dispersa 480  480 ordenada con el algoritmo de Cuthill-McKee y el factor L que queda
7.4 Solución de sistemas de ecuaciones lineales de matriz dispersa j 165

7.4.2.1 Nociones básicas sobre teoría de grafos


Un grafo G D .V; E/ es un par formado por un conjunto finito V , de elementos denominados nudos del grafo, y
por otro también finito E, de arcos. Las dos figuras que siguen representan grafos simples: uno dirigido y el otro no
dirigido. No siempre es posible representar un grafo sin que los arcos correspondientes se corten en el plano.

1 10

6 8
5
9 11 5

2 4 7 3 1 2 3 4

Un arco es un par de nudos. Si los arcos de un grafo son ordenados, el grafo se denomina digrafo o grafo dirigido; si
no, grafo a secas o grafo no dirigido.
El grado de un nudo es el número de arcos que tienen uno de sus extremos en ese nudo; o el número de nudos a él
unidos.
Un grafo no dirigido se puede ver como un digrafo en el que si el arco e D .u; v/ 2 E, también e 0 D .v; u/ 2 E.
Si e D .i; j / 2 E, este arco une un nudo de origen o cola i D t.e/ con otro de destino, final o cabeza j D h.e/.
El número de elementos, o cardinal de V o E, se designa jV j o jEj. Un grafo G D .V; E/ se dice numerado si existe
una biyección ˛ W f1, 2; : : : ; jN jg ! V . En lo sucesivo supondremos el grafo numerado.
A cualquier matriz cuadrada, A, se le puede asociar un grafo. Si A es cuadrada de orden n, de estructura
simbólica simétrica, con todos sus coeficientes diagonales distintos de cero, se define el grafo asociado a A, G A D
.V A ; E A /, como el grafo no dirigido numerado de n nudos V A D fv1 , v2 ; : : : ; vn g y arcos o aristas E A definidas de
tal forma que
.vi ; vj / 2 E A , aij ¤ 0; aj i ¤ 0:
El que los coeficientes diagonales sean distintos de cero hace que no sea necesario representar los bucles que unen cada
nudo consigo mismo. En la figura 7.9 se puede ver la estructura simbólica de una matriz simétrica 11  11 y su grafo
asociado. 1 2 3 4 5 6 7 8 9 10 11
1 × × ×
 

2  × × 1 2 3 4 5 6 7 8×9 1011 
 2 3 
1    1 10
3 × 6× × 7×
 
2   
 
6 7
 
4  × ×3 6
6
 ×   7
7

  
 
5 × 45 6× × 7× 6 8
 
 6    7 
6 7
× AD 6 6 ×  
×
 
A= 6 
6
7 
7   7
 
7 × ×8 6
× 7
× 9 11 5
6 7
 

6  7

8 9 6×  ×   7 ×
 
4  5
 
 10 
2 4 7 3
9 
 × 11 ×   ×  ×


10 × × ×
 
 
11 × × × × × ×Figura
× 7.9

El grafo asociado a una matriz simétrica permanece invariable, salvo la numeración de sus nudos, al
aplicársele una permutación simétrica.

Considérese el grafo de la figura 7.10a y su matriz simbólica asociada de acuerdo con esa numeración. Si en ese grafo
la numeración fuese otra, concretamente la de la figura 7.10b, la matriz simbólica asociada sería la de ese último gráfico,
en la que no se produciría ningún coeficiente de relleno al factorizarla.
166 j Capítulo 7. Sistemas lineales de grandes dimensiones. Matrices dispersas

1 2 3 4 5 6 7 1 2 3 4 5 6 7
2 3 2 3
1  2 1  
2 6  7 1 3 2 6   7
6 7 6 7
3 6  7 3 6   7
6 7 6 7
6 7 7 6 7
4 6  7 4 6   7
6 7 6 7
5 6  7 5 6   7
6 7 4 6 6 7
6 4  5 6 4  5
7   5 7 
(a) (b)
Figura 7.10

Simulemos con M ATLAB paso a paso la manipulación de esta matriz para conseguir la numeración indicada, y reco-
jámoslos todos en un fichero script —en Demo_sparse_1.m— tal como se indica en el cuadro 7.4.

% Demo_sparse_1.m
>> A=eye(7);
A=eye(7);
>> A(1,:) = A(1,:) + ones(1,7)
A(1,:) = A(1,:) + ones(1,7)
>> A(:,1) = A(:,1) + ones(7,1)
A(:,1) = A(:,1) + ones(7,1)
>> spy(A)
spy(A), pause
>> [L U P] = lu(A);
[L U P] = lu(A);
>> spy(L)
spy(L), pause
>> r=amd(A); % Ordenación grado mínimo
r=amd(A); % Ordenación grado mínimo
>> spy(A(r,r))
spy(A(r,r)), pause
>> [L U P] = lu(A(r,r));
[L U P] = lu(A(r,r));
>> spy(L)
spy(L)

Cuadro 7.4

Retomemos de nuevo la teoría de grafos y añadamos algunos conceptos más. Un camino de un nudo u1 a otro umC1
es un conjunto ordenado de nudos fu1 , u2 ; : : : ; umC1 g tal que ui y ui C1 son adyacentes para i D 1, 2; : : : ; m.
La longitud de ese camino es m.
El nudo inicial de un camino se suele denominar de partida; el final, de llegada.
Un camino también se puede definir como un conjunto ordenado de m arcos .u1 ; u2 /, .u2 ; u3 /; : : : ; .um ; umC1 /.
Dos nudos dados, u y v, se dicen unidos por un camino, si existe un camino de u a v.
Un camino es un ciclo cuando u1 D umC1 .
La distancia, d.u; v/, entre dos nudos, u y v, es la longitud del camino más corto entre ambos nudos.
Dado un nudo u, a la mayor distancia entre ese nudo y cualquier otro del grafo se la denomina excentricidad, e.u/,
del nudo u.
Un grafo se dice conexo si cada par de nudos distintos se puede unir por un camino; inconexo en caso contrario.
La mayor excentricidad de un grafo se denomina diámetro. Un nudo periférico es aquel cuya excentricidad es al
diámetro.
Volvamos a la matriz A de la figura 7.9 y su grafo asociado. En la misma, los nudos 1 y 3 están unidos por los caminos
f1, 10, 11, 3g y f1, 6, 9, 11, 3g, de longitudes 3 y 4. La distancia entre los nudos 1 y 3 es 3. El camino f5, 8, 11, 3, 5g es
un ciclo. El diámetro de este grafo es 4. Los nudos periféricos: 1, 2, 4, 5 y 6. Su excentricidad es igual a 4.
Un grafo conexo que no tiene ciclos —como el de la figura 7.11— se denomina árbol. En un árbol sólo existe un
camino entre cualquier par de nudos. Una matriz cuyo grafo asociado es un árbol se puede reordenar de forma que al
factorizarla mediante eliminación de Gauss no experimente relleno alguno.

7.4.2.2 Interpretación de la eliminación de Gauss mediante grafos


Recordemos que:
Al comienzo de una etapa k del proceso de eliminación de Gauss todos los coeficientes distintos de cero debajo de
la diagonal principal en las columnas 1, 2; : : : ; k 1 son cero.
7.4 Solución de sistemas de ecuaciones lineales de matriz dispersa j 167

9 19 3

2 10

17 18 11

12 4 14 16 1 7

13 15 5 20

Figura 7.11: Grafo con forma de árbol

En esta etapa k se determinan unos multiplicadores y se restan, de las filas que tienen un elemento distinto de cero
en la columna k debajo de la diagonal principal, la fila k multiplicada por el multiplicador correspondiente.
Este proceder puede crear nuevos coeficientes distintos de cero en la submatriz k C 1; : : : ; n.
Consideremos la submatriz activa en la etapa k: la de coeficientes aijk
, donde i, j  k. Sea G k el grafo de elimina-
ción de esa submatriz activa:

Para obtener el grafo de eliminación G kC1 a partir de G k , borrar en éste el nudo k y añadir todos los nuevos
arcos que sea posible entre nudos que sean adyacentes a ese nudo k.

Los arcos que se añaden determinan qué coeficientes nuevos distintos de cero se producirán en la matriz en un proceso
de eliminación de Gauss, o similar.
Apliquemos esta idea al grafo de la figura 7.12. En la figura 7.13 se pueden ver varias etapas del proceso que tendría
7 8 9 10 11Al final de ese proceso la matriz simbólica será la que se ve en esa figura 7.12.
lugar.
×

× 
 21 2 3 4 5 6 7 8 9 10 113
1 10 1   
× ×

2 6    7

 6 7
×  3 6
6
   7
7
   ˝

6 8 4 6 7
× ×

5 6   ˝  7
6 7

× 6   ˝ 7

 6 6 7

9 11 5 7 6   ˝  ˝˝ 7
× ×  6 7
 8 6  ˝  ˝ 7
6 7
× × 9 6  ˝  ˝ ˝  ˝ 7

4 ˝  5


2 4 7 3 10 ˝
× × 
 11       
× ×

Figura 7.12

× × × × ×
Los grafos de eliminación permiten realizar, independientemente de los valores numéricos de la matriz, una eli-
minación de Gauss simbólica y determinar qué nuevos coeficientes distintos de cero cómo máximo se van a crear.
Reservando posiciones de memoria para esos nuevos coeficientes se puede realizar la factorización numérica posterior
como es habitual.
168 j Capítulo 7. Sistemas lineales de grandes dimensiones. Matrices dispersas

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

Etapa 1

 1 2 3 4 5 6 7
10 11  8 9
1 × ××
2 
 × × × 
 1 10
3 
 × × × × 
4  × × × 
5

 × × × × 

 6 8

A2 = 6 
 × × ⊗ 

7 
 × × × ×  9 11 5
8 
 × × × 
9 
 × × × × 
2 4 7 3
10  ⊗ × × 
11 × × × × × × × G2

Etapa 2

 1 2 3 4 5 6 7 8
10 11  9
1 × × ×
2 
 × × × 
 1 10
3 
 × × × × 
4  × × ⊗ 
5

 × × × × 

 6 8

A3 = 6 
 × × ⊗ 

7 
 × × × ×  9 11 5
8 
 × × × 
9 
 ⊗ × × × 
2 4 7 3
10  ⊗ × × 
11 × × × × × × × G3

Etapa 3

 1 2 3 4 5 6 7 8 9
10 11 
1 × × ×
2 
 × × × 
 1 10
3 
 × × × × 
4  × × ⊗ 
5

 × ⊗ × × 

 6 8

A4 = 6 
 × × ⊗ 

7 
 × ⊗ × ×  9 11 5
8 
 × × × 
9 
 ⊗ × × × 
2 4 7 3
10  ⊗ × × 
11 × × × × × × G4

Etapa : : :

Figura 7.13: Proceso de factorización simbólica mediante el grafo de eliminación de una matriz
7.4 Solución de sistemas de ecuaciones lineales de matriz dispersa j 169

7.4.2.3 El algoritmo de Grado Mínimo


La expresión formal de este algoritmo es la del cuadro 7.5.

Paso 1 – Inicialización. Hacer k 1 y G 0 igual al grafo original.


Paso 2 – Selección del nudo de grado mínimo. Seleccionar en el grafo de eliminación G k 1 D .V k 1 ; E k 1
/
aquel nudo vk de grado mínimo.
Paso 3 – Transformación. Formar el nuevo grafo de eliminación G k D .V k ; E k / eliminando vk de G k 1 .
Paso 4 – Bucle. Hacer k k C 1. Si k > jV j, parar. Si no, ir al paso 2.

Cuadro 7.5: Algoritmo de Grado Mínimo

Fue formulado por Tinney y Walker en 1967. Es el más más extendido y sencillo para reducir el número de rellenos
que produce la eliminación de Gauss, u otra similar, en una matriz de estructura simétrica. La idea que sigue es:
Si en la etapa k de la factorización hay coeficientes no cero a la derecha de la diagonal principal de la fila k, al
sumar un múltiplo de esta fila a cualquiera de las filas k C 1 a n lo normal es que se produzcan nuevos coeficientes
no nulos en esas filas.
Si se determina la fila ` de la submatriz activa con el menor número de coeficientes distintos de cero y se intercambia
con la k, al igual que las columnas ` y k, el número de nuevos no cero en esa submatriz será mínimo.
El nombre de grado mínimo viene de que en el grafo de eliminación G k , el coeficiente de la diagonal principal en la
fila k representará el nudo que está unido al menor número de nudos.
Para ilustrar la idea consideremos el grafo de la figura 7.14, asociado a una matriz simétrica 7  7.

a c

b d

f g

Figura 7.14

En el cuadro 7.6 se describen las 7 etapas de que consta la aplicación del algoritmo de grado mínimo a este grafo.
Al final se consigue lo que se ve en la figura 7.15.

1 2
1 2 3 4 5 6 7
2 3
1  
2 6  7 5 3
3 6   7
6 7
AD 4 6   7
6 7
5 6     ˝7 4
6 4    5
7  ˝
6 7
Figura 7.15

El algoritmo de grado mínimo produce muy buenos resultados prácticos. Cuando el grafo que se quiere reordenar es
un árbol, el resultado no producirá coeficientes de relleno al efectuar la factorización ulterior.
No obstante, no siempre da lugar a la ordenación óptima: aquella con el menor número de rellenos. Si se aplica al
212 j Chapter 7. Sistemas lineales de grandes dimensiones. Matrices dispersas

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

Cuadro 7.4.2: Ejemplo de aplicación del algoritmo de grado mínimo


Etapa k Grafo de Eliminación G k 1
Nudo Seleccionado Grado

a❧ c❧

❅ ❧
b d❧
1 a 1
e❧

❅ ❧
f g❧

c❧

b❧ d❧
2 c 1
e❧

❅ ❧
f g❧

b❧ d❧

3 e❧ d 2

❅ ❧
f g❧

b❧

4 e❧ ❆ e 2
❅ ❆
❅ ❧ ❆❧
f g

b❧

5 ❆ b 2


f❧ g❧

6 f❧ g❧ f 1
7 g❧ g 0
Cuadro 7.6: Ejemplo de aplicación del algoritmo de grado mínimo
7.4 Solución de sistemas de ecuaciones lineales de matriz dispersa j 171

1 2 3 4 5 6 7 8 9
2 3
1  
2 7 2 6  7
6 7
3 6  7
4 6  7
1 4 5 6 9
6 7
5 6  7
6 7
6 6      7
6 7
3 8 7 6    7
8 4    5
9 

Figura 7.16

grafo de la figura 7.16, el algoritmo elegirá el nudo 5 como el inicial, lo que traerá como consecuencia que se produzca
un relleno posterior en las posiciones .4; 6/ y .6; 4/. Con la numeración de la figura, en cambio, no se producen rellenos.

7.4.2.4 El algoritmo de Cuthill-McKee


Fue formulado en 1969 por Elizabeth H. Cuthill y J. McKee. Su objetivo es que los coeficientes distintos de cero estén
lo más cerca posible de la diagonal principal.
La mecánica que utiliza es esta: Una vez numerado un nudo k, se numeran inmediatamente después los que están
unidos a él, no numerados previamente. Los coeficientes distintos de cero de la fila k estarán lo más cerca posible de la
diagonal. El cuadro que sigue lo expresa formalmente.

Paso 1 – Inicialización. Seleccionar un nudo inicial cualquiera r. Hacer v1 r.


Paso 2 – Bucle. Para i D 1; : : : ; n, determinar todos los nudos adyacentes al vi no numerados y numerarlos en
orden creciente de grado a nudos no numerados.

Definición 7.3 Se dice que una matriz simétrica tiene un perfil monótono si para todo k y `, k < `, se cumple que
lk  l` .
1 2 3 4 5 6 7 1 2 3 4 5 6 7
 
   
  
     
   
       
    

Perfil Monótono Perfil No Monótono

Teorema 7.1 La numeración dada por el algoritmo de Cuthill-McKee conduce a un perfil monótono.

Ejemplo 7.3 Apliquemos el algoritmo de Cuthill-McKee al grafo de la figura 7.17. Empezando a numerar por el nudo
a, en la parte derecha de la figura se puede ver la numeración final que se obtiene con el algoritmo.
Los nudos 5 y 6 podrían invertir su numeración según el algoritmo. Se ha escogido ésta por estar el 5 antes en la
pseudonumeración inicial.
Con la numeración obtenida, los coeficientes distintos de cero y ceros en la envolvente de la matriz simbólica asociada,
considerando sólo su parte triangular inferior, serán los de esa figura 7.17. El ancho de banda de esta matriz es 5. La
envolvente tiene 33 coeficientes; 7 de ellos cero.
172 j Capítulo 7. Sistemas lineales de grandes dimensiones. Matrices dispersas

1 2 3 4 5 6 7 8 9 10
2 3
1 
a b c 1 2 3 2 6  7
6 7
3 6  7
6 7
4 6  7
g 5 6 7
d e f 8 4 5 6 6  0  7
6 6  0   7
6 7
7 6    7
8 6 7
j 6  0 0 0  7
h i 10 9 7 9 4  0 0  5
10 

Figura 7.17

Ahora bien, si se comienza a numerar el grafo por el nudo e, el resultado de aplicar el algoritmo de Cuthill-McKee es
el de la figura que sigue, con los coeficientes distintos de cero que se muestran.

1 2 3 4 5 6 7 8 9 10
2 3
a c 1 
b 7 1 2 2 4 3 2 6  7
6 7
3 6 0  7
6 7
4 6  0  7
6 7
d e f g 3 9 1 4 9 6 10 5 5 6
6
0  0  7.
7
6 6 0 0 0   7
7 6 7
6  0 0 0 0  7
8 6  0  0 0  7
6 7
h i j 8 10 5 8 6 7 9 4  0  0 0  5
10  0  0 0 

El ancho de banda de esta matriz es 6. El número de coeficientes de la envolvente es 46; de ellos, 20 cero. La elección
del nudo inicial, una vez más, es una cuestión crítica.

7.4.2.5 Selección del nudo inicial


Normalmente, el mejor nudo de partida es uno periférico. Obtengamos uno mediante este algoritmo.

Paso 1 – Inicialización. Seleccionar un nudo arbitrario r.


Paso 2 – Generar estructura de niveles. Construir la estructura de niveles del grafo tomando como nudo raíz el nudo r:
L.r/ D fL0 .r/, L1 .r/; : : : ; L`.r/ .r/g.
Paso 3 – Bucle. Escoger un nudo v en L`.r/ .r/ todavía no tratado de grado mínimo:
a) Si e.v/ > e.r/, hacer r v e ir al Paso 2.
b) Si e.v/  e.r/, escoger otro nudo de L`.r/ .r/ y volver al paso 3; si no hay más nudos, parar.

Apliquemos este procedimiento al ejemplo comenzando por cualquier nudo, por ejemplo e. Los resultados de las tres
etapas de que consta se muestran en la figura 7.18. Los números al lado de los nudos del grafo indican su excentricidad
tomando como raíz el que se indica como 0.

2 1 1 0 1 2 4 3 3
a b c a b c a b c
0 2 2
1 d e 2 f g 2 3 d e 3 f g 3 1 d e 3 f g 3

h i j h i j h i j
2 1 1 4 3 3 0 1 2

Figura 7.18: Ejemplo de aplicación del procedimiento para seleccionar el nudo de partida en el algoritmo de Cuthill-McKee
7.4 Solución de sistemas de ecuaciones lineales de matriz dispersa j 173

Obsérvese que del resultado del algoritmo se desprende que tanto el nudo a como el h podrían utilizarse como nudos
de partida pues tienen la misma excentricidad: 4.

7.4.2.6 El algoritmo inverso de Cuthill-McKee. Reducción de la envolvente de una matriz dis-


persa simétrica
En 1971 A. George descubrió que utilizando el algoritmo de Cuthill-McKee, pero invirtiendo el orden de la numera-
ción final, se conseguía una matriz con el mismo ancho de banda pero con una envolvente con un número de coeficientes
menor o igual.
Teorema 7.2 Sea A una matriz cuyo perfil es monótono. El número de coeficientes de Env.A/, numerando el grafo
asociado a A de acuerdo con el resultado obtenido de aplicar el algoritmo inverso de Cuthill-McKee, es a lo sumo el
mismo que el de la matriz asociada al grafo numerado de acuerdo con el resultado del algoritmo ordinario de Cuthill-
McKee.
Ejemplo 7.4 Considérese el grafo que venimos manejando.

g
c e

b d
f

Si se reordena con el algoritmo de Cuthill-McKee se obtendría lo que expresa la figura 7.19.

1 2 3 4 5 6 7 1
2 3
1 
3 7
2 6      7
3 6  0 0 0 07
6 7 2
AD 4 6  0  0 0 07
6 7
5 6  0 0  0 07
6 4  0 0 0  05 4 6
7 0 0 0 0 5

Figura 7.19

Por el contrario, utilizando el algoritmo de Cuthill-McKee inverso se conseguiría el efecto de la figura 7.20. Como

21 2 3 4 5 6 73 7
1  
6   7 5 1
2 6 7
3 6   7
6   7 6
AD 4 6 7
5 6  7
6 7 4 2
6 4      5
7  3

Figura 7.20

se puede observar, desaparecen todos los posibles ceros que aparecían antes, que se podrían crear en una factorización
numérica, ahorrándose así las correspondientes posiciones de memoria para guardarlos.
174 j Capítulo 7. Sistemas lineales de grandes dimensiones. Matrices dispersas

Si al grafo que se utilizaba para introducir el algoritmo de Cuthill-McKee se le aplicada el algoritmo inverso, el
resultado que se obtiene es el que describe la figura 7.21. En este caso el ancho de banda sigue siendo 5 y la Env.A/
pasa a ser 29, de los que sólo 3 coeficientes son cero.

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

Figura 7.21: Resultado del algoritmo inverso de Cuthill-McKee para reordenar la matriz 10  10

7.4.3 Matrices dispersas no simétricas


También en este tipo de matrices se efectúa una reordenación de filas y columnas para evitar nuevos coeficientes no nulos
en un proceso como la eliminación de Gauss. Si al sistema Ax D b se le aplican unas permutaciones a la izquierda y a
la derecha, representadas por las matrices de permutación P y Q, y el sistema original se reescribe P A Q QT x D Pb,
donde QT Q D I, haciendo y D QT x y c D Pb, se tiene que,

By D c;

donde B D PAQ es la matriz A reordenada. El objetivo de estas manipulaciones es:


que B tenga una estructura de dispersidad mejor que la de A;
que su factorización sea numéricamente estable; y
que el número de coeficiente de relleno introducidos por la factorización correspondiente sea el menor posible.
Si A no tiene ninguna estructura especial, siempre se pude reordenar en forma triangular inferior en bloques,
2 32 3 2 3
A11 x1 b1
6 A21 A22 7 6 x2 7 6 b2 7
6 76 7 6 7
6 : :: 76 : 7 D 6 : 7;
4 :: : 5 4 :: 5 4 :: 5
An1 An2    Ann xn bn
Pn
donde los Aij son matrices, siendo las Ai i cuadradas de orden ni : iD1 ni D n. En la figura 7.22 se ilustra la matriz
de un sistema de grandes dimensiones sin ordenar y ordenada

7.4.3.1 Nociones básicas sobre grafos dirigidos


Un grafo G D .V; E/ es un par formado por un conjunto finito de elementos, V , denominados nudos del grafo, y por
otro también finito, E, de arcos. Un arco es un par de nudos. Si los arcos son ordenados, el grafo se denomina digrafo
o grafo dirigido.
Si e D .i; j / 2 E, este arco une un nudo de origen i con otro de destino o final j ; sale o parte de i y llega o entra en
j . El número de elementos, o cardinal de V o E, se designa jV j o jEj.
Un grafo G D .V; E/ se dice numerado si existe una biyección ˛ W f1, 2; : : : ; jN jg ! V . Siempre que hablemos de
un grafo dirigido se supondrá numerado.
El grado de entrada o llegada de un nudo es el número de nudos que a él llegan; el grado de salida, el número de
nudos que salen.
7.4 Solución de sistemas de ecuaciones lineales de matriz dispersa j 175

Figura 7.22: Matriz dispersa no simétrica reordenada en forma triangular inferior en bloques

Si .u ! v/ es un arco, el nudo v se dice adyacente al u. Un camino dirigido, es un conjunto ordenado de nudos fu1 ,
u2 , : : : ; umC1 g tal que ui C1 es adyacente a ui , i D 1, 2; : : : ; m. Su longitud es m.
Un ciclo de un digrafo, o ciclo dirigido, es un camino, con al menos dos arcos, que sale y llega al mismo nudo.
Si en un digrafo el nudo v es accesible desde u, la distancia desde u a v es la longitud del camino más corto de u a v
(la distancia desde v a u puede ser distinta o incluso indefinida).
Un digrafo se dice conexo si lo es el grafo no dirigido que se obtiene al suprimir las direcciones en los arcos del
digrafo.
A cualquier matriz general, A, n  n, se le puede asociar un digrafo de n nudos
En dicho digrafo G A D .V A ; E A /, los arcos E A son tales que

.vi ; vj / 2 E A , aij ¤ 0:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
 A cualquier coeficiente diagonal ai i ¤ 0 también le corresponde
 un arco que parte y llega a vi . Cuando todos son
1 × ×
 no nulos –transversal completo–, no se representan. 
2 
 ×En×la figura 7.23 se puede ver una matriz no simétrica 15 
 15 y su digrafo asociado. Los nudos 6, 7 y 9 son adyacentes

 
3  × × × 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
 
1 2  3 

4  × ×
2 6  
 
7 
5  × ×

3 6    7  1 2 3 4
6 7 
4 6   7 

6
 6
× 5×6  7
  7 
6 6   7 
5 6

7  6
× 7 6× 7
  7 
6 7 

6 7
× × × ×
8 6 

8 
9 6 
7 
7 


6 7 7 8 9 10 11
10 6    7 

9 
6 × × 7
 11 6  7 
12 6  ×  × 7
 
10  6 × 7  12 13 14 15
 13 6     7 
4   5 
11 14 × × 


 15   
12 × × × ×
 
 
× Figura 7.23: Una× matriz 15  15no simétrica y su digrafo asociado
 
13 
 × × 
 
14  × × 
 al nudo 8; si W D f8, 13g, el conjunto de nudos adyacentes  a los de W es Adj.W / D f6, 7, 9, 12, 14g; el nudo 5 tiene
15 un grado de entrada de 2 y de salida de 1; el nudo 4 × ×
es accesible desde el 8.

Si a una matriz se le efectúan permutaciones simétricas, en su digrafo asociado sólo se modifica la


numeración de los nudos.
176 j Capítulo 7. Sistemas lineales de grandes dimensiones. Matrices dispersas

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


Se utilizan los digrafos. En una etapa k el digrafo de eliminación se forma eliminando del de la fase k 1 el nudo
vk , todos los arcos que a él llegan o de él parten, y añadiendo un arco .u ! w/ cuando existe un camino dirigido
6 7 8 9 10 11 12 13 14 15
fu, v, wg. En la primera etapa del digrafo de la figura 7.23, el grafo de eliminación se obtiene quitando el nudo 1 y
añadiendo el arco .5 ! 2/, según se ve en la figura 7.24. La matriz simbólica de la derecha es cómo quedaría al final de
la factorización simbólica. 


× 
1 2 3 4 5

 6 7

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

2 ×
 
× ×
  
 
2 6   7
3

× × ×

6 7
6 7
  

  
 1 2 3 4 3 6    7
4  × × 
6 7
   4 6   7
5 ⊗ ×
 
1 2 3 4 6 ˝ 7
×

5 ˝˝ ˝
˝
 
6 7
  
6 × × 6 7
 
6  ˝
˝
 
5 5 66 6 7
  
× 7 × × 6 7
  
7 6   ˝
˝ 7
 
  
8  × × × × 
6 7
7 8 9 10 11 8 6  
 7
  
× × × 9 ×  6 7
 
× ×  
 
7 8 9 10 11 9 6   7
6 7

10  × ×  × 12 13 14 15
6 7
 
10   
11×  ×


×
 × 

6 7
 11 6  7
6 7
 
12  × × × ×
 
 × 12 6 ˝˝˝˝ ˝7
× ××

13 
 × × ×  12 13 14 15 6 7
13 6 ˝˝˝ ˝7
6 7
  
14  × ×
4 ˝5
 
× × 
 
14 ˝˝ 
15 × ×

Figura 7.24 15  
× × × ×



× × × × 


× ×
7.4.3.3 Estructura triangular en bloques y transversal completo


× ×
Para conseguir triangularizar por bloques una matriz A dispersa cualquiera se procede en dos fases:

Fase 1 – Encontrando un transversal completo de esa matriz.


Fase 2 – Reordenando el resultado de la fase 1 mediante permutaciones simétricas.

Cualquier matriz regular A se puede reordenar mediante permutaciones no simétricas de tal forma que el resultado,
PAQ, tenga un transversal completo. Si la matriz es singular esto puede no cumplirse.
Con transversal completo, la matriz puede reordenarse mediante permutaciones simétricas para conseguir una estruc-
tura triangular inferior en bloques:
Si esa estructura de bloques existe, se dice que A es una matriz reducible.
Si una matriz no tiene transversal completo pero puede reordenarse de tal forma que entonces sí lo tenga, y así
reordenada es reducible, se dice birreducible.

7.4.3.4 Algoritmo de Hall para obtener un transversal completo


Este algoritmo, M. Hall (1956), requiere n etapas en cada una de las cuales se coloca un coeficiente distinto de cero –si
no lo está ya– en la correspondiente posición de la diagonal principal.
Supongamos que se han realizado k etapas y que los primeros k coeficientes de la diagonal principal son ya distintos
de cero. En la etapa k C 1 podrá ocurrir:
a) Que akC1 kC1 ¤ 0 con lo que se finaliza esta etapa.
b) Que akC1 kC1 D 0, pero que exista un coeficiente distinto de cero en la submatriz activa:
Realizando los intercambios de filas y columnas necesarios se puede llevar ese coeficiente a la posición
.k C 1; k C 1/.
Los coeficientes de subíndices 1 a k no deben verse afectados por estos intercambios: los k primeros coefi-
cientes de la diagonal principal seguirán siendo distintos de cero.
c) Que sólo existan coeficientes cero en la submatriz activa:
Mediante el trazado de un camino creciente se puede conseguir colocar un coeficiente distinto de cero en
akC1 kC1 . Si no se encuentra ese camino, la matriz será singular.
7.4 Solución de sistemas de ecuaciones lineales de matriz dispersa j 177

El trazado de un camino creciente comienza, en una etapa k C 1, en el coeficiente .k C 1; k C 1/:


Continúa por la fila k C 1 hasta que se encuentra con un coeficiente distinto de cero, en una columna ` (tal columna
debe existir pues de lo contrario todos los coeficientes de la fila k C 1 serán cero y la matriz, por tanto, singular);
De aquí al coeficiente .`; `/ a lo largo de la columna `;
A continuación, por la fila ` hasta hallar un coeficiente distinto de cero, por ejemplo en la columna m, etc.
Este camino no puede atravesar una misma fila o columna más de una vez y, por tanto, tampoco un mismo coeficiente
de la diagonal principal. Terminará en un coeficiente distinto de cero en la submatriz que definen las filas 1 a k y las
columnas k C 1 a n.
Para aclarar algo el procedimiento que sigue el algoritmo, consideremos una matriz simbólica 12  12 y el procedi-
miento descrito es su etapa 9. Los coeficientes de la submatriz 9 a 12 son todos cero: hay que trazar un camino creciente.
1 2 3 4 5 6 7 8 9 10 11 12
1 × ×
2 × × ×
3 ×
4 × ×
5 × ×
6 × ×
7 × ×
8
9 ×
10
11 0
12

Éste comienza en la posición .9; 9/, sigue por la fila 9 hasta encontrar el coeficiente distinto de cero de la columna 5; continúa por la columna
5 hasta encontrar el correspondiente coeficiente distinto de cero de la diagonal principal; sigue por la fila 5 hasta encontrar el coeficiente distinto
de cero de la columna 2; continúa por la columna 2 hasta encontrar el coeficiente distinto de cero de la diagonal principal en la fila 2; sigue por la
fila 2 hasta encontrar el coeficiente distinto de cero de la columna 4; continúa por la columna 4 hasta alcanzar el coeficiente distinto de cero de la
diagonal principal en la fila 4; sigue por la fila 4 hasta encontrar el coeficiente distinto de cero de la columna 7; continúa por la columna 7 hasta
alcanzar el coeficiente distinto de cero de la diagonal principal en la fila 7; sigue por la fila 7 encontrándose que el único coeficiente distinto de
cero de esta fila está en la columna 5 que ya se ha visitado; esto obliga a borrar las filas 7 y 4 del camino (no de la lista de posiciones ya visitadas)
y reemprender la marcha allí donde se abandonó en la fila 2.
Por la fila 2 se llega hasta la columna 6 donde está el siguiente coeficiente distinto de cero; continúa en la columna 6 hasta la diagonal principal
en la fila 6; sigue por esa fila 6 hasta llegar al coeficiente distinto de cero de la columna 1; continúa por la columna 1 hasta alcanzar el coeficiente
distinto de cero de la diagonal principal en la fila 1; sigue por la fila 1, parándose al llegar al primer coeficiente distinto de cero que encuentra en
la columna 12 por estar en la submatriz que nos interesa.
El camino es pues
f9; 5; 2; 6; 1; 12g:
Encontrado el camino, se efectúan los intercambios que trasladan el coeficiente distinto de cero .1; 12/ a la posición .9; 12/. Es decir, la fila 9
con la 5, la 5 con la 2, la 2 con la 6, la 6 con la 1, la 1 con la 12 y la 12 con la 9
Si el coeficiente .6; 1/ fuese cero, hubiésemos encontrado que las filas 9, 5, 2, 4, 7 y 6 tienen coeficientes distintos de cero sólo en las columnas
5, 2, 4, 7 y 6, lo que significaría que la matriz es singular.

7.4.3.5 Permutaciones simétricas para obtener una estructura triangular en bloques


Obtenido un transversal completo, la siguiente fase para llegar a una matriz triangular en bloques consiste en encontrar
otra permutación que haga
2 3
B11
6 B21 B22 7
6 7
6 : :: 7;
4 :: : 5
Bn1 Bn2    Bnn
donde cada bloque diagonal, Bi i , no se pueda reducir más.
Los algoritmos para conseguir este propósito se basan en encontrar los ciclos “fuertemente conexos” en el digrafo
asociado. Si existiesen dos de estos ciclos fuertes y se renumerasen los nudos de tal forma que los del primero fuesen
los nudos 1 al k y los del segundo k C 1 al n, se obtendría una matriz triangular inferior en dos bloques, el primero con
k columnas y el segundo con n k. En el grafo dirigido de la figura 7.25 existen dos ciclos fuertes, el formado por los
nudos 1 y 2 y el que definen 3, 4 y 5. La estructura simbólica en 2 bloques de su matriz asociada es la que está a su lado.
178 j Capítulo 7. Sistemas lineales de grandes dimensiones. Matrices dispersas

5 



1 2 3 4
 

Figura 7.25: Grafo dirigido con dos ciclos fuertes y su matriz asociada

7.4.3.6 Matrices dispersas generales: eliminación de Gauss


Si la matriz del sistema de ecuaciones que hay que resolver no presenta una estructura de dispersidad especial y tampoco
interesa triangularizarla por bloques, la forma más general de abordar su resolución consiste en utilizar directamente la
eliminación de Gauss teniendo en cuenta que esa matriz es dispersa.
Para llevarla a cabo se usa el criterio de Markowitz, por Harry Max Markowitz, EE.UU. 1927-. Premio Nobel de
economía de 1990. Lo formuló en 1957 y consiste, con una estrategia similar a la de grado mínimo, en factorizar la

Markowitz

k
matriz mediante eliminación de Gauss con pivotación, escogiendo como elemento pivote en una etapa k uno aij de A
que sea numéricamente aceptable y que minimice el producto

.rik 1/.cjk 1/;

donde rik es el número de coeficientes no cero en la fila i de la submatriz activa y cjk el de los no cero en la columna j .
En la figura 7.26 se ilustra la situación para el caso en que n D 7 y k D 3.

1
1 U
Obsérvese que es más conveniente usar .rik 1/.cjk 1/ que rik cjk pues de esta manera
1 rT
× ×× × se fuerza a que se elija un coeficiente k
aij tal que en su fila o columna sólo exista él
× ×× × como coeficiente distinto de cero.
L c
× ×× ×
× ×× ×
Figura 7.26

7.5 Problemas de mínimos cuadrados lineales de grandes dimen-


siones
Son problemas de mínimos cuadrados lineales en los que la matriz A es de grandes dimensiones y dispersa. Se pueden
usar, en principio, sus ecuaciones normales

minimizar
n
kAx bk2 ” A T .Ax b/ D 0:
x2R

Si suponemos que A es de rango completo, resulta que A T A es simétrica y definida positiva.


7.5 Problemas de mínimos cuadrados lineales de grandes dimensiones j 179

Teorema 7.3 Supóngase que no se producen errores numéricos de cancelación en el cálculo de A T A, entonces,

A T A j k ¤ 0 , aij ¤ 0 y ai k ¤ 0
para al menos una fila i D 1, 2; : : : ; m.
Este resultado permite saber dónde se producirán coeficientes de relleno al obtener A T A. Un algoritmo general básico
para resolver un problema de mínimos cuadrados con matriz dispersa de grandes dimensiones es el del cuadro 7.7.

Paso 1 – Determinar la estructura simbólica de A T A.


Paso 2 – Determinar una permutación de columnas Q tal que el factor de Cholesky de QT A T AQ tenga una
estructura dispersa buena.
Paso 3 – Factorizar simbólicamente por Cholesky QT A T AQ y generar las estructuras de datos y memoria
necesarias para G .
Paso 4 – Calcular numéricamente B D QT A T AQ y c D QT A T b; almacenar B en la estructura de datos
correspondiente a G .
Paso 5 – Calcular numéricamente la factorización de Cholesky G T G de B. Resolver G T z D c, G y D z y, por
fin, x D Qy.

Cuadro 7.7: Algoritmo básico para mínimos cuadrados de matriz dispersa

7.5.1 Transformaciones ortogonales. Método de George-Heath


Recordemos que un conjunto de transformaciones ortogonales, representadas por Q 2 Rmm , puede reducir la matriz
A 2 Rmn (que supondremos de rango n) y b 2 Rm de la forma
   
R1 c
QA D y Qb D ;
0 d

donde R 1 2 Rnn es una matriz triangular superior y c 2 Rn . La solución del problema de mínimos cuadrados se
obtiene de R 1 x D c; la suma de residuos al cuadrado es kdk22 .
El algoritmo de George y Heath [1980] lleva a cabo este proceso de transformaciones ortogonales secuencialmente en
las filas de A:
I. R i 1 designa la matriz triangular superior que se obtiene después de procesar las filas a1T ; : : : ; aiT 1 .
Al procesar la fila aiT D Œai1 , ai 2 ; : : : ; ai n  se buscan de izquierda a derecha los coeficientes distintos de cero.
Para cada aij ¤ 0, i > j , se define una transformación de Givens que involucre a la fila j de R i 1 y anule aij .
Procediendo así se pueden crear nuevos coeficientes distintos de cero en R i 1 y en la fila aiT .
II. Si al tratar la fila i, al llegar al coeficiente j.j < i / éste no es cero y rjj D 0, la fila j en R i 1 todavía no se ha
visto afectada por ninguna rotación y debe ser toda cero: Lo que resulta de la fila i debe insertarse en la fila j .
Un ejemplo de este proceso actuando sobre los coeficientes de la fila 9 de una matriz 9  8 es el de la figura 7.27. Los
símbolos ˝ designan los coeficientes que intervienen en la eliminación de a9T . Los que se crean de relleno en R 8 y a9T
durante la eliminación se designan mediante ˚.
Obsérvese que los tres últimos coeficientes de la fila 9, una vez anulados del 1 al 5, reemplazan a los de la fila 6, que
eran 0.

7.5.1.1 Ordenación de las filas de la matriz del sistema


El número de operaciones del proceso descrito depende también del orden de las filas de A. Por ejemplo, las matrices del
cuadro 7.8 requieren O.mn2 / y O.n2 / operaciones, respectivamente, para reducirlas. Para reordenar las filas se puede
aplicar la idea de ese mismo cuadro.
Con todas estas consideraciones, el algoritmo de ortogonalización de George y Heath para mínimos cuadrados queda
como el del cuadro 7.9.
180 j Capítulo 7. Sistemas lineales de grandes dimensiones. Matrices dispersas

 0  0 0  0 0
˝0˚ 0 0 0
 0  0  0
˝˚ 0 0 0
˝˝ 0 0
˚ ˚ 0
0 

0  0 ˚˚ 0 ˝

Figura 7.27

2 3 9 2 3 9
 >  >
6 >
7 > 6 7 >
>
6 7 = 6 7 =
6: 7 m 6: 7 m
6: 7 > 6: 7 > Si el índice de columna del último coeficiente distinto de
6: 7 >
> 6: 7 >
>
6 7 ; 6 7 ;
6 7 9 6 7 9 cero de la fila aiT es `i y el primero fi , ordenar primero las
6 7 6 7
A D 6 7 >
> y PA D 6    7 >
> filas cuyos índices fi , i D 1, 2; : : : cumplan que fi  fk
6 7 > 6 7 >
6  7 >
> 6  7 >
> si i < k y luego, para cada grupo de filas tales que fi D k,
6 7 = 6 7 =
6 7 6 7 k D 1; : : : ; mKaxi fi , ordenar las filas según `i crecientes.
6  7 >n 6  7 >
n
6 7 >
> 6 7 >
>
4  5 >>
;
4  5 >
>
;
 

Cuadro 7.8

Referencias, fuentes y lecturas complementarias


Todo lo expuesto relativo a formas de almacenar en ordenador matrices dispersas trata de reflejar las tendencias más
usadas desde hace años. En este sentido, se pueden consultar los siguientes libros: Duff, Erisman y Reid [1986]; George
y Liu [1981], Lascaux y Théodor [1986]; Pissanetzky [1984]; Saad [1994]; Schendel [1989] y Tewarson [1973].
Para la elaboración del apartado sobre operaciones algebraicas elementales en matrices dispersas he seguido a Duff,
Erisman y Reid [1986] y Pissanetzky [1984]; los programas de ordenador son del autor y se basan en los que propone
Pissanetzky [1984].
Muchos de los gráficos y figuras de matrices dispersas del texto se han confeccionado con el paquete de software
SMMS de Alvarado [1990]. Otro paquete muy interesante similar, en el dominio público, es el de Youcef Saad [1994],
SPARSKIT. Las dirección de Internet donde se puede encontrar “casi toda” la información y software disponibles sobre
matrices dispersas es The University of Florida Sparse Matrix Collection.
Entre los “paquetes” de software que todavía especifican un núcleo dedicado en particular a matrices dispersas destaca
el WSMP (Watson Sparse Matrix Package), de IBM Research. Estas técnicas están embebidas como algo habitual en
cualquier paquete de software científico o ingenieril moderno.
Las nociones sobre grafos, tanto dirigidos como no dirigidos, están basadas en las propuestas por Pissanetzky [1984]

Paso 1 – Llevar a cabo los Pasos 1 a 3 del algoritmo básico del cuadro 7.7 de la página 179.
Paso 2 – Determinar una permutación de filas P tal que las filas de PAQ tengan unos índices de columnas `i
crecientes.
Paso 3 – Calcular numéricamente R 1 y c procesando las filas de ŒPAQ, Pb mediante transformaciones de
Givens.
Paso 3 – Resolver Ry D c. Hacer x D Qy.

Cuadro 7.9: El algoritmo de ortogonalización de George y Heath


7.5 Problemas de mínimos cuadrados lineales de grandes dimensiones j 181

pero adaptadas y completadas para ser coherentes con las que se exponen en las partes del texto relativas a programación
lineal y entera.
La interpretación mediante grafos de la eliminación de Gauss en matrices simétricas dispersas sigue a Pissanetzky
[1984]. El algoritmo de grado mínimo para reordenar ese tipo de matrices está basado en George y Liu [1981]; el de
Cuthill-McKee en George y Liu [1981] y Lascaux y Théodor [1986]; el de Cuthill-McKee inverso utiliza la descripción
de Duff, Erisman y Reid [1986]. Los métodos de disección aparecen muy bien descritos en Duff, Erisman y Reid [1986]
y en Pissanetzky [1984]; en la exposición presentada se ha hecho un resumen de la de éste último.
El algoritmo de Hall se puede encontrar en varias de las referencias mencionadas; la exposición hecha en el texto se
ha basado parcialmente en la de Pissanetzky [1984].
Lo que hace referencia a mínimos cuadrados dispersos se puede encontrar muy bien tratado en Björk [1990] y [1996],
George y Heath [1980] y George y Ng [1985].
182 j Capítulo 7. Sistemas lineales de grandes dimensiones. Matrices dispersas
Capítulo 8

Sistemas de ecuaciones lineales. Algoritmos


de resolución iterativos

Contenido
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.2 Método de los gradientes conjugados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
8.6 Métodos de subespacios de Krylov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
8.6.1 Métodos GMRES para matrices no simétricas . . . . . . . . . . . . . . . . . . . . . . . . . . 206
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

L OS procedimientos iterativos siguen un esquema de trabajo como el de este cuadro.

 * Algoritmo iterativo para la resolución de Ax D b


Dados un x D x .0/ y una tol, hacer k D 1 y sol D f al se
while (not sol) and (k < kmax )
Obtener nueva solución x D x .k/ , k D k C 1
if (x .k/ x .k 1/ < tol), sol D true, fin
end

Parten de un punto relativamente cercano a la solución y convergen a ella en una determinada sucesión de nuevos puntos
que veremos cómo obtener.
Un proceso iterativo busca acercarse a la solución mediante pasos en los que se realizan operaciones sencillas: pro-
ductos de matrices por vectores o similares.
El método convergerá si lKımk!1 x .k/ D x o el error e .k/ D x .k/ x tiende a cero. El acercarse adecuadamente a la
solución lo medirá una métrica como jjb Axjj, u otra similar.
La forma más simple de proceso iterativo es la que define la fórmula de recurrencia

x .kC1/ D M x .k/ C Nb
184 j Capítulo 8. Sistemas de ecuaciones lineales. Algoritmos de resolución iterativos

donde M y N se escogen para que en un punto dado x, solución de Ax D b, se cumpla que


x D M x C Nb:
Si A es invertible, se debe cumplir que .I M /A 1 b D Nb o que A 1 D .I M / 1 N .
El método iterativo se denomina estacionario, o de punto fijo, si M y N son constantes en el proceso. Se escoge una
M sencilla o con M 1 fácil de obtener.
Si A se divide así, A D I .I A/, el sistema queda .I .I A// x D b. Una posible relación de recurrencia de
punto fijo sencilla —esquema de Richardson— sería
x .k/ D .I A/ x .k 1/
C b:

8.1 Método de Jacobi


Lo formuló alrededor de 1845 Carl Gustav Jacobi, Alemania (Prusia), 1804-1851.

Jacobi

Supongamos que se desea resolver el sistema de ecuaciones lineales


a11 x1 C a12 x2 C a13 x3 D b1
a21 x1 C a22 x2 C a23 x3 D b2
a31 x1 C a32 x2 C a33 x3 D b3 :
Admitiendo que los coeficientes a11 , a22 y a33 son distintos de cero, se puede despejar de la primera ecuación la
incógnita x1 , de la segunda x2 y x3 de la tercera, resultando lo que sigue
1
x1 D .b
a11 1
a12 x2 a13 x3 /
1
x2 D .b
a22 2
a21 x1 a23 x3 /
1
x3 D .b
a33 3
a31 x1 a32 x2 /:
Estas expresiones sugieren emplear como método iterativo el que definen las siguientes relaciones de recurrencia
 
x1.kC1/ D a111 b1 a12 x2.k/ a13 x3.k/
 
x2.kC1/ D a122 b2 a21 x1.k/ a23 x3.k/
 
x3.kC1/ D a133 b3 a31 x1.k/ a32 x2.k/ :

Su generalización, para un sistema n  n, es la base del método de Jacobi. Esta


0 1
Xn
.kC1/ 1 @ .k/ A
xi D bi aij xj ; i D 1; : : : ; n:
ai i
j D1; j ¤i

En forma matricial este esquema iterativo se expresa de esta manera


1 1
x .kC1/ D D .L C U / x .k/
CD b
š
Matriz de Jacobi
8.1 Método de Jacobi j 185

donde la matriz A se ha dividido de la forma A D LCDC U y


2 3 2 3 2 3
a11 0  0 0 0 0  0 0 0 a12    a1 n 1 a1 n
6 0 a22  0 0 7 6 a21 0  0 07 60 0    a2 n a2n 7
6 7 6 7 6 1 7
6 : :: :: :: :: 7 6 :: :: :: :: 7 6: :: :: :: 7
DD6
6 :: : : : :
7; L D 6
7 6 : : : :7
7 y U D6
6 :: : : :
7;
7
6 7 6 7 6 7
4 0 0    an 1n 1 0 5 4 an 1 1 an 1 2    0 05 40 0  0 an 1n 5
0 0  0 ann an1 an2    an n 1 0 0 0  0 0

La matriz de Jacobi, J D D 1 .L C U /, sólo tiene sentido si los ai i , i D 1; : : : ; n, son todos positivos.


El algoritmo al que da lugar esta forma de actuar es el que sigue.

while kx .kC1/ x .k/ k1 =kx .kC1/ k1 > T ol do


for i D 1 to n 0 1
n
X
1 B Bb.i/
C
x.i/ a.i; j /x.j /C
a.i; i/ @ A
j D1
j ¤i
end
end

Su codificación en M ATLAB, en dos formatos compactos, los de estos cuadros.

function [x k]=Jacobi_2(A,b)
% Resuelve Ax=b por Jacobi function [x k]=Jacobi_NEW_1(A,b)
n=size(A,1); x=zeros(n,1); y=x; sm=1; k=0; % Resuelve Ax=b por Jacobi (compacto)
while sm>=0.001 n=length(b); x=zeros(n,1); k=0; sm=1;
k=k+1; d=diag(A); r=A-diag(d);
for i=1:n while sm>0.001
j = [1:i-1 i+1:n]; y = (b-r*x)./d;
y(i)=(b(i)-A(i,j)*x(j))/A(i,i); sm=max(abs(x-y))/max(abs(y));
end x = y;
sm=max(abs(x-y))/max(abs(y)); k = k+1;
x=y; end
end end
end

Ejemplo 8.1 Resolvamos con el algoritmo de Jacobi este sistema de ecuaciones lineales:

10x1 x2 C 2x3 D 6
x1 C 11x2 x3 C 3x4 D 25
2x1 x2 C 10x3 x4 D 11
3x2 x3 C 8x4 D 15:

Partiendo de x .0/ D Œ0; 0; 0; 0T , aplicando la relación de recurrencia formulada se tendrá que

x1.1/ D 1 .0/
x
10 2
1 .0/
x
5 3
C 3
5
D 0,6000

x2.1/ D 1 .0/
x
11 1
C 1 .0/
x
11 3
3 .0/
x
11 4
C 25
11
D 2,2727

x3.1/ D 1 .0/
x
5 1
C 1 .0/
x
10 2
C 1 .0/
x
10 4
11
10
D 1,1000

x4.1/ D 3 .0/
x
8 2
C 1 .0/
x
8 3
C 15
8
D 1,8750:

Las iteraciones que siguen se generan de forma similar:


k 0 1 2 3 4  9
.k/
x1 0,0000 0,6000 1,0473 0,9326 1,0152 0,9997
.k/
x2 0,0000 2,2727 1,7159 2,0533 1,9537 2,0004
.k/
x3 0,0000 -1,1000 -0,8052 -1,0493 -0,9681 -1,0009
.k/
x4 0,0000 1,8750 0,8852 1,1309 0,9739 1,0006
186 j Capítulo 8. Sistemas de ecuaciones lineales. Algoritmos de resolución iterativos

El criterio de llegada al óptimo puede ser cualquiera; aquí hemos forzado a que
.k/
x x .k 1/ 1
< 10 3 :
x .k/
1

En k D 9 se cumple que
kx .9/ x .8/ k1 8,0  10 4
3
D D 0;0003999 < 10 :
kx k1
.9/ 2,0004
Utilicemos el código Jacobi_2.m para resolver el ejemplo en una sesión con M ATLAB.

>> A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;0 3 -1 8];


>> b=[6;25;-11;15];
>> [x k]=Jacobi_2(A,b)
x =
0.9997
2.0004
-1.0004
1.0006
k =
9

En nueve iteraciones se satisface el criterio elegido con una milésima de precisión.


Ejemplo 8.2 Resolvamos con el algoritmo de Jacobi el sistema

10x1 C x2 D 11
2x1 C 10x2 D 12

partiendo del punto x .0/ D Œ0; 0T . La solución exacta es Œ1; 1T .
Los puntos que se generan en el proceso iterativo son los de esta tabla.

k 0 1 2 3 4 5
.k/
x1 0,0000 1,1000 0,9800 1,0020 0,9996 1,00004
.k/
x2 0,0000 1,2000 0,9800 1,0040 0,9996 1,00008

Resolvamos también con Jacobi este otro sistema

x1 C 10x2 D 11
10x1 C 2x2 D 12

cuya solución es también Œ1; 1T . Partiendo de x .0/ D Œ0; 0T , los primeros puntos que se generan son:
k 0 1 2 3 4 5
.k/
x1 0,0000 11 -49 501 -2499 25001
.k/
x2 0,0000 6 -49 251 -2499 12501

El proceso diverge.

Definición 8.1 Se dice que una matriz A nn (compleja o real) es de diagonal estrictamente dominante por filas
cuando cumple que X
jai i j > jaij j; i D 1; : : : ; n:
j ¤i

Se define análogamente la matriz de diagonal dominante por columnas.

Teorema 8.1 Si en el sistema Ax D b la matriz A es de diagonal estrictamente dominante y regular, para todo b y
toda estimación inicial x .0/ el método iterativo de Jacobi converge a su única solución.
La dominancia diagonal estricta es sólo una condición suficiente. El método puede converger aún en su ausencia.
188 j Capítulo 8. Sistemas de ecuaciones lineales. Algoritmos de resolución iterativos

function [x k]=Gauss_Seidel_1_1(A,b)
% Resolución por Gauss-Seidel
n=size(A,1); x=zeros(n,1); sm=1; k=0; function [x k]=Gauss_Seidel_NEW(A,b)
while sm>0.001 % Resolución por Gauss-Seidel (compacto)
k=k+1; sm=0; D=diag(diag(A)); L=-tril(A,-1); U=-triu(A,1);
for i=1:n n=size(A,1); x=zeros(n,1); k=0; sm=1;
j=[1:i-1 i+1:n]; while sm>0.001
xi=(b(i)-A(i,j)*x(j))/A(i,i); y = (D-L)\(U*x + b);
sm=max(abs(x(i)-xi),sm); sm=norm(abs(y-x),inf); k=k+1;
x(i)=xi; x = y;
end end
sm=sm/max(abs(x)); end
end
end

Cuadro 8.1

Ejemplo 8.3 Resolvamos por Gauss-Seidel el sistema lineal anterior:

10x1 x2 C 2x3 D 6
x1 C 11x2 x3 C 3x4 D 25
2x1 x2 C 10x3 x4 D 11
3x2 x3 C 8x4 D 15:

Aplicando la relación general de recurrencia de Gauss-Seidel a este caso, partiendo del punto inicial x .0/ D Œ0; 0; 0; 0T ,
se tiene que
.1/ 1 .0/ 1 .0/ 3
x1 D 10 x2 5 x3 C 5 D 0,6000
.1/ 1 .1/ 1 .0/ 3 .0/ 25
x2 D 11 x1 C 11 x3 11 x4 C 11 D 2,3273
.1/ 1 .1/ 1 .1/ 1 .0/ 11
x3 D 5 x1 C 10 x2 C 10 x4 10 D 0,9873
.1/ 3 .1/ 1 .1/ 15
x4 D 8 x2 C 8 x3 C 8 D 0,8789:
Las iteraciones que se generan son las de la tabla.
k 0 1 2 3 4 5
.k/
x1 0,0000 0,6000 1,0302 1,0066 1,0009 1,0001
.k/
x2 0,0000 2,3273 2,0369 2,0036 2,0003 2,0000
.k/
x3 0,0000 -0,9873 -1,0145 -1,0025 -1,0003 -1,0000
.k/
x4 0,0000 0,8789 0,9843 0,9984 0,9998 0,9999

Obsérvese que con este método la resolución del problema, con el mismo criterio de convergencia, necesita 5 itera-
ciones; el de Jacobi lo hacía en 9. Con Gauss_Seidel_1_1.m en una sesión de M ATLAB para resolverlo:

>> A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;0 3 -1 8];


>> b=[6;25;-11;15];
>> [x k]=Gauss_Seidel_NEW(A,b)
x =
1.0001
2.0000
-1.0000
1.0000
k =
5

En cinco iteraciones efectivamente converge con una milésima de precisión, que es el criterio elegido de finalización.

Proposición 8.2 Si la matriz A es de diagonal estrictamente dominante se cumple que


kG k1  kJ k1 :

Teorema 8.3 El método de Gauss–Seidel para resolver Ax D b converge a su solución si la matriz de coeficientes es
de diagonal estrictamente dominante.
8.3 Métodos de relajación j 189

Teorema 8.4 El esquema iterativo


x .kC1/ D M x .k/ C Nb
es convergente si y sólo si el radio espectral de M es menor que 1. En ese caso la sucesión x .k/ converge a la solución
de la ecuación x D M x C Nb.

Teorema 8.5 El método iterativo de Gauss–Seidel es convergente para todo sistema de ecuaciones cuya matriz de
coeficientes es simétrica y definida positiva.

Teorema 8.6 Si A es una matriz simétrica y definida positiva el método iterativo de Jacobi es convergente si y sólo si
2D A es definida positiva.

8.3 Métodos de relajación


Recordando lo que vimos al principio de este capítulo para tratar de resolver Ax D b, haciendo A D I .I A/ el
sistema queda .I .I A// x D b. Simplificando la notación, una fórmula de recurrencia que se puede utilizar para
un proceso iterativo sería xk D .I A/ xk 1 C b.
Si el vector de residuos es rk 1 D b Axk 1 , en cada punto del proceso xk D xk 1 C rk 1 . De forma recurrente,
xk D x0 C r0 C r1 C    C rk 1 :
Los métodos de Jacobi y Gauss-Seidel se pueden generalizar escribiendo sus relaciones de recurrencia de esta forma

xi.kC1/ D xi.k/ C ri.k/ ; i D 1; : : : ; n:

Vistos así, Jacobi y Gauss-Seidel llegan a la solución mediante unos pasos, en cada uno de los cuales se mejora la
solución una cantidad r .k/ . Pn .k/
.k/
bi j D1 aij xj
En el método de Jacobi, ri D .
ai i
Pi 1 .kC1/ P n .k/
bi j D1 aij xj j Di aij xj
En Gauss-Seidel, ri.k/ D :
ai i
Los métodos —también estacionarios— de relajación buscan mejorar las prestaciones de convergencia en cada itera-
ción potenciando la relación de recurrencia mediante un factor ! de ri.k/ , así

xi.kC1/ D xi.k/ C !ri.k/ ; i D 1; : : : ; n

de tal forma que se avance un paso más amplio, ! > 1, o más corto, ! < 1, según convenga en la resolución del
problema que se estudia. A ! se le conoce como parámetro de relajación.

8.3.1 Método SOR


Aunque a Jacobi se le puede aplicar esta idea, el más conocido quizás es el método SOR, Successive Overrelaxation
–sobrerrelajación sucesiva–. Resulta de aplicar la idea indicada al método de Gauss-Seidel. Su relación de recurrencia
es 0 1
i 1
X Xn
.kC1/ ! @ .kC1/ .k/ A
xi D bi aij xj aij xj C .1 !/xi.k/ ; i D 1; : : : ; n:
ai i
j D1 j Di C1

Si A D D L U , el esquema iterativo SOR en forma matricial es

1 1
x .kC1/ D .D !L/ ..1 !/D C !U / x .k/ C ! .D !L/ b:
190 j Capítulo 8. Sistemas de ecuaciones lineales. Algoritmos de resolución iterativos

1
La matriz del método es G .!/ D .D !L/ ..1 !/D C !U / El esquema del algoritmo SOR es el que sigue.

while kx .kC1/ x .k/ k1 =kx .kC1/ k1 > T ol do


for i D 1 to n 0 1
i 1
X n
X
! @
x.i / b.i / a.i; j /x.j / a.i; j /x.j /A C .1 !/x.i /
a.i; i /
j D1 j DiC1
end
end

En M ATLAB, en formas explícita y matricial:

function [x k]=SOR(A,b,w) function [x, error, iter] = sor_1(A, b, w, tol)


% Resolución por SOR % Resolución por SOR (compacto)
n=size(A,1); x=zeros(n,1); sm=1; k=0; if nargin<5, tol=sqrt(eps); end
if nargin<3 w=1.25; end n=size(A,1); x=zeros(n,1);
while sm>=0.0001 r = b - A*x; error = norm(r); iter=0;
k=k+1; sm=0; if error<tol, return, end
for i=1:n b = w * b;
j=[1:i-1 i+1:n]; M = w * tril(A,-1) + diag(diag(A));
su=b(i)-A(i,j)*x(j); N = -w * triu(A,1) + (1.0 - w) * diag(diag(A));
xi=(1-w)*x(i)+w*su/A(i,i); while error>=tol
sm=max(abs(x(i)-xi),sm); x_1 = x;
x(i)=xi; x = M \ ( N*x + b );
end error = norm(x - x_1)/norm(x);
sm=sm/max(abs(x)); iter = iter+1;
end end
end end

Ejemplo 8.4 Resolvamos por el método SOR el sistema de ecuaciones lineales

4x1 C 3x2 D 24
3x1 C 4x2 x3 D 30
x2 C 4x3 D 24:

Aplicando la relación general de recurrencia del método, partiendo del punto inicial x .0/ D Œ1; 1; 1T , con ! D 1;25,
se obtienen los resultados de la siguiente tabla.
k 0 1 2 3 4 5 6 7
.k/
x1 1,0000 6,3125 2,6223 3,1333 2,9570 3,0037 2,9963 3,0000
.k/
x2 1,0000 3,5195 3,9585 4,0102 4,0074 4,0029 4,0009 4,0002
.k/
x3 1,0000 -6,6501 -4,6004 -5,0966 -4,9734 -5,0057 -4,9982 -5,0003

Juguemos un poco en M ATLAB con el parámetro ! para ver qué resultados se obtienen. El resultado se ve en el
cuadro 8.2. Desde el mismo punto de partida, con ! D 2,25, el proceso diverge, tal como indica la tabla que sigue.
k 0 1 2 3 4 5 6 7
.k/
x1 1,0000 10,5625 3,0588 1,3328 -10,8367 12,2136 10,9919 18,5938
.k/
x2 1,0000 -1,6367 4,9442 13,4344 8,7895 -7,5608 -11,1607 11,9961
.k/
x3 1,0000 -15,6706 8,8695 -17,0300 12,7316 -33,6674 22,3064 -34,6352

Teorema 8.7 Ostrowski-Reich. Para un sistema de ecuaciones con matriz simétrica y definida positiva, el método
iterativo de relajación SOR converge si y sólo si el parámetro de relajación cumple que 0 < ! < 2.

8.3.2 Método SSOR


Cuando A es simétrica, el método Symmetric Successive Overrelaxation —sobrerrelajación sucesiva simétrica— combi-
na dos pasos del SOR de tal manera que la matriz de cada iteración es similar a una simétrica. Cada paso está compuesto
8.4 Métodos estacionarios para matrices dispersas j 191

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


>> b=[24;30;-24]; >> [x error iter]=sor_1(A,b,1.5)
>> [x error iter]=sor_1(A,b,1) x =
x = 3.0000
3.0000 4.0000
4.0000 -5.0000
-5.0000 error = 1.0722e-08
error = 9.6306e-09 iter = 28
iter = 36 >> [x error iter]=sor_1(A,b,2.25)
>> [x error iter]=sor_1(A,b,1.25) x =
x = -Inf
3.0000 Inf
4.0000 NaN
-5.0000 error = NaN
error = 1.4007e-08 iter = 3165
iter = 15

Cuadro 8.2

de uno SOR hacia adelante seguido de otro SOR hacia atrás. Si se descompone una vez más la matriz A de la forma
A D D L U , el esquema iterativo del método SSOR en forma matricial tiene esta expresión

1 1
x .kC1/ D B1 B2 x .k/ C!.2 !/ .D !U / D .D !L/ b

donde B1 D .D !U / 1 .!L C .1 !/D/ y B2 D .D !L/ 1 .!U C .1 !/D/. La matriz B2 es la de SOR y


B1 es igual con los papeles de L y U invertidos.
Una codificación en M ATLAB del procedimiento y su prueba con el problema de último ejemplo podrían ser los del
cuadro 8.3.

function [sol, it, res] = SSOR_1(A,b,x0,omega)


% Método estacionario SSOR
n = size(A,1); tol = sqrt(eps); maxit = 1500;
it = 1; flag = 1; tmp = x0; sol = zeros(n,1); >> A=[4 3 0;3 4 -1;0 -1 4];
% Matrices necesarias >> b=[24;30;-24];
L = tril(A,-1); D = diag(diag(A)); >> [sol, it, residual] = SSOR_1( A, b, zeros(3,1), 1)
% Productos matriciales iniciales residuo( 1) = 4.0173269739e+00
DomegaL = D+omega*L; DL = (1-omega)*D-omega*L; residuo( 2) = 2.0847794045e+00
M_inv_b = DomegaL’\(D*(DomegaL\b)); .
M_inv_b = (omega*(2-omega))*M_inv_b; residuo( 33) = 2.9935544173e-07
while it <= maxit && flag == 1 residuo( 34) = 1.8013146669e-07
sol = DomegaL’\(DL*(DomegaL\(DL’*tmp))); sol =
sol = sol+M_inv_b; res = norm(A*sol-b); 3.0000
fprintf(’residuo(%4.0f) = %17.10e \n’, it, res); 4.0000
if res<=tol || norm(sol-tmp)/norm(sol)<=tol -5.0000
flag = 0; it =
else 34
tmp = sol; residual =
it = it + 1; 1.8013e-07
end
end
end

Cuadro 8.3

Este método, o mejor su matriz de iteración, se usa principalmente en la actualidad como acondicionador previo de
otros métodos iterativos.

8.4 Métodos estacionarios para matrices dispersas


¿Por qué emplear métodos iterativos, en vez de los directos, si aquellos son aproximados y pueden requerir muchos
pasos? Existen dos razones primordiales:
En un paso de los procedimientos iterativos se efectúan sólo una pequeña fracción de las operaciones que hacen los
192 j Capítulo 8. Sistemas de ecuaciones lineales. Algoritmos de resolución iterativos


directos. La factorización LU necesita O n3 =3 operaciones mientras que el método de Jacobi, por iteración, sólo
n. Si se parte de un punto próximo a la solución se puede llegar a ésta en un tiempo corto.
Si la matriz de coeficientes del problema tiene muy pocos coeficientes distintos de cero, la factorización LU puede
causar que muchos se hagan distintos de cero en los factores. El método de Jacobi, si es adecuado aplicarlo, al no
factorizar la matriz, puede sacar mucha ventaja de esa estructura de dispersidad en problemas de gran tamaño.
Ejemplo 8.5 Vamos a resolver un sistema lineal de hasta 1:000:000 de ecuaciones en el que la matriz tiene esta estruc-
tura: 2 3 1
3 1 0 0 0 0 0 0 0 2
6 1 3 1 0 0 0 0 0 1
07
6 2 7
6 0 1 3 1 0 0 0 1
0 07
6 2 7
6 0 0 1 3 1 0 1
0 0 07
6 2 7
6 0 0 0 1 3 1 0 0 0 07
AD6
6
7
6 0 0 0 0 1 3 1 0 0 077
6 0 0 0 1
0 1 3 1 0 07
6 2 7
6 0 0 1
0 0 0 1 3 1 07
6 2 7
4 0 1
0 0 0 0 0 1 3 15
2
1
2 0 0 0 0 0 0 0 1 3
El vector b D Œ2;5; 1;5 : : : 1;5; 1;0; 1;0; 1;5 : : : 1;5; 2;5. Hay n 4 repeticiones de 1;5 y 2 repeticiones de 1;0.
Utilizaremos Jacobi.
Vamos a usar los códigos de los cuadros 8.4 y 8.5. El resultado de probarlos está en el mismo cuadro 8.5.

function [a,b] = sparsesetup_J(n)


% Sparse matrix setup
% Input: n = tamaño de la matriz
% Output: sparse matrix a, r.h.s. b e = ones(n,1); n2 = n/2;
a = spdiags([-e 3*e -e],-1:1,n,n); % Coeficientes de A en diagonales
c = spdiags([e/2],0,n,n); c=fliplr(c); % Coeficientes en contradiagonal
a = a+c;
a(n2+1,n2)=-1; a(n2,n2+1)=-1; % Centro de contradiagonal
b = zeros(n,1); % Vector b
b(1)=2.5; b(n)=2.5; b(2:n-1)=1.5; b(n2:n2+1)=1;
end

Cuadro 8.4

8.5 Métodos no estacionarios. De dirección de descenso


Teorema 8.8 Sea A una matriz simétrica definida positiva. La solución de la ecuación Ax D b es el vector para el
cual la forma cuadrática
1
Q.x/ D x T Ax bT x
2
alcanza su mínimo.
De acuerdo con este resultado se puede resolver Ax D b mediante cualquier método que obtenga el mínimo de
funciones como Q.x/. Se puede comprobar de esa manera que el valor de la función cuadrática en ese mínimo, solución
de Ax D b, es Q.x  / D 12 bT A 1 b.
La condición necesaria de haber alcanzado un mínimo una función f .x/ en el punto x es
2 @f .x/ 3
6 @x1 7
6 @f .x/ 7
6 7
rf .x/ D 6 @x: 2 7 D 0:
6 : 7
4 : 5
@f .x/
@xn
8.5 Métodos no estacionarios. De dirección de descenso j 193

>> n=100000;
>> [a,b]=sparsesetup_J(n);
>> tic; [a,b]=sparsesetup_J(n); toc
Elapsed time is 0.053800 seconds.
>> tic; x=jacobi_S_1(a,b); toc
Elapsed time is 0.056983 seconds.
>> n=1000000; % Un millón
>> [a,b]=sparsesetup_J(n);
function x = jacobi_S_1(a,b)
>> tic; x=jacobi_S_1(a,b); toc
% Jacobi para matriz dispersa
Elapsed time is 0.786218 seconds.
% Inputs: Matriz A y vector b
>> norm(abs(x-ones(n,1)))
% Output: solución x n=length(b);
ans =
d=diag(a); % diagonal de A
1.4450e-05
r=a-diag(d); % A sin diagonal principal
>> n=10000000; % Diez millones
x=zeros(n,1); k=0; sm=1; % Vector x de partida
>> [a,b]=sparsesetup_J(n);
while sm>0.00001 % iteraciones de Jacobi
>> tic; x=jacobi_S_1(a,b); toc
y=(b-r*x)./d;
Elapsed time is 8.002969 seconds.
sm=max(abs(x-y))/max(abs(y)); k=k+1;
>> norm(abs(x-ones(n,1)))
x = y;
ans =
end
1.4450e-05
end
>> n=40000000; % Cuarenta millones
>> tic; [a,b]=sparsesetup_J(n); toc
Elapsed time is 25.589597 seconds.
>> tic; x=jacobi_S_1(a,b); toc
Elapsed time is 32.461714 seconds.
>> norm(abs(x-ones(n,1)))
ans =
1.4450e-05

Cuadro 8.5

En nuestro problema, dado que A es simétrica, en el punto óptimo


1 T 1 1 
Q0 .x/ D A x C Ax bD AT C A x b D Ax b D 0;
2 2 2
que es lo que queremos encontrar.
Como A es definida positiva ese mínimo es único. Veamos el por qué de esa unicidad: como A es simétrica, conside-
remos un punto x que satisfaga Ax D b, y que por lo tanto minimice la función Q.x/.
Para un pequeño desplazamiento, d, desde ese punto en cualquier dirección, se tiene que:
1
Q.x C d/ D .x C d/T A .x C d/ bT .x C d/
2
1 1
D x T Ax C d T Ax C d T Ad bT x bT d
2 2
1 T 1
D x Ax b x C d b C d T Ad bT d
T T
2 2
1
D Q.x/ C d T Ad:
2
Como A es definida positiva, 12 d T Ad es positivo para todo d ¤ 0 y por consiguiente cualquier punto mínimamente
alejado del mínimo dará un valor de la función superior. El punto x por consiguiente es el único mínimo.
Consideremos la forma cuadrática
    
1 T 3 2 x1 T x1
Q.x/ D Œx1 x2  Œ2 8
2 26 x2 x2

cuya información esencial se representa en la figura 8.1. El gradiente siempre apunta en la dirección de máxima pen-
diente, hacia arriba, y es ortogonal a las líneas de nivel.
Otros gráficos de formas cuadráticas son los ilustrados en la figura 8.2. En (a) la matriz A es definida positiva, en (b)
definida negativa, en (c) semidefinida positiva (singular) y en (d) indefinida.
El algoritmo general de dirección de descenso para minimizar f W Rn ! R que vamos a estudiar se lista en el
cuadro 8.6. Sus diversas versiones e diferencian entre sí en la forma de calcular la dirección p.k/ .
8.5 Métodos no estacionarios. De dirección de descenso j 195

La amplitud de paso óptima ˛ en cada punto del proceso se determina minimizando Q.x/ a lo largo de la dirección
p.k/ como se ve a continuación.

Q(x (k ) ) q(α)

 
mKın Q x .k/ C ˛p.k/
˛

x (k ) x (k ) + αk p (k )

En si mismo, éste es un problema de optimización en una única variable, ˛, que puede resolverse explícitamente para
funciones cuadráticas. Suprimiendo superíndices,

q.˛/ D Q.x C ˛p/ D 12 .x C ˛p/T A.x C ˛p/ bT .x C ˛p/


D 21 x T Ax C ˛p T Ax C 21 ˛ 2 p T Ap ˛pT b bT x
D 12 pT Ap˛ 2 C pT .Ax b/˛ C 21 x T .Ax 2b/:

La forma q.˛/ se minimiza cuando q 0 .˛/ D 0. Como la matriz A es definida positiva, pT Ap > 0, el que q 0 .˛/ D 0 se
da cuando
T 
p.k/ b Ax .k/
˛D T
p.k/ Ap .k/

8.5.1 Obtención de direcciones de descenso


8.5.1.1 Relajación de una variable
Se usan como direcciones de descenso los vectores unitarios e1 ; : : : ; en ; e1 ; : : : Es decir,

p.0/ D e1 ; p .1/ D e2 ; ::: p.n 1/


D en ; p .n/ D e1 ; : : :

P
En la expresión anterior de ˛ con estas direcciones eiT Aei D ai i y eiT .Ax b/ D jnD1 aij xj bi . En una iteración
k, el siguiente punto x .kC1/ estará dado por
0 1
X n
1 @ .k/
x .kC1/ D x .k/ C ˛k ei D x .k/ aij xj bi A ei ;
ai i
j D1

expresión idéntica a la de método de Gauss-Seidel.

8.5.1.2 Relajación SOR


La convergencia de un método de descenso x .kC1/ D x .k/C ˛k p.k/ con la dirección y paso de Gauss-Seidel puede
mejorarse si se le añade un parámetro de relajación !. La amplitud de paso será

˛k D ! ˛O k ;

donde ˛O k es el que hace mínimo Q.x/ D 12 x T Ax bT x a lo largo de p .k/ .


 
El valor de la función cuadrática (simétrica) Q x .k/ C ! ˛O k p.k/ es menor que Q x .k/ , siempre y cuando 0 < ! <
2, como vimos en páginas anteriores, y ahora visualizamos mediante la figura 8.3.
196 j Capítulo 8. Sistemas de ecuaciones lineales. Algoritmos de resolución iterativos

Q(x (k ) ) Q(x (k ) + 2α̂p (k ) )

x (k ) x (k) + ω α̂(k ) p (k ) x (k ) + 2α̂(k ) p (k )

Figura 8.3

8.5.1.3 Máxima pendiente


La aproximación en x de la función f W Rn ! R —continua y derivable en algún conjunto abierto de Rn — por
desarrollo en serie de Taylor es

f .x C p/ D f .x/ C rf .x/T p C O kpk2 ;

donde rf .x/ D g es el gradiente de la función en x.


Si de lo que se trata, alrededor de x, es determinar una dirección p a lo largo de la cual la función decrece, se deberá
cumplir que
rf .x/T p < 0

Esto es así cuando el gradiente y la dirección forman un ángulo  tal que <   . El descenso relativo de la función
en p es 2
f .x/ f .x C p/ rf .x/T p
D D krf .x/k cos ;
kpk kpk
donde  es el ángulo que forman p y rf .x/.
El descenso será máximo cuando  D . La dirección de máximo descenso, máxima pendiente, será entonces la
opuesta del gradiente,
pD g

El método de la máxima pendiente lo introdujo el ingeniero y matemático francés Augustin Louis Cauchy, Francia
1789-1857, en 1847.

Cauchy


En la función cuadrática de referencia Q x .k/ , la dirección de máxima pendiente en x .k/ es
   
p .k/ D rQ x .k/ D Ax .k/ b D r .k/ ;

donde r .k/ es el vector de residuos. La fórmula de recurrencia que se obtiene con esa máxima pendiente es entonces

x .kC1/ D x .k/ C ˛k r .k/

Si A es diagonal, sus coeficientes iguales a uno y ˛k D 1, la fórmula de recurrencia define una iteración del método de
Jacobi.
8.5 Métodos no estacionarios. De dirección de descenso j 197

El valor de ˛k que minimiza Q.x/ a lo largo de la máxima pendiente es (sustituyendo en la fórmula general que vimos
la dirección por r .k/ )
T
r .k/ r .k/
˛k D T :
r .k/ Ar .k/
La convergencia del método de la máxima pendiente para minimizar una función cuadrática es al menos lineal y se
cumple que .kC1/
x x  .A/ 1
 2 < 1:
x .k/ x  2 .A/ C 1
Cuanto más grande sea 2 .A/ más lenta será la convergencia, pues recuérdese que si A es simétrica y definida positiva
2 .A/ D n1 , donde 1 es el valor propio mayor (valor propio dominante) y n el menor.
Convergencia lenta en funciones con un perfil como el que estamos estudiando en este apartado quiere decir lo que
indica la figura 8.4. La búsqueda de la solución va dando bandazos en el valle hacia la solución en una función relativa-
mente mal condicionada.

x(0)

Figura 8.4: Proceso de búsqueda de una solución en un problema cuadrático mal condicionado

El algoritmo de la máxima pendiente, un script de M ATLAB que lo traduce en instrucciones y una sesión de éste
para resolver uno de los ejemplos anteriores son los que refleja el cuadro 8.7. Como se puede observar, este método

function [x,j]=Steep(A,b,x0) >> A=[10 -1 2 0;


x .0/ 0I r .0/ bI k D 1 % Máxima pendiente para resolver Ax=b -1 11 -1 3;
if nargin<3, x0=zeros(length(b),1); end 2 -1 10 -1;
while r .k/ 2 > "kbk2 do
j=0; x=x0; r=b-A*x; d=r’*r; tol=sqrt(eps)*norm(b); 0 3 -1 8];
T ı  while sqrt(d)>tol >> b=[6;25;-11;15];
˛k r .k 1/ r .k 1/ r .k 1/ T Ar .k 1/
j=j+1; >> [x k]=Steep(A,b)
v=A*r; x =
x .k/ x .k 1/ C ˛k r .k 1/ alpha=d/(r’*v); 1.0000
r .k/ r .k 1/ ˛k Ar .k 1/ x=x+alpha*r; 2.0000
k kC1 r=r-alpha*v; -1.0000
d=r’*r; 1.0000
end end k =
end 19

Cuadro 8.7
p
necesita más iteraciones que con alguno de los métodos anteriores pero la precisión es más elevada:  .
Retomemos la forma cuadrática del cuadro 8.8 y apliquémosle el algoritmo de máxima pendiente. Necesita demasiadas
iteraciones desde Œ0 0T , a pesar de que el número de condición de A es bueno. Calculemos los valores y vectores
propios de A en otra minisesión de M ATLAB:

>> [v lambda]=eig(A)
v =
-0.8944 0.4472
0.4472 0.8944
lambda =
2.0000 0
0 7.0000
198 j Capítulo 8. Sistemas de ecuaciones lineales. Algoritmos de resolución iterativos

>> A=[3 2;2 6];


b=[2;-8];
>> cond(A)
     ans =
32 x1 x1 3.5000
Q.x/ D 12 Œx1 x2 T Œ2 8T >> [x k]=Steep(A,b)
26 x2 x2 x =
2.0000
-2.0000
k =
31

Cuadro 8.8

No escalados, los vectores propios son Œ 2 1T y Œ1 2T . Se describen en la figura 8.5. Están orientados como los ejes
del paraboloide que conforma la función
Los vectorescuadrática. Cada
propios de A están valor
orientados comopropio esparaboloide
los ejes del proporcional
que a la inclinación de la pendiente
de la función en la dirección de su conforma
correspondiente vector
la función cuadrática. Cada propio.
valor propio es proporcional a la
inclinación de la pendiente de la función en la dirección de su correspondiente
2
vector propio.
4 x2

-4
x11
-2 2 4 6

7
-2 2

-4

-6 66/110

The eigenvectors of ☎ are directed along the axes of the  


✎✑✏
a b c 1 2 3 by the quadratic form ✓✒ . Each eigen-3
Figura 8.5: Vectores propios de A D
paraboloid defined 2
d e f g vector is
9 labeled
4 6 with
5 its associated eigenvalue.
2 6
h i j 10 8 7

Para obtener el mínimo de Q.x/ partamos ahora de sendos puntos más alejados del óptimo en las direcciones de los
vectores propios: concretamente de Œ 2 0T y Œ6 6T . En M ATLAB,

>> [x k]=Steep(A,b,[-2;0]) >> [x k]=Steep(A,b,[6;6])


x = x =
2 2
-2 -2
k = k =
1 1

El procedimiento converge en una sola iteración. Si todos los valores propios fuesen iguales el procedimiento convergería
en una iteración.
Se puede ensayar con otros puntos más o menos alejados en esas direcciones y el resultado será el mismo. Partamos
ahora del punto Œ 2 2T . Ocurre lo que parcialmente se ve en la figura 8.6. El camino hacia el óptimo, resultado de
la correspondiente sesión de M ATLAB, es el que se ve en la figura 8.7.
Definición 8.2 Dos vectores p y q que cumplen
p T Aq D 0
son ortogonales con respecto al producto interior de A, hxjAyi D x T Ay, definido por la matriz A, diciéndose de
ellos que son conjugados respecto a A, A conjugados e incluso A ortogonales.

Proposición 8.9 Sea A una matriz simétrica definida positiva. Si p.0/ , p .1/ ; : : : ; p.k/ son vectores A conjugados, son
linealmente independientes.
Si A D I, la conjugación es equivalente a la ortogonalidad tradicional.
x2 (a)
figura. (b)
4

x1 150✎✑✏ ✓✒
-4 -2 2 100 Q.x/
✤✣ ✧ ✯ ✣ ✧ x
4 6
2.5 50
x .0/0 -2
0 0
x2 0 5
-4 8.5 Métodos no estacionarios.-2.5 2.5 j 199
De dirección de descenso
0
-5 -2.5 x11
 Partamos ahora del punto Œ 2 2T . Ocurre lo que parcialmente se ve en la-6
figura.
x2 (a) (b)
✎✑✏ ✤✣✦✥★✧ ✁ ✢✪✩✫✣✬✥★✧✭✒  x22 (d)
4 Q x .k/ C ˛k r .k/ (c) 4
140
2 2
120
x1 150 ✓✒ 100
x
-4 -2
✤✣.0/0✧
2
✯ ✣ ✧ x
4 6 100 Q.x/
50
80 -4 -2 ✮✣ .1/
1
✧2 4 6 11
x -2 2.5
0
60
-2 x
0 0 40
x2 -2.5 5
-4 2.5 20
-5 0 x11 ˛ -4
-2.5 0.2 0.4 0.6
-6 -6
✎✑✏ ✤✣✦✥★✧ ✁ ✢✪✩✫✣✬✥★✧✭✒  x2 (d) Figura 8.6
Q x .k/ C ˛ r .k/ k (c) 4 The
El camino hacia

method
el óptimo of Steepest
es el que indica la figura. Descent. 61/97

140 2

120 2 4
x2

100 a b c 1 2 3

80 -4 -2 ✮✣ ✧ 2 4 d
x
6 11 e f g 2 9 4 6 5
>> A=[3 2;2 6]; .1/ 1
60
b=[2;-8]; -2 x h i j 10 8 7
40 >> [x k]=Steep(A,b,[-2; -2]) -4 -2 2 4 6
x1

˛✢
20 x = -4
2.0000 ✮✣ ✧
x .0/
0 -2 x
0.2 0.4 0.6 -2.0000
k = -6
10427 C H A P T E R 5 . C O N J U G A T E G R A D I E N T M E T H O D -4S

The method of Steepest Descent.


66/102

-6
If xk is generated by algorithm (5.6), (5.7), then
The method we have
of Steepest Descent.

a c
Figura 8.7
b 1 2 3
xk  x0 + α0 p0 + α1 p1 + · · · + αk−1 pk−1 .
a

d
b

e
c

f g
1

9
2

4
3

6 5

d e f g 9 4 6 5 h i j 10 8 7

h i j 10 8 7
By premultiplying this expression by pkT A and using the conjugacy property, we have that

Teorema 8.10 De las Direcciones Conjugadas. Si A 2pkT A(x


Rnn es una matriz simétrica definida positiva y p.0/ ,
k − x 0 )  0,
.1/ .n 1/ .0/ n
p ;:::;p son A conjugados, para todo x 2 R , la sucesión de vectores que define la expresión
and therefore
x .kC1/ D x .k/ C ˛k p.k/ ;
pkT A(x ∗ − x0 )  pkT A(x ∗ − xk )  pkT (b − Axk )  − pkT rk .
donde 
.k/ T .k/
By comparing this relation withb (5.7)Axand (5.8), wepfind that σk  αk , giving the result. 
˛k D T ;
.k/
p of theAp .k/
There is a simple interpretation properties of conjugate directions. If the matrix
A in (5.2) is diagonal, the contours of the function φ(·) are ellipses whose axes are aligned
converge a la solución exacta de Ax D b en no más de n iteraciones.
with the coordinate directions, as illustrated in Figure 5.1. We can find the minimizer of this
function by performing one-dimensional minimizations along the coordinate directions
Es decir, teóricamente, los métodos basados en el cálculo de direcciones conjugadas son métodos directos aunque se
usen como iterativos.

e2

. x*

x0
. . x1

e1

Figura 8.8: Función cuadrática cuyos contornos tienen ejes alineados con los ejes coordenados
Figure 5.1 Successive minimizations along the coordinate directions find the
minimizer of a quadratic with a diagonal Hessian in n iterations.
8.5 Métodos no estacionarios. De dirección de descenso j 201

-1

-2

-3

-4
-2 -1 0 1 2 3 4 5 6

" #" # " #


20 x1 4
Figura 8.9: Forma cuadrática para resolver D
03 x2 1

Se traza la tangente en x .0/ a esta elipse y su normal en este punto p .0/ :


 
.0/ 1
p D :
1

La primera dirección es la de máxima pendiente: b Ax D Œ2; 2T .


Se calcula el ˛1 óptimo: el punto medio, x .1/ , del segmento de recta que va desde x .0/ hasta el punto donde p.0/
corta a esa elipse: x .1/ D Œ1;8 0;2T .
4

-1

-2

-3

-4
-2 -1 0 1 2 3 4 5 6

Desde x .1/ se determina la nueva elipse:


 2 3  2
f .x .1/ / D x1.1/ C x2.1/ 4x1.1/ x2.1/ D 4;1:
2
En x .1/ se calcula la dirección p.1/ que es A conjugada con respecto a p .0/ . Pasará por el centro de la nueva elipse
uniendo x .1/ con el diametralmente opuesto por el que se podría trazar una tangente a esta elipse paralela a p.0/ .
La nueva dirección es
4

 
3 -1

p.1/ D
2 -2

-3

-4
-2 -1 0 1 2 3 4 5 6
202 j Capítulo 8. Sistemas de ecuaciones lineales. Algoritmos de resolución iterativos

T
Comprobar que p.1/ Ap .0/ D 0 es inmediato:
  
20 1
Œ3; 2 D 0:
03 1

También, de la fórmula de recurrencia:


   
.1/ .1/ .0/ 0;4 2 k 0;42 C 0;42
p Dr C ˇp D Cˇ y ˇ D :
0;4 2 k 1 22 C 22
       
0;4
.1/ 2 0;48 3
De aquí que p D C 0;04 D  .
0;4 2 0;32 2
Se determina el punto medio, x .2/ , de ese diámetro. La solución del problema es este nuevo punto:
 
2
x .2/ D :
1=3

Todo expresado en una misma gráfica es lo que refiere la figura 8.10.

x2

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


. ...... ... . ......
..... ..... .....
....
. ....
x (0).... ....
1
... ...
... .
...
... ..............
. ...
. .
.. ...
.... p (0) .
. .....
..... x
(2)
.. ..
... ..... p(1) ..... . .
. .
.. ... ..
.
... x (1) ...........
... ...
.... 1 2 3 ... x1
..... ...
..... .. .....
..... ...
...... ... ....
... ..... ...... ...... ...... ..... .

    
2 0 x1 4
Figura 8.10: Pasos seguidos para resolver 0 3 x2
D
1

Teorema 8.11 Sea A una matriz n  n simétrica definida positiva y xO la solución de la ecuación Ax D b. Los vectores
p .k/ generados por el algoritmo de los gradientes conjugados son A conjugados, es decir,
 T
p.k/ Ap.j / D 0; 0  j < k; k D 1; : : : ; n 1;

siendo p .k/ ¤ 0 a menos que sea x .k/ D x.


O De esta manera, x .m/ D xO para algún m  n. Además los vectores
.j / .j / .k/ T .j /
residuo r D b Ax satisfacen .r / r D 0; 0  j < k; k D 1; : : : ; n 1; es decir, son ortogonales.

Teorema 8.12 Sean p.0/ , p.1/ ; : : : ; p.n 1/ los vectores de dirección que genera el algoritmo de los gradientes conju-
gados y r .0/ , r .1/ ; : : : ; r .n 1/ los vectores residuo. Se cumple que
 
Ap .i/ 2 p .0/ p .1/ : : : p.i C1/ ; i D 0; : : : ; n 2I
 
r .i/ 2 p .0/ p .1/ : : : p.i/ ; i D 0; : : : ; n 1I
 .0/ .1/   
p p : : : p.i/ D p .0/ Ap .0/ : : : A i p.0/
 
D r .0/ Ar .0/ : : : A i r .0/ ; i D 0; : : : ; n 1:
8.5 Métodos no estacionarios. De dirección de descenso j 203

Es decir, generan el subespacio de Krylov KiC1 .A; p .0/ /.

Teorema 8.13 Si A tiene sólo m valores propios distintos el método de los gradientes conjugados converge en un
máximo de m iteraciones.

Teorema 8.14 El punto obtenido en la iteración k del método de los gradientes conjugados cumple que
p 
 2 1 k 


x x .k/  2 p x x .0/
A 2 C 1 A
p 
 .k/ p 2 1 k 


x x  2 2 p x x .0/ ;
2 2 C 1 2

1
donde kxkA D x T Ax y 2 D n
es el número de condición 2 de A.

Los dos primeros de estos cuatro últimos resultados son fundamentales para entender geométricamente el método de
los gradientes conjugados. Los vectores p y residuo r de cada iteración no son ortogonales entre si. Los residuos de una
iteración son siempre ortogonales a los residuos y a los vectores p de las previas. Los p son A ortogonales. Al comienzo
el vector p coincide con el vector de residuos. En tres dimensiones se ve en la figura 8.11.

Figura 8.11

Los vectores p y de residuos r forman bases ortogonales en los sucesivos subespacios de Krylov que se generan en el
proceso iterativo.

8.5.2.1 Implementación práctica de los gradientes conjugados


Los errores inherentes a la implementación en ordenador del método hacen que se pierda la ortogonalidad de los vectores
residuo.

Debido a ello, la propiedad de que el método converge en un número fijo de pasos no se cumple en la
práctica estrictamente, por lo que el método de los gradientes conjugados se considera un método iterativo.

La implementación más habitual del algoritmo y su codificación en M ATLAB se listan en el cuadro 8.9. Utilicemos
este código para resolver uno de los ejemplos habituales. La sesión de M ATLAB correspondiente se incluye en ese mismo
cuadro 8.9. La 4 iteraciones que se consiguen contrastan con las 19 del método de la máxima pendiente.   
x1
 4Si
 también se resuelve con ese código el problema que ha permitido ilustrar geométricamente el método, 0 3 x2 D
20

1 , el resultado que se obtiene es el del cuadro 8.10. Las dos últimas columnas indican los coeficientes 1 y 2 del vector
p .k/ . Coinciden en dirección (y en magnitud) con las que se obtuvieron a mano:

       
1 2 3 0;48
p.0/ D  p.1/ D  :
1 2 2 0;32
204 j Capítulo 8. Sistemas de ecuaciones lineales. Algoritmos de resolución iterativos

T
x .0/ p 0I r .0/ b Ax .0/ I 0 r .0/ r .0/ I k D 0I p .0/ r .0/
while k >   0 do
k kC1
w Ap.k 1/ T
˛ k 1 = p.k 1/ w
x .k/ x .k 1/ C ˛p.k 1/
r .k/ r .k 1/ ˛w
T
k r .k/ r .k/
ˇ k =k 1
p.k/ r .k/ C ˇ p .k 1/

end

function [x k]=CGr(A,b,x0)
% Gradientes Conjugados
if nargin<3, x0=zeros(length(b),1); end >> A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;0 3 -1 8];
k=0; x=x0; r=b-A*x; d=r’*r; p=r; tol=sqrt(eps)*d; >> b=[6;25;-11;15];
while d>tol >> [x k]=CGr(A,b,zeros(4,1))
k=k+1; x =
1.0000
v=A*p; alpha=d/(p’*v); 2.0000
x=x+alpha*p; -1.0000
r=r-alpha*v; 1.0000
beta=d; d=r’*r; beta=d/beta; k =
p=r+beta*p; 4
end
end

Cuadro 8.9

>> A=[2 0; 0 3]; b=[4; 1];


>> [x k]=CGr(A,b,ones(2,1))
k = 1
p = 2
-2
x = 1.8000
0.2000
k = 2
p = 0.4800
0.3200

Cuadro 8.10

Resolvamos ahora con CGr() este problema,


4x1 x2 x4 D 0
x1 C 4x2 x3 x5 D 5
x2 C 4x3 x6 D 0
x1 C 4x4 x5 D 6
x2 x4 C 4x5 x6 D 2
x3 x5 C 4x6 D 6
La sesión de trabajo correspondiente de M ATLAB se lista en el cuadro 8.11.

Método de los gradientes conjugados con acondicionado previo


El acondicionado previo sustituye A, por una A Q con mejor número de condición, haciendo un cambio de variable
xQ D C x, donde C es regular y fácil de invertir. La forma cuadrática Q.x/ quedaría
1    T
Q D xQ T C T AC 1 xQ
Q.x/ C T b x:Q
2
 
Si se resuelve con gradientes conjugados el sistema C T AC 1 xQ D C T b la solución original se obtendría sin más
1
que hacer x D C Q
x.
8.6 Métodos de subespacios de Krylov j 205

x =1.022375670668624
1.686451892308063
>> A=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 0 0 -1;... 1.022375670668624
-1 0 0 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4] 2.060919567884898
A = 0.831099776243293
4 -1 0 -1 0 0 2.060919567884898
-1 4 -1 0 -1 0
0 -1 4 0 0 -1
x =0.990783282047593
-1 0 0 4 -1 0 1.991635137653980
0 -1 0 -1 4 -1 0.990783282047593
0 0 -1 0 -1 4 2.005324506299807
>> b=[0;5;0;6;-2;6]; 1.011824606037220
>> [x k]=CGr(A,b) 2.005324506299807
x = 0 x =1.000000000000000
1.069915254237288
0
2.000000000000000
1.283898305084746 1.000000000000000
-0.427966101694915 2.000000000000000
1.283898305084746 1.000000000000000
2.000000000000000
k = 4

Cuadro 8.11

Si A es simétrica, la mejor C posible es A 1=2 , pues en ese caso


 T
Q D A
A 1=2
AA 1=2
DA 1=2
A 1=2 A 1=2 A 1=2
D I  I D I:

En la implementación práctica, la diferencia con y sin acondicionado previo es la resolución en cada iteración el
sistema M z D r, donde M D C T C . Su listado y el código correspondiente en M ATLAB se indican en el cuadro 8.12.

T function [k tol x]=PCGr(A,b,x0,M)


x .0/ 0I r .0/ b Ax .0/ I 0 r .0/ r .0/ I k D 0
T % Gradientes Conjugados con preacondicionado M
Resolver M d D r .0/ ;
ın r .0/ d k=0; x=x0; r=b-A*x; tol=eps*norm(b)
p
while k >   0 do d=M\r; dn=r’*d;
w Ad while dn>tol
˛k ın =d T w w=A*d;
x .kC1/ x .k/ C ˛k d alpha=dn/(d’*w);
r .kC1/ r .k/ ˛k w x=x+alpha*d;
Resolver M s D r .kC1/ r=r-alpha*w;
T if mod(k,50)==0, r=b-A*x; end
ıo ın ; ın r .kC1/ s s=M\r;
ˇkC1 ın =ıo do=dn; dn=r’*s; beta=dn/do;
d s C ˇkC1 d d=s+beta*d;
kC1 ın k=k+1;
k kC1 end
end end

Cuadro 8.12

Si probamos a verificar que la idea funciona numéricamente con una sesión de M ATLAB, podemos obtener lo que
expresa el cuadro 8.13.

>> A=rand(400);
>> A=A+A’; % Matriz A simétrica
>> B=A*A;
>> b=B*ones(400,1); % Vector solución de unos
>> [k tol]=PCGr(B,b,zeros(400,1),eye(400)) % Se resuelve sin precondicionado
k = 740
tol = 7.1453e-010
>> [k tol]=PCGr(B,b,zeros(400,1),A) % Con precondicionado perfecto
k = 1
tol = 7.1453e-010

Cuadro 8.13
206 j Capítulo 8. Sistemas de ecuaciones lineales. Algoritmos de resolución iterativos

8.6 Métodos de subespacios de Krylov


Se debe al trabajo de Alekxey Krylov, Rusia 1863-1945

Krylov

Recuperando la idea de que si para resolver Ax D b, haciendo A D I .I A/ el sistema queda .I .I A// x


D b, una ley de recurrencia sería xk D .I A/ xk 1 C b. Con esa idea, si el vector residuos es rk 1 D b Axk 1 , el
punto xk D xk 1 C rk 1 , de forma recurrente, xk D x0 C r0 C r1 C    C rk 1 : De b Axk D b Axk 1 Ark 1
te obtiene que rk D .I A/rk 1 y así

xk D x0 C r0 C .I A/r0 C    C .I A/k 1
r0 D x0 C pk
.A/ r1 0
˜ polin
om. e
nA
 
D x0 C r0 Ar0 : : : A k 1
r0 c D x0 C xad :
En conclusión, todo punto del proceso iterativo xk se puede expresar como la solución de partida x0 más una combi-
nación lineal de los vectores columna que definen el subespacio de Krylov
n o
Kk .A; r0 / D Gen r0 ; Ar0 ; A 2 r0 ; : : : ; A k 1 r0 :

Los métodos de proyección en subespacios de Krylov (no estacionarios) mejoran una estimación inicial de la solución
proyectándola, en cada iteración k, en el subespacio de Krylov generado por el vector residuo inicial y sus k 1 sucesivos
productos por la matriz A. En ese Kk .A; r0 /, con rk D b Axk , calculan el mejor xk que haga:
1. mKın kAxk bk2 en Kk . Si A es simétrica los algoritmos se denominan MINRES y SYMMLQ; si no GMRES.
2. rk ?Kk , condición de Galerkin. Como rk D b Axk D A .xk x/ D Aek , eso equivale a Aek ?Kk . Si A
no es simétrica los algoritmos se denominan FOM; si es simétrica definida positiva, CG.
3. Otros: Biortogonalización, Gradiente Biconjugado, : : : con subespacio de proyección Kk .A T ; r0 /, etc.
Como al multiplicar una matriz por un vector éste tiende a orientarse en la dirección del vector propio dominante de
esa matriz, en un subespacio de Krylov los vectores de base tienden a una dirección común cuando k es grande. Obtener
una buena base de ese subespacio necesitará del mejor método para ortogonalizar los vectores correspondientes.
En la figura 8.12 se esquematiza la forma más práctica de elegir qué método puede resultar más adecuado para los
diversos problemas que se pueden presentar.

8.6.1 Métodos GMRES para matrices no simétricas


Se refieren a sus iniciales en inglés: Generalized Minimal Residual Method. Su esquema general es el del cuadro 8.14.
Se basa en obtener en cada iteración una base ortonormalizada de Gen fr0 ; Ar0 ; A 2 r0 ; : : : ; A k r0 mediante una
especialización de Gram-Schmidt: el algoritmo de Arnoldi —por Walter Edwin Arnoldi, EE.UU., 1917-1995—.
Comienza con q1 D r0 =kr0 k2 como base de K1 .A; r0 /. La base se conforma en el ciclo interior del algoritmo de la
tabla anterior: en la iteración k, en la que A es n  n, Qk n  k, QkC1 n  .k C 1/ y H k .k C 1/  k. Se obtendría
AQk D QkC1 H k , es decir,
2 3 2 32 3
h11 h12    h1k
6 7 6 76 h21 h22    h2k 7
6 7 6 766
7
7
6 7 6 7 h32    h3k 7
A 6 q1    qk 7 D 6 q1    qk qkC1 7 6
6
6
4
7 6
5 4
76
54 :: :: 7 7
: : 5
hkC1;k
8.6 Métodos de subespacios de Krylov j 207

Figura 8.12: Esquema de decisiones a tomar para elegir el mejor método para resolver Ax D b

 Algoritmo del residuo mínimo generalizado GMRES 


Escoger un x0 cualquiera; r0 D b Ax0
q1 D r0 = kr0 k2
for k D 1; 2; : : :  Algoritmo de Arnoldi 
y D Aqk
for j D 1 to k
hj k D qjH y
y D y hj k qj
end
hkC1;k D kyk2
if hkC1;k D 0, stop, end
qkC1 D y= hkC1;k

Resolver minimizar
k H ck Œkr0 k2 0 0 : : : 0T
ck 2R 2
xk D Qk ck C x0
end

Cuadro 8.14

donde Qk abarca el subespacio de Krylov k-dimensional.


El nuevo vector que se introduce en la base en esa iteración es
qkC1 D Aqk .h1k q1 C    C hkk qk / = kqkC1 k :
„ ƒ‚ …
hkC1;k

El vector xk D x0 C xad que minimice kAxk bk2 en Kk .A; r0 /, con xad D Qk c, saldrá de resolver el problema de
mínimos cuadrados
mKın kAxk bk2 D mKın kA.x0 Cxad / bk2 D mKın kAQk c r0 k2 D mKın kQkC1 H k c r0 k2 D mKın kH k c QTkC1 r0 k2 :
Como q1 D r0 = kr0 k2 y todas las columnas de QkC1 son ortogonales respecto a r0 ,
QTkC1 r0 D Œkr0 k2 0 0    0T :
El problema de mínimos cuadrados de cada iteración es
2 3
h11 h12    h1k 2 3 2 3
6h h  h 7 c1 kr0 k2
6 21 22 2k 76 7 6
6 7 6 c2 7 6 0 7
6 h32    h3k 76 : 7 D 6 : 7
6 74 : 5 4 : 7
6 :: :: 7 : : 5
4 : : 5
ck 0
hkC1;k
208 j Capítulo 8. Sistemas de ecuaciones lineales. Algoritmos de resolución iterativos

que habrá que resolver con alguno de los algoritmos conocidos.


Un código relativamente sencillo que implementa este algoritmo y un programa para probarlo se listan en el cua-
dro 8.15. Los resultados numéricos y gráficos que se obtienen con M ATLAB son el cuadro 8.16 y las figuras 8.13 y 8.14.

function [x,normrn] = gmres_1(A,b,maxiter) function A=eigmat(n,n1,m)


% solves Ax = b using gmres A=n*eye(m)+n1*randn(m)/sqrt(m);
% input: A - m by m matrix; b - m by 1 vector end
% output: x - approximate solution
% normrn - norm(b-A*x) at each step of algorithm function gmres_pru_1(n)
% Plot also normrn/ norm(b) versus n (step number) % Prueba de gmres
Q = []; H = 0; normb = norm(b); normrn=normb; maxiter = 15; m=500;
Q(:,1) = b/normb; if n==1 % example 35.1 from Trefethen+Bau
for n = 1:maxiter % Arnoldi step calculations A=eigmat(2,.5,m);
v = A*Q(:,n); else % example 35.2 from Trefethen+Bau
for j = 1:n th = (0:m-1)*pi/(m-1);
H(j,n) = Q(:,j)’* v; d=(-2+2*sin(th))+sqrt(-1)*cos(th);
v = v - H(j,n)*Q(:,j); A=eigmat(2,.5,m)+diag(d);
end end
Hn = H(1:n,1:n); H(n+1,n) = norm(v); lam=eig(A);
if H(n+1,n) == 0, break, end % breakdown so stop figure(1)
Q(:,n+1) = v/H(n+1,n); e1 = [1;zeros(n,1)]; plot(lam,’x’);
y = H\(normb*e1); % Can be done better via Givens rotations. axis square title(’eigenvalues of A’)
normrn = [normrn,norm(H*y-normb*e1)]; % residual norm ylabel(’imag part’), xlabel(’real part’)
end grid
x = Q(:,1:n)*y; xtrue=randn(m,1);
semilogy(0:n,normrn/normb,’--o’),shg b = A*xtrue;
xlabel(’step number of gmres algorithm’) figure(2)
ylabel(’norm(b-A*xn)/norm(b)’) [x,normrn]=gmres_1(A,b,maxiter)
title(’convergence of residual in gmres’), grid max(abs(x-xtrue))
end end

Cuadro 8.15

>> tic,gmres_pru_1(1),toc
x =
-0.9839
. . .
0.1130
0.2380
normrn =
43.3631 9.4160 2.3040 0.5540 0.1420 0.0359 0.0093 0.0023 0.0005
0.0001 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
ans = 2.1480e-09
Elapsed time is 0.202705 seconds.
>> tic,gmres_pru_1(2),toc
x =
1.3233 + 0.0862i
. . . . . .
0.8958 - 0.0122i
normrn =
35.6532 18.7445 14.1824 11.5050 9.5051 7.4059 5.7802 4.6176 3.6286
2.7824 2.1495 1.6563 1.2601 0.9463 0.7550 0.5899
ans = 0.1104
Elapsed time is 0.479878 seconds.

Cuadro 8.16

8.6.1.1 GMRES con acondicionado previo


La idea es mejorar el procedimiento con un preacondicionador M . Las variaciones en el algoritmo y su traducción a
M ATLAB son menores: ver cuadro 8.17.
Si al ejemplo que acabamos de presentar le aplicamos el preacondicionador de Jacobi, M D diag.A/, para probar qué
pasa se necesita hacer lo que se lista en el cuadro 8.18 con el programa en él listado. El resultado gráfico de lo que se
obtiene está en la figura 8.15.
8.6 Métodos de subespacios de Krylov j 209

Figura 8.13

Figura 8.14

El listado del cuadro 8.19 de la página 211 es el de un código mucho más robusto y completo, nada trivial, que
implementa el método GMRES.

8.6.2 Métodos de proyección para matrices simétricas


Estos procedimientos buscan en cada iteración que el vector residuo sea ortogonal al subespacio de Krylov generado en
las iteraciones anteriores. Esto quiere decir que se cumpla la condición de Galerkin:

r D Axk b ? Kk .A; r0 /:

Utilizan como base de los cálculos el algoritmo de Lanczos. Si la matriz es definida positiva, los métodos que resultan
son casi idénticos al de los gradientes conjugados. De hecho, éste es el de Lanczos aplicado al vector de partida r0 =kr0 k.

Galerkin Lanczos
210 j Capítulo 8. Sistemas de ecuaciones lineales. Algoritmos de resolución iterativos

function [x,normrn] = Gmres_1_precon(A,b,maxiter,M)


% solves Ax = b using gmres
% input: A - m by m matrix
% b - m by 1 vector
 Algoritmo del residuo mínimo generalizado GMRES % output: x - approximate solution
con precondicionado  % normrn - norm(b-A*x) at each step of algorithm
% Plot also normrn/ norm(b) versus n (step number)
Escoger un x0 cualquiera; r0 D M 1 .b Ax0 / Q = []; H = 0; if nargin<4, M=eye(size(A)); end
q1 D r0 = kr0 k2 b=M\b; normb = norm(b); normrn=normb; Q(:,1) = b/normb;
for k D 1; 2; : : :  Algoritmo de Arnoldi  for n = 1:maxiter
y D M 1 Aqk  Precondicionado % Arnoldi step calculations
v = M\(A*Q(:,n));
for j D 1 to k for j = 1:n
hj k D qjH y H(j,n) = Q(:,j)’* v;
y D y hj k qj v = v - H(j,n)*Q(:,j);
end end
Hn = H(1:n,1:n); H(n+1,n) = norm(v);
hkC1;k D kyk2
if H(n+1,n) == 0, break, end % breakdown so stop
if hkC1;k D 0, stop, end Q(:,n+1) = v/H(n+1,n); e1 = [1;zeros(n,1)];
qkC1 D y= hkC1;k y = H\(normb*e1); % Can be done better via Givens
normrn = [normrn,norm(H*y-normb*e1)]; % residual norm

Resolver minimizar H ck Œkr0 k2 0 0 : : : 0T end
ck 2Rk 2
x = Q(:,1:n)*y;
xk D Qk ck C x0 semilogy(0:n,normrn/normb,’--o’),shg
end xlabel(’step number of gmres algorithm’)
ylabel(’norm(b-A*xn)/norm(b)’)
title(’convergence of residual in gmres’)
grid
end

Cuadro 8.17

function gmres_pru_1_precon(n)
% Prueba de gmres
m=500; maxiter = 15;
if n==1 % example 35.1 from Trefethen + Bau
>> tic,gmres_pru_1_precon(2),toc A=eigmat(2,.5,m);
x = else % example 35.2 from Trefethen + Bau
-2.3449 - 0.0000i th = (0:m-1)*pi/(m-1); d=(-2+2*sin(th))+sqrt(-1)*cos(th);
. . . . . . A=eigmat(2,.5,m)+diag(d);
0.0737 + 0.0000i end
normrn = lam=eig(A); figure(1), plot(lam,’x’);
22.9513 6.8163 2.4022 0.8430 0.2955 axis square, title(’eigenvalues of A’)
0.1046 0.0372 0.0132 0.0045 0.0016 ylabel(’imag part’), xlabel(’real part’), grid
0.0006 0.0002 0.0001 0.0000 0.0000 xtrue=randn(m,1); b = A*xtrue;
0.0000 figure(2)
ans = 6.3526e-07 [x,normrn]=Gmres_1_precon(A,b,maxiter,diag(diag(A)))
Elapsed time is 0.547985 seconds. max(abs(x-xtrue))
end
function A=eigmat(n,n1,m)
A=n*eye(m)+n1*randn(m)/sqrt(m);
end

Cuadro 8.18

Figura 8.15
8.6 Métodos de subespacios de Krylov j 211

function [x, error, iter, flag] = gmres_Netlib( A, x, b, M, restrt, max_it, tol )


%
% gmres.m solves the linear system Ax=b
% using the Generalized Minimal residual ( GMRESm ) method with restarts .
%
% input A REAL nonsymmetric positive definite matrix
% x REAL initial guess vector
% b REAL right hand side vector
% M REAL preconditioner matrix
% restrt INTEGER number of iterations between restarts
% max_it INTEGER maximum number of iterations
% tol REAL error tolerance
%
% output x REAL solution vector
% error REAL error norm
% iter INTEGER number of iterations performed
% flag INTEGER: 0 = solution found to tolerance
% 1 = no convergence given max_it

iter = 0; flag = 0; % initialization


bnrm2 = norm(b); if( bnrm2 == 0.0 ), bnrm2 = 1.0; end

r = M \ ( b-A*x );
error = norm(r)/bnrm2; if( error < tol ), return, end

[n,n] = size(A); % initialize workspace


m = restrt;
V(1:n,1:m+1) = zeros(n,m+1);
H(1:m+1,1:m) = zeros(m+1,m);
cs(1:m) = zeros(m,1); sn(1:m) = zeros(m,1);
e1 = zeros(n,1); e1(1) = 1.0;
for iter = 1:max_it % begin iteration
r = M \ ( b-A*x );
V(:,1) = r / norm( r );
s = norm( r )*e1;
for i = 1:m % construct orthonormal
w = M \ (A*V(:,i)); % basis using Gram-Schmidt
for k = 1:i,
H(k,i)= w’*V(:,k);
w = w - H(k,i)*V(:,k);
end
H(i+1,i) = norm( w );
V(:,i+1) = w / H(i+1,i);
for k = 1:i-1 % apply Givens rotation
temp = cs(k)*H(k,i) + sn(k)*H(k+1,i);
H(k+1,i) = -sn(k)*H(k,i) + cs(k)*H(k+1,i);
H(k,i) = temp;
end
[cs(i),sn(i)] = rotmat( H(i,i), H(i+1,i) ); % form i-th rotation matrix
temp = cs(i)*s(i); % approximate residual norm
s(i+1) = -sn(i)*s(i);
s(i) = temp;
H(i,i) = cs(i)*H(i,i) + sn(i)*H(i+1,i);
H(i+1,i) = 0.0;
error = abs(s(i+1)) / bnrm2;
if ( error <= tol ) % update approximation
y = H(1:i,1:i) \ s(1:i); % and exit
x = x + V(:,1:i)*y;
break;
end
end
if ( error <= tol ), break, end
y = H(1:m,1:m) \ s(1:m);
x = x + V(:,1:m)*y; % update approximation
r = M \ ( b-A*x ); % compute residual
s(i+1) = norm(r);
error = s(i+1) / bnrm2; % check convergence
if ( error <= tol ), break, end;
end
if ( error > tol ) flag = 1; end; % converged
end

Cuadro 8.19
212 j Capítulo 8. Sistemas de ecuaciones lineales. Algoritmos de resolución iterativos

El algoritmo de Lanczos, después de k pasos, genera una matriz tridiagonal así


2 3
˛1 ˇ1  0
6 :: 7
6 ˇ ˛ ::: : 7
6 1 2 7
6 : : : 7
T
Qk AQk D T k donde T k D 6 6 :: :: :: 7:
7
6 : 7
6 : :: :: 7
4 : : : ˇk 1 5
0  ˇk 1 ˛k
  
Resolver Ax D b conlleva QT AQ QT x D QT b, lo que resulta en T QT x D Œkbk; 0; : : : ; 0T . El algoritmo
para A definida positiva, y su codificación para M ATLAB, quedan según se listan en el cuadro 8.20.

function [x,V,T] = Lanczos_1_1(A,k,b)


% Solution of Ax = b via a CG Lanczos type algorithm
% Input: A -- an n by n symmetric matrix
% k -- a positive integer (k << n assumed)
 Método basado en Lanczos % Output: x -- solution of Ax=b
para resolver Ax D b  % V -- an n by k orthogonal matrix (optional)
% T -- a k by k symmetric tridiagonal matrix (optional)
q0 D b; ˇ0 D 0 %
q1 D b= kbk2 n = length(b); T = zeros(k); V = zeros(n,k); bn=norm(b);
for k D 1; 2; : : :  Algoritmo de Lanczos  q = b/bn; u = A*q; alpha = q’*u;
uk D Aqk u = u - q*alpha;
V(:,1) = q; T(1,1) = alpha;
˛k D qkH uk for j = 2:k,
uk D uk ˇk 1 qk 1 ˛k qk beta = norm(u);
ˇk D kuk k2 q0 = q; q = u/beta;
qkC1 D uk =ˇk u = A*q - q0*beta;
end alpha = q’*u;
u = u - q*alpha;
x D QT 1 kbk2 e1 T(j,j-1) = beta; T(j-1,j) = beta; T(j,j) = alpha;
V(:,j) = q;
end
x=V*(T\[bn zeros(1,k-1)]’);
end

Cuadro 8.20

Si hacemos alguna prueba con él en una sesión interactiva con M ATLAB resulta lo del cuadro 8.21.

>> A=rand(10);
>> A=A*A’; % Matriz simétrica def. positiva
>> b=A*ones(10,1);
>> [x] = Lanczos_1_1(A,8,b) % 8 iteraciones de Lanczos
>> norm(x)-norm(ones(10,1))
ans = -0.001890199589387
>> [x] = Lanczos_1_1(A,11,b) % 11 iteraciones de Lanczos
>> norm(x)-norm(ones(10,1))
ans = 2.463820703013653e-09

Cuadro 8.21

Un algoritmo más completo y robusto, del Systems Optimization Laboratory (Stanford University), se lista en el
apéndice B, en la página 665. Su longitud impide hacerlo aquí.

8.7 Comparación numérica de algunos métodos


Utilizaremos un problema "sintético", con una matriz simétrica 500  500 de diversos números de condición desde 1 a
10.000. La solución siempre es x D 1 y la precisión con la que se pretende obtenerla es kb Axk1 < 10 6 .
Haremos uso del Programa SdyCg que se lista en el cuadro 8.23. Una sesión de M ATLAB con él sería como la que se
obtiene en el cuadro 8.22. El gráfico que ilustra lo que se obtiene de esa sesión es el de la figura 8.16.
8.7 Comparación numérica de algunos métodos j 213

>> SdyCg(1.6)
cond(A) Mp_i Gc_i GS_i SOR_i Jac_i Mp_tim Gc_tim GS_tim SOR_tim Jac_tim Res^2_Mp Res^2_Cg Res^2_GS Res^2_SOR Res^2_Jac
1 1 1 2 29 2 0.000124 0.000092 0.006561 0.008331 0.001398 7.944076e-28 7.944076e-28 3.630856e-28 6.788011e-11 1.649459e-28
10 71 27 30 34 69 0.003159 0.001476 0.007254 0.008618 0.014539 8.579430e-13 8.912196e-13 9.432146e-11 1.933698e-10 1.034252e-09
100 685 84 205 48 761 0.039224 0.005740 0.015905 0.013556 0.196298 9.298963e-13 9.870799e-13 4.477812e-08 1.616879e-08 1.107515e-07
1000 6155 142 1644 566 70489 0.309429 0.009098 0.065275 0.122751 15.220156 9.954203e-13 6.167283e-13 2.765230e-06 1.118498e-06 NaN
10000 66389 162 7178 1564 99999 3.402865 0.009311 0.356074 0.351750 21.980691 9.994093e-13 7.437201e-13 5.815914e-04 2.265461e-04 2.941935e+26

Cuadro 8.22

Figura 8.16

Referencias, fuentes y lecturas complementarias


Todo lo que se expone en este capítulo relativo a los métodos de Jacobi, Gauss-Seidel y Relajación se puede encontrar
en Axelsson [1996], Varga [1962], Young [1971], Lascaux y Théodor [1987], Sauer [2012], Stoer y Bulirsch [1980] y
Ciarlet [1988]. El método SSOR está basado en Ortega [1988].
La mejor referencia, aunque hay otras muy buenas, para los métodos basados en subespacios de Krylov es Saad [1996].
Las de Trefethen y Bau [1997] y Demmel [1997] están también muy bien para este asunto y otros relacionados.
Todos los programas de ordenador del capítulo son del autor. Parecidos, a excepción de los relativos a gradientes
conjugados, se pueden encontrar en Hager [1988], Atkinson, Harley y Hudson [1989] y Lascaux y Théodor [1987].
También en diversos sitios académicos de Internet.
Según se expone, el método de los gradientes conjugados y su teoría es de Ortega [1988]. También se pueden en-
contrar enfoques muy similares y modernos en Shewchuk [1994], Stoer y Bulirsch [1980], Lascaux y Théodor [1987],
Hestenes [1980], Golub y Van Loan [2013] y [1989] y Ortega y Rheinboldt [1970]; lo relativo a optimización en Gill,
Murray y Wright [1981] y Luenberger [1984]; lo relativo al acondicionamiento previo en Golub y Van Loan [1989]. La
interpretación geométrica es de Engeln-Müllges y Uhlig [1996].
Todo lo que hace referencia a procesos iterativos y mínimos cuadrados se puede estudiar en Björk [1990] y [1996] y
en Golub y O’Leary, [1989].
214 j Capítulo 8. Sistemas de ecuaciones lineales. Algoritmos de resolución iterativos

% Gauss-Seidel
tic; k0=0; x=x0; c2=(D+L)\b; G_GS=(D+L)\(-U); d=max(abs(b-A*x));
function SdyCg(omega) while d>tol && k<maxits
% Test de diversos métodos iterativos de solución de sistemas lineales k0=k0+1;
n=500; x1=G_GS*x+c2;
condA=[1 10 100 1000 10000]; s=max(abs(x1));
x0=zeros(n,1); d=max(abs(x1-x))/s;
tol=1e-6; x=x1;
maxits=99999; end
disp([’cond(A) Mp_i Gc_i GS_i SOR_i Jac_i Mp_tim Gc_tim time_GSe=toc;
GS_tim SOR_tim’...
’ Jac_tim Res^2_Mp Res^2_Cg Res^2_GS GS(i)=k0; Res^2_Jac’]);
Res^2_SOR
for i=1:5 r=b-A*x;
[Q,R]=qr(rand(n)); d3=r’*r;
A=Q’*diag(linspace(1,condA(i),n))*Q; b=A*ones(n,1); % SOR
D=diag(diag(A)); L=tril(A,-1); U=triu(A,1); tic; l=0; x=x0; M=omega*L+D; N=-omega*U+(1-omega)*D;
% Máxima pendiente d=max(abs(b-A*x));
tic; j=0; x=x0; r=b-A*x; d=r’*r; s=r; while d>tol && l<maxits
while sqrt(d)>tol && j<maxits l=l+1;
j=j+1; x1=M\(N*x+omega*b);
v=A*s; s=max(abs(x1));
alpha=d/(s’*v); d=max(abs(x1-x))/s;
x=x+alpha*s; x=x1;
r=r-alpha*v; end
d=r’*r; time_SOR=toc;
s=r; SO(i)=l;
end r=b-A*x;
time_Mp=toc; d4=r’*r;
Mp(i)=j; % Jacobi
d1=d; tic; l1=0; x=x0; M=D; N=D-A;
% Gradientes conjugados d=max(abs(b-A*x));
tic; k=0; x=x0; r=b-A*x; d=r’*r; p=r; while d>tol && l1<maxits
while sqrt(d)>tol && k<maxits l1=l1+1;
k=k+1; x1=M\(N*x+b);
v=A*p; s=max(abs(x1));
alpha=d/(p’*v); d=max(abs(x1-x))/s;
x=x+alpha*p; x=x1;
r=r-alpha*v; end
beta=d; time_Jac=toc;
d=r’*r; Ja(i)=l1;
beta=d/beta; r=b-A*x;
p=r+beta*p; d5=r’*r;
end fprintf(’ %5d%6d%6d%6d%6d%6d %10.6f %10.6f %10.6f %10.6f %10.6f %e %e %e %e %e\n’,...
time_Gc=toc; condA(i),j,k,k0,l,l1,time_Mp,time_Gc,time_GSe,time_SOR,time_Jac,d1,d2,d3,d4,d5);
Gc(i)=k; end
d2=d; loglog(condA, Mp,’b-x’,condA,Gc,’r:+’,condA,GS,’g-.x’,condA,SO,’c-+’,condA,Ja,’k:x’)
xlabel(’Condición’),ylabel(’Iteraciones’)
h = legend(’Mp’,’Gc’,’GSe’,’SOR’,’Jac’,2);

Cuadro 8.23
Capítulo 9

Sistemas de ecuaciones no lineales

Contenido
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.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

9.1 El problema

E N términos matemáticos,
dada f W Rn ! Rm ; hallar un xN tal que f .x/
N D 0.

La función vectorial f se supone continua y derivable en algún conjunto abierto de Rn , con derivadas parciales continuas
en ese abierto.
Los algoritmos que estudiamos son iterativos. En cada iteración se resolverá un sistema de ecuaciones lineales resul-
tante de una simplificación del problema original en el entorno de cada punto del proceso.

9.1.1 Estudios de cargas en sistemas de generación y transporte de energía


eléctrica
A partir de un patrón de demanda y generación de potencia en cada uno de los nudos que configuran un sistema, como
el esquematizado en la figura 9.1,

Los estudios de circulación o flujo de cargas determinan las tensiones en los nudos de la red, en
módulo y argumento, los flujos de potencia activa y reactiva por todos los elementos del sistema, la
intensidad por las líneas, las pérdidas en éstas, etc.
216 j Capítulo 9. Sistemas de ecuaciones no lineales

Figura 9.1: Sistema eléctrico de generación y transporte de energía

Las leyes esenciales que gobiernan los flujos de electricidad en redes de transporte y distribución de energía las formuló
Gustav Robert Kirchhoff, Alemania (Prusia, Königsberg) 1824-1887.

Kirchhoff

Si se supone que los parámetros físicos de un sistema eléctrico permanecen constantes, existen cuatro variables asocia-
das a cada nudo i —en el de la figura hay 3— de ese sistema:
la tensión, en módulo, Vi , y argumento, i ;
la potencia activa inyectada, Pi , y
la potencia reactiva inyectada, Qi .
Las potencias inyectadas en el nudo i dependen de su tensión y de las de los a él unidos. Las expresiones que las
relacionan, si no hay transformadores, son
n
X n
X
2
  
Pi D jVi j Gpij C Gsij jVi j jVj j Gsij cos.i j / C Bsij sen.i j /
j D1 j D1
j ¤i j ¤i

n
X n
X
  
Qi D jVi j2 Bpij C Bsij jVi j jVj j Gsij sen.i j / Bsij cos.i j /
j D1 j D1
j ¤i j ¤i

donde: Vi es el módulo de la tensión en el nudo i ;


i el argumento de la tensión en el nudo i ;
Gsij la conductancia serie (constante) de la línea que une el nudo i con el nudo j ;
Gpij la conductancia a tierra (constante) de la línea que une el nudo i con el j ;
Bsij la susceptancia serie (constante) de la línea que une el nudo i con el nudo j ; y
Bpij la susceptancia a tierra (constante) de la línea que une el nudo i con el j .
Es norma que las tensiones se midan respecto a una referencia, para lo que se elige un nudo cualquiera que sea factible,
nudo holgura, al que se asigna una tensión de 1 para el módulo y 0 para el argumento.
Los tipos de nudos de un sistema y qué variables e incógnitas definirían cada uno de ellos se recogen en la tabla del
cuadro 9.1.
Si, por ejemplo, de un nudo se conocen el módulo de la tensión y la potencia activa inyectada, para caracterizarlo
totalmente habrá que calcular la potencia reactiva inyectada en él y el argumento de su tensión.
9.2 Método de Newton-Raphson j 217

Tipo de nudo Variables dadas Incógnitas


Carga o PQ P, Q V,
Generación o PV P, V Q, 
Holgura V, P, Q

Cuadro 9.1

Al suponer V1 D 1 y 1 D 0, para parametrizar un sistema eléctrico de n nudos se necesitarán conocer 2n 2


variables. Para caracterizar totalmente un sistema general habrá que resolver un sistema de 2n 2 ecuaciones no lineales
de la forma
f1 .x1 ; x2 ; : : : ; x2n 2 / D b1
f2 .x1 ; x2 ; : : : ; x2n 2 / D b2
:: (9.1)
:
f2n 2 .x1 ; x2 ; : : : ; x2n 2 / D b2n 2:

Consideremos de nuevo el pequeño sistema eléctrico de antes. Si se elige como nudo de holgura el 1, el 2 es PV y
el 3, PQ. La función vectorial f .x/ que definiría el sistema no lineal de ecuaciones con el que determinar el estado de
funcionamiento de esa pequeña red eléctrica es la siguiente:
2 3
V2
6 X X  7
6 V22 .Gp2j C Gs2j / V2 Vj G2j cos.2 j / C B2j sen.2 j / 7
6 7
6 j D1;3 j D1;3
7
6 X X 7
f .x/ D 66  7:
V 2
.Gp C Gs / V 3 Vj G 3j cos.3 j / C B3j sen.3 j / 7
6 3 3j 3j 7
6 j D1;2 j D1;2 7
6 X X 7
4 2 5
V3 .BC C Bp3j C Bs3j / V3 Vj G3j sen.3 j / B3j cos.3 j /
j D1;2 j D1;2

La susceptancia del condensador conectado al nudo 3 es BC . El b de (9.1), lo constituirán los valores de V2 , P2 , P3 y


Q3 , datos del problema.

9.2 Método de Newton-Raphson


Estudiaremos funciones vectoriales continuas f W Rn ! Rm , de momento con n D m, con derivadas parciales de
primer orden continuas.
En un punto xk del proceso iterativo se aproxima la función mediante desarrollo en serie de Taylor truncándolo a
partir de los términos de segundo orden, dando lugar al modelo que sigue,
Mk .xk / D f .xk / C J .xk /.x xk /;
donde J .xk / es la matriz Jacobiana del sistema en xk , es decir,
2 3
@f1 .x/ @f1 .x/
6 @x1   
6 @xn 7 7
6 :: :: :: 7
J .xk / D 6 : : : 7 :
6 7
4 @fn .x/ @fn .x/ 5

@x1 @xn xDxk

Si se resuelve el sistema lineal f .xk / C J .xk /.x xk / D 0, su solución dará un avance a un nuevo punto del proceso
iterativo. La relación de recurrencia del método es
1
xkC1 D xk J .xk / f .xk /
218 j Capítulo 9. Sistemas de ecuaciones no lineales

En condiciones adecuadas, la convergencia del método es cuadrática.


El algoritmo de Newton-Raphson para resolución de sistemas de ecuaciones no lineales es el que sigue.

I – Definir un x0 2 Rn ; hacer k D 1 y xk x0 .
II – Resolver el sistema lineal J .xk /.xkC1 xk / D f .xk /
III – Si kf .xkC1 /k2 < T ol, parar: el problema está resuelto
Si no, hacer k D k C 1, xk D xkC1 e ir al paso II

Ejemplo 9.1 Resolvamos mediante Newton-Raphson, partiendo del punto Œ1; 1; 1T , el sistema de ecuaciones no linea-
les
1
3x1 cos.x2 x3 / D0
 2 2
1
x12 81 x2 C C sen.x3 / C 1;06 D 0
10
10 3
e x1 x 2 C 20x3 C D 0:
3
Un código de M ATLAB para hacerlo debería constar de, al menos, estas dos rutinas:

function [x,dnor,iter]=Newt_Rap(funcion,x0,tol,maxiter)
% Newton-Raphson para cualquier sistema no lineal
if nargin<4, maxiter=99999; end function [f J]=NRP_1(x)
if nargin<3, tol=sqrt(eps); end f(1) = 3*x(1)-cos(x(2)*x(3))-0.5;
dnor=1.0; iter=0; A=[]; Dnor=[]; f(2) = x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;
while dnor>tol && iter<maxiter f(3) = exp((-x(1)*x(2)))+20*x(3)+(10*pi-3)/3;
iter=iter+1; if nargout<2, return, end
[f,J]=funcion(x0); J(1,1) = 3.0;
p=J\f’; J(1,2) = sin(x(2)*x(3))*x(3); J(1,3) = sin(x(2)*x(3))*x(2);
x=x0-p; [f]=funcion(x); J(2,1) = 2.0*x(1); J(2,2) = -162.0*(x(2)+0.1); J(2,3)=cos(x(3));
dnor=norm(f,inf); A=[A;x’]; x0=x; Dnor=[Dnor;dnor]; J(3,1) = -exp((-x(1)*x(2)))*x(2); J(3,2)=-exp((-x(1)*x(2)))*x(1);
end J(3,3) = 20.0;
s=’ %15.10e’; for i=1:size(x0)-1 s=[s’ %15.10e’]; end end
for i=1:iter, fprintf([s ’ %15.10en’], A(i,:),Dnor(i)); end
end

El código del cuadro de la izquierda es para cualquier problema; el de la derecha, para este ejemplo. Resolvamos:

>> [x,dnor,iter]=Newt_Rap(@NRP_1,[1;1;1])
9.1968721308e-001 4.6082245570e-001 -5.0338763550e-001 2.4087256490e+001
5.0100048532e-001 1.8743347767e-001 -5.2086923301e-001 5.8788006806e+000
5.0054293549e-001 6.1153453678e-002 -5.2200096420e-001 1.2916807111e+000
5.0010443627e-001 1.1617105749e-002 -5.2329514612e-001 1.9876169457e-001
5.0000551037e-001 6.0561572295e-004 -5.2358293632e-001 9.8214794394e-003
5.0000001666e-001 1.8263674473e-006 -5.2359872783e-001 2.9529468423e-005
5.0000000000e-001 1.6710515026e-011 -5.2359877560e-001 2.7018031860e-010
x =
0.5000
0.0000
-0.5236
dnor = 2.7018e-010
iter = 7

9.2.1 Modificaciones del Método de Newton-Raphson


9.2.1.1 Newton-Raphson por diferencias finitas
El cálculo de la matriz Jacobiana del sistema se lleva a cabo en este caso mediante su aproximación por diferencias
finitas. Cada columna aj de la matriz Jacobiana se aproxima mediante la expresión
f .x C hj ej / f .x/
aj D :
hj
p
Si están bien escalados todos los coeficientes de x uno único h puede valer, por ejemplo . Si difieren mucho unos de
otros, hay que verificar los resultados de esta aproximación a menudo en el proceso iterativo..
9.2 Método de Newton-Raphson j 219

Vamos a comprobar el método con el ejemplo anterior partiendo de x D Œ1; 1; 1T ,

function Newtrp_df_1(fx,x) function [f,J]=NRP_1_dif(x)


% Newton-Raphson por diferencias finitas para sistemas global h
global h f(1) = 3*x(1)-cos(x(2)*x(3))-0.5;
tol=sqrt(eps); dnor=1.0; h=tol; f(2) = x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;
while dnor >tol f(3) = exp((-x(1)*x(2)))+20*x(3)+(10*pi-3)/3;
[f J]=fx(x); if nargout<2, return, end
for i=1:3
p=J\f’; x(i)=x(i)+h;
x=x-p; f1=NRP_1_dif(x);
dnor=norm(fx(x)); J(1:3,i)=(f1-f)/h;
fprintf(’%15.10e %15.10e %15.10e %15.10en’, x,dnor); x(i)=x(i)-h;
end end
end end

Con la instrucción >> Newtrp_df_1(@NRP_1_dif,x), en una sesión de M ATLAB, se obtiene el proceso de conver-
gencia que indica el cuadro 9.2. Las tres primeras columnas son los coeficientes del vector x y la última kf .xk /k2 .

>> x=[1;1;1];
>> Newtrp_df_1(@NRP_1_dif,x)
9.1968721314e-01 4.6082245826e-01 -5.0338763389e-01 2.4087256721e+01
5.0100048524e-01 1.8743348339e-01 -5.2086923236e-01 5.8788009464e+00
5.0054293556e-01 6.1153459243e-02 -5.2200096436e-01 1.2916808565e+00
5.0010443628e-01 1.1617109794e-02 -5.2329514576e-01 1.9876176740e-01
5.0000551039e-01 6.0561685407e-04 -5.2358293631e-01 9.8214978438e-03
5.0000001666e-01 1.8264191607e-06 -5.2359872782e-01 2.9530304459e-05
5.0000000000e-01 1.6847869395e-11 -5.2359877560e-01 2.7240041680e-10

Cuadro 9.2: Convergencia de ejemplo 9.1 con el algoritmo de Newton por diferencias finitas

Para resolver el problema podemos también usar diferencias finitas centradas mediante la rutina del cuadro 9.3, que
calcula la información precisa, resultando lo que a continuación ilustra el propio cuadro.

function [f J]=NRP_1_dif_1(x)
global h
f(1) = 3*x(1)-cos(x(2)*x(3))-0.5;
>> Newtrp_df_1_c(@NRP_1_dif_1,[1;1;1])
f(2) = x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;
9.1968721308e-001 4.6082245570e-001 -5.0338763551e-001 2.4087256490e+001
f(3) = exp((-x(1)*x(2)))+20*x(3)+(10*pi-3)/3;
5.0100048532e-001 1.8743347768e-001 -5.2086923301e-001 5.8788006807e+000
if nargout<2, return, end
5.0054293549e-001 6.1153453680e-002 -5.2200096420e-001 1.2916807112e+000
for i=1:3
5.0010443627e-001 1.1617105749e-002 -5.2329514612e-001 1.9876169458e-001
x(i)=x(i)+h; f1=NRP_1_dif_1(x);
5.0000551037e-001 6.0561572299e-004 -5.2358293632e-001 9.8214794401e-003
x(i)=x(i)-2*h; f2=NRP_1_dif_1(x);
5.0000001666e-001 1.8263674477e-006 -5.2359872783e-001 2.9529468429e-005
J(1:3,i)=(f1-f2)/(2*h);
5.0000000000e-001 1.6710502161e-011 -5.2359877560e-001 2.7018009656e-010
x(i)=x(i)+h;
end
end

Cuadro 9.3

9.2.1.2 Newton modificado


Resulta de considerar la misma matriz Jacobiana, J .x0 /, durante todo el proceso, o en un número fijo de iteraciones.

9.2.1.3 Jacobi
La matriz Jacobiana se aproxima mediante los coeficientes de su diagonal principal. La relación de recurrencia es:

xkC1 D xk D k 1 f .xk /,

donde diki D Jiki . Si la matriz J es diagonal dominante, esta estrategia puede ser suficiente.
220 j Capítulo 9. Sistemas de ecuaciones no lineales

9.2.1.4 Gauss-Seidel
La matriz del sistema es la parte triangular inferior de la Jacobiana. La relación de recurrencia es:

xkC1 D xk Lk 1 f .xk /

donde Lkij D Jijk , i  j .

9.2.1.5 Relajación SOR


El esquema iterativo en forma matricial que se utiliza es
1
xkC1 D xk .D k C Lk / f .xk /

El parámetro de relajación es ! D 1=. C 1/.

9.3 Métodos cuasi Newton. Método de Broyden


Debidos esencialmente al trabajo de Charles George Broyden, Reino Unido, 1933-2011.

Broyden

Estos procedimientos extienden la aproximación al problema del método de la secante pero a n dimensiones. Su primera
aproximación al respecto se la publicó en 1965.
En general el método se centra en escoger J .xk / de tal forma que se minimice el valor de la función que se obtendría
en un mismo punto mediante sus dos aproximaciones Ak y Ak 1 y que además se cumpla que Ak .xk xk 1 / D
f .xk / f .xk 1 /.
Si sk 1 D xk xk 1 y yk 1 D f .xk / f .xk 1 /, lo cumple la aproximación de J .xk / que sigue esta recurrencia:
T
.yk 1 Ak 1 sk 1 /sk 1
Ak D Ak 1 C
skT 1 sk 1

El algoritmo con esta fórmula es el que sigue.

I – Definir x0 2 Rn y A0 2 Rnn ; hacer k D 1 y xk x0 .

II – Determinar la solución de Ak sk D f .xk /.

III – Si kjf .xk /k2 < T ol, PARAR: el problema está resuelto.
Si > T ol, hacer xkC1 xk C sk
yk f .xkC1 / f .xk /
T
.yk Ak sk /sk
AkC1 Ak C T
sk sk
k kC1
y volver al paso II.

La A0 se puede obtener por una aproximación parcial o total: por diferencias finitas, por ejemplo. La convergencia
del método a que da lugar es superlineal.
9.3 Métodos cuasi Newton. Método de Broyden j 221

Ejemplo 9.2 Partiendo del punto Œ1; 1; 1T , resolvamos este sistema con Newton y fórmula de Broyden.
1
3x1 cos.x2 x3 / 2
D0
1 2

x12 81 x2 C 10 C sen.x3 / C 1;06 D 0
e x1 x2
C 20x3 C 103 3 D 0:
En código de M ATLAB, con la rutina específica correspondiente, es el del cuadro 9.4. Como matriz A0 se utiliza la

function Broyden_3(fx,x)
% Método cuasi Newton con la fórmula de Broyden
tol=sqrt(eps); n=length(x); dnor=1.0; J=zeros(n,n); f=fx(x);
J(1,1)=3; J(2,2)=-178.2; J(3,3)=20; % Trampa
while dnor >tol
p=J\f’;
x1=x-p; f=fx(x1);
dnor=norm(f);
fprintf(’ %15.10e %15.10e %15.10e %15.10e\n’,x,dnor);
J=broy(J,f,p); x=x1;
end
end

function J=broy(J,f,p)
prod=p’*p;
J=J-(1/prod)*f’*p’; % igual que J=J-(1/prod)*(y’+J*p)*p’ ver Quarteroni p.289
end

Cuadro 9.4

diagonal de la Jacobiana en el punto de partida.


Con la instrucción >> Broyden_3(@NRP_1,[1 1 1]’), en una sesión de M ATLAB, se obtiene el proceso de con-
vergencia que indica el cuadro 9.5. Las tres primeras columnas son los coeficientes del vector x y la última kf .xk /k2 .

>> Broyden_3(@NRP_1,[1 1 1]’)


1.0000000000e+00 1.0000000000e+00 1.0000000000e+00 2.5275175224e+01
3.4676743529e-01 4.6628210429e-01 -4.9199274766e-01 1.3729480376e+01
4.9212323059e-01 3.2365278698e-01 -5.1627698859e-01 7.1277542490e+00
4.9934867516e-01 2.1314837540e-01 -5.1667142786e-01 2.3270871287e+00
5.0116491660e-01 9.6903420362e-02 -5.2105858424e-01 8.4030438329e-01
5.0030804414e-01 4.2793311463e-02 -5.2247491268e-01 2.0063627763e-01
5.0010667115e-01 1.1721033805e-02 -5.2329130808e-01 3.3193994651e-02
5.0001830475e-01 2.0323188142e-03 -5.2354577934e-01 1.8049697418e-03
5.0000098467e-01 1.1157244942e-04 -5.2359585189e-01 1.6785486153e-05
5.0000001087e-01 1.0382563731e-06 -5.2359874843e-01 9.1223423183e-08
5.0000000004e-01 5.6408065297e-09 -5.2359877546e-01 4.8499505118e-10

Cuadro 9.5

9.3.1 Implementación práctica del método de Broyden


Lema 9.1 Fórmula de Sherman-Morrison-Woodbury 1949-1950.
a) Si A es una matriz regular n  n y u y v dos vectores cualesquiera de Rn , A C uvT es regular si y sólo si
w D 1 C vT A 1 u ¤ 0.
 1 1

b) En este caso, además, A C uvT DA 1 w
A 1 uvT A 1 .
La idea es actualizar directamente una simulación de la matriz inversa del sistema que hay que resolver. Se parte de
una A0 1 y se adapta A 1 con la nueva fórmula de Broyden:

1 1
sk Ak 1 yk skT Ak 1
AkC1 D Ak C
skT Ak 1 yk
222 j Capítulo 9. Sistemas de ecuaciones no lineales

Referencias, fuentes y lecturas complementarias


Todo lo que se expone en este capítulo es bastante estándar en cualquier libro o referencia de análisis numérico o cálculo
científico.
La referencia esencial clásica en la que están basados los resultados más importantes de este capítulo y la mayor parte
de lo expuesto es Dennis y Schnabel [1983] y [1996]; algunos ejemplos y apuntes son de Hager [1988] y Ortega y
Rheinboldt [1970].
Los ejemplos y análisis de los diversos aspectos de problemas que se plantean en sistemas eléctricos de generación y
transporte de energía eléctrica son del autor. Para profundizar más en ellos se pueden consultar Bergen [1986], Elgerd
[1983] y Grainger y Stevenson [1994].
El apartado relativo a rapidez y velocidad de convergencia se puede también estudiar en Gill, Murray y Wright [1981]
y Luenberger y Ye [2016]. Está muy bien tratado en Nash y Sofer [1996].
Todos los programas de ordenador son del autor; alternativas a ellos se pueden encontrar en Atkinson, Harley y Hudson
[1989] y Press y otros [1986], [1992] y [1996].
Capítulo 10

Mínimos cuadrados no lineales

Contenido
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

10.1 Definición del problema


L OS problemas no lineales reales de mínimos cuadrados surgen de modelos matemáticos que estudian el compor-
tamiento de sistemas económicos, sociales y físicos que se quiere aproximar con formulaciones más estándar o
fáciles de manejar, aunque no lineales.
Se trata de en encontrar el mínimo de la suma de los cuadrados de m funciones no lineales; es decir,
m
X
minimizar
n
f .x/ D 1
2
ri2 .x/ D 12 kr.x/k22
x2R
iD1

donde el vector de residuos1 es r.x/ W Rn ! Rm D Œr1 .x/; : : : ; rm .x/T . Cada ri .x/, i D 1; : : : ; m, m  n, es una
función no lineal de Rn en R.
El problema real surge de la imposibilidad de encontrar la solución al sistema de ecuaciones r.x/ D 0 y se quiere
adaptar una pseudosolución que mejor la aproximase —de existir— de acuerdo con la norma euclídea.
El ejemplo paradigmático es el ajuste de funciones no lineales a datos diversos. Se trata de aproximar una función
f .x; t/ no lineal a unos datos, definidos por ejemplo por un par yi (valor) y ti (tiempo), .yi ; ti /, i D 1; : : : ; m. Si ri .x/
representa el error en la predicción que hace el modelo de la observación i,
ri .x/ D yi f .x; ti /; i D 1; : : : ; m;
y se quiere minimizar la suma de los cuadrados de las desviaciones entre los valores reales y los predichos con el modelo,
se llega a un problema del tipo
1
minimizar
n 2
ky f .x/k22
x2R

1 Si m D n se tiene un sistemas de ecuaciones no lineales como los que hemos estudiado.


224 j Capítulo 10. Mínimos cuadrados no lineales

10.2 Estimación del estado de sistemas eléctricos


La estimación del estado es el proceso por el cual se determina el valor del vector de variables que rigen un sistema a
partir de unos datos proporcionados por medidas efectuadas al mismo.
Estas medidas no se pueden realizar con precisión absoluta, debido a la imperfección operativa de los aparatos que
las registran. Para aumentar la certeza sobre sus resultados se disponen sensores o medidores en el sistema con un grado
notable de redundancia.
El proceso matemático de la estimación o certeza se basa en maximizar o minimizar unos criterios estadísticos deter-
minados. El criterio más usado es el de minimizar la suma de los cuadrados de las desviaciones entre los valores reales
—medidas— y los estimados.

En la operación, análisis y planificación de sistemas eléctricos de energía como el de la figura, uno de los asuntos de
más relevancia técnica y económica es el de la estimación del estado de funcionamiento del sistema de generación y
transporte.
Para estimar el estado del sistema se instalan en su red física unos aparatos de medida que proporcionan el valor de
diversas magnitudes de funcionamiento: tensiones en diversos puntos, flujos de potencia activa y reactiva por elementos
de transporte, potencias activa y reactiva inyectadas, etc.
Si todas estas medidas fuesen perfectas en un estado de operación concreto, las relaciones matemáticas que modelizan
las leyes físicas que rigen su funcionamiento permitirían determinar la solución única de ese estado.
Los errores aleatorios que incorporan los aparatos de medida introducen una incompatibilidad matemática en aque-
llas relaciones, por lo que el cálculo de la solución exacta no es posible teniendo que sustituirse por una estimación de
la más probable.
Con el fin de aumentar la bondad de la estimación, así como poder identificar mediciones erróneas, el número de
medidas que se efectúa suele ser, como apuntábamos, redundante: bastante superior al estrictamente necesario para
determinar el estado de funcionamiento real. Un ejemplo es el de la figura 10.1. Recordemos las expresiones
n
X n
X
  
Pi D jVi j2 Gpij C Gsij jVi j jVj j Gsij cos.i j / C Bsij sen.i j /
j D1 j D1
j ¤i j ¤i

n
X n
X
  
Qi D jVi j2 Bpij C Bsij jVi j jVj j Gsij sen.i j / Bsij cos.i j /
j D1 j D1
j ¤i j ¤i
10.2 Estimación del estado de sistemas eléctricos j 225

Figura 10.1

donde: Vi es el módulo de la tensión en el nudo i ;


i el argumento de la tensión en el nudo i;
Gsij la conductancia serie (constante) de la línea que une el nudo i con el nudo j ;
Gpij la conductancia a tierra (constante) de la línea que une el nudo i con el j ;
Bsij la susceptancia serie (constante) de la línea que une el nudo i con el nudo j ; y
Bpij la susceptancia a tierra (constante) de la línea que une el nudo i con el j .
Los flujos de potencias activa y reactiva entre dos nudos i y j de una red están dados por las relaciones

Pij D jVi j2 Gsij jVi jjVj jGsij cos.i j / jVi jjVj jBsij sen.i j / C jVi j2 Gpij
Qij D jVi j2 Bsij jVi jjVj jGsij sen.i j / C jVi jjVj jBsij cos.i j / jVi j2 Bpij :

En términos matemáticos, si se tiene una muestra b1 ; b2 ; : : : ; bm que define una medida en un mismo instante de todos
los aparatos, el sistema de ecuaciones que relaciona estas mediciones con las variables de estado x1 ; x2 ; : : : ; xn , se puede
expresar como
f1 .x1 ; x2 ; : : : ; xn / D b1
f2 .x1 ; x2 ; : : : ; xn / D b2
::
:
fm .x1 ; x2 ; : : : ; xn / D bm ;

donde m  n. Se supone que cada uno de los elementos de la función vectorial f .x/ es exacto.
Este sistema, debido a la imprecisión de los aparatos, suele ser matemáticamente incompatible, aunque esta incompa-
tibilidad suele ser muy pequeña al ser pequeñas esas imprecisiones.
Para el ejemplo de tres nudos de la figura anterior, tomando 1 D 0 como referencia de ángulos, los parámetros que
definen el sistema son los de la tabla del cuadro 10.1.
Al no existir solución exacta del sistema, para poder estimar una que se acerque en algún sentido a esa ideal inalcan-
zable, es necesario definir un criterio, métrica (o estimador) en Rn que evalúe la bondad de una pseudosolución de ella.
Los más usados son:
El de mínimos cuadrados.
El de máxima verosimilitud.
226 j Capítulo 10. Mínimos cuadrados no lineales

b x f .x/
V1
V2
X X
V1 V12 .Gp1j C Gs1j / V1 Vj .G1j cos.1 j / C B1j sen.1 j //
V2 j D2;3 j D2;3
X X
P1 V12 .Bp1j C Bs1j / V1 Vj .G1j sen.1 j / B1j cos.1 j //
j D2;3 j D2;3
Q1 X X
V22 .Gp2j C Gs2j / V2 Vj .G2j cos.2 j / C B2j sen.2 j //
P2 V1
j D1;3 j D1;3
P3 V2 X X
V32 .Gp3j C Gs3j / V3 Vj .G3j cos.3 j / C B3j sen.3 j //
Q3 2 j D1;2 j D1;2
X X
2
P12 V3 V3 .Bp3j C Bs3j / V3 Vj .G3j sen.3 j / B3j cos.3 j //
Q12 3 j D1;2 j D1;2

P21 V12 Gs12 V1 V2 Gs12 cos.1 2 / C Bs12 sen.1 2 / C V12 Gp12

Q21 V12 Bs12 V1 V2 Gs12 sen.1 2 / Bs12 sen.1 2 / V12 Bp12

P23 V22 Gs21 V1 V2 Gs21 cos.2 1 / C Bs21 sen.2 1 / C V22 Gp21

Q23 V22 Bs21 V1 V2 Gs21 sen.2 1 / Bs21 sen.2 1 / V22 Bp21

V22 Gs23 V2 V3 Gs23 cos.2 3 / C Bs23 sen.2 3 / C V22 Gp23

V22 Bs23 V2 V3 Gs23 sen.2 3 / Bs23 sen.2 3 / V22 Bp23

Cuadro 10.1

El estimador de mínimos cuadrados elige como criterio de aproximación de la solución


i
m

ˆ.x1 ; x2 ; : : : ; xn / D .bi fi .x1 ; x2 ; : : : ; xn //2


iD1

y como objetivo hacer mínima la función ˆ.x1 ; x2 ; : : : ; xn /, es decir

minimizar
n
ˆ.x/
x2R

El de máxima verosimilitud es idéntico al de mínimos cuadrados cuando los errores de las mediciones tienen una dis-
tribución de probabilidad N.0;  /: Ambos convergen en probabilidad a x, son asintóticamente normales y consistentes
para m ! 1.
Si un determinado aparato suministra la medida b, siendo b real la que debería dar si la precisión de la medición fuese
total, se tendrá que
b D b real C ;
donde  es el error aleatorio propio del aparato de medida.
Si  no está sesgado, su función de densidad de probabilidad
1 2
FDP ./ D p e 2 2
 2
es la normal de media cero y desviación típica .
Como la media de  se supone cero, la media de la muestra real de b es b real . La función de densidad de probabilidad
de b es
2
1 .b breal /
FDP .b/ D p e 2 2
 2
10.3 Resolución numérica del problema j 227

Si se tiene un vector de m medidas, b, en el que cada uno de sus elementos o coeficiente tiene una función de densidad
de probabilidad como la descrita, la función de densidad de probabilidad conjunta de la muestra b1 ; : : : ; bm , supuestas
todas las medidas independientes unas de otras, es
m
Y
FDP .b1 ; : : : ; bm / D FDP .b1 /  FDP .b2 /    FDP .bm / D FDP .bi /:
i D1

A esta función se la denomina verosimilitud de los parámetros (los bireal ) y se designa por L.b1real ; : : : ; bm
real
/D
real
L.b /.
Si se quiere hacer máxima la verosimilitud (probabilidad) de que se obtenga como medida real la de la muestra b,

m 2
X bi bireal
m 
Y 
1 2i2
L.breal / D p e i D1 ;
iD1
i 2

habrá que maximizar L o, lo que debe conseguir el mismo efecto, ln L.breal /. Ahora bien, maximizar la función
ln L.breal / es lo mismo que
2 3
im i m 2
6 p bi bi real
7
maximizar 4 ln.i 2/ 5:
2i2
i D1 i D1

Pm p
Como iD1 ln.i 2/ es constante, este problema equivale a
2 3
i
m 2
6 bi bireal 7
minimizar 4 5:
2i2
i D1

Los parámetros breal se relacionan a través de las variables de estado por la función no lineal antes mencionada

breal D f .x/;

donde x es el vector de variables de estado: las tensiones en los nudos de la red y las tomas de los transformadores con
regulación.
El problema expresado en forma matricial resulta

minimizar
n
Œb f .x/T ‚ 1
Œb f .x/ ;
x2R

donde la matriz 2 3
12
6 :: 7
‚D4 : 5
2
m
es la matriz de covarianzas de las mediciones.
1
Como esta matriz es definida positiva, su inversa se puede expresar de la forma ‚ D W T W , dando lugar a la
formulación
minimizar
n
kW .b f .x//k22
x2R

idéntica en estructura al que planteábamos con el estimador de mínimos cuadrados.


228 j Capítulo 10. Mínimos cuadrados no lineales

10.3 Resolución numérica del problema


Hay que resolver r.x/ D 0, un sistema de m ecuaciones no lineales con n incógnitas. En principio m  n. Como se
hizo cuando m D n, lo natural es generar un proceso iterativo de aproximación punto a punto a la solución, en el que
r.x/ se modelice en cada uno de ellos mediante desarrollo en serie de Taylor hasta primeras derivadas. Es decir, un
modelo del tipo
M.p/  r.x/ C J .x/p
y se resuelva este sistema lineal, que será en general incompatible.
La solución por mínimos cuadrados de cada uno de estos sistemas, como en el caso de Newton-Raphson, será una
nueva dirección de movimiento a un nuevo punto del proceso iterativo que nos aproxime a la solución.

10.3.1 Método de Gauss-Newton


Sigue este algoritmo
I – Definir un x0 ; hacer k D 1 y xk x0
1
II – Determinar mKınn kr.xk / C J .xk /.x xk /k22
x2R 2
III – Si x xk < T ol, parar: problema resuelto;
si no, hacer k D k C 1, xk D x e ir al paso II.

Su convergencia tiende a ser cuadrática en condiciones adecuadas.


El subproblema del punto II es un problema lineal
minimizar
n
kAx bk2 ;
x2R

por lo que se puede resolver con los métodos que conocemos para mínimos cuadrados lineales: ecuaciones normales,
factorización QR, descomposición en valores singulares, etc.
Ejemplo 10.1 Mediante Gauss-Newton, resolviendo los subproblemas mediante el operador n de M ATLAB, determinar
x1 y x2 de la función e x1 Ctx2 que mejor ajuste los pares de puntos
f.ti ; yi /g D f. 2; 1=2/; . 1; 1/; .0; 2/; .1; 4/g:
La función r.x/ es R2 ! R4 ; su matriz Jacobiana es
2 3
e x1 2x2 2e x1 2x2
6 e x1 x 2 e x1 x 2 7
J .x/ D 6
4 e x1
7:
5
0
e x1 Cx2 e x1 Cx2

Desde x0 D Œ1, 1T , el código M ATLAB que lo puede resolver en particular es este.

function GN111(fx,x) % Gauss-Newton function [f J]=GaNew(x)


tol=sqrt(eps); dnor=1.0; f(1)=exp(x(1)-2*x(2))-0.5;
while dnor>tol f(2)=exp(x(1)-1.0*x(2))-1.0;
[f J] = fx(x); f(3)=exp(x(1))-2.0;
p=J\f’; f(4)=exp(x(1)+x(2))-4.0;
x=x-p; if nargout<2, return, end
dnor=norm(p,inf)/norm(x,inf); J(1,1)=exp(x(1)-2.0*x(2)); J(1,2)=-2*exp(x(1)-2*x(2));
s=norm(f)^2; J(2,1)=exp(x(1)-x(2)); J(2,2)=-exp(x(1)-x(2));
fprintf(’ %15.10e %15.10e %15.10e %15.10en’,x,s,dnor); J(3,1)=exp(x(1)); J(3,2)=0;
end J(4,1)=exp(x(1)+x(2)); J(4,2)=exp(x(1)+x(2));
end end

El proceso hasta la solución, x D Œln 2; ln 2T , con la instrucción >> GN111(@GaNew,[1;1]), en una sesión de
M ATLAB, es el del cuadro 10.2. Las tres primeras columnas son los coeficientes del vector x y la última kf .xk /k2 .
10.3 Resolución numérica del problema j 229

>> GN111(@GaNew,[1;1])
7.5406407955e-01 7.8581936683e-01 1.2019085869e+01 3.1296749716e-01
6.9782818219e-01 6.9931189370e-01 4.6113768156e-01 1.2370370632e-01
6.9317290132e-01 6.9317774998e-01 2.0073845116e-03 8.8493084521e-03
6.9314718126e-01 6.9314718139e-01 5.3683607855e-08 4.4101156284e-05
6.9314718056e-01 6.9314718056e-01 3.9452547217e-17 1.1940285355e-09

Cuadro 10.2

10.3.2 Método de Levenberg-Marquardt


Se formuló inicialmente en 1944 por Kenneth Levenberg, EE.UU., 1919-1973, y se desarrolló en 1963 por Donald W.
Marquardt, EE.UU., 1929-1997.
Para evitar las dificultades del algoritmo de Gauss-Newton cuando a lo largo del proceso la matriz Jacobiana no tiene
rango completo o está mal condicionada, se propuso que la dirección pk D x xk saliese de la solución del subproblema
mKın 1
2
kr.xk / C J .xk /pk k22 ;
kpk k  k
supuesto que se conoce un número k tal que el modelo lineal de r.xk / representa suficientemente bien la función
dentro de la esfera de confianza de radio k .
Si la función decrece en esta dirección, se hace x C p el nuevo punto del proceso y se adapta  con algún criterio. Si
no decrece, y x ¤ x  , se modifica la estrategia con  para que en la próxima iteración se mejore la función.
Si la dirección del subproblema, sin tener en cuenta la restricción kpk k  k , verifica ésta, el paso sería el mismo; si
no, se puede comprobar que existirá un  > 0 tal que
.J T J C I/p LM D J T r;
. kp LM k/ D 0;
por lo que pk D pLM sería una solución del subproblema que satisface kpk k D k .
Estas condiciones son una adaptación a este problema de otras generales para problemas de optimización con condi-
ciones, como es el caso que impone el estar dentro de la región de confianza.
El método, implícitamente, es una permanente elección entre la dirección de Gauss-Newton y la de máxima pendiente,
o alguna entre ambas. En efecto:
Cuando  D 0 se obtiene la dirección de Gauss-Newton
 1
pkLM D J .xk /T J .xk / J .xk /T r.xk /:
Cuando  es muy grande
1
J .xk /T r.xk /;
pkLM 

por lo que la dirección es colineal con la de máxima pendiente.
La versión algorítmica del método, con una adaptación del parámetro  de iteración en iteración2 muy simple, es la
que refleja el cuadro 10.3.
Ejemplo 10.2 Mediante Levenberg-Marquardt, ajustar a la función
b1
f .x/ D
1 C b2 e tb3
el conjunto de puntos de la tabla.
ti yi ti yi
1 5,308 7 31,443
2 7,24 8 38,558
3 9,638 9 50,156
4 12,866 10 62,948
5 17,069 11 75,995
6 23,192 12 91,972
2 Otras formas de cambiar  son las que se estudian al presentar los métodos de región de confianza para minimizar funciones sin condiciones.
230 j Capítulo 10. Mínimos cuadrados no lineales

I – Definir un x0 2 Rn ; hacer  D 0;01, k D 1 y xk x0


 1
II – Calcular pk D J .xk /T J .xk / C I J .xk /T r.xk /
III – if .kr.xk C pk /k22 < kr.xk /k22 / then
si pk  T ol, parar: problema resuelto
si pk > T ol, hacer:  =10
k kC1
xkC1 xk C p
y volver al paso II
else
 10  
Volver al paso II sin tener que calcular J .xk /
end

Cuadro 10.3

 Partiendo
Partiendo de de 0 D30;
xŒ200;
x0 D Œ200;
0;4T30; 0;4MTATLAB
, el código , el código Matlab
que lo resuelve es este.que lo resuelve es este.

function Levmar_99
% Levenberg-Marquardt
m=12; n=3; x=[200;30;-0.4]; mu=0.01; J=zeros(m,n);
function J=derf(x)
jtj=zeros(n,n); dnor=1; f=fx(x);
J(1,1) =1/(1+x(2)*exp(x(3)));
tol=sqrt(eps)*norm(x,inf); update=1;
J(1,2) =-x(1)*exp(x(3))/(1+x(2)*exp(x(3)))^2;
J(1,3) =-x(1)*x(2)*exp(x(3))/(1+x(2)*exp(x(3)))^2;
while dnor>tol
J(2,1) =1/(1+x(2)*exp(2*x(3)));
if update==1
J(2,2) =-x(1)*exp(2*x(3))/(1+x(2)*exp(2*x(3)))^2;
f=fx(x); J=derf(x);
J(2,3) =-x(1)*x(2)*exp(2*x(3))*2/(1+x(2)*exp(2*x(3)))^2;
jtj=J’*J;
J(3,1) =1/(1+x(2)*exp(3*x(3)));
res=norm(f)^2;
J(3,2) =-x(1)*exp(3*x(3))/(1+x(2)*exp(3*x(3)))^2;
end
J(3,3) =-x(1)*x(2)*exp(3*x(3))*3/(1+x(2)*exp(3*x(3)))^2;
a=jtj+mu*eye(n);
J(4,1) =1/(1+x(2)*exp(4*x(3)));
s=a\(J’*f);
J(4,2) =-x(1)*exp(4*x(3))/(1+x(2)*exp(4*x(3)))^2;
b=x-s;
J(4,3) =-x(1)*x(2)*exp(4*x(3))*4/(1+x(2)*exp(4*x(3)))^2;
f1=fx(b);
J(5,1) =1/(1+x(2)*exp(5*x(3)));
res1=norm(f1)^2;
J(5,2) =-x(1)*exp(5*x(3))/(1+x(2)*exp(5*x(3)))^2;
if res1<res
J(5,3) =-x(1)*x(2)*exp(5*x(3))*5/(1+x(2)*exp(5*x(3)))^2;
x=b; f=f1;
J(6,1) =1/(1+x(2)*exp(6*x(3)));
dnor=norm(s,inf)/norm(x,inf);
J(6,2) =-x(1)*exp(6*x(3))/(1+x(2)*exp(6*x(3)))^2;
fprintf(’%15.10e %15.10e %15.10e %15.10e %15.10e %15.10e\n’,...
J(6,3) =-x(1)*x(2)*exp(6*x(3))*6/(1+x(2)*exp(6*x(3)))^2;
x,res1,mu,dnor);
J(7,1) =1/(1+x(2)*exp(7*x(3)));
mu=mu/10; update=1;
J(7,2) =-x(1)*exp(7*x(3))/(1+x(2)*exp(7*x(3)))^2;
else
J(7,3) =-x(1)*x(2)*exp(7*x(3))*7/(1+x(2)*exp(7*x(3)))^2;
mu=mu*10; update=0;
J(8,1) =1/(1+x(2)*exp(8*x(3)));
end
J(8,2) =-x(1)*exp(8*x(3))/(1+x(2)*exp(8*x(3)))^2;
end
J(8,3) =-x(1)*x(2)*exp(8*x(3))*8/(1+x(2)*exp(8*x(3)))^2;
end
J(9,1) =1/(1+x(2)*exp(9*x(3)));
J(9,2) =-x(1)*exp(9*x(3))/(1+x(2)*exp(9*x(3)))^2;
function f=fx(x)
J(9,3) =-x(1)*x(2)*exp(9*x(3))*9/(1+x(2)*exp(9*x(3)))^2;
f=zeros(12,1);
J(10,1)=1/(1+x(2)*exp(10*x(3)));
f(1) = x(1)/(1+x(2)*exp(x(3)))-5.308;
J(10,2)=-x(1)*exp(10*x(3))/(1+x(2)*exp(10*x(3)))^2;
f(2) = x(1)/(1+x(2)*exp(2*x(3)))-7.24;
J(10,3)=-x(1)*x(2)*exp(10*x(3))*10/(1+x(2)*exp(10*x(3)))^2;
f(3) = x(1)/(1+x(2)*exp(3*x(3)))-9.638;
J(11,1)=1/(1+x(2)*exp(11*x(3)));
f(4) = x(1)/(1+x(2)*exp(4*x(3)))-12.866;
J(11,2)=-x(1)*exp(11*x(3))/(1+x(2)*exp(11*x(3)))^2;
f(5) = x(1)/(1+x(2)*exp(5*x(3)))-17.069;
J(11,3)=-x(1)*x(2)*exp(11*x(3))*11/(1+x(2)*exp(11*x(3)))^2;
f(6) = x(1)/(1+x(2)*exp(6*x(3)))-23.192;
J(12,1)=1/(1+x(2)*exp(12*x(3)));
f(7) = x(1)/(1+x(2)*exp(7*x(3)))-31.443;
J(12,2)=-x(1)*exp(12*x(3))/(1+x(2)*exp(12*x(3)))^2;
f(8) = x(1)/(1+x(2)*exp(8*x(3)))-38.558;
J(12,3)=-x(1)*x(2)*exp(12*x(3))*12/(1+x(2)*exp(12*x(3)))^2;
f(9) = x(1)/(1+x(2)*exp(9*x(3)))-50.156;
f(10) = x(1)/(1+x(2)*exp(10*x(3)))-62.948;
end
f(11) = x(1)/(1+x(2)*exp(11*x(3)))-75.995;
f(12) = x(1)/(1+x(2)*exp(12*x(3)))-91.972;
end

La matriz jacobiana se ha calculado analíticamente. Cuando la complejidad de su cálculo es mayor, se puede aproximar
por diferencias finitas. 27/41
Los puntos del proceso iterativo que se obtienen con una sesión de M ATLAB son los del cuadro 10.4.

>> Levmar_99
1 1.4756872319e+02 3.0915753991e+01 -3.3304661156e-01 3.2095285441e+02 1.0000000000e-02 3.5530074172e-01
a b c 2 1.7485492970e+02
1 4.1322472852e+01
2 3 -3.1183181926e-01 1.9720323863e+01 1.0000000000e-03 1.5605054173e-01
3 1.9441635874e+02 4.8327112423e+01 -3.1344957806e-01 2.6657614929e+00 1.0000000000e-04 1.0061616816e-01
d e f g4 1.9613176244e+02
9 4.9079231125e+01
4 6 5 -3.1359042350e-01 2.5873011226e+00 1.0000000000e-05 8.7461799758e-03
5 1.9618553722e+02 4.9091542376e+01 -3.1357009855e-01 2.5872773966e+00 1.0000000000e-06 2.7410166257e-04
6 1.9618625588e+02 4.9091638512e+01 -3.1356973267e-01 2.5872773953e+00 1.0000000000e-07 3.6631679415e-06
h i j 10 8 7
7 1.9618626172e+02 4.9091639449e+01 -3.1356972996e-01 2.5872773953e+00 1.0000000000e-08 2.9764224702e-08

Cuadro 10.4
10.3 Resolución numérica del problema j 231

Con la matriz Jacobiana obtenida por diferencias finitas, partiendo de x D Œ10; 1; 1T y utilizando estos códigos del
cuadro 10.5 se obtiene lo que lista resumidamente el cuadro 10.6.

function Levmar_99_1
% Levenberg-Marquardt
function f=fx(x)
global h
f = zeros(12,1);
n=3; x=[10;1;1]; mu=0.01; h=sqrt(eps); dnor=1; k=0;
f(1) = x(1)/(1+x(2)*exp(x(3)))-5.308;
tol=h*norm(x,inf); update=1;
f(2) = x(1)/(1+x(2)*exp(2*x(3)))-7.24;
while dnor>tol
f(3) = x(1)/(1+x(2)*exp(3*x(3)))-9.638;
if update==1
f(4) = x(1)/(1+x(2)*exp(4*x(3)))-12.866;
f=fx(x); J=derf(x);
f(5) = x(1)/(1+x(2)*exp(5*x(3)))-17.069;
jtj=J’*J;
f(6) = x(1)/(1+x(2)*exp(6*x(3)))-23.192;
res=norm(f)^2;
f(7) = x(1)/(1+x(2)*exp(7*x(3)))-31.443;
end
f(8) = x(1)/(1+x(2)*exp(8*x(3)))-38.558;
a=jtj+mu*eye(n);
f(9) = x(1)/(1+x(2)*exp(9*x(3)))-50.156;
s=a\(J’*f);
f(10) = x(1)/(1+x(2)*exp(10*x(3)))-62.948;
b=x-s;
f(11) = x(1)/(1+x(2)*exp(11*x(3)))-75.995;
f1=fx(b); res1=norm(f1)^2;
f(12) = x(1)/(1+x(2)*exp(12*x(3)))-91.972;
if res1<res
end
x=b; f=f1;
dnor=norm(s,inf)/norm(x,inf); k=k+1;
function J=derf(x)
fprintf(’%3.0f %15.10e %15.10e %15.10e’,...
global h
’%15.10e %15.10e %15.10e\n’,k,x,res1,mu,dnor);
J =zeros(12,3);
mu=mu/10; update=1;
J(1:12,1)=(fx([x(1)+h;x(2);x(3)])-fx([x(1)-h;x(2);x(3)]))/2/h;
else
J(1:12,2)=(fx([x(1);x(2)+h;x(3)])-fx([x(1);x(2)-h;x(3)]))/2/h;
mu=mu*10; update=0;
J(1:12,3)=(fx([x(1);x(2);x(3)+h])-fx([x(1);x(2);x(3)-h]))/2/h;
end
end
end
end

Cuadro 10.5

>> Levmar_99_1
1 2.3152737458e+001 1.8021498292e+001 -1.3632831505e+001 1.1044395775e+004 1.0000000000e-002 7.3518297019e-001
2 3.5521957325e+001 1.8106135944e+001 -1.2119438256e+001 9.2052245497e+003 1.0000000000e-002 3.4821335305e-001
. . .
16 1.9617433148e+002 4.9090128611e+001 -3.1357474036e-001 2.5872794922e+000 1.0000000000e-005 4.2870467197e-003
17 1.9618630640e+002 4.9091641090e+001 -3.1356969799e-001 2.5872773953e+000 1.0000000000e-006 6.1038510228e-005
18 1.9618621815e+002 4.9091635363e+001 -3.1356975593e-001 2.5872773953e+000 1.0000000000e-007 4.4983495179e-007
19 1.9618623975e+002 4.9091640103e+001 -3.1356974850e-001 2.5872773953e+000 1.0000000000e-002 1.1005699249e-007
>>

Cuadro 10.6

Un código un poquito más sofisticado, para mejorar la elección de , y el resultado que consigue, se listan en el
cuadro 10.7.

10.3.3 Método de Newton


Está basado en el método de Newton para resolver problemas de optimización sin condiciones, como lo es

i
m
1 1
minimizar f .x/ D ri2 .x/ D kr.x/k22 :
x2R n 2 2
iD1

Si la función es continua y tiene derivadas parciales hasta segundo orden continuas, el método se basa en el modelo
de f .x/ del desarrollo de Taylor hasta segundo orden de derivadas, es decir, en
1 
f .x C p/ D f .x/ C rf .x/T p C pT r 2 f .x/ p C O kpk3 :
2
En esta última expresión,
 T
@f .x/ @f .x/ @f .x/
rf .x/ D ::: ;
@x1 @x2 @xn
232 j Capítulo 10. Mínimos cuadrados no lineales

function [x k] = LevenbergMarquardt_2
global h
eta1=sqrt(eps); eta2=eta1; x=[10;1;1]; n = length(x); k=1; h=eta1;
f = fx(x); J = derf(x);
A = J’*J; g = J’*f; ng = norm(g,inf);
F = (f’*f)/2; mu = eta1 * max(diag(A)); nu = 2; stop = 0;
function f=fx(x)
f = zeros(12,1);
while ~stop
f(1) = x(1)/(1+x(2)*exp(x(3)))-5.308;
if ng <= eta2, stop = 1;
f(2) = x(1)/(1+x(2)*exp(2*x(3)))-7.24;
else
f(3) = x(1)/(1+x(2)*exp(3*x(3)))-9.638;
p = (A + mu*eye(n))\-g; np = norm(p,inf);
f(4) = x(1)/(1+x(2)*exp(4*x(3)))-12.866;
nx = eta2 + norm(x,inf);
f(5) = x(1)/(1+x(2)*exp(5*x(3)))-17.069;
if np <= eta2*nx, stop = 2; end
f(6) = x(1)/(1+x(2)*exp(6*x(3)))-23.192;
end
f(7) = x(1)/(1+x(2)*exp(7*x(3)))-31.443;
if ~stop
f(8) = x(1)/(1+x(2)*exp(8*x(3)))-38.558;
xnew = x + p;
f(9) = x(1)/(1+x(2)*exp(9*x(3)))-50.156;
fn = fx(xnew); Jn = derf(xnew);
f(10) = x(1)/(1+x(2)*exp(10*x(3)))-62.948;
Fn = (fn’*fn)/2;
f(11) = x(1)/(1+x(2)*exp(11*x(3)))-75.995;
dL = (p’*(mu*p - g))/2; dF = F - Fn;
f(12) = x(1)/(1+x(2)*exp(12*x(3)))-91.972;
if dL > 0 && dF > 0 % Se adapta x y mu
end
x = xnew; F = Fn; J = Jn; f = fn;
A = J’*J; g = J’*f; ng = norm(g,inf);
function J=derf(x)
mu = mu * max(1/3, 1-(2*dF/dL-1)^3);% Fórmula adapt. mu
global h
nu = 2;
J =zeros(12,3);
else
J(1:12,1)=(fx([x(1)+h;x(2);x(3)])-fx([x(1)-h;x(2);x(3)]))/2/h;
mu = mu*nu; nu = 2*nu;
J(1:12,2)=(fx([x(1);x(2)+h;x(3)])-fx([x(1);x(2)-h;x(3)]))/2/h;
end
J(1:12,3)=(fx([x(1);x(2);x(3)+h])-fx([x(1);x(2);x(3)-h]))/2/h;
k = k + 1;
end
dnor=norm(p,inf)/norm(x,inf);
fprintf(’%3.0f %12.5e %12.5e %12.5e %12.5e’...
’%12.5e %12.5e\n’,k,x,Fn,mu,dnor);
end
end
end

>> [X]=LevenbergMarquardt_2
2 1.00000e+001 1.00000e+000 1.00000e+000 6.09210e+007 3.20327e-007 3.21187e+002
3 1.00000e+001 1.00000e+000 1.00000e+000 6.05210e+007 1.28131e-006 3.20139e+002
4 1.00000e+001 1.00000e+000 1.00000e+000 5.82011e+007 1.02505e-005 3.13992e+002
. . .
45 1.96186e+002 4.90916e+001 -3.13570e-001 1.29364e+000 5.67150e-005 1.27412e-006
46 1.96186e+002 4.90916e+001 -3.13570e-001 1.29364e+000 4.53720e-004 1.25034e-006
47 1.96186e+002 4.90916e+001 -3.13570e-001 1.29364e+000 7.25951e-003 1.06488e-006
48 1.96186e+002 4.90916e+001 -3.13570e-001 1.29364e+000 2.32304e-001 3.00599e-007
X =
1.0e+002 *
1.961862713737317
0.490916428999001
-0.003135697293093

Cuadro 10.7

es el vector gradiente, y
2 3
@2 f .x/ @2 f .x/ @2 f .x/
6 @2 x1 
6 @x1 @x2 @x1 @xn 77
6 7
6 @2 f .x/ 2
@ f .x/ @ f .x/ 7
2
6 7
2 6  7
r f .x/ D 6 @x2 @x1 2
@ x2 @x2 @xn 7
6 :: :: :: :: 7
6 : 7
6 : : : 7
6 7
4 @2 f .x/ 2
@ f .x/ @ f .x/ 5
2

@xn @x1 @xn @x2 @2 xn

la matriz Hessiana: La matriz Jacobiana del vector gradiente. En el caso de la función f .x/ D 21 kr.x/k22 ,

m
X
rf .x/ D rj .x/rrj .x/ D J .x/T r.x/;
j D1
m
X m
X
r 2f .x/ D rrj .x/rrj .x/T C rj .x/r 2 rj .x/
j D1 j D1
10.3 Resolución numérica del problema j 233

m
X
D J .x/T J .x/ C rj .x/r 2 rj .x/:
j D1

La condición necesaria de óptimo, rf .x  / D 0, despreciando el término O kpk3 , conduce a un sistema lineal,
Ax D b, en este caso
rf .x/ C r 2 f .x/p D 0

cuya solución es la dirección de movimiento hacia el óptimo.


El algoritmo de Newton es el que sigue. Lo costoso es calcular la matriz Hessiana y resolver el sistema del Paso II.

I – Definir un x0 y condiciones de partida


II – Resolver el sistema lineal rf .x/ C r 2 f .x/ .x xk / D 0
III – Si x xk < T ol, parar: el problema está resuelto;
si no, hacer k D k C 1, xk D x e ir al paso II

El método de Gauss-Newton se puede ver como una modificación del de Newton con la simplificación r 2 f .x/ 
J T J y rf .x/ D J T r.x/:
Resolver por Newton el ajuste no lineal de e x1 Ctx2 , de antes, sería tan fácil como indica el cuadro 10.8. En él también
se recoge la function que calcula los datos de la función, el gradiente de ésta y la matriz Hessiana.

function LSQ_New_1(fx,x)
% Mínimos cuadrados Newton
tol=sqrt(eps); p=ones(2,1); [f grad Hess] = fx(x);
while abs(grad’*p)>tol
p=-Hess\grad; x=x+p;
[f grad Hess] = fx(x);
fprintf(’ %15.10e %15.10e %15.10e\n’,x,f);
end
end

function [f g H] = Newt_Ls(x)
f=(exp(x(1)-2*x(2))-0.5)^2+(exp(x(1)-x(2))-1.0)^2+(exp(x(1))-2.0)^2+(exp(x(1)+x(2))-4.0)^2;

g = [2*(exp(x(1)-2*x(2))-0.5)*exp(x(1)-2*x(2))+2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+...
2*(exp(x(1))-2)*exp(x(1))+2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2));...
-4*(exp(x(1)-2*x(2))-0.5)*exp(x(1)-2*x(2))-2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+...
2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2))];

H=[2*exp(x(1)-2*x(2))^2+2*(exp(x(1)-2*x(2))-1/2)*exp(x(1)-2*x(2))+2*exp(x(1)-x(2))^2+...
2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+2*exp(x(1))^2+2*(exp(x(1))-2)*exp(x(1))+...
2*exp(x(1)+x(2))^2+2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2)), ... % Coeficiente (1,1)
-4*exp(x(1)-2*x(2))^2-4*(exp(x(1)-2*x(2))-1/2)*exp(x(1)-2*x(2))-2*exp(x(1)-x(2))^2-...
2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+2*exp(x(1)+x(2))^2+2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2)); %Coef (1,2)
-4*exp(x(1)-2*x(2))^2-4*(exp(x(1)-2*x(2))-1/2)*exp(x(1)-2*x(2))-2*exp(x(1)-x(2))^2-...
2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+2*exp(x(1)+x(2))^2+2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2)),... %Coef (2,1)
8*exp(x(1)-2*x(2))^2+8*(exp(x(1)-2*x(2))-1/2)*exp(x(1)-2*x(2))+2*exp(x(1)-x(2))^2+ ...
2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+2*exp(x(1)+x(2))^2+2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2))]; %Coef (2,1)
end

>> LSQ_New_1(@Newt_Ls,[1;1])
8.1564455682e-001 8.6820863544e-001 2.0026578055e+000
7.3026817718e-001 7.4718705926e-001 1.5293213074e-001
6.9788477856e-001 6.9905288119e-001 1.9358782157e-003
6.9322068406e-001 6.9323478800e-001 4.3977229201e-007
6.9314719772e-001 6.9314720089e-001 2.3813689172e-014

Cuadro 10.8

Como se puede observar, la complicación de obtener la matriz Hessiana es muy considerable. Pero su cálculo se puede
llevar a cabo por diferencias finitas como se explicita en el cuadro 10.9. Para casos relativamente accesibles como el de
este ejemplo, se puede, con precaución, actuar como lo que se indica en el cuadro 10.10.
Por último, usando la potencia del cálculo simbólico de M ATLAB se puede conseguir algo como lo que se aprecia
en el cuadro 10.11. En él se incluye una sesión trivial para poner en evidencia sus prestaciones. Esta última es una
234 j Capítulo 10. Mínimos cuadrados no lineales

function LSQ_New_diff(fx,x) % Mínimos cuadrados Newton


global h
tol=sqrt(eps); p=ones(2,1); h=sqrt(eps); [f grad Hess]=fx(x);
while abs(grad’*p)>tol
p=-Hess\grad; x=x+p;
[f grad Hess] = fx(x);
fprintf(’ %15.10e %15.10e %15.10e\n’,x,f);
end
end

function [f g H] = Newt_Ls_1(x)
global h
f=(exp(x(1)-2*x(2))-0.5)^2+(exp(x(1)-x(2))-1.0)^2+(exp(x(1))-2.0)^2+(exp(x(1)+x(2))-4.0)^2;
if nargout<2, return, end
g = [2*(exp(x(1)-2*x(2))-0.5)*exp(x(1)-2*x(2))+2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+...
2*(exp(x(1))-2)*exp(x(1))+2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2));...
-4*(exp(x(1)-2*x(2))-0.5)*exp(x(1)-2*x(2))-2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+...
2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2))];
if nargout<3, return, end
x1=[x(1)+h;x(2)]; [f1 g1]=Newt_Ls_1(x1); H(1:2,1)=(g1-g)/h;
x1=[x(1);x(2)+h]; [f1 g1]=Newt_Ls_1(x1); H(1:2,2)=(g1-g)/h;
end

Cuadro 10.9

function LSQ_New_dif_1(x) % Mínimos cuadrados Newton


global h
tol=sqrt(eps); h=sqrt(eps)/norm(x); p=ones(2,1);
while abs(grad(x)’*p)>tol
>> LSQ_New_1(@Newt_Ls,[1;1])
p=-Hess(x)\grad(x); x=x+p;
8.1564455682e-001 8.6820863544e-001 2.0026578055e+000
fprintf(’ %15.10e %15.10e %15.10e\n’,x,fx(x));
7.3026817718e-001 7.4718705926e-001 1.5293213074e-001
end
6.9788477856e-001 6.9905288119e-001 1.9358782157e-003
end
6.9322068406e-001 6.9323478800e-001 4.3977229201e-007
6.9314719772e-001 6.9314720089e-001 2.3813689172e-014
function f=fx(x)
>> LSQ_New_diff(@Newt_Ls_1,[1;1])
f=(exp(x(1)-2*x(2))-0.5)^2+(exp(x(1)-x(2))-1.0)^2+...
8.1564455807e-001 8.6820863891e-001 2.0026578782e+000
(exp(x(1))-2.0)^2+(exp(x(1)+x(2))-4.0)^2;
7.3026818132e-001 7.4718706243e-001 1.5293215651e-001
end
6.9788478088e-001 6.9905288265e-001 1.9358796093e-003
6.9322068433e-001 6.9323478806e-001 4.3977415379e-007
function g=grad(x)
6.9314719772e-001 6.9314720089e-001 2.3817330783e-014
global h
>> LSQ_New_dif_1([1;1])
g=[(fx([x(1)+h,x(2)])-fx([x(1)-h,x(2)]))/(2*h);
8.4944340872e-01 8.7730513107e-01 2.7563553502e+00
(fx([x(1),x(2)+h])-fx([x(1),x(2)-h]))/(2*h)];
7.5875713784e-01 6.8293863250e-01 7.8534508448e-02
end
6.9908967430e-01 6.9134017676e-01 5.0043933563e-04
6.9320781375e-01 6.9312744209e-01 5.0431466984e-08
function H=Hess(x)
6.9314718697e-01 6.9314717816e-01 5.3057457678e-16
global h
H(1:2,1)=(grad([x(1)+h;x(2)])-grad(x))/h;
H(1:2,2)=(grad([x(1);x(2)+h])-grad(x))/h;
end

Cuadro 10.10

function LSQ_New_sym_2(x1,y1) % Mínimos cuadrados Newton


syms x y
tol=sqrt(eps); >> LSQ_New_sym_2(1,1)
f(x,y)=(exp(x-2*y)-0.5)^2+(exp(x-y)-1.0)^2+(exp(x)-2.0)^2+(exp(x+y)-4.0)^2; 8.1564455682e-01 8.6820863544e-01 2.0026578055e+00
gra=gradient(f,[x y]); hes=hessian(f,[x y]); 7.3026817718e-01 7.4718705926e-01 1.5293213074e-01
vec=-hes\gra; 6.9788477856e-01 6.9905288119e-01 1.9358782157e-03
while abs(gra(x1,y1)’*[x1;y1])>tol 6.9322068406e-01 6.9323478800e-01 4.3977229201e-07
xx=double(vec(x1,y1)); 6.9314719772e-01 6.9314720089e-01 2.3813689162e-14
x1=x1+xx(1); y1=y1+xx(2); 6.9314718056e-01 6.9314718056e-01 7.2279874085e-29
>>
fprintf(’ %15.10e %15.10e %15.10e\n’,x1,y1,double(f(x1,y1)));
end
end

Cuadro 10.11
10.3 Resolución numérica del problema j 235

aproximación un poco grosera, pero seguro que se puede estructurar un programa mucho mejor para sacar partido de las
posibilidades del método en si y del concurso de M ATLAB al respecto.

Referencias, fuentes y lecturas complementarias


Los ejemplos y análisis de los diversos aspectos de problemas que se plantean en sistemas eléctricos de generación y
transporte de energía eléctrica son del autor. Para profundizar más en ellos se pueden consultar Bergen [1986], Elgerd
[1983] y Grainger y Stevenson [1994].
Todos los programas de ordenador son del autor; alternativas a ellos se pueden encontrar en Atkinson, Harley y Hudson
[1989] y Press y otros [1986], [1992] y [1996].
Las referencias básicas sobre mínimos cuadrados no lineales, además de en Dennis y Schnabel [1983] y [1996], son las
de Björk [1990] y [1996]. Lo que hace referencia al estimador de máxima verosimilitud es estándar y se puede encontrar
en cualquier buen libro de estadística. Por ejemplo, Peña [1986].
236 j Capítulo 10. Mínimos cuadrados no lineales
Capítulo 11

Valores y vectores propios. Valores


singulares

Contenido
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.3 Método de la iteración inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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.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

A PARTE de que su conocimiento y estudio en muchas partes de las matemáticas es esencial, los valores y vectores
propios adquieren día a día una relevancia destacada para analizar asuntos de la vida cotidiana en los que están
presentes fenómenos como las oscilaciones y la resonancia. Su conocimiento es básico en:
Sistemas eléctricos de corriente alterna.
Modos de vibración natural de estructuras.
Instrumentos musicales.
Mecánica cuántica.
Lasers.
Resonancia Magnética Nuclear (NMR), etc.
238 j Capítulo 11. Valores y vectores propios. Valores singulares

Su cálculo e interpretación es esencial para muchas situaciones prácticas cotidianas, en especial para el análisis de
sistemas de generación, transporte y demanda de energía eléctrica a los que nos referimos recurrentemente en este libro
por ser el banco de pruebas más propicio para el autor de todos los algoritmos e ideas expuestos en él.

Simulation Models for System Components, Machines, Controllers and Control Units

Loadflow only Loadflow


Initial conditions Loadflow Operating point

Network in RST Single line network System components


Admittances by differential Complex admittances Linearization
equations non-linearities only fundamental frequency Coupling

Time range Time range Frequency range


Instantaneous values Quasi steady-state values all system-variables Eigenvalue analysis
ns...µs...ms...s s...min

Electromagnetic and Electromechanical Loadflow for special Small-signal Systemoscillation


electromechanical phenomena, requirements, e.g. characteristics and -damping,
phenomena, complete fundamental homogeneous multi- Network, machines Netreduction,
solution frequency conductor system and control Controller layout

Uno de los casos históricos en los que la errónea consideración de la importancia de los valores propios dio lugar a
una importante catástrofe se puede consultar en:
Hundimiento del Puente Tacoma 1, Washington, EE.UU.
Hundimiento del Puente Tacoma 2, Washington, EE.UU.
No obstante, la superación de los mismos ha dado lugar en la situación actual a esta maravilla de la ingeniería y la
técnica:
11.1 Principios teóricos y algunas propiedades de los valores y vectores propios j 239

11.1 Principios teóricos y algunas propiedades de los valores y


vectores propios
En general, los vectores propios de un operador matemático1 lineal T son los vectores no nulos que cuando son transfor-
mados por el operador dan lugar a un múltiplo escalar de sí mismos (no cambian su dirección): T .v/ D v. Ese escalar,
, se denomina valor propio.
En el caso habitual de que ese operador lo caracterice una matriz, la formulación de su cálculo es esta:

Dada una matriz A 2 Cnn , calcular un escalar  y un x ¤ 0 tales que


Ax D x:

El escalar  es un valor propio de A y x su correspondiente vector propio. Siempre existen n valores propios de
A 2 Cnn , reales o complejos. No siempre existen n vectores propios.
Para que exista una solución distinta de la trivial x D 0 el valor propio  deberá ser raíz del polinomio característico
de grado n asociado a A, es decir,
det.A I/ D 0:
Lo que es igual a n g1 n 1 C g2 n 2    C . 1/n gn D 0:
Igual que cualquier matriz tiene asociado un polinomio característico, cualquier polinomio tiene asociado una matriz
compañera. La matriz compañera de un polinomio mónico p.t/ D c0 C c1 t C    C cn 1 t n 1 C t n es
2 3
0 0 ::: 0 c0
61 0 ::: 0 c1 7
6 7
6 7
C .p/ D 60 1 ::: 0 c2 7:
6 :: :: :: :: :: 7
4: : : : : 5
0 0 ::: 1 cn 1

Los valores propios de esta matriz C .p/ son las raíces del polinomio p.t/.
El polinomio mínimo q.t/ de la matriz A es el polinomio mónico único de grado mínimo tal que q.A/ D 0. Los
vectores propios de A pertenecen al subespacio nulo de Ax I, ker.Ax I/, y no están unívocamente determinados:
Si v es un vector propio, ˛v también lo es.
La multiplicidad algebraica del valor propio  de A es la multiplicidad de la raíz correspondiente del polinomio ca-
racterístico asociado a A. La multiplicidad geométrica de  es el número de vectores propios linealmente independientes
que se corresponden con .
Teorema 11.1 La multiplicidad geométrica de un valor propio es menor o igual que su multiplicidad algebraica.
Por ejemplo, si A D I,  D 1 es un valor propio con multiplicidad algebraica y geométrica n. El polinomio caracte-
rístico de A es p.z/ D .z 1/n y ei 2 Cn , i D 1; : : : ; n, sus vectores propios.
Si el valor propio  tiene una multiplicidad geométrica menor que la algebraica, se dice defectuoso. Se dice que una
matriz es defectuosa si tiene al menos un valor propio defectuoso. Si una matriz A 2 Cnn no es defectuosa dispone de
n vectores propios linealmente independientes. La matriz
2 3
210
A D 40 2 15
002

tiene un valor propio de multiplicidad algebraica 3 y multiplicidad geométrica 1. En el cuadro 11.1 se ve a través de una
sesión de M ATLAB.
Si V 2 Cnn tiene como vectores columna los n vectores propios de A y D D diag.1 ; : : : ; n /, entonces Avi D
i vi , i D 1; : : : ; n, es equivalente a AV D V D. Si A no es defectuosa,
1
A D V DV
1 Transformación lineal u aplicación lineal de un espacio vectorial V en si mismo. Ej. la ecuación de Schrödinger H E DE E.
7KXV IRU ODUJH k D VFDODU PXOWLSOH RI Ak [ GHWHUPLQHV DOPRVW WKH VDPH GLUHFWLRQ DV WKH
HLJHQYHFWRU c1 Y1 6LQFH SRVLWLYH VFDODU PXOWLSOHV GR QRW FKDQJH WKH GLUHFWLRQ RI D YHFWRU
Ak [ LWVHOI SRLQWV DOPRVW LQ WKH VDPH GLUHFWLRQ DV Y1 RU Y1 SURYLGHG c1 ¤ 0
     
1:8 :8 4
240 j Capítulo 11. Valores y vectores propios. Valores singulares
:5
&9".1-&  /HW A D Y1 D DQG [ D 7KHQ A KDV
:2 1:2 1 1
HLJHQYDOXHV DQG DQG WKH HLJHQVSDFH
>> A=[2 1 0;0 IRU D 2 LV WKH OLQH WKURXJK DQG Y1 )RU
2 1;0012];
k
k D 0; : : : ; 8 FRPSXWH A [ DQG VFRQVWUXFW
= WKH OLQH WKURXJK DQG Ak [ :KDW KDSSHQV DV
>> [V D]=eig(A)

1.0000 -1.0000 1.0000


k LQFUHDVHV" 0 0.0000 -0.0000
0 0 0.0000
D =
40-65*0/ 7KH ÀUVW WKUHH FDOFXODWLRQV 2 0DUH 0
0 2 0    
0 1:8
0 2 :8 :5 :1
A[ D D
:2 1:2
Cuadro 11.1
1 1:1
    
2 1:8 :8 :1 :7
[ D propios
que es la descomposición enAvalores A.A[de /D A: o A:2
diagonalizada V . D 1:3
1:2 por 1:1
Definición 11.1 Una matriz A se dice diagonalizable por semejanza  si essemejante
 a una
 matriz diagonal.
3 2 1:8 :8 :7 2:3
Teorema 11.2 Una matrizA A[ 2C DnnA.A [/ D
es diagonalizable D propios linealmente independientes.
si y sólo si tiene n vectores
:2 1:2 1:3 1:7
Definición
$QDORJRXV 11.2 FDOFXODWLRQV se dicen semejantes si existe una matriz invertible P tal que A D
B 2 Cnn7DEOH
Dos matrices A;FRPSOHWH
1
P BP.

Teorema
5"#-& 11.3
 Dos matrices PG
*UFSBUFT semejantes
B 7FDUPStienen el mismo polinomio característico y, por consiguiente, los mismos
valores propios.
k
Definición 
11.3 Elespectro
 de  esel conjunto
 A,ƒ.A/,  de sus valores
 propios:
      
k :5 :1 :7 2:3 5:5 11:9 24:7 50:3 101:5
A [ ƒ.A/ D f 2 C W det.A I/ D 0g:
1 1:1 1:3 1:7 2:5 4:1 7:3 13:7 26:5
Definición 11.4 El radio espectral, .A/, de la matriz A es el valor máximo de los módulos de sus valores propios:
.A/ D max.i 2ƒ.A/ ji j:
Es el radio 4
7KHdelYHFWRUV
menor círculo
[ Adel
[; plano
:::;A [ DUHcentrado
complejo VKRZQenLQel )LJ
origen que7KH
contiene todosYHFWRUV
RWKHU sus valores
DUHpropios.
JURZLQJ
WRR
Al ORQJ WRa GLVSOD\
aplicársele +RZHYHU
cualquier vector OLQH VHJPHQWV
la transformación DUH GUDZQ
que representa A, ese VKRZLQJ WKH
vector tiende GLUHFWLRQV
a orientarse haciaRIlaWKRVH
dirección
delYHFWRUV
vector propio dominante de A. Si ese vector está en la dirección de alguno de los vectores
,Q IDFW WKH GLUHFWLRQV RI WKH YHFWRUV DUH ZKDW ZH UHDOO\ ZDQW WR VHH QRW WKH YHF propios de A, se expande
o contrae por un factor que determina el correspondiente valor propio.
WRUV WKHPVHOYHV 7KH OLQHV VHHPWR EH DSSURDFKLQJ WKH OLQH UHSUHVHQWLQJ WKH HLJHQVSDFH
Ejemplo
VSDQQHG 11.1 E\
Estudiemos
Y1 0RUH la matriz A D 1;8 WKH0;8 cuyosEHWZHHQ
valores propios son 1VXEVSDFH
D 2 y 2 D 1. El vector propio
 4  SUHFLVHO\ 0;2 1;2DQJOH WKH OLQH  0;5  GHWHUPLQHG E\
correspondiente
Ak [ DQG WKH a OLQH 1 . Si se multiplica
1 es HLJHQVSDFH A y sus potencias
GHWHUPLQHG E\ Y1 JRHV ]HURxDVDk !1 1el resultado es el de la
por elWRvector
figura 11.1.

x2

A4 x
Ax A3x
A2 x Espacio de v1

x 1 v1
x1
1 4 10
Figura 11.1: Efecto de multiplicar una matriz A de vector propio dominante v1 , y sus potencias, por un vector x
'*(63&  'LUHFWLRQV GHWHUPLQHG E\ [ A[ A2 [; : : : ; A7 [

7KH YHFWRUV .1 / k Ak [ LQ DUH VFDOHG WR PDNH WKHP FRQYHUJH WR c1 Y1 SURYLGHG


k
c1 ¤ 0 :H FDQQRW VFDOH A [ LQ WKLV ZD\ EHFDXVH ZH GR QRW NQRZ 1 %XW ZH FDQ VFDOH
HDFK Ak [ WR PDNH LWV ODUJHVW HQWU\ D ,W WXUQV RXW WKDW WKH UHVXOWLQJ VHTXHQFH f[k g ZLOO
FRQYHUJH WR D PXOWLSOH RI Y1 ZKRVH ODUJHVW HQWU\ LV )LJXUH VKRZV WKH VFDOHG VHTXHQFH
11.1 Principios teóricos y algunas propiedades de los valores y vectores propios j 241

       
10 1 0 1;5 0;5
Ejemplo 11.2 Otros ejemplos. Si A D , 1 D 1; x1 D ; 2 D 2 y x2 D : Si A D ,
02 0 1 0;5 1;5
         
1 1 01 1 i
1 D 2; x1 D ;  2 D 1 y x2 D : Si A D , 1 D i; x1 D ; 2 D i y x2 D , donde
1 1 10 i 1
p
iD 1.

Teorema 11.4 La suma de los valores propios de A es igual a su traza:


X n
1 C 2 C    C n D ai i :
iD1

Teorema 11.5 El producto de los valores propios de A es igual a su determinante.

Teorema 11.6 Los valores propios de una matriz triangular son los coeficientes de su diagonal principal.

Teorema 11.7 Una matriz es singular si y sólo si tiene un valor propio igual a 0.

Teorema 11.8 Si los valores propios de una matriz A son i , 1  i  n, los de A ˛I son i ˛; 1  i  n. Sus
vectores propios son idénticos.

Teorema 11.9 Los valores propios de las potencias de A son las potencias de los de A; los vectores propios son los
mismos.
Demostración. Si consideramos la definición,

Ax D xI A 2 x D Ax D 2 xI    A n x D n x
S 1
AS D ƒI S 1
ASS 1
AS D ƒ2 ) S 1
A 2 S D ƒ2 :
1 1 1 1
Las potencias negativas también, Ax D xI A Ax D A x ) A xD x:

Corolario 11.10 Los valores propios de A 1


son los recíprocos de los de A.
Los valores propios de multiplicidad m > 1 tienen un subespacio propio asociado de dimensión  m. Ese subespacio
es invariante —si para todo vector w 2 W se cumple que f .w/ 2 W — por lo que:
Todos los vectores de un subespacio propio son vectores propios.
Los subespacios propios correspondientes a valores propios distintos sólo tienen en común el vector nulo.
El problema de calcular los valores y vectores propios es en general un problema no lineal en los valores propios  y
lineal en los vectores x. El cálculo de los valores propios por las raíces del polinomio característico no es aconsejable
(en absoluto) por:
El trabajo de determinar los coeficientes y raíces del polinomio.
La sensibilidad a erroresde redondeo
 de los coeficientes del polinomio (recordemos los polinomios de Wilkinson).
p
Si consideremos la matriz 1 1 , donde  es cualquier número menor que maq: K , los valores propios exactos de A
son 1 C  y 1 . El cálculo mediante el polinomio característico haría

det.A I/ D 2 2 C .1  2 / D 2 2 C 1I

las raíces serían (valores propios calculados) 1 y 1.

11.1.1 Valores propios de matrices destacadas


Ortogonales Recordemos que estas matrices son aquellas que tienen como inversa su traspuesta:

QQT D I:
242 j Capítulo 11. Valores y vectores propios. Valores singulares

Las matrices     " p p #


01 1 0 p 2=2 p2=2
; ; :
10 0 1 2=2 2=2
son ortogonales.
Todos los valores propios de una matriz ortogonal tienen módulo unidad.
Hermíticas Son aquellas matrices iguales a su traspuesta conjugada:

A D AH :

Son una generalización de las matrices simétricas al campo complejo.


La matriz  
1 1Ci
1 i 2
es hermítica.
Si A es hermítica, el producto x H Ax es un número real.
Los valores propios de una matriz hermítica, en consecuencia, son números reales. En efecto
H H
Ax D xI x Ax D x
– x D  jjxjj2

2

2
R

R
En una matriz hermítica los vectores propios correspondientes a dos valores propios distintos son ortogonales
entre sí. En efecto,
 )
Ax1 D 1 x1 x2H A H x1 D 1 x2H x1
.1 2 /x2H x1 D 0:
Ax2 D 2 x2 x2H A H x1 D 2 x2H x1

Como los valores propios 1 y 2 son distintos,

x2H x1 D 0:

Si los vectores propios se normalizan, x H x D 1, la matriz de vectores propios se convierte en una matriz
ortogonal.
Unitarias Son matrices cuya inversa es su compleja conjugada:

U H U D U U H D I:

La matriz " p p #
i p2=2 p 2=2
2=2 i 2=2
es unitaria.
Las matrices unitarias son una extensión de las matrices ortogonales al campo complejo. Todos los valores
propios tienen módulo unidad.
Una matriz unitaria no modifica ni los ángulos ni las normas:

.U x/H .U y/ D x H U H U y D x H y
si y D x; jjU xjj2 D jjxjj2 :

Normales Son las matrices A que cumplen AAH D AH A:


Las matrices 2 3
120  
40 1 25 y i 0
0 3 5i
201
son normales.
11.2 Localización de valores propios j 243

11.1.2 Triangularización de Schur


Se debe a Issai Schur, Alemania, 1875-1941.

Schur

Teorema 11.11 Triangularización de Schur. Para cualquier A 2 Cnn existe una matriz unitaria U y una triangular
superior T tales que
U H AU D T :
Los valores propios de A son entonces los coeficientes de la diagonal principal de T .

Teorema 11.12 Para cualquier matriz hermítica A 2 Cnn existe una unitaria U tal que
U H AU D D;
donde D es una matriz diagonal. Además, los valores propios de A son números reales y se pueden obtener vectores
propios de A que sean ortonormales.

Corolario 11.13 Si A 2 Rnn es simétrica, existe una matriz ortogonal Q y una diagonal D tales que QT AQ D D.

Teorema 11.14 Los valores propios de una matriz hermítica definida positiva son todos positivos. Recíprocamente, si
todos los valores propios de una matriz son positivos, debe ser definida positiva.

Teorema 11.15 Forma canónica de Jordan. Para una matriz A 2 Cnn existe una matriz T regular tal que
2J 3
1
6  0 7
T 1 AT D J D 6 4
::
:
7;
5
0 
Jn
donde 2 3
i 1
6 i 1  0 7
Ji D 64  7 5
0  1
i
es una matriz de Jordan y los i son los valores propios de A.
La matriz de Jordan lleva ese nombre por Marie Ennemond Camille Jordan, Francia, 1838-1922.

Jordan

Para el cálculo numérico de valores y vectores propios las transformaciones por semejanza juegan un papel esencial.
La tabla del cuadro 11.2 resume las posibles transformaciones por semejanza.
244 j Capítulo 11. Valores y vectores propios. Valores singulares

A T BDT 1 AT

Valores propios distintos Regular Diagonal


Simétrica real Ortogonal Diagonal real
Hermítica compleja Unitaria Diagonal real
Normal Unitaria Diagonal
Real cualquiera Ortogonal Triangular en bloques (real)
Cualquiera Unitaria Triangular superior (Schur)
Cualquiera Regular Casi diagonal (Jordan)

Cuadro 11.2

11.2 Localización de valores propios


Si no se necesita calcular el valor numérico exacto de los valores propios, sino conocer grosso modo dónde se en-
cuentran en el plano complejo, existen varias formas de hacerlo. La más simple surge de tomar normas en la expresión
Av D v:
jjjjvjj D jjvjj D jjAvjj  jjAjjjjvjj ) jj  jjAjj;
para cualquier norma matricial inducida por una norma vectorial. Por consiguiente, los valores propios de una matriz se
localizan en el plano complejo, dentro del circulo centrado en el origen de radio jjAjj.
Veamos ahora un teorema muy práctico para localizar valores propios. Es debido a Semyon Aranovich Gers̆gorin,
Rusia, 1901-1933.

Gers̆gorin

Teorema 11.16 Gers̆gorin. Los valores propios de una matriz A 2 Cnn se encuentran en la unión de los n discos de
Gershgorin, cada uno de los cuales está centrado en akk , k D 1; : : : ; n, y tiene de radio
Xn
rk D jakj j
j D1
j ¤k

Demostración. Sea  un valor propio de A y x su vector propio asociado. De Ax D x y .I A/x D 0 se tiene que
n
X
. akk /xk D akj xj ; k D 1; : : : ; n;
j D1
j ¤k

donde xk es el componente k-ésimo del vector x.


Si xi es el coeficiente de x más grande en valor absoluto, como jxj j=jxi j  1 para j ¤ i, se tiene que
n
X n
jxj j X
j ai i j  jaij j  jaij j:
jxi j
j D1 j D1
j ¤i j ¤i

Luego  está contenido en el disco f W j ai i j  ri g.

El programa de M ATLAB del cuadro 11.3 calcula los círculos o discos de Gershgorin y los dibuja.
246 j Capítulo 11. Valores y vectores propios. Valores singulares

gersh(gallery(’lesp’,12)) gersh(gallery(’hanowa’,10))
20
5

10

0 0

−10

−5
−20
−40 −30 −20 −10 0 −5 0 5

gersh(gallery(’ipjfact’,6,1)) gersh(gallery(’smoke’,16,1))
0.5
2

0 0

−1

−2
−0.5
−0.2 0 0.2 0.4 0.6 0.8 −2 −1 0 1 2

Figura 11.2

Utiliza transformaciones por semejanza basadas en rotaciones, idénticas a las de Givens, para hacer cero pares de
elementos simétricamente dispuestos respecto a la diagonal principal.
Partiendo de A0 D A, cada iteración conforma una transformación
AkC1 D J Tk Ak J k ;
 
c s
donde cada matriz J k D se calcula de tal manera que
sc
2 3
    c 2 app 2csapq C s 2 aqq apq .c 2 s 2 / C cs.app aqq /
c s app apq c s 6 7
D4 5
s c apq aqq sc
apq .c 2 s 2 / C cs.app aqq / c 2 aqq C 2csapq C s 2 app

sea diagonal. Para lograrlo, apq .c 2 s 2 / C cs.app aqq / ha de ser cero. Haciendo
aqq app
D y t D s=c; tangente del ángulo de rotación,
2apq
se obtiene la ecuación de segundo grado
t 2 C 2 t 1 D 0:
De las dos posibles raíces, p
tD ˙ 1 C  2;
p
se escoge la más pequeña para que jj  =4. Luego se obtienen c D 1= 1 C t 2 y s D c  t. En M ATLAB todo esto
puede codificarse como lista el cuadro 11.4.
Mediante unos “barridos”, que apliquen sistemáticamente estas transformaciones a todos los coeficientes que no estén
en la diagonal principal de la matriz que tengan un valor mayor que una tolerancia, se conseguirá ir convirtiendo la
matriz en una diagonal.
La convergencia del proceso es cuadrática. El proceso termina cuando
qX X n n
2
off .A/ D aij > tol  kAkF :
iD1 j D1
j ¤i
11.3 Obtención numérica de los valores y vectores propios j 247

function J=Jac_Rot(A,b,d)
% Cálculo de la rotación de Jacobi para anular un coef. de A de coordenadas (b,d)
if A(b,d)~=0
tau=(A(d,d)-A(b,b))/2/A(b,d);
if tau>=0
t=1/(tau+sqrt(1+tau^2));
else t=-1/(-tau+sqrt(1+tau^2)); end
c=1/sqrt(1+t^2);
s=c*t;
else
c=1; s=0;
end
J=[c s; -s c]; % Igual que Givens
end

Cuadro 11.4

Ejemplo 11.4 Sea


2 3
102
A0 D 40 2 15 :
211
Apliquémosle el método de Jacobi.
Para empezar, anulemos los coeficientes .1; 3/ y .3; 1/. Con ese fin, definamos la rotación
2 3
0;707 0 0;707
J0 D 4 0 1 0 5
0;707 0 0;707
y hagamos
2 3
3 0;707 0
A1 D J T0 A0 J 0 D 4 0;707 2 0;707 5 :
0 0;707 1
A continuación, anulemos .1; 2/ y .2; 1/ mediante la rotación
2 3
0;888 0;460 0
J 1 D 4 0;460 0;888 0 5
0 0 1
y hagamos
2 3
3;366 0 0;325
A2 D J T1 A1 J 1 D 4 0 1;634 0;628 5 :
0;325 0;628 1
Luego anulamos el .3; 2/ y el .2; 3/ usando la rotación
2 3
1 0 0
J 2 D 4 0 0;975 0;226 5
0 0;226 0;975
y haciendo
2 3
3;366 0;0735 0;317
A3 D J T2 A2 J 2 D 4 0;0735 1;780 0 5:
0;317 0 1;145
Comenzando un nuevo “barrido”, hagamos cero los coeficientes .1; 3/ y .3; 1/. Usaremos la rotación
2 3
0;998 0 0;070
J3 D 4 0 1 0 5
0;070 0 0;998
248 j Capítulo 11. Valores y vectores propios. Valores singulares

y luego
2 3
3;388 0;0733 0
A4 D J T3 A3 J 3 D 4 0;0733 1;780 0;0051 5 :
0 0;0051 1;167
El proceso continuaría hasta llegar a conseguir una aproximación a los valores propios deseados.
El código de M ATLAB programado para poder calcular una rotación de Jacobi 2  2 y aplicarla luego a la matriz
original completa, pre y post multiplicándola, es el del cuadro 11.5.

function J=jacrot(A,i,j)
% Transf. de Jacobi del coeficiente (i,j) y (j,i) de A
n=length(A);
J1=Jac_Rot(A,i,j); J=eye(n); % Calcula qué rotación 2x2 elemental aplicar
J([i j],[i j])=J1([1 2],[1 2]); % Se adapta a la propia A
end

function J=Jac_Rot(A,b,d)
% Cálculo de rotación de Jacobi 2x2 en la matriz A.
if A(b,d)~=0
tau=(A(d,d)-A(b,b))/2/A(b,d);
if tau>=0
t=1/(tau+sqrt(1+tau^2));
else t=-1/(-tau+sqrt(1+tau^2)); end
c=1/sqrt(1+t^2);
s=c*t;
else
c=1; s=0;
end
J=[c s; -s c]; % Igual que Givens
end

Cuadro 11.5

Hagamos ahora a mano, con la ayuda de M ATLAB, un ejercicio con una matriz simétrica aleatoria 44, y comprobemos
cómo evolucionan las distintas rotaciones de Jacobi. El resultado completo se puede ver en el cuadro 11.6. Conjuntando
todo lo expuesto en un programa de M ATLAB para realizar el proceso de Jacobi se llega al cuadro 11.7 de la página 250.
Probándolo con el ejemplo que hemos hecho paso a paso se obtiene lo del cuadro 11.8. Una sesión de M ATLAB con la
matriz de la sesión interactiva anterior hecha a mano es la que muestra el cuadro 11.9.

11.3.2 Método de la iteración de la potencia


Su objetivo es calcular el valor propio dominante de una matriz A, y su vector propio asociado. Se basa en que al aplicarle
a cualquier vector la transformación que representa esa matriz A, ese vector tiende a orientarse hacia la dirección del
vector propio dominante de A.
Partiendo de un x0 de módulo unidad, opera mediante una iteración de punto fijo de fórmula de recurrencia
yk 1
yk 1 D Axk 1; donde xk D :
jjyk 1 jj1

La magnitud jjyk 1 jj1 converge al valor propio dominante, 1 , y el vector xi lo hace al vector propio dominante, v1 .
La convergencia de este método está ligada a j2 =1 j : a menor valor mejor convergencia.

Ejemplo 11.5 Partiendo de x0T D Œ0; 1, calculemos el valor propio dominante de
 
1;5 0;5
:
0;5 1;5

Utilicemos una pequeña sesión de M ATLAB como la del cuadro 11.10 de la página 251. Los resultados y el comporta-
miento gráfico de las iteraciones se ven en ese cuadro. El punto inicial
11.3 Obtención numérica de los valores y vectores propios j 249

>> A=rand(4); >> off(A)


>> A=A+A’ ans =
A = 0.2845
1.7818 1.1086 1.3615 0.3352 >> % Desde
1.1086 0.5150 1.0842 0.5054 >> of1
1.3615 1.0842 1.8585 0.9660 of1 =
0.3352 0.5054 0.9660 0.9466 3.1996
>> % Anulemos el coeficiente (1,2) >> % Otro barrido
>> J=jacrot(A,1,2); A=J’*A*J >> J=jacrot(A,1,2); A=J’*A*J
A = A =
2.4252 0.0000 1.7218 0.5436 4.3202 -0.0000 0.1580 0.0270
0.0000 -0.1284 0.2544 0.2688 -0.0000 -1.3369 -0.0502 0.0230
1.7218 0.2544 1.8585 0.9660 0.1580 -0.0502 -0.5132 0
0.5436 0.2688 0.9660 0.9466 0.0270 0.0230 -0.0000 -0.7836
>> % Ahora el (1,3) >> J=jacrot(A,1,3); A=J’*A*J
>> J=jacrot(A,1,3); A=J’*A*J A =
A = 4.3254 -0.0016 -0.0000 0.0270
3.8868 0.1646 0.0000 1.0396 -0.0016 -1.3369 -0.0501 0.0230
0.1646 -0.1284 0.1939 0.2688 -0.0000 -0.0501 -0.5183 -0.0009
0.0000 0.1939 0.3969 0.3847 0.0270 0.0230 -0.0009 -0.7836
1.0396 0.2688 0.3847 0.9466 >> J=jacrot(A,1,4); A=J’*A*J
>> % El (1,2) se ha hecho distinto de cero; el (1,4) A =
>> J=jacrot(A,1,4); A=J’*A*J 4.3255 -0.0015 -0.0000 -0.0000
A = -0.0015 -1.3369 -0.0501 0.0230
4.2172 0.2383 0.1165 0 -0.0000 -0.0501 -0.5183 -0.0009
0.2383 -0.1284 0.1939 0.2063 0.0000 0.0230 -0.0009 -0.7838
0.1165 0.1939 0.3969 0.3666 >> J=jacrot(A,2,3); A=J’*A*J
-0.0000 0.2063 0.3666 0.6161 A =
>> % Ahora el (2,3) 4.3255 -0.0015 0.0001 -0.0000
>> J=jacrot(A,2,3); A=J’*A*J -0.0015 -1.3400 0.0000 0.0229
A = 0.0001 -0.0000 -0.5153 -0.0023
4.2172 0.1899 0.1852 0 0.0000 0.0229 -0.0023 -0.7838
0.1899 -0.1922 -0.0000 0.0814 >> J=jacrot(A,2,4); A=J’*A*J
0.1852 -0.0000 0.4607 0.4127 A =
-0.0000 0.0814 0.4127 0.6161 4.3255 -0.0015 0.0001 -0.0001
>> % El (2,4) -0.0015 -1.3409 0.0001 0
>> J=jacrot(A,2,4); A=J’*A*J 0.0001 0.0001 -0.5153 -0.0023
A = -0.0001 -0.0000 -0.0023 -0.7828
4.2172 0.1890 0.1852 0.0188 >> J=jacrot(A,3,4); A=J’*A*J
0.1890 -0.2003 -0.0409 -0.0000 A =
0.1852 -0.0409 0.4607 0.4107 4.3255 -0.0015 0.0001 -0.0001
0.0188 0.0000 0.4107 0.6243 -0.0015 -1.3409 0.0001 0.0000
>> % El (3,4) 0.0001 0.0001 -0.5152 0
>> J=jacrot(A,3,4); A=J’*A*J -0.0001 0.0000 -0.0000 -0.7829
A = >> eig(A) % Casi ha convergido en dos barridos
4.2172 0.1890 0.1312 0.1320 ans =
0.1890 -0.2003 -0.0316 -0.0260 4.3255
0.1312 -0.0316 0.1237 0.0000 -1.3409
0.1320 -0.0260 -0.0000 0.9612 -0.5152
>> % Después de un barrido el valor de off(A) se ha reducido -0.7829

Cuadro 11.6

     
0 1 1
x0 D D1 C1
1 1 1

es una combinación lineal de los dos vectores propios v1 y v2 . La multiplicación sucesiva por A causa que el coeficiente
en el primer vector propio sea el que domine, por lo que la sucesión converge a ese vector propio.
El método de la iteración de la potencia puede fallar por diversas razones:
Porque haya más de un valor propio con el mismo módulo, en cuyo caso las iteraciones puede que converjan a una
combinación lineal de los correspondientes vectores propios. Este caso es bastante habitual pues esos dos valores
propios pueden ser un par complejo conjugado.
Porque el vector de partida puede que tenga coeficiente cero en el valor propio dominante. El error de redondeo en
la práctica puede que introduzca un pequeño valor, por lo que este peligro rara vez ocurre.
Porque para una matriz real y un punto de partida también real, puede que nunca se converja a un vector complejo.
Un código de M ATLAB para llevar a cabo el método de la potencia puede ser el del cuadro 11.11. Su utilización en
una sesión de M ATLAB para la matriz A de antes se adjunta en ese mismo cuadro.

11.3.2.1 Mejora del método: desplazamiento


ˇ ˇ ˇ ˇ
ˇ ˇ ˇ ˇ
Mediante un desplazamiento , en A I es posible hacer que ˇ 21  ˇ  ˇ 12 ˇ, y que, por lo tanto, la velocidad de
convergencia aumente. La solución del problema original resultará de añadir  al valor obtenido.
250 j Capítulo 11. Valores y vectores propios. Valores singulares

function [V D it]=Jacobi_val_12_2(A)
% Cálculo por Jacobi de valores y vectores propios de una MATRIZ SIMÉTRICA A
tol=sqrt(eps)*norm(A,’fro’); D=A; n=length(A); V=eye(n);
[m1 p]=max(triu(abs(D),1)); % En (p,q) elemento mayor valor no en diagonal
[~, q]=max(m1); % Posición fila máximo valor no cero en L(A)
p=p(q); it=0; % Posición columna máximo anterior
while off(D)>tol % Procesos iterativo; necesita rutina off
J=Jac_Rot(D,p,q); % Se hacen cero Dpq y Dqp (p debe ser < q)
D([p q],:)=J’*D([p q],:);
D(:,[p q])=D(:,[p q])*J;
V(:,[p q])=V(:,[p q])*J;
[m1 p]=max(triu(abs(D),1));
[~, q]=max(m1);
p=p(q);
it=it+1;
end
[D I]=sort(diag(D)); V=V(:,I);
end

function a=off(A)
% Calcula off de la matriz cuadrada A: raiz cuadrada de la suma
% de los cuadrados de los coeficientes de A no en la
% diagonal principal; también sqrt(sum(sum(triu(a.^2,1)))).
n=length(A); a=0;
for k=1:n-1
a=a+sum(A(k,k+1:n).^2);
end
a=sqrt(a);
end

Cuadro 11.7

>> A=[1 0 2;0 2 1;2 1 1];


>> [v d it]=Jacobi_val_12_2(A)
>> [V D]=eig(A)
v =
V =
0.6611 -0.4973 0.5618
-0.6611 -0.4973 -0.5618
0.2261 0.8460 0.4828
-0.7154 -0.1922 0.6718
-0.2261 0.8460 -0.4828 La aproximación que hicimos iterando un
0.7154 -0.1922 -0.6718
d =
D = par de “barridos” era bastante buena.
-1.1642
-1.1642 0 0
1.7729
0 1.7729 0
3.3914
0 0 3.3914
it =
8

Cuadro 11.8

>> [v d it]=Jacobi_val_12_2(A)
v = >> [v d]=eig(A)
-0.3673 0.3703 -0.6272 0.5785 v =
0.9032 0.1289 -0.0831 0.4009 0.3673 -0.3703 0.6272 0.5785
-0.1590 -0.7022 0.2688 0.6399 -0.9032 -0.1289 0.0831 0.4009
-0.1549 0.5944 0.7263 0.3086 0.1590 0.7022 -0.2688 0.6399
d = 0.1549 -0.5944 -0.7263 0.3086
-0.2134 d =
0.1238 -0.2134 0 0 0
0.9569 0 0.1238 0 0
4.2346 0 0 0.9569 0
it = 0 0 0 4.2346
16 >> A*v-v*d
>> A*v-v*diag(d) ans =
ans = 1.0e-014 *
1.0e-010 * -0.0222 -0.0444 -0.0333 -0.0444
-0.0096 0.3780 0.0061 0.2292 -0.0056 0.0097 -0.0305 -0.0444
-0.0034 0.2318 0.0042 0.0812 -0.0479 0.0180 -0.0444 -0.1332
0.0183 0.4117 0.0067 -0.4444 -0.0069 -0.0083 -0.0111 0
-0.0155 0.2006 0.0032 0.3862

Cuadro 11.9
Geometric Interpretation
11.3 Obtención numérica de los valores y vectores propios j 251

k xkT jjxk jj1


Behavior of power iteration depicted geomet-
>> x=[0;1];
0 0,0 1,0 A=[1.5 0.5;0.5 1.5]; rically:
for i=1:10 ....... x..0 x..1 x...2 x...3...x 4....
1 0,333 1,0 1,5000 1.0 .... ...... ...... . .. .. ..
...... .... .... ....
v=A*x, m=max(abs(v)), x=v/m ... . .. ... ... .... ...
2 0,600 1,0 1,6667 end v 2 ..... ...
. .
..
. .... .................... v 1
.
... ... .. ... ... ... ...
3 0,778 1,0 1,8000
v = 0.5000 ... .. .. ... .... .... ...
1.5000
...
... .. ... ..... ..................
... . . . ..
4 0,882 1,0 1,8889 m = 1.5000 ... ... ... ..... ..................
0.5 ...
...
.. .. ... ..........
. . . . .
5 0,939 1,0 1,9412 x = 0.3333 ... ... ... .......................
1.0000 ... .. .. .............
6 0,969 1,0 1,9697 ... .. .. .............
... . . . ..
. . . ... ... ........................
7 0,984 1,0 1,9846 v = 1.9942 ... .............
... .........
1.9981 ......
8 0,992 1,0 1,9922 0.0
m = 1.9981 −1.0 −0.5 0.0 0.5 1.0
9 0,996 1,0 1,9961 x = 0.9980
10 0,998 1,0 1,9981 1.0000
Initial vector
Cuadro 11.10 " # " # " #
0 1 −1
x0 = =1 +1
function [lambda,V,cnt]= potencia(A,x,tol,max1)
1 1 1
% Método de la potencia para la obtención de un valor
% y un vector propios de A contains equal components
>> A=[1.5 0.5;0.5 1.5]; in two eigenvectors
if nargin<4 max1=100; end, if nargin<3 tol=eps; end >> [l,v,cnt]=potencia(A,[0;1])
if nargin<2 n=length(A); x=rand(n,1); end
(shown byl dashed
=
arrows)
lambda=0;cnt=0; err=1; 2.0000
while cnt<=max1 & err>tol v =
y=A*x; Repeated multiplication
0.7071 by causes compo- A
c1=norm(y,inf); y=y/c1; 0.7071
nent in first
dc=abs(lambda-c1); dv=norm(x-y); err=max(dc,dv); cnteigenvector
= (corresponding to larger
x=y; lambda=c1; cnt=cnt+1; 53
end eigenvalue, >> 2) to dominate, and hence sequence
V=x/norm(x);
end of vectors converges to that eigenvector
35
Cuadro 11.11

En el ejemplo que estamos utilizando, si se hace  D 1, la relación anterior se hace cero y el método converge en una
iteración. (Desafortunadamente, no siempre se puede escoger un desplazamiento tan bueno.)

11.3.3 Método de la iteración inversa


Si en vez del valor propio de mayor magnitud se necesita el más pequeño, se puede hacer uso de la propiedad de que
los valores propios de A 1 son los recíprocos de A. El esquema iterativo sería el que sigue.

Dado un punto de partida x0


for k D 1, 2, : : :
Resolver ı
Ayk D xk 1
xk D yk jjyk jj1
end

Para resolver el sistema


 de0;5ecuaciones
 se factorizaría A una sola vez. Aplicando el método de la iteración inversa con
M ATLAB a la matriz 1;50;5 1;5 se obtienen los resultados y la tabla del cuadro 11.12. El procedimiento converge al valor
T
propio 1 y al vector propio Œ 1; 1 .
En código de M ATLAB el método de la iteración sería como indica el cuadro 11.13. En él, a su lado, también se ve
cómo funciona su ejecución en el escritorio.

11.3.3.1 Mejora del método: desplazamiento


El desplazamiento es particularmente útil en el caso de la iteración inversa. Si  es el valor propio de A más próximo a
, el valor propio de menor magnitud de A  I será  .
Con una elección apropiada de  se puede calcular cualquier valor propio de A que esté próximo a esa .
252 j Capítulo 11. Valores y vectores propios. Valores singulares

>> x=[0;1];
A=[1.5 0.5;0.5 1.5];
for i=1:6
v=A\x, m=max(abs(v)), x=v/m k xkT jjyk jj1
end
v =-0.2500 0 0,000 1,0
0.7500 1 -0,333 1,0 0,750
m = 0.7500
x =-0.3333
2 -0,600 1,0 0,833
1.0000 3 -0,778 1,0 0,900
. . . 4 -0,882 1,0 0,944
v =
-0.9545 5 -0,939 1,0 0,971
0.9848 6 -0,969 1,0 0,985
m = 0.9848
x =-0.9692
1.0000

Cuadro 11.12

function [lambda,V,cnt]= ItInversa_2(A,x,tol,max1)


% Método de la potencia inversa para la obtención
% de un valor y vector propio de A
if nargin<4 max1=110; end, if nargin<3 tol=eps; end
>> A=[1.5 0.5;0.5 1.5];
if nargin<2 n=length(A); x=rand(n,1); end
>> [lambda,V,cnt]=ItInversa(A,[0;1])
lambda=0;cnt=0;err=1;[l,u,p]=lu(A);
lambda =
while cnt<=max1 & err>tol
1.0000
z=l\(p*x);y=u\z;
V =
c1=norm(y,inf);
-0.7071
y=y/c1;
0.7071
dc=abs(lambda-c1); dv=norm(x-y); err=max(dc,dv);
cnt =
x=y; lambda=c1;
55
cnt=cnt+1;
end
V=x/norm(x);
end

Cuadro 11.13

Si el desplazamiento está próximo a un valor propio, la convergencia es muy rápida.

11.3.4 Iteración mediante cociente de Rayleigh


x T Ax
Definición 11.5 El cociente de Rayleigh de un vector x 2 Rn es el escalar r.x/ D xT x
. La versión del cociente de
x H Ax
Rayleigh para vectores complejos es xH x
.

Este procedimiento debe su nombre a John William Strutt, Lord Rayleigh, Reino Unido, 1842-1919.

Rayleigh

Dada una matriz A 2 Rnn y uno de sus vectores propios, x, la mejor estimación del correspondiente valor propio 
se puede considerar un problema de mínimos cuadrados n  1 como lo es encontrar un  que resuelva x  Ax. De
sus ecuaciones normales, x Tx D x TAx, la solución que se obtiene es

x TAx
D :
x Tx
11.3 Obtención numérica de los valores y vectores propios j 253

El cociente de Rayleigh puede utilizarse como desplazamiento para acelerar la convergencia de los métodos iterativos
que hemos visto.
El algoritmo de la iteración inversa con cociente de Rayleigh quedaría así.

Dado un punto de partida x0


for k D 1, 2, : : :
x T Axk 1
k D kT 1
xk 1 x k 1
Resolver .A
ı k I/yk D xk 1
xk D yk jjyk jj2
end

 0;5 
Ejemplo 11.6 El método de la iteración de potencia con cociente de Rayleigh aplicado paso a paso a la matriz 1;5
0;5 1;5
obtiene los resultados del cuadro 11.14. El código correspondiente en M ATLAB y las instrucciones para ejecutarlo con
este problema se pueden ver en el cuadro 11.15.

k xkT jjyk jj1 xkT Axk =xkT xk


0 0,000 1,0
k xkT k
1 0,333 1,0 0,150 1,500
2 0,600 1,0 1,667 1,800 Partiendo de un punto 0 0,807 0,397 1,896
3 0,778 1,0 1,800 1,941 aleatorio: 1 0,924 1,000 1,998
4 0,882 1,0 1,889 1,985 2 1,000 1,000 2,000
5 0,939 1,0 1,941 1,996
6 0,969 1,0 1,970 1,999

Cuadro 11.14

function [lambda,V,cnt]= ItInvRayleigh_2(A,x,max1)


% Método de la iteración inversa con cociente de Rayleigh
if nargin<2, n=length(A); max1=10; x=ones(n,1); end
lambda=0; cnt=0; err=1; n=length(A);
if norm(x)>1 x=x/norm(x); end >> A=[1.5 0.5;0.5 1.5];
tol=n*norm(A,1)*eps; >> [lambda,V,cnt]=ItInvRayleigh_2(A,[0.5;0.55])
sigma=x’*A*x; lambda = 2.0000
while err>tol V =
y=(A-sigma*eye(n)) \ x; 0.7071
0.7071
x=y/norm(y); cnt = 3
sigma=x’*A*x;
err=norm(A*x-sigma*x,1); cnt=cnt+1;
end
lambda=sigma; V=x;
end

Cuadro 11.15

11.3.5 Deflación
Su idea: calculados un valor y un vector propios, obtener otros por deflación. Es decir, como cuando una vez conocida
una de las raíces, x1 , de un polinomio de grado n éste se divide por x x1 obteniéndose otro de grado n 1.
Si x es el vector propio asociado al valor propio dominante de A, 1 , y H es una matriz de Householder, tal que
H x D ˛e1 , la transformación de semejanza que define consigue transformar A así
 
1 bT
A1 D H AH 1 D ;
0 A2
254 j Capítulo 11. Valores y vectores propios. Valores singulares

donde A2 es una matriz de orden n 1 cuyos valores propios son 2 ; : : : ; n , los restantes de A. Luego, trabajando con
A2 y calculado 2 , si y2 es un vector propio asociado, el vector
 
1 ˛ bT y2
x2 D H ; donde ˛ D ;
y2 2 1

es el vector propio correspondiente a 2 en la matriz original A, supuesto 1 ¤ 2 .


La idea subyacente y el método correspondiente funciona bien para calcular algunos valores y vectores propios. Una
codificación en M ATLAB sería la del cuadro 11.16. Utilicémoslo en una sesión de M ATLAB generando un problema
ad-hoc tal como muestra el cuadro 11.17.

function u = Housv(x)
% Transformación de Householder del vector x.
m = max(abs(x));
u = x/m;
function [l2 v2 B] = defl_1(A, v1) if u(1) == 0, su = 1; else su = sign(u(1)); end
% B resulta de A por deflación de vec. propio v1. u(1) = u(1)+su*norm(u);
% Calcula el valor propio l2 y vec. propio v2. u = u/norm(u);
n = length(A); u = u(:);
v1 = Housv(v1); end
C = Houspre(v1,A);
B = zeros(n,n); function P = Houspre(u, A)
for i=1:n % Producto P = H*A, donde H is una transformación de Householder
B(:,i)=Housmvp(v1,C(i,:)); % definida por el vector u.
end n = length(A);
l1 = B(1,1); v = u/norm(u); v = v(:);
b = B(1,2:n); P = zeros(n,n);
B = B(2:n,2:n); for j=1:n
[l2 y] = ItInvRayleigh_2(B); aj = A(:,j);
if l1~=l2 P(:,j)=aj-2*(v’*aj)*v;
a = b*y/(l2-l1); end
v2 = Housmvp(v1,[a;y]); end
else
v2 = v1; function p = Housmvp(u, x)
end % Producto p = H*x, donde H es la transformación de Householder
end % definida por u.
u = u(:); x = x(:);
v = u/norm(u);
p = x - 2*(v’*x)*v;
end

Cuadro 11.16

>> A=ones(5)+diag(ones(5,1)) % Generamos una matriz dada


A =
2 1 1 1 1 >> [norm(A*V-lambda*V);norm(A*v2-l2*v2)] % Comprobar resultados
1 2 1 1 1 ans =
1 1 2 1 1 1.0e-015 *
1 1 1 2 1 0.4441
1 1 1 1 2 0.6497
>> [lambda,V]= ItInvRayleigh_2(A) % Cal. valor y vector propio dominantes >> format short
lambda = 6 >> [l,v]=eig(A) % Comprobar con rutina Matlab eig
V = l =
0.44721359549990 0.8333 -0.1667 -0.1667 0.2236 0.4472
0.44721359550002 -0.1667 0.8333 -0.1667 0.2236 0.4472
0.44721359549982 -0.1667 -0.1667 0.8333 0.2236 0.4472
0.44721359550001 -0.5000 -0.5000 -0.5000 0.2236 0.4472
0.44721359550003 0 0 0 -0.8944 0.4472
>> [l2,v2]=defl_1(A,V) % Defl para obtener otro par val. A v =
l2 = 1 1 0 0 0 0
v2 = 0 1 0 0 0
-0.89442719099992 0 0 1 0 0
0.22360679774998 0 0 0 1 0
0.22360679774998 0 0 0 0 6
0.22360679774998
0.22360679774998

Cuadro 11.17
11.3 Obtención numérica de los valores y vectores propios j 255

11.3.6 Iteración simultánea o de subespacio


Para obtener varios valores/vectores propios se puede aplicar la iteración de la potencia a los p vectores linealmente
independientes que forman X 0 . Es decir, lo que sigue.

X 0 D matriz n  p de rango p
for k D 1, 2, : : :
X k D AX k 1
end

 
La Im A k x1 A k x2 : : : A k xp converge al subespacio invariante de los vectores propios de A correspondien-
tes a sus p mayores valores propios: j1 j >    jp j > jpC1 j  jpC2 j: La velocidad de convergencia es O.pC1 =p /.
Para optimizar prestaciones y conseguir una buena ortogonalidad se usa la factorización QR de X k , ortonormalizando
así las columnas de X k . Se obtendría una Q como base de Im.X k /.

X 0 D matriz n  p de rango p
for k D 1, 2, : : :
Qk R k D X k 1
X k D AQk
end

Las iteraciones convergen a una matriz triangular, si sólo hay valores propios reales, o a una triangular en bloques 22
en la diagonal principal cuando haya valores propios complejos conjugados.
Como hemos hecho otras veces, hagamos paso a paso una sesión de M ATLAB para trabajar con una matriz simétrica
la iteración simultánea. Obtendremos algo parecido al cuadro 11.18.

A =
>> A=randn(5); A=A*A’ 20.8020 -0.0035 0.0000 0.0000 0.0000
A = -0.0035 10.6595 0.0000 0.0000 0.0000
2.8486 -2.5688 0.1741 3.5081 -0.1959 0.0000 0.0000 2.2265 0.0000 0.0000
-2.5688 2.8789 -0.3177 -4.0552 -2.2033 0.0000 -0.0000 0.0000 0.1085 0.0000
0.1741 -0.3177 2.3957 1.4227 -2.3486 -0.0000 -0.0000 0.0000 0.0000 0.0165
3.5081 -4.0552 1.4227 6.2012 2.7463 >> % Mejora; hagamos 10 más
-0.1959 -2.2033 -2.3486 2.7463 19.4886 >> for i=1:10, [Q R]=qr(A); A=R*Q; end
>> A0=A; >> A
>> % Hagamos ahora 10 iteraciones de la iteración ortogonal A =
>> for i=1:10, [Q R]=qr(A); A=R*Q; end 20.8020 -0.0000 0.0000 0.0000 0.0000
>> A -0.0000 10.6595 -0.0000 0.0000 0.0000
A = 0.0000 0.0000 2.2265 0.0000 0.0000
20.8010 -0.0997 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.1085 -0.0000
-0.0997 10.6605 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0165
0.0000 0.0000 2.2265 0.0000 0.0000 >> % Comparemos todos con los de la matriz original
0.0000 -0.0000 0.0000 0.1085 0.0000 >> eig(A0)
-0.0000 -0.0000 0.0000 0.0000 0.0165 ans = 0.0165
>> % Otras 5 iteraciones más 0.1085
>> for i=1:5, [Q R]=qr(A); A=R*Q; end 2.2265
>> A 10.6595
20.8020

Cuadro 11.18

El código IterSimul del cuadro 11.19 obtiene los r valores propios máximos de una A simétrica. A su lado está una
prueba de él con un problema sintético.

11.3.7 Iteración QR
Generalizando la iteración simultánea (ortogonal) se pueden calcular todos los valores propios de A, así como los
correspondientes vectores propios.
256 j Capítulo 11. Valores y vectores propios. Valores singulares

function [i r1]=IterSimul(A,r)
>> A=rand(20); A=A*A’;
% Máximos valores propios de A (simétrica); itera. simultánea
>> [i r]=IterSimul(A,6)
% ortogonal 0.002436587767534
Valores calculados con eig()
n=length(A); if nargin<2, r=5; end 0.001713272489506
1.0e+002 *
tol=sqrt(eps); B=A; i=0; itmax=400; 0.001168137691697
1.006294230413485
Q=eye(n,r); R=eye(r); vprn=1; err=1; 0.000605614254568
0.052804894629075
while i<itmax && err>tol 0.000238729619383
0.039516583781399
vpr=vprn; 0.000012007660353
0.032191801462925
Z=A*Q; i = 44
0.031157323965477
[Q,R]=qr(Z,0); % QR reducida de n x r r =
0.026806664806072
vprn=min(diag(R)); 1.0e+002 *
0.022597606348368
i=i+1; 1.006294230413484
0.019827755676060
err=abs((vprn-vpr)/vprn); 0.052804894629054
0.013685589405813
end 0.039516583695056
0.012217263560720
format long 0.032053644988988
0.009791335827920
r1=diag(R); % fprintf(’%i Valores propios máximos:\n’,r); 0.031291616159557
0.005048187809920
disp(’Valores calculados con eig()’); 0.026806665421155
0.004282145342196
disp(-sort(eig(-B)));
0.003460064312945
end

Cuadro 11.19

474 G. GOLUB AND F. UHLIG

Esta forma de actuar fue propuesta por John G.F. Francis, Reino Unido 1934 y Vera Kublanovskaya, Rusia 1920-2012.
family until his death. At first, Kantorovich’s group developed analytic computational tools in Prorab
for algebraic and trigonometric polynomials, for integer arithmetic and series, etc. When Vera joined,

Downloaded from http://imajna.oxfordjournals.org at Università di Bologna - Sistema Bibliotecario d'Ateneo on March 30, 2010
her task was to select and classify matrix operations that are useful in numerical linear algebra. Linear
algebra subroutines were included in Prorab much later. This experience brought Vera close to numerical
algebra and computation. In 1972 she obtained her secondary doctorate (Habilitation). More extended
biographies of Vera’s life, achievements and long and productive career are available in Golub et al.
(1990) and Konkova et al. (2003), for example.

Francis Kublanovskaya

Vera Kublanovskaya in August 2008

In the Russian literature the QR algorithm was initially called the method of one-sided rotations. Vera
Kublanovskaya started to develop her version of the QR algorithm in 1958 after reading Rutishauser’s
LR algorithm paper (Rutishauser, 1958). She represented a matrix A = L · Q as the product of a lower
triangular matrix L and an orthogonal matrix Q that she suggested to compute as the product of
elementary rotations or reflections. Her eigenvalue algorithm factors A = A1 = L 1 · Q 1 , reverse
order multiplies A2 = Q 1 · L 1 and then factors A2 again as A2 = L 2 · Q 2 , etc. In 1959 she performed
numerical experiments with her LQ decomposition-based algorithm on an electromechanic ‘Mercedes’

El algoritmo del cuadro 11.20 plasma esta idea.


calculator in low dimensions by hand since linear algebra computer codes had not been developed yet
in Prorab. Vera’s hand computations indicated that her explicit factorization—reverse-order multiply
algorithm— is convergent. However, D. K. Faddeev feared that the obtained results may only have been
accidental. Vera’s QR-like algorithm was briefly mentioned in 1960 in the first edition of a monograph

A0 D AI U 0 D I
for k D 1, 2, : : :
Qk 1 R k 1 D Ak 1 , obtener factorización QR
Ak D R k 1 Qk 1 ; U k D U k 1 Qk 1
end

Cuadro 11.20: Algoritmo de la iteración QR

Las matrices Ak convergerán a una matriz triangular, si todos los valores propios son reales, o con bloques 22 en la
diagonal, si hay valores propios complejos. U k convergerá a los vectores propios.
Las matrices Ak son ortogonalmente semejantes a las anteriores del proceso y a A:

A1 D R 0 Q0 D QT0 A0 Q0 pues R 0 D QT0 A0


 
A2 D R 1 Q1 D QT1 A1 Q1 D QT1 QT0 A0 Q0 Q1 D .Q0 Q1 /T A0 .Q0 Q1 /

Es decir, todas las Ak tendrán los valores propios de A D A0 . Las columnas de Qk forman una base ortonormal del
subespacio Im.Ak /. Si A es simétrica, las iteraciones conservan la simetría y las Ak convergerán a una matriz triangular
y simétrica: diagonal. Trabajemos un poco “a mano” con el algoritmo con la ayuda de M ATLAB. Obtenemos lo que lista
el cuadro 11.21.
11.3 Obtención numérica de los valores y vectores propios j 257

D = diag([4 3 2 1]);
rand(’seed’,0); format short e
S=rand(4); S = (S - .5)*2; % Se perturba un poco
A = S*D/S % A_0 = A = S*D*S^{-1}
for i=1:6
[Q R] = qr(A); A = R*Q % Iteración QR
end

A =
4.1475e+00 -7.7246e-01 -7.3819e-01 -4.1172e+00
-4.9214e-03 3.2731e+00 -1.8990e-01 1.9440e+00
6.2706e-01 -1.9699e-01 2.2190e+00 -6.0845e-01
1.5691e-01 -4.1310e-01 -6.3508e-01 3.6039e-01
A =
3.9304e+00 -2.7682e-01 1.5214e-01 4.4847e+00
4.0097e-02 3.0595e+00 -6.9040e-01 -2.1283e+00
3.5144e-01 -3.8535e-02 2.3156e+00 -4.8346e-01
-2.7163e-02 8.4395e-02 1.9457e-01 6.9447e-01
A =
3.9287e+00 -1.6932e-01 4.1119e-01 -4.4113e+00
-1.6308e-02 3.0078e+00 -8.8862e-01 2.1571e+00
2.1041e-01 -3.4259e-02 2.2044e+00 1.0227e+00
5.9415e-03 -2.3299e-02 -8.1008e-02 8.5905e-01
A =
3.9514e+00 -1.3627e-01 4.9740e-01 4.3484e+00
-5.7605e-02 2.9981e+00 -9.6432e-01 -2.1072e+00
1.1812e-01 -2.7149e-02 2.1181e+00 -1.3251e+00
-1.4093e-03 7.1443e-03 3.8096e-02 9.3241e-01
A =
3.9696e+00 -1.1610e-01 5.3907e-01 -4.3288e+00
-7.1970e-02 2.9977e+00 -9.8790e-01 2.0192e+00
6.3115e-02 -1.8643e-02 2.0658e+00 1.4919e+00
3.4472e-04 -2.2854e-03 -1.8738e-02 9.6688e-01
A =
3.9817e+00 -9.8200e-02 5.6721e-01 4.3356e+00
-6.9838e-02 2.9984e+00 -9.9032e-01 -1.9242e+00
3.2744e-02 -1.2095e-02 2.0362e+00 -1.5816e+00
-8.5395e-05 7.4567e-04 9.3684e-03 9.8360e-01

Cuadro 11.21

11.3.8 Iteración QR con desplazamiento


La velocidad de convergencia se puede aumentar con desplazamientos:

Qk 1Rk 1 D Ak 1 k 1I
Ak D R k 1 Qk 1 C k 1 I:

El desplazamiento k 1 debe ser una buena aproximación de un valor propio. Los desplazamientos más usados son:
Rayleigh. El valor de ann de Ak 1 : buena aproximación a priori de n .
Wilkinson. Del bloque diagonal inferior 22 de Ak 1 (si no es diagonal), el valor propio de esa submatriz que esté
más cerca de ann .
El código de M ATLAB del cuadro 11.22 es el método de la iteración QR con desplazamiento de Rayleigh para matrices
con valores propios reales: simétricas, hermíticas, etc.
Vamos a usarlo en varios trozos de una sesión de M ATLAB con diversos tipos de matrices, más o menos controladas,
para comprobar qué nos obtiene. Utilizaremos la function de M ATLAB que obtiene los valores propios —eig()—
para contrastar el resultado obtenido y su precisión. El resultado se puede ver en el cuadro 11.23.
Hagamos ahora una sesión en M ATLAB utilizando la iteración QR para una matriz sin estructura especial generada
aleatoriamente. Se obtendrá lo del cuadro 11.24.

11.3.8.1 Iteración QR con doble desplazamiento


Si hay valores propios complejos, se incorpora el doble desplazamiento para tratar los bloques 22 irreducibles de la
diagonal principal.
258 j Capítulo 11. Valores y vectores propios. Valores singulares

function [lambda itt]= IteracionQR(A,tol)


% Método de la iteración QR con desplazamiento
% para matrices con valores propios reales
if nargin<2, tol=eps*norm(A); end
lambda=0; n=length(A); it=0;
for k=n:-1:2 % Hasta aislar lambda_k en a(k,k)
while norm(A(k,1:k-1),inf) > tol
sigma=A(k,k);
[Q,R]=qr(A(1:k,1:k)-sigma*eye(k,k));
A(1:k,1:k)=R*Q+sigma*eye(k,k);
it=it+1;
end
end
lambda=sort(diag(A)); if nargout==2, itt=it; end
end

Cuadro 11.22

>> a=rand(20);
>> [lambda it]=IteracionQR(a’*a)
>> eig(a’*a)
lambda =
ans =
0.0010
0.0010
0.0175
>> ab=ones(5)+eye(5) 0.0175
0.1107
ab = 0.1107
0.1496
2 1 1 1 1 0.1496
0.2232
1 2 1 1 1 0.2232
0.4124
1 1 2 1 1 0.4124
0.7861
1 1 1 2 1 0.7861
0.8132
1 1 1 1 2 0.8132
0.9430
>> [lambda it]=IteracionQR(ab) 0.9430
1.2765
lambda = 1.2765
1.4153
1.0000 1.4153
1.7930
1.0000 1.7930
1.9123
1.0000 1.9123
2.2906
1.0000 2.2906
2.6955
6.0000 2.6955
2.9732
it = 2.9732
3.7114
4 3.7114
4.9037
4.9037
5.3983
5.3983
100.1106
100.1106
it =
48

Cuadro 11.23

Se usan los dos valores propios,  y N , de la submatriz 22 del bloque inferior,

Qk 1Rk 1 D Ak 1 k 1I
Ak D R k 1 Qk 1 C k 1I
Qk R k D Ak N k 1 I
AkC1 D R k Qk C N k 1I

haciendo así un paso doble con desplazamiento en dos etapas. Este doble paso se puede simplificar si

M D .Ak 1 k 1 I/ .Ak 1 N k 1 I/
D .Qk 1 Qk / .R k R k 1/

D Ak2 1 sAk 1 C t I;

siendo s la traza del bloque diagonal inferior 22 de Ak 1 y t su determinante.


Si se factorizase la matriz así, M D QR, mediante una sencilla manipulación algebraica resultaría que AkC1 D
QT M Q, por lo que teóricamente, en lo que se denomina doble desplazamiento implícito, se evitaría un paso. Calcular
M requiere O.n3 / operaciones y su factorización ulterior QR es bastante inestable.
Con los años, los diferentes enfoques de esta variante han convergido en una estrategia de doble desplazamiento
implícito tipo Francis, formulada en 1961 por John G.F. Francis.
11.3 Obtención numérica de los valores y vectores propios j 259

>> A=randn(5)
>> % Mejora, aunque no suficientemente; otras 50
A =
>> for i=1:50, [Q R]=qr(A); A=R*Q; end
0.1303 1.0169 -0.2750 0.7688 0.2815
>> A
-0.3857 0.5583 0.2378 -0.2941 1.2163
A =
-0.5498 -0.1324 0.3125 0.8049 -0.2401
-1.8095 -0.7895 -0.9613 0.3250 -0.1298
0.2869 -1.1517 -0.0024 -1.7196 -0.4955
0.0657 -1.8993 -0.1186 0.6697 -1.0556
-0.3503 0.4211 0.9847 -0.6632 -1.3721
0 -0.0000 0.7945 -1.0629 0.0612
>> A=hess(A) % VEREMOS por qué
0 0 0.6651 0.9179 0.1223
A =
0 0 0 0.0000 -0.0941
0.1303 -0.1471 1.0342 -0.5765 -0.5971
>> % Intentemos unas 50 últimas
0.8100 0.6165 -0.1303 0.5381 0.9983
>> for i=1:50, [Q R]=qr(A); A=R*Q; end
0 -1.0393 0.3560 0.3942 0.6386
>> A
0 0 1.3485 -1.9025 -0.0670
A =
0 0 0 0.4372 -1.2908
-1.8704 -0.7919 -0.1944 1.0214 -0.2176
>> A0=A;
0.0632 -1.8384 0.5215 0.3733 -1.0411
>> % Hagamos ahora 10 iteraciones de la iteración QR
0 -0.0000 0.7034 -0.7224 0.1361
>> for i=1:10, [Q R]=qr(A); A=R*Q; end
0 0 1.0056 1.0089 0.0134
>> A
0 0 0 0.0000 -0.0941
A =
-1.9640 -1.2063 -0.1339 0.3196 -0.3104
>> % Hay dos bloques 2x2 en la diagonal
0.1231 0.3343 -0.7129 1.0207 -0.4763
>> % El último parece claro que es -0.0941
0 -1.5358 -0.9798 -0.1630 -0.8736
0 0 1.1031 0.6130 0.2523
>> % Calculemos los valores propios de esos bloques
0 0 0 0.0000 -0.0941
>> eig(A(1:2,1:2))
>> for i=1:10, [Q R]=qr(A); A=R*Q; end % 10 it. más
ans =
>> A
-1.8544 + 0.2232i
A =
-1.8544 - 0.2232i
-1.6585 -0.7415 0.3436 -0.8538 0.1063
>> eig(A(3:4,3:4))
0.1202 -2.0481 -0.4571 -0.6504 -1.0568
ans =
0 -0.0322 0.6956 -0.7333 -0.1472
0.8562 + 0.8385i
0 0 1.0035 1.0146 -0.0113
0.8562 - 0.8385i
0 0 0 0.0000 -0.0941
>> % Mejora; hagamos 50 más
>> % Comparemos todos con los de la matriz original
>> for i=1:50, [Q R]=qr(A); A=R*Q; end
>> eig(A0)
>> A
ans =
A =
0.8562 + 0.8385i
-1.7423 -0.7746 -0.7995 -0.5685 -0.0297
0.8562 - 0.8385i
0.0805 -1.9665 -0.6724 0.2789 -1.0632
-0.0941
0 -0.0000 1.0634 -0.8844 -0.0561
-1.8544 + 0.2232i
0 0 0.8436 0.6489 0.1247
-1.8544 - 0.2232i
0 0 0 0.0000 -0.0941

Cuadro 11.24

11.3.8.2 Algoritmo QR. Transformaciones preliminares

Definición 11.6 Una matriz de Hessenberg es una matriz triangular excepto por una subdiagonal adyacente a la
diagonal principal.

0
Cualquier matriz se puede reducir a la forma de Hessenberg mediante transformaciones de Householder o Givens. Si
la matriz original es simétrica, al reducirla a la forma de Hessenberg se obtendrá una tridiagonal.
Si se parte de una matriz con la forma de Hessenberg, el algoritmo QR más actual necesita un número de operaciones
O.n2 /, implementándose en dos fases:

Matriz 1ª fase 2ª fase


Simétrica a tridiagonal a diagonal
General a Hessenberg a triangular
El trabajo necesario total de todo el proceso QR, preliminar más iterativo, es el de la tabla del cuadro 11.25.
260 j Capítulo 11. Valores y vectores propios. Valores singulares

Matriz simétrica Matriz general


4 3
n para valores propios sólo 10n3 para valores propios sólo
3
9n3 valores y vectores propios 25n3 valores y vectores propios

Cuadro 11.25

Un conjunto de rutinas sencillas para reducir cualquier matriz mediante transformaciones de Householder a la forma
de Hessenberg seria el que describe el cuadro 11.26.

function [A V] = Hessred(A)
% Reducción de A a Hessenberg con Householder
% En V vectores de transf. sucesivas de Householder
[m,n] =size(A);
if A == triu(A,-1), V = eye(m); return, end
V = [];
for k=1:m-2
x = A(k+1:m,k); v = Housv(x);
A(k+1:m,k:m)=A(k+1:m,k:m)-2*v*(v’*A(k+1:m,k:m));
A(1:m,k+1:m)=A(1:m,k+1:m)-2*(A(1:m,k+1:m)*v)*v’;
v = [zeros(k,1);v]; V = [V v];
end
end

function u = Housv(x)
% Transf. Householder del x; vector en u.
m = max(abs(x));u = x/m;
if u(1) == 0, su = 1; else su = sign(u(1)); end
u(1) = u(1)+su*norm(u);
u = u/norm(u); u = u(:);
end

Cuadro 11.26

Consideraciones finales en torno al algoritmo o método QR para el cálculo de valores y vectores propios de una matriz
A.
Para matrices muy grandes, el algoritmo es costosísimo en número de operación a realizar. Además, requiere mucha
memoria de ordenador, aunque la matriz sea grande y dispersa.
Si sólo se necesitan unos pocos valores y vectores propios, especialmente para n grandes, el método no saca partido
de ello.
Las transformaciones por semejanza introducen muchos elementos no nulos por lo que se destruye una posible
estructura de dispersidad.
El que se lista en el cuadro 11.27 es un programa del algoritmo QR para matrices simétricas con reducción inicial
a forma Hessenberg y desplazamiento sencillo de Wilkinson. Se prueba con una matriz 20  20, simétrica, generada
aleatoriamente. Por fin, en el cuadro 11.28 se lista el código en M ATLAB del algoritmo QR para matrices generales, con
reducción inicial a Hessenberg y doble desplazamiento implícito tipo Francis.
Los resultados de una sesión de M ATLAB para estudiar una matriz 25  25 y otra de 1000  1000 son los del cua-
dro 11.29 de la página 262. Los resultados que se obtienen en clave de tiempos de ejecución no son en absoluto compe-
titivos con respecto a los de la function eig() de M ATLAB, pero las condiciones son absolutamente distintas. Uno es un
programa hecho para verificar que el método funciona como predice la teoría; el otro lleva mucho desarrollo y esfuerzo
los últimos años para optimizar sus prestaciones.

11.3.9 Subespacios de Krylov


Recordamos que, para A 2 Cnn y 0 ¤ b 2 Cn1 , al subespacio Kj D Genfb; Ab : : : A j 1 bg se le denomina
subespacio de Krylov.
Los métodos que trabajan en sucesivos subespacios de Krylov que se crean en un proceso iterativo sólo llevan a cabo
multiplicaciones de matrices por vectores y van reduciendo la matriz original a la forma Hessenberg.
11.3 Obtención numérica de los valores y vectores propios j 261

>> A=rand(20);
function [D itt]=It_QR_3(A)
>> A=(A+A’)/2;
% Iteración QR con despla. de Wilkinson para una matriz simétrica >> eig(A)
>> [D it]=It_QR_3(A)
n=length(A); tol=off(A)*1.e-8; k=n; D=zeros(n,1); it=0; ans =
D =
A=Hessred(A); % Reducir a Hessenberg -1.2714
10.5361
while k>1 -1.2618
1.5883
while abs(A(k,k-1))>tol -1.0250
1.5200
%Calcular desplazamiento Wilkinson -0.8895
1.1285
s=eig2x2(A(k-1:k,k-1:k)); -0.8182
1.0568
[i j]=min(abs(A(k,k)*[1 1]’-s)); % Mejor desp. Wilkinson -0.6692
0.9498
[Q R]=qr(A(1:k,1:k)-s(j)*eye(k)); -0.6220
0.6448
A(1:k,1:k)=R*Q+s(j)*eye(k); it=it+1; -0.4263
0.5156
end -0.1461
0.2413
k=k-1; -0.0201
0.1139
end 0.1139
-0.0201
D=sort(diag(A),’ascend’); if nargout==2, itt=it; end 0.2413
-0.1461
end 0.5156
-0.4263
0.6448
-0.6220
function [L]=eig2x2(a) 0.9498
-0.6692
tra=a(2,2)+a(1,1); 1.0568
-0.8182
sqtd=sqrt(tra*tra-4*(a(2,2)*a(1,1)-a(1,2)*a(2,1))); 1.1285
-0.8895
L(1)=(tra+sqtd)/2; 1.5200
-1.0250
L(2)=(tra-sqtd)/2; 1.5883
-1.2618
L=L(:); 10.5361
-1.2714
end
it = 36

Cuadro 11.27

function [T it itd t] = qrstep_Francis_Bindel(H)


% Computes eigenvalues of A using a implicit double-shift QR method
% as Cornell’s Bindel notes (CS 620).
% Output: TT, vector containing eigenvalues; it, simple iterations;
% itd, double iterations.
global itr itc
n = length(H); T=zeros(n,1); tol = norm(H,’fro’)*1e-8;
H=hess(H); % Reduce A to Hessenberg form
itr=0; itc=0; t=cputime;
while n > 2 function [b c] = qrpoly(H)
if abs(H(n,n-1)) < tol*(abs(H(n-1,n-1))+abs(H(n,n))) % Compute b and c of z^2+b*z+c = (z-sigma)(z-conj(sigma))
H(n,n-1) = 0; T(n)=H(n,n); % Deflate 1x1 block % where sigma is the Wilkinson double shift: eigenvalue of
n = n-1; % the 2x2 trailing submatrix closest to H(n,n)
elseif abs(H(n-1,n-2)) < tol*(abs(H(n-2,n-2))+abs(H(n-1,n-1))) global itr itc
H(n-1,n-2) = 0; T(n-1:n)=eig2x2(H(n-1:n,n-1:n)); % Deflate 2x2 block HH = H(end-1:end,end-1:end);
n = n-2; traHH = HH(1,1)+HH(2,2);
else detHH = HH(1,1)*HH(2,2)-HH(1,2)*HH(2,1);
H(1:n,1:n) = qrstep(H(1:n,1:n)); % Main body if traHH^2 > 4*detHH % Real eigenvalues
end % Use as double shift the eigenvalue closer to H(n,n)
end lambdaHH(1) = (traHH + sqrt(traHH^2-4*detHH))/2;
T(1:2)=eig2x2(H(1:2,1:2)); T=sort(T,’descend’); t=cputime-t; it=itr; itd=itc; lambdaHH(2) = (traHH - sqrt(traHH^2-4*detHH))/2;
end if abs(lambdaHH(1)-H(end,end))<abs(lambdaHH(2)-H(end,end))
lambdaHH(2) = lambdaHH(1);
function [NH] = qrstep(H) else
% Compute double-shift poly and initial column of H^2 + b*H + c*I lambdaHH(1) = lambdaHH(2);
[b c] = qrpoly(H); end
C1 = H(1:3,1:2)*H(1:2,1); % z^2+bz+c=(z-lambda_1)(z-lambda_1)|(z-lambda_2)(z-lambda_2)
C1(1:2) = C1(1:2) + b*H(1:2,1); C1(1) = C1(1) + c; b = -lambdaHH(1)-lambdaHH(2);
% Apply a similarity associated with the first step of QR on C c = lambdaHH(1)*lambdaHH(2); itr=itr+1;
v = Housv(C1); else % In the complex case, we want the char poly for HH
H(1:3,:) = H(1:3,:)-2*v*(v’*H(1:3,:)); b = -traHH; c = detHH; itc = itc+1;
H(:,1:3) = H(:,1:3)-(H(:,1:3)*(2*v))*v’; end
% Do "bulge chasing" to return to Hessenberg form end
n = length(H);
for j=1:n-2
k = min(j+3,n);
v = Housv(H(j+1:k,j)); % Find W=I-2vv’ to put zeros below H(j+1,j), H=WHW’
H(j+1:k,:) = H(j+1:k,:)-2*v*(v’*H(j+1:k,:));
H(:,j+1:k) = H(:,j+1:k)-(H(:,j+1:k)*(2*v))*v’; H(k,j) = 0;
end
NH=triu(H,-1);
end

Cuadro 11.28
262 j Capítulo 11. Valores y vectores propios. Valores singulares

>> [T it itd t]=qrstep_Francis_Bindel(A)


T = >> A=rand(1000);
>> sort(eig(A),’descend’) >> A = (A - .5)*2;
-6.0770
ans = >> [T it itd t]=qrstep_Francis_Bindel(A)
5.2804
-6.0770 T =
5.0190 7.123846740573868 +17.026981501328613i
5.2804
3.2085 + 3.6195i 7.123846740573868 -17.026981501328613i
5.0190
3.2085 - 3.6195i 16.624570346272108 + 7.937272245254786i
3.2085 + 3.6195i
0.0031 + 4.4372i 16.624570346272108 - 7.937272245254786i
3.2085 - 3.6195i -16.089705600685924 + 8.930438288025009i
0.0031 - 4.4372i
0.0031 + 4.4372i -16.089705600685924 - 8.930438288025009i
-4.2104 + 0.7456i
0.0031 - 4.4372i -10.166595375856957 +15.258792634828080i
-4.2104 - 0.7456i
-4.2104 + 0.7456i -10.166595375856957 -15.258792634828080i
-1.3585 + 3.9497i 17.167325994176007 + 6.377944580510263i
-4.2104 - 0.7456i
-1.3585 - 3.9497i 17.167325994176007 - 6.377944580510263i
-1.3585 + 3.9497i
1.2975 + 3.8800i 18.249349262178139 + 0.000000000000000i
-1.3585 - 3.9497i
1.2975 - 3.8800i . . .
1.2975 + 3.8800i -1.748103565292426 - 1.443294519531504i
-2.4416 + 2.7407i
1.2975 - 3.8800i -2.229777171574543 + 0.000000000000000i
-2.4416 - 2.7407i
-2.4416 + 2.7407i 2.124127007088685 + 0.000000000000000i
2.8787 + 0.7120i
-2.4416 - 2.7407i -2.000980926645378 + 0.000000000000000i
2.8787 - 0.7120i -0.267964043130730 + 1.702030627215852i
2.8787 + 0.7120i
-1.0840 + 1.8066i -0.267964043130730 - 1.702030627215852i
2.8787 - 0.7120i
-1.0840 - 1.8066i 1.251743319582046 + 0.303853777326017i
-1.0840 + 1.8066i
-1.2594 + 0.9430i 1.251743319582046 - 0.303853777326017i
-1.0840 - 1.8066i -0.989726686530990 + 0.000000000000000i
-1.2594 - 0.9430i
-1.2594 + 0.9430i 0.222221915982704 + 0.687550759680182i
-0.3809 + 0.9062i
-1.2594 - 0.9430i 0.222221915982704 - 0.687550759680182i
-0.3809 - 0.9062i
-0.3809 + 0.9062i it = 93
0.6323 itd = 1116
-0.3809 - 0.9062i
-0.1911 t = 41.563322418069106
0.6323
it = 7 >> tic, [V S U]=eig(A); toc
-0.1911
itd = 27 Elapsed time is 1.323848 seconds.
t = 0.0624

Cuadro 11.29

Si A tiene n valores propios distintos, 1 ; : : : ; n , con vectores propios asociados x1 ; : : : ; xn ortonormales (base
ortonormal de Rn ), cualquier vector de Rn se puede escribir como combinación lineal de esos vectores propios; en
particular, uno b D c1 x1 C c2x2 C    C cn xn . 
La matriz de Krylov, K j D b Ab : : : A j 1 b , de dimensión n  j , se puede escribir
2 3
1 1    j1 1
6 j 17
6 1 2    2 7
K j D Œc1 x1 c2 x2    cn xn nn 66 :: :: : : : 77 :
4: : : :: 5
1 n    jn 1
nj

Cuando j D n, la matriz C n D K n 1 AK n es tipo Hessenberg (de hecho C n es la matrix compañera de A).


La matriz de Krylov K n suele estar mal condicionada. Para obtener una buena base de Im.K n / se utiliza la factoriza-
ción Qn R n D K n de tal forma que

C n D K n 1 AK n D R 1
QH H 1
n AQn R n ! Qn AQn D R n C n R n  H (matriz de Hessenberg):

Si se igualan las columnas k de la expresión anterior, escrita AQn D Qn H , se tiene que

Aqk D h1k q1 C    C hkk qk C hkC1;k qkC1

expresión que relaciona el vector qkC1 con los anteriores q1 ; : : : ; qk . Si se premultiplica por qjH , teniendo en cuenta la
ortonormalidad,
hj k D qjH Aqk ; j D 1; : : : ; k:
Estas expresiones dan lugar a la ya estudiada iteración de Arnoldi del cuadro 11.30. Obtiene una matriz unitaria Qn y
una Hessenberg H n , columna a columna, haciendo sólo productos de A por vectores y productos interiores de estos.
Si se requieren con precisión los valores propios de H k se pueden calcular por otro método –por ejemplo la iteración
QR–, siendo una tarea menor si k  n.
El coste en cálculos de la iteración de Arnoldi es elevado: cada nuevo qk se debe ortogonalizar respecto a todos los
vectores columna de Qk , por lo que se reinicializa periódicamente desde un nuevo vector escogido adecuadamente.
11.4 Cálculo de los valores singulares j 263

 Ortogonalización de A
por Iteración de Arnoldi Según progresa el algoritmo, en la iteración k, si Qk D Œq1 ; : : : ; qk , la matriz H k D
Dado x0 cualquiera
q1 D x0 = kx0 k2 QHk
AQk es Hessenberg y sus valores propios, denominados valores de Ritz, por
for k D 1; 2; : : :
uk D Aqk
for j D 1 to k
Walther Ritz, Suiza, 1878-1909,
hj k D qjH uk
uk D uk hj k qj
end
hkC1;k D kuk k2
if hkC1;k D 0 stop son muy buenas aproximaciones de los valores propios de A. Si y es un vector propio
qkC1 D uk = hkC1;k de H k , Qk y es un aproximación de un vector propio de A.
end

Cuadro 11.30

Si la matriz A es simétrica o hermítica se utiliza la iteración de Lanczos que consigue una matriz tridiagonal.

 Ortogonalización de A
por Iteración de Lanczos
q0 D 0; ˇ0 D 0 y x0 (cualquiera)
q1 D x0 = kx0 k2
for k D 1; 2; : : :
uk D Aqk
Lanczos
˛k D qkH uk
uk D uk ˇk 1 qk 1 ˛ k qk
ˇk D kuk k2
if ˇk D 0 stop
qkC1 D uk =ˇk
end

Si ˇk D 0 los valores de Ritz son los valores propios exactos de A. Codificado todo este conjunto de posibilidades en
M ATLAB se obtiene lo que representa el cuadro 11.31.
El resultado del ejemplo arngo.m con 30 iteraciones de Arnoldi es el de la figura 11.3. Las crucecitas en él son los
valores propios auténticos; los círculos, menos intensos, los valores de Ritz que los aproximan. A la derecha de la figura
está la sesión de M ATLAB que obtiene esos resultados.

11.3.10 Comparación de los métodos presentados


Cálculo de todos los valores propios y vectores propios
Matrices generales reales o complejas. Reducción preliminar a forma de Hessenberg seguida de iteración QR.
Matrices reales simétricas o complejas hermíticas. Reducción preliminar a matriz tridiagonal seguida de iteración
QR.

Cálculo de algunos valores y vectores propios


Matrices simétricas de tamaño moderado. Reducción preliminar a matriz tridiagonal seguida de iteración inversa.
Matrices de gran tamaño. Método con iteración de Arnoldi para matrices generales.
Lanczos para matrices simétricas o complejas hermíticas.
264 j Capítulo 11. Valores y vectores propios. Valores singulares

function [U H flag] = arnoldi_W(A,ns,x)


% Realiza ns iteraciones de Arnoldi con reortogonalización en A partiendo de x
% Si flag == 0, las columnas de U son ortonormales, H(ns+1,ns) matriz Hessenberg y
% A*U(:,1:ns) = U(:,1:ns+1)*H.
% Si flag == j > 0, se ha obtenido subespacio invariante en j iter. y
% A*U(:,1:j) = U(:,1:j)*H(1:j,1:j).
%
flag = 0;
H = zeros(ns+1,ns); n = size(A,1);
U = zeros(n,ns+1); U(:,1) = x/norm(x); delta = zeros(ns+1,1);
for jj = 1:ns
U(:,jj+1) = A*U(:,jj); % sólo se usa A aquí
H(1:jj,jj) = U(:,1:jj)’*U(:,jj+1);
U(:,jj+1) = U(:,jj+1) - U(:,1:jj)*H(1:jj,jj); % ortogonaliza
delta(1:jj) = U(:,1:jj)’*U(:,jj+1);
U(:,jj+1) = U(:,jj+1) - U(:,1:jj)*delta(1:jj); % reortogonaliza
H(1:jj,jj) = H(1:jj,jj) + delta(1:jj);
H(jj+1,jj) = norm(U(:,jj+1));
if H(jj+1,jj) == 0, flag = jj; return, end
U(:,jj+1) = U(:,jj+1)/H(jj+1,jj);
end
end

% arngo.m: script que demuestra las prestaciones de arnoldi_W


%
load west0479, A = west0479; % Matriz dispersa 479x479
n = size(A,1); ns = 30; % 30 iteraciones de Arnoldi
randn(’state’,321) % mismo vector aleatorio cada vez
x = randn(n,1); tic % vector de partida aleatorio
[U,H,flag] = arnoldi_W(A,ns,x);
if flag == 0
residual = norm(A*U(:,1:ns)-U*H) % comprobaciones precisión y ortogonalidad
orthocheck = norm(eye(ns+1)-U’*U)
ritz = eig(H(1:ns,1:ns),’nobalance’), toc, tic % valores de Ritz y tiempos
lam = eig(full(A)); % cálculo de todos los val. propios de A
toc, figure(1)
plot(real(lam),imag(lam),’r+’,real(ritz),imag(ritz),’bo’)
end

Cuadro 11.31

>> arngo
residual =
2000 8.432475148361903e-013
orthocheck =
1.251900907447703e-015
1500 ritz =
1.0e+003 *
0.000009213557470 + 1.700662320900872i
1000 0.000009213557470 - 1.700662320900872i
-0.100885103219523 + 0.066606248354400i
-0.100885103219523 - 0.066606248354400i
-0.007240150911503 + 0.120672187071397i
500
-0.007240150911503 - 0.120672187071397i
0.108125258880896 + 0.054065937658482i
0.108125258880896 - 0.054065937658482i
0 -0.023312919813425 + 0.070655152714405i
-0.023312919813425 - 0.070655152714405i
0.059637449793072 + 0.043628336812077i
−500 0.059637449793072 - 0.043628336812077i
0.074697281694741
0.046089595120268 + 0.039266047684087i
−1000 .
.
.
−1500 -0.040459377125795 - 0.030311689517999i
-0.074653210517090
-0.047756691067739 + 0.011809670790806i
-0.047756691067739 - 0.011809670790806i
−2000 Elapsed time is 0.076879 seconds.
−150 −100 −50 0 50 100 150
Elapsed time is 0.226753 seconds.

Figura 11.3
11.4 Cálculo de los valores singulares j 265

11.4 Cálculo de los valores singulares


El cálculo de los valores singulares de una matriz A,

las raíces cuadradas no negativas de los valores propios de A T A

se pueden llevar a cabo aplicando a A T A alguno de los métodos expuestos para obtener los valores propios de matrices
simétricas.
Existen no obstante algoritmos más especializados basados en iteraciones QR de la matriz A. Veamos uno.

11.4.1 Algoritmo de Golub y Reinsch. Primera fase: Bidiagonalización


Se debe a los trabajos de Gene Howard Golub, EE.UU. 1932-2007, complementados por Reinsch.

Golub

Consiste en transformar la matriz A 2 Cmn con transformaciones de Householder en otra triangular superior bidiago-
nal; así  
B1
QB A…B D B D ;
0
donde 2 3 9
d1 f 2
6 d f 0 7 >
>
6 2 3 7 >
>
>
6 :: :: 7 =
6 : : 7 n
6 7
BD6 7 >
>
6 :: 7 >
6 0 : fn 7 >
>
6 7 ;
4 dn 5
m n
0
y QB D Qn    Q1 2 Rmm , …B D …1    …n 2 2 Rnn . El esquema operativo que sigue esta diagonalización con
una matriz A 64 es el de la figura 11.4.

   0 0   0 0  0 0  0 0  0 0
 0  0  0    0  0 0  0 0  0
    Q1 0    …1 0    Q2 0 0   …2 0 0   Q3 0 0   Q4 0 0  
 0  0  0 0  0 0  0 0 0 0 0 0
 0  0  0 0  0 0  0 0 0 0 0 0 0
 0  0  0 0  0 0  0 0 0 0 0 0 0
Figura 11.4: Operativa de la bidiagonalización de una matriz 6  4

La rutina en código M ATLAB del cuadro 11.32 es la que lo plasma.

11.4.2 Algoritmo de Golub y Reinsch. Segunda fase


Ya A bidiagonal, se diagonaliza del todo mediante un algoritmo iterativo haciendo

BkC1 D U Tk Bk V k ; k D 1; 2; : : : ;
266 j Capítulo 11. Valores y vectores propios. Valores singulares

function [Q1 A P1]= bidiag(A)


% Se bidiagonaliza A por Householder.
[m,n] = size(A); Q1=eye(m); P1=eye(n);
for k = 1:min(m,n)
% Introduce ceros debajo de la diagonal en la columna k.
u = A(:,k); u(1:k-1) = 0; sigma = norm(u);
if sigma ~= 0
if u(k) ~= 0, sigma = sign(u(k))*sigma; end
u(k) = u(k) + sigma; rho = 1/(sigma’*u(k));
v = rho*(u’*A); q1=rho*(u’*Q1);
A = A - u*v; Q1 = Q1 - u*q1;
A(k+1:m,k) = 0;
end
% Introduce zeros a la derecha de la supradiagonal en la fila k.
u = A(k,:); u(1:k) = 0; sigma = norm(u);
if sigma ~= 0
if u(k+1) ~= 0, sigma = sign(u(k+1))*sigma; end
u(k+1) = u(k+1) + sigma; rho = 1/(sigma’*u(k+1));
v = rho*(A*u’); p1=rho*(P1*u’);
A = A - v*u; P1 = P1 - p1*u;
A(k,k+2:n) = 0;
end
end
end

Cuadro 11.32

con U k y V k ortogonales, y tal que


lKım Bk D † D diag.1 ; : : : ; n /:
k!1
La descomposición en valores singulares será
 
ADU † V T;
Cálculo
donde
práctico de Cálculola SVD práctico
(3) de la SVD (3)
0

ETSII-UPM
U D Q diag.U ; I / yV D… ‘
V : B k m n B k ETSII-UPM
‰SVD de una matriz bidiagonal B, de tamaño n×n:

¾ Se puede aplicar el método QR ‰ conSVD de una matriz
kD:::;2;1
desplazamiento bidiagonal
a la matriz T=BTB. B, de tamaño n×n:
kD1;2:::
TB.
¾ También se pueden aplicar una serie (teóricamente infinita) de rotacioneslas
En la figura se esquematiza cómo se hace (nos recordará de alguna manera ideas el algoritmo
¾ Se puede aplicar el método QR condedesplazamiento a la de Jacobi
matriz T=B para el
cálculo de los valores propios de matrices
Givens a B para hacerla diagonal: simétricas,
¾ También pues
se se
puedenhace algo
aplicar parecido).
una serie (teóricamente infinita) de rotaciones de
ª 0 0 0º ª 0 0 0 0º ª
Givens
0 0º
a B
ª
para hacerla
0 0 0º
diagonal:
ª 0 0 0º
« 0 0 »» BG «« 0 0 »» G B «« 0 ª 0 0 » 0 0« 0 0 º ª 0 00 » 0 0«0 0 º ª 0 »» 0 0º ª 0 0 0º ª 0 0 0º
«0 «0 » BG13 « » « » G32B « » « 0 0 »» BG «« 0 0 0 »» G B ««0 0 »»
12 21

«0 0 0» o « 0 0 0» o «0 0 « 0 » o 0« 0 0 » BG12 « 0 » o 0«0 00» G 21B « 0 0 »


« » « » « » « 0» » « 0» »
13 32

« 0 0» o «0 0» o o« o«
« 0 0 « 0 0 « 0 0 0 » « 0 0 » « 0 0 0 »
«0 0 0 » «0 0 0 » «0 0 0 « » 0
« » 0
« » » » »
«¬0 0 0 0 »¼ «¬ 0 0 0 0 »¼ «¬ 0 0 0 «00 0 »¼ 0 «¬ 0 0» 0 « 00 0 »¼ 0 «¬0 0» 0 « 00 0 »¼ 0 » « 0 0 0 » « 0 0 0 »
«¬0 0 0 0 ¼» «¬ 0 0 0 0 ¼» «¬ 0 0 0 0 ¼» «¬ 0 0 0 0 ¼» «¬0 0 0 0 »¼
ª 0 0 0º ª 0 0 0º ª 0 0 0º ª 0 0 0º
«0 » «
0 0 » G B «0 »
0 0 » BG «0 « »
ª 0 0 0 00 0 º « »
ª 0 0 0 0 0º ª 0 0 0º ª 0 0 0º
BG 24 « » G54B « »
43 35 «0 0«0 00»» G B ««0 0 » 0 0 »» BG ««0 0 0 »» G B ««0 0 0 »»
o« « 0 0 0 »
»
o« « 0 0 »
»
o« « 0 0 BG 24 « 0 »
»
o« 43
»
35 54

«0 0 o «0 0» o o« o«
« 0 0 0 » « 0 0 » « 0 0 0 » « 0 0 0»
«0 0 » «0 0 0 » 0
« » 0
« » » » »
«¬0 0 0 0 »¼ «¬0 0 0 0 »¼ «¬0 0 0 «0 0 »¼ «¬0 0» 0 «00 0 »¼ 0 » « 0 0 0 » « 0 0 0 »
¬«0 0 0 0 ¼» ¬«0 0 0 0 ¼» ¬«0 0 0 ¼» ¬«0 0 0 0 »¼
¾
El Se comprueba
código que losque
de M ATLAB elementos
hace tododeel¾
latrabajo
supra-diagonal tienden
se lista enque
Seacomprueba el los a cero
cuadro (desde
11.33.
elementos
el
Utilicemos
de el algoritmo
la supra-diagonal en una
tienden pequeña
a cero (desde el
n-1 hasta el primero) y los de la diagonal
sesión de M ATLAB como indica el cuadro 11.34. los valores singulares.
¾ Latiempos
convergencia puede serqueacelerada n-1 hasta
utilizando el primero) y los de la diagonal a los valores singulares.
 1Los  y la precisión se consiguen son desplazamiento.
los del cuadro 11.35. Para una matriz complicada como M D
0002 ¾ La convergencia puede ser acelerada utilizando desplazamiento.
0 0 3 0 0 se puede conseguir lo que lista el cuadro 11.36.
00000
04000

11.4.3 Algoritmo de Jacobi


Las raíces cuadradas no negativas de los valores propios de A > A son los valores singulares de A. Utilicemos el al-
goritmo de Jacobi para obtener los valores propios de una matriz simétrica, actuando sobre A > A, para de esta forma
conseguir los valores singulares de A: ver cuadro 11.37.
11.4 Cálculo de los valores singulares j 267

function [S U V it t t1 F]=svd_GolRein_1(A)
% Se calcula al descomposición en valores singulares, [U S V]=U*S*V=A,
% de una matriz cualquiera m x n.
% Sigue casi exactamente el "paper" de Golub y Reinsch, "Singular Value x=q(l); y=q(k-1); g=e(k-1); h=e(k); % Cálculo despl. con 2x2
% Decomposition and Least Squares Solutions", Numeri. Math., 14, 1970. f=((y-z)*(y+z)+(g-h)*(g+h))/(2*h*y); g=sqrt(f*f+1);
[m n]=size(A); tol=norm(A,’fro’)*sqrt(eps); itr=0; tic; f=((x-z)*(x+z)+h*(y/(f+(sign(f)+(f==0))*g)-h))/x;
if n>m, A=A’; [m n]=size(A); itr=1; end % Necesario m>=n c=1; s=1; % Comienzo iteración QR
% Bidiagonaliza A por Householder: U*B_n*V’ = A for i=l+1:k
g=e(i); y=q(i); h=s*g; g=c*g;
[U B_n V] = bidiag_Hansen(A); t1=toc; tic; e(i-1)=sqrt(f*f+h*h); z=e(i-1); c=f/z; s=h/z;
q=B_n(:,1); e=[0; B_n(1:n-1,2)]; U1=eye(m); V1=eye(n); f=x*c+g*s; g=-x*s+g*c; h=y*s; y=y*c;
k=n; it=0; V1(:,[i-1 i])=V1(:,[i-1 i])*[c -s;s c];
while k>0 % Bucle principal proceso itera. q(i-1)=sqrt(f*f+h*h); z=q(i-1); c=f/z; s=h/z;
caso=1; f=c*g+s*y; x=-s*g+c*y;
for l=k:-1:1 U1(:,[i-1 i])=U1(:,[i-1 i])*[c -s;s c];
if abs(e(l)) <=tol, e(l)=0; caso=0; break, end end
e(l)=0; e(k)=f; q(k)=x;
if abs(q(l-1))<=tol, q(l-1)=0; break, end it=it+1;
end end
if caso U=U*U1; V=V1’*V’;
c=0; s=1; l1=l-1; % Cancelación columna l-1: Givens S=zeros(m,n); % Valores singulares en S y salida resul.
for i=l:k for i=1:n
f=s*e(i); e(i)=c*e(i); ssn=q(i); S(i,i)=abs(ssn); if ssn<0, V(i,:)=-V(i,:); end,
if abs(f)<=tol, break, end end
[q ix]=sort(diag(S),’descend’);
g=q(i); h=sqrt(f*f+g*g); c=g/h; s=-f/h; q(i)=h; for i=1:n, S(i,i)=q(i); end % Valores sing. en S de + a -
U1(:,[l1 i])=U1(:,[l1 i])*[c -s;s c]; ix1=1:m; P1=eye(m); ix1(1:n)=ix; P1=P1(:,ix1); U=U*P1; V=V(ix,:);
end F=max(max(U*S*V-A)); t=toc; % Chequeo precisión resul.
end if itr==1, S=S’; Te=U; U=V’; V=Te’; end % Si m<n, trasponer
z=q(k); % Comprobar convergencia if nargout==1, S=diag(S); end
if l==k end
if z<0, q(k)=-z; V1(:,k)=-V1(:,k); end
k=k-1; continue
end

Cuadro 11.33

>> A=[1 2 3;3 4 5;6 7 8]; >> A=[1 2 3;3 4 5;6 7 8];
>> [S U V]=svd_GolRein_1(A) >> [V S U]=svd(A)
S = V =
14.5576 0 0 -0.2500 -0.8371 -0.4867
0 1.0372 0 -0.4852 -0.3267 0.8111
0 0 0.0000 -0.8379 0.4389 -0.3244
U = S =
-0.2500 -0.8371 -0.4867 14.5576 0 0
-0.4852 -0.3267 0.8111 0 1.0372 0
-0.8379 0.4389 -0.3244 0 0 0.0000
V = U =
-0.4625 -0.5706 -0.6786 -0.4625 0.7870 0.4082
0.7870 0.0882 -0.6106 -0.5706 0.0882 -0.8165
0.4082 -0.8165 0.4082 -0.6786 -0.6106 0.4082
>> U*S*V >> V*S*U’
ans = ans =
1.0000 2.0000 3.0000 1.0000 2.0000 3.0000
3.0000 4.0000 5.0000 3.0000 4.0000 5.0000
6.0000 7.0000 8.0000 6.0000 7.0000 8.0000

Cuadro 11.34

>> A=rand(1000);
>> A = (A - .5)*2;
>> tic, [S U V]=svd_GolRein_1(A); toc
Elapsed time is 13.971564 seconds.
>> tic, [V S U]=svd(A); toc
Elapsed time is 0.315793 seconds.
>> norm(diag(S-S1))
ans = 1.1278e-08

Cuadro 11.35
268 j Capítulo 11. Valores y vectores propios. Valores singulares

>> M=[1 0 0 0 2;0 0 3 0 0;0 0 0 0 0;0 4 0 0 0]


M =
1 0 0 0 2
0 0 3 0 0 >> [U S V]=svd(M)
0 0 0 0 0 U =
0 4 0 0 0 0 0 1 0
>> [S U V]=svd_GolRein_1(M) 0 1 0 0
S = 0 0 0 -1
4.0000 0 0 0 0 1 0 0 0
0 3.0000 0 0 0 S =
0 0 2.2361 0 0 4.0000 0 0 0 0
0 0 0 0 0 0 3.0000 0 0 0
U = 0 0 2.2361 0 0
0 0 -1 0 0 0 0 0 0
0 -1 0 0 V =
0 0 0 1 0 0 0.4472 0 -0.8944
1 0 0 0 1.0000 0 0 0 0
V = 0 1.0000 0 0 0
0 1.0000 0 0 0 0 0 0 1.0000 0
0 0 -1.0000 0 0 0 0 0.8944 0 0.4472
-0.4472 0 0 0 -0.8944
0 0 0 1.0000 0
0 0 0 0 1.0000

Cuadro 11.36

>> A=[1 2 3;3 4 5;6 7 8];


>> [V D it]=Jacobi_val_12(M’*M)
>> [V S U]=svd(A)
>> A=[1 2 3;3 4 5;6 7 8]; V =
V =
>> [V D it]=Jacobi_val_12(A’*A) 0.4472 0 0 0 -0.8944
-0.2500 -0.8371 -0.4867
V = 0 1.0000 0 0 0
-0.4852 -0.3267 0.8111
0.7870 0.4082 -0.4625 0 0 1.0000 0 0
-0.8379 0.4389 -0.3244
0.0882 -0.8165 -0.5706 0 0 0 1.0000 0
S =
-0.6106 0.4082 -0.6786 0.8944 0 0 0 0.4472
14.5576 0 0
D = D = 0
0 1.0372 0
0.0000 0
1.0759
0 0 0.0000 Con la matriz M : 5
U =
211.9241 9
-0.4625 0.7870 0.4082
it = 6 16 it = 1
-0.5706 0.0882 -0.8165
>> sqrt(D) >> sqrt(D)
-0.6786 -0.6106 0.4082
ans = ans = 0
>> V*S*U’
0.0000 0
ans =
1.0372 2.2361
1.0000 2.0000 3.0000
14.5576 3.0000
3.0000 4.0000 5.0000
4.0000
6.0000 7.0000 8.0000

Cuadro 11.37

Algo más sofisticado que el que hemos presentado, aunque en lo esencial igual, es este algoritmo que se lista en el
cuadro 11.38.

Referencias, fuentes y lecturas complementarias


Lo que se expone en este capítulo y su forma de hacerlo, en especial los métodos más avanzados, están sacados de
muchos artículos o trabajos consultados en Internet. Fruto de ello también son los programas de ordenador elaborados
o adaptados por el autor, algunos bastante sofisticados pero asequibles en cualquier caso. Los códigos profesionales son
mucho más eficaces y con gran capacidad de cálculo y rapidez.
La referencia esenciales para seguir casi todos los métodos expuestos son Burden y Faires [2011], Eldén et al. [2004],
Golub y Van Loan [2013], Heath [2002], Higham [2002], Quarteroni, Sacco y Saleri [2000], Sauer [2012] y en los libros
del autor.
11.4 Cálculo de los valores singulares j 269

function [U S V] = svd_J(A,tol)
% SVDJ Singular value decomposition using Jacobi algorithm. A = A * G;
if nargin == 1, tol = eps; end % Tolerancia por defecto V = V * G;
[M,N] = size(A); K = min(M,N); % K es el núm. de valores sing. end
On = 0; end
for c=A, On=On + sum(abs(c).^2); end end
On=On./N; % Suma coef.^2/N end
Previous_Off = Inf; V = eye(N); end
while true end
R = 0; % Contar las rotaciones if R == 0, error(’No rotations performed during sweep.’), end
for r = 1:N - 1 % Calculate the sum of the off-diagonal elements of the matrix B.
for c = r + 1:N B = A’ * A;
% Calculate the three elements of the implicit matrix B that are Off = sum(sum(abs(triu(B,1))))/(N.^2); % Normalise by the matrix size!
% needed to calculate a Jacobi rotation. Since B is Hermitian, theif (Off/On) < tol, break; end % Off-diagonal sum is small enough to stop.
% fourth element (b_cr) is not needed. if Previous_Off < Off
b_rr = sum(abs(A(:,r)).^2); % Real value. warning(’QTFM:information’, ...
b_cc = sum(abs(A(:,c)).^2); % Real value. ’Terminating sweeps: off diagonal sum increased on last sweep.’)
b_rc = A(:,r)’ * A(:,c); % Same type as A. break;
% Calculate a Jacobi rotation (four elements of G). The two valuesend
% that we calculate are a real value, C = cos(theta) and S, a value
Previous_Off = Off;
% of the same type as A, such that |S| = sin(theta). end
m = abs(b_rc); % Extract and sort the singular values. The vector T may be longer than the
if m ~= 0 % If the off-diagonal element is zero, we don’t rotate.% number of singular values (K) in cases where A is not square.
tau = (b_cc - b_rr)/(2*m); % tau is real and will be zero if [T,IX] = sort(sqrt(abs(diag(B))),’descend’);
% the two on-diagonal elements areif nargout == 0 || nargout == 1 % .. only the singular values are needed.
% equal. In this case G will be an U = T(1:K);
% identity matrix, and there is noend
% point in further calculating it.if nargout == 3 % .. the singular vectors and singular values are needed.
if tau ~= 0 A = A(:, IX); % Map the columns of A and V into the same order as the
R = R + 1; % Count the rotation we are about to perform. V = V(:, IX); % singular values, using the sort indices in IX.
t = sign(tau)./(abs(tau) + sqrt(1+tau.^ 2)); % Construct the left singular vectors. These are in A but we need
C = 1./sqrt(1 + t.^ 2); % to divide each column by the corresponding singular value. This
S = (b_rc.* t.* C)./ m; % calculation is done by replicating T to make a matrix which can
% Initialize the rotation matrix, which is the same size as the % then be divided into A element-by-element (vectorized division).
% implicit matrix B. U = A./ repmat(T’,M,1);
% We have to create an identity matrix here of the same type as A, S = diag(T); % Construct a diagonal matrix of singular values from
% that is, quaternion if A is a quaternion, double if A is double. % the vector T, because when there are three output
% To do this we use a function handle (q.v.) constructed from the % parameters, S is required to be a matrix.
% class type of A. This was done before the loop, since the typeend
% of A is invariant. end
G = eye(N); G(r,r) = C; G(c,c) = C; G(r,c) = S; G(c,r) =-conj(S);

Cuadro 11.38
Capítulo 12

Optimización. Programación no lineal sin


condiciones

Contenido
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.4 Métodos de Newton Amortiguado y de Región de Confianza . . . . . . . . . . . . . . . . . . 281
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

La OPTIMIZACIÓN es un lenguaje y forma de expresar en términos matemáticos un gran número de


problemas complejos de la vida cotidiana y cómo se pueden resolver de forma práctica mediante los
algoritmos numéricos adecuados
L’optimisation est une discipline combinant plusieurs domaines de compétences : les mathématiques décisionelles, les statistiques et
l’informatique. Cette méthode scietifique a pour but de maximiser ou de minimiser un objectif. En pratique l’optimisation est souvent
utilisée por augmenter la rentabilité ou diminuer les coûts.
An act, process, or methodology of making something (as a design, system, or decision) as fully perfect, functional, or effective as
possible; specifically: the mathematical procedures (as finding the maximum of a function) involved in this.

La optimización se estudia en dos grandes partes:


Optimización sin condiciones
minimizar f W Rn ! R

Optimización con condiciones


minimizar
n
f .x/
x2R

sujeta a ci .x/ D 0; i 2 E;
cj .x/  0; j 2 I:

El esquema general de cómo se lleva a cabo un proyecto de optimización, y de simulación numérica en general, se
aproxima mucho al de la figura 12.1.
The function f (x
x∗ + 2pπ , where

12.2 Condiciones para la existencia de un punto mínimo j 271


1. I NTRODUCTION Figure
The function f (x
In this lecture note we shall discuss numerical methods for the solution of minimizer, x∗ . B
the optimization problem. For a real function of several real variables we giving the minima
want to find an argument vector which corresponds to a minimal function
value:

Definition 1.1. The optimization problem:


Find x∗ = argminx f (x) , where f : IRn 7→ IR .
Figure 1.
The function f is called the objective function or cost function and x∗ is the
minimizer. Figura 12.1
In some cases we want a maximizer of a function. This is easily determined The ideal situation
if we find a minimizer of the function with opposite sign.
12.1 El problema de la optimización sin condiciones tion has a unique m
Optimization plays an important role in many branches of science and appli- In some cases the o
Consiste
cations: en dar solución
economics, a
operations research, network analysis, optimal design minimizers. In such
of mechanical or electrical systems, to mentionminimizar f W Rn ! R
but a few. mizers.
La función f se supone continua en algún conjunto abierto de Rn y con derivadas parciales continuas hasta In segundo
many objective f
Example 1.1. In this example we consider functions of one variable. The function
orden en ese abierto. and several local m
2
Algunos
f (x)ejemplos
= (x −dex∗casos
) que se pueden presentar. Si x  es una constante, la función f .x/ D .x x  /can
2
tiene
findunthe global

único punto donde alcanza el mínimo:
∗ en el valor de x .
has one, unique minimizer, x , see Figure 1.1.
1. I NTRODUCTION 2 global optimization
y
The methods descr
1. I NTRODUCTION 2 function. When a
Figure 1.1:The
y= (x − x∗f)2(x)
function ∗
. = −2 cos(x − x ) has infinitely many minimizers: x = whether it is a glob
x∗ + 2pπ , where p is an integer; see Figure 1.2.
One minimizer. not even be sure tha
x* x
The function f (x) = −2 cos(x − xy∗ ) has infinitely many minimizers: x =
La función f .x/ D x∗2+
cos.x x  / tiene
2pπ , where p ismínimos
an integer; seeen
locales Figure 
x D x1.2.
C 2a.
y x

Figure 1.2: y = −2 cos(x − x∗ ). Many minimizers.


x
The function f (x) = 0.015(x − x∗ )2 − 2 cos(x − x∗ ) has a unique global

ution of . Besides
minimizer, xFigure 1.2: ythat,
= −2 it also
cos(x has−several socalled
x∗ ). Many local minimizers, each
minimizers.
 2 
bles we f .x/ D 0;015.x giving
x the un
/ tiene minimal functionglobal,
único mínimo value xinside a certain
,∗y 2muchos region,∗ see Figure 1.3.
locales.
The function f (x) = 0.015(x − x ) − 2 cos(x − x ) has a unique global
function
ution of minimizer, x∗ . Besides that, it also has y several socalled local minimizers, each

bles we giving the minimal function value inside a certain region, see Figure 1.3.
function y
x* x

x∗ )2 − 2 cos(x − x∗ ). x
Figure 1.3: y = 0.015(x − x*
x∗ is the One global minimizer and many local minimizers.
12.2 Condiciones para la existencia
∗ 2
de un punto

mínimo
Figure 1.3: y = 0.015(x − x ) − 2 cos(x − x ).
ermined
x is the
∗ La meta de cualquier método de optimización es encontrar
One global el mínimo
minimizer and many de laminimizers.
globallocal función, si existe, o un mínimo local.
The ideal situation for optimization computations is that the objective func-
tion has a unique minimizer. We call this the global minimizer.
nd appli-
ermined In some
The idealcases the objective
situation function
for optimization has several (or
computations even
is that theinfinitely
objectivemany)
func-
l design minimizers. In such problems it may be sufficient to find
tion has a unique minimizer. We call this the global minimizer. one of these mini-
nd appli- mizers.
In some cases the objective function has several (or even infinitely many)
l design In many objective
minimizers. In suchfunctions
problemsfrom applications
it may wetohave
be sufficient findaone
global minimizer
of these mini-
function
and several local minimizers. It is very difficult to develop methods which
mizers.
272 j Capítulo 12. Optimización. Programación no lineal sin condiciones 7.4 Convex and Concave Functions 193

Definición 12.1 Una función f W Rn ! R se dice convexa si


f .˛x1 C ˇx2 /  ˛f .x1 / C ˇf .x2 /
n
para todo x1 ; x2 2 R y todo ˛; ˇ 2 R, con ˛ C ˇ D 1, ˛  0, ˇ  0.

y = f(x)
y

x
convex
(a)
Teorema 12.1 Condiciones de convexidad de primer orden. Una función f W Rn ! R derivable —es decir, su
gradiente, rf .x/, existe para todo x 2 Rn — es convexa si para todo x; y 2 Rn se cumple que
f
f .y/  f .x/ C rf .x/T .y x/:
3.1 Basic properties and examples 69

f ( y)

f (x ) + ∇ f (x )T ( y − x )

(x, f (x ))

Teorema 12.2 Condiciones


Figure 3.2 Ifde
f isconvexidad de segundo
convex and differentiable, orden.
then Una
f (x)+∇f (x)función
T W Rn ! R que tiene derivadas parciales
(y−x) ≤ff (y)
de segundo orden —es decir, existe su matriz Hessiana,convex
for all x, y ∈ dom f . r f .x/, para todo xx 2 Rn —, es convexa si para todo x 2
2

Rn ¤720 se cumple que x T r 2f .x/x  0, es decir, la Hessiana 3 Convex functions


(b) es semidefinida positiva.
2 2
Un ejemplo es lais función
given by f W R ! R, f .x; y/ D x =y, y > 0.
f 
0 x∈C
I˜C (x) =
∞ x 6∈ C.
The convex function I˜C is called the indicator function of the set C.
2
We can play several notational tricks with the indicator function I˜C . For example
the problem of minimizing a function f (defined on all of Rn , say) on the set C is the
same as minimizing the function f + I˜C over all of Rn . Indeed, the function f + I˜C
is (by our convention) f restricted to the set C.
f ( x, y )

1
In a similar way we can extend a concave function by defining it to be −∞
outside its domain.
0
2 2
3.1.3 First-order conditions x
1 nonconvex 0
y
Suppose f is differentiable (i.e., its gradient ∇f exists
(c) at each point in dom f , x
which is open). Then f is convex if and only if dom0f is−2convex and
Fig. 7.3 Convex and nonconvex functions
f (y) ≥Figure
f (x) +3.3 T
Graph
∇f (x) x)f (x, y) = x2 /y.
(y −of (3.2)
Teorema 12.3 Condiciones necesarias de mínimo local de primer orden. Si x  es un mínimo local de f W Rn ! R,
se cumple queholds for all x, y ∈ dom f . This inequality is illustrated in figure 3.2.
The affine function of y given by f (x)+∇f (x)T (y−x)
 is, of course, the first-order
Taylor approximation of f near x. The inequalityrf .x (3.2)
/ D 0:states that for a convex
• Negative entropy. x log x (either on R global
function, the first-order Taylor approximation is in fact a++
, or underestimator
on R+ , defined of
as 0 for x = 0)
the is
function.convex.
Un punto x en el que rf .x/ D 0 se denomina punto estacionario de f .x/.
Conversely, if the first-order Taylor approximation of a function is
always a global underestimator of the function, then the function is convex.
TheConvexity or concavity
inequality (3.2) of these
shows that from examplesabout
local information can abe shown
convex by verifying the ba-
function
(i.e.,
sic its value and derivative
inequality (3.1), oratby a point) we can
checking derive
that theglobal information
second (i.e., ais nonnegative or
derivative
global underestimator of it). This is perhaps the most important property of convex
nonpositive. For example, with f (x) = x log x we have
functions, and explains some of the remarkable properties of convex functions and
convex optimization problems. As ′
one simple example, the ′′ inequality (3.2) shows
that if ∇f (x) = 0, then for all yf∈(x)
dom =f log x≥
, f (y) + f1,(x), i.e.,fx (x) = 1/x,
is a global minimizer
of the function f .
so that f ′′ (x) > 0 for x > 0. This shows that the negative entropy function is
(strictly) convex.
We now give a few interesting examples of functions on Rn .
274 j Capítulo 12. Optimización. Programación no lineal sin condiciones

Esta minimización puede hacerse estrictamente,


k o de una forma aproximada, esperándose en este caso un coste menor
mputing a Step
en número Length
de operaciones y tiempo. Si α
se opta por la inexacta, o truncada, hay que garantizar con un indicador que

f .x C ˛p/ < f .x/;


challenges in finding a good αk are both in avoiding that
es decir que la función decrezca suficientemente a lo largo de p. Hay que tratar de evitar pasos muy largos, como en la
step length is too
parte izquierda long,
de la figura 12.2 con
or la función
too x 2 , donde, las direcciones pk D .
short, 1/kC1 y los pasos ˛k D 2 C 3=2kC1
producen el efecto indicado, desde x0 D 2. También pasos muy cortos, como las direcciones pk D 1 en x 2 y los pasos
3 3

2.5 2.5

2 2

1.5 1.5

1 1

0.5 0.5

0 0

−2 −1.5 −1 −0.5 0 0.5 1 1.5 2 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2

Figura 12.2: (the objective function f (x) = x22 and the iterates xk+1 = xk + αk pk generated by the descent
objective function f (x) = x2 Direcciones
and thedepiterates
directions
descenso en la función
k = −1 andx
k+1 x xque
steps α=
k+
k = 1/2
no producen
αkfrom
k+1
avances adecuados
pk generated
x0 = 2).
e descent directions
kC1 pk = (−1)k+1 and steps αk = 2+3/2k+1 from x0 = 2)
˛k D 1=2 , al partir también de x0 D 2, que producen lo que se ve en la parte derecha de esa figura 12.2.
Del desarrollo de Taylor de la función a minimizar se tiene que

'.˛/ D f .x C ˛p/ C ˛pT rf .x C ˛p/ C O.˛ 2 /

y de él que, en ˛ D 0, ' 0 .0/ D pT rf .x/. La figura 12.3 muestra una posible evolución de '.˛/. La expresión de
' 0 .0/ es la recta A: tangente
108 a f .x C ˛p/ en ˛ D 0. La recta D es '.0/. El descenso implica simultáneamente que

D f .xC˛p/
f f.x/
(x k )

( )

A C

˛11
α ˛22
α
α
˛
Figura 12.3: Posibles casos (a)
de evolución de la función '.˛/

'.˛/ < '.0/ y que '.˛/ > ' 0 .0/. f (x k )


La recta B es la ecuación θ
f .x C ˛p/ D f .x/ C %˛rf .x/Tp; 0  % < 21 ;

cuya pendiente en la zona sombreada


f (x k+1) puede variar entre
C 0 y 21 ˛rf
B .x/Tp. Representa una fracción, %, (de 0 a 12 ) de la
reducción que promete la aproximación de Taylor de primer orden en x. 22/78

La recta C es f .x C ˛p/ D f .x/ C .1 %/˛rf .x/Tp cuya pendiente abarca la zona sombreada desde rf .x/Tp a
1
2
˛rf .x/Tp.
a b c 1 2 3

d e f g 9 4 6 5

h i j 10 8 7
αL α1 α* α0 α2
α

(b)

Figure 4.14. (a) The Goldstein tests. (b) Goldstein tests satisfied.
12.3 Obtención de la solución. Métodos de dirección de descenso j 275

Los criterios de Armijo y Goldstein de descenso suficiente dicen que el ˛ 2 .0; 1/ que se escoja debe ser tal que, para
0 < % < 12 <  < 1, por ejemplo % D 0;0001 y  D 0;9,

f .x C ˛p/  f .x/ C %˛rf .x/Tp Criterio de Armijo


y
f .x C ˛p/  f .x/ C ˛rf .x/Tp Criterio de Goldstein
Otro criterio es el de Wolfe, con dos condiciones también. La primera es igual a la de Armijo, la segunda

rf .x C ˛p/T p  rf .x/T p:

También denominada de curvatura. Indica que la pendiente de la función debe ser menor en el nuevo punto.
El procedimiento numérico inexacto más extendido para calcular la amplitud de paso ˛ se conoce como backtracking.
Comienza con un paso completo, ˛ D 1, y lo va reduciendo mediante un factor constante, ˇ  ˛, ˇ 2 .0; 1/, hasta
que se cumplan los criterios de Armijo y Goldstein, o uno de los dos: preferentemente el de Armijo. Sólo funciona si
f .x C ˛p/0˛D0 D rf .x/T p < 0 (la dirección es de descenso).

12.3.2 Método de la dirección del gradiente o de la máxima pendiente


Consideremos el desarrollo en serie de Taylor de f .x/ hasta primer orden:

f .x C p/ D f .x/ C rf .x/T p C O kpk2 :
La dirección p en x es una dirección de descenso si
rf .x/T p < 0:
El descenso relativo de la función en p es
f .x/ f .x C p/ rf .x/T p
D D krf .x/k cos 
kpk kpk
donde  es el ángulo que forman p y rf .x/.
El descenso cualitativo será máximo cuando  D , donde cos./ D 1. Es decir, cuando la dirección de descenso
es
p D rf .x/

denominada de máxima pendiente. En la figura 12.4 se ven esas máximas pendientes a lo largo de una dirección pk .
El algoritmo de la máxima pendiente, de convergencia lineal, y su codificación en M ATLAB, son los del cuadro 12.1.
Ejemplo 12.1 Probemos el método de la máxima pendiente resolviendo minimizar e x1 C3x2 0;1
Ce x1 3x2 0;1
Ce x1 0;1
.
x2R2
Su ejecución con el programa anterior en una sesión de M ATLAB da como resultado lo que lista el cuadro 12.2
En los gráficos de la figura 12.5 se puede ver el comportamiento del proceso iterativo. El cálculo de la amplitud se
hace mediante backtracking y, exactamente, por el método de la bisección. Si bien el número de iteraciones es superior
con el cálculo inexacto de la amplitud de paso, el tiempo en obtener la solución puede ser bastante menor.
La función objetivo y su gradiente están calculadas, aparte, en la rutina que sigue. Se incluye en el listado del código
anterior, al final. El grueso del programa valdría para tratar cualquier otra función.
function [f g]= objfun_min1(x)
% f(x) = sum(exp(A*x+b))
A = [1 3; 1 -3; -1 0]; b = -0.1*[1;1;1];
f = sum(exp(A*x+b));
g = A’*exp(A*x+b);
end

Si utilizamos para resolver este problema el solver de M ATLAB para minimización de funciones sin condiciones,
fminunc, una sesión al respecto daría como resultado lo que se explicita en el cuadro 12.3.
3 Line search methods
276 j Capítulo 12. Optimización. Programación no lineal sin condiciones
Iteration: xk+1 = xk + αk pk , where αk is the step length (how far to move along pk ), αk > 0; pk
is the search direction.

2.5

1.5

pk
xk

1
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2
Figura 12.4: Diversas pendientes
T de la función a minimizar a loπlargo de una dirección de descenso
Descent direction: pk ∇fk = kpk k k∇fk k cos θk < 0 (angle < 2
with −∇fk ). Guarantees that f
can be reduced along pk (for a sufficiently smooth step):

f (xk + αpk ) = f (xk ) + αpTk ∇fk function


+ O(α2 ) [x,f] = Maxima_pendiente_unc(fun,x0)
(Taylor’s th.)
< f (xk ) % Método defor
la all
máxima pendiente
sufficiently small α > 0
rho = 0.1; beta = 0.5; % Parámetros y partida
f1=0; maxit = 100; x = x0;
• The steepest descent direction, i.e., the direction for i=1:maxit along which f decreases most rapidly,
% Proceso iterativois fig. 2.5
T 2
pk = −∇fk . Pf.: for any p, α: f (xk + αp)[f,g] = f (x k ) + αp ∇fk + O(α ) so the rate of fig. 2.6
= fun(x);
Dados Un x WD x0 y change
una tol.in Hacer f ound
f along p atWD xkfisalpse
T if (abs(f-f1)
∇fk (the directional < 1e-10),
derivative) = kpkbreak,
k∇fk kend cos θ. Then
while (not f ound ) andmin(k <T ∇f
kmax ) kpk = 1 is achieved when cos p θ= = -g;
−1,alpha
i.e., =p 1;
= −∇fk / k∇fk k.
pp k s.t.
Calcular dirección de descenso p D rf .x/ for k=1:10 % Ampl. paso con backtracking
This direction is ⊥ to the contours of f . Pf.: take xxnew = the
+ p on x+alpha*p;
same contourfxnew = fun(xnew);
line as x. Then, by Taylor’s th.:
if (p no existe) or (tol) 1 if fxnew < f + alpha*rho*g’*p
1 pT ∇2 f (x + ǫp)p
f ound WD true f (x + p) = f (x) + pT ∇f (x) + pT ∇2 f (x + ǫp)p, ǫ ∈ (0, 1) ⇒ cos ∠(p, ∇f (x)) = − −−−−−→ 0
2 break 2 kpk k∇f (x)k kpk→0
else else alpha = alpha*beta;
Amplitud debutpaso
kpk˛→con backtracking
0 along end
the contour line means p/ kpk is parallel to its tangent at x.

x WD x C The Newton direction is pk = −∇2 fk−1 ∇fk end


• ˛p . This corresponds to assuming f is locally
x = x + alpha*p; f1=f;
end quadratic and jumping directly to its minimum. Pf.: by Taylor’s
fprintf(’%4.0f %13.8eth.:
%13.8e %13.8e %13.8e\n’,i,x,f,alpha);
k WD k C 1 end
end 1
f (xk + p) ≈ fk +end pT ∇fk + pT ∇2 fk p = mk (p)
2
function [f g]= objfun_min1(x)
which is minimized (take derivatives wrtA p) = [1
by 3;
the1Newton
-3; -1 0]; if ∇2 fk is
b = -0.1*[1;
direction 1; pd.
1]; (✐ what
happens if assuming f is locally linear (order 1)?)
f = sum(exp(A*x+b)); if nargout<2, return, end
g = A’*exp(A*x+b);
In a line search the Newton direction has end a natural step length of 1.

• For most algorithms, pk = −B−1


k ∇fk where Bk is symmetric nonsingular:
Cuadro 12.1

6
>> [x f]=Maxima_pendiente_unc(@objfun_min1,[-1;1])
1 -1.26517900e+000 -2.50497831e-001 9.16207023e+000 6.25000000e-002
2 -6.29000734e-001 6.51924176e-002 3.86828053e+000 2.50000000e-001
3 -4.50514899e-001 -7.72284882e-002 2.68052760e+000 2.50000000e-001
4 -4.21089848e-001 2.38719166e-002 2.60419641e+000 1.25000000e-001
5 -3.97610304e-001 -8.05335008e-003 2.56942254e+000 1.25000000e-001
6 -3.65030711e-001 1.39821003e-002 2.56295544e+000 2.50000000e-001
.
.
21 -3.46582187e-001 -4.11844758e-006 2.55926670e+000 1.25000000e-001
22 -3.46579437e-001 1.81036718e-006 2.55926670e+000 1.25000000e-001
23 -3.46577566e-001 -7.95799575e-007 2.55926670e+000 1.25000000e-001
x =
-0.346577566436640
-0.000000795799575
f =
2.559266696682093

Cuadro 12.2
12.3 Obtención de la solución. Métodos de dirección de descenso j 277

5
10

0
10
error

−5 inexacta: backtracking
10

−10
10
line search exacta: bisecc.

−15
10
0 5 10 15 20 25
k

Figura 12.5: Proceso de resolución de minimizarx2R2 e x1 C3x2 0;1 Ce x1 3x2 0;1 C e x1 0;1 con la máxima pendiente y
backtracking o no

>> x0=[-1;1];
>> options = optimset(’Display’,’iter’,’GradObj’,’on’,’LargeScale’,’off’);
>> [x,fval,exitflag,output] = fminunc(@objfun_min1,x0,options)
First-order
Iteration Func-count f(x) Step-size optimality
0 1 9.16207 20
1 2 3.57914 0.0499801 2.5
2 3 3.31537 1 2.11
3 4 2.60267 1 0.548
4 5 2.56573 1 0.349
5 6 2.55954 1 0.0613
6 7 2.55928 1 0.011
7 8 2.55927 1 0.000144
8 9 2.55927 1 1.88e-007
Optimization terminated: relative infinity-norm of gradient less than options.
TolFun.
x =
-0.3466
-0.0000
fval =
2.5593
exitflag =
1
output =
iterations: 8
funcCount: 9
stepsize: 1
firstorderopt: 1.8773e-007
algorithm: ’medium-scale: Quasi-Newton line search’
message: [1x85 char]

Cuadro 12.3
278 j Capítulo 12. Optimización. Programación no lineal sin condiciones

12.3.3 Método de Newton


Consideremos el desarrollo de Taylor de f .x/ hasta segundo orden de derivadas a lo largo de pk :
1 
f .x C p/ D f .x/ C rf .x/T p C p T r 2f .x/ p C O kpk3 ;
2
donde g D rf .x/ es el vector gradiente y la matriz
2 @2 f .x/ @2 f .x/ @2 f .x/
3
@2 x @x1 @x2
 @x1 @xn
6 1
7
6 @2 f .x/ @2 f .x/ @2 f .x/ 7
6 @x @x @2 x2
 7
H D r 2f .x/ D 6
6 :
2 1
::
@x2 @xn 7
:: 7,
6 :: :: 7
4 : : : 5
@2 f .x/ @2 f .x/ @2 f .x/
!"#$%&'()*"$+%,) !"#$%&'()*"$+%,)
@xn @x @xn @x
1
 2 @2 xn
!"#$%&'()*"$+%,) !"#$%&'()*"$+%,)
la Hessiana.
La idea del método de Newton se esquematiza mediante la sucesión de modelos de este gráfico

! ! !

La condición necesaria de óptimo de ese desarrollo, rf .x  / D 0, conduce a la ecuación

rf .x/ C r 2f .x/p D g C H p D 0.

Este es un sistema lineal de ecuaciones cuya solución es la dirección de Newton hacia el óptimo.
Si la matriz H D r 2 f .x/ es definida positiva (x T H x > 0 para cualquier x ¤ 0), la dirección de Newton es una
dirección de descenso pues
0 < pT H p D pT g;
cumpliéndose así que p T g < 0, como dedujimos.
El algoritmo de Newton para minimizar f .x/ y un código de M ATLAB para llevarlo a cabo son los del cuadro 12.4.
Si la Hessiana es definida positiva, la convergencia del método de Newton es cuadrática. Funciona especialmente bien
en las proximidades del óptimo o un punto estacionario.
Para resolver con él otra vez minimizarx2R2 e x1 C3x2 0;1 C e x1 3x2 0;1 C e x1 0;1 en una sesión de M ATLAB, se
haría lo que apunta el cuadro 12.5.
La convergencia del método y el error vs iteración son los de la figura 12.6.

12.3.3.1 Combinación de máxima pendiente y Newton


La dirección de Newton es siempre de descenso si la matriz Hessiana es definida positiva. Un algoritmo híbrido de
máxima pendiente y Newton que combinase las mejores prestaciones de ambos, para puntos de arranque lejanos donde
puede que no se de esa condición de la Hessiana, podría mejorar las opciones de resolución del problema.
A continuación, en el cuadro 12.6 se presenta el esquema de actuación de esta combinación de algoritmos y un código
que lo implementa.
Ejemplo 12.2 Vamos a probar este algoritmo para resolver la (complicada) función de Rosenbrock
2
minimizar 100 x2 x12 C .1 x1 /2 :
x2R2

La gráfica de esta función en 3D y sus curvas de nivel son las de la figura 12.7.
Programado en M ATLAB el problema, partiendo de un punto alejado, con el código anterior en una sesión de M ATLAB
se obtiene lo que muestra el cuadro 12.7 de la página 281.
12.3 Obtención de la solución. Métodos de dirección de descenso j 279

function [x,f] = Newton_unc_1(fun,x)


% Método de Newton
rho = 0.1; beta = 0.5; % Parámetros de line search
maxit = 100;
for i=1:maxit % Proceso iterativo
[f,g,H] = fun(x);
Dados Un x WD x0 y una tol. Hacer f ound WD f al se p = -H\g;
if abs(p’*g) < 1e-8, break, end
while (not f ound ) and (k < kmax ) alpha = 1;
Calcular dirección de descenso; resolver H p D g for k=1:50 % Cál. inexacto amplitud de paso
if (p no existe) or (tol) xnew = x+alpha*p;
f ound WD true fxnew = fun(xnew);
if fxnew < f+alpha*rho*g’*p, break
else else alpha=alpha*beta;
Calcular la amplitud de paso ˛ con backtracking end
x WD x C ˛p end
end x = x + alpha*p;
k WD k C 1 fprintf(’%4.0f %13.8e %13.8e %13.8e %13.8e\n’,i,x,f,alpha);
end
end end

function [f g H] = objfun_min2(x)
A = [1 3; 1 -3; -1 0]; b = -0.1*[1; 1; 1];
f = sum(exp(A*x+b)); if nargout<2, return, end
g = A’*exp(A*x+b); H = A’*diag(exp(A*x+b))*A;
end

Cuadro 12.4

>> [x f]=Newton_unc(@objfun_min2,[-1;1])
1 -5.23625188e-002 3.53998022e-001 9.16207023e+000 1.00000000e+000
2 -1.05634526e-001 1.05820897e-001 3.73378771e+000 1.00000000e+000
3 -3.18485379e-001 2.52139713e-002 2.71665315e+000 1.00000000e+000
4 -3.45138214e-001 7.18724132e-004 2.56404324e+000 1.00000000e+000
5 -3.46572427e-001 1.03191597e-006 2.55927231e+000 1.00000000e+000
x =
-0.346572427027644
0.000001031915967
f =
2.559266696666079

Cuadro 12.5

5
10

0
10
error

−5
10

−10
10

−15
10
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
k

Figura 12.6: Proceso de resolución de minimizarx2R2 e x1 C3x2 0;1 Ce x1 3x2 0;1 C e x1 0;1 con Newton y backtracking
280 j Capítulo 12. Optimización. Programación no lineal sin condiciones

function [x f i] = Newton_mp(fun,x)
% Método híbrido Newton-máxima pendiente
global h
rho = 0.1; beta = 0.5; % Parámetros de line search
maxit = 100; h=sqrt(eps);
for i=1:maxit % Proceso iterativo
[f g H] = fun(x);
[R npd] = chol(H); % Cholesky comprueba si H es definida positiva
if ~npd
p = -R\(R’\g); % Dirección de Newton_mp
else
p = -g; % Dirección de máxima pendiente
end
if abs(p’*g)<1e-8, break, end
* Máxima pendiente y Newton alpha = 1;
if H .x/ es definida positiva for k=1:10 % Backtracking de amplitud de paso
xnew = x+alpha*p;
p D pN
fxnew = fun(xnew);
else if fxnew < f+alpha*rho*g’*p, break
else alpha=alpha*beta;
p D pmp end
end end
x = x + alpha*p;
x WD x C ˛p fprintf(’%3.0f %13.5e %13.5e %13.5e %13.5e %2.0f\n’,i,x,f,alpha,npd);
end
end

function [f g H] = objfun_min3(x)
% Función de Rosenbrock: 100(x2-x1^2)^2+(1-x1)^2
global h
f = 100*(x(2)-x(1)^2)^2+(1-x(1))^2; if nargout<2, return, end
g = [-200*(x(2)-x(1)^2)*2*x(1)-2*(1-x(1));200*(x(2)-x(1)^2)];
if nargout<3, return, end
x1=[x(1)+h;x(2)]; [f1 g1]=objfun_min3(x1);
H(1:2,1)=(g1-g)/h;
x1=[x(1);x(2)+h]; [f1 g1]=objfun_min3(x1);
H(1:2,2)=(g1-g)/h;
end

Cuadro 12.6

0.5 15
15
5
0.4 10 10
5 15 43
4 2
0.3 3 10
1
5
5 4
0.2 4 3
3 3 2
2

1
0.1 2 2
4
1
5
x2

0 3 4 5
1
10
3 2
2
−0.1
15 4
3 10
5 4 5
−0.2
15
10
−0.3 10
15
15
−0.4

−0.5
−0.5 −0.4 −0.3 −0.2 −0.1 0 0.1 0.2 0.3 0.4 0.5
x
1

Figura
Figure 5: Contour plot of Rosenbrock’s 12.7:
banana Función de Rosenbrock
function.

where K is the cone of 6 × 6 PSD matrices. Following the terminology introduced in


[7, 8], the above matrix is referred to as the moment, or measure matrix associated with
the LMI relaxation. Because the above moment matrix contains relaxations of monomials
of degree up to 2+2=4, it is referred to as the second-degree moment matrix. The above
upper-left 3x3 submatrix contains relaxations of monomials of degree up to 1+1=2, so it
is referred to as the first-degree moment matrix.
Now replacing the monomials in the criterion by their relaxed variables, the first LMI
relaxation of Rosenbrock’s banana function minimization reads
12.3 Obtención de la solución. Métodos de dirección de descenso j 281

>> [x f k] = Newton_mp(@objfun_min3,[0;15])
1 1.56250e-002 -8.43750e+000 2.25010e+004 7.81250e-003 1
2 1.62080e-002 2.62358e-004 7.12052e+003 1.00000e+000 0
3 2.62139e-001 8.23454e-003 9.67847e-001 2.50000e-001 0
4 3.18480e-001 9.82550e-002 9.10251e-001 1.00000e+000 0
5 5.26915e-001 2.32607e-001 4.65478e-001 5.00000e-001 0
function [f g H] = objfun_min3(x)
6 5.74193e-001 3.27462e-001 4.26601e-001 1.00000e+000 0
% Función de Rosenbrock: 100(x2-x1^2)^2+(1-x1)^2
7 7.21323e-001 4.97541e-001 1.81811e-001 5.00000e-001 0
global h
8 7.71508e-001 5.92706e-001 1.29485e-001 1.00000e+000 0
f = 100*(x(2)-x(1)^2)^2+(1-x(1))^2; if nargout<2, return, end
9 8.47484e-001 7.11197e-001 5.28430e-002 5.00000e-001 0
g = [-200*(x(2)-x(1)^2)*2*x(1)-2*(1-x(1));200*(x(2)-x(1)^2)];
10 9.10865e-001 8.25658e-001 2.82056e-002 1.00000e+000 0
if nargout<3, return, end
11 9.60290e-001 9.19713e-001 9.55884e-003 1.00000e+000 0
x1=[x(1)+h;x(2)]; [f1 g1]=objfun_min3(x1);
12 9.86967e-001 9.73391e-001 2.17363e-003 1.00000e+000 0
H(1:2,1)=(g1-g)/h;
13 9.98376e-001 9.96624e-001 2.20516e-004 1.00000e+000 0
x1=[x(1);x(2)+h]; [f1 g1]=objfun_min3(x1);
14 9.99959e-001 9.99915e-001 4.33199e-006 1.00000e+000 0
H(1:2,2)=(g1-g)/h;
x =
end
0.999958778201435
0.999915052848790
f =
2.326866095161381e-009
k =
15

Cuadro 12.7

12.3.4 Métodos de Newton Amortiguado y de Región de Confianza


Supongamos que un modelo M.p/ —que puede ser perfectamente el desarrollo en serie de Taylor hasta segundas
derivadas, o una aproximación adecuada— representa bien el comportamiento de la función f que queremos minimizar
en el entorno de un punto, es decir,

def 1
f .x C p/ ' M.p/ D f .x/ C p T c C p T Bp;
2

donde c 2 Rn y la matriz B 2 Rnn es simétrica. La idea es utilizar esos modelos para calcular direcciones de descenso
que se puedan modular a voluntad, y con amplitudes de paso D 1. Estudiaremos dos variantes.
La primera se conoce como Newton amortiguado. Calcula en cada punto del proceso iterativo un paso
 
def 1
pNa D mKın M.p/ C p T p ;
p 2

donde  es un parámetro de amortiguación que, aplicado como se indica, penaliza pasos amplios.
La segunda, la de región de confianza,
def
prc D mKın M.p/;
kpk  

pues se restringe el modelo a una región donde se confía que plasme bien las características del problema.
Si la función decrece convenientemente en cualquiera de estas direcciones, se hace x C p como el nuevo punto del
procedimiento y se adapta  o .
Si no decrece lo suficiente, y no se ha llegado al óptimo, se modifica  o  para que en la próxima iteración el avance
hacia el óptimo mejore. Esta forma de actuar la plasma la figura 12.8.
La calidad del modelo elegido se evalúa mediante el indicador ganancia

f .x/ f .x C p/
%D ;
M.0/ M.p/

es decir, la relación entre lo que decrece la función desde x y lo que preveía el modelo que haría.
Con el modelo región de confianza, si % < 41 , la ganancia es pequeña y se deberían reducir los pasos según un
parámetros, por ejemplo a la mitad, mientras que si % > 43 se podrían aumentar en otro. Los factores 2 y 3 de esta
searches along the step to the minimizer of m k (shown), but this direction will yield at most
a small reduction in f , even if the optimal steplength is used. The trust-region method
steps to the minimizer of m k within the dotted circle (shown), yielding a more significant
reduction in f and better progress toward the solution.
In this chapter, we will assume that the model function m k that is used at each
iterate xk is quadratic. Moreover, m k is based on the Taylor-series expansion of f around

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

Región de confianza
Trust region
Paso de Newton
Line search direction

Contornos del modelo


contours of mkM.p/

Paso
Trust de región
region step de
confianza Contornos
contours of f de f .x/

Figura 12.8: Esquema de actuación de los métodos de Newton amortiguado y de región de confianza
Figure 4.1 Trust-region and line search steps.

estrategia en el esquema que sigue no deben hacer oscilar la región .


41/85

a b c 1 2 3

e f g 9 4 6
if %5 < 0;25
d

h i j 10 8 7
 WD =2
elseif % > 0;75
 WD mKax f; 3  kpkg
end

Si con el modelo Newton amortiguado % es pequeño, se debería aumentar el parámetro de amortiguación, , au-
mentando así la penalización por dar pasos grandes. Un % grande, por el contrario, indicará que M.p/ es una buena
aproximación de f .x C p/ y se puede reducir .

if % < 0;25
 WD   2
elseif % > 0;75
 WD =3
end

También podría pensarse en otra estrategia para  como esta:

if % > 0 ˚
 WD   mKax 31 ; 1 .2% 1/3
else
 WD   2
end

En la literatura especializada en optimización sin condiciones se puede encontrar una gran variedad de tácticas de mejora
como estas.

12.3.4.1 Newton amortiguado. Cálculo de la dirección


Se calcula determinando  
1
.p/ D mKın M.p/ C pT p :
p 2
La condición necesaria de mínimo, r .p/ D 0, hace que la dirección pNa sea la solución de
0
.h/ D M 0 .h/ C p D 0;
12.3 Obtención de la solución. Métodos de dirección de descenso j 283

lo que es equivalente, de acuerdo con la definición de M.p/ a

.B C I/ pNa D c:

Si  es suficientemente grande, la matriz simétrica B C I es definida positiva, por lo que pNa es un mínimo del
modelo M.p/.
En Newton amortiguado B D H y c D g, y el sistema de ecuaciones es
8̂ 1
<si  es suficientemente grande,pNa   g y la dirección es próxima a la de
.H C I/ pNa D g: En él máxima pendiente.

si  es pequeño, la dirección es casi la de Newton.
El algoritmo de Newton amortiguado para minimizar f .x/ y su codificación en M ATLAB están en el cuadro 12.8.

function [x f k] = Newton_amortiguado(fun,x)
% Método de Newton amortiguado con paso completo
global h
k=0; kmax=500; eps1=1e-9; eps2=1e-12; n=length(x); h=eps1;
[f g H] = fun(x); ng = norm(g,inf); mu = 1; found = ng<=eps1;
Dados Un x WD x0 y tol. Hacer  D 1;  D 2 y f ound WD f while ~found
posdef = 0;
while (not f ound ) and (k < kmax )
while ~posdef
Resolver dirección de descenso .H C I/ p D g [R p] = chol(H+mu*eye(n));% comprueba si H es def. pos.
if (p no existe) or (tol) if p, mu=2*mu; else posdef = 1; end
f ound WD true end
else p = -R\(R’\g); nh = norm(p); % Cálculo de paso
Calcular % D .f .x/ f .x C p// = .M.0/ M.p// if norm(g,inf)<eps1||nh<=eps2*(eps2+norm(x)), found=2;% Ópt.
else % Modificar región de conf.
if % > 0 ˚ xnew = x + p; dL = -p’*g-p’*(H*p)/2;
 WD   mKax 31 ; 1 .2% 1/3 [fn gn Hn] = fun(xnew); df = f-fn; r=df/dL;
x WD x C p if r>0
else x = xnew; f = fn; g = gn; H = Hn;
 WD   2 ng = norm(g,inf);
end mu = mu*max(1/3,1-(2*r-1)^3);
end else
mu = mu*2;
k WD k C 1 end
end k = k + 1;
if ng <= eps1, found = 1; elseif k > kmax, found = 3; end
fprintf(’%4.0f %13.8e %13.8e %13.8e %13.8e\n’,k,x,f,mu);
end
end
end

Cuadro 12.8

Ejemplo 12.3 Resolvamos con este algoritmo

minimizar 0;5x12 .x12 =6 C 1/ C x2 arctan.x2 / 0;5 ln.x22 C 1/:


x2R2

El gráfico de la función que queremos minimizar y una sesión de M ATLAB para resolverlo son los del cuadro 12.9. La
rutina de M ATLAB que calcula la función, su gradiente y la matriz Hessiana es la que sigue.

function [f g H]=fun5_2(x)
f=0.5*x(1)^2*(x(1)^2/6+1)+x(2)*atan(x(2))-0.5*log(x(2)^2+1);
g=[x(1)^3/3+x(1); atan(x(2))];
H(1,1)=x(1)^2+1;
H(1,2)=0;
H(2,1)=0;
H(2,2)=1/(1+x(2)^2);
end

12.3.4.2 Región de confianza. Cálculo de la dirección de descenso


Este problema que se plantea aquí es realmente uno de optimización con condiciones.
284 j Capítulo 12. Optimización. Programación no lineal sin condiciones

>> [x f k] =Newton_amortiguado(@fun5_2,[2;2])
2 1.22222222e+000 1.07737607e+000 1.43392805e+000 3.33333333e-001
3 5.74640142e-001 4.41028668e-002 1.75164488e-001 1.11111111e-001
4 1.32066691e-001 4.36656594e-003 8.75568971e-003 3.70370370e-002
5 6.09495146e-003 1.55898129e-004 1.85864837e-005 1.23456790e-002
6 7.44750479e-005 1.90119424e-006 2.77507370e-009 4.11522634e-003
7 3.05225879e-007 7.79177968e-009 4.66421303e-014 1.37174211e-003
8 4.18117642e-010 1.06736708e-011 8.75251085e-020 4.57247371e-004
70 CHAPTER 4. TRUST-REGION METHODS x =
1.0e-009 *
0.418117641894218
0.010673670797581
Theorem 4.1. f =
The vector p ∗ is a global solution of the trust-region problem 8.752510847988606e-020
k =
minn m( p)  f + g T p + 12 p T Bp, s.t.  p ≤ , (4.7)8
p∈IR

Cuadro
if and only if p ∗ is feasible and there is a scalar λ ≥ 0 such that the following conditions are 12.9
satisfied:

(B + λI ) p ∗  −g, (4.8a)
Teorema 12.5 El∗ vector p es la solución de
λ( − || p ||)  0, (4.8b)
def def 1
(B + λI ) mKın M.p/(4.8c)
is positive semidefinite.
prc D D f .x/ C g T p C pT Bp
kpk 2
We delay the proof of this result until Section 4.3, and instead discuss just its key
si y sólo si p es factible y existe un escalar   0 tal que
features here with the help of Figure 4.2. The condition (4.8b) is a complementarity condition
se cumple que
1. .B C
that states that at least one of the nonnegative I/pλand
quantities D ( g, −  p ∗ ) must be zero.
Hence, when the solution lies strictly 2. 
. kp k/ D 0 y when   1 in
inside the trust region (as it does
Figure 4.2), we must have λ  0 and so Bp ∗  −g with B positive semidefinite, from (4.8a)
3. .B C I/ es semidefinida positiva.
and (4.8c), respectively. In the other cases    and    , we have  p ∗   , and
2 3
B es
so λ is allowed la matriz
to take a positiveHessiana, r 2f(4.8a)
value. Note from .x/,thato una aproximación.
La variable λp
 ∗es el
−Bpmultiplicador

− g  −∇m( p ∗de
). Lagrange de la condición que impone la región de confianza. Interpretemos esas
tres condiciones con la ayuda de la figura 12.9.

∆1

∆2
Indica que cuando p está estrictamente dentro
∆3 de la región de confianza (como es el caso en la
Contornos
contours of m del modelo M.p/ figura de  D 1 ), se debe cumplir que  D 0 y
p*1 p*2 p*3
por tanto que Bp  D g, siendo B semidefinida
positiva.

 Indica 
que
Figure 4.2 cuando
Solution ofp está estrictamente
trust-region subproblemFigura dentro
12.9:
for different de , la
Condiciones
radii 1 2 región de la región de confianza
, 3 . que impone
confianza (como es el caso en la figura de  D 1), se debe
cumplir que  D 0 ycondición,
La segunda por tantodeque Bp D g, siendo
complementariedad, B que  D 0 ó kp k D . Cuando  D 2 y  D 3 , se
establece
tiene que
semidefinida kp k D  y  será > 0. De la primera condición se deduce que p D Bp g D rM.p  /. Es decir,

positiva. 49/80

cuando  > 0, la solución p es colineal con el negativo del gradiente de M (máxima pendiente) y perpendicular a sus
perfiles de contorno, como en la figura.
a b
Las soluciones de los subproblemas M.p/ se pueden aproximar con alguna de estas variantes:
c 1 2 3

d e f g 9 4 6 5

h i j 10 8 7
Punto de Cauchy: Mínimo a lo largo de p D g, acotada a 
Dogleg (pata de perro): si B es definida positiva
Minimización en un subespacio de dimensión 2: Si B es indefinida
Steihaug: Si B es simétrica, otras...
k
pkC  −τk gk , (4.11)
gk 

where

1 if gkT Bk gk ≤ 0;
τk  (4.12)
min gk 3 /(k gkT Bk gk ), 1
 
otherwise.

Figure 4.3 illustrates the Cauchy point for a subproblem in which Bk is positive
definite. In this example, pkC lies strictly inside the trust region.
12.3 Obtención de la solución. Métodos de dirección de descenso j 285
The Cauchy step pkC is inexpensive to calculate—no matrix factorizations are
required—and is of crucial importance in deciding if an approximate solution of the
trust-region subproblem is acceptable. Specifically, a trust-region method will be globally
Punto de Cauchy

Región
Trust region de confianza

Contornos
contours of del
mk modelo M .p/
k
pkck
pC

—gk gk

Figura
Figure 12.10:
4.3 The Dirección
Cauchy point. que define el punto de Cauchy

La dirección es la solución del modelo Mk .p/ de máxima pendiente. Es decir,


k
pkc D k gk ;
kgk k
como se ve en la figura 12.10. En esta expresión,
8 52/78

T
<1   si gk Bgk  0
k D kgk k3
: mKın ; 1 si gkT Bgk > 0:
a b c 1 2 3

d e f g 9 4 .k gkT Bk gk /
6 5

h i j 10 8 7

DogLeg
Hemos visto que si la matriz B del modelo M.p/ es definida positiva, el mínimo de ese modelo hace pB D B 1 g.
Es decir, cuando   kpB k, p ./ D pB .
B
Si  es pequeña
74 conC H respecto
A P T E R 4al
. paso
T R UpS T -, RlaE Gcondición
I O N M E Tkpk S  hace que el término cuadrático del modelo M.p/
H O D
g
tenga poco efecto en su solución. En este caso, se puede aproximar p  ./   kgk :

Para otros valores la solución p ./ sigue una trayectoria curvilínea como se puede apreciar en la figura 12.11.

Región
Trust regionde confianza

Trayectoria óptima
Optimal trajectory p (∆ ) de p./

B
p (paso
pB ( full step ) completo)
pUp: (mínimo
U en la dirección
unconstrained g
min along —g)
—g g
direccióndogleg
DogLegpath

Figura 12.11: Dirección que da como resultado la estrategia dogleg


Figure 4.4 Exact trajectory and dogleg approximation.
✔ El método DogLeg reemplaza la trayectoria curvilínea por dos segmentos de
El método DogLeg reemplaza la trayectoria curvilínea por dos segmentos de recta. El primero hasta el mínimo de
línea recta. El primero hasta el mínimo de M .p/ en la dirección de máxima
M .p/ en la dirección de máxima pendiente
pendiente g T g and writing
by simply omitting the quadraticpterm
U
D fromT(4.5)
g Tg:
g
pU Dg Bg g:
g g T Bg
El segundo desde p U hasta pB . En conjunto,p∗a()
esta≈trayectoria
− , se le denomina
when Q /, con  2 Œ0; 2,(4.14)
p.
 is small. donde
 U g 56/81

p 0 1
Q /D
p. 
pU,Cthe
For intermediate values of 1/ ppB∗ ()pU
.solution 1
typically   2:
follows a curved trajectory like
the
a
one
b
inc Figure 4.4. 1 2 3
e g
d
Thef dogleg method
9
finds
4
an approximate
6 5
solution by replacing the curved trajectory
∗i j
for p () with a path consisting of two line segments. The first line segment runs from the
h 10 8 7

origin to the minimizer of m along the steepest descent direction, which is

gT g
pU  − g, (4.15)
g T Bg
286 j Capítulo 12. Optimización. Programación no lineal sin condiciones

La intersección de esta trayectoria con la región de confianza es el punto que se busca; concretamente el  que resuelve
la ecuación kpU C . 1/.pB pU /k2 D 2 :
El algoritmo de minimización de una función mediante el método de región de confianza DogLeg con modelo de
Newton se lista en el cuadro 12.10. Un código de M ATLAB que lo implementa se puede ver en el cuadro 12.11 de la
página 287.

Dados Un x WD x0 y tol. Hacer  D 1 y f ound WD f al se


while (not f ound ) and (k < kmax )
Resolver H pN D g
288 j Capítulo 12. Optimización. Programación no lineal sin condiciones
if pN  , x WD x C pN
else p mp D .g T g=g T H g/g
La intersección de esta trayectoria coniflapregión mp >de ,confianza
x WD x C es pelcpunto que se busca; concretamente el  que resuelve
la ecuación kpU C . 1/.p B pU /k 2
else D 2 :
El algoritmo de minimización de unaCalcular función dir.mediante
DogLeg el emétodo de región
intersección  de confianza DogLeg con modelo de
Newton se lista en el cuadro 12.10. Un x código
WD xde CM mp C .p
pATLAB que Nlo implementa
pmp / se puede ver en el cuadro 12.11 de la
página 289. end
end
Calcular
Dados Un x%WD Dx.f0 y .x/ f .x
t ol. Hacer D C1p// = .M.0/
y f ound M.p//
WD f al se
if % (not
while < 0;25,
f ound ) and
WD (k =2< kmax )
elseifResolver H p NDWDgmKaxf  2; 
%> 0;75,
N  , x WD x C p N
max g
end if p mp
else p D .g T g=g T H g/g
k WD k ifCp1, mpif>f, x WD ,xexit
ound C pc
end else
Calcular dir. DogLeg e intersección 
x WD x C p mp C .p N pmp /
end Cuadro 12.10
end
Calcular % D .f .x/ f .x C p// = .M.0/ M.p//
if % < 0;25,  WD =2
elseif % > 0;75,  WD mKaxf  2; max g
Ejemplo 12.4 Resolvamos con este procedimiento
end
el problema ya estudiado
k WD k C 1, if f ound , exit
0;5x 2 .x 2 =6 C 1/ C x arctan.x / 0;5 ln.x 2
minimizar end 1 1 2 2 2 C 1/:
x2R2
Cuadro 12.10
Mediante una simple sesión de M ATLAB llegaríamos a la solución como lista el cuadro 12.12.
Ejemplo 12.4 Resolvamos con este procedimiento el problema ya estudiado:
2 2
0;5 ln.x22 C 1/:
12.3.5 Algoritmo de losminimizar 0;5x .x =6 C 1/ C x arctan.x /
gradientes conjugados
x2R2
1 1 2 2

Mediante una simple sesión de M ATLAB llegaríamos a la solución como lista el cuadro 12.12.
La idea es extender a problemas no lineales generales el método que vimos para minimizar funciones cuadráticas y
resolver así sistemas de ecuaciones lineales.
Fue propuesto porAlgoritmo
12.3.5 los profesores debritánicos R. Fletcher,
los gradientes Reino Unido, 1939, y C. Reeves en 1964.
conjugados
La idea es extender a problemas no lineales generales el método que vimos para minimizar funciones cuadráticas y
resolver así sistemas de ecuaciones lineales.
Fue propuesto por los profesores británicos R. Fletcher, Reino Unido, 1939, y C. Reeves en 1964.

Fletcher

Fletcher

La dirección de descenso que propone este método es p D rf .x/ C ˇppr , donde la nueva dirección p y la previa,
ppr , han de La conjugadas
serdirección con que
de descenso respecto
proponeaeste
la matriz
método esHessiana.
p D rf .x/ C ˇppr , donde la nueva dirección p y la previa,
ppr , ˇ
El parámetro ser conjugadas
hansededetermina conmanera
de tal respecto que
!"#$%&'()*"$+%,) a la !"#$%&'()*"$+%,)
matriz Hessiana.
minimice una forma!"#$%&'()*"$+%,)
cuadrática de la matriz Hessiana pues suficiente-
!"#$%&'()*"$+%,)
El parámetro ˇ se determina de tal manera que minimice una forma cuadrática de la matriz Hessiana pues suficiente-
mente cercamente
del óptimo las funciones continuas se aproximan muy bien a formas cuadráticas como ya hemos apuntado.
cerca del óptimo las funciones continuas se aproximan muy bien a formas cuadráticas como ya hemos apuntado.

! ! !
12.3 Obtención de la solución. Métodos de dirección de descenso j 287

function [xc fc] = Dogleg_UBC_yo(fun,x0)


% dogleg.m -- Método de Región de Confianza con modelo Newton
eps1=100*sqrt(eps); eps2=sqrt(eps); Kmax=200; Delta=0.5; Dmax=100;
xstring = ’’;
for jj=1:length(x0)
xstring = [xstring,’x_k(’,int2str(jj),’) ’];
end
fprintf([’\n k %s f(x_k) Delta |dx|/Del ro ’,...
’ e_1 e_2\n’],xstring);
xc = x0; [fc gc Hc] = fun(xc);
disp([’ 0’, sprintf(’ %12.4e’,[xc’,fc]),sprintf(’ %10.2e’,Delta)]);
for k=1:Kmax % Modelo Newton: -(gc’*pN + 0.5*pN’*Hc*pN);
pN = - Hc\gc; % Dirección de Newton
pNlen = (pN’*pN)^0.5; gHg = gc’*Hc*gc;
if pNlen <= Delta % Punto Newton dentro región
xt = xc + pN;
else % Fuera: encontrar el mínimo mediante máxima
% pendiente del Model Newton
pSD = -(gc’*gc)/gHg*gc;
pSDlen = (pSD’*pSD)^0.5;
if pSDlen>=Delta % Newton y mp fuera región: usa punto Cauchy
xt = xc - Delta*gc/(gc’*gc)^0.5;
else % mp dentro región y Newton fuera: usa DogLeg
% en límite región de linea uniéndolos
pN_pSD = pN-pSD;
a = pN_pSD’*pN_pSD; b = 2*pN_pSD’*pSD; c = pSD’*pSD - Delta^2;
t = (-b+(b^2-4*a*c)^0.5)/2/a;
xt = xc + pSD + t*pN_pSD;
end
end
[fn gn Hn] = fun(xt); % Nuevo punto obtenido en Reg. Con.
dx = xt - xc; df = fn - fc;
redfun = -df; % Reducción obtenida en función
repred = -gc’*dx-0.5*dx’*Hc*dx; % Reducción predicha modelo Newton
rho = redfun/repred; % Ganancia
e1 = max(abs(pN’)./max([abs(xc’);eps2*ones(size(xc’))]));
e2 = max((abs(gn).*abs(xt))/ max([abs(fn),eps2]));
if rho>0 % Buena ganancia; aceptar punto
xn=xt; xc=xt; fc=fn; gc=gn; Hc=Hn;
if rho<0.25, Delta = 0.25*norm(dx); end
if rho>0.75 && norm(dx,2)>((1-eps)*Delta),
Delta = min([2*Delta;Dmax]);
end
disp([sprintf(’%3d’,k), sprintf(’ %12.4e’,[xn’,fn]),...
sprintf(’ %10.2e’,Delta),sprintf(’ %6.4f’,norm(dx)/Delta),...
sprintf(’ %7.3f’,rho),sprintf(’ %8.1e’,e1),...
sprintf(’ %8.1e’,e2)]);
if e1<eps1 || e2<eps2, break, end
else
xn = xc; % Reducción de función mala; seguir igual
end
end
disp([’Óptimo: x’’ =’,sprintf(’ %22.16e’,xc),’.’]);
disp([’Función: f(x) =’,sprintf(’ %22.16e’,fc),’.’]);
end

Cuadro 12.11

>> [x f]=Dogleg_UBC_yo(@fun5_2,[2;2]);
k x_k(1) x_k(2) f(x_k) Delta |dx|/Del ro e_1 e_2
0 2.0000e+000 2.0000e+000 4.7429e+000 5.00e-001
1 1.5135e+000 1.8846e+000 2.8658e+000 1.00e+000 0.5000 1.040 2.8e+000 1.4e+000
2 5.8687e-001 1.5086e+000 1.0754e+000 2.00e+000 0.5000 1.233 2.6e+000 1.4e+000
3 -4.1104e-001 -2.2464e-001 1.1188e-001 4.00e+000 0.5000 0.781 2.1e+000 1.6e+000
4 -3.9606e-002 7.4824e-003 8.1253e-004 4.00e+000 0.1095 1.045 1.0e+000 1.9e+000
5 -4.1354e-005 -2.7927e-007 8.5513e-010 4.00e+000 0.0101 1.001 1.0e+000 1.1e-001
6 -4.7149e-014 1.4505e-020 1.1115e-027 4.00e+000 0.0000 1.000 1.0e+000 1.5e-019
Óptimo: x’ = -4.7148815071357958e-014 1.4505439221729893e-020.
Función: f(x) = 1.1115053813167661e-027.

Cuadro 12.12
288 j Capítulo 12. Optimización. Programación no lineal sin condiciones

La primera fórmula para obtener esa ˇ fue sugerida por Fletcher y Reeves:

rf .x/T rf .x/
ˇD .
rf .xpr /T rf .xpr /

Posteriormente, en 1971, Polak y Ribière

Elijah Polak, Polonia, 1931-.

formularon esta alternativa:


T
rf .x/ rf .xpr / rf .x/
ˇD .
rf .xpr /T rf .xpr /

Con esas dos fórmulas, el algoritmo de los gradientes conjugados para minimizar f .x/ podría tener la forma que
sigue.
Dados La función f .x/, un punto de partida x0 y una tol.
Calcular ppr D rf .x0 /
Repetir Mientras la aproximación a la solución > tolerancia:
1. Calcular dir. de descenso: p D rf .x/ C ˇ ppr ,
rf .x/T rf .x/
con ˇ D
rf .xpr /T rf .xpr /
T
rf .x/ rf .xpr / rf .x/
oˇ D .
rf .xpr /T rf .xpr /
2. Calcular la amplitud de paso, ˛, en esa dirección.
3. Calcular el nuevo punto x WD x C ˛p.

Ninguna de las dos fórmulas para ˇ requiere calcular la matriz Hessiana. Si la función a minimizar es cuadrática las dos
fórmulas coinciden.
Ejemplo 12.5 Calculemos para probar estos métodos el mínimo de la función de Rosenbrock
2
minimizarx2R2 100 x2 x12 C .1 x1 /2 :
0.5 15
15
5
0.4 10 10
5 15 43
4 2
0.3 3 10
1
5
5 4
0.2 4 3
3 3 2
2

1
0.1 2 2
4
1
5
2

0 3 4 5
x

1
10
3 2
2
−0.1
15 4
3 10
5 4 5
−0.2
15
10
−0.3 10
15
15
−0.4

−0.5
−0.5 −0.4 −0.3 −0.2 −0.1 0 0.1 0.2 0.3 0.4 0.5
x1

Figure 5: Contour plot of Rosenbrock’s banana function.

Utilicemos para ello el código de M ATLAB del cuadro 12.13. Se parte del punto x D Œ 1;2 1. El óptimo es
x  D Œ1 1. La función enmatrix
2Dis yreferred
el tocamino
as the moment,hacia
or measure el associated withtambién en 2D son los de la figura 12.12.
óptimo
where K is the cone of 6 × 6 PSD matrices. Following the terminology introduced in
[7, 8], the above matrix
the LMI relaxation. Because the above moment matrix contains relaxations of monomials
Con la toleranciaofupper-left
ydegree
los parámetros
up to 2+2=4, it is referred todados, la convergencia
as the second-degree moment matrix. The above es la de la tabla que sigue.
3x3 submatrix contains relaxations of monomials of degree up to 1+1=2, so it
is referred to as the first-degree moment matrix.

Método
Now replacing the monomials in the criterion by their relaxed variables, the first LMI
relaxation of Rosenbrock’s banana function minimization reads
Número de iteraciones
max −1
 + 2y10 − y20 − 100y02 + 200y
1 y10 y01 y20 y11 y02
Polak–Ribière
21 − 100y40 103
 y10 y20 y11 y30 y21 y12 
Fletcher–Reeves 514
 
 y01 y11 y02 y21 y12 y03 
s.t.   ∈ K.
 
 y20 y30 y21 y40 y31 y22 
 y11 y21 y12 y31 y22 y13 
y02 y12 y03 y22 y13 y04

For a comprehensive description of the way LMI relaxations are build (relaxations of
higher orders, moment matrices of higher degrees and moment matrices associated with
constraints), the interested reader is advised to consult [7, 8]. All we need to know here
is that an LMI relaxation of a non-convex optimization problem can be expressed as a

17
12.3 Obtención de la solución. Métodos de dirección de descenso j 289

function [x f] = Grad_Conjugados_unc(fun,x,par)
% Método de los gradientes conjugados para minimizar f(x)
rho = 0.01; beta = 0.1; % Parámetros de line search
maxit = 1000;
[f g]= fun(x); ppr=-g; gpr=g; pbeta=0; % Comienzo con máx. pendiente
for i=1:maxit % Proceso iterativo
if i>1
[f g] = fun(x);
if par==1, pbeta=(g’*g)/(gpr’*gpr); % Fletcher-Reeves
else pbeta=((g-gpr)’*g)/(gpr’*gpr);% Polak-Ribière
end
end
p = -g+pbeta*ppr;
if (norm(g,inf) < 1e-6), break, end % Condición de mínimo
alpha = 1;
for k=1:10 % Backtracking amplitud de paso
xnew = x+alpha*p; fxnew = fun(xnew);
if fxnew <= f + alpha*rho*g’*p
break
else alpha = alpha*beta;
end
end
x = x + alpha*p; ppr=p; gpr=g;
fprintf(’%4.0f %13.8e %13.8e %13.8e %13.8en’,i,x,f,alpha);
end
end

function [f g] = objfun_min3(x) % Rosenbrock


f = 100*(x(2)-x(1)^2)^2+(1-x(1))^2;
if nargout<2, return, end
g = [-200*(x(2)-x(1)^2)*2*x(1)-2*(1-x(1));200*(x(2)-x(1)^2)];
end

Cuadro 12.13

4.5. Convergence Properties 36


37 4. C ONJUGATE G RADIENT M ETHODS

x2
2
300

x2

100 1

30
10
3 0.3
1
−1.5 1.5 x −1.2 1 x1
1
−0.5 1

Figure 4.2: Contours of Rosenbrock’s function.Figura 12.121e−5


The function has one minimizer x∗ = [1, 1]⊤ (marked by a + in the figure) with f
1e−10

f (x ) = 0, and there is a “valley” with sloping bottom following the parabola
1e−15
||f’||
2
x2 = x1 . Most optimization algorithms will try to follow this valley. Thus, 0 10 20 30 40 50

a considerable amount of iteration steps is needed, if we take x0 inFigure


the 2nd
4.3: Polak–Ribière method with soft line search
quadrant. applied to Rosenbrock’s function.
Top: iterates xk . Bottom: f (xk ) and kf ′ (xk )k∞ .
Below we give the number of iteration steps and evaluations of f (x) and f ′ (x)
when applying Algorithm 4.6 on this function. In all cases we use the starting
point x0 = [ −1.2, 1 ]⊤ , and stopping criteria given by ε1 = 10−8 , ε2 = 10−12
in (4.7). In case of exact line search we use τ = 10−64.6. , ε =Implementation
10−6 in (2.29),
−1 −2
290 j Capítulo 12. Optimización. Programación no lineal sin condiciones

Probemos todo con una sesión de M ATLAB tal como se ve en el cuadro 12.14.

>> [x f] = Grad_Conjugados_unc(@objfun_min3,[-1.2;1],1) >> [x f] = Grad_Conjugados_unc(@objfun_min3,[-1.2;1],2)


1 -9.84400000e-001 1.08800000e+000 2.42000000e+001 1.00000000e-003 1 -9.84400000e-001 1.08800000e+000 2.42000000e+001 1.00000000e-003
2 -1.01771362e+000 1.06810987e+000 5.35291158e+000 1.00000000e-003 2 -9.84399999e-001 1.08800000e+000 5.35291158e+000 1.00000000e-010
. .
. .
513 1.00000141e+000 1.00000283e+000 2.00451765e-012 1.00000000e-004 102 1.00000121e+000 1.00000243e+000 1.47631065e-012 1.00000000e-003
x = x =
1.000001414780674 1.000001212679899
1.000002834445620 1.000002430217752
f = f =
2.003988012156511e-012 1.472951080761591e-012

Cuadro 12.14

12.3.6 Métodos cuasi Newton


Son algoritmos basados en el método de Newton que calculan una aproximación de la matriz hessiana, o variantes de
ella, mediante fórmulas de recurrencia.
Si la fórmula de la dirección de descenso de Newton es
 1
pD r 2f .x/ rf .x/
Quasi-Newton iterations for optimization
seThe fieldpwas
utiliza D launched between
H rf .x/, donde1959
H esand
una1970.
aproximación de la matriz inversa de la hessiana.
Las fórmulas más comunes para aproximar H son:
William Davidon 1927-
1954 PhD in Physics, U. Chicago
1959:DFP
“variableDe Davidon,
metric” reportFletcher y Powell:
at Argonne National Lab.
(It was finally published in 1991, first issue of SIOPT ) H k yk ykT H k sk sT
1961-1991: Prof. of Physics and Maths,H kC1 D H
Haverford k
Coll T
C Tk :
s for optimization yk H k yk yk sk
Michael Powell 1936-
nd 1970. 1959-1976 Harwell A.E.R.E.
1976- DAMTP, U. of Cambridge
1983 FRS
Charles Broyden 1933-2011
National Lab. 1955-1965: English Electric William Davidon, Roger Fletcher y Michael Powell
ssue of SIOPT 1965:
) “good” and “bad” Broyden methods
Haverford Coll 1967-1986 U. of Essex
1990-2003 U. of Bologna
BFGS
Roger De 1939-
Fletcher Broyden, Fletcher, Goldfarb y Shanno:!

1969-1973 Harwell A.E.R.E…. U. of Leeds y T H k yk T
sk sk sk ykT H k C H k yk skT
H kC1 D H k C 1 C k T ykT sk
;
1963: Davidon-Fletcher-Powell paper yk sk ykT sk
1971-2005 U. of Dundee
2003 FRS
s

Charles Broyden, Roger Fletcher, Donald Goldfarb y David Shanno

ds

En todos los casos yk D rf .xkC1 / rf .xk / y sk D xkC1 xk D ˛k pk :


El algoritmo para minimizar f .x/ mediante estas fórmulas y el código de M ATLAB correspondiente son los que refleja
el cuadro 12.15.
Para obtener la solución en una sesión de M ATLAB habría que actuar como aparece en el cuadro 12.16. La función
objetivo y su gradiente se calculan en la rutina objfun_min3, que ya hemos utilizado.
Una sesión con el nonlinear programming solver de M ATLAB, fminunc, sería la del cuadro 12.17.
12.3 Obtención de la solución. Métodos de dirección de descenso j 291

function [x,i,f,nfeval]=quasi_newton_1(fun,x,metodo)
% Método cuasi Newton
rho = 0.01; beta = 0.1; % Parámetros de line search
[f,g] = fun(x); H=eye(length(x)); eps1=1e-5; eps2=1e-8;
maxit = 1000; nfeval = 1;
for i=1:maxit
xp = x; gp = g;
p = -H*g; nh = norm(p); % Nueva dirección: cuasi Newton
if norm(g,inf)<eps1||nh <= eps2*(eps2 + norm(x)), break, end
alpha = 1;
Dados f .x/, un x0 , una tolerancia y H 0 for k=1:10 % Backtracking amplitud de paso
xnew = x+alpha*p;
Repetir Mientras no se satisfaga la tolerancia de solución:
fxnew = fun(xnew); nfeval = nfeval+1;
1. Determinar la dirección de descenso: if fxnew < f+alpha*rho*g’*p, break
Obtener pk D H k rf .xk / else alpha=alpha*beta;
end
2. Calcular la amplitud de paso, ˛k , en esa dirección end
3. Calcular nuevo punto xkC1 D xk C ˛k pk y H kC1 x = x + alpha*p; s = x - xp; ns = norm(s);
[f,g] = fun(x);
y = g - gp; ys = y’*s; nfeval = nfeval+1;
if ys > sqrt(eps)*ns*norm(y) % Recalcular H
v = H*y; yv = y’*v;
if metodo == 1, H=H - (v/yv)*v’ + (s/ys)*s’; % DFP
else H = H + (1+yv/ys)*(s*s’)/ys - (s*v’+v*s’)/ys;% BFGS
end
end
end
end

Cuadro 12.15

>> [x i f nf]=quasi_newton_1(@objfun_min3,[-1.2;1],1) >> [x i f nf]=quasi_newton_1(@objfun_min3,[-1.2;1],2)


x = x =
0.999986600819581 0.999999873170081
0.999973154300098 0.999999758419957
i = i =
247 40
f = f =
1.797638376605058e-010 3.067793488101831e-014
nf = nf =
506 88

Cuadro 12.16

>> options = optimset(’Display’,’iter’,’GradObj’,’on’,’LargeScale’,’off’... 25 33 0.0726393 0.438248 3.18


,’HessUpdate’,’bfgs’); 26 34 0.0413887 1 2.3
>> x0=[-1.2;1]; 27 35 0.0221877 1 0.491
>> [x,fval,exitflag,output] = fminunc(@objfun_min3,x0,options) 28 37 0.0126281 0.405833 1.98
First-order 29 38 0.00703352 1 1.35
Iteration Func-count f(x) Step-size optimality 30 39 0.00203299 1 0.194
0 1 24.2 216 31 41 0.00109124 0.5 0.874
1 3 4.28049 0.000861873 15.2 32 42 8.941e-005 1 0.14
2 4 4.12869 1 3 33 43 7.16329e-006 1 0.0804
3 5 4.12069 1 1.5 34 44 4.44047e-007 1 0.0222
4 6 4.1173 1 1.62 35 45 1.49386e-008 1 0.00263
5 7 4.08429 1 5.72 36 46 9.03834e-013 1 1.65e-005
6 8 4.02491 1 10.4 Local minimum found.
7 9 3.9034 1 17.4
8 10 3.7588 1 20.1 Optimization completed because the size of the gradient is less than
9 11 3.41694 1 19.9 the default value of the function tolerance.
10 12 2.88624 1 11.9 <stopping criteria details>
11 13 2.4428 1 9.78 x =
12 14 1.93707 1 3.01 0.999999124019815
13 17 1.64357 0.141994 5.54 0.999998284985335
14 18 1.52561 1 7.57 fval =
15 19 1.17013 1 4.53 9.038341201889023e-013
16 20 0.940886 1 3.17 exitflag =
17 21 0.719844 1 5.15 1
18 22 0.409164 1 5.73 output =
19 25 0.259747 0.0842377 5.01 iterations: 36
20 26 0.238901 1 1.06 funcCount: 46
21 27 0.2102 1 1.22 stepsize: 1
22 29 0.18249 0.584225 3.33 firstorderopt: 1.652992217925215e-005
23 30 0.15856 1 2.91 algorithm: ’medium-scale: Quasi-Newton line search’
24 31 0.0893558 1 0.756 message: [1x438 char]

Cuadro 12.17
292 j Capítulo 12. Optimización. Programación no lineal sin condiciones

12.3.7 Ejemplo general de recapitulación


Hagamos un recorrido por todos los procedimientos y algoritmos de este capítulo resolviendo en sendas sesiones de
M ATLAB este problema de optimización sin condiciones:

minimizar 0;5x12 .x12 =6 C 1/ C x2 arctan.x2 / 0;5 ln.x22 C 1/:


x2R2

Con Newton se obtiene lo del cuadro 12.18. Con el de la Máxima Pendiente lo del 12.19. Con el método de los gradientes

>> [x f]=Newton_unc(@fun5_2,[2;2])
1 1.53333333e+000 -7.67871794e-001 4.74291181e+000 5.00000000e-001
2 7.17182434e-001 2.73081655e-001 1.90728360e+000 1.00000000e+000
3 1.62394466e-001 -1.33801795e-002 3.16058360e-001 1.00000000e+000
4 2.78174708e-003 1.59690475e-006 1.33334500e-002 1.00000000e+000
5 1.43502115e-008 -2.71495235e-018 3.86906467e-006 1.00000000e+000
x =
1.0e-007 *
0.143502114982597
-0.000000000027150
f =
1.029642850223918e-016

Cuadro 12.18

>> [x f]=Maxima_pendiente_unc(@fun5_2,[2;2])
1 -3.33333333e-001 1.44642564e+000 4.74291181e+000 5.00000000e-001
2 1.23456790e-002 4.80532665e-001 8.89243872e-001 1.00000000e+000
3 -6.27225474e-007 3.25798596e-002 1.11454631e-001 1.00000000e+000
4 8.22680750e-020 1.15199317e-005 5.30629777e-004 1.00000000e+000
5 0.00000000e+000 5.09598738e-016 6.63544598e-011 1.00000000e+000
x =
1.0e-015 *
0
0.509598737990710
f =
2.596908737617245e-031

Cuadro 12.19

conjugados lo del cuadro 12.20. Con cuasi Newton el 12.21. Con el método de región de confianza DogLeg, con modelo

>> [x f] = Grad_Conjugados_unc(@fun5_2,[2;2],2)
1 1.53333333e+000 1.88928513e+000 4.74291181e+000 1.00000000e-001
2 -1.24817638e-001 1.06078252e+000 2.92446293e+000 1.00000000e+000
3 -2.60972425e-002 2.32534554e-001 4.95278202e-001 1.00000000e+000
4 -1.98278513e-002 1.70462426e-001 2.71382019e-002 1.00000000e+000
5 -1.20583962e-003 1.35873959e-002 1.46557482e-002 1.00000000e+000
6 -1.37365260e-003 1.15727268e-002 9.30328488e-005 1.00000000e+000
7 2.08186271e-005 2.50443071e-004 6.79059687e-005 1.00000000e+000
8 -2.88173500e-005 2.33979887e-004 3.15775731e-008 1.00000000e+000
9 1.90328536e-006 6.31282977e-007 2.77885134e-008 1.00000000e+000
10 -4.91063765e-008 3.73003496e-007 2.01048075e-012 1.00000000e+000
x =
1.0e-006 *
-0.049106376456762
0.373003496268343
f =
7.072634268876572e-014

Cuadro 12.20

de Newton, el cuadro 12.22. Con el método de Newton amortiguado, para finalizar, el cuadro 12.23.
12.3 Obtención de la solución. Métodos de dirección de descenso j 293

>> [x i f nf]=quasi_newton_1(@fun5_2,[2;2],2)
x =
1.0e-005 *
-0.466633393077767
0.043763046313533
i =
10
f =
1.098304435204189e-011
nf =
20

Cuadro 12.21

>> [x f] = Dogleg_UBC_yo(@fun5_2,[2;2])
k x_k(1) x_k(2) f(x_k) Delta |dx|/Del ro e_1 e_2
0 2.0000e+000 2.0000e+000 4.7429e+000 5.00e-001
1 1.5135e+000 1.8846e+000 2.8658e+000 1.00e+000 0.5000 1.040 2.8e+000 1.4e+000
2 5.8687e-001 1.5086e+000 1.0754e+000 2.00e+000 0.5000 1.233 2.6e+000 1.4e+000
3 -4.1104e-001 -2.2464e-001 1.1188e-001 4.00e+000 0.5000 0.781 2.1e+000 1.6e+000
4 -3.9606e-002 7.4824e-003 8.1253e-004 4.00e+000 0.1095 1.045 1.0e+000 1.9e+000
5 -4.1354e-005 -2.7927e-007 8.5513e-010 4.00e+000 0.0101 1.001 1.0e+000 1.1e-001
6 -4.7149e-014 1.4505e-020 1.1115e-027 4.00e+000 0.0000 1.000 1.0e+000 1.5e-019
Óptimo: x’ = -4.7148815071357958e-014 1.4505439221729893e-020.
Función: f(x) = 1.1115053813167661e-027.
x =
1.0e-013 *
-0.4715
0.0000
f =
1.1115e-027

Cuadro 12.22

Referencias, fuentes y lecturas complementarias


La referencia fundamental y básica que he seguido muchos años para comprender toda la “filosofía” de lo expuesto en
este capítulo es Dennis y Schnabel [1983]. Hay una adecuación del mismo de [1996]. Lo demás está obtenido poco
a poco de muchos sitios de Internet que profundizan sobre las variaciones algorítmicas de estos asuntos. Entre lo más
sofisticado de los últimos años están Boyd y Vandenberghe [2004] y Nocedal y Wright [2006]. Una guía interesante
sobre cómo proceder con estos problemas de optimización sin condiciones es Moré y Wright [1993].
El sitio N ETLIB tiene muchísimo software al respecto. Todos los programas del capítulo son elaborados por el autor
a partir de otros en otros lenguajes utilizados a lo largo de años para probar y enseñar cosas. M ATLAB contiene un
catálogo exhaustivo de procedimientos y algoritmos para resolver problemas de optimización si condiciones. Para diseño
de estrategias ad hoc para resolver un problema concreto que pueda surgir es único.

>> [x f] = Newton_amortiguado(@fun5_2,[2;2])
1 1.22222222e+000 1.07737607e+000 1.43392805e+000 3.33333333e-001
2 5.74640142e-001 4.41028668e-002 1.75164488e-001 1.11111111e-001
3 1.32066691e-001 4.36656594e-003 8.75568971e-003 3.70370370e-002
4 6.09495146e-003 1.55898129e-004 1.85864837e-005 1.23456790e-002
5 7.44750479e-005 1.90119424e-006 2.77507370e-009 4.11522634e-003
6 3.05225879e-007 7.79177968e-009 4.66421303e-014 1.37174211e-003
7 4.18117642e-010 1.06736708e-011 8.75251085e-020 4.57247371e-004
x =
1.0e-009 *
0.4181
0.0107
f =
8.7525e-020

Cuadro 12.23
294 j Capítulo 12. Optimización. Programación no lineal sin condiciones
Capítulo 13

Optimización Lineal. Introducción a la


Programación Lineal

Contenido
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.5 Consideraciones geométricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
13.6 Politopos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
13.7 Puntos extremos y soluciones básicas factibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

13.1 Formulación

L A PROGRAMACIÓN LINEAL es el área de la Optimización, Programación Matemática o Management Science


que busca, de entre todas las posibles soluciones de un conjunto de ecuaciones e inecuaciones lineales, la que
mejor plasma un determinado criterio u objetivo, representado por una función también lineal.
En términos matemáticos el problema consiste en

minimizar f .x/
sujeta a g.x/ D 0
h.x/  0

donde f W Rn ! R, g W Rn ! Rm y h W Rn ! Rp son lineales.


La Programación Lineal desempeña un papel vital en muchas facetas de la economía, las ciencias sociales, la técnica, la
planificación, la gestión, : : : como un instrumento de ayuda a la toma de decisiones que tienen que ver con la asignación
óptima de recursos con diversas funciones de utilidad.
En el análisis, la planificación y el control operativo de sistemas energéticos y eléctricos tiene uno de sus campos de
actuación paradigmáticos, por la complejidad técnica que acarrean sus decisiones en:
Generación a coste mínimo
Control de stocks de combustibles
Mantenimiento de equipos
296 j Capítulo 13. Optimización Lineal. Introducción a la Programación Lineal

Optimización del transporte de energía


Control de inversiones, búsqueda de emplazamientos, etc.
Hay otros muchos campos de la técnica, y de la toma de decisiones en general, donde la Programación Lineal se ha
introducido de tal manera que es casi imposible no contar con sus métodos y algoritmos para mantener sus sistemas
operativos vivos.

13.2 Definiciones y formas de programas lineales


La programación lineal, PL, trata un problema o programa lineal como este:

minimizar c1 x1 C c2 x2 C    C cn xn
sujeta a a11 x1 C a12 x2 C    C a1n xn  b1
a21 x1 C a22 x2 C    C a2n xn  b2
:: :: ::
: : :
am1 x1 C am2 x2 C    C amn xn  bm
y x1 ; x2 ; : : : ; xn  0:

A c1 x1 C    C cn xn se le denomina función objetivo y a las ai1 x1 C    C ai n xn , 1  i  m, restricciones o


condiciones. Las x1 ; : : : ; xn son los coeficientes del vector variables de decisión. Los c1 ; : : : ; cn , los coeficientes de
coste. Los b1 ; : : : ; bm , el término independiente. La matriz
2 3
a11 a12 a13    a1n
6 a21 a22 a23    a2n 7
6 7
AD6 : :: :: : : :: 7
4 :: : : : : 5
am1 am2 am3    amn

es la de coeficientes de las condiciones del problema.


Un vector, o punto, x T D Œx1 ; x2 ; : : : ; xn , que satisface todas las condiciones se denomina factible. El conjunto

F D fx 2 Rn W Ax  b; x  0g

de todos los vectores o puntos factibles constituye la región factible.


En forma compacta, el problema de programación lineal se expresa así:

min. c T x
s. a Ax  b
x  0:

En forma estándar,
min. c T x
s. a Ax D b
x  0:
En el programa lineal de la figura 13.1 las variables de decisión del problema son x1 y x2 . La función objetivo
2x1 C 5x2 . Las restricciones conforman la región factible (sombreada) de la figura.
Un problema de programación lineal cualquiera

min. c T x
s. a Ax  b
x  0;
13.4 Formulación de problemas de Programación Lineal j 297

x0
356
8
min. 2x1 C 5x2
s. a x1 C x2  6
356
x1 2x2  18 7
3146
x1 ; x2  0;
376 5
5 1
x1
0
9
Figura 13.1

se puede expresar en la forma estándar sin más que sustraer un vector y, denominado de variables de holgura, de las
condiciones Ax  b:
min. cT x
s. a Ax yDb
x; y  0:
Si las condiciones fuesen Ax  b, añadiendo un vector y se obtendría la forma estándar: Ax C y D b.
Si alguna de las variables xi no está restringida a ser no negativa, se puede reemplazar por otras dos, xi0 y xi00 , tales que

xi D xi0 xi00 ;

donde xi0  0 y xi00  0, y el problema pasa a ser uno con formulación estándar.
Si se trata de maximizar una función objetivo, se puede transformar en minimizar esa función teniendo en cuenta que

mKax c T x D mKın c T x:

13.3 Desarrollo histórico de la Programación Lineal


Orígenes en Newton, Leibnitz, Lagrange y Fourier
1930s Kantorovich; primeras aplicaciones en economía
1940s Se crea por G. Dantzig, John von Neumann y L. Kantorovich el área de conocimiento Programación Lineal
1947 G. Dantzig formula el Método Simplex para resolver problemas logísticos militares
1950-1970 Se disparan las aplicaciones en múltiples áreas: control, ingeniería eléctrica, estructuras, transporte,
mecánica,...
1979 L. Khachiyan desarrolla el algoritmo del elipsoide.
1984 N. Karmarkar desarrolla un método basado en puntos interiores. Mejor teórica y prácticamente
1995-hoy Desarrollo de muchas variantes de punto interior muy eficientes para problemas de grandes dimensiones.
Convergencia teórica y algorítmica con Programación No Lineal

13.4 Formulación de problemas de Programación Lineal


13.4.1 La dieta alimenticia
Es el problema clásico sobre el que se empezaron a ensayar los primeros procedimientos numéricos y electrónicos de
obtención de una solución.
Trataba de elaborar, en los años 40 del siglo XX —en plena II guerra mundial—, una dieta diaria para un colectivo
de soldados y militares de tal forma que se suministrase a cada individuo una cantidad mínima de varios ingredientes
nutritivos.
298 j Capítulo 13. Optimización Lineal. Introducción a la Programación Lineal

Para plantear el problema, supongamos que existen en el mercado n alimentos distintos, a unos costes unitarios
c1 ; : : : ; cn , y que se quiere programar una dieta que contenga al menos b1 ; : : : ; bm unidades de m ingredientes nutritivos.
Si el alimento j contiene aij unidades del ingrediente i , y se desea programar el vector dieta x T D Œx1 ; x2 ; : : : ; xn 
que fije las cantidades que hay que comprar cada día de cada alimento de tal forma que el coste total sea mínimo, la
formulación del problema en términos matemáticos es esta:

minimizar c1 x1 C c2 x2 C    C cn xn
sujeta a a11 x1 C a12 x2 C    C a1n xn  b1
a21 x1 C a22 x2 C    C a2n xn  b2
:: ::
: :
am1 x1 C am2 x2 C    C amn xn  bm
x1 ; x2 ; : : : ; xn  0:

13.4.2 Planificación de la generación de energía eléctrica


Una empresa de producción, transporte y distribución de energía eléctrica está estudiando la evolución de su demanda,
de potencia y de energía, y cómo satisfacer su incremento los próximos 10 años.
El mercado tecnológico dispone de cuatro formas consolidadas y aceptadas de generar electricidad a gran escala:
centrales termoeléctricas de gas natural, centrales hidráulicas, aerogeneradores y centrales de carbón.
El patrón de su demanda eléctrica futura está definido por:
El consumo anual adicional de energía, estimado en 1.750 TWh (1 TWh = 109 kWh) para el conjunto de los diez
años;
La demanda máxima de potencia adicional, estimada en 30 GW (1 GW=106 kW) para el año número 10;
La potencia diaria media demandada en un día de invierno, estimándose que crecerá en 20 GW para el año número
10.
Los parámetros esenciales de las centrales contempladas son estos.

Potencia Potencia Horas Coste de Coste total


garantizada máxima utilización inversión actualizado
Tipo de Central 106 kW 106 kW anuales 106 euros 106 euros
Gas 0,33 0,35 7.500 210 240
Hidroeléctricas 0,10 0,10 3.000 80 95
Carbón 0,80 0,90 8.000 1.100 1.300
Aerogeneradores 0,01 0,04 2.000 48 50

De acuerdo con estos presupuestos, ¿cuál es el plan óptimo de equipamiento de la empresa para esos diez años? ¿Qué
número de centrales son necesarias para hacer frente a la demanda, minimizando el coste actualizado neto necesario para
abordar dicho plan? Las restricciones adicionales son:
No se pueden gastar en total más de 25.500 MM de euros.
Por cuestiones medioambientales, no se pueden construir más de 50 unidades de gas, 10 hidráulicas y 50 unidades
de carbón.
Solución Designando por x1 ; x2 ; x3 ; x4 el número de unidades de cada tipo de generación posible, el problema de
Programación Lineal se puede plantear como se indica en la fórmula 13.1.
Para hacernos una idea de cómo resolver este tipo de problemas con el software disponible, vamos a utilizar los vehícu-
los que nos proporciona M ATLAB. Disponemos de varios instrumentos para abordarlo y los conocimientos suficientes
como para intentarlo. Lo haremos de CINCO MANERAS distintas en las páginas que siguen:
1. Primero utilizamos linprog, el software especializado en Programación Lineal de M ATLAB. Una sesión al res-
pecto con dicho programa se muestra en el cuadro 13.1 de la página 300 que sigue.
2. Segundo, con otro software de M ATLAB, fmincon, para resolver problemas generales de optimización con con-
diciones. La sesión correspondiente es la del cuadro 13.2 de la página 301.
13.4 Formulación de problemas de Programación Lineal j 299

minimizar 240x1 C 95x2 C 1:300x3 C 50x4


sujeta a 0;33x1 C 0;1x2 C 0;8x3 C 0;01x4  20
0;35x1 C 0;1x2 C 0;9x3 C 0;04x4  30
24;75x1 C 3x2 C 64x3 C 0;2x4  1:750
210x1 C 80x2 C 1:100x3 C 48x4  25:500
0  x1  50
0  x2  10
0  x3  50
0  x4

Fórmula 13.1

3. Tercero, usaremos OPTI, http://www.i2c2.aut.ac.nz/Wiki/OPTI/ de Jonathan Currie, del Industrial Information


& Control Centre (I 2 C 2 ), de la AUT University, Auckland, New Zealand. La sesión a este respecto es la del
cuadro 13.3 de la página 301.
4. Cuarto, utilizamos otro software puntero para investigación, de la Universidad de Stanford (California, EE.UU.),
CVX, desde http://cvxr.com/cvx. El script de M ATLAB para inicializarlo y la sesión posterior correspondiente
para ejecutarlo serían los del cuadro 13.4 de la página 302.
5. Quinto, lo abordaremos mediante el concurso de AMPL, un sistema integrado para todo el proceso de opti-
mización: formulación, test, implantación, etc. Primero formularemos el problema con ese lenguaje y luego lo
resolveremos con OPTI. Todo ello se recoge en el cuadro 13.5 de la página 303.
También llevaremos a cabo el experimento con este mismo lenguaje AMPL forzando, en una sencilla variante
del problema, a que en la solución todas las variables de decisión deban ser enteras. Se obtendrá lo que se
puede ver en el cuadro 13.6 de la página 304.
300 j Capítulo 13. Optimización Lineal. Introducción a la Programación Lineal

>> A=[0.33 0.1 0.8 0.01 -1 0 0 0; 0.35 0.1 0.9 0.04 0 -1 0 0;...
24.75 3 64 0.2 0 0 -1 0;210 80 1100 48 0 0 0 1];
>> b=[20;30;1750;25500];
>> c=[240 95 1300 50 0 0 0 0];
>> l=[0 0 0 0 0 0 0 0 ];
>> u=[50 10 50 1000 100000 100000 100000 1000000];
>> options = optimset(’LargeScale’, ’off’, ’Simplex’, ’on’, ’Display’, ’Iter’);
>> [x fval exitflag output lambda]=linprog(c,[],[],A,b,l,u,[],options)
Phase 1: Compute initial basic feasible point.
Iter Infeasibility
0 268.75
1 43.8864
2 28.1167
3 5.34911
4 0.227273
5 -0
Phase 2: Minimize using simplex.
Iter Objective Dual Infeasibility
f’*x A’*y+z-w-f
0 29730.3 1.52213
1 29561.1 1.12263
2 28575 0
Optimization terminated.
x =
50.0000
10.0000
7.1429
126.7857
4.4821
0
0
257.1429
fval =
2.8575e+004
exitflag =
1
output =
iterations: 2
algorithm: ’medium scale: simplex’
cgiterations: []
message: ’Optimization terminated.’
constrviolation: 3.6380e-012
lambda =
ineqlin: [0x1 double]
eqlin: [4x1 double]
upper: [8x1 double]
lower: [8x1 double]
>> lambda.eqlin
ans =
1.0e+003 *
0
-1.2353
-0.0029
0
>> lambda.upper
ans =
265.1471
37.3529
0
0
0
0
0
0

Cuadro 13.1: El problema de la planificación de la generación de energía eléctrica resuelto con linprog()
13.4 Formulación de problemas de Programación Lineal j 301

>> A=[0.33 0.1 0.8 0.01 -1 0 0 0; 0.35 0.1 0.9 0.04 0 -1 0 0; 24.75 3 64 0.2 0 0 -1 0;210 80 1100 48 0 0 0 1];
>> b=[20;30;1750;25500]; l=[0 0 0 0 0 0 0 0 ]; u=[50 10 50 1000 100000 100000 100000 1000000];
>> fun = @(x) 240*x(1)+95*x(2)+1300*x(3)+50*x(4);
>> options=optimset(’Display’,’iter-detailed’);
>> x = fmincon(fun,zeros(8,1),[],[],A,b,l,u,[],options)
Max Line search Directional First-order
Iter F-count f(x) constraint steplength derivative optimality Procedure
0 9 0 2.55e+04 Infeasible start point
1 18 28987 3.553e-15 1 225 112
2 27 28925.5 2.274e-13 1 -7.51 3.69 Hessian modified
3 36 28899.5 7.105e-15 1 -4.08 2.54 Hessian modified
4 45 28792.9 6.57e-17 1 -2.63 5.13 Hessian modified twice
5 54 28792 2.274e-13 1 -0.914 0.909 Hessian modified twice
6 63 28750.2 3.638e-12 1 -0.914 0.914 Hessian modified twice
7 72 28575 2.274e-13 1 -0.914 9.27e-05 Hessian modified
Optimization completed: The first-order optimality measure, 8.216127e-13, is less
than options.TolFun = 1.000000e-06, and the maximum constraint violation, 2.273737e-13,
is less than options.TolCon = 1.000000e-06.

Optimization Metric Options


first-order optimality = 8.22e-13 TolFun = 1e-06 (default)
max(constraint violation) = 2.27e-13 TolCon = 1e-06 (default)
Active inequalities (to within options.TolCon = 1e-06):
lower upper ineqlin ineqnonlin
6 1
7 2
x= 50.0000
10.0000
7.1429
126.7857
4.4821
0.0000
0.0000
257.1429
Cuadro 13.2: El problema de la planificación de la generación de energía eléctrica resuelto con fmincon

>> A=[0.33 0.1 0.8 0.01 -1 0 0 0; 0.35 0.1 0.9 0.04 0 -1 0 0;...
24.75 3 64 0.2 0 0 -1 0;210 80 1100 48 0 0 0 1];
>> b=[20;30;1750;25500];c=[240 95 1300 50 0 0 0 0];
>> l=[0 0 0 0 0 0 0 0 ];u=[50 10 50 1000 100000 100000 100000 1000000];
>> Opt = opti(’f’,c,’eq’,A,b,’bounds’,l,u)
------------------------------------------------------
Linear Program (LP) Optimization
min f’x
s.t. rl <= Ax <= ru
lb <= x <= ub
------------------------------------------------------
Problem Properties:
# Decision Variables: 8
# Constraints: 20
# Linear Equality: 4
# Bounds: 16
------------------------------------------------------
Solver Parameters:
Solver: CLP
------------------------------------------------------
>> [x,fval,exitflag,info] = solve(Opt)
x =
50.0000
10.0000
7.1429
126.7857
4.4821
0
0
257.1429
fval =
28575
exitflag = 1
info =
Iterations: 2
Time: 0.0023
Algorithm: ’CLP: Automatically Chosen Solver’
Status: ’Proven Optimal’
Lambda: [1x1 struct]

Cuadro 13.3: El problema de la planificación de la generación de energía eléctrica resuelto con OPTI
302 j Capítulo 13. Optimización Lineal. Introducción a la Programación Lineal

>> A=[0.33 0.1 0.8 0.01 -1 0 0 0; 0.35 0.1 0.9 0.04 0 -1 0 0;...
24.75 3 64 0.2 0 0 -1 0;210 80 1100 48 0 0 0 1];
>> b=[20;30;1750;25500];
>> c=[240 95 1300 50 0 0 0 0];
>> l=[0 0 0 0 0 0 0 0 ];
>> u=[50 10 50 1000 100000 100000 100000 1000000];
>> Ejemplo_generacion

Calling SDPT3 4.0: 20 variables, 8 equality constraints


For improved efficiency, SDPT3 is solving the dual problem.
------------------------------------------------------------
num. of constraints = 8
dim. of linear var = 16
dim. of free var = 4 *** convert ublk to lblk
*******************************************************************
SDPT3: Infeasible path-following algorithms
*******************************************************************
version predcorr gam expon scale_data
NT 1 0.000 1 0
it pstep dstep pinfeas dinfeas gap prim-obj dual-obj cputime
-------------------------------------------------------------------
0|0.000|0.000|1.0e+000|6.9e+000|3.5e+010| 2.804630e+009 0.000000e+000|0:0:00|chol 1 1
1|1.000|0.966|8.9e-007|2.3e-001|2.2e+009| 1.149790e+009 5.446578e+005|0:0:00|chol 1 1
2|1.000|0.401|2.5e-006|1.4e-001|8.4e+008| 2.092782e+008 5.865177e+005|0:0:00|chol 1 1
3|0.892|0.352|2.3e-007|9.1e-002|5.8e+008| 8.492455e+007 5.783161e+005|0:0:00|chol 1 1
4|1.000|0.357|1.5e-006|5.9e-002|4.4e+008| 4.170257e+007 4.391842e+005|0:0:00|chol 1 1
5|1.000|0.675|1.1e-007|1.9e-002|1.5e+008| 1.329674e+007 1.506755e+005|0:0:00|chol 1 1
6|0.997|0.878|2.9e-008|2.3e-003|1.9e+007| 2.940189e+006-1.013703e+004|0:0:00|chol 1 1
% Ejemplo_generacion.m 7|0.998|0.919|7.8e-009|1.9e-004|1.7e+006| 5.276519e+005-2.736437e+004|0:0:00|chol 1 1
cvx_begin 8|1.000|0.060|3.4e-009|1.8e-004|1.4e+006| 4.232803e+005-2.757775e+004|0:0:00|chol 1 1
variable x(8) 9|1.000|0.881|1.7e-008|2.1e-005|2.2e+005| 1.097886e+005-2.857791e+004|0:0:00|chol 1 1
minimize (c*x); 10|0.853|0.236|1.9e-009|1.6e-005|1.0e+005| 2.394123e+004-2.853426e+004|0:0:00|chol 1 1
subject to 11|1.000|0.452|1.7e-009|8.9e-006|4.8e+004|-4.977080e+003-2.864900e+004|0:0:00|chol 1 1
A*x==b; 12|0.989|0.646|6.5e-009|3.2e-006|1.1e+004|-2.511018e+004-2.886680e+004|0:0:00|chol 1 1
x>=0; 13|0.861|0.213|7.2e-009|2.5e-006|9.6e+003|-2.519317e+004-2.882240e+004|0:0:00|chol 1 1
x<=u’; 14|1.000|0.617|1.1e-008|9.5e-007|3.0e+003|-2.771596e+004-2.881777e+004|0:0:00|chol 1 1
cvx_end 15|1.000|0.652|5.0e-011|3.3e-007|8.5e+002|-2.838212e+004-2.879646e+004|0:0:00|chol 1 1
16|0.645|0.374|6.8e-010|2.1e-007|4.4e+002|-2.851301e+004-2.875216e+004|0:0:00|chol 1 1
17|1.000|0.169|1.2e-009|1.7e-007|3.8e+002|-2.851581e+004-2.872179e+004|0:0:00|chol 1 1
18|1.000|0.308|6.9e-009|1.2e-007|2.7e+002|-2.852690e+004-2.867571e+004|0:0:00|chol 1 1
19|1.000|0.521|1.4e-009|5.7e-008|1.2e+002|-2.856063e+004-2.862352e+004|0:0:00|chol 1 1
20|1.000|0.858|2.7e-010|8.2e-009|1.5e+001|-2.857437e+004-2.858190e+004|0:0:00|chol 1 1
21|0.987|0.984|8.1e-012|1.5e-010|2.7e-001|-2.857499e+004-2.857511e+004|0:0:00|chol 1 1
22|0.989|0.989|6.4e-013|2.0e-012|3.3e-003|-2.857500e+004-2.857500e+004|0:0:00|chol 1 1
23|0.989|0.988|1.8e-014|2.8e-014|4.4e-005|-2.857500e+004-2.857500e+004|0:0:00|
stop: max(relative gap, infeasibilities) < 1.49e-008
-------------------------------------------------------------------
number of iterations = 23
primal objective value = -2.85750000e+004
dual objective value = -2.85750000e+004
gap := trace(XZ) = 4.42e-005
relative gap = 7.74e-010
actual relative gap = 2.99e-010
rel. primal infeas = 1.78e-014
rel. dual infeas = 2.78e-014
norm(X), norm(y), norm(Z) = 1.8e+003, 1.0e+006, 1.0e+006
norm(A), norm(b), norm(C) = 1.6e+003, 1.3e+003, 1.7e+006
Total CPU time (secs) = 0.11
CPU time per iteration = 0.00
termination code = 0
DIMACS: 1.8e-014 0.0e+000 4.8e-014 0.0e+000 3.0e-010 7.7e-010
-------------------------------------------------------------------
------------------------------------------------------------
Status: Solved
Optimal value (cvx_optval): +28575

Cuadro 13.4: El problema de la planificación de la generación de energía eléctrica resuelto con CVX
13.4 Formulación de problemas de Programación Lineal j 303

# Generación.mod + .dat en AMPL

param a{1..4, 1..4}; param b{1..4}; param c{1..4}; param ub{1..4};

min. 240x1 C 95x2 C 1:300x3 C 50x4 var x{i in 1..4} >= 0, <= ub[i];
s. a 0;33x1 C 0;1x2 C 0;8x3 C 0;01x4  20
minimize coste: sum{j in 1..4} c[j]*x[j];
0;35x1 C 0;1x2 C 0;9x3 C 0;04x4  30
24;75x1 C 3x2 C 64x3 C 0;2x4  1:750 subject to res1 {i in 1..3}: sum{j in 1..4} a[i,j]*x[j] >= b[i];
210x1 C 80x2 C 1:100x3 C 48x4  25:500 subject to res2: sum{j in 1..4} a[4,j]*x[j] <= b[4];

0  x1  50 data;
param b := 1 20 2 30 3 1750 4 25500;
0  x2  10 param c := 1 240 2 95 3 1300 4 50;
0  x3  50 param a: 1 2 3 4 :=
0  x4 1 0.33 0.1 0.8 0.01
2 0.35 0.1 0.9 0.04
3 24.75 3 64 0.2
4 210 80 1100 48 ;
param ub := 1 50 2 10 3 50 4 infinity;

>> prob = amplRead(’Generación_1.mod’)


>> Opt = opti(prob)
prob = Name: ’OPTI Problem’
------------------------------------------------------
f: [4x1 double]
Linear Program (LP) Optimization
H: []
min f’x
Hstr: []
s.t. rl <= Ax <= ru
fun: []
lb <= x <= ub
sense: 1
------------------------------------------------------
objbias: 0
Problem Properties:
A: [4x4 double]
# Decision Variables: 4
b: []
# Constraints: 11
Aeq: []
# Linear Inequality: 4
beq: []
# Bounds: 7
rl: [4x1 double]
------------------------------------------------------
ru: [4x1 double]
Solver Parameters:
lb: [4x1 double]
Solver: CLP
ub: [4x1 double]
------------------------------------------------------
Q: []
>> [x,fval] = solve(Opt)
l: []
x =
qrl: []
50.0000
qru: []
10.0000
sdcone: []
7.1429
nlcon: []
126.7857
nljac: []
fval =
nljacstr: []
28575
nlrhs: []
>> [x,fval,exitflag,info] = solve(Opt)
nle: []
x =
cl: []
50.0000
cu: []
10.0000
int: ’cccc’
7.1429
sos: []
126.7857
xdata: []
fval =
ydata: []
28575
weighting: []
exitflag =
x0: [4x1 double]
1
probtype: []
info =
solver: []
Iterations: 2
path: ’D:\ Matlab2013a\ @opti\ Generación_1.nl’
Time: 5.7776e-04
opts: []
Algorithm: ’CLP: Automatically Chosen Solver’
ode: []
Status: ’Proven Optimal’
odez0: []
Lambda: [1x1 struct]
conlin: [4x1 double]

Cuadro 13.5: Resolución del problema de la planificación de la generación de energía eléctrica con OPTI al que se pasan los
datos mediante AMPL (recuadro arriba a la derecha)
 Si planteamos el problema otra vez con AMPL, haciendo que las variables de 23/67

decisión
304 j Capítulo debanLineal.
13. Optimización serIntroducción
enteras, a la Programación Lineal

!
! "
!

# $ % $& ' (')* (')

$&"' $ + % $& ' ( ')* (') "( )


$&"' $,% $& ' ( ')* (') - "( )

$&"' % ( ) - .
$&"' ,% (,) -
$&"' +% (+) - .

! " %
,
, +
+ /.
,..

! %
,
, 0.
+ +
.

! % , + %
++ 1
, +. 0
+ , /. + 2 ,
, 1 1

>> prob = amplRead(’Generación_1.mod’)


prob =
Name: ’OPTI Problem’
f: [4x1 double]
>> Opt = opti(prob)
H: []
------------------------------------------------------
Hstr: []
a b c 1 2 3 Mixed Integer Linear Program (MILP) Optimization
fun: []
min f’x
sense: 1
d e f g 9 4 6 5 s.t. rl <= Ax <= ru
objbias: 0
lb <= x <= ub
h i j A: [4x4 double]10 8 7 xi = Integer / Binary
b: []
------------------------------------------------------
Aeq: []
Problem Properties:
beq: []
# Decision Variables: 4
rl: [4x1 double]
# Constraints: 16
ru: [4x1 double]
# Linear Inequality: 4
lb: [4x1 double]
# Bounds: 8
ub: [4x1 double]
# Integer Variables: 4
Q: []
------------------------------------------------------
l: []
Solver Parameters:
qrl: []
Solver: CBC
qru: []
------------------------------------------------------
sdcone: []
>> [x,fval,exitflag,info] = solve(Opt)
nlcon: []
x =
nljac: []
50
nljacstr: []
10
nlrhs: []
8
nle: []
108
cl: []
fval =
cu: []
28750
int: ’iiii’
exitflag =
sos: []
1
xdata: []
info =
ydata: []
Nodes: 6
weighting: []
AbsGap: 175
x0: [4x1 double]
RelGap: 0.0061
probtype: []
Time: 0.0044
solver: []
Algorithm: ’CBC: Branch and Cut using CLP’
path: ’D:\Matlab2013a\@opti\Generación_1.nl’
Status: ’Integer Optimal’
opts: []
ode: []
odez0: []
conlin: [4x1 double]

Cuadro 13.6: Resolución del problema de la planificación de la generación de energía eléctrica con OPTI al que se pasan los
datos en AMPL, obligando a una solución con todas las variables enteras (recuadro de arriba)
13.4 Formulación de problemas de Programación Lineal j 305


13.4.3 Optimización deflujos
!"#$%&' ()$"*$#$)
en redes_Network flows
+,-./012/./3-45467-4/8
JKLKJMNO
J PQRNSKMQNR
Se expresa gráficamente de esta forma.

; b
@De =
bcA @bGd T
T
9 : b l b@Bf
@Ci kEb
@ b@Hj ? 9 TT
@bIg T
l
T
< b @Fh > T
T
T eléctrica, material,
Se trata de encontrar, entre los nudos 1 y 6, el máximo caudal o flujo de gas, petróleo, energía 

mercancías, llamadas telefónicas, capital, etcétera.


UKVMUMWseXplantea
En términos de optimización matemática el problema 9 como sigue.
RY Z[XJ NNP \P]JPQRXS^KNMPQKNQP_XR
7 8 9
 
3 4 5 6    
0 1
max.
s. a
2
t

t D x Cx
JKLKJM0NOJ

PQRNSKMQNRPQN`XKSJR
x 3
1 2 1
x1 C x3 D x4 0  x2  2
aMQXKSPLNMUMWKNMPQ 2 C x5 D x3 C x6
x 0  x3  1
4 C x8 D x5 C x7
Linear programmingxformulation 0  x4  2
x6 D x8 C x9 0  x5  1
maximize t t D x7 C x9 0  x6  3
subject to t = x1 + x2, x1 + x3 = x4, et cetera
0  x7  3
0 ≤ x1 ≤ 3, 0 ≤ x2 ≤ 2, et cetera
0  x8  1
(t = x1 + x2 is equivalent to inequalities t ≤ x01
+ xx92,t ≥
1: x1 + x2, . . . )

La solución óptima de este “sencillo” problema es la que se esquematiza en la figura que sigue.
Solution
2
2 4
2 3

4 1 1 6 4

2 1

3 5
2

Linear optimization 18-5

13.4.4 La emisión de deuda pública_Portfolio analysis


El ayuntamiento de una capital de provincia tiene comprometido invertir en proyectos de infraestructura en cuatro años
2.000, 4.000, 8.000 y 5.000 millones de euros, respectivamente. Se supone que todo ese dinero está disponible el 1 de
enero del año en que se gasta.
Para financiar estas inversiones el ayuntamiento planea emitir unos bonos a 20 años con un interés del 4 % para la
deuda emitida el primer año, del 3 % para la del segundo año, 3,5 % para la del tercer año y del 3,75 % para la del cuarto
año. Los intereses se empiezan a pagar inmediatamente.
Si algo del dinero obtenido se deposita en cuentas a plazo fijo, se podría obtener el 1,5 % de interés el segundo año, el
1,25 % el tercero y el 1 % el cuarto.
¿Cuál es el plan óptimo de financiación?
306 j Capítulo 13. Optimización Lineal. Introducción a la Programación Lineal

Solución Si designamos por x1 ; x2 ; x3 y x4 las cantidades de deuda en miles de millones de euros que tiene que emitir
cada uno de los cuatro años, y por y1 ; y2 e y3 las que hay que depositar el segundo, tercer y cuarto año en cuentas a
plazo fijo, el problema se puede formular matemáticamente de la siguiente manera:
minimizar 20  0;04x1 C 20  0;03x2 C 20  0;035x3 C 20  0;0375x4
sujeta a x1 y1 D2
x2 C 1;015y1 y2 D4
x3 C 1;0125y2 y3 D 8
Transporte de mercancı́as
x4 C 1;01y3 D 5
na empresa dispone de m fábricas capaces de producir ; x4 ; y1 ; y2 ; y3  0:
x1 ; x2 ; x3mensual-
ente a1, a2, . . . , am cantidades de una mercancı́a. El producto ha de
r enviado13.4.5 Transporte
en cantidades b1, b2de
, . . mercancías_Transportation
. , bn a n almacenes. and logistics management
el coste El
desector
enviardel transporte
una unidad y logística es uno de losde
de producto quelamás utiliza la
fábrica PL almacén
i al para optimizar recursos.
Una empresa dispone de fábricas capaces de producir
es cij , se trata de determinar las cantidades xij que habrá aque
m mensualmente 1 ; a2 ; : : : ; am cantidades de una mercancía
que tiene que ser enviada a n almacenes en cantidades b1 ; b2 ; : : : ; bn , respectivamente. El coste de enviar una unidad de
nviar de cada fábrica a cada almacén de tal forma que el coste del
producto de la fábrica i al almacén j es cij . Hay que determinar las cantidades xij que hay que enviar de cada fábrica a
ansporte cada
seaalmacén
mı́nimo paraysatisfacer
se satisfagan los yrequerimientos
las demandas de envı́os
que el coste del transporte total seaamínimo.
alizar. El esquema de lo que se pretende y la formulación matemática del problema son los que siguen.
Fábrica Almacén i
minimizar cij xij
a1 1 1 b1
ij
n
X
a2 2 2 b2 sujeta a xij D ai ; para i D 1; : : : ; m
j D1
X m
xij D bj ; para j D 1; : : : ; n
i D1
am m n bn xij  0; para i D 1; : : : ; m
j D 1; : : : ; n:
Pm Pn 16
Además, i D1 ai D j D1 bj : la cantidad total producida tiene que ser igual a la suma de las que llegan a los almacenes.

13.5 Consideraciones geométricas


Consideremos este problema de Programación Lineal:
min. x1 3x2
s. a x1 C x2  6 Hay que determinar aquel punto de la región factible que hace
x1 C 2x2  8 mínima la variedad lineal (una recta) z D x1 3x2 .
x1 ; x2  0:
Para minimizar la función objetivo, z, habrá que desplazarla desde su subespacio de referencia, x1 3x2 D 0, en
la dirección que minimice más dicho objetivo: en la dirección c D Œ1; 3T , opuesta a su vector característico como se
ilustra en la figura 13.2.
En el óptimo hay dos condiciones que están activas, o vigentes: la primera y la segunda. Ninguna de las condiciones
de no negatividad de las variables están activas.
En el óptimo, el vector de costes se puede poner como combinación lineal de los vectores columna de la matriz A T ,
que son los vectores característicos de las condiciones activas:
  1   
1 1 1 5=3
A T  D cI !  D D :
1 2 3 2=3
13.5 Consideraciones geométricas j 307

x1 5 3  6
4 0 
5 1
-x09 x 1 8 9 4 En el punto óptimo, x  D Œ4=3; 14=3T , denominado punto
extremo o vértice, es imposible, manteniendo la factibilidad,
mover más z D x1 3x2 en la dirección de c.

346
3 6 5
c
90
8 9 0 x0

Figura 13.2

Volveremos sobre este  y esta combinación lineal recurrentemente.

13.5.1 Convexidad
Definición 13.1 Un conjunto C  Rn se dice convexo si y sólo si para todo par de puntos x1 ; x2 2 C todas las
combinaciones de la forma x D x1 C .1 /x2 , 0    1 están en C .
Cuando para cada par de puntos del conjunto convexo todos los puntos del segmento de recta que los une están en
el conjunto (ver variantes y formaciones en la figura 13.3). La expresión x D x1 C .1 /x2 , 0    1, define la
combinación convexa de x1 y x2 . Si 0 <  < 1, es decir  2 .0; 1/, la combinación es estrictamente convexa.

Examples of convex sets Examples of non-convex sets


• A line segment is a convex set. • The union of two non-overlapping line segm
• Non-convex sets can have “indentations.”

Fig. 4.9. Convex sets


with pairs of points
joined by line segments.

Figura 13.3: Diversas formaciones y expresiones de conjuntos convexos


Title Page ◭◭ ◮◮ ◭ ◮ 39 of 156 Go Back
Title Page ◭◭ ◮◮ ◭ ◮ 38 of 156 Go Back Full Screen Close Quit

El concepto de combinación convexa se puede generalizar a cualquier número finito de puntos de la siguiente manera:
p
X
xD i xi ;
i D1
Pp
donde i D1 i D 1; i  0; i D 1; : : : ; p:
Teorema 13.1 El conjunto de soluciones de un programa lineal, K D fx 2 Rn W Ax D b; x  0g, es un conjunto
convexo.
308 j Capítulo 13. Optimización Lineal. Introducción a la Programación Lineal

Definición 13.2 Un conjunto C  Rn se dice un cono si para todo x 2 C , x 2 C , para todo escalar no negativo
 2 R (  0). Un cono que también es convexo se denomina cono convexo.
El conjunto fx 2 Rm W x D A˛; A 2 Rmn ; ˛ 2 Rn ; ˛  0g es un cono convexo generado por los vectores columna
de la matriz A.
Definición 13.3 x es un punto extremo, o vértice, de un conjunto convexo C si y sólo si no es interior a un segmento
de recta contenido en C . Es decir, si y sólo si x D .1 ˇ/y C ˇz con 0 < ˇ < 1 y y; z 2 C ) x D y D z:

13.5.2 Formas de la solución u óptimo


Solución óptima única Ocurre siempre en un punto extremo, o vértice de la región factible. Las dos alternativas que
pueden presentarse en este caso son las de la figura 13.4: región factible acotada y no acotada. El que la región factible
no esté acotada no afecta a que haya o no óptimo; puede que sí a la forma de llegar a él.
9

54678

123 54678 1 3

0 0
Figura 13.4

01234516789
1
5 8 2 76 5 8

!!!!4  ! "#$
Soluciones óptimas alternativas En este caso el punto óptimo es cualquiera de los puntos de una denominada faceta,
o cara, de la región factible como muestra la figura 13.5 En (a) la región factible está acotada mientras que en (b) no.

( &' ( &$'

% %
' "#$!&)' Figura 13.5

Solución óptima no acotada Este caso se presenta cuando la configuración región factible-función objetivo tiene la
forma de la figura 13.6. Es posible desplazarse tanto como se desee dentro de la región factible en la dirección c sin
encontrar un punto extremo o cara de la región factible que bloquee dicho desplazamiento.

*+
Región factible vacía La de la figura 13.7, por ejemplo. Su región factible es el conjunto vacío, ;, pues no hay ningún
x D Œx1 ; x2 T que satisfaga todas las condiciones. El problema se dice no factible o inconsistente.
 !!"# $
!%$ 
!&'($
 !)!)*%$
13.5 Consideraciones geométricas j 309

Región factible vacı́a. El siguiente ejemplo ilustra este caso:


min. −2x1 + 3x2
+,
s. a −x1 + 2x2 ≤ 2
2x1 − x2 ≤ 3
x1 ≥ 0
x2 ≥ 3.

'
Su región factible es el ∅ pues no hay ningún x = [x1, x2]T que satis-
Figura 13.6
faga todas las condiciones. -.

2x 1 − x 2 ≤ 3 −x 1 + 2x 2 ≤ 2

0
3
min. 2x1 C 3x2
x2 ≥ 3
s. a x1 C 2x2  2

0 8/3
2x1 x2  3 7/3
1
x1  0
x2  3:

3/2
0

Figura 13.7 25

13.5.2.1 Geometría del problema con condiciones de igualdad

El programa lineal en forma estándar min. c T x; s. a Ax D b; x  0, x 2 Rn y A 2 Rmn , se puede escribir

n
X 05 698
min. cj xj
04 03 05 03
j D1 04
n
X
s. a aj xj D b
j D1 2 01
x1 ; : : : ; xn  0: 01 2
donde aj es el vector columna j de A.
El óptimo será un vector de escalares no negativos de dimensión n que defina una combinación de los vectores columna
de A de tal forma que b pertenezca al cono convexo generado por estos vectores columna y que minimice la función
objetivo.
En la figura 13.8 se representan los casos de un problema con región factible no vacía y otro con región factible vacía.
En el segundo caso, (b), los vectores a1 , a2 , a3 y a4 no se pueden combinar convexamente de ninguna manera que
contenga a b.
310 j Capítulo 13. Optimización Lineal. Introducción a la Programación Lineal

05 678 698
04 03 05 03
04

2 01
01 2
Figura 13.8: Problemas de PL con región factible no vacía y vacía

Consideremos como ejemplo las regiones factibles que determinan los dos conjuntos de condiciones que siguen.

04 678 04 678 04 698 04 698


3 3
2x1 C x2 C x3 D2 2x1 C x2 3C x3 D 1 3
x1 C 3x2 C x4 D 3 x1 C 3x2 05 C D
05 05 x4 2
05
x1 ; x2 ; x3 ; x4  0 x1 ; x2 ; x3 ; x4  0:
02 02 02 02
01 01 01 01

En (a) se puede ver que b está contenido en ese cono convexo; en (b) no: el primer problema es factible; el segundo es
inconsistente.

13.5.2.2 Geometría con condiciones de desigualdad


Analicemos ahora el problema de Programación Lineal escrito así
n
X
min. cj xj
j D1
n
X
s. a aj xj  b
j D1
x1 ; : : : ; xn  0:

Si existe solución factible, la intersección del cono convexo que generan a1 ; : : : ; an y el conjunto de vectores menores o
iguales que b será no vacía como se aprecia en la figura 13.9.

Geometría del óptimo


Refiriéndonos al problema en forma estándar, se buscan unos escalares no negativos x1 ; x2 ; : : : ; xn tales que
       
z c1 c2 c
D x1 C x2 C    C n xn
b a1 a2 an

y se minimice z.
Se busca poder expresar el vector Œz, bT T en el cono convexo que generan los vectores Œc1 ; a1T T ; : : : ; Œcn ; anT T con
el valor más pequeño posible del escalar z.
13.6 Politopos j 311

a4
a4

a1 a2 a1 a2
b
b
En (a) la región factible es no vacía; en (b)
vacía. vacía.

567 587

Figura 13.9

Ejemplo 13.1 Sea el problema min. 2x1 3x2


s. a x1 C 2x2  2
x1 ; x2  0:
Añadiendo la variable de holgura x3 , el problema se puede expresar como el de encontrar unos escalares x1 ; x2 ; x3  0
tales que el vector Œz; 2T esté en el cono convexo que generan los vectores Œ 2; 1T , Œ 3; 2T y Œ0; 1T , con el valor más
pequeño posible del escalar z.

0 3 Hay que hayar los escalares x ; x ; x  0 tales que


789
  5
1 2 3
" # " # " # " #
0463 z 2
D
3
x1 C x2 C
0
x3
5 2 1 2 1

013 y hagan mínimo el z. La solución es z  D 4 con x1 D 2


 9 4 0453 2 y x2 D x3 D 0.

2
Ejemplo 13.2 Sea ahora min. 2x1 3x2
s. a x1 C 2x2  2
x1 ; x2  0:
Si se sustrae de la primera condición la variable de holgura x3 , el problema es el de encontrar unos escalares
x1 ; x2 ; x3  0 tales que se cumpla que
       
z 2 3 0
D x1 C x2 C x3
2 1 2 1

y se minimice z como se indica en la figura 13.10.

13.6 Politopos
Definición 13.4 Llamaremos hiperplano H de vector característico a 2 Rn ; a ¤ 0, al conjunto H D fx 2 Rn W
aT x D c , con c 2 R.
312 j Capítulo 13. Optimización Lineal. Introducción a la Programación Lineal

03
7890
3  5
46
5
0453
2 En el cono que generan los vectores Œ 2, 1T , Œ 3, 2T y Œ0, 1T se
pueden encontrar puntos de la forma Œz, 2T , con z tan pequeña como
013 queramos: el valor óptimo de la función objetivo tiende, por consiguien-
-2
te, a 1. El problema no está acotado.

Figura 13.10

Definición 13.5 Un hiperplano en Rn es una variedad lineal (traslación de un subespacio) .n 1/-dimensional.


Un hiperplano es el conjunto de soluciones de una ecuación lineal en Rn .
Definición 13.6 Dado un hiperplano H , aT x D c, llamaremos semiespacios cerrados de borde H a los conjuntos
˚
HC D x 2 Rn W aT x  c
˚
H D x 2 Rn W a T x  c
y semiespacios abiertos de borde H a
ı ˚
H C D x 2 Rn W a T x > c
ı ˚
H D x 2 Rn W a T x < c :

El hiperplano x1 C 4x2 D 11, su vector característico a D Œ 1; 4T y los semiespacios HC y H se ven en la


figura 13.11. El vector a es ortogonal a H y dirigido hacia HC . Los semiespacios de borde H son convexos; la unión de

H+
y

H−

a H

Figura 13.11: El hiperplano x1 C 4x2 D 11, sus características y las regiones que define

HC y H es el espacio Rn .
Definición 13.7 Un politopo es un conjunto formado por la intersección de un número finito de semiespacios cerrados.
314 j Capítulo 13. Optimización Lineal. Introducción a la Programación Lineal

2 432
2 1 ÿ 5
Figura 13.13

Si esas m columnas son las primeras y forman la submatriz B de A, ésta queda como ilustra la figura 13.13. Como
B es regular, la ecuación BxB D b se puede resolver de forma única. El vector x T D ŒxBT ; 0T  es una de las múltiples
soluciones de Ax D b.
Definición 13.10 Sea B cualquier submatriz no singular m  m resultante de agrupar m columnas linealmente inde-
pendientes de A.
Si todos los n m coeficientes del vector x no asociados a las columnas de B, a los que se denominarán variables
no básicas, se hacen cero y se resuelve la ecuación Ax D b en los m restantes coeficientes, denominados variables
básicas, la solución resultante de denomina solución básica asociada a la matriz básica, o base, B.
Las n m columnas de A que no forman parte de B se las agrupa en una matriz m  .n m/ denominada matriz
no básica N (asociada a las variables no básicas); en correspondencia, las variables no básicas forman xN .

Ejemplo 13.3 Consideremos el poliedro de la figura

x7
0 23 0 43
4 4

0 13
2
x6

definido por x1 C x2  6, x2  3 y x1 ; x2  0.
Si añadimos las variables de holgura x3 y x4 a la primera y segunda desigualdad, respectivamente, resulta:

x1 C x2 C x3 D6
x2 C x4 D 3
x1 ; x2 ; x3 ; x4  0:
 
La matriz de los coeficientes es A D Œa1 ; a2 ; a3 ; a4  D 10 11 10 01 . Las posibles matrices B que se pueden extraer de
A y sus correspondientes soluciones básicas son las del cuadro 13.7.
La cuarta de estas soluciones no vale por ser uno de sus coeficientes negativo; es no factible. Las soluciones básicas
factibles son pues 2 3 2 3 2 3 2 3
3 6 0 0
3 0 3 0
x1 D 4 0 5 ; x2 D 4 0 5 ; x3 D 4 3 5 y x4 D 4 6 5 :
0 3 0 3
Obsérvese que estos puntos determinan con sus dos primeros coeficientes los cuatro puntos extremos de la figura
anterior.
13.7 Puntos extremos y soluciones básicas factibles j 315

      
  x1 1 1 6 3
xB D D B 1b D D
11 x2    0 1 3 3
B D Œa1 ; a2  D
01 x3 0
xN D D
x 0
 4     
  x1 10 6 6
xB D D B 1b D D
10  x4    0 1 3 3
B D Œa1 ; a4  D
01 x2 0
xN D D
x 0
 3     
  x2 0 1 6 3
xB D D B 1b D D
11  x3    1 1 3 3
B D Œa2 ; a3  D
10 x1 0
xN D D
x 0
 4     
  x2 10 6 6
xB D D B 1b D D
10 x4    11 3 3
B D Œa2 ; a4  D
11 x1 0
xN D D
x 0
 3     
  x3 10 6 6
xB D D B 1b D D
10  x4    0 1 3 3
B D Œa3 ; a4  D
01 x1 0
xN D D
x2 0

Cuadro 13.7: Posibles matrices B que se pueden extraer de A y sus correspondientes soluciones básicas

Definición 13.11 Si una o más de las variables básicas de una solución básica de
Ax D b
x  0;
es cero, la solución se denomina básica degenerada. Una solución básica en la que todos sus coeficientes son no
negativos se denomina solución básica factible; si algún coeficiente es cero, la solución se dice básica factible dege-
nerada.
Dos soluciones básicas factibles del politopo P D fx 2 Rn W Ax D b; x  0g se dicen adyacentes si m 1 de sus
coeficientes son comunes.
Dos soluciones adyacentes o puntos extremos están unidos por una arista. Suponiendo no degeneración, cualquier
variable básica (y su correspondiente punto extremo) tiene exactamente n m adyacentes.
Teorema 13.2 Equivalencia entre puntos extremos y soluciones básicas. Sean A 2 Rmn una matriz de rango m,
b 2 Rm y el politopo convexo P D fx 2 Rn W Ax D b; x  0g. Un x 2 P es un punto extremo o vértice de P si y
sólo si los vectores columna de A asociados a los coeficientes positivos de x son linealmente independientes.

Corolario 13.3 x 2 P D fx 2 Rn W Ax D b; x  0g es punto extremo de P si y sólo si es una solución básica


factible de
Ax D b
x  0:

Corolario 13.4 Un x es un punto extremo de P D fx 2 Rn W Ax D b; x  0g si y sólo si resulta de la intersección


de n hiperplanos linealmente independientes.

Corolario 13.5 Un politopo P D fx 2 Rn W Ax D b; x  0g tiene un número finito de puntos extremos.

Demostración. Escoger m columnas linealmente independientes de n de A es


 
n nŠ
C.n; m/ D D :
m mŠ.n m/Š
316 j Capítulo 13. Optimización Lineal. Introducción a la Programación Lineal

Ejemplo 13.4 Consideremos el programa lineal de la figura 13.14.

x7
023 043
4 4
x1 C x2  6
x2  3
x1 C 2x2  9
013
x1 ; x2  0:
2
x6

Figura 13.14

Si añadimos las variables de holgura x3 , x4 y x5 a la primera, segunda y tercera desigualdad, respectivamente, resulta

x1 C x2 C x3 D6 2 3
11100
x2 C x4 D3
x1 C 2x2 C x5 D 9 I A D Œa1 ; a2 ; a3 ; a4 ; a5  D 4 0 1 0 1 0 5
12001
x1 ; x2 ; x3 ; x4 ; x5  0:

Obsérvese que la desigualdad x1 C 2x2  9 es redundante.


Estudiemos la solución básica que se obtiene a partir de B D Œa1 ; a2 ; a3 :
23 2 3 12 3 2 32 3 2 3
x1 111 6 0 2 1 6 3
6 7 6 7 6 7 6 76 7 6 7
xB D 4 x2 5 D B 1 b D 4 0 1 0 5 435 D 40 1 05435 D 435;
x3 120 9 1 1 1 9 0
" # " #
x4 0
xN D D :
x5 0

Es degenerada, pues su tercer coeficiente es cero.


Analicemos ahora la solución básica considerando B D Œa1 ; a2 ; a4 :
23 2 3 12 3 2 32 3 2 3
x1 110 6 20 1 6 3
6 7 6 7 6 7 6 76 7 6 7
xB D 4 x2 5 D B 1 b D 4 0 1 1 5 435 D 4 1 0 15435 D 435;
x4 120 9 11 1 9 0
" # " #
x3 0
xN D D :
x5 0

Como se puede ver es la misma solución que obteníamos antes.


Si considerásemos B D Œa1 ; a2 ; a5  llegaríamos también a la misma solución básica degenerada:

Œx1 x2 x3 x4 x5 T D Œ3 3 0 0 0T :

La correspondencia entre soluciones básicas factibles y puntos extremos no es en general biunívoca: A cada solución
básica factible le corresponde un único punto extremo en P , pero puede que a cada punto extremo de P le corresponda
más de una solución básica factible.
Cuando A no tiene rango completo, P puede ser el conjunto vacío o alguna de las condiciones es redundante. En lo
sucesivo supondremos que A 2 Rmn tiene m vectores fila/columna linealmente independientes.
13.7 Puntos extremos y soluciones básicas factibles j 317

Un problema de programación lineal se denomina no degenerado si todas sus soluciones básicas factibles son no
degeneradas. La correspondencia en este caso entre puntos extremos y soluciones básicas factibles sí es biunívoca.
Si el politopo P no está acotado, para caracterizar del todo las soluciones del problema de Programación Lineal hay
que introducir las direcciones.
Definición 13.12 Una dirección del politopo P D fx 2 Rn W Ax D b; x  0g es un vector no nulo d 2 Rn tal que
para todo x0 2 P el rayo fx 2 Rn W x D x0 C d;   0g pertenece a P .
Un politopo P no está acotado si y sólo si tiene una dirección. d ¤ 0 es una dirección de P si y sólo si Ad D 0 y
d  0, pues cualquier punto a lo largo de esa dirección cumple las condiciones y mejora la función objetivo sin límite.
Teorema 13.6 Teorema de la representación. Todo punto del politopo P D fx 2 Rn W Ax D b; x  0g de soluciones
de un PL se puede expresar de la forma X
xD i vi C d;
i 2I
P
donde fvi W i 2 I g es el conjunto de puntos extremos de P , i 2I i D 1, i  0, y d, o es una dirección de P , o
d D 0.

Corolario 13.7 Si el politopo P D fx 2 Rn W Ax D b; x  0g es cerrado y acotado (es un poliedro), todo punto


x 2 P se puede expresar como combinación convexa de sus puntos extremos.

13.7.1 Teoremas fundamentales de la Programación Lineal


Teorema 13.8 Si el politopo P D fx 2 Rn W Ax D b; x  0g de un PL es no vacío, tiene al menos un punto extremo
o vértice.

Teorema 13.9 Dado un politopo no vacío P D fx 2 Rn W Ax D b; x  0g de soluciones de un PL, el valor mínimo


de la función objetivo c T x en ese P se alcanza en un punto extremo (solución básica factible óptima), o c T x no está
acotada inferiormente.
De estos teoremas se deduce que, cuando hay varias soluciones óptimas, al menos una es un punto extremo del
politopo de soluciones factibles.
En consecuencia, para encontrar el óptimo de un PL hay que concentrarse fundamentalmente/únicamente en las solu-
ciones básicas factibles o puntos extremos de P .

Referencias, fuentes y lecturas complementarias


Para estudiar la teoría básica de la programación lineal a la que nos hemos referido en este capítulo se pueden consultar
preferentemente Bazaraa, Jarvis y Sherali [1990], Ignizio y Cavalier [1994], Fang y Puthenpura [1993], Luenberger
[1969], Nemhauser et al. [1989] y Goldfarb y Todd [1989]. También la más reciente Luenberger y Ye [2016]. Las
clásicas, Dantzig [1963] y [1987]. Hay otras muchas sofisticadas, pero las que más me gustan y he utilizado en la
practica y en la enseñanza son esas. Mis otros libros anteriores son también un buen punto de encuentro para estudiar
Programación Lineal, y en español.
La interpretación geométrica en los dos subespacios esenciales es bastante estándar; está muy bien explicada en Best y
Ritter [1985], Luenberger y Ye [2016] y Goldfarb y Todd [1989]. Las explicaciones ilustradas siguen fundamentalmente
a Bazaraa, Jarvis y Sherali [1990], Ignizio y Cavalier [1994], Fang y Puthenpura [1993] y Best y Ritter [1985]. La
exposición de la equivalencia entre puntos extremos y soluciones básicas factibles es una modificación de Goldfarb y
Todd [1989]. El teorema fundamental de la programación lineal sigue a Luenberger [1984] y Goldfarb y Todd [1989],
estando apoyada en consideraciones geométricas afines de Bazaraa, Jarvis y Sherali [1990]. Un magnífico libro de muy
reciente aparición para visualizar todo lo relativo a la geometría de la programación lineal en particular, y la optimización
en general, es Dattorro [2016].
Para completar el estudio teórico de la programación lineal recomendamos Schrijver [1986], desde un punto de vista
318 j Capítulo 13. Optimización Lineal. Introducción a la Programación Lineal

más teórico y Gill, Murray y Wright [1991], mucho más práctico, con un perfecto engarce con la teoría afín de álgebra
lineal. También se puede consultar Boyd y Vandenberghe [2004] y Nocedal y Wright [2006].
Otra buenas referencias clásicas sobre programación lineal son Chvátal [1983], Dantzig [1963], Darst [1991], Dorf-
man, Samuelson y Solow [1958], Fourer, Gay y Kernigham [1993], Hillier y Lieberman [1995], Karloff [1991], Minoux
[1986], Murty [1983], Nash y Sofer [1996], Padberg [1995], Panik [1996], Saigal [1995], Sierksma [1996], Simonnard
[1972] y [1973] y Van de Panne [1976]. Más recientemente la de Luenberger mencionada y todas aquellas que convergen
en Programación No Lineal, de las que hablaremos en el capítulo correspondiente entre las que destacan la de Nocedal
y Boyd y Vandenberghe [2004].
Capítulo 14

Programación lineal. El método Símplex

Contenido
14.1 Condiciones de punto óptimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
14.2 Mejorar una solución básica factible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
14.3 El algoritmo Símplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
14.4 Solución básica factible inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
14.5 Análisis de sensibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
14.6 El método Símplex para variables acotadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
14.7 Implementaciones divulgativas o “comerciales” del Símplex . . . . . . . . . . . . . . . . . . . . . 356
14.8 Complejidad computacional del algoritmo Símplex . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

P ARA encontrar el óptimo del problema de Programación Lineal

min. c T x
s. a Ax D b
x  0;

se podrían estudiar, uno a uno, los vértices o puntos extremos del politopo

P D fx 2 Rn W Ax D b; x  0; A 2 Rmn ; b 2 Rn g

y determinar aquél en el que la función objetivo se hace mínima. Para m y n grandes, considerar todos es prohibitivo
pues son mŠ.nnŠ m/Š :
En 1947 George B. Dantzig, EE.UU. 1914-2005,

Dantzig

culminó la investigación de un importante equipo de ingenieros, matemáticos y economistas formulando el Método


Símplex.
Sigue una sencilla estrategia de búsqueda del punto óptimo que no estudia todos los vértices de un problema. Sus
claves son:
320 j Capítulo 14. Programación lineal. El método Símplex

Encontrar un vértice desde el que comenzar: solución básica factible del politopo P ;
Desplazarse desde ese punto extremo a otro, a lo largo de alguna arista de P , mejorando con ello la función objetivo.
Repetir el paso anterior cuantas veces sea necesario hasta que se alcance la solución óptima o la arista escogida
lleve a 1.

14.1 Condiciones de punto óptimo


Teorema 14.1 Condiciones de Karush-Kuhn-Tucker. x 2 Rn es el óptimo del programa lineal
min. c T x
s. a Ax D b
x  0;
si y sólo si existen vectores  2 Rm y  2 Rn tales que
i) Ax D b; x  0; (factibilidad del problema primal)
ii) c D A T  C ;   0; (factibilidad del problema dual)
iii) i xi D 0; i D 1; : : : ; n: (holguras complementarias o gap de dualidad)

La condición i es la de factibilidad del problema tal como está planteado. La Función de Lagrange del problema es

L.x; ; / D c T x T .Ax b/  T x:

Su vector gradiente con respecto a x es c A T  . Igualado éste a 0 es la segunda condición, ii.


El vector  es el de los multiplicadores de Lagrange de las condiciones Ax D b.
El vector , el de los multiplicadores de Lagrange de las condiciones x  0.
La condición iii se conoce como la de complementariedad de holguras, u holguras complementarias. Exige que sean
cero aquellos multiplicadores de las condiciones de no negatividad que no estén activas (no sean cero) en el óptimo. O,
lo que es equivalente, que sea cero el denominado gap de dualidad: la diferencia entre el valor de la función objetivo del
primal y del dual. Volveremos sobre este asunto en el próximo capítulo.
Todas estas condiciones fueron formuladas en 1951 por Harold William Kuhn, EE.UU., 1925-2014, y Albert William
Tucker, Canadá, 1905-1995, con el fin de extender la teoría de Lagrange a la caracterización de los puntos óptimos de
problemas de programación lineal y no lineal sometidos a restricciones.
Posteriormente se descubrió que en 1939 William Karush, EE.UU., 1917-1997, ya había trabajado sobre estas condi-
ciones, por lo264que se les pasóRichard
a denominar
W. Cottle
desde entonces condiciones de Karush-Kuhn-Tucker, o KKT.

Karush Kuhn Tucker

William Karush, circa 1987 Fritz John at NYU, circa 1987


Las condiciones KKT generalizan la de la existencia de un mínimo de una función sin restricciones, es decir, que
rx f .x  / D 0.
Si A se ordena de la forma A D ŒB N , y en concordancia c T D ŒcBT cN T
, como en el óptimo la condición i xi D 0,
i D 1; : : : ; n, implica que Bi D 0, i D 1; : : : ; m (pues las variables básicas son positivas), la condición ii de KKT se
puede reescribir así:    T  
cB B 0
D C ; N  0:
cN NT N
Harold Kuhn and Albert Tucker, 1980
T
Esto equivale a que cB Dat von  yPrize
BNeumann que presentation
(Printed with permission of Larry Karush; NYU; Harold Kuhn and Alan Tucker.)

cN D N C N T ; N  0:
having come to the United States from Bialystok which was then under Russian
control. (It is now in Poland.) As a child, William was known as “Willie;”
his older brother Fred was called “Freddie” [39]. They eventually had two
younger siblings, Jack and Esther. Of the four, only Esther is still living. Willie
outgrew this diminutive name and became known as “Will.” He attended
public schools in Chicago, graduating from Murray F. Tuley High School in
June, 1934. From that point on, his Bachelor of Science, Master of Science,
and Doctor of Philosophy were all earned at the University of Chicago in 1938,
1939, and 1942, respectively [18].
Based on an entry in the 17th Edition of American Men & Women of Science
[1, p. 215], the table below gives a summary of the positions held by William
Karush. The table does not make explicit the fact that during World War
II, Karush worked on the Manhattan Project which culminated in the atomic
14.2 Mejorar una solución básica factible j 321

Es decir, a que
cN NTB T
cB  0

Este vector se denomina de costes reducidos; tiene que ser no negativo en el punto óptimo.
Vectores y condiciones clave en PL:
xB D B 1 b
N D cN N T B T
cB  0
 D B T cB

1. A N , vector de multiplicadores de Lagrange de las condiciones activas de x  0, se le denomina de costes


reducidos.
2. Que se cumpla que todos los costes reducidos sean positivos, o cero, es la condición de haber alcanzado el óptimo.
3. A , vector de multiplicadores de Lagrange de las condiciones Ax D b, se le denomina de multiplicadores
símplex.

14.1.1 Interpretación económica de los multiplicadores símplex


h 
i h i
xB 1b
Supongamos que x  D D B
0 es una solución óptima no degenerada de
0

min. c T x
s. a Ax D b
x  0:

Al suponer xB > 0, un cambio suficientemente pequeño 4b en b no debe modificar la base óptima B; la solución
óptima sería
   
 xO B B 1 .b C 4b/
xO D D :
0 0

y el cambio en la función objetivo 4z D cBT B 1


4b D T 4b, donde  D B T
cB es el óptimo del vector de
multiplicadores símplex.

El valor de i indica cómo cambia la función objetivo al incrementar una unidad la cantidad disponible del
recurso bi de la condición i-ésima.
Su valor es un precio o valor marginal del recurso i -ésimo en el óptimo: el máximo que se puede estar
dispuesto a pagar por incrementar una unidad su disponibilidad.

14.2 Mejorar una solución básica factible


Supongamos que:
Se parte de una solución básica factible: punto extremo o vértice del problema.
La matriz A 2 Rmn .m < n/ es de rango completo y la región factible no es el conjunto vacío.
En la solución básica factible los m primeros coeficientes del vector x son los que forman la base y son todos
positivos.
Ordenando la matriz A D ŒB N  y, de la misma manera, c T D ŒcBT cN T
, se tiene que

BxB C NxN D b:

Despejando xB ,
1 1
xB D B b B NxN
322 j Capítulo 14. Programación lineal. El método Símplex

El valor de la función objetivo para este vector es


 
xB
z D ŒcBT ; cN
T
 D cBT B 1 T
b C . cN
c B N /x T
B
1
N:
xN ›
costes re
ducidos
Para que se pueda mejorar la función objetivo desde el punto extremo que define ese vector, debe haber costes reduci-
dos negativos.
En el punto que define ese xB confluyen n m aristas; está en la intersección en Rn de los m hiperplanos correspon-
dientes a las condiciones Ax D b y los n m correspondientes a xN D 0 (no degenerada).
Para mejorar la función objetivo, de esas posibles n m aristas habrá que escoger una que consiga hacer decrecer la
función objetivo desplazándose por ella hasta otro vértice.
Esa arista la definirá un coste reducido, de los de las variables no en la base,

cNj D cj cBT B 1
aj ; j >m

que sea negativo, pues hará decrecer la función objetivo aumentando el valor de la variable no básica correspondiente.
Si por ejemplo cNj < 0, la función objetivo decrece al ritmo que marca el incremento desde cero de la variable no básica
xj .
Como a coste reducido más negativo, decrecimiento más rápido, se escoge para entrar en la base aquella variable no
básica que tenga el coste reducido más negativo.
¡OJO! Si la solución es básica degenerada, pues el valor de alguna variable básica es cero, puede ocurrir que en
alguna dirección cualquier desplazamiento  haga que
x. / D x C y
viole la factibilidad del problema. Esto ocurre pues en una solución básica degenerada confluyen más de m hiperplanos
como se ve en la figura 14.1. En este caso d1 es una dirección de movimiento factible; d2 no.

x3

d3

d2
P

x2

Figura 14.1: Región factible con una solución básica degenerada

Ejemplo 14.1 Consideremos el programa lineal:


min. x1 C x2
s. a x1 C 2x2  4
x2  1
x1 ; x2  0:
Añadamos las variables de holgura x3 y x4 para transformarlo en forma estándar:
min. x1 C x2
 
s. a x1 C 2x2 C x3 D 4 1210
I A D Œa1 ; a2 ; a3 ; a4  D :
x2 C x4 D 1 0101
x1 ; x2 ; x3 ; x4  0:
14.2 Mejorar una solución básica factible j 323

Consideremos como base de partida B D Œa1 ; a2 . Entonces


   1       
x1 1 12 4 1 2 4 2
xB D DB bD D D I
x2 01 1 0 1 1 1
   
x3 0
xN D D :
x4 0
La solución básica factible que estamos considerando se puede ver en la figura 14.2.

x2

79

79 7 c

d2

3 d1

78 x1
----c 9
Figura 14.2: Solución básica inicial del ejemplo 14.1

Los costes reducidos de las variables no básicas son


  
1 2 1
cN3 D c3 cBT B 1 a3 D0 Œ1; 1 D 1 y
0 1 0
  
1 2 0
cN4 D c4 cBT B 1
a4 D 0 Œ1; 1 D 1:
0 1 1

La función objetivo decrece siguiendo la dirección (d2 en la figura) que determina el coste reducido cN3 : la de incre-
mentar la variable no básica x3 .
Las variables básicas se deben mover de la forma
1 1
xB D B b B a3 I

es decir, en la dirección opuesta a (o una cantidad negativa en)


    
1 2 1 1
B 1 a3 D D
0 1 0 0

que es la dirección d2 de la figura anterior.


Elegida la variable no básica, xq , de coste reducido más negativo, que entrará en la base, ¿cuánto moverse en la
dirección de la arista que ha definido ese coste reducido?
La respuesta es hasta que en ese movimiento una variable básica llegue a su límite cero, y bloquee el posible despla-
zamiento en la dirección escogida: se habrá llegado a otro vértice.
Siguiendo las ideas que manejamos en optimización, la dirección de movimiento del método es la opuesta a
1
yDB aq
324 j Capítulo 14. Programación lineal. El método Símplex

y en ella se avanza una cantidad  , amplitud de paso.


De las expresiones de x. / y xB . / se deduce que se mantendrá la factibilidad del problema, es decir,
x. /  0;
si y sólo si
xB y  0 y   0:
Si las variables básicas se modifican según
1
xB D B b  y;
o, desarrollando, 3 2
2 3 2 3
xB1 bO1 y1
6 xB2 7 6 7
bO2 7 6 y2 7
6 7 6 6 7
6 : 6
7D6 : 7 6 : 7;
4 :: 5 4 :: 75 4 :: 5
xBm bOm ym
donde bO D B 1
b, ese valor máximo de movimiento negativo, vendrá dado por
nO o xBp
 D xN q D mKın ybii W yi > 0; 1  i  m D yp
:

El valor de la variable no básica xq se verá incrementado después de este paso desde cero a xN q , pasando a ser básica
en detrimento de la variable xBp , que pasará a ser no básica y por tanto cero.
Para completar una iteración del método Símplex resta reemplazar el vector ap por el aq en la base, es decir, hacer
N D B C .aq
B ap /epT :
quedando
N D ŒaB ; aB ; : : : ; aB
B ; aq ; aBpC1 ; : : : ; aBm :
1 2 p 1

14.3 El algoritmo Símplex


El algoritmo Símplex, cuya expresión formal es la del cuadro 14.1, resuelve el programa lineal en forma estándar
min. c T x
s. a Ax D b
x  0:
Su codificación compacta en M ATLAB es la del cuadro 14.2.
El algoritmo parte de una solución básica factible xB , correspondiente a B D Œaj1 ; aj2 ; : : : ; ajm . El conjunto B D
fj1 ; : : : ; jm g designa los índices de las variables básicas; xji indica la variable básica i -ésima; N el conjunto de las
variables que no están en la base.
Ejemplo 14.2 Vamos a resolver este problema de programación lineal con el algoritmo Símplex:
min. x1 3x2
s. a 2x1 C 3x2  6
x1 C x2  1
x1 ; x2  0:
Introduciendo variables de holgura, la base queda:
min. x1 3x2
   
s. a 2x1 C 3x2 C x3 D6 I B D Œa3 ; a4  D
10
y N D Œa1 ; a2  D
23
:
x1 C x2 C x4 D 1 01 11
x1 ; x2 ; x3 ; x4  0:
14.3 El algoritmo Símplex j 325

Paso 1 – Asignación de precios. Comprobación de óptimo.


(a) Calcular los multiplicadores símplex resolviendo el sistema B T  D cB .
(b) Calcular los costes reducidos de las variables no básicas, cNj D cj T aj , para todo j 2 N .
(c) Comprobar que se ha llegado al óptimo: si cNj  0 para todo j 2 N , PARAR: la solución es óptima.
Paso 2 – Determinar columna de pivotación.
(a) Determinar la variable no básica xq que debe entrar en la base (encontrar una dirección de descenso): escoger q 2 N tal
que cNq D mKınj 2N fcNj < 0g:
(b) Resolver
By D aq :
Si y  0, PARAR; hay un rayo factible de soluciones a lo largo del cual c T x ! 1. Si no, seguir.
Paso 3 – Determinar fila de pivotación. Análisis de Ratios. Determinar la variable básica xjp que sale de la base: calcular
 
xjp xji
D D mKın W yi > 0 :
yp 1i m yi

Paso 4 – Pivotación. Adaptar la solución, la matriz B y las estructuras de datos. Hacer:


xq  D xjp =yp
xji xji yi ; 1  i  m
B B C .aq ajp /epT
B B [ fqgnfjp g
N N [ fjp gnfqg; e ir al paso 1.

Cuadro 14.1: El Algoritmo Símplex revisado

function [sol fobj la c_r iters B N Binv] = ProgLineal_3(c,A,b,eps1,bfs)


% Resuelve min. c’x sujeto a Ax=b, x >= 0 (problema estándar)
% B_i, vector de columnas de A en la base = B; bfs=base factible
% N_i, vector de columnas de A fuera de la base = N
disp(’It. Sale B Entra B Cos. red. fobj Inf. dual’);
[m n]=size(A); iters=0; c=c(:); B_i=bfs; N_i=setdiff(1:n,B_i);
[L U]=lu(A(:,B_i)); % LU de la base inicial
while 1==1 % Itera Símplex
xb =U\(L\b); % xb=B^-1*b vector solución actual
la =L’\(U’\c(B_i)); % Multiplicadores símplex
c_r=zeros(n,1);
c_r(N_i)=c(N_i)-A(:,N_i)’*la; % Costes reducidos: c_r=c_N-c_B*B^-1*N
[cj j]=min(c_r); % Cos. redu. más negativo; entra j. Bland implícita
if cj>-eps1 % si todos cj >= 0, óptimo;
sol=zeros(n,1); sol(B_i)=xb; % dar solución
fobj=c(B_i)’*xb;
N = N_i; B=B_i;
if nargout==8, Binv=U\(L\eye(m)); end
return % Salir; FIN algoritmo
end
y=U\(L\A(:,j)); % y = B^-1 * a[j]
zz=find(y>eps1)’; % Sale de base: mín d(i)/y(i), y(i)>0;
if isempty(zz), error(’Problema no acotado.’); end % Direc. de no acotado
[yy ii]=min((xb(zz)./y(zz))); % Sale i
i=zz(ii); % Regla de Bland implícita: primera i
k=B_i(i); B_i(i)=j; N_i(j==N_i)=k; % Adaptación datos
[L U]=lu(A(:,B_i)); iters=iters+1; Di=norm(c_r(c_r<0));
fprintf(’%3d%6d%7d %20.6f %20.6f %20.6f\n’,iters,k,j,cj,c(B_i)’*xb,Di); % Info. itera
end
end

Cuadro 14.2: Implementación en código M ATLAB del Algoritmo Símplex


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

1
La solución inicial, xB D B b, xN D 0, es pues
2 3 2 3
x1 0
 
6 x2 7 6 0 7 6
6 7 D 6 7 y la función objetivo z D c T B 1
b D Œ0; 0 D 0:
4 x3 5 4 6 5 B
1
x4 1

Iteración 1. Paso 1
Calculemos los multiplicadores símplex resolviendo B T  D cB :
  1    
10 0 0
D D :
01 0 0

Los costes reducidos de las variables no básicas son


 
2
cN1 D c1 T a1 D 1 Œ0; 0 D 1 y
1
 
3
cN2 D c2 T a2 D 3 Œ0; 0 D 3:
1

Todavía no se ha llegado al óptimo pues los costes reducidos de las variables no básicas son negativos.

Iteración 1. Paso 2
Elijamos la variable no básica x2 como aquella que ha de entrar en la base pues tiene el coste reducido más negativo.
Resolvamos el sistema By D a2 :
  1   
10 3 3
yD D :
01 1 1

Iteración 1. Paso 3
La variable básica a salir de la base se obtendrá de calcular
   
xB1 xB2 6 1
 D mKın ; D mKın ; D 1:
y1 y2 3 1

Es decir, saldrá xB2 D x4 . Esto se puede deducir también analizando la expresión


       
xB1 x3 1 6 3
D DB b y D  ;
xB2 x4 1 1

comprobándose que x4 es la primera variable que llega a cero al incrementar x2 .

Iteración 1. Paso 4
Readaptemos la solución y las estructuras correspondientes:

x2  D1
x3 x3 y1 D 6 13D3
x4 x4 y2 D 1 1  1 D 0:
14.3 El algoritmo Símplex j 327

La solución queda, por tanto,


2 3 2 3
x1 0
6 x2 7 6 1 7
6 7D6 7
4 x3 5 4 3 5
x4 0
con    
13 20
B D Œa3 ; a2  D y N D Œa1 ; a4  D :
01 11
La nueva función objetivo es
  
1 3 6
z D cBT B 1
b D Œ0; 3 D 3:
0 1 1

Iteración 2. Paso 1
Calculemos los nuevos multiplicadores símplex resolviendo B T  D cB :
  1       
10 0 10 0 0
D D D :
31 3 31 3 3

Los costes reducidos de las variables no básicas son


 
T 2
cN1 D c1  a1 D 1 Œ0; 3 D 4 y
1
 
0
cN4 D c4 T a4 D 0 Œ0; 3 D 3:
1

Como todavía existe un coste reducido negativo, no se ha llegado al óptimo.

Iteración 2. Paso 2
Elegimos la única variable no básica capaz de mejorar la función objetivo, x1 , como aquella que ha de entrar en la base.
Resolvamos el sistema By D a1 :
  1       
13 2 1 3 2 5
yD D D :
01 1 0 1 1 1

Iteración 2. Paso 3
La variable básica a salir de la base se obtendrá de calcular
   
xB1 3 3
 D mKın D mKın D :
y1 5 5

Es decir, saldrá xB1 D x3 .


Analizando el porqué de esto mediante la expresión
       
xB1 x3 1 3 5
D DB b y D  ;
xB2 x2 1 1

se comprueba que x3 es la primera variable que llega a cero al incrementar x1 .


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

Iteración 2. Paso 4
Readaptemos la solución y las estructuras correspondientes:

3
x1 D 5
3 8
x2 x2 y2 D 1 5
 . 1/ D 5
3
x3 x3 y1 D 3 5
 5 D 0:

La solución queda:
2 3 2 3
x1 3=5
6 x2 7 6 8=5 7
6 7D6 7
4 x3 5 4 0 5
x4 0
con
   
23 10
B D Œa1 ; a2  D y N D Œa3 ; a4  D :
11 01

La nueva función objetivo es


   
1
23 6
zD cBT B 1 b D Œ 1; 3 D
11 1
" # 
1 3
5 5 6 27
D Œ 1; 3 1 2
D :
1 5
5 5

Iteración 3. Paso 1
Calculemos los nuevos multiplicadores símplex resolviendo B T  D cB :
  1   " 1 1
#   
2 1 1 5 5 1 4=5
D D 3 2
D :
3 1 3 3 3=5
5 5

Los costes reducidos de las variables no básicas son


 
1
cN3 D c3 T a3 D 0 Œ 4=5; 3=5 D 54 y
0
 
0
cN4 D c4 T a4 D 0 Œ 4=5; 3=5 D 53 :
1

Todos los costes reducidos son positivos por lo que se ha llegado al único óptimo del problema.
La solución óptima es
2 3 2 3
x1 3=5
6 x2 7 6 8=5 7
6 7D6 7
4 x3 5 4 0 5 :
x4 0

La función objetivo
 
T 6 27
zD cBT B 1 b D  b D Œ 4=5; 3=5 D :
1 5
Las soluciones básicas factibles que se han ido obteniendo en el proceso se indican en la figura 14.3.
14.3 El algoritmo Símplex j 329

569
8
x2 9

min. x1 3x2 578


s. a 2x1 C 3x2 C x3 D6

x1 C x2 C x4 D 1
x1 ; x2 ; x3 ; x4  0:
3
568 x1
7
4
Figura 14.3: Camino hacia la solución del ejemplo 14.2

Resolver este problema con el ya presentado ProgLineal_3 y con el solver linprog de M ATLAB, en una sesión de
este software, sería como sigue.

>> cEje1=[-1 -3 0 0];


>> cEje1=[-1 -3 0 0]; >> AEje1=[2 3 1 0;-1 1 0 1];
>> AEje1=[2 3 1 0;-1 1 0 1]; >> bEje1=[6;1];
>> bEje1=[6;1]; >> lb=[0 0 0 0];
>> bfsEje1=[3 4]; >> options=optimset(’LargeScale’,’off’,...
>> [sol fobj pi cr iters B N]=ProgLineal_3(cEje1,... ’Simplex’,’on’,’Display’,’Iter’);
AEje1,bEje1,sqrt(eps),bfsEje1) >> [x fval exitflag output]=linprog(cEje1,...
It. Sale B Entra B Cos. red. fobj Inf. dual [],[],AEje1,bEje1,lb,[],[],options)
1 4 2 -3.000000 -3.000000 3.162278 Phase 1: Compute initial basic feasible point.
2 3 1 -4.000000 -6.000000 4.000000 Iter Infeasibility
sol = 0 1
0.600000000000000 1 -0
1.600000000000000 Phase 2: Minimize using simplex.
0 Iter Objective Dual Infeasibility
0 f’*x A’*y+z-w-f
fobj = 0 -5.4 0
-5.400000000000000 Optimization terminated.
pi = x =
-0.800000000000000 0.6000
-0.600000000000000 1.6000
cr = 0
0 0
0 fval =
0.800000000000000 -5.4000
0.600000000000000 exitflag =
iters = 2 1
B = output =
1 2 iterations: 0
N = algorithm: ’medium scale: simplex’
3 4 cgiterations: []
message: ’Optimization terminated.’

Obsérvese que con Linprog() no sería necesario suministrar el problema en forma estándar pues admite dos conjun-
tos de condiciones: de igualdad y desigualdad. Si, en cambio, hay que explicitar que las cotas inferiores de las variables
son cero.

Ejemplo 14.3 Solución no acotada. Se quiere resolver:

min. x1 3x2
s. a x1 2x2  4
x1 C x2  3
x1 ; x2  0:
330 j Capítulo 14. Programación lineal. El método Símplex

Introduciendo las variables de holgura en el problema, la base inicial queda:


min. x1 3x2
   
s. a x1 2x2 C x3 D4 I B D Œa3 ; a4  D
10
y N D Œa1 ; a2  D
1 2
:
x1 C x2 C x4 D 3 01 1 1
x1 ; x2 ; x3 ; x4  0:

La solución inicial, xB D B 1 b, xN D 0, es
2 3 2 3
x1 0  
6 x2 7 6 0 7 4
6 7 D 6 7; T
de función objetivo z D cB B 1
b D Œ0; 0 D 0:
4 x3 5 4 4 5 3
x4 3
La región factible de este problema es la que se ilustra en la figura 14.4.

x2


9
P

6
 x1

45 78
79

Figura 14.4: Región factible del ejemplo 14.3

Iteración 1. Paso 1
Calculemos los multiplicadores símplex resolviendo B T  D cB :
  1   
10 0 0
D D :
01 0 0
Los costes reducidos de las variables no básicas son
 
1
cN1 D c1 T a 1 D 1 Œ0; 0 D 1 y
1
 
2
cN2 D c2 T a2 D 3 Œ0; 0 D 3:
1
Al ser negativos los costes reducidos, esta solución no es óptima.

Iteración 1. Paso 2
Elegimos la variable no básica x2 como aquella que ha de entrar en la base pues su coste reducido es el más negativo.
Resolvamos el sistema By D a2 :
  1   
10 2 2
yD D :
01 1 1
14.3 El algoritmo Símplex j 331

Iteración 1. Paso 3
La variable básica a salir de la base se obtendrá de calcular
   
xB2 3
 D mKın D mKın D 3:
y2 1
Es decir saldrá xB2 D x4 .
Como venimos haciendo, esto también de puede comprobar a partir de la expresión
       
xB1 x3 1 4 2
D D B b y D  ;
xB2 x4 3 1

constatándose que, efectivamente, x4 es la primera variable que llega a cero al incrementar x2 .

Iteración 1. Paso 4
Readaptemos la solución y las estructuras correspondientes:

x2  D3
x3 x3 y1 D 4 3  . 2/ D 10
x4 x4 y2 D 3 3  1 D 0:

La solución queda:
2 3 2 3
x1 0
6 x2 7 6 3 7
6 7D6 7
4 x3 5 4 10 5
x4 0
con    
1 2 10
B D Œa3 ; a2  D y N D Œa1 ; a4  D :
0 1 11

Iteración 2. Paso 1
Calculemos los multiplicadores símplex resolviendo B T  D cB :
  1       
10 0 10 0 0
D D D :
21 3 21 3 3

Los costes reducidos de las variables no básicas son


 
1
cN1 D c1 T a1 D 1 Œ0; 3 D 4 y
1
 
0
cN4 D c4 T a4 D 0 Œ0; 3 D 3:
1

Como existe un coste reducido negativo, todavía no se ha alcanzado el óptimo.

Iteración 2. Paso 2
Elegimos la única variable no básica posible, x1 , como aquella que ha de entrar en la base. Resolvamos el sistema
By D a1 :
  1      
1 2 1 12 1 1
yD D D :
0 1 1 01 1 1
332 j Capítulo 14. Programación lineal. El método Símplex

Como todos los yi ; i D 1; 2 son negativos, hay un rayo de soluciones factibles a lo largo del cual c T x ! 1. La
solución es pues no acotada.
Ejemplo 14.4 Soluciones óptimas alternativas. Hay que resolver:

min. 2x1 4x2


s. a x1 C 2x2  4
x1 C x2  1
x1 ; x2  0:

Introduzcamos las variables de holgura x3 y x4 . El problema queda:

min. 2x1 4x2


s. a x1 C 2x2 C x3 D4
x1 C x2 C x4 D 1
x1 ; x2 ; x3 ; x4  0:

Escojamos como base de partida


   
10 21
B D Œa1 ; a4  D y N D Œa2 ; a3  D :
11 10
1
La solución inicial, xB D B b, xN D 0, es pues
    1       
x1 10 4 10 4 4
D D D
x4 10 1 11 1 5
y
   
x2 0
D :
x3 0
La función objetivo para esta solución es
 
4
z D cBT B 1
b D Œ 2; 0 D 8:
5

Iteración 1. Paso 1
Calculemos los multiplicadores símplex resolviendo B T  D cB :
  1       
1 1 2 11 2 2
D D D :
0 1 0 01 0 0

Los costes reducidos de las variables no básicas son


 
2
cN2 D c2 T a2 D 4 Œ 2; 0 D0 y
1
 
1
cN3 D c3 T a3 D 0 Œ 2; 0 D 2:
0

Hemos llegado a un punto óptimo. Este óptimo, sin embargo, no es único. El por qué de lo cual se puede apreciar en
la figura 14.5.
14.3 El algoritmo Símplex j 333

x2
!"#
$"#
48 
34567849

%  

x1

Figura 14.5

Si incrementamos x2 , manteniendo x3 D 0, las variables x1 y x4 se modifican de la siguiente manera:


           
x1 1 1 10 4 10 2 4 2
D B b B a2 x2 D x2 D x2 :
x4 11 1 11 1 5 3

Para cualquier x2 < 35 , la solución


2 3 2 3
x1 4 2x2
6 x2 7 6 x2 7
6 7D6 7
4 x3 5 4 0 5
x4 5 3x2
es óptima con función objetivo z D 8.

14.3.1 Degeneración y ciclado


Aunque hasta ahora se ha supuesto que la solución básica x de un programa lineal no es “degenerada”, el que lo sea no
causa grandes dificultades prácticas en el proceso de obtención del óptimo.
Lo peor que puede ocurrir es que. en el Paso 3, la variable que salga de la base, xjp , se mueva un valor o paso cero, lo
que dará lugar a una iteración con desplazamiento  D 0: x no cambiará. Aunque x no cambie, sí lo hará la base (las
variables en la base).
Como x, y por tanto c T x, no cambian, es teóricamente posible que el algoritmo entre en un ciclo infinito a través de
una sucesión de bases, y sus correspondientes soluciones, volviendo a esta base.
Estudiemos el problema
3 1
min. x
4 4
C 20x5 x
2 6
C 6x7
1
s. a x1 C x
4 4
8x5 x6 C 9x7 D 0 El óptimo es x D Œ3=4; 0; 0; 1; 0; 1; 0T y su
x2 C 1
x
2 4
12x5 1
x
2 6
C 3x7 D 0 función objetivo -5/4.
x3 C x6 D1
x1 ; x2 ; x3 ; x4 ; x5 ; x6 ; x7  0:

Fue expuesto por E.M.L. Beale en 1955 y muestra cómo el método Símplex puede quedar atrapado en un ciclo infinito
si se escoge como variable a entrar en la base aquella que posee el coste reducido más negativo y para salir de ella una
de las que proporcionan el mínimo .
Si se comienza a resolver partiendo de la base B D Œa1 ; a2 ; a3 , siguiendo el método Símplex ordinario se obtienen
las bases Œa4 ; a2 ; a3 , Œa4 ; a5 ; a3 , Œa6 ; a5 ; a3 , Œa6 ; a7 ; a3 , Œa1 ; a7 ; a3  y otra vez Œa1 ; a2 ; a3 .
Si se vuelve a utilizar la misma sucesión de variables a entrar y salir de la base, el método entra en un ciclo infinito.
334 j Capítulo 14. Programación lineal. El método Símplex

14.3.1.1 La regla de Bland


Fue formulada por Robert G. Bland, EE.UU. 1948- en 1977.

Bland

Mediante esta regla —la más sencilla de usar— se elige como variable que ha de entrar en la base, de entre las de
coste reducido negativo, aquella con menor índice.
Para salir de la base, si el ratio es igual en varias, también aquella con menor índice.

14.4 Solución básica factible inicial


¿Cómo obtener una eficazmente?
Si las condiciones del problema son de la forma Ax  b; x  0, donde b tiene todos sus coeficientes no negativos,
el problema es trivial: añadiendo las variables de holgura a las condiciones se tendrá que

Ax C xh D b
x; xh  0:

Una solución básica factible será xh D b, x D 0; la matriz básica correspondiente, B D I.


Normalmente no es tan sencillo. Por ejemplo, si se diesen las mismas condiciones de antes pero el vector b tuviese
algún coeficiente negativo, la solución obtenida no sería válida pues violaría la condición de no negatividad.
Si las condiciones son de la forma Ax  b; x  0, añadiendo el vector de variables de holgura, xh , se tendría
que Ax xh D b; x  0; xh  0. Si el vector b no tuviese todos sus coeficientes negativos o cero, difícilmente se
podría determinar una base B a partir de la matriz ŒA I, de tal forma que xB D B 1 b cumpliese la condición de no
negatividad.
Ejemplo 14.5 Consideremos las condiciones siguientes:

x1 C 2x2  4
x1 C x2  1
x1 ; x2  0:

Añadiendo las variables de holgura x3 y x4 las condiciones se transforman en

x1 C 2x2 C x3 D4
x1 C x2 C x4 D 1
x1 ; x2 ; x3 ; x4  0:

Una solución inicial básica factible sería


       
10 x3 1 10   4
B D Œa3 ; a4  D W xB D DB bD 41 D y
01 x4 01 1
   
x1 0
xN D D :
x2 0
14.4 Solución básica factible inicial j 335

Ejemplo 14.6 Sean ahora las siguientes condiciones:

x1 C x2 C x3  6
2x1 C 3x2 C 3x3  3
x2 ; x3  0:

Cuando como aqui x1 una variable no está restringida a tomar valores no negativos, podemos sustituirla por xi0 xi00 ,
xi0  0, xi00  0. Si lo hacemos e introducimos las variables de holgura x4 y x5 , las condiciones quedan:

x10 x100 C x2 C x3 C x4 D6
2x1 C 2x100 C 3x2 C 3x3
0
x5 D 3
x10 ; x100 ; x2 ; x3 ; x4 ; x5  0:

No es inmediato determinar una base B que nos permita obtener una solución inicial básica factible.
Ejemplo 14.7 Estudiemos ahora las siguientes condiciones:

x1 C x2 2x3  3
2x1 C x2 C 3x3  7
x1 ; x2 ; x3  0:

Si para hacer todos los coeficientes del vector b no negativos multiplicamos la primera condición por 1 e introducimos
las variables de holgura x4 y x5 , las condiciones quedarán así

x1 x2 C 2x3 x4 D3
2x1 C x2 C 3x3 C x5 D 7
x1 ; x2 ; x3 ; x4 ; x5  0:

Tampoco de aquí se puede determinar de una manera sencilla una base inicial del problema.

14.4.1 Variables artificiales


La forma más inmediata de determinar una solución básica factible de partida consiste en introducir temporalmente,
además de las variables de holgura, un nuevo conjunto similar de variables artificiales.
Si el problema es
min. c T x
s. a Ax D b
x  0;
donde, sin pérdida de generalidad, se supone que b  0, se le añade un vector de variables artificiales, xa , resultando

Ax C xa D b;

con x  0 y xa  0.
Si se quiere conseguir una solución factible del problema original habrá que forzar a que los coeficientes del vector
xa sean cero. Es decir, resolver también con el método Símplex el problema inicial
m
X
min. xai
i D1
s. a Ax C xa D b
x; xa  0:

Si el problema original admite una solución factible, en la solución del transformado se tendrá que xa D 0.
Si tal solución factible no existe, el problema transformado acabará con algún coeficiente de xa positivo.
336 j Capítulo 14. Programación lineal. El método Símplex

Fase I Partiendo de la solución inicial x D 0, xa D b, resolver


m
X
min. xai
iD1
s. a Ax C xa D b
x; xa  0:

Si xa ¤ 0, parar: el problema no tiene solución básica factible.


Si xa D 0, ir a la fase II tomando como B inicial la de la última iteración de esta
fase.
Fase II Partiendo de xB D B 1 b y xN D 0, resolver
T x C cT x
min. cB B N N

s. a BxB C NxN D b
xB ; xN  0:

Cuadro 14.3: El algoritmo Símplex revisado en dos fases

El algoritmo Símplex revisado, completo, consta así de las dos fases que se indican en el cuadro 14.3.
Al final de la Fase I, si la solución tiene alguna variable artificial en la base y xai D 0 (degenerada), dicha variable se
puede intercambiar por una no básica —de las originales— xj , o suprimirse sin más que eliminar la condición redundante
correspondiente. Concretamente:
Si la variable básica xak D 0 y se cumple que ekT B 1 aj ¤ 0, la variable xak se puede reemplazar por la xj .
Si para todo aj 2 N , ekT B 1 aj D 0, el sistema Ax D b tiene una condición redundante y se puede eliminar la
fila k-ésima de la matriz A original (así como la fila y columna k-ésima de B).
Circunstancias de este tipo se evitan habitualmente con un mecanismo de preproceso para aligerar el problema de
redundancias, incoherencias, etc.
Ejemplo 14.8 Hay que resolver el siguiente problema:

min. x1 2x2
s. a x1 C x2  2
x1 C x2  1
x2  3
x1 ; x2  0:

Para empezar, introduzcamos como siempre las variables de holgura:

min. x1 2x2
s. a x1 C x2 x3 D 2
x1 C x2 x4 D 1
x2 C x5 D 3
x1 ; x 2 ; x 3 ; x 4 ; x 5  0:

Como la base de partida no es de fácil obtención, introducimos las variables artificiales y planteamos el siguiente pro-
blema dentro de la fase I:
min. x6 C x7
s. a x1 C x2 x3 C x6 D2
x1 C x2 x4 C x7 D 1
x2 C x5 D3
x1 ; x2 ; x3 ; x4 ; x5 ; x6 ; x7  0:
14.4 Solución básica factible inicial j 337

Obsérvese que en la tercera condición no es necesario introducir variable artificial alguna.


Del problema así planteado se puede obtener inmediatamente la base de partida; ésta es
2 3 2 3
010 11 1 0
B D Œa5 ; a6 ; a7  D 4 0 0 1 5 y N D Œa1 ; a2 ; a3 ; a4  D 4 1 1 0 15:
100 01 0 0

1
La solución inicial, xB D B b, xN D 0, es:
2 3 2 3 1 2 3 2 32 3 2 3
x5 010 2 001 2 3
4 x6 5 D 4 0 0 1 5 415 D 41 0 05415 D 425:
x7 100 3 010 3 1

Por tanto,
2 3 2 3
x1 0
6 x2 7 6 0 7
6 7 6 7
6x 7 607
6 37 6 7
6 7 6 7
6 x4 7 D 6 0 7 :
6 7 6 7
6 x5 7 6 3 7
6 7 6 7
4 x6 5 4 2 5
x7 1

Fase I. Iteración 1. Paso 1


Calculemos los multiplicadores símplex resolviendo B T  D cB :

2 3 1 2 3 2 32 3 2 3
001 0 010 0 1
 D 41 0 05 415 D 40 0 15415 D 415:
010 1 100 1 0

Los costes reducidos de las variables no básicas son


2 3
1
cN1 D c1 T a1 D 0 Œ1; 1; 0 4 1 5 D 0;
0
2 3
1
cN2 D c2 T a2 D 0 Œ1; 1; 0 1 5 D 2;
4
1
2 3
1
cN3 D c3 T a3 D 0 Œ1; 1; 0 4 0 5 D 1 y
0
2 3
0
cN4 D c4 T a4 D 0 Œ1; 1; 0 4 1 5 D 1:
0

No se ha llegado todavía al óptimo pues existe un coste reducido negativo.


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

Fase I. Iteración 1. Paso 2


Elegimos la única variable no básica posible, x2 , como aquella que ha de entrar en la base. Resolvemos el sistema
By D a2 :
2 3 12 3 2 32 3 2 3
010 1 001 1 1
y D 40 0 15 415 D 41 0 05415 D 415:
100 1 010 1 1

Fase I. Iteración 1. Paso 3


La variable básica a salir de la base se obtendrá de calcular
   
xB1 xB2 xB3 3 2 1
 D mKın ; ; D mKın ; ; D 1I
y1 y2 y3 1 1 1

es decir, saldrá xB3 D x7 .


1
O, como solemos utilizar, de evaluar la expresión xB D B b y. Es decir,
2 3 2 3 2 3 2 3
xB1 x5 3 1
4 xB2 5 D 4 x6 5 D 4 2 5 4
 15;
xB3 x7 1 1

comprobándose que x7 es la primera variable que llega a cero al incrementar x2 .

Fase I. Iteración 1. Paso 4


Readaptemos la solución y las estructuras de datos:

x2  D1
x5 x5 y1 D 3 11D2
x6 x6 y2 D 2 11D1
x7 x7 y3 D 1 1  1 D 0:

La solución queda por tanto,


2 3 2 3
x1 0
6 x2 7 6 1 7
6 7 6 7
6x 7 607
6 37 6 7
6 7 6 7
6 x4 7 D 6 0 7
6 7 6 7
6 x5 7 6 2 7
6 7 6 7
4 x6 5 4 1 5
x7 0
siendo
2 3
011
B D Œa5 ; a6 ; a2  D 4 0 0 1 5
101
y
2 3
10 1 0
N D Œa1 ; a7 ; a3 ; a4  D 4 1 1 0 15:
00 0 0
14.4 Solución básica factible inicial j 339

Fase I. Iteración 2. Paso 1


Calculemos de nuevo los multiplicadores símplex resolviendo B T  D cB :
2 3 1 2 3 2 32 3 2 3
001 0 0 10 0 1
 D 41 0 05 415 D 4 1 1 15415 D 4 15:
111 0 1 00 0 0

Los costes reducidos de las variables no básicas son


2 3
1
6 7
cN1 D c1 T a1 D 0 Œ1; 1; 0 4 1 5 D 2;
0
2 3
0
6 7
cN7 D c7 T a7 D 1 Œ1; 1; 0 4 1 5 D 2;
0
2 3
1
6 7
cN3 D c3 T a3 D 0 Œ1; 1; 0 4 0 5 D 1 y
0
2 3
0
6 7
cN4 D c4 T a4 D 0 Œ1; 1; 0 4 1 5 D 1:
0

No se ha llegado todavía al óptimo; hay dos costes reducidos negativos.

Fase I. Iteración 2. Paso 2


Elegimos la variable no básica x1 para entrar en la base pues su coste reducido es el más negativo. Resolvemos el sistema
By D a1 :
2 3 12 3 2 32 3 2 3
011 1 0 11 1 1
y D 40 0 15 4 15 D 41 1 054 15 D 4 25:
101 0 0 10 0 1

Fase I. Iteración 2. Paso 3


La variable básica a salir de la base se obtendrá de calcular
   
xB1 xB2 2 1 1
 D mKın ; D mKın ; D I
y1 y2 1 2 2

es decir, saldrá xB2 D x6 . Esto se deduce también de


2 3 2 3 2 3 2 3
xB1 x5 2 1
4 xB2 5 D 4 x6 5 D B 1
b y D 1 5
4  4 25;
xB3 x2 1 1

constatándose que x6 es la primera variable que llega a cero al incrementar x1 .


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

Fase I. Iteración 2. Paso 4


Readaptemos la solución y las estructuras de datos correspondientes:

x1 D  D 21
1 3
x5 D x5 y1 D 2 2
1D 2
1
x6 D x6 y2 D 1 2
2D0
1
x2 D x2 y3 D 1 2
 . 1/ D 32 :

La solución queda por tanto 2 3 2 3


x1 1=2
6 x2 7 6 3=2 7
6 7 6 7
6 x3 7 6 0 7
6 7 6 7
6 x4 7 D 6 0 7
6 7 6 7
6 x5 7 6 3=2 7
6 7 6 7
4 x6 5 4 0 5
x7 0
siendo 2 3 2 3
0 11 10 1 0
B D Œa5 ; a1 ; a2  D 4 0 11 5 y N D Œa 6 ; a7 ; a 3 ; a4  D 4 01 0 15:
1 01 00 0 0

Fase I. Iteración 3. Paso 1


Calculemos los multiplicadores símplex resolviendo B T  D cB :
2 3 12 3 2 1 1 1 32 3 2 3
0 01 0 2 2 2 0 0
4 5 4 5 6 1 1 1 74 5 4 5
D 1 10 0 D4 2 2 25 0 D 0 :
1 11 0 1 0 0 0 0

Los costes reducidos de las variables no básicas son


2 3
1
6 7
cN6 D c6 T a6 D 1 Œ0; 0; 0 4 0 5 D 1;
0
2 3
0
6 7
cN7 D c7 T a7 D 1 Œ0; 0; 0 4 1 5 D 1;
0
2 3
1
6 7
cN3 D c3 T a3 D 0 Œ0; 0; 0 4 0 5 D 0; y
0
2 3
0
6 7
cN4 D c4 T a4 D 0 Œ0; 0; 0 4 1 5 D 0:
0

Todos los costes reducidos son no negativos: óptimo de la fase I.


La base de partida de la fase II es
2 3 2 3
0 1 1 1 0
B D Œa5 ; a1 ; a2  D 4 0 1 1 5 y N D Œa3 ; a4  D 4 0 15:
1 0 1 0 0
14.4 Solución básica factible inicial j 341

Fase II. Iteración 1. Paso 1


Calculemos los multiplicadores símplex resolviendo B T  D cB :
2 3 12 3 2 1 1 1 32
3 2 3
0 0 1 0 2 2 2 0 1=2
6 7 6 7 6 1 1 76
1 7 6 7
 D 41 1 05 4 15 D 4 2 2 5 4 1 5 D 4 3=2 5 :
2
1 1 1 2 1 0 0 2 0
Los costes reducidos de las variables no básicas son
2 3
1
6 7 1
cN3 D c3 T a3 D 0 Œ 1=2; 3=2; 0 4 05 D 2; y
0
2 3
0
6 7 3
cN4 D c4 T a4 D 0 Œ 1=2; 3=2; 0 4 15 D 2:
0
Como cN3 y cN4 son negativos, no se ha llegado aún al óptimo.

Fase II. Iteración 1. Paso 2


Elegimos la variable no básica x4 como la que entra en la base. Resolvamos el sistema By D a4 :
2 3 12 3 2 1 1 32 3 2 3
0 11 0 2 2 1 0 1=2
6 7
y D 4 0 1 1 5 4 1 5 D 4 21 12 0 5 4 1 5 D 4 1=2 5 :
1 01 0 1 1 0 1=2
2 2 0

Fase II. Iteración 1. Paso 3


La variable básica a salir de la base se obtendrá de calcular
  ( )
3 1
xB1 xB2
 D mKın ; D mKın 21 ; 2
1
D 1:
y1 y2 2 2

Es decir, saldrá xB2 D x1 . Si se analiza la expresión


2 3 2 3 2 3 2 3
xB1 x5 3=2 1=2
4 xB 5 D B 1
b y D 4 x1 5 D 4 1=2 5  4 1=2 5 ;
2
xB3 x2 3=2 1=2
también se comprueba que, efectivamente, la primera variable que llega a cero al incrementar x4 es x1 , con  D 1.

Fase II. Iteración 1. Paso 4


Readaptemos la solución y las estructuras de datos:
x4  D1
3 1
x5 x5 y1 D 2 1 2 D1
1 1
x1 x1 y2 D 2 1 2 D0
3 1
x2 x2 y3 D 2 C1 2 D 2:
La nueva solución es, por tanto, 2 3 2 3
x1 0
6x 7 627
6 27 6 7
6 7 6 7
6 x3 7 D 6 0 7
6 7 6 7
4 x4 5 4 1 5
x5 1
342 j Capítulo 14. Programación lineal. El método Símplex

con 2 3 2 3
0 01 1 1
B D Œa5 ; a4 ; a2  D 4 0 1 1 5 y N D Œa3 ; a1  D 4 0 15:
1 01 0 0

Fase II. Iteración 2. Paso 1


Calculemos los multiplicadores símplex resolviendo B T  D cB :
2 3 12 3 2 32 3 2 3
0 01 0 1 11 0 2
 D 40 1 05 4 05 D 4 0 1 054 05 D 4 05:
1 11 2 1 00 2 0
Los costes reducidos de las variables no básicas son
2 3
1
cN3 D c3 T
 a3 D 0 Œ 2; 0; 0 4 0 5 D 2; y
0
2 3
1
cN1 D c1 T a1 D 1 Œ 2; 0; 0 4 1 5 D 3:
0
Todavía no se ha llegado al óptimo.

Fase II. Iteración 2. Paso 2


Elegimos la variable no básica x3 como la que entra en la base. Resolvemos el sistema By D a3 :
2 3 12 3 2 32 3 2 3
0 01 1 1 01 1 1
y D 40 1 15 4 05 D 4 1 1 054 05 D 4 15:
1 01 0 1 00 0 1

Fase II. Iteración 2. Paso 3


La variable básica a salir de la base se obtendrá de calcular
   
xB1 1
 D mKın D mKın D 1I
y1 1
es decir, saldrá xB1 D x5 . Viéndolo a partir de la expresión
2 3 2 3 2 3 2 3
xB1 x5 1 1
4 xB2 5 D 4 x4 5 D b 1 b y D 4 1 5  4 15;
xB3 x2 2 1
se comprueba también que la primera variable que llega a cero al incrementar x3 es x5 .

Fase II. Iteración 2. Paso 4


Readaptemos la solución y las estructuras de datos:
x3  D1
x5 x5 y1 D 1 1  1 D 0
x4 x4 y2 D 1 C 1  1 D 2
x2 x2 y3 D 2 C 1  1 D 3:
14.4 Solución básica factible inicial j 343

La nueva solución es 2 3 2 3
x1 0
6x 7 637
6 27 6 7
6 7 6 7
6 x3 7 D 6 1 7 :
6 7 6 7
4 x4 5 4 2 5
x5 0
Las nuevas matrices: 2 3 2 3
1 01 0 1
B D Œa3 ; a4 ; a2  D 4 0 1 1 5 I N D Œa5 ; a1  D 4 0 15:
0 01 1 0

Fase II. Iteración 3. Paso 1


Calculemos los multiplicadores; resolvamos B T  D cB :
2 3 12 3 2 32 3 2 3
1 00 0 1 0 0 0 0
6 7 6 7 6 76 7 6 7
D4 0 1 05 4 0 D
5 4 0 1 054 05 D 4 05:
1 11 2 1 1 1 2 2
Los costes reducidos de las variables no básicas son
2 3
0
6 7
cN5 D c5 T a5 D 0 Œ0; 0; 2 4 0 5 D 2; y
1
2 3
1
6 7
cN1 D c1 T a1 D 1 Œ0; 0; 2 4 1 5 D 1:
0
Todos los costes reducidos de las variables no básicas son positivos por lo que se ha alcanzado el único óptimo del
problema.
La solución final es 2 3 2 3
x1 0
6x 7 637
6 27 6 7
6 7 6 7
6 x3 7 D 6 1 7 :
6 7 6 7
4 x4 5 4 2 5
x5 0
El valor óptimo de la función objetivo es cBT B 1 b D 6.
El proceso iterativo que se ha seguido en este problema se representa en la figura 14.6.

14.4.2 Método de penalización o de la M grande


Consiste en combinar en un proceso único las fases I y II del método Símplex y resolver
n
X m
X
min. c i xi C M xaj
i D1 j D1

s. a Ax C xa D b
x; xa  0:
La constante M se elige “suficientemente grande” de tal forma que esté muy penalizado que en el óptimo xa ¤ 0.
Eventualmente, si existe solución factible del problema original, las variables artificiales tenderán a cero en el proceso
de obtención del óptimo de este problema.
Esta alternativa tiene dos inconvenientes relevantes:
344 j Capítulo 14. Programación lineal. El método Símplex

5 28 568
x

7 7
3
5 8 59
68
9 7
6
x1
4
Figura 14.6: Camino seguido hacia la solución del problema del ejemplo 14.8

La necesidad de escoger un determinado valor fijo de M que asegure que las variables artificiales no van a estar en
la base de la solución óptima. Un valor excesivamente grande de M, con respecto a los coeficientes del vector c
y de la matriz A, puede hacer que los errores de redondeo de los cálculos y la inestabilidad numérica del proceso
lleguen a ser importantes.
Que el número de variables del problema se incrementa notablemente.
Resolvamos con esta técnica un ejemplo anterior ya preparado para hacerlo:

min. x1 2x2 1000x6 C 1000x7


s. a x1 C x2 x3 C x6 D2
x1 C x2 x4 C x7 D 1
x2 C x5 D3
x1 ; x2 ; x3 ; x4 ; x5 ; x6 ; x7  0:

Con el programa ProgLineal_3 en una sesión de M ATLAB, resolverlo sería así:

>> cM=[1 -2 0 0 0 1000 1000];


>> AM=[1 1 -1 0 0 1 0;-1 1 0 -1 0 0 1;0 1 0 0 1 0 0];
>> bM=[2;1;3]; fobj =
>> bfsM=[5 6 7]; -6
>> [sol fobj pi cr iters B N]=ProgLineal_3(cM,AM,bM,sqrt(eps),bfsM) pi =
It. Sale B Entra B Cos. red. fobj 0
1 7 2 -2002.000000 1998.000000 0
2 6 1 -2001.000000 -1.000000 -2
3 1 4 -1.500000 -3.000000 cr =
4 5 3 -2.000000 -4.000000 1000 1000 2 1
sol = iters =
0 4
3 B =
1 3 4 2
2 N =
0 6 7 5 1
0
0

14.5 Análisis de sensibilidad


La solución óptima que obtiene el método Símplex de un problema de PL es como una fotografía fija de una situación
real que habitualmente evoluciona en el tiempo, incluso a corto o muy corto plazo.
14.5 Análisis de sensibilidad j 345

Con un pequeño esfuerzo, una vez obtenida la solución con el método Símplex se puede conocer hasta qué punto ese
óptimo seguirá siéndolo y qué pueden representar, en costes o beneficios, determinadas variaciones de los parámetros
del problema.
Esto es frecuente estudiarlo cuando los costes de producción de un artículo deben variar en el tiempo al fluctuar el
precio de una materia prima o, en general, cuando los datos del problema son estimaciones más o menos imprecisas de
una realidad en la que oscilan con determinados márgenes. Estudiemos cómo afecta a la solución de un problema de PL
el que varíen los coeficientes de la función objetivo c o el vector b.

14.5.1 Cambios en el vector de costes


Consideremos la familia de programas, función de un vector de parámetros , definida por

min. Œc C T x
s. a Ax D b
x  0:

La base B de la solución óptima del problema original (sin los parámetros) seguirá siéndolo mientras los costes
reducidos de las variables no básicas sigan siendo no negativos; es decir, mientras que

ŒcN C  N T ŒcB C  B T B 1
N  0T :

Consideraremos los dos casos más generales: 1. Que la variable cuyo coeficiente de coste varía no está en la base; 2.
Que está en la base.
1. La variable cuyo coeficiente de coste varía no está en la base. Para que los costes reducidos sigan siendo
óptimos, es decir,
ŒcN C  N T cBT B 1
N  0T ;

se tiene que cumplir que


T
cN cBT B 1
N C  TN D cN N
T
C  TN  0T :

Esto obliga a que el coeficiente del vector coste sólo pueda variar hacia abajo (decrecer), en una cantidad i
igual al coste reducido de la variable i que varía. Es decir

i  cNi :

Hacia arriba podría variar hasta el infinito.


2. La variable cuyo coeficiente de coste varía está en la base. La condición de optimalidad para los costes reduci-
dos es ahora
T
T
cN ŒcB C  B T B 1 T
N D cN N B B 1
N  0T :

El intervalo de valores Œ i ;  i  de la posible variación en el coste de una variable en la base será

 
 i D mKax mKax f cNk =dk ; dk > 0g ; 1   
1kn m
 
mKın mKın f cNk =dk ; dk < 0g ; 1 D  i
1kn m

 T
1
expresión en la que d D B.i;W/ N es el vector fila i -ésimo del producto de la inversa de B por N .
346 j Capítulo 14. Programación lineal. El método Símplex

14.5.2 Cambios en el vector b


Consideremos el problema:
min. c T x
s. a Ax D b C ı
x  0:
Al cambiar b, la solución óptima variaría así
h T iT
x D ŒxBT T T
xN  D N B
bC 1
ı 0T ;

donde bN D B 1 b y B es la base óptima. Esa base seguirá siendo óptima en tanto y cuando sus coeficientes sigan siendo
no negativos.
Para cada modificación ıi del coeficiente i del vector b, si
2 3
0
6:7
6 :: 7
6 7
6 7
d D B 1 617 i D B 1 ei ; vector columna i-ésimo de la
6:7 inversa de la base
6:7
4:5
0

el intervalo Œı i ; ı i  en el cual la solución sigue siendo óptima es


 
˚
ı i D mKax mKax bNk =dk ; dk > 0 ; 1  ı 
1km
 
˚
mKın mKın Nbk =dk ; dk < 0 ; 1 D ı i
1km

Ejemplo 14.9 Supongamos que hemos resuelto el problema

min. 40x C 53y


s. a 60x C 80y  360
160x C 120y  680
x; y  0:

La solución completa es
2 3
2
   
637 60 80 120 80
6 7
xB D 4 5 ; B D ; B 1
D 1
;
0 160 120 5600 160 60
0
     
1 0 1 368 1 368
N D ; D 560
y cN D 560
:
0 1 2 2

La función objetivo es 239. Planteemos las siguientes preguntas:


1. ¿Para que rango de costes de x la solución sigue siendo óptima?
Como x está en la base, cualquier cambio cx cx C  afecta al vector  y al vector de costes reducidos de
las variables no básicas, cN .
14.6 El método Símplex para variables acotadas j 347

El vector d de las expresiones anteriores es


 
1 1
  1 0
dD B.1;W/ N D 5600 120 80
0 1
1
 T
D 5600 120 80 :

Los costes reducidos variarán de la siguiente manera.


1   1  
cN 368 2 C  120 80 :
560 5600
Para que la solución óptima anterior lo siga siendo, debe cumplirse que

3680 120   0
20 C 80   0:

Esto se cumple en Œ ;  D Œ 1=4; 92=3. El coeficiente de x puede moverse pues en el rango Œ39;75 70;67
para que la solución siga siendo óptima.
2. ¿Cuánto puede variar el coeficiente 360 del término independiente sin que cambie la base óptima, es decir
b1 b1 C ı?
El vector d es en este caso    
1 1 1 120
d DB D ;
0 5600 160
   
2 1 120
por lo que xB C ı 5600 .
3 160
La base óptima original seguirá siendo óptima mientras xB sea positiva; es decir, mientras
120
˚2 ı0
5600

160
3C 5600
ı  0:

Esto se cumple en el intervalo Œı; ı D Œ 105 280=3, por lo que el coeficiente 360 puede variar entre
360 105 y 360 C 280=3 sin que cambie la solución óptima del problema original.
El valor del multiplicador símplex 1 indica cómo varía la función objetivo cuando coeficiente 360 se mueve
en ese rango de valores:
368 33
z zC ı D 239 C ı:
560 35
Resolvamos este pequeño problema con ProgLineal_3(). El resultado de hacerlo se puede ver en el cuadro 14.4.
Hemos acelerado el proceso dando directamente la base final que conocemos.
Ahora le vamos a aplicar la rutina de M ATLAB del cuadro 14.5, que calcula la sensibilidad de la solución a cambios
en los coeficientes de costes y en el término independiente. El resultado es lo que muestra el cuadro 14.6. Confirma, y
amplía, los cálculos hechos a mano en este ejemplo.

14.6 El método Símplex para variables acotadas


Nos ocupamos ahora del problema
min. c T x
s. a Ax D b
l xu:
Las variables están así acotadas, encajadas o box constrained. Si la xj tiene lj D 1 y uj D 1, se dice libre.
348 j Capítulo 14. Programación lineal. El método Símplex

>> c=[40 53 0 0]’;


>> A=[60 80 -1 0;160 120 0 -1];
>> b=[360;680];
>> B=[1 2];
>> [sol fobj la c_r iters B N Binv] = ProgLineal_3(c,A,b,eps,B)
sol =
2
3
0
0
fobj =
239
la =
0.657142857142857
0.003571428571429
c_r =
0
0
0.657142857142857
0.003571428571429
iters =
0
B =
1 2
N =
3 4
Binv =
-0.021428571428571 0.014285714285714
0.028571428571429 -0.010714285714286

Cuadro 14.4

function Sensitivity_ProgLineal_2(c,A,b,pi,cr,B,N,Binv,f)
% Analiza la sensibilidad de la solución de un programa lineal
% min. c’x sujeto a Ax=b, x >= 0 (problema estándar)
% B indices de columnas de A en la base
% N indices de columnas de A fuera de la base
if nargin<9, f=1; end
if f~=1, f=fopen(’Salida_sensitivity’,’w’); end
[m n]=size(A); Nn=length(N); Bm=length(B); c=c(:); b=b(:); pi=pi(:); cr=cr(:);
ss=char(ones(n,80)*single(’ ’)); % Definir una matriz string para tabla

fprintf(f,’\n Obj. Sensitivity Ranges’);


fprintf(f,’\n Var. Coste Red. Abajo Actual Arriba\n’);
fprintf(f,’------------------------------------------------------------------\n’);
% Cambio en coeficientes de la función objetivo

for i=1:Nn % Variables no básicas


ss(N(i),1:67)=sprintf(’%3d %15.5f %15.5f %15.5f %14.5f\n’,...
N(i),cr(i),c(N(i))-cr(i),c(N(i)),inf);
end
for i=1:Bm % Variables básicas
cr_BN=(Binv(i,:)*A(:,N))’; cr_BNpos=find(cr_BN>0); cr_BNneg=find(cr_BN<0);
c_up=inf; if ~isempty(cr_BNpos), c_up=min(cr(cr_BNpos)./ cr_BN(cr_BNpos)); end
c_do=inf; if ~isempty(cr_BNneg), c_do=min(cr(cr_BNneg)./-cr_BN(cr_BNneg)); end
ss(B(i),1:67)=sprintf(’%3d cero %15.5f %15.5f %14.5f\n’,...
B(i),c(B(i))-c_do,c(B(i)),c(B(i))+c_up);
end
for i=1:n, fprintf(f,’%s’,ss(i,1:67)); end

fprintf(f,’\n RHS Sensitivity Ranges’);


fprintf(f,’\n Con. Mul. pi Abajo Actual Arriba\n’);
fprintf(f,’--------------------------------------------------------------------------\n’);
% Cambios en el término independiente b
for i=1:Bm
b_1=(Binv*b)./Binv(:,i);
c_up=min(abs(b_1(b_1<0))); if isempty(c_up), c_up=inf; end
c_do=min(b_1(b_1>0)); if isempty(c_do), c_do=inf; end
fprintf(f,’%3d %15.5f %18.5f %16.5f %17.5f\n’,i,pi(i),b(i)-c_do,b(i),b(i)+c_up);
end
fclose(’all’);
end

Cuadro 14.5
14.6 El método Símplex para variables acotadas j 349

>> Sensitivity_ProgLineal_2(c,A,b,la,c_r(N),B,N,Binv)

Obj. Sensitivity Ranges


Var. Coste Red. Abajo Actual Arriba
------------------------------------------------------------------
1 cero 39.75000 40.00000 70.66667
2 cero 30.00000 53.00000 53.33333
3 0.65714 -0.65714 0.00000 Inf
4 0.00357 -0.00357 0.00000 Inf

RHS Sensitivity Ranges


Con. Mul. pi Abajo Actual Arriba
--------------------------------------------------------------------------
1 0.65714 255.00000 360.00000 453.33333
2 0.00357 540.00000 680.00000 960.00000
>>

Cuadro 14.6

Se podrían introducir variables de holgura y aplicar el método habitual,

min. cT x
s. a Ax Db
Actuando así, el número de variables se triplica y
x C x1 Du
el número de condiciones pasa a ser m C 2n.
x x2 Dl
x; x1 ; x2  0:

Considérese a continuación el sistema de inecuaciones

Ax D b
l  x  u;

donde la matriz A mn es, sin pérdida de generalidad, de rango m.


Definición 14.1 Una solución básica factible de ese sistema es aquella en la que n m variables no básicas tie-
nen el valor de uno de sus límites, l ó u, y las restantes m variables básicas corresponden a vectores columnas
linealmente independientes de A.
Descompongamos la matriz A en ŒB Nl Nu , con rango.B/ D m, y el vector x en ŒxBT xN
T
l
T
xN u
: Un vector x se
dice solución básica factible del sistema de inecuaciones

Ax D b
l  x  u;

si xB es solución del sistema


BxB D b;
y
xNl D lNl
xNu D uNu :
Si además lB < xB < uB , entonces x es una solución básica factible no degenerada; si algún coeficiente de xBj es
igual a lj o uj , la solución se dice básica factible degenerada.
Expresemos las condiciones de la forma BxB C Nl xNl C Nu xNu D b. El vector xB es entonces:
1 1 1
xB D B b B Nl xNl B Nu xNu :

La función objetivo:

z D c T x D cBT xB C cN
T T
x C cN
l Nl
x
u Nu
350 j Capítulo 14. Programación lineal. El método Símplex


D cBT B 1
B 1 Nl xNl
b B 1
Nu xNu C cN T
x C cN
l Nl
T
x
u Nu
  
D cBT B 1 b C cN
T
l
cBT B 1 T
N l xN l C c N u
cBT B 1 Nu xNu :
œ œ
cost. re cost. re
ducido ducido
s s
Supongamos que partimos de una solución básica factible.
En ese punto se examinan los costes reducidos de las variables no básicas (en uno de sus límites).
Si puede ser mejorada —en un problema de minimización—, alguna variable no básica que esté en su límite inferior
tendrá un coste reducido negativo, u otra en su límite superior un coste reducido positivo.
La función objetivo se puede mejorar, en este caso decrementar, si

cj cBT B 1 aj < 0 para alguna xj D lj o
T 1

cj cB B aj > 0 para alguna xj D uj :

Si se elige una variable no básica, xq por ejemplo, como aquella que ha de mejorar la función objetivo, y su valor
se modifica desde la cota en el que esté en la dirección hacia la otra cota, la función objetivo mejorará (decrecerá)
mientras se puedan modificar las variables básicas de tal manera que persista la factibilidad del problema (se satisfagan
las condiciones); es decir, hasta que:
1. Una variable básica llegue a uno de sus límites, en cuyo caso se hará no básica, pasando a ocupar su sitio en la
base la no básica que se modifica;
2. La variable no básica que se modifica llegue al límite opuesto del que parte antes de que ocurra lo anterior. La
base entonces no se modifica.
Si ocurren estas dos circunstancias a la vez, la solución es básica factible degenerada.
Si Nl es el conjunto de los índices de las variables no básicas en su límite inferior y Nu el de las no básicas en su
límite superior, y se modifica xq , se tendrá que

xB D B 1b B 1N 1N B 1a
l xNl B u xNu q

D bO y;

con bO D B 1 b B 1 Nl xNl B 1 Nu xNu y y D B 1 aq . Opciones: que q 2 Nu ; o q 2 Nl .


Si q 2 Nl , el incremento posible, , de xq desde su límite inferior lq , ha de ser positivo para seguir manteniendo la
factibilidad; el máximo será
8̂   
bO i lBi
ˆ
ˆ 1 D mKın1i m W yi > 0I 1 W yi  0
ˆ
ˆ yi
ˆ
ˆ
ˆ
<   
 D mKın bO i uBi
ˆ 2 D mKın1im
ˆ yi W yi < 0I 1 W yi  0
ˆ
ˆ
ˆ
ˆ
ˆ

uq lq :

Si q 2 Nu , el incremento desde uq ha de ser negativo. El máximo:


8̂   
ˆ bO i lBi
ˆ
ˆ 1 D mKın1im yi W yi < 0I 1 W yi  0
ˆ
ˆ
<
  
 D mKın bO i uBi
ˆ
ˆ 2 D mK
ı n1im W yi > 0I 1 W yi  0
ˆ
ˆ yi
ˆ

lq uq :

El último paso consiste en modificar las estructuras de datos correspondientes, a fin de reflejar los cambios habidos en
la base.
Todos los códigos comerciales del método Símplex lo hacen para variables acotadas. En un ordenador, una variable
en forma estándar, xj  0, en realidad se trata como si 0  xj  1020 , por ejemplo, ya que en una máquina que trabaje
con precisión finita la cantidad 1020 es suficientemente grande.
14.6 El método Símplex para variables acotadas j 351

Paso 1 Asignación de precios. Comprobación de óptimo.


(a) Calcular los multiplicadores símplex resolviendo el sistema B T  D cB .
(b) Calcular los costes reducidos de las variables no básicas, cNj D cj T aj , para todo j … B.
(c) Comprobar que se ha llegado al óptimo: si cNj  0 para todo j 2 Nl y cNj  0 para todo j 2 Nu , PARAR; la solución es
óptima.
Paso 2 Obtener columna de pivotación.
(a) Determinar la variable no básica xq que debe entrar en la base (encontrar una dirección de descenso): escoger q … B tal que
 
cNq D mKax j mKın fcNj < 0gj; mKax fcNj > 0g :
j 2Nl j 2Nu

(b) Resolver By D aq . Si q 2 Nl , ir al paso 3; si q 2 Nu , al 3’.


Paso 3 Obtener fila de pivotación. Determinar qué variable básica xjp sale de la base: calcular  W
     
xji lji xji uji
 D mKın mKın W yi > 0 ; mKın W yi < 0 ; uq lq :
1im yi 1i m yi
Si   T ol:: PARAR; el problema es no acotado. Si no, ir al paso 4.
Paso 3’ Obtener fila de pivotación. Determinar qué variable básica xjp sale de la base: calcular  W
     
xji uji xji lji
 D mKın mKın W yi > 0 ; mKın W yi < 0 ; lq uq :
1im yi 1im yi
Si   T ol:: PARAR; el problema es no acotado.
Paso 4 Pivotación. Adaptar la solución y la matriz B e ir al paso 1:
xq lq C  ó uq C  ;
xji xji yi ; 1  i  m ;
B B C .aq ajp /epT ; (sólo si  6D uq lq )
B B [ fqgnfjp g ; (sólo si  6 uq
D lq )
Nl Nl [ fjp gnfqg ; (sólo si  6D uq lq y q 2 N l )
Nu Nu [ fjp gnfqg ; (sólo si  6D uq lq y q 2 Nu )
jp q; (sólo si  6D uq lq ).

Cuadro 14.7: El algoritmo Símplex revisado para variables acotadas

En la tabla del cuadro 14.7 se expone el algoritmo Símplex revisado para variables acotadas. En el apéndice B,
página 667, se lista un programa que lo implementa directamente: Rsimplex_1. Su longitud y múltiples matices impiden
hacerlo aquí.

Ejemplo 14.10 Resolvamos

min. 2x1 4x2 x3


min. 2x1 4x2 x3
s. a 2x1 C x2 C x3 C x4 D 10
s. a 2x1 C x2 C x3  10
x1 C x2 x3 C x5 D 4
x1 C x2 x3  4 si se introducen las variables de hol-
gura 0  x1  4
0 x1  4
0  x2  6
0 x2  6
1  x3  4
1 x3  4:
x4 ; x5  0:

Como es inmediato obtener una solución factible y una base de partida, entramos directamente en la fase II del método
Símplex.
Partiremos de
 
10
B D Œa4 ; a5  D ; Nl D Œa1 ; a2 ; a3  ; Nu D ;
01

y de la solución inicial x D Œ0; 0; 1; 9; 5T . La función objetivo en este punto es 1.


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

Iteración 1. Paso 1
Calculemos los multiplicadores símplex:
    
T 10 0 0
DB cB D D :
01 0 0

Los costes reducidos de las variables no básicas son:


 
T 2
cN1 D c1  a1 D 2 Œ0; 0 D 2;
1
 
1
cN2 D c2 T a2 D 4 Œ0; 0 D 4 y
1
 
1
cN3 D c3 T a3 D 1 Œ0; 0 D 1:
1

Todavía no se ha llegado al óptimo del problema pues las variables x1 , x2 y x3 están en sus límites inferiores y sus costes
reducidos son negativos.

Iteración 1. Paso 2
Se elige la variable x2 para entrar en la base por ser la no básica de coste reducido más negativo. Se resuelve By D a2 :
    
1 10 1 1
yDB a2 D D :
01 1 1

Iteración 1. Paso 3
La variable a salir de la base saldrá de calcular el incremento  :
8    9
< 1 D mKın xB1 lB1 ; xB2 lB2 D 9 0 ; 5 0 =
 D mKın y1 y2 1 1 D 5:
: ;
u2 l2 D 6 0

Saldrá, por tanto, la variable de número de índice 2 en la base, x5 , pues es la que antes llega a su límite inferior.

Iteración 1. Paso 4
Readaptemos la solución y las estructuras de datos:

x2 l2 C  D 0 C 5 D 5
x4 x4 y1 D 9 5  1 D 4
x5 x5 y2 D 5 5  1 D 0:

La nueva solución es x D Œ0; 5; 1; 4; 0T , con


 
11
B D Œa4 ; a2  D ; Nl D Œa1 ; a3 ; a5  y Nu D ;:
01

La nueva función objetivo es 21.


14.6 El método Símplex para variables acotadas j 353

Iteración 2. Paso 1
Calculemos los multiplicadores símplex:
  1       
T 10 0 10 0 0
DB cB D D D :
11 4 11 4 4

Los costes reducidos de las variables no básicas son:


 
T 2
cN1 D c1  a1 D 2 Œ0; 4 D 2;
1
 
T 1
cN3 D c3  a3 D 1 Œ0; 4 D 5 y
1
 
0
cN5 D c5 T a5 D 0 Œ0; 4 D 4:
1

Como la variable x3 está en su límite inferior y su coste reducido es negativo, todavía no se ha llegado al óptimo.

Iteración 2. Paso 2
Se elige la variable x3 para entrar en la base. Se resuelve By D a3 :
    
1 1 1 2
y D B 1 a3 D D :
0 1 1 1

Iteración 2. Paso 3
La variable a salir de la base saldrá de calcular  :
8̂ nx l
o ˚ 9
ˆ 1 D mKın B1y1 B1 D 4 2 0 > >
ˆ
ˆ >
>
ˆ
< >
=
nx u
o ˚
 D mKın 2 D mKın B 2 B 2
D 5 6 D 1:
ˆ
ˆ y2 1 >
>
ˆ
ˆ >
>
:̂ >
;
u3 l 3 D 4 1

Saldrá, por tanto, la variable de número de índice 2 en la base, x2 , pues es la que antes llega a uno de sus límites: el
superior.

Iteración 2. Paso 4
Readaptemos la solución y las estructuras de datos:

x3 l3 C  D 1 C 1 D 2
x4 x4 y1 D 4 1  2 D 2
x2 x2 y2 D 5 C 1  1 D 6:

La nueva solución es x D Œ0; 6; 2; 2; 0T , con


 
1 1
B D Œa4 ; a3  D ; Nl D Œa1 ; a5  y Nu D Œa2 :
0 1

La nueva función objetivo es 26.


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

Iteración 3. Paso 1
Calculemos los multiplicadores símplex:
  1       
T 1 0 0 1 0 0 0
DB cB D D D :
1 1 1 1 1 1 1

Los costes reducidos de las variables no básicas son:


 
T 2
cN1 D c1  a1 D 2 Œ0; 1 D 3;
1
 
1
cN2 D c2 T a2 D 4 Œ0; 1 D 5 y
1
 
T 0
cN5 D c5  a5 D 0 Œ0; 1 D 1:
1

Como las variables x1 y x5 , que están en sus límites inferiores, tienen costes reducidos negativos, todavía no se ha
llegado al óptimo del problema.

Iteración 3. Paso 2
Se elige la variable x1 para entrar en la base. Se resuelve By D a1 :
  1       
1 1 1 2 1 1 2 3
yDB a1 D D D :
0 1 1 0 1 1 1

Iteración 3. Paso 3
La variable a salir de la base saldrá de calcular :
8̂ nx l
o ˚ 9
ˆ 1 D mKın B1y1 B1 D 2 3 0 > >
ˆ
ˆ >
>
ˆ
< >
=
nx uB2
o ˚ 2
 D mKın 2 D mKın B 2
D 2 4 D :
ˆ
ˆ y2 1 >
> 3
ˆ
ˆ >
>
:̂ >
;
u1 l1 D 4 0

Saldrá x4 pues es la que antes llega a uno de sus límites: el inferior.

Iteración 3. Paso 4
Readaptemos la solución y las estructuras de datos:

x1 l1 C  D 0 C 2=3 D 2=3
x4 x4 y1 D 2 .2=3/  3 D 0
x3 x3 y2 D 2 C .2=3/  1 D 8=3:

La nueva solución es: 2 3 2 3


x1 2=3
6x 7 6 6 7
6 27 6 7
6 7 6 7
6 x3 7 D 6 8=3 7 :
6 7 6 7
4 x4 5 4 0 5
x5 0
14.6 El método Símplex para variables acotadas j 355

También,
 
2 1
B D Œa1 ; a3  D ; Nl D Œa4 ; a5  y Nu D Œa2 :
1 1
La nueva función objetivo es 28.

Iteración 4. Paso 1
Calculemos los nuevos multiplicadores símplex:
  1       
T 2 1 2 1=3 1=3 2 1
DB cB D D D :
1 1 1 1=3 2=3 1 0

Los costes reducidos de las variables no básicas son:


 
1
cN2 D c2 T a2 D 4 Œ 1; 0 D 3;
1
 
1
cN4 D c4 T a4 D 0 Œ 1; 0 D1 y
0
 
0
cN5 D c5 T a5 D 0 Œ 1; 0 D 0:
1

Los costes reducidos de las variables no básicas en sus límites inferiores, x4 y x5 , son 1 y 0, y el de la variable en su
límite superior, x2 , es -3.
Se ha llegado, por tanto, a un óptimo del problema, aunque no es el único. En efecto, si se incrementa x5 , manteniendo
x2 D 6 y x4 D 0 fijos, las variables x1 y x3 se modificarán de la forma:
     
x1 1 1 2=3 1=3
DB b B a5 x5 D x5 :
x3 8=3 2=3

Para cualquier x5 < 2, la solución


2 3 2 3
x1 2=3 1=3x5
6x 7 6 6 7
6 27 6 7
6 7 6 7
6 x3 7 D 6 8=3 C 2=3x5 7
6 7 6 7
4 x4 5 4 0 5
x5 0
es óptima. El valor de la función objetivo óptimo es 28.
Con el programa Rsimplex_1 que anunciamos anteriormente, en una sesión de M ATLAB, se consigue esto:

>> A=[2 1 1;1 1 -1];


>> b=[10;4];
>> c=[-2 -4 -1];
>> l=[0 0 1];
>> u=[4 6 4];
>> [fobj niters x]=Rsimplex_1([],A,b,c,l,u)
[m n]=[2 3]. Tiempo CPU: 0.0312; fun. obj.= -2.8000e+001
fobj = -28
niters = 4
x =
0.666666666666667
6.000000000000000
2.666666666666667
356 j Capítulo 14. Programación lineal. El método Símplex

Para otro ejemplo mucho más grande, referido al modelo de energía usado en EE.UU. denominado ETA-MACRO,
con 400 restricciones y 816 variables, esto otro que sigue.

>> [fobj niters]=Rsimplex_1(’etam-mi.mps’)


1 archivo(s) copiado(s).
NAME done ROWS done COLUMNS done RHS done RANGES done BOUNDS done reading done mps2mat doneStatus=0
[m n]=[400 816]. Tiempo CPU: 3.0888; fun. obj.= -7.5572e+002
fobj = -7.557152331775660e+002
niters = 2009

14.7 Implementaciones divulgativas o “comerciales” del Símplex


14.7.1 Forma de “tableau”
Una de ellas, el tableaux. La realidad es que este algoritmo, cuando se formuló, había que comunicarlo de alguna manera
que entendiese el común de los mortales con cierta rapidez. La idea original fue genial pero luego se ha seguido con ella
hasta la saciedad. En muchos libros, incluso de prestigio, se sigue utilizando para exponer la mecánica del Símplex. En
mi modesta opinión hoy debería estar totalmente en desuso, pero como no es así, paso a exponerla sucintamente. Es así
el famoso tableaux:
z xB xN TD
T
z 1 0 cN cBT B 1
N cBT B 1 b

1 1
xB 0 I B N B b

Si TD designa Término de la Derecha y T es una matriz cuyos coeficientes son los del tableau, en realidad éste
representa el sistema de m C 1 ecuaciones lineales y n C 1 variables, las n de x y z,

2 3
z
6 xB 7
T6 7
4 xN 5 D 0:;
TD

La gran diferencia con lo expuesto en este capítulo es que el cálculo de  y cN N del Paso 1, y el de y del Paso 2 se
eliminan, y el Paso 4 de pivotación se lleva a cabo directamente en el tableau.
Si suponemos que las variables básicas que entran y salen de la base en una determinada iteración son la q y la p, y
que las filas y las columnas del tableau de esa iteración están numeradas partiendo de cero, la operación de pivotación
conlleva:
1. Dividir la fila p de T por tpq , el coeficiente que ocupa la fila p y la columna q de la matriz T ;
2. Para 0  i  m, i ¤ p, restar de la fila i la p multiplicada por ti q a fin de hacer cero el elemento q de esa fila.
Los costes reducidos, cN N , y el vector de variables básicas, B 1 b, se obtienen directamente del tableau.

Ejemplo 14.11 Resolvamos:


min. x1 C x2 4x3
s. a x1 C x2 C 2x3  9
x1 C x2 x3  2
x1 C x2 C x3  4
x1 ; x2 ; x3  0:
14.7 Implementaciones divulgativas o “comerciales” del Símplex j 357

Con variables de holgura


min. x1 C x2 4x3
s. a x1 C x2 C 2x3 C x4 D9
x1 C x2 x3 C x5 D2
x1 C x2 C x3 C x6 D 4
x1 ; x2 ; x3 ; x4 ; x5 ; x6  0:

Iteración 1
El primer tableau es
z x1 x2 x3 x4 x5 x6 TD
z1 1 1 4 0 0 0 0
x4 0 1 1 2 1 0 0 9
x5 0 1 1 1 0 1 0 2
x6 0 1 1 ① 0 0 1 4
La variable que entra en la base es la no básica cuyo coste reducido es más negativo: x3 .
El ① indica que de entre las relaciones posibles, 9/2 y 4/1, (la otra afecta a un número negativo) se elige esta última,
por lo que saldrá de la base aquella variable que pivota en la tercera fila: x6 .

Iteración 2
Operando lo indicado se llega a este segundo tableau:
z x1 x2 x3 x4 x5 x6 TD
z1 3 5 0 0 0 4 16
x4 0 ③ 1 0 1 0 2 1
x5 0 0 2 0 0 1 1 6
x3 0 1 1 1 0 0 1 4

Iteración 3
Siguiendo con la mecánica apuntada se obtiene esto:

z x1 x2 x3 x4 x5 x6 TD
z1 0 4 0 1 0 2 17
1 1 2 1
x1 0 1 3
0 3
0 3 3
x5 0 0 2 0 0 1 1 6
2 1 1 13
x3 0 0 3
1 3
0 3 3

Se ha llegado a un punto en el que todos los costes reducidos de las variables no básicas son positivos por lo que se ha
conseguido el óptimo del problema.
La solución final es por tanto
Œx1 ; x2 ; x3 ; x4 ; x5 ; x6 T D Œ1=3; 0; 13=3; 0; 6; 0T :
El valor de la función objetivo es z D 17.

z x1 x2 x3 x4 x5 x6 TD
z1 0 4 0 1 0 2 17
x1 0 1 13 0 31 0 32 13
x5 0 0 2 0 0 1 1 6
x3 0 0 23 1 31 0 31 133
358 j Capítulo 14. Programación lineal. El método Símplex

La base óptima la constituyen los vectores columna a1 , a5 y a3 . Es decir,


min. x1 C x2 4x3
2 3
10 2 s. a x1 C x2 C 2x3 C x4 D9
B D Œa1 ; a5 ; a3  D 4 1 1 15 x1 C x2 x3 C x5 D2
10 1 x1 C x2 C x3 C x6 D 4
x1 ; x2 ; x3 ; x4 ; x5 ; x6  0:

La inversa de B es la submatriz que en el tableau final ocupa el lugar que en el inicial ocupaba la submatriz identidad;
es decir, 2 3
1=3 0 2=3
B 1 D 4 0 1 1 5:
1=3 0 1=3

14.7.1.1 Otras variantes y mejoras del Símplex


Implementación de la inversa de la base en forma de productos matriciales
En problemas grandes, resolver los sistemas B T  D cB y By D aq es costoso. La modificación de B 1
en una
iteración es
N 1 D E B 1;
B
donde 2 3
1 y1 =yp
6 :: :: 7
6 : : 7
6 7
6 1 yp 1 =yp 7
.y ep /epT 6 7
6 7 1
E DI D6 1=yp 7y yDB aq :
yp 6 7
6 ypC1 =yp 1 7
6 7
6 :: :: 7
4 : : 5
ym =yp 1
"
columna p
1
Si el Símplex se inicia con una matriz B igual a la identidad, después de k iteraciones la matriz B se puede expresar
en una forma producto, de la siguiente manera

Bk 1 D E k E k 1    E 1B 1
:

Para implementar este esquema operativo se requiere guardar los valores de los coeficientes de la columna de la matriz
E i que la hace diferente de la matriz identidad, y el propio valor del índice i .
Para evitar errores de redondeo, conforme avanza el proceso es aconsejable refactorizar periódicamente la matriz
B 1.
La variante del método Símplex que incluye esta forma de actuar es la de la tabla del cuadro 14.8.

Implementación de la base y su inversa mediante factorización LU


La idea es factorizar la matriz básica en la forma LU e ir aplicándole a ella una sucesión de matrices elementales —que
difieren de la identidad en un solo elemento debajo de la diagonal principal— y matrices de permutación.
Si, por ejemplo, 2 3
321
6 7
U D 4 3 55;
4
14.8 Complejidad computacional del algoritmo Símplex j 359

Paso 1 – Operación BTRAN (backward transformation). Calcular los multiplicadores símplex a partir de
   
T D cB T
B 1D cBT
Ek Ek 1 E1 :

Determinar los costes reducidos de las variables no básicas a partir de

cNj D cj T aj ; para todo j 2 N:


Si cNj  0 para todo j … B, PARAR; la solución es óptima.
Paso 2 – Operación FTRAN (forward transformation). Escoger q 2 N tal que cNq D mKınj 2N fcNj < 0g. Calcular
1
yDB aq D .E k .E k 1    .E 1 aq ///:
Si y  0, PARAR; el problema es no acotado.
Paso 3 – Operación CHUZR. Si xj D B 1 b, establecer la variable básica xjp que sale de la base determinando la fila p sobre
la que pivota la columna q a partir de la relación
 
xjp xji
D mKın W yi > 0 :
yp 1im yi

Paso 4 – Operación WRETA. Adaptar la matriz inversa de la base y la solución a partir de


2 3
1 y1 =yp
6 : :: 7
6 :: 7
6 : 7
6 7
6 1 yp 1 =yp 7
6 7
E kC1 D 6 1=yp 7:
6 7
6 ypC1 =yp 1 7
6 7
6 :: :: 7
4 : : 5
ym =yp 1

La nueva inversa de la base será B 1 E kC1 E k    E 2 E 1 y la nueva solución xj E kC1 xj .

Cuadro 14.8: El algoritmo Símplex con la inversa de la base en forma de productos matriciales

las matrices U 1 , U 2 y U 3 serán


2 3 3 2 2
3
3 12 1 1
6 7 6 7 6 7
U1 D 4 1 5;U2 D 4 3 5 y U3 D 4 1 55:
1 1 4

Es fácil comprobar que U D U 3 U 2 U 1 .


Después de k iteraciones se tendrá que
Bk D B0 E 1 1 E 2 1    E k 1 I
es decir, que
Lm P m    L1 P 1 B k D U m U m 1    U 1E 1 1E 2 1    E k 1:
Para guardar en el ordenador las matrices E i , Lj y U j en la memoria del ordenador sólo es necesario guardar el valor
de los subíndices y los elementos distintos de cero de las columnas que designan esos subíndices.
De las matrices de permutación P i sólo es necesario guardar un puntero que indique con qué fila se intercambia la i.

14.8 Complejidad computacional del algoritmo Símplex


Cada iteración requiere alrededor de m.n m/ C .m C 1/2 multiplicaciones y m.n C 1/ sumas o restas: O.mn/ en los
dos casos pues n  m..
El número de puntos extremos de un programa lineal en forma estándar con n variables y m condiciones es C.n; m/.
Si n  2m, se tiene que
nŠ  n m
C.n; m/ D   2m :
mŠ.n m/Š m
360 j Capítulo 14. Programación lineal. El método Símplex

De acuerdo con esto, en el peor de los casos, parece lógico temerse un número de iteraciones exponencial.
Un problema clásico para probarlo es el estudiado por Klee y Minty [1972]:

maximizar xn
s. a 0  x1  1
ıxi 1  xi  1 ıxi 1; i D 2; : : : ; n; 0 < ı < 1=2;
xi  0; i D 1; 2; : : : ; n:

Tiene 2n puntos extremos. Para n D 2 y n D 3 es el de la figura 14.7. Comenzando en x D 0 (factible), con precisión
absoluta, el método recorrería los 2n puntos extremos.

x2   x2
x (3) = 0
1 x (7)
x (6)
 
x (2) = 1
1−δ
x (5)
x (4)

x3
 
x (1) = 1
δ
x (3) x (2)
x (1)
x (0) x1 x (0) x1

Figura 14.7: El problema de Klee y Minty en dos y tres dimensiones

La práctica de casi setenta años, en que el método Símplex ha permanecido plenamente operativo, ha permitido
constatar que los casos extremos, como el ejemplo de Klee y Minty, rara vez ocurren en la realidad práctica.
Grosso modo, en problemas de tamaño moderado, según referencias relativamente recientes al final del libro, el
método Símplex requiere un número de iteraciones real comprendido entre 4m y 6m.
En problemas muy grandes, el número de iteraciones que cabe esperar llevar a cabo para resolverlos es, según las
mismas referencias, ˛  m, donde e ˛ < log2 .2 C n=m/.
Para concluir, la complejidad computacional práctica esperada del método Símplex es del O.m2 n/. Teniendo en
cuenta el efecto que el tratamiento de la dispersidad de los problemas puede acarrear en la complejidad del método, di-
versos estudios dedicados al efecto han concluido que la complejidad real del método la define la ecuación Km˛ nd 0;33 ,
donde K es una constante, 1;25 < ˛ < 2;5 y d es el número de elementos distintos de cero en la matriz A, dividido por
nm.

Referencias, fuentes y lecturas complementarias


Al exponer cómo implementar en ordenador el método Símplex siempre me gusta hacerlo con su expresión más al-
gebraica, no como un recetario o por medio de tablas de uno u otro tipo. Por ello, en lo expuesto sigo, a Bazaraa y
Jarvis [1977], Bazaraa, Jarvis y Sherali [1990], Goldfarb y Todd [1989], Luenberger [2016], Schrijver [1986] y Van-
derbei [2001]. También recomiendo el enfoque reciente e innovador de Boyd [2004] y Nocedal y Wright [2006]. Otras
referencias clásicas son Chvátal [1983], Gill, Murray y Wright [1991] y Murty [1983], Fang [1993] y Padberg [1995].
Muchas de las reflexiones y consideraciones sobre la implementación práctica en ordenador del método Símplex están
basadas en mi experiencia al respecto en diversos lenguajes de programación: FORTRAN, C y M ATLAB. El programa
B BMI listado en de la Fuente [1998] es parte del fruto de alguna de ellas.
M ATLAB es el software que más útil me ha sido para profundizar en el método Símplex y todas sus variantes más efi-
caces y modernas que he presentado, incluidas las de punto interior que veremos en el capítulo siguiente. A este respecto,
me gusta bastante cómo explica la Programación Lineal, en su parte más computacional y próxima a la Programación
No Lineal, Biegler [2010].
362 j Capítulo 15. Dualidad en Programación Lineal. Métodos de puntos interiores

Si el problema primal está formulado en forma estándar, la función de Lagrange es

L.x; ; / D c T x T .Ax b/  T x;

donde L.x; ; / W Rn  Rm  Rn ! R.
El gradiente de esta función con respecto a x es

c AT  :

El problema dual es entonces, incorporando en la f.o. que el gradiente es cero,

max. bT 
s. a c AT  D0
  0:

El par primal–dual de un problema de Programación Lineal en forma estándar es pues

(P) min. c T x (D) max. bT 


s. a Ax D b s. a A T  C  D c
x0   0:

Recordemos una vez más las condiciones en las que se dan los óptimos de los problemas de Programación Lineal.
Entre ellas se incluye la factibilidad del dual, que acabamos de enunciar.
Teorema 15.1 Condiciones de Karush-Kuhn-Tucker. x 2 Rn es el óptimo del problema primal
min. c T x
s. a Ax D b
x  0;
si y sólo si existen vectores  y , óptimos del problema dual, tales que
Ax D b; x  0; (factibilidad del problema primal)
A T  C  D c;   0; (factibilidad del problema dual)
i xi D 0; i D 1; : : : ; n; (complementariedad o gap de dualidad)

Ejemplo 15.1 El problema

min. x1 C x2 C 5x3 min. x1 C x2 C 5x3


s. a x1 C x3  1 s. a x1 C x3 x4 D1
H)
x2 C x3  2 estándar x2 C x3 x5 D 2
x1 ; x2 ; x3  0: x1 ; x2 ; x3 ; x4 ; x5  0:

Su función de Lagrange es
cT x T .Ax b/  T x:
El gradiente de esta función con respecto a x es
2 3 2 3 2 3
1 1 0 1
617 6 17 6 7
6 7 6 0 7  6 27
T 6 7 6 7 1 6 7
c A   D 657 6 1 17 6 3 7 :
6 7 6 7 2 6 7
405 4 1 05 4 4 5
0 0 1 5
15.1 Dualidad j 363

De acuerdo con lo expuesto, el problema dual es

max. 1 C 22
s. a 1 1 D 1
2 2 D 1
1 2 3 D 5
1 4 D 0
C 2 5 D 0
1 ; 2 ; 3 ; 4 ; 5  0:

Expresado en forma más compacta:

max. 1 C 22
max. 1 C 22
s. a 1  1
reorganizando
s. a 1 1
2  1 ! 2  1
1 2  5
1 C 2  5
1  0
1 ; 2  0:
2  0

A lo que ha dado lugar este razonamiento es la forma simétrica de la dualidad:

(P) min. c T x (D) max. bT 


s. a Ax  b s. a A T   c
x0   0:

Recordemos el par Primal-Dual.

(P) min. c T x (D) max. bT 


s. a Ax D b s. a A T  C  D c
x0   0:

15.1.1 Interpretación geométrica


Recordando las consideraciones geométricas de la PL, estudiemos el caso de

max. 21 C 22


min. 18x1 C 12x2 C 2x3 C 6x4
s. a 31 C 2  18
s. a 3x1 C x2 2x3 C x4 D 2 dual
HHHH) 1 C 32  12
x1 C 3x2 x4 D 2
21  2
x1 ; x2 ; x3 ; x4  0:
1 2  6:

En el subespacio Im.A/ y en el plano .1 ; 2 / los problemas se ven como indica la figura 15.1. Cada vector columna
ai del primal define una condición del dual. El óptimo es un punto extremo del dual, en el cual hay dos condiciones
activas, que corresponden a una base óptima del primal. b es una combinación lineal positiva de a1 y a2 .
Ejemplo 15.2 Un empresario quiere vender b1 ; b2 ; : : : ; bm unidades de m productos. Para ello contacta con un fabri-
cante que se los puede elaborar realizando para ello n actividades distintas en sus fábricas. El coste (precio) unitario de
cada actividad j se lo fija el fabricante al empresario en cj unidades. P
Si aij representa la cantidad del producto i que obtiene una unidad de la actividad j , jnD1 aij xj son las unidades
que se producen de i con todas las actividades, que deben ser mayores o iguales que la cantidad requerida de bi .
is maximized at an extreme point of the dual feasible region. At this point exactly
two dual constraints are active. These active constraints correspond to an optimal
basis of the primal. In fact, the vector defining the dual objective is a positive linear
combination of the vectors. In the specific example, b is a positive combination
of a1 and a2 . The weights in this combination are the xi ’s in the solution of the
primal.

4.3 Relations to the Simplex Procedure 87


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

λ2
a2
a2

b
a1
b
a3
λ1
a1
a3

a4

a4
Fig. 4.3 The dual in activity space
Fig. 4.2Figura
The15.1: Interpretación
primal de un problema
requirements space primal y dual es sus subespacios característicos

El objetivo que quiere conseguir el empresario es:


he dual problem is shown geometrically in Fig. 4.3. Each column ai of the
Xn
defines a constraint of the dual as a half-space min. whose
cj xj boundary is orthogonal
column vector and is located at a point determined j D1 by ci . The dual objective
X n
imized at an extreme point of the dual s.feasible a aij region.
xj  bi ; Ati D
this
1; 2;point
: : : ; m;exactly
ual constraints are active. These active constraints j D1 correspond to an optimal
xj  0 j D 1; 2; : : : ; n:
of the primal. In fact, the vector defining the dual objective is a positive linear
nation of theSupóngase ahora
vectors. theel empresario
Inque specific acuerda
example, pagarbalis
fabricante unos precios
a positive y1 ; y2 ; : : : ; ym por cada unidad de los m
combination
productos ya ensamblados.
and a2 . TheSi weights in this combination are the xi ’s inporthe
aij sigue siendo el número de unidades de i producidas
solution of the
una unidad de la actividad j , la suma m
P
iD1 aij yi es
. el ingreso del fabricante por cada unidad de actividad j con los precios y1 ; y2 ; : : : ; ym . Ese ingreso no debe exceder al
coste real cj . P
El fabricante deberá fijar los niveles de producción bi de cada producto i que maximicen su ganancia m
i D1 yi bi .
El problema que se plantea el fabricante es el dual del del empresario:
m
X
max. yi b i
λ2 i D1
a2
m
X
s. a aij yi  cj ; j D 1; 2; : : : ; n;
i D1
yi  0; i D 1; 2; : : : ; m:

b
El Programa primal trata en este caso sobre valores económicos. Garantizadas unas ventas mínimas de productos
a unos precios, qué esquema concreto de producción
a1 minimiza el coste total, o maximiza el valor económico de
la
a3producción.
El Programa dual de cantidades físicas. Con un esquema de costes λ1 unitario dado, qué cantidades de productos
producir a unos precios conocidos para maximizar el beneficio de su venta.
La teoría de dualidad es un elemento importante más para ayudar a analizar la sensibilidad de los problemas de PL,
pues ayuda a responder preguntas como: ¿De qué forma habrá que modificar nuestra cadena de producción los próximos
seis meses si el beneficio de nuestro producto estrella cae un 20 %? O, dada nuestra disponibilidad de recursos, ¿qué
a4 vender de un nuevo producto para hacerlo rentable?
beneficio o cuántas unidades deberíamos

Fig. 4.3 The dual in activity space


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

No todas las variables no básicas que cumplan que ˛pj < 0, j 2 N son candidatas a entrar en la base remplazando a
la básica no factible.
Han de cumplir las condiciones de factibilidad del dual (óptimas del primal) en términos de costes reducidos. Si xj es
la que entra, los nuevos costes reducidos, cNi , en función de los antiguos, cOi , saldrán de esta fórmula:
˛pl
cNl D cOl cOj ; l D 1; : : : ; n .cNl D 0 si l D j /:
˛pj

Como todos los costes reducidos han de ser no negativos, la relación jcOj =˛pj j que sea menor, con ˛pj < 0, determina
el coste reducido que antes alcanza cero y, por lo tanto, la variable xq que entra en la base.
El algoritmo dual del Símplex es el de la tabla 15.1. Codificado en M ATLAB, el del cuadro 15.2.

Paso 1 – Calcular el vector de multiplicadores símplex resolviendo el sistema B T  D cB . Determinar los costes reduci-
dos de las variables no básicas: cNj D cj T aj , para todo j 2 N .
Paso 1’ – Comprobar la factibilidad del programa primal: Si xB  0, PARAR; la solución es óptima. Si no, continuar.
Paso 2 – Determinar la variable básica xjp que debe salir de la base: Escoger jp 2 fji 2 B W xji < 0g:
Paso 3 – Comprobar la no factibilidad del problema: Calcular u resolviendo el sistema B T u D ep y hacer ˛j D
uT aj , para todo j 2 N . Si ˛j  0 para todo j 2 N , PARAR; el problema no tiene solución.
Paso 4 – Determinar la variable no básica xq que ha de entrar en la base: Calcular (para que sus costes reducidos
sigan siendo de óptimo en todas menos en la qque pasará a 0) 
cNq cNj
D mKın W ˛j < 0; j 2 N D :
˛q ˛j
Paso 5 – Recalcular costes reducidos: Hacer cNj cNj ˛j , j 2 N , j 6D q y cNp .
Paso 6 – Adaptar la solución y la matriz B: Calcular w resolviendo Bw D aq y hacer

xq  D xjp =˛q
xji xji wi ; 1  i  m; i 6D p
B B C .aq ajp /epT
B B [ fqgnfjp g
N N [ fjp gnfqg
jp q:

Ir al paso 1’.

Cuadro 15.1: El Algoritmo Dual del Símplex

Ejemplo 15.3 Consideremos el siguiente problema de Programación Lienal.

min. 5x1 x2 C 12x3


s. a 3x1 C 2x2 C x3 D 10
5x1 C 3x2 C x4 D 16
x1 ; x2 ; x3 ; x4  0:

Vamos a resolverlo en una sesión de M ATLAB con ProgLineal_3() según indica el cuadro 15.3. Ahora añadamos
una nueva columna al problema de tal manera que quede así:

min. 5x1 x2 C 12x3 x5


s. a 3x1 C 2x2 C x3 C x5 D 10
5x1 C 3x2 C x4 C x5 D 16
x1 ; x2 ; x3 ; x4 ; x5  0:

Lo podemos volver a resolver mediante ProgLineal_3() según indica el cuadro 15.4.


15.3 El algoritmo dual del Símplex j 367

function [x fobj pi sN iter B N Binv] = dual_simplex(c,A,b,eps1,B0)


% Resuelve Max c’x subject to Ax = b, x >= 0 mediante Simplex Dual. B0 base de partida.
[m,n]=size(A); c=c(:); b=b(:);
%% Paso 0: Inicializar B, N, x_B y s_N -1 -T
B = B0; N = setdiff(1:n,B); % x =B b, lambda=B c
xB=A(:,B)\b; x=zeros(n,1); x(B)=xB; % B T B
y = A(:,B)’\c(B); sN = c(N)-A(:,N)’*y; % c =c -N lambda
% N N
iter = 0; disp(’It. Sale B Entra B Pinf Ninf Cr-inf’);
while 1 == 1 % Proceso iterativo
%% Pasos 1 y 2: Comprobar optimalidad; si no, ha de dejar la base x_{B(i)}
[xBmin i] = min(xB); % Valor más negativo xb
if xBmin >= -eps1 % No hay no factibles, final
fobj=c’*x; Binv=inv(A(:,B)); pi=Binv’*c(B); return, end
%% Paso 3 y 4: Ver no facti. y la variable no básica que entra, x_{N(j)}
e = zeros(m,1); e(i) = 1; % Negativos en vector T -T
v = A(:,B)’\e; % w = N B e
w = A(:,N)’*v; % i
zz = find(w<-eps1);
if isempty(zz), error(’Problema no factible’), end
[t ii] = min(-sN(zz)./w(zz)); % Coste reducido relación con w menor
j = zz(ii); % Entra no básica j
%% Paso 5: Recalcular costes reducidos: la j la rel. menor; demás=ant.+t*w
sN = sN + t*w; sN(j) = t;
%% Paso 6: Adaptar solución, xB, y datos -1 -1 -1
d = A(:,B)\A(:,N(j)); % x =B b-B N (B b/w(j))
temp = B(i); B(i) = N(j); N(j) = temp; % B j
theta=xB(i)/w(j); xB=xB-theta*d; xB(i)=theta; x=zeros(n,1); x(B)=xB;
iter = iter + 1;
fprintf(’%3d%6d%7d %14.6f %3d %6d\n’,iter,temp,B(i),...
sum(x(x<0)),sum(x<0),sum(sN<0));
end
end

Cuadro 15.2: Codificación en M ATLAB del Algoritmo Dual el Símplex

>> c=[-5 -1 12 0]; A=[3 2 1 0;5 3 0 1]; b=[10;16]; B=[3 4];


>> [sol fobj pi cr it B N]=ProgLineal_3(c,A,b,eps,B)
It. Sale B Entra B Cos. red. fobj
pi = 10.0000 -7.0000
1 4 1 -41.000000 40.000000
cr = 7.0000 2.0000
2 3 2 -0.400000 -16.400000
it = 2
sol = 2
B = 2 1
2
N = 4 3
0
0 fobj =
-12

Cuadro 15.3

>> c1=[c -1];


>> B1=[1 2];
>> A1=[A [1 1]’]; fobj =-16
>> [sol fobj pi cr it B N]=ProgLineal_3(c1,A1,b,eps,B1) pi = 0 -1
It. Sale B Entra B Cre. fobj cr = 12 1 2
1 2 5 -4.000000 -12.000000 it = 1
sol = 3.0000 B = 1 5
0 N = 3 4 2
0
0

Cuadro 15.4
368 j Capítulo 15. Dualidad en Programación Lineal. Métodos de puntos interiores

Incorporemos ahora una inecuación y una columna al problema original:


min. 5x1 x2 C 12x3
s. a 3x1 C 2x2 C x3 D 10
5x1 C 3x2 C x4 D 16
x1 C x2 x5 D 5
x1 ; x2 ; x3 ; x4 ; x5  0:

Una solución de partida puede ser la del problema original Œ2 2 0 0T , con un nuevo coeficiente que verifique la nueva
condición; es decir,
x D Œ2 2 0 0 1T :
Como esta solución no es factible del primal, pero la base es óptima en el primal, reoptimizamos con
dual_simplex(). Vemos lo que ocurre en el cuadro 15.5.

>> c2 = [c 0];
>> b2 = [b; 5];
fobj =
>> B2=[1 2 5];
-5.0000
>> A2=[A [0;0]; 1 1 0 0 -1]
pi =
A2 = 3 2 1 0 0
-4.0000
5 3 0 1 0
0.0000
1 1 0 0 -1
7.0000
>> [x fobj pi cr it B N]=dual_simplex(c2,A2,...
cr =
b2,sqrt(eps),B2)
16.0000
It. Sale B Entra B Pinf Ninf
7.0000
1 5 4 -0.000000 1
it = 1
x = -0.0000
B = 1 2 4
5.0000
N = 3 5
0
1.0000

Cuadro 15.5

Efectuemos ahora un cambio en el vector b. Su primer coeficiente pasa de 10 a 11.


min. 5x1 x2 C 12x3
s. a 3x1 C 2x2 C x3 D 11
5x1 C 3x2 C x4 D 16
x1 ; x2 ; x3 ; x4  0:
Reoptimizamos también mediante dual_simplex() pues habrá una no factibilidad en el primal. Ocurre lo que indica
el cuadro 15.6.
fobj = -1.3333
>> b3=[11;16];
pi = 12.0000
>> B3=[1 2];
-8.3333
>> [x fobj pi cr iter B N Binv]=dual_simplex(c’,A,b3,eps,B3)
cr = 0.6667
It. Sale B Entra B Pinf Ninf
8.3333
1 1 3 0.000000 0
iter = 1
x = 0
B = 3 2
5.3333
N = 1 4
0.3333
Binv = 1.0000 -0.6667
0
0 0.3333

Cuadro 15.6

Por último, vamos a estudiar un cambio en la función objetivo: el coeficiente de x3 pasa de ser 12 a 9.
min. 5x1 x2 C 9x3
s. a 3x1 C 2x2 C x3 D 10
5x1 C 3x2 C x4 D 16
x1 ; x2 ; x3 ; x4  0:
15.3 El algoritmo dual del Símplex j 369

Volvemos a reoptimizar con ProgLineal_3(). Se obtiene lo que plasma el cuadro 15.7.

>> c4=[-5 -1 9 0];


>> B4=[1 2];
>> [sol fobj pi cr it B N]=ProgLineal_3(c4,A,b,sqrt(eps),B4)
It. Sale B Entra B Cos. red. fobj
1 2 3 -1.000000 8.000000
sol =
3.2000
0
0.4000
0
fobj =
-12.4000
pi =
9.0000
-6.4000
cr =
0.2000 6.4000
it = 1
B = 1 3
N = 2 4

Cuadro 15.7

15.3.1 El problema de la dieta (otra vez)

FACTOR DE CRECIMIENTO
H ARINA DE SOJA

S OJA EN GRANO

M INERALES

V ITAMINAS

P ESCADO
A LFALFA
C ARNE

S AL

Función objetivo 5,80 2,63 3,08 1,13 1,00 2,26 35,72 6,00 7,00

Cantidad total 1 1 1 1 1 1 1 1 1 = 100


Alfalfa 1  1
Vitaminas 1  1,1
Factor de crecimiento 1  5
Pescado 1  5
Proteínas 0,55 0,450 0,500 0,17 0,25 0,25 0,63  43
Riboflavina 0,26 0,130 0,120 0,70 41,6 2 0,20  70
Niacina 0,23 0,090 0,045 0,14 20,4 0,4 0,25  45
Ácido pantoténico 0,20 0,055 0,060 0,14 9 0,4 0,04  16
Fósforo 0,40 0,065 0,060 0,26 0,02 0,1 0,05 0,30  14
Calcio 0,80 0,025 0,020 3 0,15 0,05 0,05 0,50  35
Sal 1 0,10 0,9 10  19
Sal 2 0,10 0,9 10  24

Cuadro 15.8

Hagamos un poco de ingeniería algorítmica: Si introducimos las variables de holgura y no utilizamos la Fase I, se
podría aplicar el método dual del Símplex añadiendo una variable artificial a la condición de igualdad e introduciéndola
en la función objetivo con una gran penalización (pondremos 1.000). La matriz de condiciones quedaría como se indica
en el cuadro 15.9. Si definimos como base de partida las columnas 10 a 22, tendremos una solución no factible pero con
costes reducidos óptimos.
370 j Capítulo 15. Dualidad en Programación Lineal. Métodos de puntos interiores

10

1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 0 0 r1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 r1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 r1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 0 r1 0 0 0 0 0 0 0 0 0
0.55 0.45 0.5 0 0 0.17 0.25 0.25 0.63 0 0 0 0 r1 0 0 0 0 0 0 0 0
0.26 0.13 0.12 0 0 0.7 41.6 2 0.2 0 0 0 0 0 r1 0 0 0 0 0 0 0
0.23 0.09 0.045 0 0 0.14 20.4 0.4 0.25 0 0 0 0 0 0 r1 0 0 0 0 0 0
0.2 0.055 0.06 0 0 0.14 9 0.4 0.04 0 0 0 0 0 0 0 r1 0 0 0 0 0
0.4 0.065 0.06 0.26 0 0.02 0.1 0.05 0.3 0 0 0 0 0 0 0 0 r1 0 0 0 0
0.8 0.025 0.02 3 0 0.15 0.05 0.05 0.5 0 0 0 0 0 0 0 0 0 r1 0 0 0
0.1 0 0 0.9 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 r1 0 0
0.1 0 0 0.9 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0

Cuadro 15.9

Apliquemos pues el algoritmo dual de Símplex. Cargamos los datos desde con load vitaminas-dual, y llevamos a
cabo una sesión de M ATLAB como se ve en el cuadro 15.10.

>> load vitaminas-dual


>> B0 = 10 11 12 13 14 15 16 17 18 19 20 21 22
>> bv = 100.0000
1.0000 >> cv =
1.1000 1.0e+003 *
5.0000 Columns 1 through 8
5.0000 0.0058 0.0026 0.0031 0.0011 0.0010 0.0023 0.0357 0.0060
43.0000 Columns 9 through 16
70.0000 0.0070 0 0 0 0 0 0 0
45.0000 Columns 17 through 22
16.0000 0 0 0 0 0 1.0000
14.0000
35.0000
19.0000

Cuadro 15.10

Con el problema en la memoria de la zona de trabajo, aplicamos el algoritmo dual del Símplex obteniéndose lo del
cuadro 15.11.

0.9198
>> [x fobj pi cr iter B N ]=dual_simplex(cv,... 1.5889
10.9772
Avf,bv,sqrt(eps),B0) 5.0000
-0.0000
It. Sale B Entra B Pinf Ninf 5.0000
1.7305
1 15 3 -556.516667 8 0
0
2 22 2 -6057.100000 9 0.4889
3.3186
3 3 6 -121.100000 9 0
0.8790
4 16 15 -889.600000 7 0
0.3703
5 2 7 -86.908193 6 0
0
6 14 2 -68.423548 5 20.2534
cr =
7 19 4 -49.470279 6 0
1.0e+003 *
8 10 3 -24.806534 4 7.4017
0.0033
9 20 5 -15.791616 3 0
1.0027
10 18 1 -12.295514 3 0
0.0017
11 12 8 -5.000000 1 0
0.0009
12 13 9 0.000000 0 5.0000
0.0004
x = 0
0.0027
15.9679 fobj = 396.3783
0.0110
58.4301 pi =
0.0051
5.9138 -2.7032
0.0009
5.8891 2.6566
iter = 12
1.2103 0
B = 3 11 8 9 2 6 15 17 1 4 5 21 7
1.0000 5.0568
N = 18 22 16 19 20 10 14 12 13
Cuadro 15.11

Con el fin de disponer de más medios sencillos para conocer y resolver problemas de programación lineal y las
posibilidades de ésta para analizar la sensibilidad de esos problemas y sus evolución, he desarrollado el programa
PL_pd_simplex_1 que se lista en el cuadro 15.12. Es un programa mixto que utiliza parte de los recursos de M ATLAB,
15.3 El algoritmo dual del Símplex j 371

function [sol fobj pi cr iter B N Binv] = PL_pd_simplex_1(c,A,b,base,file)


% Resuelve un problema de Programación Lineal
% T
% Min c x subject to Ax = b, x >= 0
% mediante los programas ProgLineal_3 o dual_simplex según la base de partida
% sea factible o no. Se puede dar la base o no.
% Rutina asociada a Sensitivity_ProgLineal_3 a la que puede enviar datos.

if nargin==5 % Lectura de los datos desde fichero ’file’ en MPS


eval([’!copy ’ file ’ ’ ’d:\matlab_2009a\work\tmp\in.mps’]);
LIPSO = ’D:\matlab_2009a\work’; exit=mps2mat(LIPSO); fprintf(’\n’);
load D:\matlab_2009a\work\tmp\default; [m n]=size(A); c=c(:); A=full(A);
A=[A(:,n0+1:n) A(:,1:n0)]; c=[c(n0+1:n);c(1:n0)]; % Mover slacks al final de A
end
save PL_dat A b c % Guardar datos relevantes para Sensitivity
eps1=eps^(2/3); [m n]=size(A); c=c(:);
if isempty(base)
xB=A\b; base=find(abs(xB)>0); nx=length(base);
if nx<m
bp = setdiff(1:n,base); base=[base;bp(1:m-nx)’]; end % Por si algún x=0
xB=xB(base);
else xB=A(:,base)\b; end
B = base; N = setdiff(1:n,B);
x=zeros(n,1); x(B)=xB;
y = A(:,B)’\c(B); sN = c(N)-A(:,N)’*y;
if (any(x(B)<0)) % En la base valor negativo: no factible primal: dual
if any(sN<-eps1);
A = [A eye(m)]; c = [c; max(max(abs(A)))*100*ones(m,1)]; B=n+1:n+m;
fprintf(’Primal-bigM\n’);
bm=find(b<0);
if ~isempty(bm)
bl=length(bm); for i=1:bl, A(bm(i),n+bm(i))=-1; end, end
[sol fobj pi cr iter B N Binv] = ProgLineal_3(c,A,b,eps1,B);
NN=N<=n; N=N(NN); cr=cr(NN);
save PL_dat -append sol fobj pi cr iter B N Binv
return, end
fprintf(’Dual\n’);
[sol fobj pi cr iter B N Binv] = dual_simplex(c’,A,b,eps1,B);
save PL_dat -append sol fobj pi cr iter B N Binv
else fprintf(’Primal\n’); % Base encontrada factible: resuelve con primal
[sol fobj pi cr iter B N Binv] = ProgLineal_3(c,A,b,eps1,B);
save PL_dat -append sol fobj pi cr iter B N Binv
end

Cuadro 15.12

para poner el problema a interpretar en un estadio donde se puedan aplicar los algoritmos vistos en este capítulo, y luego
usar estos algoritmos, u otros disponibles. Lleva a cabo estos pasos:
1. Analiza el problema —que puede leerse con varios formatos— y lo transforma en forma estándar, si es el caso.
2. Calcula una solución cualquiera del sistema de ecuaciones de las condiciones mediante el operador \ de M ATLAB.
3. Resuelve el problema de optimización mediante el método primal o dual según esa solución sea factible o no.
Con el concurso de este programa vamos a resolver el problema de la Dieta una vez más, pero ahora sin la variable
artificial que introducíamos para aplicar el algoritmo dual del Símplex. El resultado se indica en el cuadro 15.13. Luego
vamos a analizar la sensibilidad de lo obtenido a variaciones en los coeficientes de coste de la función objetivo y en el
término independiente de las condiciones. El resultado es lo que lista el cuadro 15.14.

15.3.1.1 El formato MPS: Mathematical Programming System


El formato MPS, original de IBM, es una manera tradicional de comunicar a cualquier máquina que aloje un software
para programación matemática el problema que se quiere resolver. Aunque ahora se usan más, éste se sigue utilizando
regularmente. Es un punto de partida para hacer benchmarking y otro tipo de comprobaciones. El problema de la dieta
en este formato es el del cuadro 15.15.
Vamos a resolver con este formato el problema de la dieta mediante Rsimplex_1. Lo que se obtiene es lo del
cuadro 15.16. Cargando el problema desde su fichero MPS, con PL_pd_simplex_1 y ejecutándolo en una sesión de
M ATLAB se obtiene lo que se ve en el mosaico del cuadro 15.17 de la página 373. Una sesión de M ATLAB para resolver
Dieta con linprog sería la del cuadro 15.18 de la página 374. A la derecha se invoca el vector de multiplicadores.
372 j Capítulo 15. Dualidad en Programación Lineal. Métodos de puntos interiores

0
cr =
0.4889
>> load vitaminas 0
3.3186
>> Av_d=full(Av); 10.9772
0
>> [sol fobj pi cr iter B N]=... 2.6566
0
5.0568
PL_pd_simplex_1(cv,Av_d,bv) 20.2534
0.9198
Dual 0
0.3703
It. Sale B Entra B Pinf Ninf 7.4017
1.7305
1 16 19 -1579.781993 4 0
0.8790
0
2 3 15 -43.883180 2 0
iter =
3 14 2 -34.832613 2 6
5.0000
4 19 21 -92.210155 3 B =
fobj =
15
5 20 3 -4.839145 1 396.3783
4
6 18 1 0.000000 0 pi =
5
sol = -2.7032
6
15.9679 2.6566
7
0
58.4301 5.0568
8
5.9138 9
0.9198
5.8891 11
10.9772
2
1.2103 0
21
1.0000 1.7305
17
1.5889 0
1
5.0000 3.3186
3
0.8790
5.0000 0.3703
N =
18 14 10 12 13 20 16 19
0

Cuadro 15.13

>> load vitaminas


>> Sensitivity_ProgLineal_2(cv,Av_d,bv,pi,cr,B,N,Binv)

Obj. Sensitivity Ranges


Var. Coste Red. Abajo Actual Arriba
------------------------------------------------------------------
1 cero 4.79429 5.80000 7.03416
2 cero 2.35241 2.63000 2.86196
3 cero 2.83604 3.08000 3.31110
4 cero -1.13129 1.13000 4.88892
5 cero -2.69295 1.00000 27.48875
6 cero -0.39656 2.26000 Inf
7 cero 0.91272 35.72000 92.67260
8 cero 0.94322 6.00000 Inf
9 cero 6.08019 7.00000 Inf
10 2.65656 -2.65656 0.00000 Inf
11 cero -34.80728 0.00000 56.95260
12 5.05678 -5.05678 0.00000 Inf
13 0.91981 -0.91981 0.00000 Inf
14 10.97725 -10.97725 0.00000 Inf
15 cero -0.84034 0.00000 1.91259
16 1.73054 -1.73054 0.00000 Inf
17 cero -3.88546 0.00000 4.76414
18 3.31857 -3.31857 0.00000 Inf
19 0.87903 -0.87903 0.00000 Inf
20 0.37032 -0.37032 0.00000 Inf
21 cero -Inf 0.00000 0.37032

RHS Sensitivity Ranges


Con. Mul. pi Abajo Actual Arriba
--------------------------------------------------------------------------
1 -2.70319 93.56292 100.00000 100.76053
2 2.65656 0.00000 1.00000 11.79742
3 0.00000 -Inf 1.10000 1.58885
4 5.05678 3.28699 5.00000 17.90046
5 0.91981 0.00000 5.00000 8.26652
6 10.97725 42.69057 43.00000 46.00966
7 0.00000 -Inf 70.00000 90.25340
8 1.73054 35.16751 45.00000 272.92853
9 0.00000 -Inf 16.00000 23.40172
10 3.31857 9.16086 14.00000 14.41182
11 0.87903 33.35875 35.00000 50.41898
12 0.37032 11.39468 19.00000 24.00000
13 0.00000 19.00000 24.00000 Inf
>>

Cuadro 15.14
15.3 El algoritmo dual del Símplex j 373

NAME Vitaminas SOJA-GRA PROTEINA 0.5 RIBOFLA. 0.12


ROWS SOJA-GRA NIACINA 0.045 ACI.PAN. 0.06
N OBJETIVO SOJA-GRA FOSFORO 0.06 CALCIO 0.02
E CAN.TOT. MINERAL. OBJETIVO 1.13 CAN.TOT. 1.0
G ALFALFA MINERAL. FOSFORO 0.26 CALCIO 3.0
G VITAMINA MINERAL. SAL1 0.9 SAL2 0.9
G FAC.CRE. SAL OBJETIVO 1.0 CAN.TOT. 1.0
G PESCADO SAL SAL1 10.0 SAL2 10.0
G PROTEINA ALFALFA OBJETIVO 2.26 CAN.TOT. 1.0
G RIBOFLA. ALFALFA ALFALFA 1.0 PROTEINA 0.17
G NIACINA ALFALFA RIBOFLA. 0.7 NIACINA 0.14
G ACI.PAN. ALFALFA ACI.PAN. 0.14 FOSFORO 0.02
G FOSFORO ALFALFA CALCIO 0.15
G CALCIO VITAMINA OBJETIVO 35.72 CAN.TOT. 1.0
G SAL1 VITAMINA VITAMINA 1.0 PROTEINA 0.25
L SAL2 VITAMINA RIBOFLA. 41.6 NIACINA 20.4
COLUMNS VITAMINA ACI.PAN. 9.0 FOSFORO 0.1
CARNE OBJETIVO 5.8 CAN.TOT. 1.0 VITAMINA CALCIO 0.05
CARNE PROTEINA 0.55 RIBOFLA. 0.26 FAC.CRE. OBJETIVO 6.0 CAN.TOT. 1.0
CARNE NIACINA 0.23 ACI.PAN. 0.02 FAC.CRE. FAC.CRE. 1.0 PROTEINA 0.25
CARNE FOSFORO 0.4 CALCIO 0.8 FAC.CRE. RIBOFLA. 2.0 NIACINA 0.4
CARNE SAL1 0.1 SAL2 0.1 FAC.CRE. ACI.PAN. 0.4 FOSFORO 0.05
PESCADO OBJETIVO 7.0 CAN.TOT. 1.0 FAC.CRE. CALCIO 0.05
PESCADO PESCADO 1.0 PROTEINA 0.63 RHS
PESCADO RIBOFLA. 0.2 NIACINA 0.25 RHS2 CAN.TOT. 100.0 NIACINA 45.0
PESCADO ACI.PAN. 0.04 FOSFORO 0.3 RHS2 ALFALFA 1.0 ACI.PAN. 16.0
PESCADO CALCIO 0.5 RHS2 VITAMINA 1.1 FOSFORO 14.0
SOJA-HAR OBJETIVO 2.63 CAN.TOT. 1.0 RHS2 FAC.CRE. 5.0 CALCIO 35.0
SOJA-HAR PROTEINA 0.45 RIBOFLA. 0.13 RHS2 PESCADO 5.0 SAL1 19.0
SOJA-HAR NIACINA 0.09 ACI.PAN. 0.055 RHS2 PROTEINA 43.0 SAL2 24.0
SOJA-HAR FOSFORO 0.065 CALCIO 0.025 RHS2 RIBOFLA. 70.0
SOJA-GRA OBJETIVO 3.08 CAN.TOT. 1.0 ENDATA

Cuadro 15.15

>> [fobj niters x] = Rsimplex_1(’VITAM_dc.mps’)


1 archivo(s) copiado(s).
NAME done ROWS done COLUMNS done RHS done RANGES done BOUNDS done reading done mps2mat
[m n]=[13 21]. Tiempo CPU: 0.0624; fun. obj.= 3.963782645622545e+002 niters = 40
x = 0
0.488850287055962 5.000000000000000
0 15.967948585632787
0 5.000000000000000
0 58.430071834554020
20.253399923625853 5.913766761177310
0.000000000000000 5.889057162017851
4.527491511787425 1.210305369562065
0 1.000000000000000
0 1.588850287055962
0 5.000000000000000

Cuadro 15.16

>> [sol fobj pi cr iter]= PL_pd_simplex_1([],[],[],[],’VITAM_dc.mps’) sol=15.9679 0


NAME done ROWS done COLUMNS done RHS done RANGES done BOUNDS done 5.0000 0
reading done mps2mat doneSTATUS = 0 58.4301 0
Primal-bigM 5.9138 0
It. Sale B Entra B Cos. red. fobj 5.8891 0
1 24 8 -305308.280000 1568359.292000 1.2103 0
2 28 11 -301148.280000 1136218.492000 1.0000 0
3 33 6 -87359.000000 982559.105769 1.5889 0
4 32 5 -17346.160000 750387.460697 5.0000 0
5 26 2 -11962.734981 672947.609936 0 0
6 23 7 -7879.097766 629741.195032 0.4889 0
7 31 13 -7802.734981 586419.693933 0 0
8 27 18 -26294.839954 269939.908699 0 0
9 5 14 -6553.956082 165687.133822 0 fobj = 396.3783
10 29 19 -9507.714478 155691.598701 20.2534 pi =
11 22 16 -27116.168354 46733.747778 0 Columns 1 through 9
. 4.5275 -2.7032 2.6566 0 5.0568 0.9198 10.9772 -0.0000 1.7305 0
. 0 Columns 10 through 13
25 13 18 -3.977266 403.209734 0 3.3186 0.8790 0.3703 0
26 20 21 -0.550016 400.494998 0 cr=10.9772 0.9198 3.3186 2.6566 5.0568 1.7305 0.8790 0.3703
27 18 4 -0.231097 399.013320 5.0000 iter = 27

Cuadro 15.17
374 j Capítulo 15. Dualidad en Programación Lineal. Métodos de puntos interiores

>> lb=zeros(1,21); 0
>> options = optimset(’LargeScale’, ’off’, ’Simplex’, ’on’, ’Display’, ’Iter’) -0.0000
>> [x,fval,exitflag,output,lambda]=linprog(cv,[],[],Av_d,bv,lb,[],[],options) 0
Phase 1: Compute initial basic feasible point. 5.0000
Iter Infeasibility fval = 396.3783
0 378.1 exitflag = 1
1 297.36 output = iterations: 10
2 255.173 algorithm: ’medium scale: simplex’
3 215.273 cgiterations: []
4 166.74 message: ’Optimization terminated.’
5 152.354 lambda =
6 150.459 ineqlin: [0x1 double]
7 80.7105 eqlin: [13x1 double]
8 39.7026 upper: [21x1 double]
9 37.6039 lower: [21x1 double]
10 35.2884 >> lambda.eqlin
11 11.1807 ans =
12 6.17907 2.7032
13 3.78533 -2.6566
14 0.34 0
15 -0 -5.0568
Phase 2: Minimize using simplex. -0.9198
Iter Objective Dual Infeasibility -10.9772
f’*x A’*y+z-w-f 0
0 708.542 9.77527 -1.7305
1 602.242 77.2953 0
2 570.823 7.28754 -3.3186
3 567.359 8.73213 -0.8790
4 548.379 3.1832 -0.3703
5 442.335 5.6131 0
6 436.35 3.29995 >> lambda.lower
7 403.21 4.08198 ans =
8 400.495 0.596593 0
9 397.745 0.231097 0
10 396.378 0 0
Optimization terminated. 0
x = 15.9679 0
58.4301 0
5.9138 0
5.8891 0
1.2103 0
1.0000 2.6566
1.5889 0
5.0000 5.0568
5.0000 0.9198
0 10.9772
0.4889 0
0 1.7305
0 0
0 3.3186
20.2534 0.8790
0 0.3703
7.4017 0

Cuadro 15.18

15.4 Métodos de punto interior


Han tenido un desarrollo espectacular en los últimos veinte años a raíz de la publicación en 1984 de un innovador paper
de Narendra Krishna Karmarkar, India 1957, entonces en los laboratorios Bell de EE.UU.

Karmarkar

Basan su estrategia en la búsqueda del óptimo a través de caminos que recorren la zona interior de la región factible;
de ahí su nombre. Los más eficientes aplican en sucesivas etapas el método de Newton-Raphson al sistema de ecuaciones
15.4 Métodos de punto interior j 375

que resulta de aplicar las condiciones KKT al problema. Los desarrollos algorítmicos a que han dado lugar han hecho
converger en la práctica la Programación Lineal y la No Lineal.

Mediante un procedimiento iterativo de dirección de descenso, desde un punto interior de la región factible
obtenido de la resolución por Newton-Raphson del sistema de ecuaciones no lineales que definen las
condiciones KKT del problema, se obtienen direcciones que progresen a nuevos puntos interiores que se
acerquen al óptimo lo más posible.

15.4.1 Formulación del procedimiento general


Consideremos la formulación más completa del problema primal de programación lineal

minimizar c T x
sujeta a Ax D b
0x u

donde c; x; u 2 Rn ; b 2 Rm y A 2 Rmn . Si los límites inferiores de las variables no son cero, se pueden escalar para
que así lo sean. El dual de Wolfe de ese problema es

max. L.x; y; z; w/
s. a rx L.x; y; z; w/ D 0
z; w  0:

Su función de Lagrange L.; ; ; / D c T x y T .Ax b/ wT .u x/ zT x.


El gradiente de esta función de Lagrange con respecto a x es c A T y C w z. El dual es, ya simplificado,

maximizar y T b wT u
sujeta a A T y Cw zCc D 0
w; z  0

donde y 2 Rm ; w 2 Rn ; z 2 Rn .
Las condiciones de KKT del problema primal y dual, incorporando un vector de variables de holgura s, son

AT y C w zCc D 0
Ax D b
xCs D u
xi zi D 0; i D 1; : : : ; n
si wi D 0; i D 1; : : : ; n
x; z; s; w  0:

El cuarto y quinto conjunto de igualdades son no lineales. Son las condiciones de complementariedad de holguras. Las
condiciones de no negatividad de las variables son las que complican bastante la mecánica de los métodos de puntos
interiores.
Para resolver este sistema de ecuaciones, dado que es no lineal, se puede usar Newton-Raphson, siempre que desde
el principio se cumpliesen estrictamente y, de un punto a otro del proceso, las condiciones de no negatividad de las
variables.
También hay que tener cuidado en el proceso si la ecuación sw D 0 se linealiza, como se hace en Newton-Raphson,
pues en ese caso se tiene que
sw C sw C ws D 0:
Si una variable, digamos wi , es cero, la ecuación de Newton queda si wi D 0, por lo que el paso wi D 0.
Desde ese momento esa variable quedaría bloqueada en cero en todo el proceso, como esquematiza la figura 15.2,
lo que es muy perjudicial para el algoritmo pues éste no podría recuperarla para ayudar a mejorar, junto con las
demás, el camino al óptimo.
14.1. PRIMAL-DUAL METHODS 401
376 j Capítulo 15. Dualidad en Programación Lineal. Métodos de puntos interiores

x2 s2
1 iteraciones 0

2
central path C

x1 s1

Figura 15.2: Posible efecto no deseado de bloqueo de alguna variable de holgura en el camino al óptimo en el método de
Figure 14.2 Iterates of Algorithm 14.2, plotted in (xs) space.
punto interior

(14.3a), (14.3b), and (14.3d).) In the unusual geometry of Figure 14.2, the search directions
Es crucial pues, en todo el proceso
(x , λiterativo, mantener todasthan las variables estrictamente positivas, aunque sea muy
k k k
, s ) transform to curves rather straight lines.
As Figure 14.2 shows (and the analysis confirms), the lower bound σmin on the
poco, digamos una cantidad . Es igualmente importante que todas las holguras complementarias
centering parameter ensures that each search direction starts out by moving away from the si wi converjan a
cero al mismo ritmo: boundary of N−∞ (γ ) and into the relative interior of this neighborhood. That is, small
steps along the search direction
k improve the centrality. Larger values of α take us outside
sik wikagain,
the neighborhood
D !0 cuando k ! 1:
since the error in approximating the nonlinear system (14.15) by
the linear step equations (14.16) becomes more pronounced as α increases. Still, we are
Con estos propósitos se modifica cada condición
guaranteed si wi haciendo
that a certain minimum step can bestaken D
i wi before 0 para
we reach the tratar
boundaryde of “centrar” algo la trayectoria
a seguir en el proceso, evitando Nasí
−∞ (γ acercarse a the
), as we show in esos valores
analysis below. cero de las variables. Es lo que esquematiza la indicada
The analysis of Algorithm 14.2 appears in the next few pages. With judicious choices
figura 15.2 para x1 s1 y x2 s2 . of σk , this algorithm is fairly efficient in practice. With a few more modifications, it becomes
En cada punto del proceso se hace
the basis of a truly competitive method, as we discuss in Section 14.2.
Our aim in the analysis below is to show that given some small tolerance ǫ > 0, the
algorithm requires O(n| log ǫ|) iterations to reduce theTduality measure
xN zN C sN T w N by a factor kof ǫ,k that
ka D k k , λk , s k ) for which µk ≤ ǫµ
g; donde g D 0 . For small ǫ, the; point (x , λ , s )
k
is, to identify point (x
2n
satisfies the primal-dual optimality conditions except for perturbations of about ǫ in the
right-hand side of (14.3c), so it is usually very close to a primal-dual solution of the
siendo el numerador la denominada brecha o gap de dualidad, y el denominador
original linear program. The O(n| log ǫ|) estimate is a worst-case bound on the los
grupos de n variables quedos
number
of iterationskrequired; on practical problems, the number of iterations required appears
contribuyen al gap.  es un porcentaje,  2 .0; 1/  0;9995, de lo que se desea reducir el gap en cada iteración.
En cada etapa del proceso iterativo los métodos de puntos interiores resuelven ligeras variantes del sistema no lineal
KKT 8̂
ˆ AT y C z w D c
 La fórmula más aceptada –de Mehrotra– ˆ
ˆ de combinar estas dos
ˆ
< Ax Db
opciones sobre qué dirección de avance seguir, consiste en llevar a
f .x; y; z; s; w/  xCs D u
cabo dos pasosx;z;s;w> ˆ
en una0etapa, denominados
ˆ predictor y
ˆ
ˆ X Z D e
corrector: :̂
W S D e
 Predictor: se resuelve la aproximación lineal: la dirección de
donde X , S , Z y W son matrices
descenso diagonales con coeficientes
puro de Newton, xj , sj afín,
o de escalado , zj ycon
wj, respectivamente,
D 0. y e es el vector de
coeficientes 1.
De estas resoluciones, si  Corrector y 1centrado: para compensar camino
la linealización
centralanterior

¤4000,C se
H A P va
T E R obteniendo elI N denominado
4. INTERIOR-PO T METHODS —central path— hacia el óptimo,
introduciendo más información de segundo
evitándose así caer en valores cero de las variables. Algo como lo que esquematiza orden y centrar en 15.3.
la figura
torno al camino central (central path), mediante el parámetro .
central path neighborhood
Camino central

Figura 15.3: Camino central hacia el óptimo en los métodos de punto interior 62/72

Figure 14.1 Central path, projected into space of primal variables x, showing a
typical neighborhood N .
A este planteamiento —visión moderna— del procedimiento de resolución se llega también mediante otro más clásico,
a b c 1 2 3

g
si en el problema original se incorporan las condiciones de las variables xi y si de no acercarse a cero mediante un
d e f 9 4 6 5
Here and in later analysis, we use the notation
h i j 10 8 7

def
(x k (α), λk (α), s k (α))  (x k , λk , s k ) + α(x k , λk , s k ), (14.19a)
def
µk (α)  x k (α)T s k (α)/n. (14.19b)

Algorithm 14.2 (Long-Step Path-Following).


Given γ , σmin , σmax with γ ∈ (0, 1), 0 < σmin ≤ σmax < 1,
and (x 0 , λ0 , s 0 ) ∈ N−∞ (γ );
for k  0, 1, 2, . . .
Choose σk ∈ [σmin , σmax ];
Solve (14.10) to obtain (x k , λk , s k );
Choose αk as the largest value of α in [0, 1] such that
15.4 Métodos de punto interior j 377

término en la función objetivo que se haga muy grande —barrera— cuando esas variables estén muy próximas a cero.
Se emplea su logaritmo, por ejemplo.
Así, el problema que se plantea es
0 1
n
X n
X
minimizar c T x @ log xj C log sj A
j D1 j D1

sujeta a Ax D b
xCs D u
x; s > 0:

Problema denominado de barrera logarítmica del primal, para un escalar . La función de Lagrange de este problema
es, simplificando la notación,

cT x  log x  log s y T .Ax b/ wT .x C s u/ :


1. THE BARRIER PROBLEM 279

Las condiciones KKT del mismo


Ax D b
AT y C z wCc D 0
xCs D u
XZe D e
SW e D e;

donde z D X 1 e; w D S 1 e. Estas condiciones son casi idénticas a las del planteamiento anterior.
Cuando  ! 1, las soluciones del problema de barrera son el(a)
centro
µ= analítico de la región(b)
factible
µ=1 del problema
8

1. THE BARRIER PROBLEM 279


primal (como se ve en la figura 15.4).

µ=0.01
µ=1

µ=
8

µ= µ=1 µ=0.01
8

camino central
Figura 15.4: Evolución del problema de barrera logarítmica, y su solución, para distintos valores de 

µ=0.01
El algoritmo reduce paso a paso  según se aproxima FelIGURE
proceso iterativo
16.1. Partsal(a)óptimo del(c)
through primal.
show Al !
level sets0,oflathe
solución
barrier
del problema barrera converge al centro analítico
µ=1
del conjunto de las soluciones óptimas del primal (camino central).
function for three values of µ. For each value of µ, four level sets
are shown. The maximum value of the barrier function is attained
inside the innermost level set. The drawing in part (d) shows the
µ=
8

15.4.2 Resolución numérica y algoritmos central path.


62/76

Volviendo a la resolución del sistema de ecuaciones f .x; y; z; s; w/ D 0, el nuevo punto hacia la solución de ese
sistema  D Œx; y; z; s; wT , saldrá de resolver mediante Newton-Raphson el modelo de desarrollo de Taylor de primer
µ=0.01 3 It is instructive to have in mind a geometric picture of the barrier function. Recall
orden (c)
a b c 1 2(d) camino central
g
that, 
for  
problems expressed  in standard form, the set of feasible solutions is a poly-
C f 0 with
f . k /hedron
5 k
 kC1face being
k
d e f 9 4 6
 each Dcharacterized
0; by the property that one of the variables
j
h i 10 8
is zero.
7
Hence,
F IGURE 16.1. Parts (a) through (c) show level sets of the barrier the barrier function is minus infinity on each face of the polyhedron.
Furthermore, it kis finite in the interior of the polyhedron, 
andk ity approaches
f 0  k laminus in-
1
function for three values
es decir, la ecuación v D f k of µ. 0 Fork each valuek of µ, four level sets
f . /; siendo v la dirección de Newton en la iteración
finity as the boundary is approached. Figure 16.1 shows some level sets for the barrier
matrizarejacobiana
shown. The maximum value of the barrier function is attained
del sistema.
function for
inside the innermost level set. The drawing in part (d) shows thea specific problem and a few different choices of µ. Notice that, for each
central path. µ, the maximum is attained at an interior point, and as µ gets closer to zero this interior
point moves closer to the optimal solution of the original linear programming problem
(which is at the top vertex). Viewed as a function of µ, the set of optimal solutions
to the barrier problems forms a path through the interior of the polyhedron of feasible
It is instructive to have in mind a geometric picture of the barrier function. Recall
that, for problems expressed in standard form, the set of feasible solutions is a poly-
hedron with each face being characterized by the property that one of the variables
378 j Capítulo 15. Dualidad en Programación Lineal. Métodos de puntos interiores

La aproximación lineal del sistema,


2 32 3 2 3
A 0 0 0 0 x rb
6 0 0 A T I I 7 6 s 7 6 rc 7 rb D b Ax
6 76 7 6 7
6 76 7 6 7
6 I I 0 0 0 7 6 y 7 D 6 ru 7 donde rc D c AT y z C w ;
6 76 7 6 7
4 Z 0 0 X 0 5 4 z 5 4 e X Z e 5 ru D u x s:
0 W 0 0 S w e S W e;

y su resolución, determinará el nuevo punto hacia donde moverse.


Esa dirección se podría mejorar considerablemente ampliando el modelo de desarrollo de Taylor de
f .x; y; z; s; w/ D 0 a segundo orden de derivadas, es decir,
1
fi .v/ C rf .v/T v C vT r 2 f .v/v D 0:
2
 
La matriz Hessiana de las condiciones de complementariedad sería 01 10 y la de las demás cero. La dirección de avance
saldría en este caso de resolver
2 32 3 2 3
A 0 0 0 0 x rb
6 0 0 A T I I 7 6 s 7 6 rc 7
6 76 7 6 7
6 76 7 6 7
6 I I 0 0 0 7 6 y 7 D 6 ru 7:
6 76 7 6 7
4 Z 0 0 X 0 5 4 z 5 4 e X Z e X Z e 5
0 W 0 0 S w e S W e S W e

Sanjay Mehrotra, India 1963,

nal Research Journal, 2009, Volume 3 Goran Lesaja


Mehrotra
chosen in such a way that iterates stay in where x( ) = x k + d x , s( ) = s k + ds ,
e horn neighborhoods
x T ( )s( )
( )= .
)s( ) ( )e ( ), [0, }
] , (3.19) n

propuso cómo actuar con estas 7. dos direcciones:


Update x k+1 combinarlas
= x k + k d x , y en= dos k d y , s los
y + pasos, = sdenominados predictor y corrector, en
k+1 k k+1 k
+ k ds .

k una mismaT etapa


x ( )s( ) . del (3.20)
proceso iterativo.
8. La idea intuitiva se esquematiza
Set k = k + 1 and go to step 3. en la figura 15.5.
( ) = s + ds , ( ) =
El Predictor:
n se usa la dirección de la aproximación lineal del paso de Newton (también denominada de escalado
The graphical representation of the IPM algorithm is
afín) con(NM)
eral Newton’s Method  D 0. is not given in Fig. (1).
lly convergent, by using the above
convergence is guaranteed. Moreover, fast
(quadratic or at least superlinear) is
he first step of the barrier algorithm BM
by calculating the new iterates
y k +1 = y k + k
d y , s k +1 = s k + k
ds . (3.21)

p of BM is the calculation of k+1 using


in (3.20). It can be shown that the
ecreasing at least at a constant rate which
ving that the global convergence of the
mial in the number of variables and chosen
let us mention again that BM is an
m. An iterate (x k , y k , s k ) is an -
al solution if Figura 15.5: Fig.
Trayectoria
(1). del camino central y los pasos predictor y corrector de Mehrotra
AT y k + s k c D , (x k )T s k G
(3.22) The above algorithm has favorable convergence
El Corrector y de centrado: para mejorar
properties. lo perdido
For certain con
choice of thelaparameters
linealización se introduce
and using the la información de segundo
, G )>0. orden y la dirección se centra hacia el camino
neighborhood N 2 ( ) , central.
the following convergence results can
int Algorithm can now be summarized as be obtained.
• Global convergence: The algorithm IPM will
achieve an approximate optimal solution in
O ( n log1 ) iterations, where = min { P , D , G }.
(0,1) and ( P , D , G ) > 0 . Choose • Local convergence: For a sufficiently large k there
0 0 exists a constant > 0 such that
such that (x , s ) > 0 and k+1 k+1 k k 2
15.4 Métodos de punto interior j 379

Si en la aproximación lineal de Newton anterior se despejan

s D u x s x de la tercera
z D X 1 . e XZe Z x/ de la cuarta
w D S 1 . e SW e W ru C W x/ de la quinta

el sistema se puede expresar en función de x y y como sigue:


    
D 1 AT x r X 1 . e X Z e/ C S 1
. e SW e W ru /
D c ;
A 0 y rb
 1
donde D D X 1 Z C S 1 W .
Este sistema, de grandes dimensiones normalmente, es la clave del algoritmo. Toda la familia de métodos de punto
interior lo resuelven con diversas variantes más o menos optimizadas.
Se puede reducir un poco más eliminando x sin más que multiplicar el primer subconjunto de ecuaciones por AD
y sumar el segundo; resultan las ecuaciones normales que siguen

ADA T y D rb C AD rc X 1 . e X Z e/

CS 1 . e S W e W ru / :

Como la matriz ADA T es simétrica y definida positiva o semidefinida positiva, se puede factorizar por Cholesky, aunque
hay que cuidar mucho cómo se hace.
Este procedimiento que se lista a continuación sigue todo lo apuntado (con rxz D  e X Z e y rsw D  e S W e).
  1
1 1W
1. Formar la matriz D D X Z CS
2. Hacer rc rc X 1 rxz C S 1 .r  sw W ru /
3. Resolver mediante Cholesky ADA T y D rb C ADrc
4. Calcular x D D.A T y rc /
z D X 1 . Z x C rxz /
s D ru x
w D S 1 . W s C rsw /

Una iteración se completaría determinando las amplitudes de paso, ˛P y ˛D , en “predictor” y “corrector”, adaptando
 y comprobando óptimo. El algoritmo completo es el de la tabla del cuadro 15.19.
El listado de una variante compacta de este algoritmo en código de M ATLAB, en el que se leen los datos de cualquier
fichero (incluido .MPS), es el del cuadro 15.20.
Si se resuelve con este algoritmo un problema de programación lineal a través de una sesión de M ATLAB, el resultado
es lo que detalla el cuadro 15.21.
Si lo utilizamos para acometer de nuevo el problema de la “Dieta”, se obtiene el cuadro 15.22. El mismo problema
leído desde su fuente en .MPS es lo que lista el cuadro 15.23.
En el cuadro 15.24 se presenta el resultado de tratar un problema muy muy grande de la biblioteca de Internet Netlib:
MarosR7, con 3,136 condiciones, 9,408 variables y nz D 151:120. Se hace con el código presentado, con el código
propio PLip_1 de la página 669 y con LIPSOL, el original de M ATLAB de hace unos años.

Referencias, fuentes y lecturas complementarias


Además de las referencias comentadas en el capítulo anterior, la parte teórica de la dualidad está muy bien recogida en
Fletcher [1987], Simmonard [1972] y Shapiro [1979]. Para un problema general de optimización sometido a restriccio-
nes, en Fletcher [1987]. Lo expuesto sigue a Nemhauser, Rinnooy Kan y Todd [1989], con muchas mejoras que he ido
encontrando en muchísimas referencias, trabajos y manuales en Internet. Me gusta especialmente los trabajos de Van-
derbei [1995] y [1996], aunque tiene otros muchos muy interesantes. Lo referente al lema de Farkas se puede también
seguir en Bazaraa, Jarvis y Sherali [1990].
380 j Capítulo 15. Dualidad en Programación Lineal. Métodos de puntos interiores

Dado Œx 0 ; y 0 ; z0 ; w0 ; s0  con Œx 0 ; z0 ; w0 ; s0  > 0.


Paso 1 – Calcular la dirección predictor o de escalado afín:
2 32 3 2 3
A 0 0 0 0 xaf rb
60 0 AT I I saf
7 6 y 7 6 rc
7
4I I 0 0 0 5 4 af 5D4 ru 5
Z 0 0 X 0 zaf XZe
0 W 0 0 S waf SW e
˚
˛af;P D Kınf ˚˛ 2 Œ0; 1jŒx; s C ˛Œxaf ; saf   0 ;
Hacer
˛af;D D Kınf h˛ 2 Œ0; 1jŒz; w C ˛Œzaf ; waf   0 ;
1
T  T i
af D 2n x C ˛af;P x z C ˛af;D z C s C ˛af;P s w C ˛af;D w
y
 3
af
 D :

Paso 2 – Calcular la dirección corrector y centrado:
2 32 3 2 3
A 0 0 0 0 xc 0
60 0 AT I I sc
7 6 y 7 6 0
7
4I I 0 0 0 54 c 5D4 0 5
Z 0 0 X 0 zc e X af Z af e
0 W 0 0 S wc e Saf W af e

Paso 3 – Obtener la dirección de la iteración: Œx; y; z; w; s D


Œxaf ; yaf ; zaf ; waf ; saf  C Œxc ; yc ; zc ; wc ; sc : Hacer
˛max;P D Kınf f˛ 2 Œ0; 1jŒx; s C ˛Œx; s  0g
y ˛P D P ˛max;P ; ˛D D D ˛max;D :
˛max;D D Kınf f˛ 2 Œ0; 1jŒz; w C ˛Œz; w  0g

Paso 4 – Terminar iteración y comprobar óptimo. Hacer Œx kC1 ; skC1  D Œx k ; sk  C ˛P Œx; s y
Œy kC1 ; zkC1 ; wkC1  D Œy k ; zk ; wk  C ˛D Œy; z; w.
Comprobar condiciones de óptimo. Si no, seguir.

Cuadro 15.19: Algoritmo predictor-corrector de punto interior de Mehrotra

En Dantzig [1987] —relatados por su autor— se puede encontrar una interesante y detallada relación de los avatares
históricos del método simplex y cómo desembocaron en su publicación en 1947. Para una excelente y pormenorizada
relación de la historia de la programación lineal y su contexto técnico e histórico recomendamos consultar Schrijver
[1986].
El procedimiento actual de más éxito comercial y académico que implementa las técnicas de punto interior mediante
puntos interiores es IPOPT. Yo he tratado de reproducirlo a pequeña escala en todas sus ramificaciones, en especial las
de Programación Lineal, sin éxito por su complejidad y por la cantidad de procedimiento heurísticos que emplea. Ver
también https://en.wikipedia.org/wiki/IPOPT
Creo que M ATLAB es el software ideal para profundizar en los métodos de puntos interiores para Programación Lineal
y todas sus variantes más eficaces y modernas. Como decía en el capítulo anterior, me gusta especialmente cómo explica
la Programación Lineal en su parte más computacional y próxima a la Programación No Lineal Biegler [2010]. Para
implementar una revisión bastante completa del algoritmo de Mehrotra, PLip_1, he utilizado como base una versión,
L IPSOL, del software que usa M ATLAB. Estoy muy satisfecho por sus prestaciones, rapidez y sencillez.
El software de OPTI, http://www.i2c2.aut.ac.nz/Wiki/OPTI/, también cuenta con diversas formas de métodos de
puntos interiores para resolver problemas de Programación Lineal y No Lineal.
15.4 Métodos de punto interior j 381

function [x y z A b c n0]=ProgLineal_InP_MPS_sc(file)
% Resuelve min c’x s.t. Ax=b, x>=0, cuyo dual es max b’y s.t. A’y+z=c, z>=0. Interior Point.
eval([’!copy ’ file ’ ’ ’D:\MATLAB2010b\work\tmp\in.mps’]); LIPSO = ’D:\MATLAB2010b\work’;
ar=mps2mat(LIPSO); fprintf(’\n’); load D:\MATLAB2010b\work\tmp\default;
[m,n]=size(A); x=sqrt(n)*ones(n,1); y=zeros(m,1); % Sol. inicial no negativa en x
z = x; bc = 1+max(norm(b),norm(c)); t0=cputime;
p = symamd(A*A’); % Reordenación grado mínimo
fprintf(’\n No fac. No fac. Brecha Error’);
fprintf(’\n primal dual dual relati.\n’);
fprintf(’ Iter A*x-b A’’*y+z-c x’’*z total\n’);
fprintf(’ ---------------------------------------------------\n’);
for iter = 1:100
Rd=A’*y+z-c; rrd=norm(Rd); % No factibilidad dual
Rp=A*x-b; rrp=norm(Rp); % No factibilidad priaml
Rc=x.*z; % No factibilidad complementariedad
residuo=norm([Rd;Rp;Rc])/bc;
gap=mean(Rc); % Brecha dual
fprintf(’%5i %15.2e %10.2e %11.2e %10.2e\n’,iter,rrd,rrp,gap,residuo);
if residuo<5.e-10, break, end
Rc=Rc-min(.1,100*gap)*gap;
d=min(5.e+15,x./z);
B=A*sparse(1:n,1:n,d)*A’;
R=cholinc(sparse(B(p,p)),’inf’); % Cholesky incompleto
t1=x.*Rd - Rc; t2=-(Rp+A*(t1./z));
dy=zeros(m,1);
dy(p)=R\(R’\t2(p)); % Resuelve sistema
dx=(x.*(A’*dy)+t1)./z;
dz=-(z.*dx+Rc)./x;
tau=max(.9995,1-gap);
ap=-1/min(min(dx./x),-1); % Amplitud de paso primal
ad=-1/min(min(dz./z),-1); % Amplitud de paso dual
ap=tau*ap; ad=tau*ad;
x=x+ap*dx; z=z+ad*dz; y=y+ad*dy;
end
fprintf(’Termina bien!\t[m n] = [%g %g]\tCPU = %g\n’,m,n,cputime-t0);
f=c’*x; fprintf(’Fun. Obje.= %18.14f\n’,f);
end

Cuadro 15.20: El algoritmo de punto interior primal dual para resolver problemas de Programación Lineal

>> cEje1=[-1 -3 0 0]; AEje1=[2 3 1 0;-1 1 0 1]; bEje1=[6;1];


>> IntPointLP_1(AEje1,bEje1,cEje1’)
iter 1: gap=4.00e+000, error tot. rel.=1.69e+000 obj=-8.000000e+000
iter 2: gap=1.12e+000, error tot. rel.=3.16e-001 obj=-3.714339e+000
iter 3: gap=3.00e-001, error tot. rel.=9.79e-002 obj=-4.423752e+000
iter 4: gap=6.71e-002, error tot. rel.=2.38e-002 obj=-5.315741e+000
iter 5: gap=6.74e-003, error tot. rel.=2.21e-003 obj=-5.380112e+000
iter 6: gap=6.77e-004, error tot. rel.=1.91e-004 obj=-5.398613e+000
iter 7: gap=4.62e-005, error tot. rel.=1.30e-005 obj=-5.399908e+000
iter 8: gap=2.15e-007, error tot. rel.=6.08e-008 obj=-5.400000e+000
min. x1 3x2 iter 9: gap=4.68e-012, error tot. rel.=1.32e-012 obj=-5.400000e+000
Termina! [m n] = [2 4] CPU = 0.0312002
s. a 2x1 C 3x2 C x3 D6 x =
0.6000
x1 C x2 C x4 D 1 1.6000
x1 ; x2 ; x3 ; x4  0: 0.0000
0.0000
y =
-0.8000
-0.6000
z =
0.0000
0.0000
0.8000
0.6000
Fun, Obj= -5.400000

Cuadro 15.21
382 j Capítulo 15. Dualidad en Programación Lineal. Métodos de puntos interiores

0.000000000073392
x =
1.730542784359990
15.967948585969863
0.000000000200754
58.430071825246408
3.318574196209014
5.913766767060357
0.879025638141999
5.889057162222607
0.370319363423242
1.210305369941197
-0.000000000295456
>> load vitaminas 1.000000000555506
z =
>> Av_d=full(Av); 1.588850287092843
0.000000000093028
>> IntPointLP_1(Av_d,bv,cv’) 5.000000000293239
0.000000000025392
5.000000001617829
iter 1: gap=2.10e+001, error tot. rel.=1.32e+00 obj= 2.961260e+2 0.000000000252844
0.000000000555506
iter 2: gap=1.27e+001, error tot. rel.=8.62e-01 obj= 3.454134e+2 0.000000000252264
0.488850287092842
iter 3: gap=7.00e+000, error tot. rel.=4.80e-01 obj= 3.635193e+2 0.000000001229760
0.000000000293247
iter 4: gap=2.47e+000, error tot. rel.=1.81e-01 obj= 3.884943e+2 0.000000001490820
0.000000001617851
0.000000000934941
iter 5: gap=6.83e-001, error tot. rel.=2.62e-02 obj= 4.007237e+2 0.000000000134912
0.000000000297167
iter 6: gap=1.63e-001, error tot. rel.=6.61e-03 obj= 3.974000e+2 20.253399926042366
0.000000000297698
iter 7: gap=1.93e-002, error tot. rel.=6.62e-04 obj= 3.965177e+2 0.000000000856644
2.656560069064640
7.401722257701704
iter 8: gap=1.94e-003, error tot. rel.=6.04e-05 obj= 3.963934e+2 0.000000003039794
0.000000000450807
iter 9: gap=1.95e-004, error tot. rel.=6.06e-06 obj= 3.963798e+2 5.056784405320646
0.000000001677626
iter 10: gap=3.83e-006, error tot. rel.=1.19e-07 obj= 3.963783e+2 0.919806312736561
0.000000004009333
iter 11: gap=1.49e-009, error tot. rel.=4.62e-11 obj= 3.963783e+2 10.977248484804672
4.999999995990669
0.000000000073392
Termina![m n] = [13 21] CPU = 0.109201 y =
1.730542784359990
-2.703193632507613
0.000000000200754
2.656560069064640
3.318574196209014
0.000000003039794
0.879025638141999
5.056784405320645
0.370319363423242
0.919806312736561
0.000000000295456
10.977248484804672
Fun, Obj= 396.378265

Cuadro 15.22

>> [x y z]=ProgLineal_InP_MPS_sc(’vitam_dc.mps’) 0.919806312588121


1 archivo(s) copiado(s). 10.977248487287513
NAME done x = 0.000000000034520
ROWS done 0.000000000261274 1.730542784589703
COLUMNS done 0.488850287073326 0.000000000154399
RHS done 0.000000000137922 3.318574194419995
0.000000000760845 0.879025638629259
RANGES done
0.000000000063454 0.370319363433166
BOUNDS done 20.253399924763229 -0.000000000138967
reading done 0.000000000402831 z =
mps2mat done 4.527491511994257 2.656560070409201
Status=0 0.000000000212124 0.000000001429759
No fac. No fac. Brecha Error 0.000000000788949 5.056784405939616
primal dual dual relati. 0.000000001885759 0.919806312588121
4.999999998114246 10.977248487287513
Iter A*x-b A’*y+z-c x’*z total
15.967948585791948 0.000000000034520
--------------------------------------------------- 5.000000000760850 1.730542784589703
1 3.56e+01 1.65e+02 2.10e+01 1.32e+00 58.430071830165744 0.000000000154399
2 2.74e+01 1.05e+02 1.27e+01 8.54e-01 5.913766763954222 3.318574194419995
3 1.52e+01 5.50e+01 6.86e+00 4.55e-01 5.889057162113923 0.879025638629259
4 2.69e+00 2.06e+01 2.34e+00 1.66e-01 1.210305369740400 0.370319363433166
5 1.34e-03 1.03e-02 4.39e-01 1.70e-02 1.000000000261274 0.000000000138967
1.588850287073329 0.000000000043755
6 4.10e-04 2.04e-03 1.46e-01 5.73e-03
5.000000000137925 0.000000000140021
7 2.05e-07 6.85e-05 1.60e-02 5.22e-04 y = 0.000000000011943
8 1.03e-10 3.43e-08 1.61e-03 5.00e-05 -2.703193633520408 0.000000000118924
9 5.55e-14 1.67e-11 1.61e-04 5.02e-06 2.656560070409201 0.000000000118652
10 7.67e-15 2.87e-12 2.63e-06 8.18e-08 0.000000001429759 0.000000000578415
11 2.60e-15 3.59e-12 6.99e-10 2.17e-11 5.056784405939616 0.000000000701204
Termina bien! [m n] = [13 21] CPU = 0.046875 0.000000000439747
Fun. Obje.= 396.37826456785990 0.000000000139772

Cuadro 15.23
15.4 Métodos de punto interior j 383

>> runlipsol(’marosr7’)
Running mps2mat ...
NAME done
ROWS done
>> ProgLineal_InP_MPS_sc(’marosr7.mps’); COLUMNS done
1 archivo(s) copiado(s). RHS done
NAME done ROWS done COLUMNS done RHS done RANGES done ... RANGES done
BOUNDS done
reading done
No fac. No fac. Brecha Error
mps2mat done
primal dual dual relati. Status=0mps2mat successful
Iter A*x-b A’*y+z-c x’*z total Loading tmp\default.mat ...
--------------------------------------------------- Preprocessing ...
1 9.34e+003 4.09e+005 9.41e+003 2.41e+000 (m=3136, n=9408)
2 9.24e+003 3.99e+005 9.10e+003 2.35e+000 Dense columns (nnz/m > 0.1): 0
3 9.03e+003 3.70e+005 8.93e+003 2.33e+000
<<<<< This is MIIP algorithm >>>>>
4 8.45e+003 3.37e+005 8.04e+003 2.12e+000
min-degree ordering ... Done. CPU seconds: 0.015625
5 7.47e+003 2.66e+005 6.73e+003 1.80e+000 calling symfct.mex* ... Done. CPU seconds: 0
6 5.78e+003 1.36e+005 5.06e+003 1.33e+000
7 2.99e+003 6.81e+001 2.71e+003 6.82e-001 Residuals: Primal Dual U-bounds Gap TR_error
8 9.40e+001 3.40e-002 2.29e+002 6.04e-002 ---------------------------------------------------------
9 4.62e+001 1.15e-003 1.13e+002 2.93e-002 Iter 0: 6.54e+05 1.01e+04 0.00e+00 4.15e+09 4.41e+05
10 2.56e+001 4.36e-004 6.43e+001 1.67e-002 Iter 1: 6.17e-10 2.80e+03 0.00e+00 1.08e+09 1.15e+05
Iter 2: 7.53e-09 7.37e+00 0.00e+00 3.04e+07 3.23e+03
11 1.68e+001 1.75e-004 3.97e+001 1.05e-002
Iter 3: 1.13e-09 6.24e-01 0.00e+00 5.70e+06 6.06e+02
12 8.07e+000 6.40e-005 2.02e+001 5.34e-003 Iter 4: 6.37e-10 2.29e-01 0.00e+00 2.24e+06 2.38e+02
13 4.69e+000 2.91e-005 1.17e+001 3.14e-003 Iter 5: 4.19e-10 6.35e-02 0.00e+00 9.35e+05 9.94e+01
14 2.43e+000 1.14e-005 6.15e+000 1.66e-003 Iter 6: 4.02e-10 1.21e-02 0.00e+00 3.85e+05 4.09e+01
15 1.55e+000 5.66e-006 3.84e+000 1.06e-003 Iter 7: 5.03e-10 1.96e-03 0.00e+00 1.39e+05 1.48e+01
16 7.76e-001 1.97e-006 1.92e+000 5.40e-004 Iter 8: 6.54e-10 3.68e-04 0.00e+00 4.47e+04 4.75e+00
17 4.03e-001 8.41e-007 1.04e+000 2.92e-004 Iter 9: 1.12e-09 1.01e-04 0.00e+00 1.63e+04 1.73e+00
Iter 10: 1.19e-09 2.09e-05 0.00e+00 3.95e+03 4.20e-01
18 1.60e-001 3.06e-007 4.63e-001 1.27e-004
Iter 11: 1.75e-09 2.04e-06 0.00e+00 7.28e+02 7.74e-02
19 5.96e-002 1.21e-007 2.05e-001 5.40e-005 Iter 12: 1.81e-09 2.49e-07 0.00e+00 2.42e+02 2.58e-02
20 1.76e-002 5.00e-008 8.44e-002 2.08e-005 Iter 13: 1.69e-09 1.77e-08 0.00e+00 2.63e+01 2.80e-03
21 4.67e-003 1.38e-008 2.85e-002 6.91e-006 Iter 14: 2.00e-09 1.99e-14 0.00e+00 1.43e-01 1.52e-05
22 1.45e-003 8.21e-009 1.33e-002 3.16e-006 Iter 15: 1.32e-09 3.51e-14 0.00e+00 7.14e-05 7.59e-09
23 2.95e-004 6.09e-009 2.97e-003 7.10e-007 MAROSR7
24 1.48e-007 9.15e-009 2.98e-004 6.96e-008 <* Converged! *>
Results (unprocessed) in results.mat
25 4.40e-011 3.02e-009 8.96e-006 2.09e-009
Solution xsol (processed) in solution.mat
26 1.66e-014 3.57e-009 8.10e-009 1.89e-012 Primal Obj = 1.4971851665e+06
Termina bien! [m n] = [3136 9408] CPU = 28.829 [m n] = [3136 9408], nnz(A) = 144848, nnz(L) = 1198243
Fun. Obje.= 1497185.16653047850000 CPU seconds: 0.48 ... loading
0.02 ... preprocessing
7.20 ... solving
0.00 ... postprocessing
7.70 ... total

>> PLip_1(’marosr7.mps’)
1 archivo(s) copiado(s).
NAME done, ROWS done, COLUMNS done, RHS done, RANGES done, BOUNDS done
reading done, mps2mat done, Status=0
Preprocesado ... (m=3136, n=9408)
<<<<< Alg_IP: Algoritmo de Punto Interior Predictor-Corrector>>>>>
Residuos: Primal Dual U-bounds d-Gap Err_rel_max
-----------------------------------------------------------------
Iter 0: 6.54e+05 1.01e+04 0.00e+00 4.149e+09 4.410e+05
Iter 1: 6.41e-10 2.80e+03 0.00e+00 1.079e+09 1.147e+05
Iter 2: 5.19e-09 7.37e+00 0.00e+00 3.038e+07 3.229e+03
Iter 3: 7.99e-10 6.24e-01 0.00e+00 5.704e+06 6.063e+02
Iter 4: 6.15e-10 2.29e-01 0.00e+00 2.241e+06 2.382e+02
Iter 5: 3.42e-10 6.35e-02 0.00e+00 9.351e+05 9.939e+01
Iter 6: 3.22e-10 1.21e-02 0.00e+00 3.845e+05 4.087e+01
Iter 7: 3.84e-10 1.96e-03 0.00e+00 1.392e+05 1.480e+01
Iter 8: 5.73e-10 3.68e-04 0.00e+00 4.469e+04 4.750e+00
Iter 9: 7.16e-10 1.01e-04 0.00e+00 1.628e+04 1.730e+00
Iter 10: 8.46e-10 2.09e-05 0.00e+00 3.950e+03 4.198e-01
Iter 11: 1.62e-09 2.04e-06 0.00e+00 7.279e+02 7.737e-02
Iter 12: 1.68e-09 2.49e-07 0.00e+00 2.423e+02 2.575e-02
Iter 13: 2.39e-09 1.77e-08 0.00e+00 2.630e+01 2.795e-03
Iter 14: 1.43e-09 1.98e-14 0.00e+00 1.428e-01 1.518e-05
Iter 15: 1.89e-09 3.52e-14 0.00e+00 7.144e-05 7.594e-09
MAROSR7 <* Converge! *>
Resultados (sin procesar) en results.mat
Solución xsol (procesada) en solution.mat
Primal Obj = 1.4971851665e+06
[m n] = [3136 9408], nnz(A) = 144848
CPU seconds: 0.45 ... carga de datos
0.09 ... preprocessado
9.34 ... resolución
0.00 ... postprocesado
9.89 ... total

Cuadro 15.24: Problema de NETLIB MarosR7: 3,136 condiciones, 9,408 variables y nz D 151:120
384 j Capítulo 15. Dualidad en Programación Lineal. Métodos de puntos interiores
Capítulo 16

Optimización. Programación no lineal con


condiciones

Contenido
16.1 Formulación del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
16.2 Condiciones de Karush-Kuhn-Tucker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
16.3 Algoritmos de PNL con condiciones. Programación cuadrática . . . . . . . . . . . . . . . . . . . 390
16.4 Programación Cuadrática Secuencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
16.5 Métodos de puntos interiores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

16.1 Formulación del problema


E l problema objeto de estudio de la programación no lineal con condiciones es este:

minimizar f .x/
x2Rn

sujeta a ci .x/ D 0; i 2 E;
cj .x/  0; j 2 I:

Las función objetivo f y las condiciones —las funciones vectoriales ci y cj — son, en general, no lineales, continuas
y tienen derivadas parciales continuas hasta al menos primer orden. Los conjuntos E y I contienen los índices de las
condiciones de igualdad y de desigualdad, o inecuaciones.
La región factible o conjunto de puntos factibles de un problema de Programación No Lineal —PNL o NLP— es
˚
 D x W ci .x/ D 0; i 2 EI cj .x/  0; j 2 I :

Ejemplo 16.1 Se trata de resolver


minimizar x1 C x2
sujeta a x12 C x22 2 D 0:
En este caso f .x/ D x1 C x2 , c1 .x/ D x12 C x22 2, E D f1g y I D ;. Ver en la figura 16.1. El punto óptimo es
x  D Œ 1 1T . Con el criterio de minimizar la función objetivo otros puntos de la circunferencia hacen que f .x/ sea
peor.
(see Figure 12.3). In the language of (12.1), we have f (x)  x1 + x2 , I  ∅, E  {1}, and
c1 (x)  x12 + x√2
2 − 2. We can see by inspection that the feasible set for this problem is the
circle of radius 2 centered at the origin—just the boundary of this circle, not its interior.
The solution x ∗ is obviously (−1, −1)T . From any other point on the circle, it is easy to
find a way to move that stays feasible
√ (that is, remains on the circle) while decreasing f .
For instance, from the point x  ( 2, 0)T any move in the clockwise direction around the
circle has the desired effect.
386 j Capítulo 16. Optimización. Programación no lineal con condiciones

x2
∆ ∆
c1 c1


f


f x1


Figure 12.3
∆ f
f Problem (12.9), showing
x*
constraint and function

c1 gradients at various feasible
points.
Figura 16.1: Región factible y gradientes de la función objetivo y condición

En el óptimo, el vector gradiente de la condición, rc1 .x  /, es paralelo (de hecho, colineal) al de la función objetivo,
rf .x  /, aunque con sentido opuesto. Existe un escalar 1 , en este caso 1 D 1=2, tal que rf .x  / D 1 rc1 .x  /.
Otra manera de ver por qué x  es el óptimo. Si en cualquier punto factible x del proceso de optimización se lleva a
cabo un pequeño desplazamiento s, para conservar la factibilidad deberá cumplirse que c.x C s/ D 0.
Por desarrollo en serie de Taylor,
T T
0 DC Hc.x
308 A P T EC
R 1s/
2. T Hc.x/
EORY C
O F rc.x/
C O N S T R A I NsE DDOrc.x/ s:N
PTIMIZATIO

Ese mismo paso debería producir una mejora de f .x/, es decir


Definition 12.1.
T equality constraint indices from E
0 The f .xsetCA(x)
> active s/ at any feasible
f .x/ rf .x/
x consists of the s:
together with the indices of the inequality constraints i for which ci (x)  0; that is,
Cualquier dirección d  s=ksk en el sentido de ese paso que mejore la función objetivo y verifique la condición deberá
A(x)  E ∪ {i ∈ I | ci (x)  0}.
cumplir simultáneamente que
T point x, the inequality constraint
rc.x/
At a feasibled D 0 y rf .x/T d < i ∈0:
I is said to be active if ci (x)  0
and inactive if the strict inequality ci (x) > 0 is satisfied.
Si no existe, el punto x podría ser un óptimo (al menos local). La única manera de que no exista una d que satisfaga
simultáneamente estos dos requerimientos AesSINGLE
que EQUALITY CONSTRAINT
rf .x/ y rc.x/ sean paralelas.
❏ EXAMPLE 12.1
Volviendo al problema general de PNL, su función de Lagrange es
Our first example is a two-variable problem with a single equality constraint:
L.x; / D f .x/ c.x/:2
min x1 + x2 s.t. x1 + x22 − 2  0 (12.9)
El gradiente de ésta con respecto a x, rx L.x; /, es rf .x/ rc.x/. La condición de óptimo —necesaria pero no
(see Figure 12.3). In the language of (12.1), we have f (x)  x1 + x2 , I  ∅, E  {1}, and
suficiente— se puede enunciar para el ejemplo
c1 (x)  x12 +que
x22 − estudiamos como that the feasible set for this problem is the
2. We can see by inspection

circle of radius 2 centered at the origin—just the boundary of this circle, not its interior.
rx L.x ; 1 / (that
The solution x is obviously (−1, −1)
∗ T

find a way to move that stays feasible


D . From any other point on the circle, it is easy to
0.
is, remains on the circle) while decreasing f .

For instance, from the point x  ( 2, 0)T any move in the clockwise direction around the
A 1 se le denomina multiplicador de Lagrange
circle has the de la effect.
desired condición c .x/ D 0. La condición es necesaria, pero no suficiente.
1
En efecto, en el ejemplo, el punto Œ1 1T la cumple (con 1 D 1=2), pero no es el óptimo: de hecho es el máximo.
x2
∆ ∆
c1 c1


f


f x1


Figure 12.3
∆ f
f Problem (12.9), showing
x*
constraint and function

c1 gradients at various feasible
points.
The main difference between problems (12.9) and (12.18) comes in the handling of the
feasibility condition. As in (12.13), the step s improves the objective function, to first order,
if ∇ f (x)T s < 0. Meanwhile, s retains feasibility if

0 ≤ c1 (x + s) ≈ c1 (x) + ∇c1 (x)T s,

so, to first order, feasibility is retained if

c1 (x) + ∇c1 (x)T s ≥ 0. (12.19)

16.1weFormulación del problema j 387


In determining whether a step s exists that satisfies both (12.13) and (12.19),
consider the following two cases, which are illustrated in Figure 12.4.
Case I: Consider first the case in which x lies strictly inside the circle, so that the strict
Consideremos la siguiente variante del cejemplo
inequality anterior:
1 (x) > 0 holds. In this case, any step vector s satisfies the condition (12.19),
provided only that its length is sufficiently small. In fact, whenever ∇ f (x)  0, we can
min. both
obtain a step s that satisfies x1 C x2 and (12.19) by setting
(12.13)

s. a 2 x22 
x12s  −α∇ 0:
f (x),

El óptimo sigue siendo el mismo. Su región factible es la circunferencia anterior y su interior: la superficie geométrica
plana (círculo) contenida en ella.


f
x
∆ ∆
c1 f

s
x
s

12.1. EXAMPLES 311

As before, we conjecture that a given feasible point x is not optimal if we can find a
Elsmall
gradiente
step s that de
bothla condición
retains en decreases
feasibility and cualquier punto function
the objective del extremo
f to first exterior
order. de la región factible apunta hacia su interior.
The main difference between problems (12.9)  and Figure
 12.4
(12.18) comesImprovement directions
in the handling
 of the s fromtwo feasible points x for the problem
La condición de óptimo rf .x / D  1
(12.18)rcat 1 .x
which /
these satisface
constraint is con
active
feasibility condition. As in (12.13), the step s improves the objective function, to first order, and 1 D 1=2,
inactive, signo opuesto al del problema anterior.
respectively.
Razonando
if ∇ f (x)T s < como antes,
0. Meanwhile, cualquier
s retains xifno será óptimo si se puede dar un paso s al final del cual se conserve la factibilidad
feasibility
de la condición y se mejore la función objetivo. Es decir, si rf .x/T s < 0 y se cumple que
0 ≤ c1 (x + s) ≈ c1 (x) + ∇c1 (x)T s,
0  c.x C s/  c.x/ C rc.x/T s:
so, to first order, feasibility is retained if
Consideraremos dos casos según se Taprecia en la figura anterior:
c1 (x) + ∇c1 (x) s ≥ 0. (12.19)
Caso 1. El punto x está estrictamente dentro de la región factible, c1 .x/ > 0. Cualquier paso s suficientemente pequeño
seguirá In cumpliendo
determining whetherestaa inecuación
step s exists that(como
satisfiesratifica la figura).
both (12.13) Dewehecho, supuesta rf .x/ ¤ 0, para cualquier ˛ positivo
and (12.19),
T
suficientemente
consider the following pequeño el paso
two cases, which s D ˛rf
are illustrated in Figure 12.4.satisface la condición anterior y que rf .x/ s < 0.
.x/
Caso
Case I:2.Consider
Si x esta en case
first the el extremo
in which x oliesfrontera de the
strictly inside la región factible,
circle, so that c1 .x/ D 0.
the strict
Las condiciones
inequality c1 (x) > 0 para
holds. mejorar
In this case,la
anyfunción
step vectorobjetivo serán
s satisfies the condition (12.19),
provided only that its length is sufficiently small. In fact, whenever ∇ f (x)  0, we can
obtain a step s that satisfies both (12.13) and (12.19) by setting T
rf .x/ s < 0 y rc1 .x/T s  0:
s  −α∇ f (x),
La primera determina un subespacio abierto y la segunda uno cerrado. Cualquier dirección en el cono que genera la
intersección de ambos, como se ve en la figura 16.2, mejorará la función objetivo. Si rf .x/ y rc1 .x/ apuntan en la



f 1
x
∆ ∆
c1 f

s
x 1 0

39ÿ73 ÿ68
95ÿ3 ÿÿ882ÿ!
546
Figure 12.4 Improvement directions s from two feasible points x for the problem
2
345
67
389

ÿ78ÿ 34 7ÿ84254 "#$%&'

(12.18) at which the constraint is activeFigura 16.2:
and inactive, Región factible y cono
respectively. de direcciones factibles

misma dirección la intersección es el vacío y

rf .x/ D rc1 .x/; para algún 1  0:


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

El signo del multiplicador es importante en este caso pues si la condición anterior se cumpliese con un valor negativo
de 1 , rf .x/ y rc1 .x/ apuntarían en direcciones opuestas y constituirían el subespacio completo.
Por lo razonado, las condiciones de óptimo se pueden plasmar en

rx L.x  ; 1 / D 0 para algún 1  0


1 c1 .x  / D 0:

La segunda es la de complementariedad. Plasma el hecho de que el multiplicador de Lagrange 1 sólo debe ser estricta-
mente positivo cuando la condición esté activa: es decir, c1 .x/ D 0. Para el ejemplo que consideramos:
En el Caso 1, c1 .x/ > 0, por lo que se requiere que 1 D 0. La otra condición de óptimo hace que rf .x  / D 0.
En el Caso 2, la segunda condición permite que 1 tome valores no negativos y la primera hace rf .x/ D
1 rc1 .x/.
Analicemos un poco una variante más del ejemplo que estudiamos:

minimizar x1 C x2
314 C H A P T sujeta
E R 1 2a. T 2H E OxR2Y F 2C
Ox ON0;S T R xA 2I NE D0:O P T I M I Z A T I O N
1 2

La región factible es el semicírculo de la figura.


c2

f
Figure 12.6
∆ Problem (12.24), illustrating the
c1
gradients of the active constraints
x*
and objective at the solution.
p
La solución es x  D Œ 2; 0T : Las dos condiciones están activas
Desde el óptimo, cualquier dirección d a lo largo de T
la cual la función objetivo mejore, deberá cumplir que rci .x/T d 
0; i 2 I D f1; 2g y rf .x/ d < 0. La condición rcithe
T where λ  (λ 1 , λ 2 ) is .x/vector
T
d  of0, Lagrange
i D 1; 2,multipliers.
se cumpleThesi dextension of condition
está dentro del cuadrante
(12.22) to this case is T
que definen rc1 .x/ y rc2 .x/, pero cualquier vector en él cumple que rf .x/ d  0.
La función de Lagrange del problema es ∗ ∗ ∗
∇x L(x , λ )  0, for some λ ≥ 0, (12.26)
L.x; / D f .x/ 1 c1 .x/ 2 c2 .x/:
where the inequality λ∗ ≥ 0 means that all components of λ∗ are required to be nonnegative.

La condición de óptimo, rx L.x By
; applying algún   0.condition
the complementarity
/ D 0 para
p 1 c1constraints,
(12.23) to both inequality
La de complementariedad, 
.x  / D 0 yweobtain 
2 c2 .x / D
0. En el punto óptimo, x  D Œ 2; 0T , se tiene que
1 1 2 2λ∗ c (x ∗ )  0, λ∗ c (x ∗ )  0. (12.27)
  " p #  
 1 ∗ √  T 2 2  0
rf .x / D
When x ; rc
(−1 .x / D, we have ; rc2 .x / D
2, 0) ;
1 0 1
   √   

1 ∗
2 2 ∗
0
por lo que si ∇ f (x )  , ∇c1 (x )  , ∇c2 (x )  ,
1 2 1
3 0 1
p
 2 2
 D 4 5
so that it is easy to verify that ∇x L(x ∗ ,;λ∗ )  0 when we select λ∗ as follows:
1
 √ 
se cumple que rx L.x ;  / D 0. Todos los coeficientes de  λtambién
  ∗
1/(2 2)
son positivos.
 .
Generalizando, en el óptimo, el gradiente de la función objetivo está (debe 1 estar) en el cono que generan los vectores
gradiente de las condiciones.
Veamos este problema Note that both components of λ∗ are positive, so that (12.26) is satisfied.
We consider
min.now
.x1 some
1/2other
C .xfeasible
1/2points that are not solutions of (12.24), and
2
examine the properties of the √Lagrangian and its gradient at these points.
For the s. a xx
point 1 ( 2x 2,20)T , we
1 again have that both constraints are active (see
Figure 12.7). However,2xit1s easy  identify
x2 to 1; vectors d that satisfies (12.25): d  (−1, 0)T
is one such vector (there are many others). For this value of √ x it is easy to verify that the
condition ∇x L(x, λ)  0 is satisfied only when λ  (−1/(2 2), 1)T . Note that the first
component λ1 is negative, so that the conditions (12.26) are not satisfied at this point.
Finally, we consider the point x  (1, 0)T , at which only the second constraint c2 is
active. Since any small step s away from this point will continue to satisfy c1 (x + s) > 0, we
need to consider only the behavior of c2 and f in determining whether s is indeed a feasible
✔ Consideremos por ejemplo el problema

min. .x1 1/2 C .x2 1/2


s. a x1 2x2  1
16.2 Formulación del problema j 389
2x1 x2  1;
1 
1 T cuyo óptimo es Œ 13 31 T .
Yinyu Ye, Stanford MS&E311 Lecture Note #06 17

cuyo óptimo es 3 3
.
x2

324 Chapter 11 Constrained Minimization Conditions

∆ x1
h(x*)T
18/100

Definición 16.1 Un punto x que satisfaga


Figure 3: Exampletodas las condiciones
4. The objective gradient in the activas seofdice
normal cone regular si los vectores gradiente del
the constraint
Tangent plane
conjunto de condiciones activashyperplane
a en ese
b punto, A.x/ D E [ fi 2 I W ci .x/ D 0g, son linealmente independientes.
c 1 2 3

d e f g 9 4 6 5

Por otro lado, el plano o subespacio tangente, T x, *es


h i j 10 8 7

˚ ˚
T D v W rci .x/T v D 0; i 2 E [ j 2 I W cjh(.x/
x) = 0D 0 :
S
Se ve en la figura 16.3. (a)


c(x*)T

Plano tangente

c(x) = 0

12.2. TANGENT CONE AND CONSTRAINT QUALIFICAT


Figura 16.3: Subespacio
T ∆ tangente a unas condiciones
h(x*)
p
Consideremos ahora el punto x D Œ 2 0T del ejemplo del semicírculo.
Tangent plane

c2
∆ Figure 12.7
minimizar x1 C x2 f
Problem (12.24), illustratin
h2(x) = 0
sujeta a 2 x12 x22  0; x2  0: ∆ the gradients of the active
c1 constraints and objective a
∆ x nonoptimal point.
h1(x*)T
Las dos condiciones están activas. La dirección d D Œ 1 0T , como muchas otras, en x cumple que
rci .x/T d  0; i 2 I D f1; 2g ; rf .x/T d < 0:
descent step.p
Using the same reasoning as in the earlier examples, we find that the dire
T
La condición rx L.x; / D 0 sólo se cumple cuando ofDfeasible
Π1=.2 mustpor
2/; d 1
descent lo que no se cumple la no negatividad.
satisfy
T T
En el punto x D Œ1 0 , en el que sólo está activa la segunda condición, una d tal que hrc2 .x/ i d  0 y mejore f .x/,
    T
es decir, rf .x/T d < 0, dado que rf .x/ D 11 (c); rc2 .x/ D 01 , sólo
h1(x) =lo
0 cumple d2 D
∇c (x) d ≥1=2
0, . No (x)T d < 0.
∇ fobstante, no hay un (1
1=4
2 tal que rf .x/ 2 rc2 .x/ D 0, por lo que no se cumplen tampoco todas las condiciones de óptimo.
Fig. 11.2 Examples ofBy notingplanes
tangent that (translated to x∗ )
   
1 0
∇ f (x)  , ∇c2 (x)  ,
1 1

T
it is easy to verify that the vector d  − 12 , 41 satisfies (12.28) and is therefore a de


direction.
To show that optimality conditions (12.26) and (12.27) fail, we note first from (1
390 j Capítulo 16. Optimización. Programación no lineal con condiciones

16.2 Condiciones de Karush-Kuhn-Tucker


Sea x  un punto regular y mínimo local del problema

minimizar
n
f .x/
x2R

sujeta a ci .x/ D 0; i 2 E;
ci .x/  0; i 2 I:

Existe un vector de multiplicadores de Lagrange,  , con coeficientes i , i 2 E [ I, tal que se cumple que

rx L.x  ;  / D rf .x  / T c.x  / D 0;
ci .x  / D 0; para todo i 2 E;
ci .x  /  0; para todo i 2 I;
i  0; para todo i 2 I;
i ci .x  / D 0; para todo i 2 E [ I:

Consideraciones sobre los signos de los multiplicadores  Si se mantiene la coherencia con la notación y
convención de signos adoptada para los multiplicadores , si hubiese inecuaciones o condiciones del tipo  0,
éstas se introducirían en la función de Lagrange también con signo negativo, pero las condiciones de punto
óptimo exigirían que fuesen   0.
Es por esto que en muchas publicaciones la función de Lagrange incorpora las condiciones con el
multiplicador precedido del signo C, pero luego exigen que si la inecuación es  0, el multiplicador
correspondiente debe ser  0. Igualmente, si la inecuación es  0, su multiplicador ha de ser  0.
Retomando la idea original de los multiplicadores de Lagrange, al introducir estos en la función objetivo se
busca que se penalice el que no se cumplan las condiciones de desigualdad. Si estas exigen , y no se
cumplen, el valor en la función objetivo de lo que no se cumple, que sería una cantidad positiva, lógicamente,
debería estar afectado con un multiplicador de signo positivo para penalizar la minimización que se está
tratando de conseguir. Si las condiciones son , lo contrario lógicamente.

16.2.1 Condiciones de óptimo de segundo orden


Sea x  un punto regular y mínimo local del problema no lineal que estamos estudiando y  un vector de multiplicadores
de Lagrange tales que .x  ;  / cumplen las condiciones de KKT. Si T es el subespacio tangente en x  , para todo z 2 T
se cumple que
zT rx2 L.x  ;  /z  0:

Si en x  la matriz rx2 L.x  ;  / es definida positiva, ese punto es el mínimo local único del problema.

16.3 Algoritmos de PNL con condiciones. Programación cuadrá-


tica
Tiene como objeto el estudio de problemas de optimización no lineales como
1 T
minimizar
n 2
x Gx C xT g
x2R
sujeta a aiT x D bi ; i 2 E;
aiT x  bi ; i 2 I;
16.3 Algoritmos de PNL con condiciones. Programación cuadrática j 391

donde G nn es una matriz simétrica y g, x y ai ; i 2 E [ I, vectores Rn ! R. La Programación Cuadrática guarda una
relación muy estrecha con la Programación Lineal
Si G es definida positiva, el problema puede resolverse algebraicamente. Si G es semidefinida positiva, el problema
en convexo y puede resolverse casi como un problema de Programación Lineal.

16.3.1 Programación Cuadrática con condiciones de igualdad


16.3.1.1 Método del subespacio imagen de la matriz A
Se trata de resolver
1 T
minimizar
n 2
x Gx C xT g
x2R
sujeta a Ax D b;
donde A es una matriz m  n, m  n, que supondremos de rango completo.
La función de Lagrange de este problema es

1 T
L.x; / D x G x C xT g T .Ax b/ :
2
Las condiciones de punto óptimo de Karush, Kuhn y Tucker son

rx L.x; / D G x C g AT  D 0
Ax b D 0:

En forma matricial,
    
G AT x g
D :
A 0  b
Es fácilmente demostrable que si G es definida positiva y A de rango completo, la solución única de este problema es
    1  
x G AT g
D :
 A 0 b

De aquí se deduce con cierta facilidad que


 1 
 D AG 1
AT AG 1
gCb

y que x  D G 1
A T  g .
Ejemplo 16.2 Resolvamos

min. 3x12 C 2x1 x2 C x1 x3 C 2;5x22 C 2x2 x3 C 2x32 8x1 3x2 3x3


s. a x1 C x3 D 3
x2 C x3 D 0

Las diversas matrices y vectores son


2 3 2 3
621 8    
4 5 4 5 101 3
G D 252 ; gD 3 ; AD ; bD :
011 0
124 3

La solución mediante una sesión de M ATLAB que plasme las ecuaciones algebraicas correspondiente y con quadprog()
son las del cuadro 16.1. . Con fmincon() la del cuadro 16.2.
392 j Capítulo 16. Optimización. Programación no lineal con condiciones

>> G=[6 2 1;2 5 2;1 2 4]; c=[-8;-3;-3];


>> A=[1 0 1;0 1 1];
>> G=[6 2 1;2 5 2;1 2 4]; c=[-8;-3;-3];
>> b=[3;0];
A=[1 0 1;0 1 1];
>> Gm1=inv(G);
b=[3;0];
>> l=(A*Gm1*A’)\(A*Gm1*c+b)
>> x=quadprog(G,c,[],[],A,b)
l =
Optimization terminated: relative (projected) residual
3.000000000000001
of PCG iteration <= OPTIONS.TolFun.
-2.000000000000000
x =
>> x=G\(A’*l-c)
2.000000000000000
x =
-1.000000000000000
2.000000000000000
1.000000000000000
-1.000000000000000
1.000000000000000

Cuadro 16.1

>> options=optimoptions(’fmincon’,’Display’,’iter-detailed’);
>> x = fmincon(@Q1fun,[0;0;0],[],[],A,b,[],[],[],options)
First-order Norm of
Iter F-count f(x) Feasibility optimality step
0 4 0.000000e+00 3.000e+00 2.667e+00
1 9 1.347222e+00 1.500e+00 1.117e+01 2.614e+00
2 13 -3.198427e+00 8.882e-16 2.430e+00 2.949e+00
3 17 -3.497660e+00 4.441e-16 3.369e-01 4.059e-01
4 21 -3.500000e+00 0.000e+00 1.850e-07 3.286e-02

Optimization completed: The relative first-order optimality measure, 6.165186e-08,


is less than options.TolFun = 1.000000e-06, and the relative maximum constraint
violation, 0.000000e+00, is less than options.TolCon = 1.000000e-06.
Optimization Metric Options
relative first-order optimality = 6.17e-08 TolFun = 1e-06 (default)
relative max(constraint violation)=0.00e+00 TolCon = 1e-06 (default)
x =
2.0000
-1.0000
1.0000

Cuadro 16.2

La función objetivo se calcula en la rutina


function f=Q1fun(x)
% Ejemplo optimización cuadrática 1
f=0.5*[x(1) x(2) x(3)]*[6 2 1;2 5 2; 1 2 4]*[x(1); x(2); x(3)]+...
[x(1) x(2) x(3)]*[-8;-3;-3];
end

Si utilizamos el software disponible en Internet que ya hemos visitado, OPTI Toolbox de Jonathan Currie, del In-
dustrial Information & Control Centre (I 2 C 2 ), de la AUT University, Auckland, New Zealand, la sesión de M ATLAB
correspondiente es la que presenta el cuadro 16.3.

16.3.1.2 Método del subespacio núcleo de la matriz A


Este método se usa cuando la matriz G es semidefinida positiva. Se supone que A 2 Rmn , n  m, es de rango
completo y se utiliza una matriz Z G Z T , la hessiana reducida.
La matriz Z la conforman los vectores de una base del subespacio núcleo de A, ker.A/, obtenida por ejemplo a partir
de1    
T R R
A …DQ D ŒY Z 
0 0
por lo que AZ D 0, y se supone que Z G Z T es definida positiva.
Generalizando la idea de PL de ordenar A D ŒB N , se puede hacer que el vector de dimensión n, x, se estructure en
dos partes, xy y xz , tales que
x D Y xy C Z xz
1 La matriz … es m  m, Q, n  n, R, m  m, Y , n  m, Z , n  .n m/.
394 j Capítulo 16. Optimización. Programación no lineal con condiciones

Ejemplo 16.3 Si volvemos a tratar

min. 3x12 C 2x1 x2 C x1 x3 C 2;5x22 C 2x2 x3 C 2x32 8x1 3x2 3x3


s. a x1 C x3 D 3
x2 C x3 D 0:

Trabajando a mano el problema en una sesión de M ATLAB resulta lo que sigue.

>> xy=(A*Y)\b
>> G=[6 2 1;2 5 2;1 2 4];
xy =
>> c=[-8;-3;-3];
-2.1213
>> A=[1 0 1;0 1 1];
1.2247
>> b=[3;0];
>> xyy=R(1:m,:)’\b % alternativa
>> [Q R]=qr(A’)
xyy =
Q =
-2.1213
-0.7071 0.4082 -0.5774
1.2247
0 -0.8165 -0.5774
>> xz=-(Z’*G*Z)\(Z’*G*Y*xy+Z’*c)
-0.7071 -0.4082 0.5774
xz =
R =
-6.1489e-16
-1.4142 -0.7071
>> x=Y*xy+Z*xz
0 -1.2247
x =
0 0
2.0000
>> Y=Q(:,1:m)
-1.0000
Y =
1.0000
-0.7071 0.4082
>> la=(A*Y)’\(Y’*(c+G*x))
0 -0.8165
la =
-0.7071 -0.4082
3.0000
>> Z=Q(:,m+1:n)
-2.0000
Z =
>> la=R(1:m,:)\(Y’*(c+G*x))
-0.5774
la =
-0.5774
3.0000
0.5774
-2.0000

Con el “solver” quadprog de M ATLAB otra vez, para obtener el vector de multiplicadores  , se obtiene lo que expresa
el cuadro 16.4.

output =
iterations: 1
constrviolation: 4.440892098500626e-016
>> [x fval exitflag output lambda] = quadprog(G,c,[],[],A,b)
algorithm: [1x58 char]
Optimization terminated: relative (projected) residual
firstorderopt: 0
of PCG iteration <= OPTIONS.TolFun.
cgiterations: 1
x =
message: [1x91 char]
2.000000000000000
lambda =
-1.000000000000000
eqlin: [2x1 double]
1.000000000000000
ineqlin: []
fval =
lower: []
-3.500000000000000
upper: []
exitflag =
>> lambda.eqlin
1
ans =
-2.999999999999999
2.000000000000000

Cuadro 16.4

16.3.2 Programación Cuadrática con condiciones generales


Estudiamos ahora
1 T
minimizar
n 2
x Gx C gT x
x2R
sujeta a Ax D b
Cx  d
donde A es una matriz mA  n, mA  n, que supondremos de rango completo, C otra matriz mC  n, también de rango
completo y mC  n.
16.3 Algoritmos de PNL con condiciones. Programación cuadrática j 395

La función de Lagrange de este problema es


1 T
L.x; y; z/ D x G x C gT x y T .Ax b/ zT .C x d/ :
2
Las condiciones de Karush, Kuhn y Tucker son

Gx C g AT y CTz D 0
Ax b D 0
Cx d  0
z 0
zi .C x d/i D 0; i D 1; : : : ; mC :
Si se introduce el vector de variables de holgura s en C x d  0 las condiciones KKT quedan así:

Gx C g AT y CTz D0
Ax b D0
s Cx C d D0
si zi D0
.z; s/  0:
Ahora vamos a aplicar, como hacíamos en Programación Lineal, un procedimiento de punto interior predictor correc-
tor para ir resolviendo el sistema de ecuaciones f .x; y; z; s/, que es
2 3
G x C g AT y C T z
6 Ax b 7
f .x; y; z; s/ D 6
4
7 D 0:
5
z;s>0 s Cx C d
SZe
La ecuación de Newton-Raphson para resolver este sistema es
2 3
x
6 y 7
J6 7
4 z 5 D f .x; y; z; s/;
s
donde J es la matriz jacobiana del sistema de ecuaciones. Desarrollando queda
2 32 3 2 3
G AT C T 0 x rL
6 A 0 0 07 6 7 6 7
6 7 6 y 7 D 6 rA 7 ;
4 C 0 0 I 5 4 z 5 4 rC 5
0 0 S Z s rsz
donde
rL D g C G x AT y CTz
rA D Ax b
rC D s Cx C d
rsz D e S Z e:
El vector e evita que s y z se acerquen demasiado a 0.
Como en el caso predictor-corrector de PL, primero se calcula la dirección de escalado afín, Œx af ; y af ; zaf ,
saf , o dirección pura de Newton (o dirección predictor), resolviendo este último sistema.
Una vez calculada esa dirección, se determina una amplitud de paso ˛ af a lo largo de la misma de tal manera que se
cumpla la factibilidad de z y s, es decir, que
z C ˛ af x af  0
s C ˛ af saf  0;
396 j Capítulo 16. Optimización. Programación no lineal con condiciones

teniendo en cuenta las ideas del central path de PL. Luego, para seguir con la dirección corrector hay que obtener
primero el parámetro de centrado,  , para aproximarse al central path. Para ello se calcula la brecha dual, o lo que no se
T
cumple de la condición de complementariedad de s y z,  D smCz , así como la que predecía el paso avanzado, esto es,
T 
af s C ˛ af saf z C ˛ af zaf
 D ;
mC
 af 3
haciéndose por fin  D  .
La dirección corrector, con información de segundo orden, se calcula resolviendo
2 32 3 2 3
G AT C T 0 x rL
6 A 0 7 6 y 7 6 rA 7
6 0 0 76 7D 6 6 7
4 C 0 7:
0 I 5 4 z 5 4 rC 5
0 0 S Z s rsz C S af Z af e  e

Por último se calcula una amplitud de paso global de la iteración, ˛, que cumpla la factibilidad de s y z llegándose,
mediante un último parámetro de seguridad o amortiguación, , al nuevo punto
ŒxkC1 ykC1 zkC1 skC1 T D Œxk yk zk sk T C ˛Œx y z sT :
La mayor cantidad de trabajo de este procedimiento está en resolver los sistemas de ecuaciones que definen las direc-
ciones predictor y corrector. En este sentido, la cuarta ecuación del sistema matricial predictor anterior es
1
S z C Z s D rsz y de ahí s D Z .rsz C S z/ :
Despejando en la tercera
C T x s D rC ) C T x Z 1
.rsz C S x/ D rC
por lo que
C T x Z 1
S z D rC C Z 1
rsz :
El sistema queda así
2 32 3 2 3
G AT CT x rL
4 A 0 0 5 4 y 5 D 4 rA 5:
C 0 Z 1S z rC Z 1 rsz
El programa de M ATLAB que lo implementa es el del cuadro 16.5.
Ejemplo 16.4 Resolvamos el problema
2 3 2 3
4 0 0 8
minimizar 21 x T 4 0 1 1 5 x C xT 4 6 5
0 1 1 6
sujeta a x1 C x2 C x3 D 3
x0
Utilizamos el script de M ATLAB anterior y le suministramos la información en una sesión interactiva, obteniéndose
lo que plasma el cuadro 16.6.
Con los “solver” quadprog y fmincon de M ATLAB se obtiene el cuadro 16.7. La función que calcula los valores de
la función objetivo para fmincon es la que sigue.

function f=Q2fun(x)
% Ejemplo optimización cuadrática 1
f=0.5*[x(1) x(2) x(3)]*[4 0 0;0 1 -1; 0 -1 1]*[x(1); x(2); x(3)]+...
[x(1) x(2) x(3)]*[-8;-6;-6];
end
16.4 Programación Cuadrática Secuencial j 397

% Cálculo de alpha_a
alpha_a = 1;
function [x_f, y_f, z_f, s_f, fo, k] = pcQP_gen_2(G, g, A, b, C, d, x, y, z, s)
idx_z = find(dz_a<0);
% Resuelve el problema de Programación Cuadrática
if isempty(idx_z)==0, alpha_a = min(alpha_a,min(-z(idx_z)./dz_a(idx_z))); end
% min 0.5x’Gx + g’x
idx_s = find(ds_a<0);
% s. a Ax = b A=nA x n
if isempty(idx_s)==0, alpha_a = min(alpha_a,min(-s(idx_s)./ds_a(idx_s))); end
% Cx >= d C=nC x n
mu_a = ((z+alpha_a*dz_a)’*(s+alpha_a*ds_a))/nC; % Affine duality gap
% mediante el método predictor corrector de punto interior. Parte de (x,y,z,s)
sigma = (mu_a/mu)^3; % Centering parameter
[nA n]=size(A); [nC ncc]=size(C); e=ones(n,1); % ¡OJO! n==ncc
% Se resuelve dirección corrector
k=0 ; maxk=200; eps_L=1e-9; bc=1+max(norm(b),norm(d));
rsz = rsz + ds_a.*dz_a - sigma*mu*e;
if nargin<7, s=ones(nC,1); y=ones(nA,1); z=ones(nC,1); x=sqrt(n)*ones(n,1); end
rhs = [-rL; -rA; -rC+rsz./z];
% Residuos
dxyz = P*(L’\(D\(L\(P’*rhs))));
rL = G*x + g - A’*y - C’*z;
dx = dxyz(1:length(x));
rA = -A*x + b;
dy = dxyz(length(x)+1:length(x)+length(y));
rC = -C*x + s + d;
dz = dxyz(length(x)+length(y)+1:length(x)+length(y)+length(z));
rsz = s.*z;
ds = -((rsz+s.*dz)./z);
mu = mean(rsz); residuo=norm([rL;rA;rC;rsz])/bc;
% Cálculo de alpha
alpha = 1;
fprintf(’\n No fac. Error Brecha Error’);
idx_z = find(dz<0);
fprintf(’\n primal Lagrang. dual relati.\n’);
if isempty(idx_z)==0, alpha = min(alpha,min(-z(idx_z)./dz(idx_z))); end
fprintf(’ Iter A*x-b, C*x-s-d G*x+g-A’’*y-C’’*z z’’*s total\n’);
idx_s = find(ds<0);
fprintf(’ --------------------------------------------------------------\n’);
if isempty(idx_s)==0, alpha = min(alpha,min(-s(idx_s)./ds(idx_s))); end
while k<=maxk & residuo>eps_L
% Obtención nuevo punto
% Se resuelve el sistema para determinar dirección de Newton pura: predictor
tau=max(.9995,1-mu)*alpha; % Con factor eta=0.9995
Mat = [G -A’ -C’ ; ...
x = x+tau*dx; y = y+tau*dy; z = z+tau*dz; s = s+tau*ds; k = k+1;
-A zeros(nA,nA) zeros(nA,nC) ; ...
% Recalcular residuos en nuevo punto, brecha dual e imprimir iteración
-C zeros(nC,nA) sparse(-diag(s./z))];
rL = G*x + g - A’*y - C’*z;
rhs = [-rL; -rA; -rC+rsz./z];
rA = -A*x + b;
[L D P] = ldl(Mat);
rC = -C*x + s + d; nrC=norm([rA;rC]);
dxyz_a = P*(L’\(D\(L\(P’*rhs))));
rsz = s.*z;
dx_a = dxyz_a(1:length(x));
mu = mean(rsz); residuo=norm([rL;rA;rC;rsz])/bc;
dy_a = dxyz_a(length(x)+1:length(x)+length(y));
fprintf(’%5i %15.2e %17.2e %13.2e %10.2e\n’,k,nrC,norm(rL),mu,residuo);
dz_a = dxyz_a(length(x)+length(y)+1:length(x)+length(y)+length(z));
end
ds_a = -((rsz+s.*dz_a)./z);
x_f = x; y_f = y; z_f = z; s_f = s; fo = 0.5*x’*G*x+g’*x;
end

Cuadro 16.5

>> [x1 y1 z1 s1 fo k]=pcQP_gen_2(G, g, A, b, C, d, x, y, z, s)

No fac. Error Brecha Error


primal Lagrang. dual relati.
Iter A*x-b, C*x-s-d G*x+g-A’*y-C’*z z’*s total
--------------------------------------------------------------
1 0.00e+000 8.66e-002 4.13e-002 3.76e-002
2 3.14e-016 4.33e-005 6.75e-004 4.84e-004
3 3.33e-016 2.17e-008 3.42e-007 2.45e-007
>> G=[4 0 0;0 1 -1;0 -1 1]; 4 2.22e-016 6.65e-015 1.17e-013 8.38e-014
>> g=[-8;-6;-6]; x1 =
>> A=[1 1 1]; 0.500000000000166
>> b=3; 1.249999999999917
>> C=eye(3); 1.249999999999917
y1 =
>> d=zeros(3,1); -6.000000000000002
>> x=[1;1;1]; z1 =
>> y=1; 1.0e-012 *
>> s=y; 0.670272053531211
>> z=x; 0.006169231801483
0.006169231801483
s1 =
0.500000000000166
1.249999999999917
1.249999999999917
fo =
-18.500000000000000
k =
4

Cuadro 16.6
398 j Capítulo 16. Optimización. Programación no lineal con condiciones

>> [x fval exitflag output lambda] =quadprog(G,g,-C,d,A,b,[0;0;0])


Warning: Large-scale algorithm does not currently solve
this problem formulation, using medium-scale algorithm instead.
> In quadprog at 293 x = fmincon(@Q2fun,[0;0;0],[],[],A,b,[],[],[],options)
Optimization terminated. First-order Norm of
x = Iter F-count f(x) Feasibility optimality step
0.500000000000001 0 4 0.000000e+00 3.000e+00 1.333e+00
1.249999999999999 1 8 -1.177778e+01 0.000e+00 7.000e+00 2.380e+00
1.249999999999999 2 12 -1.831556e+01 0.000e+00 9.448e-01 1.873e+00
fval = 3 16 -1.850000e+01 0.000e+00 1.164e-07 3.719e-01
-18.499999999999996
exitflag = Optimization completed: The relative first-order optimality measure,
1 1.939322e-08, is less than options.TolFun = 1.000000e-06, and the
output = relative maximum constraint violation, 0.000000e+00, is less
iterations: 1 than options.TolCon = 1.000000e-06.
constrviolation: -0.500000000000001
algorithm: ’medium-scale: active-set’ Optimization Metric Options
firstorderopt: 3.552713678800501e-015 relative first-order optimality = 1.94e-08 TolFun = 1e-06 (default)
cgiterations: [] relative max(constraint violation) = 0.00e+00 TolCon = 1e-06 (default)
message: ’Optimization terminated.’ x =
lambda = 0.5000
lower: [3x1 double] 1.2500
upper: [3x1 double] 1.2500
eqlin: 5.999999999999998
ineqlin: [3x1 double]

Cuadro 16.7

16.4 Programación Cuadrática Secuencial


Volvemos al problema general de Programación No Lineal

minimizar
n
f .x/
x2R
sujeta a ci .x/ D 0; i 2 E;
ci .x/  0; i 2 I:

La idea de los métodos SQP (Sequential Quadratic Programming) es desarrollar un proceso iterativo en el que en cada
punto .xk ; k / se modeliza el problema mediante uno de programación cuadrática

minimizar
n
fk C rfkT p C 12 pT rxx
2
Lk p
p2R
sujeta a rci .xk /T p C ci .xk / D 0; i 2 E;
rci .xk /T p C ci .xk /  0; i 2 I;

cuyo óptimo llevará a .xk C p; kC1 /, el nuevo punto. El algoritmo esquemático sería así:

 Algoritmo de Programación Cuadrática Secuencial


Dados Un punto de partida .x0 ; 0 / y una tolerancia de óptimo.
Hacer k 0
Repetir Hasta que se satisfaga la convergencia:
2 L, c y rc .
Calcular fk , rfk , rxx k k
Resolver el subproblema cuadrático
1 T 2
minimizar fk C rfkT pk C 2 pk rxx Lk pk
p2Rn
sujeta a rci .xk/T p k C ci .xk / D 0; i 2 E;
rci .xk /T pk C ci .xk /  0; i 2 I;
para determinar pk y nuevo vector k .
Hacer xkC1 D xk C pk , kC1 k y k kC1
end

Estudiemos las distintas variantes que se pueden presentar.


16.4 Programación Cuadrática Secuencial j 399

16.4.1 SQP con condiciones de igualdad solamente


Ejemplo 16.5 Resolvamos el siguiente problema:

minimizar x14 2x24 x34 x12 x22 x12 x32


sujeta a x14 C x24 C x34 25 D 0

8x12 C 14x22 C 7x32 56 D 0

La función de Lagrange es
 
Lk D x14 2x24 x34 x12 x22 x12 x32 1 x14 C x24 C x34 25 2 8x12 C 14x22 C 7x32 56 :

Los diversos vectores y matrices del problema son


2 3 2 3
4x13 2x1 x22 2x1 x32   4x13 2x1 x22 2x1 x32 41 x13 162 x1
6 7 4x13 4x23 4x33
rfk D 4 8x23 2x12 x2 5; Jk D ; J Lk D 4 8x23 2x12 x2 41 x23 282 x2 5
16x1 28x2 14x3
4x33 2x12 x3 4x33 2x12 x3 41 x33 142 x3

y
" 12x12 2x22 2x32 121 x12 162 4x1 x2 4x1 x3
#
2
rxx Lk D 4x1 x2 24x22 2x12 121 x22 282 0
4x1 x3 0 12x32 2x12 121 x32 142

Para resolverlo, utilizaremos el script de M ATLAB que se lista en el cuadro 16.8. El subproblema cuadrático se
resuelve con el procedimiento del subespacio imagen de A para programación cuadrática con condiciones de igualdad.
Si le aplicamos los datos del problema y comprobemos que el punto obtenido es un mínimo local, en el cuadro 16.9 de
la página 400 se ve lo que resulta.
Vamos a resolver el mismo caso con el software IPOPT, que pasa por ser el mejor de los actualmente en el mercado
para Programación No Lineal. A este programa tendremos que informarle sobre dónde están las funciones que calculan
la función objetivo, y su gradiente, si queremos, y las condiciones y los gradientes de estas.
Usaremos el “pequeño” programa que se lista en el cuadro 16.10 de la página 401 para hacerlo. Partiremos del mismo
punto x0 . El script con lo que se le suministra al software y los resultados que se obtienen son los que siguen en los
dos recuadros. El resultado se puede ver en el cuadro 16.11.
Ahora resolveremos el mismo caso con la función fmincon de M ATLAB. Le informaremos dónde están las funciones
que calculan la función objetivo, y su gradiente si queremos, y las condiciones y los gradientes de estas.
En este caso la función objetivo y su gradiente están calculados en fg_ejsqp1.m y las condiciones y sus gradientes
en cg_ejsqp1.m. Estas funciones y el resultado correspondiente, partiendo del mismo punto x0 , se pueden ver en el
cuadro 16.12 de la página 403.

16.4.2 SQP con condiciones de desigualdad solamente


Sigamos con SQP y apliquémosla ahora a una variante del problema en la que sólo hay condiciones de desigualdad.

Ejemplo 16.6 Resolvamos este problema:


 
minimizar 1
2
.x1 x3 /2 C .x2 x4 /2
 1   1
0 x1 3
sujeta a Œx1 x2  4 C Œx1 x2  2 C 4
0
01 x2 0
   " 11 #
1 53 x3 2 35
8
Œx3 x4  C Œx3 x4  2
0
35 x4 13
2
400 j Capítulo 16. Optimización. Programación no lineal con condiciones

function [xs,lmdk,fs,k] = SQP_e(faname,gname,wname,x0,lmd0)


% sqp_e.m: SQP algorithm for nonlinear problems with equality constraints
%
% faname, gname, wname: funciones para f.o., gradientes y Hessiana Lag.
% x0, initial point; lmd0; initial Lagrange multiplier;
% xs, solución; lmdk, mult. de Lagrange; fs, función objetivo; k, iter
xk = x0(:); lmdk = lmd0;
n = length(xk); p = length(lmdk);
p1 = p + 1; k = 0; d = 1; ze = zeros(p,p);
while d >= sqrt(eps)
fk = feval(faname,xk);
Gk = feval(gname,xk);
ak = fk(2:p1); gk = Gk(:,1); Ak = Gk(:,2:p1)’;
xlmdk = [xk; lmdk];
Lk = feval(wname,xlmdk);
xz = [Lk -Ak’; -Ak ze]\[Ak’*lmdk-gk; ak];
d_x = xz(1:n);
xk = xk + d_x; function L = w_ejsqp1(xlmdk)
lmdk = Ak’\(Lk*d_x+gk); % Hessiana de f.o. y condiciones de Ejemplo SQP1
d = norm(d_x); k = k + 1; x = xlmdk(1:3); lmd = xlmdk(4:5);
x1 = x(1); x2 = x(2); x3 = x(3); lm1 = lmd(1); lm2 = lmd(2);
end w11 = -12*x1^2-2*x2^2-2*x3^2-lm1*12*x1^2-16*lm2; w12 = -4*x1*x2; w13 = -4*x1*x3;
disp(’Vector solución:’); xs = xk w22 = -24*x2^2-2*x1^2-12*lm1*x2^2-28*lm2; w33 = -12*x3^2-2*x1^2-12*lm1*x3^2-14*lm2;
disp(’Función objetivo:’); fk = feval(faname,xs); fs L= =fk(1)
[w11 w12 w13; w12 w22 0; w13 0 w33];
disp(’Número de iteraciones:’); k end
end

function z = f_ejsqp1(x)
% Función objetivo y condiciones de Ejemplo SQP1
x1 = x(1); x2 = x(2); x3 = x(3);
fk = -x1^4-2*x2^4-x3^4-x1^2*x2^2-x1^2*x3^2;
ak = [x1^4+x2^4+x3^4-25; 8*x1^2+14*x2^2+7*x3^2-56];
z = [fk; ak];
end

function z = g_ejsqp1(x)
% Gradientes de f.o. y condiciones de Ejemplo SQP1
x1 = x(1); x2 = x(2); x3 = x(3);
gk = [-4*x1^3-2*x1*x2^2-2*x1*x3^2; -8*x2^3-2*x1^2*x2; -4*x3^3-2*x1^2*x3];
Ak = [4*x1^3 4*x2^3 4*x3^3; 16*x1 28*x2 14*x3];
z = [gk Ak’];
end

Cuadro 16.8

>> x0=[3;1;3];
>> lmd0 = [-1 -1]’;
>> [xs,lmds,fs,k]=SQP_e(’f_ejsqp1’,...
’g_ejsqp1’,’w_ejsqp1’,x0,lmd0)
Vector solución:
>> A=[4*xs(1)^3 4*xs(2)^3 4*xs(3)^3; 16*xs(1) 28*xs(2) 14*xs(3)] % Jaco. en el óptimo
xs =
A =
1.874065458268392
26.327781168218593 0.404308983401344 26.779398394895583
0.465819644836092
29.985047332294279 13.042950055410584 26.386086226382556
1.884720444741611
>> kA=null(A) % Sub. núcleo de A
Función objetivo:
kA =
fs =
-0.696840008344593
-38.284827869947819
0.222860949715932
Número de iteraciones:
0.681723550907565
k =
>> L = w_ejsqp1([xs;lmds]) % Hess. en el óptimo
7
L =
xs =
6.278649119268822 -3.491906024680684 -14.128357935929984
1.874065458268392
-3.491906024680684 -1.347992348176401 0
0.465819644836092
-14.128357935929984 0 6.350246509661261
1.884720444741611
>> kA’*L*kA
lmds =
ans =
-1.223463560484408
20.441122695387470
-0.274937102065629
fs =
-38.284827869947819
k =
7

Cuadro 16.9
16.4 Programación Cuadrática Secuencial j 401

function x = IPOPT_ejsqp1
x0=[3; 1; 3]; % Punto de partida
options.ub=[Inf;Inf;Inf]; % Cotas superiores de las variables
options.lb=[-Inf;-Inf;-Inf]; % Cotas inferiores de las variables

options.cl = zeros(1,2); % Condiciones igual a cero


options.cu = zeros(1,2);

options.ipopt.print_level = 5;
options.ipopt.hessian_approximation = ’exact’; % Matriz Hessiana si
options.ipopt.derivative_test = ’first-order’;
options.ipopt.derivative_test = ’second-order’;

funcs.objective = @f_ejsqp1; % Dónde están funciones


funcs.constraints = @const_ejsqp1;
funcs.gradient = @g_ejsqp1;
funcs.jacobian = @jacobian_ejsqp1;
funcs.jacobianstructure = @() sparse(ones(2,3));
funcs.hessian = @hessian_ejsqp1;
funcs.hessianstructure = @() sparse(tril(ones(3)));

[x info] = ipopt(x0,funcs,options); % Se ejecuta IPOPT


end

function f = f_ejsqp1(x) % Función objetivo


x1 = x(1); x2 = x(2); x3 = x(3);
f = -x1^4-2*x2^4-x3^4-x1^2*x2^2-x1^2*x3^2;
end

function g = g_ejsqp1(x) % Gradiente de la función objetivo


x1 = x(1); x2 = x(2); x3 = x(3);
g = [-4*x1^3-2*x1*x2^2-2*x1*x3^2; -8*x2^3-2*x1^2*x2; -4*x3^3-2*x1^2*x3];
end

function c = const_ejsqp1(x) % Condiciones del problema


x1 = x(1); x2 = x(2); x3 = x(3);
c = [x1^4+x2^4+x3^4-25; 8*x1^2+14*x2^2+7*x3^2-56];
end

function J = jacobian_ejsqp1(x) % Jacobiana de las constraints


x1 = x(1); x2 = x(2); x3 = x(3);
J1 = [4*x1^3 4*x2^3 4*x3^3; 16*x1 28*x2 14*x3];
J = sparse(J1);
end

function H = hessian_ejsqp1(x, sigma, lambda) % Matriz hessiana de f. Laplace


x1 = x(1); x2 = x(2); x3 = x(3);
w11 = -12*x1^2-2*x2^2-2*x3^2; w12 = -4*x1*x2; w13 = -4*x1*x3;
w22 = -24*x2^2-2*x1^2; w33 = -12*x3^2-2*x1^2;
H = [w11 w12 w13; w12 w22 0; w13 0 w33];
H = sigma*H+lambda(1)*[12*x1^2 0 0; 0 12*x2^2 0; 0 0 12*x3^2]+...
lambda(2)*[16 0 0; 0 28 0; 0 0 14];
H = sparse(tril(H));
end

Cuadro 16.10
402 j Capítulo 16. Optimización. Programación no lineal con condiciones

>> IPOPT_ejsqp1
This is Ipopt version trunk, running with linear solver mumps.

Starting derivative checker for first derivatives.

Starting derivative checker for second derivatives.

No errors detected by derivative checker.

Number of nonzeros in equality constraint Jacobian...: 6


Number of nonzeros in inequality constraint Jacobian.: 0
Number of nonzeros in Lagrangian Hessian.............: 6

Total number of variables............................: 3


variables with only lower bounds: 0
variables with lower and upper bounds: 0
variables with only upper bounds: 0
Total number of equality constraints.................: 2
Total number of inequality constraints...............: 0
inequality constraints with only lower bounds: 0
inequality constraints with lower and upper bounds: 0
inequality constraints with only upper bounds: 0

iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls


0 -2.5400000e+002 1.38e+002 4.28e-001 -1.0 0.00e+000 - 0.00e+000 0.00e+000 0
1 -9.8397946e+001 4.06e+001 6.25e+000 -1.0 1.32e+000 - 1.00e+000 1.00e+000h 1
2 -5.1217894e+001 8.96e+000 3.08e+000 -1.0 5.83e-001 - 1.00e+000 1.00e+000h 1
3 -3.9660992e+001 9.26e-001 2.85e+000 -1.0 2.12e-001 - 1.00e+000 1.00e+000h 1
4 -3.8369140e+001 6.58e-002 2.29e-001 -1.0 5.09e-002 - 1.00e+000 1.00e+000h 1
5 -3.8292391e+001 5.59e-003 4.10e-003 -1.7 1.25e-002 - 1.00e+000 1.00e+000h 1
6 -3.8284834e+001 4.41e-006 2.80e-006 -3.8 4.07e-004 - 1.00e+000 1.00e+000h 1
7 -3.8284828e+001 1.49e-012 7.46e-013 -8.6 2.48e-007 - 1.00e+000 1.00e+000h 1

Number of Iterations....: 7

(scaled) (unscaled)
Objective...............: -2.2788588017827323e+001 -3.8284827869949901e+001
Dual infeasibility......: 7.4606987254810520e-013 1.2533973858808168e-012
Constraint violation....: 1.3816108750890836e-012 1.4921397450962104e-012
Complementarity.........: 0.0000000000000000e+000 0.0000000000000000e+000
Overall NLP error.......: 1.3816108750890836e-012 1.4921397450962104e-012

Number of objective function evaluations = 8


Number of objective gradient evaluations = 8
Number of equality constraint evaluations = 8
Number of inequality constraint evaluations = 0
Number of equality constraint Jacobian evaluations = 8
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations = 7
Total CPU secs in IPOPT (w/o function evaluations) = 0.000
Total CPU secs in NLP function evaluations = 0.000

EXIT: Optimal Solution Found.


ans =
1.8741
0.4658
1.8847
>> IPOPT_ejsqp1

Cuadro 16.11
16.4 Programación Cuadrática Secuencial j 403

function [fo gfo] = fg_ejsqp1(x)


% Función objetivo y su gradiente de Ejemplo SQP1
x1 = x(1); x2 = x(2); x3 = x(3);
fo = -x1^4-2*x2^4-x3^4-x1^2*x2^2-x1^2*x3^2;
gfo = [-4*x1^3-2*x1*x2^2-2*x1*x3^2; -8*x2^3-2*x1^2*x2; -4*x3^3-2*x1^2*x3];
end

function [c ceq cg ceqg] = cg_ejsqp1(x)


% Condiciones y gradientes de Ejemplo SQP1
x1 = x(1); x2 = x(2); x3 = x(3);
c = [];
ceq = [x1^4+x2^4+x3^4-25; 8*x1^2+14*x2^2+7*x3^2-56];
cg = [];
ceqg = [4*x1^3 4*x2^3 4*x3^3; 16*x1 28*x2 14*x3]’;
end

>> options = optimset(’Algorithm’,’sqp’,...


’Display’,’iter’,’GradObj’,’on’,’GradConstr’,’on’...
);
>> [x fval mflag output lambda grad hessian]=fmincon(@fg_ejsqp1,[3;1;3],...
[],[],[],[],[],[],@cg_ejsqp1,options)
Norm of First-order
Iter F-count f(x) Feasibility Steplength step optimality
0 1 -2.540000e+002 1.380e+002 4.166e+002
1 3 -1.031438e+002 4.531e+001 1.000e+000 1.703e+000 2.546e+001
2 5 -5.555541e+001 2.211e+001 1.000e+000 1.085e+000 3.733e+001
3 7 -3.931698e+001 4.846e+000 1.000e+000 6.290e-001 2.616e+001
4 9 -3.443752e+001 3.801e-001 1.000e+000 1.880e-001 1.320e+001
5 16 -3.451286e+001 5.603e-001 2.401e-001 2.620e-001 1.133e+001
6 23 -4.743444e+001 6.339e+000 1.681e-001 7.912e-001 3.875e+000
7 25 -3.884668e+001 4.724e-001 1.000e+000 1.616e-001 2.638e+000
8 27 -3.837025e+001 6.995e-002 1.000e+000 6.153e-002 4.865e-001
9 29 -3.830612e+001 1.596e-002 1.000e+000 2.845e-002 4.268e-002
10 31 -3.828490e+001 5.415e-005 1.000e+000 1.961e-003 4.825e-003
11 33 -3.828483e+001 2.474e-009 1.000e+000 1.083e-005 3.709e-005

Local minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in


feasible directions, to within the default value of the function tolerance,
and constraints were satisfied to within the default value of the constraint tolerance.

<stopping criteria details>

x =
1.874064803822328
-0.465819854015786
1.884721085084425
fval =
-38.284827873204847
mflag =
1
output =
iterations: 11
funcCount: 33
algorithm: ’sequential quadratic programming’
message: [1x782 char]
constrviolation: 2.473605320574279e-009
stepsize: 1
firstorderopt: 3.709210533962449e-005
lambda =
eqlin: [0x1 double]
eqnonlin: [2x1 double]
ineqlin: [0x1 double]
lower: [3x1 double]
upper: [3x1 double]
ineqnonlin: [0x1 double]
grad =
-40.455060168650469
4.080648472401320
-40.018154736754951
hessian =
14.871537376429519 -4.562119880847577 -10.877223066124762
-4.562119880847577 7.568783635756974 -0.927972279190895
-10.877223066124762 -0.927972279190895 10.903957285682973

Cuadro 16.12
404 j Capítulo 16. Optimización. Programación no lineal con condiciones

Los diversos vectores y matrices necesarios para conocer más del problema son

2 3
x1 x3 " #
6x x4 7 x1 =2 C 0;5 2x2 0 0
6 2 7
rfk D 6 7; Jk D y
4 x3 x1 5 0 0 .5x3 C 3x4 /=4 C 11=2 .3x3 C 5x4 /=4 C 13=2
x4 x2 2 3
1 C 1 =2 0 1 0
6 0 1 C 21 0 1 7
2 L D6
rxx
7
k 6 7:
4 1 0 1 C 52 =4 32 =4 5
0 1 33 =4 1 C 52 =4

Para resolver los subproblemas cuadráticos utilizaremos un método de punto interior primal dual un poco más simple
que el predictor-corrector que acabamos de ver.
El programa codificado en el cuadro 16.13 puede resolver este tipo de problemas.

function [xs,fs,k] = SQP_ie_1(fun,x0,mu0,epsi)


% SQP algorithm for nonlinear problems with inequality constraints.
% x0, punto de partida; mu0, multiplicadores de Lagrange; epsi, tolerancia óptimo
% xs, óptimo; fs, función objetivo solución; k, iteraciones
xk = x0(:); muk = mu0(:); n = length(x0); q = length(muk);
q1 = q + 1; k = 0; In = eye(n); d = 1;
while d >= epsi
[fck gAk Lk] = fun([xk;muk]);
ck = fck(2:q1);
gk = gAk(:,1);
Ak = gAk(:,2:q1)’;
%options = optimset(’Display’,’off’);
[d_x muk] = qp_path_ie(Lk,gk,Ak,-ck,zeros(n,1),epsi);
xk = xk + d_x;
d = norm(d_x); k = k + 1;
end
disp(’Óptimo:’); xs = xk, muk % lambda.ineqlin si quadprod
disp(’Función objetivo:’); fck = f_ejsqp2([xs;muk]); fs = fck(1)
disp(’Iteraciones:’); k
end

function [fck gAk Lk] = f_ejsqp2(x)


% Función objetivo, condiciones gradientes y der_2 Lag del ejemplo sqpej_2
x1 = x(1); x2 = x(2); x3 = x(3); x4 = x(4);
fk = 0.5*((x1-x3)^2+(x2-x4)^2);
ck = [-(x1^2/4+x2^2)+x1/2+0.75; -(5*x3^2+6*x3*x4+5*x4^2)/8+(11*x3+13*x4)/2-35/2];
fck = [fk; ck];
gk = [x1-x3, x2-x4, x3-x1, x4-x2]’;
Ak = [-x1/2+.5, -2*x2, 0, 0; 0, 0, -(5*x3+3*x4)/4+11/2, -(3*x3+5*x4)/4+13/2];
gAk = [gk Ak’];
mu = x(5:6); mu1 = mu(1); mu2 = mu(2);
y11 = 1+mu1/2; y22 = 1+2*mu1; y33 = 1+5*mu2/4; y34 = 3*mu2/4;
Lk = [y11, 0, -1, 0; 0, y22, 0, -1; -1, 0, y33, y34; 0, -1, y34, y33];
end

Cuadro 16.13

La parte correspondiente a la resolución de los subproblemas con un solver de punto interior lo hace el otro código que
se lista en el cuadro 16.14. Si le aplicamos los datos del problema a este programa, a través de una sesión de M ATLAB,
resulta lo que lista en la parte derecha de ese cuadro.
Ahora, para seguir comparando métodos y prestaciones, resolveremos el mismo problema con la función fmincon de
M ATLAB. La función objetivo y su gradiente están en fg_ejsqp2.m; las condiciones y sus gradientes en cg_ejsqp2.m.
Partiendo del mismo punto x0 , y con los mismos parámetros de optimización, los resultados que se obtienen son los que
lista el cuadro 16.15.
16.4 Programación Cuadrática Secuencial j 405

function [xs muk] = qp_path_ie(H,p,A,b,x0,epsi) >> x0=[1 0.5 2 3]’;


% Punto interior primal-dual path-following con partida no factible para prog. cua. >> mu0=[1 1]’;
% x0, punto de partida A*x0 - b > 0; >> [xs,fs,k] = SQP_ie_1(@f_ejsqp2,...
% xs, óptimo; fs, función objetivo en la solución; muk, multiplicadores en óptimo x0,mu0,1e-5)
n = length(x0); q = length(b); a_max = 1-1e-5; x = x0(:); Óptimo:
s = ones(q,1); mu = ones(q,1); k = 0; xs =
rsz = s.*mu; 2.0447
gap = mean(rsz); 0.8527
while gap > epsi % Proceso iterativo 2.5449
rs = -A*x + b + s; 2.4856
rl = H*x + p - A’*mu; muk =
d_x = -(H + A’*diag(mu./s)*A)\(A’*((rsz - rs.*mu)./s) + rl); % Newton KKT. 0.9575
d_s = A*d_x-rs; 1.1001
d_mu = -(rsz + mu.*d_s)./s; Función objetivo:
% Amplitud de paso fs =
ind = find(d_s < 0); a_p=1; 1.4583
if isempty(ind)==0, a_p = min(a_p,min(-s(ind)./d_s(ind))); end Iteraciones:
ind = find(d_mu < 0); a_d=1; k =
if isempty(ind)==0, a_d = min(a_d,min(-mu(ind)./d_mu(ind))); end 7
a_k = a_max*min([1 a_p a_d]); xs =
% Nuevo punto 2.0447
x = x + a_k*d_x; mu = mu + a_k*d_mu; s = s+a_k*d_s; 0.8527
rsz = s.*mu; gap = mean(rsz); k = k + 1; 2.5449
end 2.4856
xs = x; muk = mu; fs =
end 1.4583

Cuadro 16.14

16.4.3 SQP con condiciones de todo tipo


Tratemos por último el problema general

minimizar
n
f .x/
x2R
sujeta a ci .x/ D 0; i 2 E;
ci .x/  0; i 2 I:

La estrategia sigue siendo la misma, pero con tres mejoras:


Una función de mérito, que indique lo que mejora la función objetivo de un paso a otro y cómo se van cumpliendo
las condiciones.
El cálculo de una amplitud de paso en la dirección calculada en el subproblema cuadrático.
2
La adaptación de rxx L en cada iteración, no cálculo de nuevo.
Las funciones de mérito, y filtros, pretenden ponderar adecuadamente en un proceso de optimización cómo mejora la
función objetivo y que se cumplan las condiciones. Usaremos esta
X X
.˛/ D f .xk C ˛pk / C ˇ ci2 .xk C ˛pk / i ci .xk C ˛pk /
i2E i2I

donde ˇ es un número suficientemente grande.


Reducir esta función reducirá la función objetivo a lo largo de p y lo que no se cumplen las condiciones de igualdad
y de desigualdad.
2
El cálculo de la amplitud de paso se hará mediante backtracking. La adaptación de rxx L se hará con la fórmula
BFGS, que conocemos.
Un código del procedimiento completo que tiene en cuenta todo lo apuntado, en M ATLAB, es el del cuadro 16.16.
Resolveremos con este código el siguiente problema de programación no lineal:
2 3 2
3
1 0 1
minimizar x12 C x2
6 1 07 6 57
sujeta a x12 C x22 9D0 donde A D 6
4 0
7 y bD6 7
4 25:
15
Ax  b
0 1 4
406 j Capítulo 16. Optimización. Programación no lineal con condiciones

>> [x fval mflag output lambda grad hessian]=fmincon(@fg_ejsqp2,[1;0.5;2;3],...


[],[],[],[],[],[],@cg_ejsqp2,options)
Norm of First-order
Iter F-count f(x) Feasibility Steplength step optimality
0 1 3.625000e+000 0.000e+000 1.500e+000
1 3 8.841912e-001 8.125e-001 1.000e+000 1.346e+000 3.066e+000
2 5 1.292252e+000 1.222e-001 1.000e+000 5.150e-001 3.150e-001
3 7 1.455222e+000 3.965e-003 1.000e+000 9.376e-002 7.193e-002
4 10 1.456116e+000 1.796e-003 7.000e-001 4.723e-002 1.198e-002
5 12 1.458272e+000 1.488e-005 1.000e+000 6.361e-003 9.076e-004
6 14 1.458290e+000 6.578e-009 1.000e+000 1.439e-004 3.903e-005
7 16 1.458290e+000 8.607e-012 1.000e+000 6.809e-006 2.100e-007

Local minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in


feasible directions, to within the default value of the function tolerance,
and constraints were satisfied to within the default value of the constraint tolerance.

<stopping criteria details>


x =
2.044749645910814
0.852715981057535
2.544913047857301
2.485632846451933
fval =
1.458290458968075
mflag =
1
output =
iterations: 7
funcCount: 16
algorithm: ’sequential quadratic programming’
message: [1x782 char]
constrviolation: 8.606670931499139e-012
stepsize: 1
firstorderopt: 2.099667071320255e-007
lambda =
eqlin: [0x1 double]
eqnonlin: [0x1 double]
ineqlin: [0x1 double]
lower: [4x1 double]
upper: [4x1 double]
ineqnonlin: [2x1 double]
grad =
-0.500163401946486
-1.632916865394398
0.500163401946486
1.632916865394398
hessian =
1.379465461685063 -0.173824495237544 -0.999742693536608 -0.132078313168329
-0.173824495237544 2.586140075166582 0.067423868800302 -0.902783042682583
-0.999742693536608 0.067423868800302 2.367844422245836 0.727009339021801
-0.132078313168329 -0.902783042682583 0.727009339021801 1.431944391971096

function [fo fog] = fg_ejsqp2(x)


% Función objetivo y gradiente del ejemplo ejsqp2
x1 = x(1); x2 = x(2); x3 = x(3); x4 = x(4);
fo = 0.5*((x1-x3)^2+(x2-x4)^2);
fog = [x1-x3, x2-x4, x3-x1, x4-x2]’;
end

function [c ceq cg ceqg] = cg_ejsqp2(x)


% Función objetivo, condiciones gradientes y der_2 Lag del ejemplo sqpej_2
x1 = x(1); x2 = x(2); x3 = x(3); x4 = x(4);
c = -[-(x1^2/4+x2^2)+x1/2+0.75; -(5*x3^2+6*x3*x4+5*x4^2)/8+(11*x3+13*x4)/2-35/2];
cg = -[-x1/2+.5, -2*x2, 0, 0; 0, 0, -(5*x3+3*x4)/4+11/2, -(3*x3+5*x4)/4+13/2]’;
ceq = [];
ceqg = [];
end

Cuadro 16.15
16.4 Programación Cuadrática Secuencial j 407

function [xk,lak,muk,fk,k] = sqp_general_1(fn,gn,x0,p,q,epsi)


% SQP algorithm for general nonlinear programming problems
% x0, punto inicial; lmd0, mu0, multiplicadores de Lagrange; epsi, tolerancia
% xs, solución; fs, función objetivo; k, iteraciones
xk = x0(:); n = length(xk); In = eye(n); Zk = In; p1 = p + 1; muk=ones(q,1);
[fk ak ck] = fn(xk);
[gk Aek Aik] = gn(xk);
k = 0; d = 1; beta=0.5; rho=0.01;
while d >= epsi
options = optimset(’Display’,’off’);
[d_x d_y d_z] = pcQP_gen_2(Zk, gk, Aek, -ak, Aik, -ck); % Subproblema por punto int.
alpha=1;
for kk=1:10 % Backtracking linesearch
xnew = xk+alpha*d_x; [fkn akn ckn] = fn(xnew);
merit_old = fk+100*sum(ak.^2)-sum(ck.*muk);
merit_gra = gk+2*100*Aek’*ak-Aik’*muk;
merit_new = fkn+100*sum(akn.^2)-sum(ckn.*d_z);
if merit_new < merit_old+alpha*rho*merit_gra’*d_x, break
else alpha=alpha*beta;
end
end
d_x = alpha*d_x; xk = xk + d_x;
[gk1 Aek1 Aik1] = gn(xk);
gama_k = (gk1-gk)-(Aek1-Aek)’*d_y-(Aik1-Aik)’*d_z; % Fórmula BFGS
qk = Zk*d_x; dg = d_x’*gama_k; ww = d_x’*qk;
if dg >= 0.2*ww, thet = 1; else thet = 0.8*ww/(ww-dg); end
eta = thet*gama_k + (1-thet)*qk;
phi = 1/ww; cta = 1/(d_x’*eta);
Zk = Zk + cta*(eta*eta’) - phi*(qk*qk’); % Nueva hessiana fun. de Lagrange
Aek = Aek1; Aik = Aik1; gk = gk1;
[fk ak ck] = fn(xk);
muk = d_z; lak = d_y; d = norm(d_x); k = k + 1;
end

Cuadro 16.16

Los diversos vectores y matrices del problema son


2 3
2x1 2x2
  6 1 07
6 7
2x1 6 7
rfk D y Jk D 6 1 0 7 :
1 6 7
4 0 15
0 1

Aplicando el programa se obtiene lo que muestra el cuadro 16.17.

>> p=1; q=4;


>> x0=[4 3]’;
>> [xs lak muk fs k]=sqp_general_1(@f_ex15_4,@g_ex15_4,x0,p,q,1.e-10)
xs =
1.000000000000160
2.828427124751375
lak =
0.176776695296306
muk =
1.646446609401296
0.000000000000000
0.000000000000000
0.000000000000000
fs =
3.828427124751695
k =
6

Cuadro 16.17

Las funciones a las que llama el script anterior para calcular la función objetivo, las condiciones, gradientes y
jacobianas de este ejemplo son las del cuadro 16.18.
408 j Capítulo 16. Optimización. Programación no lineal con condiciones

function [fk ak ck] = f_ex15_4(x)


x1 = x(1); x2 = x(2);
fk = x1^2 + x2;
ak = x1^2 + x2^2 - 9;
ck = [x1-1; -x1+5; x2-2; -x2+4];
end

function [gk Aek Aik] = g_ex15_4(x)


x1 = x(1); x2 = x(2);
gk = [2*x1; 1];
Aek = [2*x1 2*x2]; Aik = [1 0; -1 0; 0 1; 0 -1];
end

Cuadro 16.18

Si resolvemos el mismo problema con fmincon de M ATLAB. La función objetivo y su gradiente están en este caso,
debido a los requisitos de este solver, en fg_ejsqp3.m y las condiciones y sus gradientes en cg_ejsqp3.m.

function [fo fog] = fg_ejsqp3(x)


x1 = x(1); x2 = x(2);
fo = x1^2 + x2;
fog = [2*x1; 1];
end

function [c ceq cg ceqg] = cg_ejsqp3(x)


x1 = x(1); x2 = x(2);
c = -[x1-1; -x1+5; x2-2; -x2+4];
ceq = x1^2 + x2^2 - 9;
ceqg = [2*x1 2*x2]’;
cg = -[1 0; -1 0; 0 1; 0 -1]’;
end

Partiendo del mismo punto x0 , y con los mismos parámetros de optimización, los resultados que se obtienen son los
del cuadro 16.19.

16.5 Métodos de puntos interiores


Consideraremos el problema general y el mismo con variables de holgura:

minimizar f .x/
minimizar
n
f .x/ x;s
x2R
sujeta a cE .x/ D 0
sujeta a ci .x/ D 0; i 2 E;
cI .x/ s D 0
ci .x/  0; i 2 I:
s  0:

Las condiciones KKT de este problema se escriben así

rf .x/ AET .x/y AIT .x/z D0


Sz e D0
cE .x/ D0
cI .x/ s D 0;

debiendo ser  D 0, s  0 y z  0.
Las matrices AE y AI son las jacobianas de las condiciones cE .x/ y cI .x/, respectivamente, y los vectores y y z
sus multiplicadores de Lagrange. S es una matriz diagonal cuyos coeficientes son los de s. La segunda ecuación, con
 D 0, es la de complementariedad.
Como razonábamos en Programación Lineal, para solventar la dificultad que supone la no negatividad de esas va-
riables, se introduce un  > 0 –denominado parámetro barrera– que haga que Sz D e a lo largo del proceso de
optimización, lo que permitirá que s y z se mantengan estrictamente positivas. Recalculando  de iteración en iteración,
y haciendo que tienda a cero en el global del proceso se acabará consiguiendo cumplir las condiciones KKT.
16.5 Métodos de puntos interiores j 409

>> [x fval mflag output lambda grad hessian]=fmincon(@fg_ejsqp3,[4;3],...


[],[],[],[],[],[],@cg_ejsqp3,options)
Norm of First-order
Iter F-count f(x) Feasibility Steplength step optimality
0 1 1.900000e+001 1.600e+001 5.000e+000
1 3 5.562500e+000 8.563e+000 1.000e+000 2.926e+000 2.313e+000
2 5 4.007813e+000 1.047e+000 1.000e+000 1.023e+000 1.010e+000
3 7 3.833776e+000 3.029e-002 1.000e+000 1.740e-001 8.322e-002
4 9 3.828432e+000 2.856e-005 1.000e+000 5.344e-003 2.051e-003
5 11 3.828427e+000 2.549e-011 1.000e+000 5.049e-006 1.816e-006

Local minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in


feasible directions, to within the default value of the function tolerance,
and constraints were satisfied to within the default value of the constraint tolerance.

<stopping criteria details>


x =
1.000000000000000
2.828427124750697
fval =
3.828427124750697
mflag =
1
output =
iterations: 5
funcCount: 11
algorithm: ’sequential quadratic programming’
message: [1x782 char]
constrviolation: 2.549249700223299e-011
stepsize: 1
firstorderopt: 1.816258994868925e-006
lambda =
eqlin: [0x1 double]
eqnonlin: -0.176776374224092
ineqlin: [0x1 double]
lower: [2x1 double]
upper: [2x1 double]
ineqnonlin: [4x1 double]
grad =
2
1
hessian =
7.282321097662638 0.203510246567942
0.203510246567942 0.006185913353082

Cuadro 16.19

Si esto lo acompasamos con la mejora de una función de mérito que equilibre la minimización de f .x/ con el que se
cumplan las condiciones, esa convergencia llevará a un mínimo local o global del problema.
A este mismo enfoque se llega si, como en Programación
P lineal una vez más, se considera el problema barrera del
original en el que la función objetivo es f .x/  m iD1 log si.
Si se aplica el método de Newton para resolver el sistema de ecuaciones que determinan las condiciones KKT del
problema, se tiene en cada iteración un sistema como éste
2 2 32 3 2 3
rxx L 0 AET .x/ AIT .x/ px rf .x/ AET .x/y AIT .x/z
6 0 Z 0 S 76 ps 7 6 Sz e 7
6 76 7D 6 7;
4 AE .x/ 0 0 0 54 py 5 4 cE .x/ 5
AI .x/ I 0 0 pz cI .x/ s
donde L es la función de Lagrange del problema
L.x; s; y; z/ D f .x/ y T cE .x/ zT .cI .x/ s/ :
Después de obtenida la solución de ese sistema de ecuaciones, se determina un nuevo punto del proceso iterativo
.x C ; sC ; y C ; zC / tal que
x C D x C ˛smax ps ; sC D s C ˛smax ps
C max
y D y C ˛z py ; zC D z C ˛zmax pz ;
410 j Capítulo 16. Optimización. Programación no lineal con condiciones

donde
˛smax D mKax f˛ 2 .0; 1 W s C ˛ps  .1  /sg ;
˛zmax D mKax f˛ 2 .0; 1 W z C ˛pz  .1  /zg ;
con  2 .0; 1/: normalmente 0;995.
El proceso pararía cuando el error
˚
E.x; s; y; zI / D mKax krf .x/ AET .x/y AIT .x/zk; kSz ek;
kcE .x/k; kcI .x/ skg

esté dentro de una tolerancia adecuada.


Para facilitar la resolución del sistema de ecuaciones anterior, la matriz se reescribe en forma simétrica de esta manera:
2 2 32 3 2 3
rxx L 0 AET .x/ AIT .x/ px rf .x/ AET .x/y AIT .x/z
6 0 ‰ 0 I 7 6 7 6 z S 1 e 7
6 76 ps 7 D 6 7;
4 AE .x/ 0 0 0 54 py 5 4 cE .x/ 5
AI .x/ I 0 0 pz cI .x/ s

donde ‰ D S 1 Z .
El algoritmo básico de punto interior para programación no lineal es el que explicita el cuadro 16.20.

 Algoritmo de Puntos Interiores para Programación No Lineal con condiciones


Dados Una f .x/, un punto inicial, una B0 si es el caso, un  > 0,
unos ;  2 .0; 1/, una tol.  y  t ol
Repetir hasta que E.x; s; y; z; 0/   t ol
Repetir hasta que E.x; s; y; z; /  
Resolver sistema KKT: obtener p D .px ; ps ; py ; pz /
Calcular ˛smax , ˛zmax ; hacer pw D .px ; ps /.
Calcular amplitudes de paso ˛s y ˛z que cumplan
ˆ .xk C ˛s px ; sk C ˛s ps /  ˆ .xk ; sk / C ˛s rˆ .xk ; sk ; pw /T p
Obtener .xkC1 ; skC1 ; ykC1 ; zkC1 /
Si cuasi Newton, adaptar Bk , k kC1
end
Hacer   y adaptar 
end

Cuadro 16.20

Uno de las cuestiones siempre presente en todos los procedimientos que estudiamos es el dar el paso más adecuado
en la dirección de búsqueda. En el caso del método primal-dual, para calcular esa amplitud de paso se usa una función
de mérito en términos de la función barrera:
m
X
ˆ .x; s/ D f .x/  log si C kcE .x/k C kcI .x/ sk:
i D1

Las normas pueden ser la 1 o la 2 y  un parámetro que pondere el peso del incumplimiento de los factores a los que
afecta con el de los logaritmos.
En la determinación de la amplitud de paso, una vez calculado el paso p.x; s/ y los ˛smax y ˛zmax , mediante backtrac-
king se calculan unos
˛s 2 .0; ˛smax ; ˛z 2 .0; ˛zmax 
que proporcionen un decremento suficiente en la función de mérito anterior. El nuevo paso será

x C D x C ˛s ps ; sC D s C ˛s ps
y C D y C ˛z p y ; zC D z C ˛z pz :
16.5 Métodos de puntos interiores j 411

16.5.1 Aproximación cuasi Newton


2
La idea es adaptar en cada paso del proceso iterativo la matriz rxx L mediante una fórmula adecuada: BFGS, por
ejemplo, u otras.
Si es BFGS, la aproximación B de esa matriz estaría dada, de iteración en iteración, por la expresión

Bk xk xkT Bk lk lkT
BkC1 D Bk C ;
xkT Bk xk lkT xk

donde
xk D xk xk 1 y
lk D rx L.xk ; sk ; yk ; zk / rx L.xk 1 ; sk ; yk ; zk /:

16.5.2 Implementación práctica en Matlab


Vamos a implementar en M ATLAB un caso particular del problema:

minimizar
n
f .x/
x2R
sujeta a c.x/  0:

El caso en el que haya además condiciones de igualdad es esencialmente similar, aunque complica un poco la formula-
ción. Lo que sigue es una adaptación de la estrategia del programa LOQO.
Escrito con variables de holgura, el problemas es

minimizar f .x/
x;s
sujeta a c.x/ sD0
s  0:

Su función de Lagrange L.x; s; ; / D f .x/ T .c.x/ s/ T s.


Las condiciones de óptimo de KKT de este problema son estrictamente

rf .x/ A T .x/ D 0
D 
c.x/ s D 0
si i D 0
s 0:

Para evitar la condición de no negatividad del vector s se introduce esta formulación equivalente del problema (tradi-
cional como vimos en PL) X
minimizar f .x/  ln si
x;s
sujeta a c.x/ s D 0;
P
cuya función de Lagrange es L.x; s; ; / D f .x/  ln si T .c.x/ s/ : Sus condiciones KKT son

rf .x/ A T .x/ D 0
c.x/ s D 0
S 1 e C  D 0;

que, si nos fijamos bien, son idénticas a las anteriores, salvo el escalar  (que no el vector ) que es el que tiene como
objetivo que las variables del vector s no se acerquen mucho a cero. Si a la tercera ecuación se le multiplica por S se
llega al conocido sistema primal-dual, básico en el algoritmo que implementamos.
412 j Capítulo 16. Optimización. Programación no lineal con condiciones

Aplicándole Newton, en cada paso se resuelve el siguiente sistema


2 32 3 2 3
2
rxx L 0 AkT xk rf .x/ C AkT k
4 0 ƒk Sk 54 sk 5 D4 e Sk ƒk e 5 :
Ak I 0 k ck C sk

La matriz de este sistema no es simétrica pero puede hacerse así: multipliquemos la primera ecuación por I y la
segunda por Sk 1 :
2 32 3 2 3
Hk 0 AkT xk k
4 0 Sk 1 ƒk I 54 sk 5 D4 k 5 ;
Ak I 0 k k
P
donde H k D H .x; / D r 2 f .x/ i r 2 ci .x/
Ak D rc.x/
 k D rf .x/ AkT k D gk AkT k
k D Sk 1 e k
k D sk ck :
El vector k mide la no factibilidad del problema primal. Por analogía con Programación Lienal,  k mide lo lejos que
está .xk ; k / de ser un punto factible del problema dual.
El algoritmo procedería iterativamente a partir de la dirección Œxk ; sk ; k T , supuesto que sea de descenso,
obteniéndose un nuevo punto
xkC1 D xk C ˛k xk
skC1 D sk C ˛k sk
kC1 D k C ˛k k
calculando para ello la amplitud de paso ˛k que minimiza una función de mérito adecuada. Luego se usa la función de
mérito
X ˇ
‰ˇ; .x; s/ D f .x/  ln si C ks c.x/k22 ;
2
donde  cambia de iteración en iteración, tendiendo a cero, y ˇ es una constante que penalice la no factibilidad del
primal y que haga que la dirección sea realmente de descenso en ‰ˇ; .x; s/ si el problema no es convexo.
Si el problema no es convexo, la matriz hessiana de la función de Lagrange del problema hay que modificarla en cada
iteración para que sea definida positiva. Para ello se hace

O k D H k .xk ; k / C I;
H

escogiéndose  a partir del valor propio más pequeño de H k .xk ; k /.


El listado del cuadro 16.21 está basado en los artículos de LOQO y unos scripts suministrados por Andreas Anto-
niou, Profesor de la Universidad de Victoria de Canadá.
Ejemplo 16.7 Resolvamos el siguiente problema no lineal de la colección de K. Schittkowski [2009]:

minimizar .x1 2/2 C .x2 1/2


sujeta a 0;25x12 x22 C 1  0
x1 2x2 C 1 D 0:

Partiremos del punto x0 D Œ2; 2T . Como hay una condición de igualdad, vamos a resolver

minimizar .x1 2/2 C .x2 1/2


sujeta a 0;25x12 x22 C 1  0
x1 2x2 C 1  0
x1 C 2x2 1  0:
16.5 Métodos de puntos interiores j 413

function [xk,yk,lmdk,fs,ck,k,L] = NLP_IP_nc(fcname,gname,hname,x0,y0,lmd0,tau0)


% Método de punto interior para min. f(x), s. a g(x) >= 0
xk = x0(:); yk = y0(:); q = length(y0); lmdk = lmd0(:);
tau = tau0; n = length(x0); E2 = eye(n); ei = 5e-4; eo = 1e-5;
q1 = q + 1; L = 0; K = 0; do = 1;
% Bucle exterior
while do >= eo
xk0 = xk; yk0 = yk; lmdk0 = lmdk;
k = 0; di = 1;
while di >= ei % Bucle interior
bt = 0;
fck = feval(fcname,xk); Gk = feval(gname,xk);
fk = fck(1); ck = fck(2:q1);
gk = Gk(:,1); Ak = Gk(:,2:q1)’;
yki = 1./yk; wwk = yki.*lmdk;
Yki = diag(yki); Lk = diag(lmdk);
xlk = [n;q;xk;lmdk];
Hk = feval(hname,xlk);
ew = min(eig(Hk));
if ew <= 0
eb = -1.2*ew + 1e-6;
Hk = Hk + eb*E2;
end
Nk = Hk + Ak’*(Lk*Yki)*Ak;
R = cholinc(sparse(Nk),’inf’);
Nki = R\(R’\eye(n)); % Mat = [-Hk zeros(n,q) Ak’ ;...
gak = tau*yki - lmdk; % zeros(q,n) -diag(wwk) -eye(q) ;...
rk = yk - ck; % Ak -eye(q) zeros(q)];
dx = Nki*(-gk + tau*Ak’*yki + Ak’*(wwk.*rk)); % [L D P] = ldl(Mat);
dL = wwk.*(rk - Ak*dx) + gak; % rhs = [gk-Ak’*lmdk; -gak; rk];
dy = Ak*dx - rk; % [dx; dy; dL] = P*(L’\(D\(L\(P’*rhs))));
% Comprobar si la dirección obtenida es de descenso en función de mérito
ksi = gk - tau*Ak’*yki;
sk = -ksi’*(Nki*ksi) + tau*(yki’*rk) + ksi’*(Nki*Ak’)*(wwk.*rk)...
-bt*norm(rk)^2;
if sk >= 0,
bmin = (sk+bt*norm(rk)^2)/(norm(rk)^2); % bmin = sk/(norm(rk)^2);
bt = 10*bmin;
end
% Cálculo de line search en x e y
awk = max([-dy./yk; -dL./lmdk]);
ak = 0.95/awk;
aks = lsearch_merit(fcname,xk,yk,dx,dy,ak,tau,bt);
xk = xk + aks*dx;
yk = yk + aks*dy;
lmdk = lmdk + aks*dL;
k = k + 1;
di = aks*(norm(dx) + norm(dy) + norm(dL));
end
% Recalcular parámetro de barrera tau.
tsi = q*min(yk.*lmdk)/(yk’*lmdk);
tau = 0.1*(min([0.05*(1-tsi)/tsi,2]))^3*(yk’*lmdk)/q;
K = k + K; L = L + 1;
do = norm(xk-xk0) + norm(yk-yk0) + norm(lmdk-lmdk0);
end
fck = feval(fcname,xk); fs = fck(1); k = K;
end

function [a psm] = lsearch_merit(fcname,xk,yk,dx,dy,ak,tau,bt)


aa = (0:0.01:1)*ak;
ps = zeros(101,1);
for i = 1:101
ai = aa(i);
xki = xk + ai*dx;
yki = yk + ai*dy;
fci = feval(fcname,xki);
fi = fci(1);
cki = fci(2:end);
yci = yki - cki;
ps(i) = fi - tau*sum(log(yki)) + 0.5*bt*(yci’*yci); % F. mérito
end
[psm ind] = min(ps); a = min(1,aa(ind));
end

Cuadro 16.21
414 j Capítulo 16. Optimización. Programación no lineal con condiciones

Los diversos vectores y matrices del problema son:


     
2 .x1 2/ 0;5x1 2x2 2 C 0;51 0
rfk D ; Jk D y Hk D :
2 .x2 1/ 1 2 0 2 C 21

Las functions para calcular la función objetivo, condiciones, gradientes, jacobianas y hessianas son las del cua-
dro 16.22. En ese mismo cuadro se lista una sesión de M ATLAB con NLP_IP_nc() y con esas funciones.

>> x0=[2;2]; y1=[1;1;1];


>> lmd1=[1;1;1]; mu1=0.001;
>> [xs,yk,lmdk,fs,ck,k,L] =...
NLP_IP_nc(’f_ex15_8’,...
’g_ex15_8’,’h_ex15_8’,x0,y1,lmd1,mu1)
xs =
0.822466525719178
function z = f_ex15_8(x) 0.911233262859589
x1 = x(1); x2 = x(2); yk =
ck = [-0.25*x1^2-x2^2+1; x1-2*x2+1; -x1+2*x2-1]; 1.0e-003 *
fk = (x1-2)^2+(x2-1)^2; 0.541144176123609
z = [fk; ck]; 0.000000000000000
end 0.000000000000000
lmdk =
function z = g_ex15_8(x) function z = h_ex15_8(xlk) 1.0e+012 *
x1 = x(1); x2 = x(2); lmdk = xlk(5:7); 0.000000000000000
Ak = [-0.5*x1, -2*x2; 1, -2; -1, 2]; lmd1 = lmdk(1); lmd2 = lmdk(2); lmd3 = lmdk(3); 3.876880823233180
gk = [2*(x1-2); 2*(x2-1)]; z = [2+0.5*lmd1, 0; 0, 2+2*lmd1]; 3.876968062445849
z = [gk, Ak’]; end fs =
end 1.394464616674418
ck =
1.0e-003 *
0.541144176123609
0
0
k = 59
L = 3

Cuadro 16.22

Con el solver fmincon de M ATLAB, para el que construimos un script que luego ejecutamos, se obtiene lo del
cuadro 16.23.

Referencias, fuentes y lecturas complementarias


Gran parte de lo expuesto en este capítulo sigue lo que proponen en su libro Nocedal y Wright [2006]. Lo expuesto
por Boyd y Vandenberghe [2004] también lo he tenido muy presente. He seguido además el argumentario y forma de
exponer de Antoniou y Lu [2007].
Todos los programas están elaborados o reescritos por del autor. Están basados en diversos programas previos en otros
lenguajes de ordenador y traducidos a M ATLAB. También se utilizan ideas de un buenos software obtenidos de Internet.
He tratado de seguir el software de Vanderbei [1999] LOQO y algunos scripts de Antoniou y Lu [2007], aunque no
todos me han funcionado como era de esperar. Los códigos modernos para resolver problemas como los estudiados
en este capítulo, como por ejemplo IPOPT de Wächter y Biegler [2006], entre otros, son sofisticadísimos y fruto del
esfuerzo durante muchos años de muchas personas, por lo que pretender extractar aquí en pocas líneas ese trabajo no
era posible. No obstante he hecho el esfuerzo de tratar de condensar todo en pocos pasos para que el lector o estudioso
pudiese seguir la estrategia utilizada, o reproducirla. En unos años seguro que es posible hacer con códigos como ese u
otros lo mismo que he hecho con el Símplex, dentro del contexto de M ATLAB.
16.5 Métodos de puntos interiores j 415

% Script de prueba de fmincon; Resuelve el problema Ex15_8


x0=[2;2]; options = optimset(’Algorithm’,’interior-point’,...
’Display’,’iter’,’GradObj’,’on’,’GradConstr’,’on’,...
’Hessian’,’user-supplied’,’HessFcn’,@hess_ex158_M);

[x fval mflag output lambda grad hessian]=fmincon(@f_ex158_M,x0,...


[],[],[],[],[],[],@g_ex158_M,options)

>> Script_fmincon_ex158
First-order Norm of
Iter F-count f(x) Feasibility optimality step
0 1 1.000000e+000 4.000e+000 1.332e+000
1 2 5.198962e-001 7.344e-001 6.048e-001 1.107e+000
2 3 1.280727e+000 6.368e-002 2.827e-001 4.740e-001
3 4 1.498705e+000 0.000e+000 5.490e-002 1.000e-001
4 5 1.416079e+000 0.000e+000 1.215e-002 3.685e-002
5 6 1.393937e+000 0.000e+000 2.554e-004 1.009e-002
6 7 1.393468e+000 0.000e+000 1.417e-006 2.146e-004
Local minimum found that satisfies the constraints.
Optimization completed because the objective function is non-decreasing in
feasible directions, to within the default value of the function tolerance,
and constraints were satisfied to within the default value of the constraint tolerance.

<stopping criteria details>


x =
0.822874584569342
0.911437292284671
fval =
1.393467596850670
mflag =
1
output =
iterations: 6
funcCount: 7
constrviolation: 0
stepsize: 2.146411271157580e-004
algorithm: ’interior-point’
firstorderopt: 1.416750245231135e-006
cgiterations: 0
message: [1x782 char]
lambda =
eqlin: [0x1 double]
eqnonlin: 1.594492450496799
ineqlin: [0x1 double]
lower: [2x1 double]
upper: [2x1 double]
ineqnonlin: 1.846594194644163
grad =
-2.354250830861316
-0.177125415430658
hessian =
2.923297097322081 0
0 5.693188389288325

function [f g] = f_ex158_M(x) function [c ceq cg ceqg] = g_ex158_M(x)


x1 = x(1); x2 = x(2); x1 = x(1); x2 = x(2);
f = (x1-2)^2+(x2-1)^2; c = 0.25*x1^2+x2^2-1;
g = [2*(x1-2); 2*(x2-1)]; ceq = x1-2*x2+1;
end cg = [0.5*x1; 2*x2]; ceqg = [1;-2];
end
function h = hess_ex158_M(x,lambda)
h = [2 0;0 2]+lambda.ineqnonlin(1)*[0.5 0;0 2];
end

Cuadro 16.23
416 j Capítulo 16. Optimización. Programación no lineal con condiciones
Capítulo 17

Optimización. Programación entera

Contenido
17.1 El problema de la Programación Entera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
17.2 Resolución gráfica del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
17.3 Resolución numérica. Relajaciones en la formulación . . . . . . . . . . . . . . . . . . . . . . . . . 420
17.4 Algoritmo de planos o cortes de Gomory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
17.5 Algoritmos Branch and Bound - ramificación y acotación . . . . . . . . . . . . . . . . . . . . . . 423
17.6 Programación no lineal con variables Enteras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440

L A programación entera se ocupa del estudio y solución de los problemas de optimizar funciones de diversas
variables sujetas a condiciones de igualdad y/o desigualdad, restringiéndose además a que todas o alguna de esas
variables sólo tomen valores enteros.
Sus orígenes se remontan a los años 50 del siglo XX. El pionero fue Ralph Gomory, EE.UU. 1929.

Gomory

Las áreas de aplicación práctica son muchas allí donde hay que asignar recursos sólo disponibles en cantidades discre-
tas: distribución de mercancías, programación de la producción en factorías, secuenciación de maquinaria en procesos
industriales y productivos, asignación de grupos generadores de energía eléctrica, cadenas de suministro, logística, pro-
gramación de rutas de vuelos, etc.

17.1 El problema de la Programación Entera


La formulación general del problema lineal de Programación Entera es

maximizar
n p
c T x C hT y
x2Z y2R
sujeta a Ax C G y  b
x; y  0:
8.10. OPTIMISATION WITH INTEGER CONSTRAINTS 405

418 j Capítulo 17. Optimización. Programación entera

Figure 8.55: A linear programming


Este problema es un programa entero mixto. Al conjunto S D fx 2 Zn ; y 2 Rp W Ax C Gwhere
problem y  b;  0;our
wexrestrict y 0g se le
atten-
T T T tion
Tto integer
T T values of the decision
denomina región factible. Un punto Œx ; y  2 S se denomina factible. Al punto Œx ; y  2 S , tal que
vector x meaning that the allowable
values of x fall on a regular grid.
c T x  C bT y   c T x C hT y; para todo Œx T ; y T T Here
2 S;the optimum of the linear pro-
gram and the optimum of the integer
linear program are not the same.
se le denomina solución óptima del problema. Al problema en el que todas las variable son enteras,

and worth to max. c Tour


place in x small suitcase to maximise value, (the ’knapsack’ problem), and
x2Zn or should not install a new pump between two storage tanks, (you can’t
whether we should
s. a Ax  b
install half a pump!).

x  variable
In all these cases, the decision 0; must be an integer, since we cannot stop 1.3 times or
build 2.7 distillation columns, or in the latter existence/non-existence example, the variable
will be a binary decision variable. Constrained optimisation problems where the decision
se le conoce como programa entero puro, programa lineal en variables enteras o, simplemente, programa entero. Un
variables are integers are known as integer programming, or a binary linear program if the
caso particular de programa entero es aquel en elare
variables queconstrained
las variables sólo pueden
to be either tomar
zero or one, valores
or finally 0 some
if only ó 1. are required to be
En programación entera no existe un integers,
métodothen universal,
it is knowncomo el Símplex
as a mixed-integer enprogramming
linear programación lineal,
or MILP que obtiene la
problem.
solución sirviéndose de las propiedades de convexidad
Surprisingly binarydelorproblema a resolver.
integer programming En programación
problems are much harder entera lathan
to solve convexidad
opti-
desaparece, no pudiéndose utilizar por tanto la noción
misation dewith
problems gradiente parasolutions.
real number caracterizar y buscar
The reason elisóptimo
for this dediscrete,
that being un problema.
we
cannot use gradients or search directions, and therefore the number of possible solutions
Se hace necesario emplear métodos de 406
resolución específicos del aspecto combinatorio de las
grows combinatorially. Explicit enumeration therefore is quickly CHAPTER
variables enteras.
8. OPTIMISATION
out of the question. One
Ls programas enteros, como muestran maylos dos primeros
be tempted ejemplos
in this desimply
instance to la figura, si sethe
first solve quiere maximizar
LP problem y, o minimizar
in the normal man-
y, no tienen por qué tener el óptimo decision
cerca delvariables,
ner, and óptimo
then del
subsequentlyprograma
(circles in Fig.con
round this variables
optimum
8.57), see continuas,
weresult to the nearestniintegers.
in fact there issiquiera el óptimo
However,
no feasible as es
region at all,
8.10. OPTIMISATION WITH INTEGER CONSTRAINTS 405be reasonable, or even feasible.
illustrated in Fig. 8.56 that solution may not
un entero próximo a ese óptimo continuo (la segunda
despite figura).
the fact that the relaxed linear problem did have a non-zero feasible region.

Figure 8.55: A linear programming


problem where we restrict our atten-
Figure 8.57: Depending on the spac-
tion to integer values of the decision
ing, a perfectly well-formed linear pro-
vector x meaning that the allowable Figure 8.56: Note that integer opti-
gram
valuesmayof xnotfall
have
on a
a feasible integer
regular grid. mum is not simply the truncated or
solution at all. Note in this example,
Here the optimum of the linear pro- rounded version of the real-valued
there
gramareandnothe
integers,
optimum◦, of
inside the fea-
the integer optimum, but could in fact be ‘arbi-
sible region.
linear program are not the same. trarily’ far away.

ToThere
solvecan
integer linear
be other programming
complications as well.problems we example
Consider the could do an exhaustive
shown search over all
in Fig. 8.57 which
and También puede
worth to place quesmall
in our la región
suitcasefactible no
theshows
to maximise registre
feasible ni ’knapsack’
a perfectly
value, (the un For
integers. sólo
valid linear entero
large factible,
problems,
optimisation
problem), and thisexistiendo
problemis with dicho
combinatorially
a convex espacio
large,
feasible enaClearly
so
region. el sentido
better solution
tradicional.
whether somewhere
we should or should not install a newstrategy,
pump between in two
in fact that region
of the there
onestorage tanks,
only will be can’t
(you
known an optimum,
practical irrespective
solution of whatis our
strategies, particular
to use what is known
install half a pump!). as objective
a branchfunction
and boundhappens to be. However
technique, when we restrict
[45, p411–415]. Here our
we attention
start by to just integer
solving a relaxed ver-
sion of the original problem, namely we simply ignore the integer constraints, and solve
17.1.1 Ejemplos
In all these cases, the decision variable must be an integer, since we cannot stop 1.3 times or
the linear program as usual. The term ‘relaxed’ means that we have deliberately relaxed
build 2.7 distillation columns, or in the latter existence/non-existence example, the variable
some of the constraints in order to achieve a solution, albeit perhaps an infeasible one. If
will be a binary decision variable. Constrained optimisation problems where the decision
Enunciaremos dos de los más significados y clásicos.
we happen
variables are integers are known as integer programming, fortuitously
or to stumble
a binary linear program across
if the an integer solution, we are done. However in
mostorcases,
variables are constrained to be either zero or one, finallywe will some
if only not get
arean integertosolution,
required be but we do have an under-estimator of the
minimum cost function. In
integers, then it is known as a mixed-integer linear programming or MILP problem. the case of Fig. 8.56, we can see that the real-valued optimum
17.1.1.1 El problema de la mochila
is about x = 3.5, y = 5.8. In this case we can take one of the non-integer variables, say x
Surprisingly binary or integer programming problems are much
and resolve harder
the linear to solvetwice,
program than opti-
but this time with an additional constraint, the first
Es posiblemente
misation el más
problems with clásicosolutions.
real number de la programación forentera.
The reasonadds
re-solution this
theisbound
that being
x >discrete, we second adds x < 3.
4, and the
cannotTrata
usede un transportista
gradients que dispone
or search directions, andde un vehículo
therefore the number(o mochila) consolutions
of possible capacidad volumétrica de transporte b, en el que
This
grows combinatorially. Explicit enumeration therefore
se pueden alojar diferentes objetos j de continual aspawning
is quickly
volúmenes out of theof optimisation
question. Oneproblems is known as branching and would soon
j y valores económicos cj , y que quiere maximizar el valor de lo
may be tempted in this instance to simply first solve the LP
overwhelm us problem
if we were in the
notnormal man- do some pruning. Obviously if any of the new
to somehow
transportado
ner, en cada viaje.
and then subsequently round this optimum result toare
solutions theinteger,
nearest we integers. However,that
can terminate as particular branch (or prune), or if the objective
Su formulación
illustrated es solution may not befunction
in Fig. 8.56 that reasonable, or even
is worse X feasible.
than an integer solution already established, then we can also termi-
max.as well.
nate that branch cj xjThis strategy continues until we have fathomed all the possible
branches. Note however,
j that we have not necessarily solved an LP at every possible com-
X
bination; that is something we are trying hard to avoid.
s. a aj xj  b
j
Problem 8.3 An integer LP example
xj D 0 ó 1:
If we minimise J (x) = −53x1 − 94x2
subject to:
−x1 + 5x2 ≤ 99
5x1 + 8x2 ≤ 210
Figure 8.56: Note that integer opti-4x1 − x2 ≤ 21
mum is not simply the truncated or
rounded version of the real-valued
−5x 1 + x2 ≤ −10

optimum, but could in fact be ‘arbi-


and the non-negative requirement, x ≥ 0, then the (real-valued) optimum point is,
trarily’ far away.
17.3 Resolución gráfica del problema j 419

17.1.1.2 Gestión de un servicio hospitalario


En un determinado servicio de asistencia hospitalaria hay i enfermos a la espera de una operación. Cada enfermo necesita
una operación de duración Di .
Dada una disponibilidad de cirujanos, la suma de las duraciones de las operaciones que pueden hacerse cada día j del
período de estudio es igual a Tj .
Se trata de minimizar una función económica que refleja la suma de las penalizaciones por esperas de los diferentes
enfermos (esta penalización es una función lineal creciente de la espera).
El problema se formula de la siguiente manera:
XX
max. cij xij
i j
X
s. a Di xij  Tj para todo j
i X
xij D 1 para todo i
j
xij D 0 ó 1 para todo i y j .
La variable de decisión xij es 1 si el enfermo i se le opera el día j y 0 en el caso contrario.

17.2 Resolución gráfica del problema


Recordemos de programación lineal que las condiciones del problema
maximizar
n p
c T x C hT y
x2Z y2R
sujeta a Ax C G y  b
x; y  0;
en el caso en que x 2 Rn e y 2 Rp , definen un politopo (poliedro si es acotado) en uno de cuyos puntos extremos la
función objetivo c T x C hT y alcanza el máximo. En general, desafortunadamente, las variables xj es ese punto extremo
no tienen por qué ser enteras.
El politopo contiene todas las soluciones en las que x es entero. Gráficamente se puede determinar la solución mediante
el punto extremo óptimo considerando las variables como continuas y luego, desplazando c T x C hT y hacia dentro del
politopo, encontrando el primer punto Œx T ; y T T en el que x sea entero.
Ejemplo 17.1 Consideremos el problema de programación entera
x 1 + x 2 ≤ 10
x2 B −x 1 + 4x 2 ≤ 16

3
max. x
2 1
C x2 A
x∗ C
s. a x1 C 4x2  16
x1 C x2  10
5x1 C x2  36 5x 1 + x 2 ≤ 36
x1 ; x 2  0
x1 y x2 enteras. f. O.
D
0 x1

Sin tener en cuenta la condición de que las variables han de ser enteras, la región factible es el poliedro convexo que
generan los vértices 0; A; B; C y D de la figura. El valor máximo de la función objetivo en este poliedro se alcanza en
C . Como la auténtica región factible la constituyen los puntos interiores enteros de ese poliedro, el máximo del problema
se alcanza en el punto x  D Œ6; 4T .
420 j Capítulo 17. Optimización. Programación entera

17.3 Resolución numérica. Relajaciones en la formulación


La idea es tratar de sustituir el programa entero original por otro más fácil de resolver en el que se relajen algunas de
las condiciones. La solución del problema relajado debería proporcionar una cota de la función objetivo del problema
original.
Mediante un proceso iterativo que integre estas relajaciones y la resolución de cada unos de los subproblemas que de
ellas se derivan, se puede acotar cada vez más la función objetivo hasta obtener la solución final.
Una relajación del programa entero
˚
.PE/ max. c T x W x 2 S

la constituye cualquier subproblema de la forma

.PR/ max. fzPR .x/ W x 2 SPR g

con las propiedades siguientes:

SPR  S y c T x  zPR .x/ para x 2 S:

Proposición 17.1 Si el problema (PR) no es factible, tampoco lo es (PE). Si (PR) es factible, los valores de las
funciones objetivo cumplen que zPE  zPR .

17.3.1 Relajación lineal


La relajación más evidente resulta de omitir la condición de que las variables han de ser enteras. Si el conjunto o región
factible del programa entero es S D P \ Zn , la relajación lineal es
˚
.PL/ max. c T x W x 2 P ; P D fx 2 Rn W Ax  b; x  0g:

Proposición 17.2 Si (PL) es no acotado, el programa entero (PE) es no factible o no acotado.


Un algoritmo tipo para programación entera, con relajación, es el del cuadro 17.1.

.1/ .1/
Paso 0 – Inicialización Hacer i D 1, w  D 1 y z  D 1. Escoger un SR  S tal que zR  c T x para x 2 S .
Paso 1 – Relajación Resolver el problema PE relajado:
  n o
.i/ .i/
R.i/ max. zR .x/ W x 2 SR :

Paso 2 – Comprobación de óptimo Sea x .i/ la solución del problema anterior. Si x .i/ 2 S : PARAR; ésta es la solución
óptima de .PE/ con función objetivo w  D c T x .i/ D z  ; si no, seguir.
.i/
Paso 3 – Mejora de la solución Hacer w  D zR , z  D c T x .i/ si x .i/ 2 S y i i C 1.
.i C1/ .iC1/ .i/ .i C1/ .i C1/ .i/
Escoger SR tal que S  SR  SR y zR .x/ tal que c T x  zR .x/  zR .x/ para x 2 S con
.i C1/ .i/ .iC1/ .i/
SR ¤ SR o zR .x/ ¤ zR .x/.
Ir al paso 1

Cuadro 17.1: Algoritmo general de Programación Entera

17.4 Algoritmo de planos o cortes de Gomory


Este algoritmo, formulado por Gomory en 1960, es uno de los primeros que se emplearon para resolver el problema
general de programación entera.
17.4 Algoritmo de planos o cortes de Gomory j 421

Consideraremos que el problema que resuelve —usando la notación original— es


n o
max. c T x W x 2 S .e/ ; donde S .e/ D fx 2 Zn W Ax D b; x  0g;

y está escrito de la siguiente forma:


n  T o
.PE/ max. x0 W x0 ; x T 2 S .0/ ;

donde ˚
S .0/ D x0 2 Z; x 2 Zn W x0 c T x D 0; Ax D b; x  0 :
Supondremos que se dispone de una solución y base óptimas de la relajación lineal del programa entero.
El problema se puede escribir así:
maximizar x0
X
s. a xBi C aN ij xj D aN i 0 para i D 0; 1; : : : ; m
j 2H
xB0 2 Z; xBi 2 ZC ; para i D 1; : : : ; m
xj 2 ZC para j 2 H;
Las x0 D xB0 y xBi ; i D 1; : : : ; m, son las variables básicas, y xj , j 2 H  N D f1; : : : ; ng, las no básicas
xB D B 1 b B 1 NxN y z D cB B 1 b C .cN cB B 1 N /xN .
Como esta base es factible en el programa primal y dual se cumple que aN i 0  0 para i D 1; : : : ; m, y que aN 0j  0,
para j 2 H .
Suponiendo existe un i tal que aN i 0 … Z, se tiene el siguiente resultado.
P
Proposición 17.3 Corte fraccionario de Gomory. Si aN i 0 … Z, j 2H fij xj D fi 0 C xnC1 , xnC1 2 ZC , es una
condición válida en S .0/ , donde fij D aN ij baN ij c para j 2 H y fi 0 D aN i 0 baN i 0 c.

Ejemplo 17.2 Vamos a estudiar el programa entero


.PE/ maximizar 7x1 C 2x2
s. a x1 C 2x2  4
5x1 C x2  20
2x1 2x2  7
x 2 Z2C :

Introduzcamos las variables de holgura x3 , x4 y x5 . El programa1 queda:


maximizar 7x1 C 2x2
s. a x1 C 2x2 C x3 D 4
5x1 C x2 C x4 D 20
2x1 2x2 C x5 D 7
x1 ; x 2 2 Z C I x3 ; x 4 ; x 5  0:
Restringiendo las variables x3 , x4 y x5 a tomar valores enteros el problema es:
maximizar x0
s. a x0 7x1 2x2 D 0
x1 C 2x2 C x3 D 4
5x1 C x2 C x4 D 20
2x1 2x2 C x5 D 7
x0 2 Z; xj 2 ZC para j D 1; : : : ; 5:
1 Aunque las variables de holgura serán enteras, no hay ninguna necesidad de restringirlas a tomar valores enteros.
422 j Capítulo 17. Optimización. Programación entera

La solución de la relajación lineal de este programa entero es


3 16 332
x0 C x
11 3
C x
11 4
D 11
1 2 36
x1 x
11 3
C x
11 4
D 11
5 1 40
x2 C x
11 3
C x
11 4
D 11
8 6 75
x
11 3
C x
11 4
C x5 D 11
:
El corte de Gomory que se puede obtener de la primera ecuación
3 5 2
x3 C x4 D C x6 ; x6 2 ZC :
11 11 11

Cuando se añade un corte de Gomory, la nueva base, que incluye xnCi como variable básica, es factible del dual. La
factibilidad del primal se incumple sólo en que xnCi es negativa. Para reoptimizar el problema lo más adecuado es usar
el método dual del simplex.
Si PR.i/ es no acotado, el programa entero, PE, es no acotado o no factible.
En el cuadro 17.2 se lista el algoritmo para programación entera de los planos cortantes de Gomory.

Paso 0 – Inicialización Hacer


n o
.1/
SR D x0 2 R; x 2 Rn W x0 c T x D 0; Ax D b; x  0 ;

.1/
i D 1 y zR D x0 .
Paso 1 – Resolución de la relajación lineal Resolver el programa entero relajado
n o
.i/
.PR.i/ / max. x0 W Œx0 ; x T T 2 SR :

 T
.i/
Si PR.i/ es factible y tiene solución óptima, Œx0 ; x .i/ T , continuar.
Paso 2 – Comprobación de óptimo Si x .i/ 2 ZnC , ésta es la solución óptima del programa entero.
Paso 3 – Comprobación de no factibilidad Si PR.i/ no es factible, el programa entero original no es factible.
P .i/ .i/ .i/
Paso 4 – Adición de un corte de Gomory Escoger una fila xBi C j 2H .i / aN ij xj D aN i 0 con aN i 0 … Z. Hacer
X
fkj xj xnCi D fk0 ; k D 1; : : : ; m; xnCi 2 ZC ;
j 2H .i /

el corte de Gomory de esa fila. Hacer


8 9
< X =
.i C1/ .i/
SR D SR \ x0 2 R; x 2 RnCi W fkj xj xnCi D fk0 ; x  0 :
: ;
j 2H .i /

Hacer i i C 1 e ir al paso 1.

Cuadro 17.2: Algoritmo de los planos cortantes de Gomory

Ejemplo 17.3 Siguiendo con el ejemplo 17.2, la última solución de PR.1/ a la que hacíamos referencia era
3 16 332
x0 C x
11 3
C x
11 4
D 11
1 2 36
x1 x
11 3
C x
11 4
D 11
5 1 40
x2 C x
11 3
C x
11 4
D 11
8 6 75
x
11 3
C x
11 4
C x5 D 11
;
17.5 Algoritmos Branch and Bound - ramificación y acotación j 423

h T i  
donde x3 D x4 D 0. Es decir x0.1/ ; x .1/ D Œx0.1/ ; x1.1/ ; : : : ; x5.1/  D 332
11
; 36 40
; ;
11 11
0; 0; 75
11
. El corte de Gomory
5 1 7 .1/
respecto de la tercera ecuación es x
11 3
C x
11 4
D 11
C x6 , x6 2 ZC . Añadiéndolo a PR se obtiene PR.2/ cuya
solución es
x0 C 57 x4 C 3
x
5 6
D 149
5
x1 C 51 x4 1
x
5 6
D 17
5
x2 C x6 D 3
2 8 29
x
5 4
C x5 C x
5 6
D 5
1 11 7
x3 C x
5 4 5 6
x D 5
:

El corte de Gomory correspondiente a la primera de estas ecuaciones es 52 x4 C 35 x6 D 4


5
C x7 , x7 2 ZC . Añadiéndolo
a PR.2/ se obtiene PR.3/ , de solución:

x0 C x4 C x7 D 29
1 1 11
x1 C x
3 4
x
3 7
D 3
2 5 5
x2 x
3 4
C x
3 7
D 3
5 11 13
x
3 4
C x5 x
3 7
D 3
2 8 11
x3 x
3 4
C x
3 7
D 3
2 5 4
x
3 4
C x6 x
3 7
D 3
:

2
 ˘
El siguiente corte se elige de la fila x2 x
3 4
C 53 x7 D 53 . Si recordamos que 2
3
D 2
3
. 3
3
/ D 31 , es

1 2 2
x4 C x7 D C x8 ; x8 2 ZC :
3 3 3

La solución óptima de PR.4/ —también del problema original—, es


h i
x0.4/ ; x1.4/ ; : : : ; x6.4/ ; x7.4/ ; x8.4/ D Œ28; 4; 0; 8; 0; 1; 3; 1; 0:

En términos de las variables originales, los tres cortes añadidos al problema son x2  3, 2x1 Cx2  9 y 3x1 Cx2  12.
En la figura 17.1 se ve el proceso seguido en este ejemplo.

17.5 Algoritmos Branch and Bound - ramificación y acotación


Siguen la idea de dividir la región factible, S, como si las variables que la definen fuesen las ramas de un árbol, e ir
acotando la solución del problema llevando a cabo el estudio de esas ramas.
El conjunto fS .i/ W i D 1; : : : ; kg se denomina división de la región factible, S , de un programa entero, si [kiD1 S .i/ D
S . Una división se denomina partición si S .i/ \ S .j / D ; para i; j D 1; : : : ; k, i ¤ j . La división se suele hacer de
forma recursiva como se ve en la figura 17.2. Cuando S  Zn y las variables son 0 ó 1, la forma más simple de hacer la
división recursiva es la de la figura 17.3.
Estos algoritmos necesitan algún procedimiento para, de forma ordenada, eliminar —podar— ramas del árbol de
búsqueda.
Proposición 17.4 El árbol de búsqueda se puede podar a partir del nudo correspondiente a S .i/ si se cumplen cual-
quiera de las siguientes condiciones:
1. No factibilidad: S .i/ D ;.
2. Optimalidad: se ha llegado al óptimo de PE .i/ .
.i/
3. Existencia de un valor dominante zPE  zPE .
424 j Capítulo 17. Optimización. Programación entera

x2

x (1)

x(2)
3
Corte 1

2
x (3)

Corte 3 Corte 2

x (4)
x1
1 2 3 4
Figura 17.1: Diversos cortes de Gomory añadidos al problema del ejemplo 17.2

S = S (0)

S (1) S (2)

S (11) S (22)
S (12) S (13) S (21)

S (121) S (122)

Figura 17.2: División de una región factible de Programación Entera


17.5 Algoritmos Branch and Bound - ramificación y acotación j 425

x1 = 0 x1 = 1

S (0) S (1)

x2 = 0 x2 = 1 x2 = 0 x2 = 1

S (00) S (01) S (10) S (11)

x3 = 0 x3 = 1 x3 = 0 x3 = 1 x3 = 0 x3 = 1 x3 = 0 x3 = 1

S (000) S (001) S (010) S (011) S (100) S (101) S (110) S (111)

Figura 17.3: División de una región factible S cuando las variables son 0 ó 1

.i/ .i/
Para no tener que resolver PE .i/ se resuelve su relajación lineal: esto es, PL.i/ con S .i/  SPL y zPL .x/  c T x
.i/
para x 2 S .
Proposición 17.5 El árbol de búsqueda puede podarse a partir del nudo correspondiente a S .i/ si se cumple cualquiera
de las condiciones siguientes:
1. El programa PL.i/ no es factible.
.i/ .i/ .i/ .i/
2. El óptimo xPL de PL.i/ cumple que xPL 2 S .i/ y que zPL D c T xPL .
.i/
3. zPL  zPE , donde zPE es alguna solución factible de PE.

Ejemplo 17.4 Considérese el siguiente programa entero, y la división y su árbol de búsqueda a que dan lugar tal como
se puede ver en la figura 17.4.

x1 = 0 x1 = 1

maximizar 100x1 C 72x2 C 36x3


S (0) S (1)
s. a 2x1 C x2 0
4x1 C x3  0 x2 = 0 x2 = 1
x1 C x2 C x3  0
x 2 Z3 .0; 1/: S (10) S (11)

x3 = 0 x3 = 1

S (110) S (111)

Figura 17.4

La solución de la relajación lineal es Œ1=2; 1; 1T ; la función objetivo es 58. Usando la última proposición para podar
426 j Capítulo 17. Optimización. Programación entera

el árbol de búsqueda,
S .0/ D fx  0 W x1 D 0; x2  0; x3  0; x2 C x3  1g D ;;
por lo que el nudo S .0/ se desecha.
La condición de óptimo de los nudos S .110/ y S .111/ se cumple pues estos conjuntos contienen las soluciones
.110/ .111/ .111/
Œ1; 1; 0T y Œ1; 1; 1T , respectivamente. Como, zPE < zPE D 8, se tendrá que zPE D zPE D 8.
.10/ .10/
Aplicando la tercera condición de la mencionada proposición al nudo S se ve que zPL D 64 < zPE , por lo que
se desecha.
Como resultado final se obtiene que x D Œ1; 1; 1T es la solución óptima del programa entero. El valor de su función
objetivo es ZPE D 8.
En el cuadro 17.3 se lista el Algoritmo Branch and Bound general para programación entera.

Paso 0 – Inicialización Hacer L D fPEg, S .0/ D S, z .0/ D 1 y zPE D 1.


Paso 1 – Comprobación de final Si L D ;, la solución x que daba la función objetivo zPE D c T x es la óptima.
Paso 2 – Selección de problema, relajación lineal y resolución Seleccionar y borrar de L un problema PE .i/ . Resolver
.i/ .i/
su relajación lineal PL.i/ . Sea zPL el valor óptimo de la función objetivo de este problema y xPL su solución
óptima (si existe).
.i/
Paso 3 – Poda Si zPL  zPE ir al paso 1 (nótese que si la relajación se resuelve por un algoritmo dual, este paso es
aplicable tan pronto como el valor de la función objetivo del programa dual se hace inferior a zPE ).
.i/
Si xPL … S .i/ ir al paso 4.
.i/ .i/ .i/
Si xPL 2 S .i/ y c T xPL > zPE , hacer zPE D c T xPL . Borrar de L todos los problemas tales que
.i/ .i/
z .i/  zPE . Si c T xPL D zPL ir al paso 1; si no, al paso 4.
.i/
Paso 4 – División Sea fS .ij / gjkD1 una división de S . Añadir los problemas fPE .ij / gjkD1 a L, donde z .ij / D zPL para
j D 1; : : : ; k.
Ir al paso 1.

Cuadro 17.3: Algoritmo Branch and Bound

.i/
L designa una colección de programas enteros, PE .i/ . Cada uno tiene la forma zPE D max. fc T x W x 2 S .i/ g, donde
.i/
S  S.

17.5.1 Branch-and-bound con relajación lineal


Consideraremos los programas enteros generales
˚
.PE/ max. c T x W x 2 S ; con S D fx 2 Zn W Ax  b; x  0g ;

y la forma de resolverlos
Mediante relajación lineal, el conjunto factible, S , se reemplaza por
.0/
SPL D fx 2 Rn W x  0; Ax  bg;

haciéndose en cada relajación zPL .x/ D c T x.


Un código “sencillo” recursivo de M ATLAB para resolver un Programa Entero mediante relajaciones lineales es el del
cuadro 17.4.

17.5.1.1 División de ramas


Al usar relajación lineal la división se debe hacer con condiciones lineales. La forma más conveniente de hacerlo es
como indica la figura 17.5.
17.5 Algoritmos Branch and Bound - ramificación y acotación j 427
680 Capı́tulo 13. Algoritmos generales de relajación
function [xstar,Jmin] = ilp_bb_1(c,A,b,xlb,xub,xstar,Jmin)
% Integer linear programming by (recursive) branch & bound
(i) algorithm uses linprog.m from the optimisation toolbox
Si el programa lineal P L tiene solución óptima, designémosla para facilitar la notación por
% This
tol = 1e-5; % anything less is considered zero
x(i) . Las condiciones para eliminar, rechazar o “podar” el nudo i, y por tanto sus nudos hijos,
if ~exist(’xlb’,’var’), xlb = 0*c; end % canonical 7
if ~exist(’xub’,’var’), xub = Inf*ones(size(c)); end
form (for the moment)
% Upper bound defaults
son: if ~exist(’xstar’,’var’), xstar = []; end
if ~exist(’Jmin’,’var’), Jmin = Inf; end % Try to minimise this
(i) % If prefer OPTI: LPrelax = opti(’f’,c,’ineq’,A,b, ’bounds’, xlb, xub);
1. SP L = ∅ (no factibilidad); % [x,j,exitflag] = solve(LPrelax);
optns = optimset(’display’,’off’); % turn off diagnostics in Linprog
[x,j,exitflag] = linprog(c,A,b,[],[],xlb,xub,[],optns);
2. x(i) ∈ Zn+ (óptimo) y if exitflag~=1, return, end
if j>Jmin, return, end
% if infeasible, branch ended
% if current cost J=cT x is worse, drop
idx = find(abs(x-round(x)) > tol); % which are non-integers ?
if isempty(idx) % All integer solutions
(i)
3. zP L ≤ z P E , donde z es el mejor valor (valor dominante) de las soluciones factibles de
if j<Jmin, xstar=round(x); Jmin=j; end % New integer optimum
PE
return % problem solved
P E encontradas hasta ese momento. Obsérvese que si se resuelve P L(i) por el algoritmo
end
% Depth first recursion
dual del simplex, el rechazo se puede llevar a cabo antes de encontrar el óptimo de P L(i) .
xnlb = xlb; xnlb(idx(1)) = ceil(x(idx(1)));
[xstar,Jmin] = ilp_bb_1(c,A,b,xnlb,xub,xstar,Jmin);
% Take x<--int. greater than x

xnub = xub; xnub(idx(1)) = floor(x(idx(1))); (i) % Take x<--int. less than x


También se puede usar un criterio del tipo z ≤z + ε, para una tolerancia ε > 0
[xstar,Jmin] = ilp_bb_1(c,A,b,xlb,xnub,xstar,Jmin);
PL PE
end
dada.
Cuadro 17.4: Código en M ATLAB para resolver un programa entero general mediante la técnica Branch and Bound

13.2.1.2 División
Se trata de que desde el nudo que define una solución, si ésta no tiene como entero alguno de sus elementos que debe
Como seserlo,
usa relajación lineal en cada nudo del árbol enumerativo, la división se debe hacer
j , se establezca una dicotomía que haga partir de esa solución dos nuevas ramas: una en la que ese xj se acote
añadiendo condiciones
superiormente por su lineales. Unainferior
entero inmediato forma evidente
y otra que se acotedeinferiormente
hacer esto esentero
por su tomar S = S (1) ∪ S (2) con
superior.
T
S (1) = S ∩Los ℜn :programas
{xdos∈nuevos x ≥ 0,sedpueden
x ≤resolver S (2) =
d0 } ymediante, porSejemplo, ℜn :dual
∩ {xel∈método x≥ 0, dT xEl≥
del símplex. tamaño
d0 +de 1},
la basedonde
T Tseguirán+1
igual. (0)
[d , d0 ] ∈ Z . Si x es la solución del programa lineal (relajación inicial) inicial:
 
(P L(0) ) 17.5.1.2 Selección del nudo a estudiar
T n
max. c x : x ∈ ℜ , x ≥ 0, Ax ≤ b ,
Proposición 17.6 Si P D fx 2 Rn W Ax  b; x  0g es acotado, el árbol de búsqueda desarrollado a partir de la
T T (0)
el vector [d , d0 ]deT las
dicotomía sevariables
puede P esescoger de tal manera
finito. En particular, si !j D dmK que
axfxj dW 0x < ningún<camino
2 Pdge,x d0 +del 1.árbol
Proceder ası́ es lo
de búsqueda
puede contener más de j 2N !j ramas. (1) (2)
más recomendable pues se obtiene un x(0) ∈ / SP L ∪ SP L , lo que permite la posibilidad de que,
(i) (i) (0)
para i = 1, 2, zP L 17.7
Proposición = max. {cTtxdel: árbol
Si el nudo x ∈ deSPbúsqueda
L} < z con .
P Lconjunto de condiciones S .t/ es tal que max. fc T x W x 2
.t/
PL g > zPE ,sólo
En la Spráctica ese nudo
se no se puede
usan [dT , d0 ]T muy concretos:
podar o rechazar.
vectores
Una cuestión importante es, dada una lista L de subárboles del árbol de búsqueda con nudos no rechazados, qué nudo
• Dicotomı́as
elegir como elde variables.
próximo a examinar.En Hayeste caso d = ej para algún j ∈ N . El punto x(0) será no
dos opciones:
Analizar uno siguiendo unas reglas preestablecidas; o (0)
factible en las relajaciones resultantes si x ∈ / Z y d0 =
Escogerlo según la información disponible en ese puntoj sobre cotas de las
⌊xj ⌋ número
variables,
(ver figura 13.5). Nótese
de nudos activos, etc.
que si xj ∈ B la rama izquierda hace xj = 0 y la derecha xj = 1.

x j ≤ ⌊x j ⌋ x j ≥ ⌊x j ⌋ + 1

Figura 17.5: División en nuevas ramas a partir de la acotación de cada variable no entera
Figura 13.5
División, por dicotomı́a de la variable xj , en un árbol enumerativo

Una importante ventaja práctica de esta división es que las condiciones que se añaden
a la relajación lineal correspondiente son simples cotas inferiores o superiores. Sólo será
7
Usaremos indistintamente estos términos.
428 j Capítulo 17. Optimización. Programación entera

Existen varias reglas preestablecidas que se pueden utilizar. La más extendida es la denominada LIFO (del inglés Last
In First Out).
LIFO: Primero analizar todos los nudos “hijos"de uno determinado y luego volver hacia atrás y escoger otro del
mismo nivel del nudo “padre” que no haya sido analizado. Es lo que apunta la figura 17.6. Los nudos subrayados son

2 5

3 4 6 9

7 8

Figura 17.6: Bifurcación y acotamiento de un problema mediante la regla LIFO

los podados o rechazados. Ventajas de LIFO:


La relajación lineal de un nudo hijo se obtiene de la lineal del nudo padre sin más que añadir una cota en una
variable. El método dual del simplex, sin reinvertir la base ni modificar las estructuras de datos sustancialmente,
obtiene muy rápidamente la solución que define el nudo hijo.
La experiencia dice que las soluciones factibles se encuentran más bien en puntos profundos del árbol de búsqueda.
Otra regla interesante en la de búsqueda en amplitud o anchura. Analizar todos los nudos de un determinado nivel
antes de pasar a otro más profundo. Se usa bastante en códigos especializados en variables binarias.
Ejemplo 17.5 Resolvamos el problema de programación entera del cuadro 17.5 con linprog() de M ATLAB y con el
presentado más arriba ilp_bb_1().

>> c3=[1;10]
>> A3=[-66 -14;82 -28]
>> b3=[-1430;-1306]
>> [xreal,jreal]=linprog(c3,A3,b3)
Optimization terminated.
minimizar x1 C 10x2 xreal =
7.261682243025319
s. a 66x1 C 14x2  1430 67.909212283785493
82x1 C 28x2  1306 jreal =
6.863538050808803e+002
x1 ; x2 enteras;  0: >> [xint,j]=ilp_bb_1(c3,A3,b3)
xint =
7
70
j =
707

Cuadro 17.5

Con la herramienta OPTI Toolbox la sesión sería la que explicita el cuadro 17.6. La gráfica de la evolución hacia la
solución es la de la figura 17.7.
Resolvamos el mismo problema ahora con el software BBMI de programación entera y lineal desarrollado por el
autor. El fichero de datos que requeriría este problema es el del cuadro 17.7.
La gráfica de cómo opera BBMI es la de la figura 17.8. El resultado completo impreso de lo que obtiene BBMI se
lista a continuación.
430 j Capítulo 17. Optimización. Programación entera Ejercicios 665

66x 1 + 14x 2 ≥ 1430


x 2 = 74

−82 x1 + 28x 2 ≥ 1306

x 2 = 73

c
x 2 = 72

x 2 = 71 4 1

x 2 ≥ 68 x 2 ≤ 67

x 2 = 70 8
3
2
11
x 2 = 69 6=7 x1 ≥ 8 x1 ≤ 7

x1 = 7
3 6 7
x 2 = 68 2
1 x 2 ≥ 71 x 2 ≤ 70 x1 ≤ 6 x 2 ≥ 70 x 2 ≤ 69

x 2 = 67 4 8
5 10 9
x1 = 6 x1 = 7 x1 = 8 x1 = 9

Figura 17.8
Figura 12.10
Región factible y árbol enumerativo del problema del ejemplo 12.4
Problema Ej12.2.3

*** Estadísticas del Problema


3 Fila(s) d) maximizar
2 Restricción(es)
1 x + x2 + x3
2 Variable(s) de decisión
s. a −4x + 5x2 + 2x3 ≤ 4
2 Variable(s) de holgura/artificiales
1
6 Elementos no cero
2 Variable(s) entera(s) −2x + 5x2
1 ≤ 5
3x1 − 2x2 + 2x3 ≤ 6
Densidad de la matriz de coeficientes A: 100.000%

*** Estadísticas de INVERT 2x1 − 5x2 ≤ 1


3 elementos no cero en la base
10la≥base
0 columnas estructurales en x1 , x2 , x3 ≥ 0 y enteras.
0 vectores columna antes del "bump"
3 vectores columna después del "bump"
L: e) minimizar
0 elementos no cero; 0 vectores
1 ETA 3x + 5x + 6x + 9x4 + 10x5 + 10x6
2 3
U: 2 elementos no cero; 2 vectores ETA
Total: 0 elementos no en la diagonal; 2 vectores ETA
s. a −2x + 6x − 3x + 4x49 +
Máximo de transformaciones ETA: 1
2; máximo 2 de elementos
número 3 ETA: x5 − 2x6 ≥ 2
Error relativo en x: −5x1 − 3x2 + x3 + 3x4 − 2x5 +
.000000D+00 x6 ≥ −2
Ite. Inf. Nopt. Sum.Inf/F.Obj Entra de-a5x −
Cost.Red
1 x
Sale 2 +
de-a 4x 3 − 2x 4 + 2x 5 − x 6 ≥ 3
Paso Pivote El.Eta
1 2 1 .2736000D+04 2 L->B -.42D+02 3 B->L .10D+03 x2 , x3 , x42, x5 , x6 ≥ 0 y enteras.
x1 , -.14D+02
2 0 1 .6863538D+03 1 L->B -.46D+02 4 B->L .73D+01 .21D+03 5

--- SOLUCIÓN INICIAL PROGRAMA LINEAL ---


--------------------------------
17.5 Algoritmos Branch and Bound - ramificación y acotación j 431

Nombre del problema: Ej12.2.3


No. de iteraciones: 3
Valor de la función objetivo: 686.353805073431

*** FILAS
No. ..Fila.. en ....Valor.... ...Holgura... .Lí.Inferior. .Lí.Superior. Val.Dual.

1 OBJ BS 686.35381 -686.35381 Ninguno Ninguno 1.000


2 FILA1 LI 1430.0000 .00000000 1430.0000 Ninguno .2830
3 FILA2 LI 1306.0000 .00000000 1306.0000 Ninguno .2156

*** COLUMNAS
No. .Columna en ....Valor.... Coste en F.O. .Lí.Inferior. .Lí.Superior. Cos.Red.

1 X1 BS 7.2616822 1.0000000 .00000000 Ninguno .000


2 X2 BS 67.909212 10.000000 .00000000 Ninguno .000

Variable Nudos Variables Valor


Separación Nivel Dirección en Lista Ent. No Ent.
Iteración Func. Obj.
2 1 X> 68 1 2 4 D 6.8724242D+02
1 2 X> 8 2 1 6 D 7.0871429D+02
2 3 X> 71 3 1 7 D 7.1800000D+02

* Nueva solución entera; z(PE)= 718.00000; Tiempo desde última: .0001 seg.

--- SOLUCIÓN ENTERA ---


---------------
Tiempo desde última: .0001 seg.
Nombre del problema: Ej12.2.3
No. de iteraciones: 7
Valor de la función objetivo: 718.000000000000

*** FILAS
No. ..Fila.. en ....Valor.... ...Holgura... .Lí.Inferior. .Lí.Superior. Val.Dual.

1 OBJ BS 718.00000 -718.00000 Ninguno Ninguno 1.000


2 FILA1 BS 1522.0000 92.000000 1430.0000 Ninguno .1269E-15
3 FILA2 BS 1332.0000 26.000000 1306.0000 Ninguno .1349E-16

*** COLUMNAS
No. .Columna en ....Valor.... Coste en F.O. .Lí.Inferior. .Lí.Superior. Cos.Red.

1 X1 LIB 8.0000000 1.0000000 8.0000000 Ninguno 1.00


2 X2 LIB 71.000000 10.000000 71.000000 Ninguno 10.0

Variable Nudos Variables Valor


Separación Nivel Dirección en Lista Ent. No Ent.
Iteración Func. Obj.
2 3 X< 70 2 -Nudo desechado en BKTRAK- 1.0000000D+20
1 2 X< 7 1 0 9 P 6.9842857D+02
2FIJ 1 3 X> 70 3 1 10 D 7.0700000D+02

* Nueva solución entera; z(PE)= 707.00000; Tiempo desde última: .0001 seg.

--- SOLUCIÓN ENTERA ---


---------------
Tiempo desde última: .0001 seg.
Nombre del problema: Ej12.2.3
No. de iteraciones: 10
Valor de la función objetivo: 707.000000000000

*** FILAS
No. ..Fila.. en ....Valor.... ...Holgura... .Lí.Inferior. .Lí.Superior. Val.Dual.

1 OBJ BS 707.00000 -707.00000 Ninguno Ninguno 1.000


2 FILA1 BS 1442.0000 12.000000 1430.0000 Ninguno .1269E-15
3 FILA2 BS 1386.0000 80.000000 1306.0000 Ninguno .1349E-16

*** COLUMNAS
No. .Columna en ....Valor.... Coste en F.O. .Lí.Inferior. .Lí.Superior. Cos.Red.

1 X1 EQB 7.0000000 1.0000000 7.0000000 Ninguno 1.00


2 X2 LIB 70.000000 10.000000 70.000000 Ninguno 10.0

Variable Nudos Variables Valor


Separación Nivel Dirección en Lista Ent. No Ent.
Iteración Func. Obj.
2 3 X< 69 2 -Nudo desechado en BKTRAK- 1.0000000D+20
1 3 X< 6 1 -Nudo desechado en BKTRAK- 7.4457143D+02
2 1 X< 67 0 -Nudo desechado en BKTRAK- 1.0000000D+20

--- SOLUCIÓN ENTERA OPTIMA ---


----------------------

Nombre del problema: Ej12.2.3


No. de iteraciones: 10
Valor de la función objetivo: 707.000000000000
432 j Capítulo 17. Optimización. Programación entera

*** FILAS
No. ..Fila.. en ....Valor.... ...Holgura... .Lí.Inferior. .Lí.Superior. Val.Dual.

1 OBJ BS 707.00000 -707.00000 Ninguno Ninguno 1.000


2 FILA1 BS 1442.0000 12.000000 1430.0000 Ninguno .1269E-15
3 FILA2 BS 1386.0000 80.000000 1306.0000 Ninguno .1349E-16

*** COLUMNAS
No. .Columna en ....Valor.... Coste en F.O. .Lí.Inferior. .Lí.Superior. Cos.Red.

1 X1 EQB 7.0000000 1.0000000 7.0000000 Ninguno .000


2 X2 LIB 70.000000 10.000000 70.000000 Ninguno 10.0

Tiempo total de CPU en cálculos: .0603 segundos

Para analizar las prestaciones de estos algoritmos con casos reales, resolvemos un problema relativamente difícil de
programación entera con 50 variables, todas enteras, y cuya matriz de condiciones tiene el esquema de la figura 17.9.

10

15

20

25

30

35

40

0 10 20 30 40 50
nz = 221

Figura 17.9: Estructura de la matriz de un problema entero con 50 variables

Con ilp_bb_1 se obtiene lo que se ve en el cuadro 17.8. El tiempo empleado con este programa es absolutamente
inaceptable. La estrategia es mala al no considerar ninguna forma de ahorrarse visitar todos los nudos del árbol de
búsqueda.
También utilizamos el software Intlinprog de M ATLAB y el solver OPTI Toolbox de programación entera. La
sesión de M ATLAB para utilizar Intlinprog es la del cuadro 17.9 de la página 433.
Con OPTI Toolbox se llega a lo del cuadro 17.10 de la página 434.

17.5.2 Selección de la variable de ramificación


Es evidente que para mejorar las prestaciones de un algoritmo Branch and Bound es necesario hacer algo que evite
visitar todos los nudos del árbol de búsqueda de soluciones enteras. Veamos lo que hace BBMI.
Supongamos que se ha elegido i como el nudo que se va a analizar. Asociado a ese nudo habrá un programa lineal de
solución x .i/ ,
n
X
xBi D aN i 0 C aN ij . xj / para i D 1; : : : ; mI
j DmC1
17.5 Algoritmos Branch and Bound - ramificación y acotación j 433

>> tic,[xint,j]=ilp_bb_1(-prob.f,A,prob_1.ru,prob_1.lb,prob_1.ub),toc
xint =
1 1 0
1 1 1
1 1 0
1 0 0
0 0 0
1 1 0
1 1 0
0 0 1
1 1 0
0 1 0
0 0 1
1 1 0
1 1 0
1 1 0
1 1 1
0 1 0
1
1
j =
-1.0460e+03
Elapsed time is 7295.551641 seconds.

Cuadro 17.8

>> problem = mpsread(’DEMOS5_noint.mps’) 0


problem = 0
f:[50x1 double] 1.0000
Aineq: [41x50 double] 1.0000
bineq: [41x1 double] 0
Aeq: [0x50 double] 1.0000
beq: [0x1 double] 1.0000
lb:[50x1 double] 0
ub:[50x1 double] 1.0000
intcon: [50x1 double] 1.0000
solver: ’intlinprog’ 1.0000
options: [1x1 optim.options.Intlinprog] 1.0000
>> options = optimoptions(’intlinprog’,’Display’,... 1.0000
’final’,’PlotFcns’,@optimplotmilp); 0
>> problem.options = options; 1.0000
>> tic,[x,fval,exitflag,output] = intlinprog(problem),toc 0
LP: Optimal objective value is -1171.225417. 0
Cut Generation: Applied 5 Gomory cuts, 10 clique cuts, and 5 cover cuts. 0
Lower bound is -1046.000000. 0
Relative gap is 0.00%. 0
Optimal solution found. 1.0000
Intlinprog stopped at the root node .. 0
x = 0
1.0000 1.0000
1.0000 0
1.0000 0
1.0000 0
0 1.0000
1.0000 0
1.0000 1.0000
0 1.0000
1.0000 fval = -1.0460e+03
0 exitflag = 1
0 output =
1.0000 relativegap: 0
1.0000 absolutegap: 0
1.0000 numfeaspoints: 1
1.0000 numnodes: 0
0 constrviolation: 1.5543e-15
1.0000 message: ’Optimal solution found’
1.0000
1.0000 Elapsed time is 0.446243 seconds.

Cuadro 17.9: Resultados con IntLinprog() del problema entero con 50 variables de la figura 17.9
434 j Capítulo 17. Optimización. Programación entera

>> prob_1 = coinRead(’DEMOS5_noint.mps’); 1.0000 0


>> spy(prob_1.A); 0 0
>> Opt_1 = opti(’f’,-prob_1.f,’ineq’,prob_1.A,... 1.0000 0
prob_1.ru,’bounds’,prob_1.lb,prob_1.ub,’xtype’,xtype) 0 0
------------------------------------------------------ 0 1.0000
Mixed Integer Linear Program (MILP) Optimization 1.0000 0
min f’x 1.0000 0
s.t. rl <= Ax <= ru 1.0000 1.0000
lb <= x <= ub 1.0000 0
xi = Integer / Binary 0 0
------------------------------------------------------ 1.0000 0
Problem Properties: 1.0000 1.0000
# Decision Variables: 50 1.0000 0
# Constraints: 191 0 1.0000
# Linear Inequality: 41 0 1.0000
# Bounds: 100 1.0000 fval =
# Integer Variables: 50 1.0000 -1046
------------------------------------------------------ 0 exitflag =
Solver Parameters: 1.0000 1
Solver: CBC 1.0000 info =
------------------------------------------------------ 0 Nodes: 2
>> tic,[x,fval,exitflag,info] = solve(Opt_1),toc 1.0000 AbsGap: 24.9233
x = 1.0000 RelGap: 0.0238
1.0000 1.0000 Time: 0.0581
1.0000 1.0000 Algorithm: ’CBC: Branch and Cut using CLP’
1.0000 1.0000 Status: ’Integer Optimal’
1.0000 0
0 1.0000 Elapsed time is 0.060537 seconds.
1.0000 0

Cuadro 17.10

P
la función objetivo es x0 D aN 00 C jnDmC1 aN 0j . xj /: Los aN 0j , j D m C 1; : : : ; n, son los costes reducidos de las
variables no básicas.
El paso de escoger qué variable va a definir después la ramificación o división que parta de i es crítico para las
prestaciones del procedimiento. Apuntemos alguna estrategia general de mejora.

17.5.2.1 Penalizaciones de variables básicas


Supongamos que en el nudo i alguna variable básica xp no es entera debiendo serlo, es decir
n
X
xp D aNp0 C aNpj . xj / D np0 C fp0 ;
j DmC1

donde np0 designa la parte entera de xp , bxp c, y fp0 la parte fraccionaria. Recordemos que b3; 22c D 3 y b 4; 12c D 5.
La división que definirá la variable xp es

xp  np0 C 1 y xp  np0 :

Del algoritmo dual del simplex podemos deducir que la imposición de la nueva cota xp  np0 C 1 a la variable xp
implicará un empeoramiento (reducción) del valor de la función objetivo.
Como la variable básica xp , realizando una iteración del método dual del simplex, pasaría como mínimo a ser no
básica, otra variable no básica, xj , que estuviese en uno de sus límites, se incrementaría o decrementaría según
estuviese en el inferior o superior.
Es decir, se reduciría el valor de la función objetivo en una cantidad o penalización que vendría dada por la
expresión
aN 0j
˚ mKın ; si xj D lj ; o por
j;aNpj <0 .1 fp0 / aNpj
PU D aN 0j
mKınj;aNpj >0 .1 fp0 / aNpj
; si xj D uj :

Razonando de manera similar, la imposición de la nueva cota xp  np0 a la variable xp implicará un empeoramiento
17.5 Algoritmos Branch and Bound - ramificación y acotación j 435

(reducción) del valor de la función objetivo que vendrá dado por la expresión
aN 0j
˚ mKın si xj D lj ;
j;aNpj >0 fp0 aNpj ;
PD D aN
mKınj;aNpj <0 fp0 aNpj
0j
; si xj D uj :

Cualquier solución entera que se pudiese obtener partiendo del nudo i estaría por consiguiente acotada superiormente
por
mKaxfx0 PU ; x0 PD g:
Se podrá conseguir una mejor solución desde el nudo i si y sólo si

mKınfPU ; PD g < x0 zPE

para cada variable básica que no sea entera debiendo serlo. Si esta condición no se cumple se abandona la búsqueda que
parta del nudo i.
Si todas las variables xp cumplen esa condición, la cuestión siguiente que se tiene que solventar es qué variable de
ramificación se elige:
Se puede elegir aquella con la penalización asociada más pequeña.
O una variable con una penalización asociada más grande y comenzar imponiendo el límite opuesto al que determina
esa penalización.
Si, por ejemplo, la penalización más grande asociada a una variable xp es PU , se puede comenzar analizando el
problema que resulte de imponer a esa variable la nueva cota np0 e incluir en la lista de nudos que hay que analizar más
adelante el que resulte de imponer la cota np0 C 1.
Si se almacenan las peores soluciones, una vez que se encuentre una buena, se rechazarán rápidamente buena parte de
los nudos que queden en la lista.

17.5.2.2 Penalizaciones de variables no básicas


Posibles cambios en variables no básicas que impondrían nuevas cotas en el nudo i. Cualquier solución entera estaría
acotada por
mKaxfx0 PU ; x0 PD g;
donde ahora † ( )
aN 0j .1 fp0 /=. aNpj /; j 2M
mKınj; aNpj <0 si xj D lj
mKaxfaN 0j ; aN 0j .1 fp0 /=. aNpj /g; j 2 J
PU D ( )
aN 0j .1 fp0 /=. aNpj /; j 2M
mKınj; aNpj >0 si xj D uj
mKaxfaN 0j ; aN 0j .1 fp0 /=. aNpj /g; j 2 J
y † ( )
aN 0j fp0 =aNpj ; j 2M
mKınj; aNpj >0 si xj D lj
mKaxfaN 0j ; aN 0j fp0 =aNpj g; j 2 J
PD D ( )
aN 0j fp0 =aNpj ; j 2M
mKınj; aNpj <0 si xj D uj :
mKaxfaN 0j ; aN 0j fp0 =aNpj g; j 2 J
J es el conjunto de índices de las variables no básicas que han de ser enteras y M el de las no básicas que no han de ser
enteras.
El nudo i se podrá desechar si, para cualquier xp a la que se introducen nuevas cotas, se cumple que

mKınfPU ; PD g  x0 zPE :

Este criterio no es el único; recordemos el corte de Gomory asociado a xp ,


n
X
fp0 C fpj xj  0;
j DmC1
436 j Capítulo 17. Optimización. Programación entera


que se habría de satisfacer en cualquier solución que se obtuviese partiendo del problema actual. Asociado a ese corte
de Gomory se puede derivar la penalización
8̂ 9
ˆ fp0 aN 0j =aNpj si aNpj  0 j 2 M > >
< .1 f /aN =. aN / si aN < 0 j 2 M >
ˆ =
p0 0j pj pj
mKınj si xj D lj I
ˆ
ˆ fp0 aN 0j =fpj si fpj  fp0 j 2 J > >
>
:̂ ;
.1 fp0 /aN 0j =.1 fpj / si fpj > fp0 j 2 J
PG D 8̂ 9
ˆ fp0 aN 0j =aNpj si aNpj  0 j 2 M >>
ˆ
< .1 f /aN =. aN / >
p0 0j pj si aNpj > 0 j 2 M =
mKınj si xj D uj :
ˆ
ˆ fp0 . aN 0j /=fpj si fpj  fp0 j 2 J >
>
>
:̂ ;
.1 fp0 /. aN 0j /=.1 fpj / si fpj > fp0 j 2 J

Se puede comprobar que


PG  mKın.PU ; PD /;
lo que tiene como consecuencia que el nudo i se podrá desechar si, para cualquier xp a la que se introducen nuevas cotas,

PG  x0 zPE :

Ejemplo 17.6 Volvamos al ejemplo


maximizar 7x1 C 2x2
s. a x1 C 2x2  4
5x1 C x2  20
2x1 2x2  7
x 2 Z2C :
Con las variables de holgura x3 , x4 y x5 , la relajación lineal da la solución
3 16 332
x0 C x
11 3
C x
11 4
D 11
1 2 36
x1 x
11 3
C x
11 4
D 11
5 1 40
x2 C x
11 3
C x
11 4
D 11
8 6 75
x
11 3
C x
11 4
C x5 D 11
;

.0/
donde x3 D x4 D 0. De aquí que zPL D x0 D 332=11 y x .0/ D Œ36=11; 40=11; 0; 0; 75=11T .
Trabajemos con las penalizaciones que incluye BBMI. Las variables básicas son x1 , x2 y x5 . Esta última no se
requiere que sea entera. Las variables no básicas de la solución obtenida están todas en su límite inferior.
Para empezar, como todavía no tenemos ninguna solución factible de zPE , determinemos las penalizaciones por
bifurcar a:
  
x1  3 W P1D0
D mKınj; aNpj >0 faN 0j fp0 =aNpj ; j 2 M g D mKın 16 
11 11
3 2
11
D 24
11
I
  
0C 3 3 1
x1  4 W P1U D mKınj; aNpj <0 faN 0j .1 fp0 /=. aNpj /; j 2 M g D mKın 11  .1 11 / 11 D 24
11
I
   
x2  3 W P2D0
D mKınj; aNpj >0 faN 0j fp0 =aNpj ; j 2 M g D mKın 16  7
11 11
1
; 3  7
11 11 11
5
11
D 21
55
:

0C
La penalización P2D la podemos considerar 1 pues de la solución del programa lineal anterior se observa que al
incrementar la variable x2 , x3 y x4 decrecen.
De las penalizaciones calculadas, la mejor (menos mala) se obtiene al hacer x2  3. Añadamos esa condición, es
decir, x2 D 40
11
5
x
11 3
1
x  3.
11 4
17.6 Programación no lineal con variables Enteras j 437

La relajación lineal resultante anterior más esta condición queda:


3 16 332
x0 C x
11 3
C x
11 4
D 11
1 2 36
x1 x
11 3
C x
11 4
D 11
5 1 40
x2 C x
11 3
C x
11 4
D 11
8 6 75
x
11 3
C x
11 4
C x5 D 11
5 1 7
x
11 3
x
11 4
C x6 D 11
:

Después de una iteración del método dual del simplex se llega a la solución óptima siguiente:

x0 C 57 x4 C 3
x
5 6
D 149
5
x1 C 51 x4 1
x
5 6
D 17
5
x2 C x6 D 3
2 8 29
x
5 4
C x5 C x
5 6
D 5
1 11 7
x3 C x
5 4 5 6
x D 5
:

.1/
De aquí que zPL D x0 D 149=5 y x .1/ D Œ17=5; 3; 7=5; 0; 29=5T , con x6 D 0. La única variable que debe ser entera
en esta solución y no lo es x1 .
Calculemos ahora las penalizaciones por bifurcar a:
  
7 2 1
x1  3 W 1
P1D D mKınj; aNpj >0 faN 0j fp0 =aNpj ; j 2 M g D mKın 5
 5 5
D 14
5
  
1C 3 2
x1  4 W P1U D mKınj; aNpj <0 faN 0j .1 fp0 /=. aNpj /; j 2 M g D mKın 5
 .1 5
/ 51 D 59 :

17 1
De estas penalizaciones la mejor se obtiene al hacer x1  4. Añadamos la condición x1 D 5
x
5 4
C 15 x6  4. La
relajación lineal resultante anterior más esta condición queda:

x0 C 57 x4 C 3
x
5 6
D 149
5
x1 C 51 x4 1
x
5 6
D 17
5
x2 C x6 D 3
2 8 29
x
5 4
C x5 C x
5 6
D 5
1 11 7
x3 C x
5 4
x
5 6
D 5
1 1 3
x
5 4
C x
5 6
x7 D 5
:

Otra iteración del dual del simplex obtiene la primera solución factible entera x .2/ D Œ4; 0; 8; 0; 1T , con zPE D 28.
Después se analizaría el nudo 3, rechazándose inmediatamente pues del cálculo anterior de penalizaciones se vería
1
que la función objetivo obtenible sería 149=5 P1D D 135=5 D 27 < 28. Posteriormente también se rechazaría el
nudo 4. El esquema de la figura 17.10 representa todas estas consideraciones.

17.6 Programación no lineal con variables Enteras


La dificultad para resolver estos problemas aumenta considerablemente, pero nada impide utilizar la estrategia Branch
and Bound utilizando un solver no lineal —fmincon por ejemplo— en vez del lineal que hemos presentado. El código
de antes adaptado para resolver un Programa Entero No Lineal es el del cuadro 17.11.
438 j Capítulo 17. Optimización. Programación entera

x2 ≤ 3 x2 ≥ 4

1 4

x1 ≤ 3 x1 ≥ 4

3 2

Solución entera
(2)
x = [4, 0, 8, 0, 1]T
(2)
zP L = z P E = zP E = 28

Figura 17.10: Ejemplo utilizando las penalizaciones de BBMI

function [xstar,Jmin] = inlp_bb(fun,x0,A,b,xlb,xub,NLCon,xstar,Jmin)


% [xstar,Jmin] = ilp_bb(fun,x0,A,b,xlb,xub,NLCon,xstar,Jmin)
% Integer Non-linear programming by (recursive) branch & bound
% Uses fmincon.m from the optimisation toolbox to solve the relaxed problem
optns = optimset(’display’,’off’); tol = 1e-3; % anything less is zero
if ~exist(’xlb’,’var’), xlb = 0*x0; end
if ~exist(’xub’,’var’), xub = Inf*ones(size(x0)); end
if ~exist(’xstar’,’var’), xstar = []; end
if ~exist(’Jmin’,’var’), Jmin = Inf; end
% Now solve relaxed NL constrained problem
[x,j,exitflag] = fmincon(fun,x0,A,b,[],[],xlb,xub,NLCon,optns);
if exitflag <1; return, end % disp(exitflag) if infeasible or not OK
if j>Jmin + tol; return, end % for robustness; truncate
idx = find(abs(x-round(x)) > tol); % which are non-integers?
if isempty(idx) % All integer solutions
if j<Jmin, xstar=round(x); Jmin=j; end % New integer optimum
return % problem solved
end
% Depth first recursion
xnlb = xlb; xnlb(idx(1)) = ceil(x(idx(1))); % new lower bound
[xstar,Jmin] = inlp_bb(fun,x,A,b,xnlb,xub,NLCon,xstar,Jmin);
xnub = xub; xnub(idx(1)) = floor(x(idx(1)));
[xstar,Jmin] = inlp_bb(fun,x,A,b,xlb,xnub,NLCon,xstar,Jmin);
end

Cuadro 17.11
Capítulo 18

Derivación e integración de funciones

Contenido
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.2 Fórmulas abiertas y cerradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
Numerical Differentiation
18.2.3 Método de Romberg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
18.2.4 Cuadratura de Gauss-Legendre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
18.2.5 Cuadratura adaptativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Differentiation is inherently sensitive, as small
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
perturbations in data can cause large changes
in result La derivada de una función en un punto es el valor del límite, si existe, del cociente incremental de dicha
función en el punto cuando el incremento de la variable tiende a cero.

df .x/ f .x C h/ f .x/
Differentiation is inverse of integration,f 0 .x/ D which
D lKım
dx h!0 h
is inherently stable because of smoothing ef-
Es una medida de la rapidez con la que cambia el valor de dicha función según cambie el valor de su variable
fect independiente.

L
For example,
Mientras
A integración, proceso inverso de la derivación, se basa en la idea de sumar todas las partes constituyentes de un
todo. two functions shown below have
que la integración produce un efecto
very similar definite integrals but verydedifferent
amortiguación de las oscilaciones en los datos, la derivación eviden-
cia esas oscilaciones.
................ ................... ....
.
........................ ..... .......... ............... ..
. .............
................ ....
Las dos funciones de la figura tienen integrales muy parecidas
.......... ............
.......
.
.
..........
.. ...... mientras que sus derivadas en distintos puntos pueden diferir
. .. ...........
..... ........ bastante.
. .......... ....
.............................................................................................................................................................................................
. .

La derivación numérica evalúa la derivada de una función en un punto a partir de valores numéricos de dicha función,
sin necesidad por tanto de conocer la expresión analítica de dicha derivada. Es muy sensible a pequeñas perturbaciones
en los datos o a la precisión de estos.
46
442 j Capítulo 18. Derivación e integración de funciones

Si se necesita derivar funciones cuyos valores se conocen sólo en un conjunto dado de puntos concretos, lo más
aconsejable es ajustar alguna función continua a esos puntos y derivar luego la función obtenida. Si los datos presentan
un cierto patrón de continuidad, se puede interpolar una función´y luego derivarla. Si se sabe que tienen ruido, lo más
probable es que se requiera una aproximación mediante mínimos cuadrados o splines.

18.1 Derivación numérica de funciones


Para calcular numéricamente la derivada de f W R ! R se puede considerar una aproximación intuitiva desde su
definición,
0 df .x/ f .x C h/ f .x/ f .x C h/ f .x/
 Geométricamente fse.x/pueden D D lKım D ;
dx considerar
h!0 tres
h variantes h
es decir, la línea secante (o cuerda) en dos puntos próximos. Geométricamente se pueden considerar tres variantes

f(x+h) f(x)
f(x+h)

f(x) f(xíh) f(xíh)


Aproximación
f(x)

x x+h xíh x xíh x x+h


f .x C h/ f .x/ f .x/ f .x h/ f .x C h/ f .x h/
f 0 .x/ D f 0 .x/ D f 0 .x/ D
h h 2h

Fórmula adelantada Fórmula atrasada Fórmula centrada


Consideremos el desarrollo en serie de Taylor de f .x/,

f 00 .x/ 2 f 000 .x/ 3


f .x C h/ D f .x/ C f 0 .x/h C
7/62
h C h C 
2 6
f 00 .x/ 2 f 000 .x/ 3
f .x h/ D f .x/ f 0 .x/h C h h C 
2 6
a b c 1 2 3

Si despejamos
d e fde lagprimera igualdad
9 4 f .x/
6 se5 obtiene la fórmula hacia adelante de su aproximación,
0

h i j 10
f8 .x C
7
h/ f .x/ f 00 .x/ f .x C h/ f .x/
f 0 .x/ D h C   ;
h 2 h
más un resto, o error de primer orden, O.h/.
Si despejamos de la segunda igualdad, igualmente f 0 .x/, se obtiene la fórmula hacia atrás de su aproximación,

f .x/ f .x h/ f 00 .x/ f .x/ f .x h/


f 0 .x/ D C h C   ;
h 2 h
más un resto, también con error de primer orden, O.h/.
Restando las dos desigualdades y despejando f 0 .x/ se llega a la fórmula centrada,

f .x C h/ f .x h/ f 000 .x/ 2 f .x C h/ f .x h/
f 0 .x/ D h C   :
2h 6 2h
El resto en este caso tiene un error de segundo orden, O.h2 /.
18.1 Derivación numérica de funciones j 443

Sumando las dos desigualdades y despejando f 00 .x/ se obtiene la fórmula centrada de la segunda derivada,

f .x C h/ 2f .x/ C f .x h/ f .4/ .x/ 2


f 00 .x/ D h C 
h2 12
f .x C h/ 2f .x/ C f .x h/
 :
h2

Tiene un resto con error de segundo orden, O.h2 /.


En el cálculo numérico de derivadas en entornos de precisión finita se cometen errores significativos. Por ejemplo, la
aproximación de las derivadas de e x produce los resultados de la tabla que sigue.

f .xCh/ f .x/ f .x/ f .x h/ f .xCh/ f .x h/ f .xCh/ 2f .x/Cf .x h/


h f .x/ D e x; x D 1 error error
h h 2h h2
1e-01 2.718281828459046 2.858841954873879 0.140560126414833 2.586787173020957 2.722814563947418 0.004532735488372 2.720547818529218
1e-02 2.718281828459046 2.731918655787080 0.013636827328035 2.704735610978304 2.718327133382692 0.000045304923646 2.718304480877620
1e-03 2.718281828459046 2.719641422532781 0.001359594073736 2.716923140478667 2.718282281505724 0.000000453046678 2.718282054114951
1e-04 2.718281828459046 2.718417747078483 0.000135918619438 2.718145918900738 2.718281832989611 0.000000004530565 2.718281777447373
1e-05 2.718281828459046 2.718295419912308 0.000013591453263 2.718268237122956 2.718281828517632 0.000000000058586 2.718278935276430
1e-06 2.718281828459046 2.718283186986525 0.000001358527479 2.718280469604650 2.718281828295587 0.000000000163458 2.717381875072532
1e-07 2.718281828459046 2.718281963964841 0.000000135505795 2.718281693070423 2.718281828517632 0.000000000058586 2.708944180085381
1e-08 2.718281828459046 2.718281777447373 0.000000051011673 2.718281866265215 2.718281821856294 0.000000006602752 -8.881784197001249
1e-09 2.718281828459046 2.718281599811689 0.000000228647357 2.718282043900898 2.718281821856293 0.000000006602752 -444.0892098500623
1e-10 2.718281828459046 2.718278935276429 0.000002893182616 2.718283376168528 2.718281155722479 0.000000672736567 -44408.92098500623
1e-11 2.718281828459046 2.718270053492232 0.000011774966813 2.718314462413217 2.718292257952725 0.000010429493679 -4440892.098500623
1e-12 2.718281828459046 2.718270053492233 0.000011774966813 2.718714142702083 2.718492098097158 0.000210269638112 -444089209.8500624
1e-13 2.718281828459046 2.713385072183882 0.004896756275163 2.722266856380883 2.717825964282383 0.000455864176663 -88817841970.01249
1e-14 2.718281828459046 2.664535259100375 0.053746569358670 2.753353101070388 2.708944180085382 0.009337648373664 -8881784197001.250

Como vimos al hablar de errores de cálculo en ordenador, en el cálculo numérico de la derivada esos errores dismi-
nuyen a medida que aumenta h desde valores próximos a la precisión de la máquina (2;22e 16), alcanzan un mínimo,
aproximadamente en h D log10 .eps/=2 para la derivada adelantada y atrasada, y luego aumentan otra vez debido a los
errores de redondeo y la precisión de la máquina en las operaciones.
En la figura 18.1 se lista un pequeño script de M ATLAB para calcular esa tabla y ver gráficamente la evolución del
error.

% Fichero Derivadas_ex_1.m para simular derivación de e^x


h = 1; e=exp(1);
f=fopen(’Salida_derivadas_1’,’w’); 100
for i=1:14 Derivadas avanzadas
h=h/10; Derivadas centradas
der1 = (exp(1+h)-e)/h; err1=abs(der1-e); der2=(e-exp(1-h))/h; 10-2
der3 = (exp(1+h)-exp(1-h))/2/h; err2=abs(der3-e);
der4 = (exp(1+h)-2*e+exp(1-h))/(h*h);
10-4
fprintf(f,’%6.0e %18.15f %18.15f %18.15f %18.15f %18.15f ’,...
’%18.15f %18.15f\n’,h,e,der1,err1,der2,der3,err2,der4);
error

end 10-6
fclose(’all’);
h=0.5; R=zeros(32,3);
for i=1:32 10-8
fd=(exp(1+h)-e)/h;
cd=(exp(1+h)-exp(1-h))/(2*h);
R(i,:)=[h abs(fd-e) abs(cd-e)]; 10-10

h=h/2;
end 10-12
loglog(R(:,1),R(:,2),’+’,R(:,1),R(:,3),’or’) 10-10 10-8 10-6 10-4 10-2 100
legend(’Derivadas avanzadas’,’Derivadas centradas’,’Location’,’NorthWest’); h
xlabel(’h’); ylabel(’error’); %axis([0 1 0.95 2]);

Figura 18.1: Cálculo de e x , sus derivadas y los errores en los que se incurre
444 j Capítulo 18. Derivación e integración de funciones

18.1.1 Fórmulas centradas con error de segundo y cuarto orden


A la ya conocida de O.h2 / vamos añadir la de error de cuarto orden. Se desarrollan en serie de Taylor f .x ˙ 2h/ y
f .x ˙ h/:

4h2 8h3 16h4


f .x C 2h/ D f .x/ C f 0 .x/2h C f 00 .x/ C f 000 .x/ C f .4/ .x/ C O.h5 /
2Š 3Š 4Š
4h2 8h3 16h4
f .x 2h/ D f .x/ f 0 .x/2h C f 00 .x/ f 000 .x/ C f .4/ .x/ C O.h5 /
2Š 3Š 4Š
h2 h3 h4
f .x C h/ D f .x/ C f 0 .x/h C f 00 .x/ C f 000 .x/ C f .4/ .x/ C O.h5 /
2Š 3Š 4Š
0 00 h2 000 h3 h4
f .x h/ D f .x/ f .x/h C f .x/ f .x/ C f .x/ C O.h5 /
.4/
2Š 3Š 4Š
Restando dos a dos:
16h3
f .x C 2h/ f .x 2h/ D f 0 .x/4h C f 000 .x/ C O.h5 /

2h3
f .x C h/ f .x h/ D f 0 .x/2h C f 000 .x/ C O.h5 /:

Restando a la primera diferencia la segunda multiplicada por 8 se llega a que

f .x C2h/ 8f .x Ch/ C 8f .x h/ f .x 2h/ Df 0 .x/ .4h 16h/ C O.h5 /;

y de aquí a que
f .x C 2h/ C 8f .x C h/ 8f .x h/ C f .x 2h/
f 0 .x/ D C O.h4 /:
12h
Otras fórmulas centradas con error de segundo y cuarto orden son las que lista el cuadro 18.1 (notación fk D f .x C
kh/, k D 3, 2, 1, 0, 1, 2, 3).

Fórmulas centradas de error de orden O.h2 / Fórmulas centradas de error de orden O.h4 /
f1 f 1 f2 C8f1 8f 1 Cf 2
f 0 .x/  2h
f 0 .x/  12h
f1 2f0 Cf 1 f2 C16f1 30f0 C16f 1 f 2
f 00 .x/  h2
f 00 .x/  12h2
f2 2f1 C2f 1 f f3 C8f2 13f1 C13f 1 8f 2 Cf 3
f 000 .x/  2h3
2
f 000 .x/  8h3
f2 4f1 C6f0 4f f f3 C12f2 39f1 C56f0 39f 1 C12f f
f .4/ .x/  h4
1 2
f .4/ .x/  6h4
2 3

Cuadro 18.1: Fórmulas centradas de derivadas de hasta cuarto orden con errores de segundo y cuarto orden

Se pueden también obtener fórmulas parecidas para las derivadas adelantadas y atrasadas.

18.1.2 Extrapolación de Richardson


Se debe al trabajo de Lewis Fry Richardson, Reino Unido, 1881-1953.

Richardson
18.1 Derivación numérica de funciones j 445

Su idea era extrapolar el valor de f .0/ calculando el valor de f a varios pasos de una distancia h de f .0/ y así tratar
de conocer el comportamiento de esa función cuando h ! 0.
Supongamos que para algún p y r, r > p, la función es f .h/ D a0 C a1 hp C O.hr / según tiende h ! 0. También
que se conocen los valores de p y r, pero no los de a0 y a1 (precisamente f .0/ D a0 es lo que se quiere obtener).
También supondremos que se ha calculado ya f para dos pasos h y h=q, siendo q cualquier entero positivo. Se tendrá
que

f .h/ D a0 C a1 hp C O.hr /
f .h=q/ D a0 C a1 .h=q/p C O.hr / D a0 C a1 q p p
h C O.hr /:

Éste es una sistema de dos ecuaciones lineales con dos incógnitas: a0 y a1 . Si se resuelve, se obtiene que
f .h/ f .h=q/
a0 D f .h/ C p
C O.hr /;
q 1
cuya precisión ahora es O.hr /, mejor que la anterior O.hp /, pues r > p.
Ejemplo 18.1 Usaremos la extrapolación de Richardson para mejorar la precisión con la que se calcula la derivada de
sen.x/ en x D 1.
Utilizando la fórmula adelantada de derivación
Examplese tiene queContinued

F .h/ D a0 C a1 h C O.h2 /

por lo que aquí p D 1Extrapolated


y r D 2. Si se usan losvalue
valores h is then
D 0;5 y h Dgiven by q D 2), se tiene que
0;25 (es decir
sen.1 C h/ sen.1/ sen.1;5/
F (h)sen.1/
− FD(h/2)
F .h/ D D 0;312048
F (0) = a0h = F (h) + 0;5
sen.1;25/ sen.1/ (1/2) −1
F .h=2/ D D 0;430055:
0;25
= 2F (h/2) − F (h) = 0.548061
El valor extrapolado es entonces
✔ El valor extrapolado es entonces
FF.h/
.h/ FF.h=2/
.h=2/
F .0/ DD
F .0/ 0 D
a0aD FF .h/CC
.h/ D 2F .h=2/
D .h/DD0;548061;
.h=2/ FF.h/ 0;548061;
.1=2/ 11
For comparison,.1=2/ correctly rounded result is given
frente al exacto que esby
frentecos.1/ D 0;540302.
al exacto
cos(1) es cos.1/
que = D 0;540302.
0.540302
F.
........
.
1.0 .....
... Valor extrapolado
.... .....
.... ........
...... ......Valores ... calculados
0.5 ...... .............................•.........................
• .
....
.
....................
.
.

....
....
............................................................................................
h
0 0.25 0.5
Figura 18.2: Extrapolación de Richardson del ejemplo 18.1

21/63

57
18.1.3 Fórmulas basadas en el polinomio de interpolación de Newton
a b c 1 2 3

Se utiliza cuando se trata de derivar


d e f g una
9 función
4 6 de
5 la que sólo se conocen unos datos. En especial cuando esos datos

están desigualmente espaciados.


h i j 10 8 7
446 j Capítulo 18. Derivación e integración de funciones

A esos datos, .x0 ; f .x0 //, .x1 ; f .x1 // ; : : :, se les interpola el polinomio de Newton

p.x/ D b0 C b1 .x x0 / C b2 .x x0 /.x x1 /

donde
f .x2 / f .x1 / f .x1 / f .x0 /
f .x1 / f .x0 / x 2 x1 x1 x 0
b0 D f .x0 /; b1 D y b2 D :
x1 x0 x2 x0
Luego se deriva el polinomio y se evalúa para los distintos puntos:

p 0 .x/Db1 Cb2 .x x0 /C.x x1 / que para xDx0 ; p 0 .x0 /Db1 Cb2 .x0 x1 /:

Las derivadas adelantadas, centradas y atrasadas, en x0 por ejemplo, se pueden calcular haciendo en ese polinomio
x1 D x0 C h y x2 D x0 C 2h. Con la notación abreviada,
f2 f 1 f1 f0
f1 f0 h h f0 2f1 C f2
b1 D ; b2 D D :
h 2h h2
A partir de ahí,
f1 f0 f0 2f1 C f2
p 0 .x0 / D b1 Cb2 .x0 x1 / D b 1 b2 h D 2 hD
2h 2h2
3f0 C 4f1 f2
D ;
2h
que es la fórmula adelantada.
Para x1 D x0 C h y x2 D x0 h se tendría la fórmula centrada y con x1 D x0 h y x2 D x0 2h la atrasada.

18.1.4 Derivación simbólica con Matlab


Con las utilidades simbólicas de M ATLAB se pueden obtener las fórmulas simbólicas de las derivadas de diversas fun-
ciones.
Por ejemplo, probemos diff() con la función f .x/ D sen.3x/ a través de una sesión de M ATLAB,
>> syms x;
>> f=sin(3*x);
>> f1=diff(f)
f1 =
3*cos(3*x)
>> f2=sin(x)^7
f2 =
sin(x)^7
>> f3=diff(f2)
f3 =
7*cos(x)*sin(x)^6

En la figura 18.3 se puede ver qué permite obtener la rutina gradient() de M ATLAB y cómo usarla.

18.2 Integración numérica de funciones


Dada una función f W R ! R, su integral definida en Œa b,
l b

I.f / D f .x/ dx;


a

se define como el límite de las sumas de Riemann


n
X
Rn D .xi C1 xi / f .ti /; x1 D a; xnC1 D b; xi  ti  xiC1
i D1
448 j Capítulo 18. Derivación e integración de funciones

Figura 18.4

Se denomina grado de precisión de la fórmula de integración al máximo grado de los polinomios que son integrados
exactamente por dicha fórmula.
Para calcular numéricamente el valor de una integral se recurre por lo general a un sumatorio de ciertos valores de
la función, o de una aproximación de ella, en unos puntos llamados nodos, xi , multiplicados por unos coeficientes de
ponderación denominados pesos, wi . Concretamente,
l b i n

f .x/ dx D wi f .xi /:
a
i D1

Esta sustitución supone cambiar un sumatorio infinito (la integral) por un sumatorio finito, por lo que se producirá un
error de truncamiento.

18.2.1 Fórmulas de Newton-Cotes


Debidas a Newton y Roger Cotes, Inglaterra, 1682-1716.

Cotes

Obtenidas a partir del polinomio de interpolación de Newton de la función a integrar con argumentos igualmente
espaciados (fórmula de diferencias finitas). Las más habituales son
Z x1
Regla del trapecio h h3 00
f .x/dx  .f0 C f1 / error D 12 f ./
polinomio de primer grado x0 2
Z x1
Regla de Simpson h h5 .4/
f .x/dx  .f0 C 4f1 C f2 / error D 90 f ./
polino. segundo grado x0 3
Z x1
Regla de Simpson 38 3h 3h5 .4/
f .x/dx  .f0 C 3f1 C 3f2 C f3 / error D 80 f ./
polino. tercer grado x0 8
Z x1
Regla de Boole 2h 8h7 .6
f .x/dx  .7f0 C 32f1 C 12f2 C 32f3 C 7f4 / error D 945 f ./
polino. cuarto grado x0 45
donde fk indica f .x0 C kh/.
Fórmulas de Newton-Cotes (4/4)
ETSII-UPM
‰El cálculo de los errores de las restantes18.2fórmulas de deNewton-Cotes
Integración numérica funciones j 449

es bastante laborioso y no se incluye en estas trasparencias.


18.2.1.1 Fórmula compuesta del trapecio
‰ Interpretación gráfica de la regla trapezoidal y las dos reglas de
Resulta de aplicar la regla, o fórmula del trapecio, —un polinomio de primer grado— a los m subintervalos en que se
Simpson:
divide el original Œa; b. Se esquematiza en la figura 18.5.

Figura 18.5: Esquema de cómo actúa la fórmula del trapecio para integración con uno y cuatro subintervalos

Así,
ˇ l
b im xi
h h
f .x/ dx D f .x/ dx  .f0 Cf1 / C    C .fm 1 Cfm /
2 2
a xi 1
i D1
h
D .f0 C 2f1 C 2f2 C    C 2fm 1 C fm / :
2
El error que se comete es
ˇ 0 1
Fórmulas b
h Babiertas Cy bcerradas
f .x/ dx D @
i
.f C f /A
a
m

h f ./: i 1 i
2 00
2 12 ETSII-UPM
a i D1
‰ ConceptoZ de
1
fórmula de integración abierta
1
En un script de M ATLAB para Se llama abierta dx
¾ calcular a una fórmula
—que de integración
es ln.2/—, con hasta 256 numérica que
subintervalos, no evalúa
resulta lo que la
0 .1 C x/
indica el cuadro 18.2. función integrando en uno o en los dos extremos del intervalo.
¾Las fórmulas abiertas son útiles cuando>>no se conoce la función en un extremo
for k=0:8
o tiene un valor infinito (integrales impropias).disp(trapezrule(@intfun_1,0,1,2^k))
end
function T = trapezrule(f,a,b,m)
¾ Un caso de gran interés práctico son las fórmulas
% Integración trapecio compuesto de Adams, que utilizan n
0.750000000000000
0.708333333333333
x = linspace(a,b,m+1); % puntos,
subintervalos
pero sólo desean
function f calcular la
= intfun_1(x) integral en el último
0.697023809523809 tramo (ver figuras)
T = (f(a)+f(b))/2; % comienzo y final
% Función que se integra 0.694121850371850
for i = 1:m-1
f = 1./(1+x); 0.693391202207527
T = T + f(x(i+1)); % interior intervalo abierta
end 0.693208208269249 cerrada
end
0.693162438883403
T = T*(b-a)/m; % multiplica por h
0.693150995228108
end
0.693148134232443
Newton-Cotes >> log(2)
ans = 0.693147180559945
Cuadro 18.2

abierta cerrada
18.2.1.2 Fórmula compuesta del Simpson
Adams
Debida a Thomas Simpson, Inglaterra, 1710-1761.

Simpson
‰ Regla de Simpson compuesta
¾ M subintervalos de 3 puntos cada uno de ellos
2M+1 puntos de abscisas xk=a+kh, k=0,1,...,2M
Fórmulas de Newton-Cotes (4/4)
¾
¾ Distancia entre puntos h=(bía)/2M
ETSII-UPM
‰ El cálculo de los errores de las restantes fórmulas de Newton-Cotes
es bastante laborioso
450 j Capítulo 18. Derivación eyintegración
no sede incluye
funciones en estas trasparencias.
‰ Interpretación gráfica de la regla trapezoidal y las dos reglas de
Sigue la misma estrategia de la fórmula del trapecio, pero ajustando una parábola a tres puntos de cada subintervalo
Simpson:
según
¾ seError
apunta deenlalaregla
figurade Simpson compuesta:
18.6.

¾ Interpretación geométrica:

Figura 18.6: Fórmula compuesta de Simpson en uno y dos intervalos

Si Œa; b se divide en m subintervalos, habrá 2m C 1 puntos de abscisas xi D a C ih, i D 0; 1; : : : ; 2m. La distancia


entre los puntos será h D .b a/=2m. La integral es
l b im l xi
h h h
f .x/ dx D f .x/ dx  .f0 C4f1 Cf2 / C .f2 C4f3 Cf4 / C    C .f2m 2 C4f2m 1 Cf2m /
3 3 3
a xi 1
i D1

h
Fórmulas abiertas
3 y2fcerradas
D .f C 4f C C 4f C 2f C    C 2f
0 1 2 3 4 2m 2 C 4f2m 1 C f2m / :
ETSII-UPM
El error que se comete,
‰ Concepto de fórmula de
ˇ
integración0 abierta 1
¾
b i numérica que no evalúa la
Se llama abierta a una fórmula de integración
m
hB C b a 4 .4/
f .x/ dx D @ .f2i 2 C 4f2i 1 C f2i /A h f ./:
función integrando en uno o en los dos 3 extremos del intervalo. 180
a D1
¾ Las fórmulas abiertas son útiles cuando ino se conoce la función en un extremo
o tiene un valor infinito (integrales impropias). Z 1
1
Hagamos este proceso con una rutina de M ATLAB para dx.
¾ Un caso de gran interés práctico son las fórmulas de0 Adams, 1 C x que utilizan n
puntos, pero sólo desean calcular la integral en el último tramo (ver figuras)
function I = simpson_1(f,a,b,n)
% Integración de f en [a,b] con la regla de Simpson en n+1
abierta cerrada function f = intfun_1(x)
% puntos igualmente espaciados
% Función que se integra
h = (b-a)/n;
f = 1./(1+x);
xi = a:h:b;
end
I = (h/3)*(f(xi(1))+2*sum(f(xi(3:2:end-2)))+4*sum(f(xi(2:2:end)))+f(xi(end)));
Newton-Cotes end

Si lo probamos en una sesión de M ATLAB, como la del cuadro 18.3, con hasta 256 subintervalos, vemos que la precisión
es sensiblemente superior a la que se obtenía con la fórmula del trapecio.
abierta cerrada

Adams
18.2.2 Fórmulas abiertas y cerradas
Se llama abierta a una fórmula de integración numérica que no evalúa la función integrando en uno o en los dos extremos
del intervalo. Se esquematiza en la figura 18.7 para el caso de Newton-Cotes.
Las fórmulas abiertas son útiles cuando no se conoce la función en un extremo o tiene un valor infinito (integrales
impropias).
Para aplicarlas se recurre a la regla del punto medio. Es aplicable a funciones cuya segunda derivada es continua en
Œa; b. Dice que l x1
h3
f .x/ dx D hf .w/ C f 00 .c/;
24
x0
Fórmulas abiertas y cerradas 18.2 Integración numérica de funciones j 451

>> for k=0:8


ETSII-UPM
disp(simpsons(@intfun_1,0,1,2^k))
‰ Concepto de fórmula de integración abierta end
1.166666666666667
0.694444444444444
¾ Se llama abierta a una fórmula de integración numérica que no evalúa la
0.693253968253968
0.693154530654531
función integrando en uno o en los dos extremos del intervalo. 0.693147652819419
0.693147210289823
¾ Las fórmulas abiertas son útiles cuando no se conoce la función en un extremo
0.693147182421455
0.693147180676343
0.693147180567221
o tiene un valor infinito (integrales impropias). >> log(2)
18.2 Integración numérica de funciones j 463

ans =
¾ Un caso de granFórmulas
18.2.2 interés abiertas
prácticoy son las fórmulas de Adams, que utilizan n
cerradas 0.693147180559945

puntos, pero sólo


Se llama abiertadesean calcular
a una fórmula lanumérica
de integración integral en
que no18.3
Cuadro ella último
evalúa tramo
función integrando (ver
en uno figuras)
o en los dos extremos
del intervalo.

Newton-Cotes abierta Newton-Cotes cerrada

Newton-Cotes

Figura
Las fórmulas abiertas son útiles cuando no se conoce 18.7 en un extremo o tiene un valor infinito (integrales
la función
impropias).
La regla del punto medio es muy útil para estos casos. Es aplicable a funciones cuya segunda derivada es continua en
Œa; b:
Adams donde h D .x1 x0 /, w es el punto medio (es l xdecir
1 x0 C h=2) y c está
h3
entre x0 y x1 . Su versión compuesta es
f .x/ dx D hf .w/ C f 00 .c/;
0 1 24
l b x0 m i 2
donde h D .x1 x0 /, w es el punto .b xa/h
B x0 C h=2 y cCestá entre
f .x/medio,
dx Deshdecir
@ f .wi /A C 0 y x1f
. Su
00 versión compuesta es
.c/:
24
a l b i
0 1
m
iD1 2
C .b a/h 00
f .x/ dx D h @ f .wi /A C f .c/:
B
R 1 sen.x/ 24
Ejemplo 18.2 Aproximemos 0 x a dx mediante la i D1regla del punto medio compuesta, con m D 10 subintervalos.

Los puntos medios son 0;05, 0;15;R: 1: :sen.x/


; 0;95. La formula daría lo que sigue:
Ejemplo 18.2 Aproximemos 0 x dx con la regla del punto medio compuesta; m D 10. Los puntos medios son
ˇ daría
0;05, 0;15; : : : ; 0;95 y la formula 1
lo que sigue:
!
10
X
ˇ 1 !
f .x/ dx  0;1 10 f .m /
X i D 0;94620858:
f .x/ dx  0;1 1 f .mi / D 0;94620858:
0
1
0

No está nada malnada


No está pues
mallapues
cifralacorrecta con con
cifra correcta 15 dígitos eses0;946083070367183
15 dígitos 0;946083070367183. .Lo
Comprobamos todo
comprobamos en una en una pequeña
pequeña sesión sesión
con M ATLAB
con Mtal cual: se lista en el cuadro 18.4.
ATLAB
>> syms x;
>> f = sin(x)/x
f =
sin(x)/x
>>>> for
F = k=0:8
int(f, x)
disp(Int_puntomedio(0,1,2^k))
F =
sinint(x) >> syms x;
end
function M = Int_puntomedio(a,b,N) >> int(f, x, 0, 1) >> f = sin(x)/x
0.958851077208406
h = (b-a)/N; ans = f = sin(x)/x
0.949233758524602
sinint(1)
i = 1:N; >> F = int(f, x)
c_i = a+0.5*(2*i-1)*h; >> 0.946868205500013
format long F = sinint(x)
>> 0.946279196286071
sinint(1)
f = sin(c_i)./c_i; % función ans0.946132091991150
=
>> int(f, x, 0, 1)
M = h*sum(f); 0.946083070367183 ans = sinint(1)
0.946095325157358
end >> sinint(1)
0.946086134026241
ans = 0.946083070367183
0.946083836279542
0.946083261845123
Otra regla útil aplicable a las fórmulas de Newton-Cotes es
ˇ x4 Cuadro 18.4
 
4h 14h5 .4/
f .x/ dx D 2f .x1 / f .x2 / C 2f .x3 / C f .c/;
3 45
x0
452 j Capítulo 18. Derivación e integración de funciones

Otra regla aplicable a las fórmulas de Newton-Cotes que se menciona habitualmente en la literatura especializada es
Fórmulas abiertas y cerradas ˇ x4
4h
 
14h5 .4/
f .x/ dx D 2f .x1 / f .x2 / C 2f .x3 / C f .c/; ETSII-UPM
3 45
Concepto de fórmula de integración abierta x0

¾ Se donde h D .x4 x0 /=4, x1 D x0 C h, x2 D x0 C 2h, x3 D x0 C 3h y x0 < c < x4 .


Existenabierta
llama otra muchasafórmulas
una fórmula de elintegración
que persiguen mismo objetivo.numérica quetambién
Por ejemplo, una no evalúa la
citada habitualmente es
función integrando
ˇ x en
6
uno
o en los dos extremos del intervalo. 
6h 41h7 .6/
¾ Las fórmulas abiertas
f .x/ dx D son 11f .x1 / 14f .x2 / C 26f .x3 / 14f .x4 / C 11f .x5 / Cen un
útiles cuando no se conoce la función f extremo
.c/;
20 140 34/49

o tiene un valor x infinito (integrales impropias).


0

¾ Undonde
casox0de < x6 . interés práctico son las fórmulas de Adams, que utilizan n
< cgran
John Couch por
Adams, Reino Adams, Reino Unido, 1819-1892.
Un caso de singular interés lo constituyen las fórmulas de Adams, John Couch
puntos, pero sólo desean calcular la integral en el último
Unido, 1819-1892. tramo (ver figuras)

Adams
Un caso de apreciable interés práctico son las fórmulas de Adams que utilizan n

Newton-Cotes
puntos, pero sólo desean calcular la integral en el último tramo (como se aprecia
en la figura).
Utilizan n puntos, pero sólo desean calcular la integral en el último tramo, como por ejemplo el que se ve la figura 18.8.

Adams abierta Adams cerrada

Adams

Figura 18.8

18.2.3 Método de Romberg


Por Werner Romberg, Alemania, 1909-2003.

a b c 1 2 3

d e f g 9 4 6 5
Romberg
h i j 10 8 7

Está basado conceptualmente en la extrapolación de Richardson. Permite mejorar recursivamente la aproximación de


las fórmulas compuestas con poco trabajo adicional.
El intervalo original Œa; b se divide en un número de subintervalos potencia de 2 —1, 2, 4, 8; : : :— y se calculan las
integrales con la fórmula del trapecio. Los resultados se denominan R11 , R21 , R31 ; : : : Ri1 . A partir de estas integrales,
mediante extrapolación de Richardson, se calculan otras R22 , R32 ; : : : ; Ri 2 , de error menor, tipo O.h4 /.
18.2 Integración numérica de funciones j 453

Ejemplo 18.3 Si se desea trabajar con i D 4 (8 subintervalos), y el valor de la función en f .a/ D f1 , f2 , f3 , f4 , f5 ,


f6 , f7 , f8 , f9 D f .b/. Se tendrá que

b a h1
R11 D .f .a/ C f .b// D .f1 C f9 /
2 2 
h2 aCb h2
R21 D f .a/ C f .b/ C 2f D .f1 C 2f5 C f9 /
2 2 2
1
D R11 C h2 f5
2
h3
R31 D .f1 C 2f3 C 2f5 C 2f7 C f9 /
2
1
D R21 C h3 .f3 C f7 /
2
h4 
R41 D f1 C 2f2 C 2f3 C 2f4 C 2f5 C 2f6 C 2f7 C f9
2
1
D R31 C h4 .f2 C f4 C f6 C f8 / :
2
Las extrapolaciones que se hacen son, a partir de Richardson,

22 R21 R11
R22 D
3
22 R31 R21
R32 D
3
22 R41 R31
R42 D
3
Con una fórmula de recurrencia para cada coeficiente j k, k > 1,

4k 1
Rj;k 1 Rj 1;k 1
Rj k D :
4k 1 1
Al final se llega a una tabla general
R11
R21 R22
R31 R32 R33
R41 R42 R43 R44
:: ::
: :
El siguiente código de M ATLAB lleva a cabo los pasos del método de Romberg para cualquier función.

function R = romberg(f, a, b, n)
% Calcula una integral definida en el intervalo [a,b]
% con la tabla de n filas de la fórmula de Romberg
R = zeros(n,n);
h = (b-a)./(2.^(0:n-1));
R(1,1) = (b-a)*(f(a)+f(b))/2;
for i = 2:n
subtotal = 0;
for j=1:2^(i-2)
subtotal = subtotal + f(a+(2*j-1)*h(i));
end
R(i,1) = R(i-1,1)/2+h(i)*subtotal;
for k=2:i
R(i,k)=(4^(k-1)*R(i,k-1)-R(i-1,k-1))/(4^(k-1)-1);
end
end
end
454 j Capítulo 18. Derivación e integración de funciones

Su uso para realizar en una sesión de M ATLAB la integración


Z 2
ln.x/ dx
1

así como una serie de comprobaciones posteriores, da lugar a lo que refleja el cuadro 18.5.

>> romberg(@log,1,2,4)
ans =
0.346573590279973 0 0 0 >> 2*log(2)-1-ans(5,5) % Compro. resultado numérico
0.376019349194069 0.385834602165434 0 0 ans = 1.8772e-010
0.383699509409442 0.386259562814567 0.386287893524509 0 >> syms x; % Todo de forma simbólica
0.385643909952095 0.386292043466313 0.386294208843096 0.386294309086248 >> f = log(x)
>> 2*log(2)-1 f = log(x)
ans = 0.386294361119891 >> F = int(f, x)
>> format short e F = x*(log(x) - 1) % Primitiva de la integral
>> romberg(@log,1,2,5) >> int(f, x, 1, 2)
ans = ans = log(4) - 1
3.4657e-001 0 0 0 0 >> format long
3.7602e-001 3.8583e-001 0 0 0 >> log(4)-1
3.8370e-001 3.8626e-001 3.8629e-001 0 0 ans = 0.386294361119891
3.8564e-001 3.8629e-001 3.8629e-001 3.8629e-001 0
3.8613e-001 3.8629e-001 3.8629e-001 3.8629e-001 3.8629e-001

Cuadro 18.5

18.2.4Método
Cuadraturade Gauss-Legendre
de Gauss-Legendre (1/6)
ETSII-UPM
Además de al trabajo de Gauss, también se debe a Andrien-Marie Legendre, Francia, 1752-1833.
‰ Características del método de Gauss-Legendre
Se permite variar la posición de los nodos para mejorar el orden del método.
¾
Se trabaja en un intervalo de integración normalizado [í1, 1].
¾
Legendre
¾ Con n puntos de integración y n pesos por determinar se pueden satisfacer 2n
condiciones, como por ejemplo integrar exactamente las 2n primeras potencias
de x (desde x0 a x2ní1). Con esto el método será de orden 2ní1 pues integrará
exactamente cualquier polinomio de dicho grado.
En este procedimiento se permite variar
¾ Las siguientes la posición
figuras muestrande cómo
los nodos para mejorar
se puede obtenerla precisión del resultado.
mejor aproximación
En la figura 18.9con
se muestra
dos nodos haciendo que no sean los extremos del intervalo. nodos haciendo que no sean
cómo se puede obtener una mejor aproximación con sólo dos
los extremos del intervalo. Se trabaja en un intervalo de integración normalizado: Œ 1; 1.

-1 1 -1 [ [ 1

Figura 18.9: Cambio de posición de los nodos para integrar mediante Gauss-Legendre

La fórmula general de la cuadratura de Gauss-Legendre es


l 1 i
n

f .x/ dx  ci f .xi /;
1
iD1
18.2 Integración numérica de funciones j 455

donde los nodos, xi , son las raíces de los polinomios de Legendre de grado n en el intervalo Œ 1; 1. Los coeficientes, o
pesos, ci , están tabulados para integrar exactamente polinomios de hasta grado 2n 1.
Con n puntos de integración, y n pesos por determinar, se pueden satisfacer 2n condiciones, como por ejemplo integrar
exactamente las 2n primeras potencias de x, desde x 0 a x 2n 1 . En este caso el método tendrá una precisión de orden
2n 1, pues integrará exactamente cualquier polinomio de dicho grado. En la tabla del cuadro 18.6 se explicitan distintos
nodos y coeficientes, o pesos, para n puntos de integración.

n nodos xi coeficientes ci
p
- 1=3 = -0,57735026918963 1 = 1,00000000000000
2 p
1=3 = 0,57735026918963 1 = 1,00000000000000
p
- 3=5 = -0,77459666924148 5=9 = 1,55555555555555
3 0 = 0,00000000000000 8=9 = 1,88888888888888
p
3=5 = -0,77459666924148 5=9 = 1,55555555555555
q p p
- 15C2 30
= -0,86113631159405 90 5 3
= 0,34785484513745
q 35p 180p
15 2 30 90C5 3
- = -0,33998104358486 = 0,65214515486255
q 35p 180p
4 15 2 30 90C5 3
= 0,33998104358486 = 0,65214515486255
q 35p 180p
15C2 30 90 5 3
35 = 0,86113631159405 180 = 0,34785484513745
-0,93246951420315 0,17132449237917
-0,66120938646626 0,36076157304814
-0,23861918608320 0,46791393457269
5 0,23861918608320 0,46791393457269
0,66120938646626 0,36076157304814
0,93246951420315 0,17132449237917

Cuadro 18.6: Nodos y pesos, n D 2 ; : : : 5, para la cuadratura de Gauss-Legendre

Ejemplo 18.4 Aproximemos con cuadratura de Gauss-Legendre la integral


l 1
x2
e 2 dx:
1

El valor exacto con 14 dígitos es 1,71124878378430.


Veamos en el cuadro 18.7 qué nos proporciona M ATLAB con su cálculo simbólico. Con dos nodos, la aproximación

>> format long


>> syms x;
>> f = exp(-x^2/2)
f = exp(-x^2/2)
>> int(f, x, -1, 1)
ans = 2^(1/2)*pi^(1/2)*erf(2^(1/2)/2)
>> double(ans)
ans = 1.711248783784298

Cuadro 18.7

de la cuadratura de Gauss-Legendre es
l 1
x2 p p
e 2 dx  c1 f .x1 / C c2 f .x2 / D 1  f . 1/3/ C 1  f . 1/3/  1,69296344978123:
1
p p
Con tres nodos 59 f . 3/5/ C 89 f .0/ C 95 f . 3/5/  1,71202024520191. Con cuatro c1 f .x1 / C c2 f .x2 / C c3 f .x3 / C
c4 f .x4 /  1,71122450459949.
Para calcular en Œa; b los n nodos y pesos de Gauss-Legendre podríamos usar una rutina de M ATLAB, nada trivial,
como la del cuadro 18.8.
456 j Capítulo 18. Derivación e integración de funciones

function [x,w]=lgwt(N,a,b)
% Calcula los N nodos y pesos de Gauss-Legendre en el intervalo [a,b]
% para el cálculo de integrales definidas.
% Si se quiere calcular la integral de f(x) es ese intervalo
% calcular el valor de f(x) en todos los puntos del vector x.
% La integral es sum(f.*w);
N=N-1; N1=N+1; N2=N+2; xu=linspace(-1,1,N1)’;
y =cos((2*(0:N)’+1)*pi/(2*N+2))+(0.27/N1)*sin(pi*xu*N/N2);
L =zeros(N1,N2); % Matriz Legendre-Gauss Vandermonde
Lp=zeros(N1,N2); % Derivada de LGVM
% Calcula ceros del Polinomio de Legendre de orden N+1 (Newt.-Rap)
y0=2;
while max(abs(y-y0))>eps % Tolerancia de nuevos puntos: eps
L(:,1)=1; Lp(:,1)=0; L(:,2)=y; Lp(:,2)=1;
for k=2:N1
L(:,k+1)=((2*k-1)*y.*L(:,k)-(k-1)*L(:,k-1))/k;
end
Lp = (N2)*( L(:,N1)-y.*L(:,N2) )./(1-y.^2);
y0 = y; y = y0-L(:,N2)./Lp;
end
x=(a*(1-y)+b*(1+y))/2; % Pasar de [-1,1] to [a,b]
w=(b-a)./((1-y.^2).*Lp.^2)*(N2/N1)^2; % Cálculos de pesos
end

Cuadro 18.8

l 1
x2
Calculemos con este código la integral del ejemplo anterior, e 2 dx.
1

>> [x,w]=lgwt(8,-1,1);
>> [x,w]=lgwt(6,-1,1); Con 8 nodos, y con la rutina de integra- >> sum(exp(-(x.^2)/2).*w)
>> f=exp(-(x.^2)/2);
ción quad de M ATLAB para comparar, ans = 1.711248783780728
>> sum(f.*w)
se obtiene esto: >> quad(’exp(-(x.^2)/2)’,-1,1,1.e-14)
ans = 1.711248771041351
ans = 1.711248783784298

Para aproximar una integral en un intervalo cualquiera Œa; b, haremos uso de la aproximación

l b n  !
b a X .b a/ zi C .b C a/
f .x/ dx  ci f :
2 2
a iD1

Ejemplo 18.5 Aproximemos numéricamente, usando cuadratura de Gauss-Legendre, la integral

l 2

ln.x/ dx
1

Haciendo uso de la expresión de la integral para un intervalo cualquiera, resulta lo que sigue.

l 2 l 1   >> [x,w]=lgwt(4,-1,1); % Cuatro nodos


zC3 1 >> f=log((x+3)/2)*0.5;
ln.x/ dx D ln 2
dz: >> sum(f.*w)
2
1 1 ans = 0.386294496938714

Con cuatro nodos, la aproximación está muy cerca de la exacta, 2 ln 2 1 D 0;38629436111989.


18.2 Integración numérica de funciones j 457

18.2.4.1 Integrales múltiples


La cuadratura de Gauss se puede utilizar para realizar integrales múltiples aplicándola sucesivamente a cada una de las
variables, como por ejemplo:
Z 1Z 1 Z 1X n n
X Z 1

f .; / d d D ci f .i ; / d D ci f .i ; / d
1 1 1 i D1 i D1 1

Xn n
X Xn X
n
D ci cj f .i ; j / D ci cj f .i ; j /:
i D1 j D1 iD1 j D1

18.2.5 Cuadratura adaptativa


La idea es utilizar una táctica “divide y vencerás” subdividiendo el intervalo de integración según los tramos de va-
riabilidad de la función. Se comienza dividiendo Œa; b en dos subintervalos iguales y se utiliza la fórmula de Sim-
Rb
pson con h D .b a/=2 para calcular una aproximación I1  a f .x/dx. Se hace lo mismo con h=2 para obtener
Rm Rb
IL  a f .x/dx y IR  m f .x/dx, donde m D .a C b/=2. Luego, por extrapolación de Richardson, se calcula
I2 D IL C IR e I3 D I2 C I215I1 .
Si recordamos los errores que se cometían con la fórmula de Simpson,
Z b
h h5 .4/
f .x/dx D .f0 C 4f1 C f2 / f .c0 /;
a 3 90
para dos subintervalos se tiene que
Z b
h5 f .4/ .c1 / h5 f .4/ .c2 /
f .x/dx D IL C IR
a 32 90 32 90
h5 f .4/ .c3 /
D IL C IR :
16 90
Restando este resultado de la expresión anterior queda

f .4/ .c0 / h5 f .4/ .c3 /


I1 .IL C IR / D h5
90 16 90
15 3 f .4/ .c3 /
 h :
16 90
Como el error de I1 .IL C IR / es 15 veces el de la aproximación IL C IR de la integral, se comprueba si
ˇ ˇ
ˇI1 .IL C IR / ˇ < 15  tol

y si no lo es, se dividen los dos subintervalos Œa; m y Œm; b en dos cada uno hasta que se llegue a la precisión adecuada.
Pasemos a M ATLAB esta forma de operar.

function q = quadstep(f,a,b,tol,fa,fc,fb)
% Subfunction recurrente de quadadapt
function [q fnct] = quadadapt(f,a,b,tol) global fnct
% Evalua la integral de f(x) en [a,b] h = b-a; c = (a+b)/2;
global fnct % Veces que se evalúa la función fd = f((a+c)/2); fe = f((c+b)/2);
if nargin<4 || isempty(tol), tol=1.e-6; end fnct = fnct+2;
fnct = 0; q1 = h/6 * (fa+4*fc+fb);
c = (a+b)/2; q2 = h/12 * (fa+4*fd+2*fc+4*fe+fb);
fa = f(a); if abs(q2-q1) <= tol
fc = f(c); q = q2+(q2-q1)/15;
fb = f(b); else
fnct = fnct+3; qa = quadstep(f,a,c,tol,fa,fd,fc);
q = quadstep(f,a,b,tol,fa,fc,fb); qb = quadstep(f,c,b,tol,fc,fe,fb);
end q = qa + qb;
end
end
458 j Capítulo 18. Derivación e integración de funciones

l 2
 

1 3
Si utilizamos estos códigos para integrar sen C dx se obtiene lo que lista el cuadro 18.9.
2 x 2
7

sin(1/x)+3/2
>> f1_Heath_2=@(x)sin(1./x)+3/2;
>> [q fnct]=quadadapt(f1_Heath_2,2/(7*pi),2/pi,1.e-14) 2.5
q = 0.984511912667507
fnct = 3949
%% Comprobación con cuadratura adaptativa de Simpson de Matlab
2
>> [q2 fnct1]=quad(f1_Heath_2,2/(7*pi),2/pi,1.e-14)
q2 = 0.984511912667507
fnct1 = 2069
%% Cuadratura adaptativa de Lobatto de Matlab 1.5
>> [q2 fnct1]=quadl(f1_Heath_2,2/(7*pi),2/pi,1.e-14)
q2 = 0.984511912667507
fnct1 = 1308
%% Con el cálculo simbólico de Matlab 1
>>syms x a b
>> f=sin(1./x)+3/2;
>> I=int(f,2/(7*pi),2/pi);
0.5
>> double(I)
ans = 0.984511912667507
0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6
x

Cuadro 18.9

Como se puede apreciar en ese cuadro, el número de veces que se evalúa la función en los métodos probados es
sensiblemente diferente.

Referencias, fuentes y lecturas complementarias


Gran parte de lo expuesto en este capítulo es material estándar en libros, papers y apuntes de análisis numérico o métodos
numéricos. Lo presentado corresponde a apuntes propios y de compañeros del Departamento de Matemática Aplicada
de la Escuela Técnica Superior de Ingenieros Industriales de la Universidad Politécnica de Madrid. También he seguido
a Burden y Faires [2011] y Sauer [2012].
Las referencias clásicas son Davis y Rabinowitz [1992] y Krommer y Ueberhuber [1998]. Los programas en M ATLAB
son de elaboración propia o adaptados de otros encontrados en Internet en algún caso. Se han ido mejorando en los últi-
mos años para favorecer la docencia de los procedimientos a los que se refieren. No pretenden ser códigos profesionales,
ni robustos, ni aplicables a cualquier tipo de función.
Capítulo 19

Integración de ecuaciones diferenciales


ordinarias

Contenido
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.3 Método de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
19.2.4 Métodos de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
19.2.5 Métodos implícitos y problemas rígidos o stiff . . . . . . . . . . . . . . . . . . . . . . . . . 470
19.2.6 Métodos multipaso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
19.3 Sistemas de ecuaciones diferenciales ordinarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
19.4 Ecuaciones diferenciales de orden superior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
Referencias, fuentes y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476

19.1 Introducción

U NA ecuación diferencial en su forma más simple se define de forma explícita así:

dy
D y 0 D f .t; y/; siendo y.0/ D y0 :
dt

Su solución es Z x
y.x/ D y0 C f .t; y/ dt:
0

El orden de una ecuación diferencial es el de su máxima derivada.


Las ecuaciones diferenciales relacionan las variables de un problema a escala diferencial, en la cual son independientes
de las condiciones de contorno (geometría, condiciones iniciales; : : :)
Estas ecuaciones son el resultado de modelizar una amplia familia de problemas de ingeniería en los que se estudia
cómo y por qué varia en el tiempo el comportamiento de sistemas físicos, económicos, sociales, etc.
Un ejemplo típico de ecuación diferencial ordinaria es la ecuación logística, o función logística,

y 0 D cy.1 y/:
460 j Capítulo 19. Integración de ecuaciones diferenciales ordinarias

Modeliza el crecimiento del tamaño de una población, el cual es proporcional a su tamaño actual, y, y a la capacidad
remanente de recursos disponibles para su sustento. Su ecuación diferencial tiene infinitas soluciones. Si se le especifica
una condición de partida inmediatamente se identifica de qué solución se trata.
Para poder integrar una ecuación diferencial es necesario definir las condiciones de contorno.
Un problema de valor inicial es el que define la ecuación diferencial y una condición, o valor inicial, en un intervalo
a  t  b. En conjunto, una ecuación diferencial definida completamente tiene esta forma:
0
˚ y D f .t; y/
y.a/ D ya
t 2 Œa; b:

Resulta útil visualizar la evolución de una ecuación diferencial en el tiempo como la de un cuerpo sometido a un
campo de fuerzas o de pendientes como el de la figura que sigue, referida a la ecuación logística.

y´ = 5*y*(1-y) y´ = 5*y*(1-y)

1,2 1,2

1 1

0,8 0,8

En este campo, las dos soluciones


0,6 0,6
y y

0,4 que corresponden a y.0/ D 0;2 y 0,4

0,2
y.0/ D 1;26 son estas: 0,2

0 0

-0,2 -0,2

-0,4 -0,4
0 0,2 0,4 0,6 0,8 1 1,2 1,4 1,6 1,8 2 2,2 0 0,2 0,4 0,6 0,8 1 1,2 1,4 1,6 1,8 2 2,2

t t

Tipos de ecuaciones diferenciales:


Ecuaciones diferenciales ordinarias —EDO— De primer orden: una variable dependiente y una variable indepen-
diente. Problemas de valor inicial y problemas de contorno.
Sistemas de ecuaciones diferenciales N variables dependientes relacionadas por n ecuaciones diferenciales.
Ecuaciones en derivadas parciales Una variable dependiente y varias variables independientes. Problemas elípticos,
parabólicos e hiperbólicos.

19.2 Integración numérica de ecuaciones diferenciales ordinarias


Analíticamente sólo se pueden integrar algunas ecuaciones diferenciales. La integración numérica no obtiene una
función analítica y.t/ que satisface la ecuación diferencial sino un conjunto de valores discretos yk que se corresponden
con otros tantos, tk , de la variable independiente t. Si se desean resultados para otros valores de t se pueden utilizar los
métodos de interpolación vistos previamente.
Los integradores numéricos, conocida la función yi en el instante ti , calculan el valor yi C1 en tiC1 D ti C h mediante
una expresión del tipo
yi C1 D yi C h;
donde  es un término que incorpora información de la derivada y 0 .
Los métodos de integración numérica que veremos se clasifican en:
De paso simple y paso múltiple Los de paso simple calculan la solución yi C1 en el instante ti C1 a partir del valor de
la función yi en el instante ti . Por ejemplo, en el método de Euler

yiC1 D yi C f .ti ; yi /h:


19.2 Integración numérica de ecuaciones diferenciales ordinarias j 461

 Los de paso múltiple calculan la solución en ti C1 a partir del valor de la función en ti , ti 1 ; : : : ; ti nC1 . Por
ejemplo, en el método de Heun
h 
yi C1 D yi C f .ti ; yi / C f ti C1 ; yi C hf .ti ; yi / :
2
Métodos explícitos e implícitos Los métodos explícitos permiten hallar yi C1 directamente sin tener que resolver un
sistema de ecuaciones no lineales.
Por ejemplo, Runge-Kutta de orden dos
yi C1 D yi C .a1 k1 C a2 k2 / h;
donde
k1 D f .ti ; yi /
k2 D f .ti C p1 h; yi C q11 k1 h/:
 Los métodos implícitos necesitan resolver un sistema de ecuaciones no lineales pues yiC1 aparece a ambos lados
de la ecuación.
Por ejemplo, la regla trapezoidal
1 
yiC1 D yi C f .ti ; yi / C f .ti C1 ; yi C1 / h:
2

19.2.1 Método de Euler


Formulado por Leonhard Euler, Basilea 1707–San Petersburgo 1783.

Euler

Sigue la idea intuitiva de la geometría de los gráficos de los campos de fuerzas o pendientes. En este sentido, ¿por qué
no “resolver” una ecuación diferencial “siguiendo” las flechas, partiendo de un punto inicial?
Desde el punto de arranque se mueve la solución una pequeña distancia, siguiendo una pendiente, llegándose a un
nuevo punto .t1 ; y1 / en el que se revalúa la pendiente, luego hay que moverse con esa nueva pendiente otro poco, etc.
La aproximación será buena si la pendiente no cambia mucho súbitamente.
La relación general de recurrencia del método de Euler la define
yi C1 D yi C f .ti ; yi /h
en la que f .ti ; yi / es la pendiente en cada punto —su derivada— y h el paso que se da con esa inclinación. La interpre-
tación geométrica de lo que sucede es la de la figura 19.1.
En el proceso se producen errores de truncamiento en cada punto, por retener sólo dos términos en el desarrollo de
Taylor, y en el total, así como de redondeo en los cálculos del proceso. El error global es O.h/.
Ejemplo 19.1 Se trata de resolver € y D ty C t
0 3

y.0/ D y0
t 2 Œ0; 1;
que discurre en el campo de “fuerzas” de la parte izquierda de figura 19.2, partiendo de y.0/ D 1. Si plasmamos el
procedimiento de Euler en un script de M ATLAB resulta lo del cuadro 19.1 de la página 462.
Con lo hacemos funcionar con pasos h D 0;1 y h D 0;01 se obtiene lo que explicita la figura 19.3 de la página 463.
Con h D 0;1 los errores son apreciables.
‰ (V HO PpWRGR GH LQWHJUDFLyQ QXPpULFD PiV VHQFLOOR
‰ 6H XWLOL]D OD GHULYDGD HQ HO SXQWR WL \L SDUD DYDQ]DU XQ SDVR

‰ (V PX\ IiFLO GH DSOLFDU DXQTXH QR PX\ SUHFLVR SXHV OD GHULYDGD HQ


WL \L QR HV VXILFLHQWHPHQWH UHSUHVHQWDWLYD GHO SDVR K
462 j Capítulo 19. Integración de ecuaciones diferenciales ordinarias
‰ ,QWHUSUHWDFLyQ JHRPpWULFD

YDORU H[DFWR
HUURU
YDORU DSUR[LPDGR

\L \L I WL \L K

\L K

WL WL

Figura 19.1

y´ = t*y+t³
2
y´ = t*y+t³ 2

1,8
1,8

1,6
1,6

1,4
1,4

1,2
1,2

y y 1
1

0,8
0,8

0,6
0,6

0,4
0,4

0,2
0,2

0
0
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1

t t

Figura 19.2: Aplicación del método de Euler a la ecuación y 0 D ty C t 3 . A la derecha la solución exacta y más abajo la
aproximada con el método de Euler y h D 0;1

% Script del método de Euler con Matlab, Euler_2_S.m


% y’(t)=t*y+t^3; solución analítica exacta y(t)=3*exp^(t^2/2)-t^2-2

h = 0.1; h1 = 0.01 % Pasos de integración h=0,1 y h=0,01


t = 0:h:1; t1 = 0:h1:1;
yx(1)=1.0; yx1(1)=1.0 % Punto de partida
for i=1:length(t)-1 % Bucle del proceso de integración
k1 = t(i)*yx(i)+t(i)^3;
yx(i+1) = yx(i)+h*k1; % Nuevo punto: valor de y
end
for i=1:length(t1)-1 % Bucle del proceso de integración
k11 = t1(i)*yx1(i)+t1(i)^3;
yx1(i+1) = yx1(i)+h1*k11; % Nuevo punto: valor de y
end
y=3*exp(t.^2/2)-t.^2-2; % Solución exacta
plot(t,yx,’b--’,t,y,’r.’,t1,yx1,’k:’); % Gráficos
legend(’Aproximación h=0,1’,’Exacto y’,’aproximación h=0,01’);
title(’Paso de Euler, h=0,1 y h=0,01’);
xlabel(’t’);
ylabel(’y*(t), y(t)’); axis([0 1 0.95 2]);
for i=1:length(t) % Tabla
disp(sprintf(’t=%5.3f, y(t)=%6.4f, y*(t)=%6.4f’,t(i),y(i),yx(i)));
end

Cuadro 19.1
19.2 Integración numérica de ecuaciones diferenciales ordinarias j 463

Paso de Euler, h=0,1 y h=0,01


2
Aproximación h=0,1
1.9 Exacto y
aproximación h=0,01
>> Euler_2_S 1.8
t=0.000, y(t)=1.0000, y*(t)=1.0000
1.7
t=0.100, y(t)=1.0050, y*(t)=1.0000
t=0.200, y(t)=1.0206, y*(t)=1.0101 1.6
t=0.300, y(t)=1.0481, y*(t)=1.0311

y*(t), y(t)
t=0.400, y(t)=1.0899, y*(t)=1.0647 1.5
t=0.500, y(t)=1.1494, y*(t)=1.1137
t=0.600, y(t)=1.2317, y*(t)=1.1819 1.4
t=0.700, y(t)=1.3429, y*(t)=1.2744
t=0.800, y(t)=1.4914, y*(t)=1.3979 1.3
t=0.900, y(t)=1.6879, y*(t)=1.5610
t=1.000, y(t)=1.9462, y*(t)=1.7744 1.2

1.1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1


t
Figura 19.3

19.2.2 Mejoras del método de Euler


19.2.2.1 Método de Heun
Su idea es utilizar en .ti ; yi / un valor promedio de la derivada en ese punto y en .ti C1 ; yiC1 /. Como no se conoce el
valor yi C1 , se calcula con el método de Euler, yiC1 D yi C hf .ti ; yi /. El nuevo valor de yi C1 será

h 
yi C1 D yi C f .ti ; yi / C f .tiC1 ; yiC1 / :
2

El método se conoce como predictor-corrector. El error es O.h3 /. Fue formulado por Karl Heun, Alemania, 1859-1929.

Heun

El esquema geométrico de actuación es el de la figura 19.4.

Figura 19.4
19.2 Integración numérica de ecuaciones diferenciales ordinarias j 465

19.2.2.2 Método del punto medio


En vez de utilizar el promedio de las derivadas en los puntos .ti ; yi / y .ti C1 ; yiC1 /, utiliza una aproximación de la
derivada en el punto medio:
 
h 0 h
yi C1=2 D yi C f .ti ; yi /; yi C 1 D f ti C ; yi C1=2 :
2 2 2
A partir de ello, 
yiC1 D yi C hf ti C1=2 ; yiC1=2 :
Este procedimiento se conoce también como Euler corregido. Está relacionado con el método de integración de
Newton-Cotes. El error que produce es O.h2 /.

19.2.3 Método de Taylor


Formulado en 1715 por Brook Taylor, Reino Unido, 1685-1731, aunque parece que el trabajo original se debe al escocés
James Gregory, 1638-1675.

Taylor

Si se desarrolla en serie de Taylor y.t/ en el punto ti , suponiendo que y.t/ tiene derivadas continuas hasta orden nC1,
se tiene que
h2 h3 hn .n/
y.tiC1 / D y.ti / C hy 0 .ti / C y 00 .ti / C y 000 .ti / C    C y .ti / C O.hnC1 /:
2Š 3Š nŠ
Si f es derivable,
y 0 D f .t; y/
y 00 D f 0 D f t C fy  y 0 D f t C fy  f
y 000 D f 00 D f t t C 2f ty  f C fyy  f 2 C f t  fy C fy2  f
::
:
Sustituyendo estas expresiones en el desarrollo en serie se obtiene el método de Taylor del orden de precisión que se
desee. El gran inconveniente de este proceder es que las derivadas de orden superior a uno —en este caso sería el método
de Euler— pueden ser muy complicadas de calcular.

19.2.4 Métodos de Runge-Kutta


Son una familia de métodos desarrollados a partir del trabajo de los alemanes Carl David Tolmé Runge, 1856-1927, y
Martin Wilhelm Kutta, 1867-1944.

Runge Kutta

Consiguen la precisión del método de Taylor sin necesidad de calcular derivadas de orden elevado. El avance se realiza
mediante una expresión general
yiC1 D yi C h; con  D a1 k1 C a2 k2 C    C an kn ;
466 j Capítulo 19. Integración de ecuaciones diferenciales ordinarias

donde los coeficientes ai son unos pesos de aproximaciones ki de las distintas derivadas por medio de la función f .t; y/
evaluada en distintos puntos.
Los valores de las ki se obtienen mediante unas fórmulas de este corte:

k1 D f .ti ; yi /

k2 D f ti Cp1 h; yi Cq11 k1 h

k3 D f ti Cp2 h; yi Cq21 k1 hCq22 k2 h
::
:

kn D f ti Cpn h; yi Cqn 1;1 k1 hCqn 1;2 k2 hC   C qn 1;n 1 kn 1 h :

Cada valor de ki depende de los ks ya calculados, por lo que la evaluación de estas fórmulas es sencilla si se conocen
los coeficientes.
Los ps y qs son coeficientes numéricos que se calculan imponiendo la condición de que el error sea del mismo orden
que en el método de Taylor de orden similar.

19.2.4.1 Deducción de las fórmulas de Runge-Kutta de orden 2



Son yiC1 D yi C a1 k1 Ca2 k2 h, donde k1 D f .ti ; yi /  fi y k2 D f .ti Cp1 h; yi Cq11 k1 h/:
El método de Taylor, reteniendo términos hasta orden dos, establece que

h2 00 h2 
yi C1 D yi C hy 0 .ti / C y .ti / D yi C hfi C f ti C fyi  fi :
2Š 2
Desarrollando en serie las fórmulas de Runge-Kutta se tiene que

yiC1 D yi C.a1 k1 Ca2 k2 /h D yi C a1 f .ti ; yi /Ca2 f .ti Cp1 h; yi Cq11 k1 h/ h

D yi Ca1 fi h C a2 fi Cf ti p1 hCfyi fi q11 k1 h h:

Comparando las dos expresiones se llega a estas tres ecuaciones con cuatro incógnitas:

1 1
a1 C a2 D 1; a2 p1 D y a2 q11 D :
2 2

Dando valores a a2 se obtienen distintas fórmulas de Runge-Kutta de orden 2 (con error local de truncamiento O.h3 /).
En concreto:
1
1.- a2 D 2
! p1 D q11 D 1: Método de Heun

yiC1 D y1 C h2 k1 C k2
k1 D f .ti ; yi /
k2 D f .ti C h; yi C k1 h/:

2.- a2 D 1 ! p1 D q11 D 1=2: Método del Punto Medio


yi C1 D y1 C k2 h
k1 D f .ti ; yi /
k2 D f .ti C h=2; yi C k1 h=2/:

3.- a2 D 2=3 ! p1 D q11 D 3=4: Método de Ralston



yiC1 D y1 C h2 31 k1 C 23 k2
k1 D f .ti ; yi /
k2 D f .ti C 43 h; yi C 34 k1 h/:
468 j Capítulo 19. Integración de ecuaciones diferenciales ordinarias

Para aumentar en una unidad el orden del Runge-Kutta clásico de orden cuatro hacen falta dos evaluaciones de función
adicionales.
En general no se suelen utilizar fórmulas de Runge-Kutta de orden muy elevado porque el aumento de precisión no
compensa el trabajo adicional.

Ejemplo 19.3 Para recapitular lo presentado hasta aquí, vamos a integrar la ODE y 0 D y 1t 2t , empleando Euler,
Heun, Runge-Kutta y la rutina de M ATLAB ode45, que usa Runge-Kutta.
La condición de partida es que y 0 D 0, en t D 0. La fórmula analítica de este problema no se conoce, por lo que se
suple con la integración numérica. El script de M ATLAB que lo lleva a cabo es el del cuadro 19.3.

function test_ode45_1(relerr,abserr)
% Comparación de métodos explícitos para igual evaluaciones de f
clear all, close all
ecdif=@ec04; % ecuación diferencial a integrar: en ec04.m function [T,Y]=heun(f,tspan,y0,h) % Método de Heun
tspan=[0,2]; y0=0; h=.25; n=(tspan(2)-tspan(1))/h+1;
% Diversos métodos con mismas llamadas a f T=tspan(1)*zeros(n,1); Y=y0*zeros(n,length(y0));
[T1,Y1]=eulere(ecdif,tspan,y0,h/4); % Euler y=y0; t=tspan(1);
[T2,Y2]=heun(ecdif,tspan,y0,h/2); % Heun for i=2:n
t1=t+h;
[T3,Y3]=rk4(ecdif,tspan,y0,h); % Runge-Kutta orden 4
yp=f(t,y); % predictor con Euler explícito
options = odeset(’RelTol’,1.e-9,’AbsTol’,1.e-12); y1=y+h*yp;
[T4,Y4]=ode45(ecdif,tspan,y0,options); % Exacto: R-K de Matlab y1n=y+h*(yp+f(t1,y1))/2; % corrector con regla trapezoidal
% T(i,:)=t1; Y(i,:)=y1n; % tiempo valor de la función
plot(T1,Y1,’:r’); axis([tspan(1),tspan(2),0,.6]); % ejes t=t1; y=y1; % se actualizan t e y
xlabel(’tiempo’); ylabel(’y’); hold on; grid end
plot(T2,Y2,’--g’); plot(T3,Y3,’-.b’); plot(T4,Y4,’-k’); end
end
function [T,Y]=rk4(f,tspan,y0,h) % Runge-Kutta orden 4
n=fix((tspan(2)-tspan(1))/h+1);
function yprima=ec04(t,y) T=tspan(1)*zeros(n,1); Y=y0*zeros(n,length(y0));
% solución exacta desconocida y=y0; t=tspan(1);
if t==0, yprima=1; else yprima=y*(-2*t+1/t); end for i=2:n
end t1=t+h;
k1=h*f(t,y); % cálculo coeficientes k
k2=h*f(t+h/2,y+k1/2);
function [T,Y]=eulere(f,tspan,y0,h) % Método de Euler
k3=h*f(t+h/2,y+k2/2);
n=fix((tspan(2)-tspan(1))/h+1); k4=h*f(t+h,y+k3);
T=tspan(1)*zeros(n,1); Y=y0*zeros(n,length(y0)); y1=y+(k1+2*k2+2*k3+k4)/6;
y=y0; t=tspan(1); T(i,:)=t1; Y(i,:)=y1; % tiempo valor de la función
for i=2:n t=t1; y=y1; % se actualizan t e y
y1=y+h*f(t,y); t1=t+h; % Fórmula de Euler end
T(i,:)=t1; Y(i,:)=y1’; % tiempo valor de la función end
t=t1; y=y1; % se actualizan t e y
end
end

Cuadro 19.3

El dibujo de cada trayectoria queda como se ve en la figura 19.7.

19.2.4.3 Métodos Runge-Kutta de paso variable


Hasta ahora hemos supuesto que h era fijo. En un intervalo de integración Œ0; T , sin embargo, puede haber subintervalos
donde la variabilidad de la función y.t/ conviene tratarla con más detalle, con pasos mayores o más pequeños.
Para cambiar el paso, con un coste razonable de tiempo de cálculo, es necesario estimar la magnitud del error local
de truncamiento. Esto puede hacerse con dos fórmulas de distinto orden o utilizando dos pasos diferentes: h y h=2,
habitualmente.
Los métodos de Runge-Kutta de paso variable, también denominados embebidos, o encajados, resuelven el problema
dos veces usando los pasos h y h=2, y comparan los resultados

19.2.4.4 Método Runge-Kutta-Fehlberg


Su nombre viene de Runge, Kutta y de Erwin Fehlberg, Alemania, 1911–EE.UU., 1990. Usa fórmulas Runge-Kutta de
orden 4 y 5 respectivamente, concretamente,

k1 D hf .ti ; yi /
470 j Capítulo 19. Integración de ecuaciones diferenciales ordinarias

 
1 1
k2 D hf ti C h; y1 C k1
5 5
 
3 3 9
k3 D hf ti C h; y1 C k1 C k2
10 40 40
 
4 44 56 32
k4 D hf ti C h; y1 C k1 k2 C k3
5 45 15 9
 
8 19372 25360 64448 212
k5 D hf ti C h; y1 C k1 k2 C k3 k4
9 6561 2187 6561 729
 
9017 355 46732 49 5103
k6 D hf ti C h; y1 C k1 k2 C k3 C k4 k5
3168 33 5247 176 18656
 
35 500 125 2187 11
ziC1 D yi C k1 C k3 C k4 k5 C k6
384 1113 192 6784 84
k7 D hf .ti C h; zi C1 /
 
5179 7571 393 92097 187 1
yiC1 D yi C k1 C k3 C k4 k5 C k6 C k7 :
57600 16695 640 339200 2100 4

La estimación del error que se comete en el paso es


ˇ ˇ
ˇ 71 71 71 17253 22 1 ˇˇ
ei C1 D jziC1 yi C1 j D h ˇˇ k1 k3 C k4 k5 C k6 k7 :
57600 16695 1920 339200 525 40 ˇ

No es necesario calcular yi C1 , sólo ei C1 .


Si se cumplen las tolerancias, zi C1 será el nuevo punto y k1 será k7 , por lo que no se desperdician cálculos.

19.2.5 Métodos implícitos y problemas rígidos o stiff


En los métodos explícitos una fórmula determina explícitamente una nueva aproximación yiC1 a partir de datos de h, ti
y yi .
Hay un tipo de problemas, denominados stiff —rígidos—, para los que los métodos explícitos evolucionan mal hacia
la solución.
Son aquellos que convergen relativamente rápido hacia una solución estable pero que tienen componentes transitorios
importantes con un decaimiento o amortiguación mucho más rápido.
Suelen modelizar procesos físicos con varios componentes con escalas de tiempo dispares. El intervalo de tiempo con
el que se les estudia puede ser bueno para uno de ellos pero no para todos.

Ejemplo 19.4 Estudiemos por ejemplo la ecuación diferencial



y0 D ˛ y t 2 C 2t; t > 0; y0 D y.0/;

cuya solución analítica es


˛t
y.t/ D y0 e C t 2:

Si ˛ es un número real grande, la solución varía rápidamente hasta que el componente exponencial se desvanece o
amortigua. A partir de entonces prevalece el componente polinómico de variación lenta.
En la figura 19.8 se observa lo apuntado. La línea continua (azul) es la solución de la ecuación, la discontinua verde
—el componente exponencial— es la que se desvanece hacia cero antes. La roja corresponde al componente polinómico,
de variación en el tiempo mucho más lenta.
Si se introduce una pequeña perturbación del componente t 2 en t D 0;4, la solución exacta se restablece enseguida. En
cambio, el método de Euler produciría, con un h D 2, una perturbación importante que se iría restableciendo después.
19.2 Integración numérica de ecuaciones diferenciales ordinarias j 471

1.4 1

0.9
1.2
0.8

1 0.7

0.6
0.8

0.5

y
y

0.6
0.4

0.3
0.4

0.2

0.2
0.1

0 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
t t

FiguraFigure
19.82.2.2:at Euler
introduced
solution dash-dot due to a perturbation dashed of = 2 solid
time = 0 4. t :
y t

Stiness not only depends on the dierential equation under consideration, but the in-
19.2.5.1 El método de Euler hacia atrás terval of interest, the accuracy criteria, and the region of absolute stability of a numerical
method. For nonlinear systems
Actúa de la siguiente manera:
y
0
= f t y 
y0 D y.0/
yiC1 D yi C hfstiness
.tiC1will; be
yirelated
C1 / :to the magnitudes of the eigenvalues of the Jacobian fy  y. t

These eigenvalues may have vastly dierent sizes that vary as a function of . Thus, t
0
La segunda expresión se obtiene de utilizar la aproximacióndetecting
atrasadastiness de laa derivada
can be C1 , es decir y .tiC1 /, en
enintiitself.
signicant problem vez
de la avanzada en ti como el método de Euler. In order to solve sti problems we'll need a numerical method with a weaker stability
La información que se considera en cada paso tiene en cuenta los than
restriction dosEuler's
ladosmethod.
del intervalo
Implicit methods" Ch.theEuler
Œti ; tiprovide currentlyhacia
acceptedatrás es
approach
implícito, lo que significa que no da directamente una fórmula paraandlawe'll begin with
nueva the simplest implicitymethod,sino
aproximación the backward
que or implicit
ésta se obtiene
i C1
mediante un proceso más elaborado. 21
Ese proceso, para la ecuación diferencial anterior, sería
   
yi C1 D yi C h ˛ yiC1 t 2 C 2t D yi h˛yiC1 C h ˛t 2 C 2t :

Al final 
yi C h ˛t 2 C 2t
yiC1 D :
1 C ˛h
Si a esta fórmula se le aplica un método iterativo de punto fijo –el de Newton por ejemplo–, tal que

y C h ˛t 2 C 2t
y ! g.y/ D ;
1 C ˛h
como g 0 .y/ D 1=.1 C ˛h/ < 1, para cualquier ˛ positivo, el proceso convergerá a un punto estacionario.
Codificadas estas ideas en M ATLAB resulta lo del cuadro 19.4. De ejecutar >> back_euler_1(0,1,1.1,8); en la
zona de trabajo resulta el gráfico de ese cuadro.

19.2.6 Métodos multipaso


Son el fruto del trabajo de Adams, Bashforth y Moulton.

Adams Bashforth Moulton


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

1.4
function [wi, win, y, ti] = back_euler_1(t0,x0,tf,N,TOL,Nmax) Back. Euler
% Euler atrás y’=-alpha(y-t^2)+2t; de t0, x0 a tf; puntos N Euler
Exacto
if nargin<6, Nmax=100; end, if nargin<5, TOL=0.00001; end 1.2
close all
ti = [t0 zeros( 1,N )]; wi = zeros(1,N+1); win = zeros(1,N+1); 1
wi(1) = x0’; win(1) = x0’; x01 = x0; y(1) = x0; h = ( tf-t0)/N;
for i = 1:N
0.8
w0 = x0;
for j = 1:Nmax
top = (w0 - x0) - h*beuler_1(t0+h,w0); 0.6

bot = 1 - h*dbeuler_1(t0+h,w0);

y
dw = top/bot; w0 = w0-dw; Back. Euler
0.4
if abs(dw)<TOL, break; end;
end; 0.2
x0 = w0; x01 = x01+h*beuler_1(t0,x01); Exacto

t0 = t0 + h; ti(i+1) = t0;
0
wi(i+1) = x0’; win(i+1) = x01;
y(i+1) = y(1)*exp(-10*t0)+t0^2;
Euler
end -0.2
plot(ti,wi,ti,win,ti,y), xlabel(’Tiempo’); ylabel(’y’)
legend(’Back. Euler’, ’Euler’, ’Exacto’) -0.4
end 0 0.2 0.4 0.6 0.8 1 1.2 1.4
Tiempo

function f = beuler_1(t, p)
f = -10*(p-t^2)+2*t;
end

function df = dbeuler_1(t, p)
df = -10;
end

Cuadro 19.4

Los métodos que hemos analizado hasta ahora son monopaso, o de paso sencillo. El valor de yi C1 se calcula a partir
de la información de un único punto.
Los multipaso utilizan la información de más puntos anteriores. Su objetivo es hacer menos evaluaciones de la función
para el mismo orden de error.
Necesitan la ayuda de otros para dar los primeros pasos y no se adaptan bien a discontinuidades en la solución:
discontinuidades en las fuerzas aplicadas, impactos, enlaces que aparecen o desaparecen, etc. Tienen la forma general
m
X m
X 
yiC1 D ˛j yiC1 j Ch ˇj f ti C1 j ; yi C1 j :
j D1 j D0

Si ˇ0 D 0, el método es explícito; si ˇ0 ¤ 0, implícito. Los parámetros ˛i y ˇi se calculan mediante interpolación


polinómica.
Un método de dos pasos explícito, o abierto, por ejemplo, sería

yiC1 D ˛1 yi C h ˇ1 yi0 C ˇ2 yi0 1 (se indica y 0 D f .; /):

Para calcular ˛1 , ˇ1 y ˇ2 se interpola forzando a que la fórmula sea exacta para los primeros tres monomios: 1, t y t 2 .
Si y.t/ D 1, entonces y 0 .t/ D 0 y se consigue así la primera ecuación

1 D ˛1  1 C h .ˇ1  0 C ˇ2  0/ :

Si y.t/ D t, entonces y 0 .t/ D 1 y tenemos la segunda



tiC1 D ˛1 ti C h ˇ1  1 C ˇ2  1 :

Si y.t/ D t 2 , entonces y 0 .t/ D 2t y tenemos la tercera


2

tiC1 D ˛1 ti2 C h ˇ1  2ti C ˇ2  2ti 1 :

Estas tres ecuaciones se deben cumplir para cualesquiera valores de ti , por lo que se puede hacer ti 1 D 0, h D 1
(entonces ti D 1 y tiC1 D 2) y se resuelve el sistema lineal resultante 3  3 dando ˛1 D 1, ˇ1 D 32 , ˇ2 D 12 .
19.2 Integración numérica de ecuaciones diferenciales ordinarias j 473

La fórmula resultante del método explícito de dos pasos es


h 
yiC1 D yi C 3yi0 yi0 1 ;
2
que se conoce como la fórmula del Método Adams-Bashforth de segundo orden. Debe el nombre a John Couch Adams,
Reino Unido, 1819-1892, Francis Bashforth, Reino Unido, 1819-1912 y Forest Ray Moulton, EE.UU., 1872-1952.
También así se desarrolla la fórmula implícita, o cerrada, de dos pasos:
0

yiC1 D ˛1 yi C h ˇ0 yiC1 C ˇ1 yi0 :

Para calcular ˛1 , ˇ0 y ˇ1 forzaremos como antes a que la fórmula resultante sea exacta para los primeros tres mono-
mios: 1, t y t 2 . Se obtienen estas tres ecuaciones

1 D ˛1  1 C h ˇ 0  0 C ˇ 1  0

tiC1 D ˛1 ti C h ˇ0  1 C ˇ1  1
2

tiC1 D ˛1 ti2 C h ˇ0  2ti C1 C ˇ1  2ti :

Haciendo ti D 0 y h D 1 (por lo que tiC1 D 1), y resolviendo el sistema 3  3 resultante se llega a que ˛1 D 1,
ˇ0 D 21 y ˇ1 D 21 . La fórmula resultante es
h 0 
yiC1 D yi C y C yi0 ;
2 iC1
que da lugar al método implícito conocido como el método del trapezoide, o Método de Adams-Moulton de un paso.
Algunas de las fórmulas más utilizadas son las de las tablas del cuadro 19.5.

Fórmulas de multipaso explícitas de Adams-Bashforth


n Error
h
 5 3 00
2 yiC1 D yi C 2
3fi fi 1 12
h f ./
h
 3 4 000
3 yiC1 D yi C 12
23fi 16fi 1 C 5fi 2 8
h f ./
h
 251 5 .4/
4 yiC1 D yi C 24
55fi 59fi 1 C 37fi 2 9fi 3 720
h f ./
h
 95 6 .5/
5 yiC1 D yi C 720
1901fi 2744fi 1 C 2616fi 2 1274fi 3 C 251fi 4 288
h f ./

Fórmulas de multipaso implícitas de Adams-Moulton


n Error
h
 1 3 00
2 yi C1 D yi C 2
3fi C1 fi 12
h f ./
h
 1 4 000
3 yi C1 D yi C 12
5fi C1 C 8fi fi 1 24
h f ./
h
 19 5 .4/
4 yi C1 D yi C 24
9fiC1 C 19fi 5fi 1 C fi 2 720
h f ./
h
 27
5 yi C1 D yi C 720
251fi C1 C 646fi 264fi 1 C 106fi 2 19fi 3 1440
h6 f .5/ ./

Cuadro 19.5

19.2.6.1 Métodos predictor-corrector


Combinan métodos explícitos e implícitos en cada intervalo mediante un paso predictor, que estima la solución en el
nuevo punto, y otro corrector, que la mejora. Vencen así la dificultad de contar con un buen punto de partida para
comenzar el proceso de integración.
El método de Adams-Bashforth-Moulton de cuarto orden, que se conoce como método PECE (predice, evalúa, corrige,
evalúa), por ejemplo:
474 j Capítulo 19. Integración de ecuaciones diferenciales ordinarias

Utiliza Adams-Bashforth de cuarto orden como predictor:

 h 
yiC1 D yi C 55fi 59fi 1 C 37fi 2 9fi 3 :
24


Evalúa la función en el nuevo punto ti C1 ; yi C1

fiC1 D f ti C1 ; yiC1 :

Utiliza Adams-Moulton de cuarto orden como corrector:


h 
9f  C 19fi
yi C1 D yi C 5fi 1 C fi 2 :
24 i C1

Finalmente evalúa de nuevo la función en el punto tiC1 ; yi C1

fi C1 D f ti C1 ; yi C1 :

El método de Milne-Simpson:
Utiliza como predictor
4h 
yiC1 D yi 3 C 2fi fi 1 C 2fi 2 :
3
Como corrector
h  
yiC1 D yi 1 C f C 4fi C fi 1 :
3 i C1
También se usa como corrector el de Hamming:


9yi yi 2 C 3h fiC1 C 2fi 2fi 1
yi C1 D :
8

Utilicemos y 0 D 4 t t 3 y 2 para probar el método predictor–corrector de Adams-Bashforth-Moulton de segundo
orden, con las condiciones iniciales y.0/ D 0;5 y en el intervalo de tiempo Œ0; 2. El siguiente programa de M ATLAB
hace el trabajo.

function [t,y]=Adams_Bas_Moul(inter,ic,n)
% Predictor-corrector de orden 2, Adams-Bashforth-Moulton
h=(inter(2)-inter(1))/n; y(1)=ic; t(1)=inter(1); s=2; function y=trapstep(t,x,h) % Un paso con trapezoide
for i=1:s-1 % Trapezoide de un paso para z1=ydot(t,x); g=x+h*z1; z2=ydot(t+h,g);
t(i+1)=t(i)+h; % inicialización y=x+h*(z1+z2)/2;
y(i+1)=trapstep(t(i),y(i),h); end
f(i)=ydot(t(i),y(i));
end function z=ab2step(t,i,y,f,h) % Paso Adams-Bashforth orden 2
for i=s:n % Método multipaso z=y(i)+h*(3*f(i)-f(i-1))/2;
end
f(i)=ydot(t(i),y(i));
t(i+1)=t(i)+h; function z=am1step(t,i,y,f,h) % Paso Adams-Moulton orden 2
y(i+1)=ab2step(t(i),i,y,f,h); z=y(i)+h*(f(i+1)+f(i))/2;
f(i+1)=ydot(t(i+1),y(i+1)); end
y(i+1)=am1step(t(i),i,y,f,h);
end function z=ydot(t,y) % Función que se integra
[T4,Y4]=ode45(@ydot,inter,ic); close all, plot(t,y,T4,Y4) z=4*(t-t^3)*y^2;
end
xlabel(’Tiempo’); ylabel(’y’)
legend(’Adams-Bash.-Moul.’, ’ode45’)
end

El resultado de >> Adams_Bas_Moul([0 2],0.5,20); es el de la figura 19.9.

19.3 Sistemas de ecuaciones diferenciales ordinarias


Muchos sistemas de la ingeniería, economía y ciencias sociales se modelizan o simulan mediante sistemas de ecuaciones
diferenciales. Basta para ello que el sistema tenga más de un grado de libertad o que haya que integrar una ecuación
diferencial de orden superior a 1.
19.4 Ecuaciones diferenciales de orden superior j 475

1
Adams-Bash.-Moul.
0.9 ode45

0.8

0.7

0.6

0.5
y

0.4

0.3

0.2

0.1

0
0 0.5 1 1.5 2 2.5
Tiempo


Figura 19.9: Integración de y 0 D 4 t t 3 y 2 por Adams-Bashforth-Moulton de segundo orden

Ejemplos de ello son los puntos moviéndose en el plano o en el espacio, el movimiento de un sólido rígido sin
restricciones, diversos mecanismos, vehículos, etc.
En general, un sistema de ecuaciones diferenciales ordinarias tiene la forma
9
y10 D f1 t; y1 ; y2 ; : : : ; yn >
>
>
y20 D f2 t; y1 ; y2 ; : : : ; yn =
:: y 0 D f .t; y/:
: >
>
>
;
yn0 D fn t; y1 ; y2 ; : : : ; yn

Se pueden aplicar los métodos vistos hasta ahora pero hay que tener en cuenta que la variable dependiente y, la función
f —y los coeficientes ki si se usa Runge-Kutta— son vectores.
El método de Euler se aplicaría en la forma vectorial

y 0 D f .t; y/ ! yi C1 D yi C hf .ti ; yi /:

19.4 Ecuaciones diferenciales de orden superior


Una ecuación diferencial de orden n tiene esta expresión
d ny  
D y .n/
D f t; y; y 0 ; y 00 ; y 000 ; : : : y .n 1/
dt n
donde

y.t0 / D y0
y 0 .t0 / D y00
y 00 .t0 / D y000
::
:
y .n 1/
.t0 / D y0.n 1/
476 j Capítulo 19. Integración de ecuaciones diferenciales ordinarias

Esta ecuación se puede transformar en un sistema de n ecuaciones diferenciales de orden uno. Para ello, si se introducen
las nuevas variables
y1 D y; y2 D y 0 ; y3 D y 00 ; : : : ; yn D y .n 1/
se tendrá que y10 D y2 , y20 D y3 , y30 D y4 , : : : ; yn0 1 D yn y yn0 D f .x; y1 ; y2 ; : : : ; yn /. Expresado de forma
más compacta, que y 0 D f .t; y/, obteniéndose así un sistema de n ecuaciones diferenciales de primer orden con n
incógnitas, al que habría que añadirle las condiciones iniciales y.t0 / D y0 .

Referencias, fuentes y lecturas complementarias


Lo expuesto en este capítulo se puede encontrar de forma parecida y recurrente en sitios web de muchas universidades
del mundo y de organizaciones especializadas. Lo plasmado en estas páginas del libro está sacado de apuntes propios
tomados de bastantes de esos sitios web y del esfuerzo de varios compañeros del Departamento de Matemática Aplicada
de la Escuela Técnica Superior de Ingenieros Industriales de la Universidad Politécnica de Madrid. También se sigue a
Ascher y Greif [2011], Burden y Faires [2011], Heath [2002], Quarteroni, Sacco y Saleri [2000] y Sauer [2012] .
Las referencias clásicas de las materias del capítulo son Atkinson, Han y Stewart [2009], Blanchard et al. [1999], Boyce
y Di Prima [2009], Butcher [2008]. En el listado al final del libro se pueden ver citadas muchas de las referencias usadas.
Respecto al software que se puede usar, sin duda una vez más M ATLAB contiene casi todo el espectro de soluciones
numéricas disponibles, al menos a escala académica.
Todos los programas son de elaboración propia, adaptados en algún caso de otros disponibles en Internet, y mejorados
a lo largo de los últimos años de docencia. Para favorecer la enseñanza de los procedimientos a los que se refieren, los
he ido adaptando y acomodando para estudiar diversos ejemplos de la práctica cotidiana profesional.
Capítulo 20

Integración de ecuaciones diferenciales


ordinarias con condiciones de Contorno o
Frontera

Contenido
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

E N este capítulo analizamos los problemas que se pueden modelizar mediante una ecuación diferencial de segundo
orden con condiciones en dos puntos dados, extremos de un intervalo de estudio Œa; b.
Son los denominados problemas de ecuaciones diferenciales con valores en la frontera, o problemas de contorno. Se
formulan así:
y 00 D f .t; y; y 0 /; y.a/ D ˛; y.b/ D ˇ:
Para definir la solución se necesitan dos condiciones de contorno:
Si se dan para un mismo punto, se tiene un problema de valor inicial como los que hemos estudiado.
Si se dan para dos puntos, se tiene un problema de valores en la frontera.

20.1 El método del disparo


Se basa en encontrar la ecuación diferencial que tiene la misma solución del de contorno que se estudia.
Con tal fin se genera una sucesión de problemas de valor inicial que converja al dado, tal como la idea del disparo
sugiere en la figura 20.1.
En cada uno se estima y 0 .a/, la derivada —pendiente— de y en el extremo izquierdo del intervalo. Luego se resuelve
(se dispara) hacia y.b/ y se obtiene el valor real yb en b. Se itera hasta que yb esté tan cerca de y.b/ como sea necesario.
De forma más estructurada, si se define la función
€ Diferencia entre y
b e y.b/; donde
F .s/ D y.t/ es la solución del problema de valor inicial,
con y.a/ D ya y y 0 .a/ D s;
ChE-401: Computational Methods in Chem. Eng.

Solution of Bo

Shooting
478 j Capítulo 20. Integración de ecuaciones diferenciales ordinarias con condicionesmethod
de Contorno o Frontera Shooting meth

1. Guess a va
2. Solve the i
3. Check if th
the guess a
Use interpo
It is an iter
BVP

Figura 20.1: Esquema de cómo actúa el método del disparo


Chemical Engineering Dep. Prof. Ibrahim S. Al-Mutaz King Saud University ٢٥ Chemical Engineering Dep.

el problema con valores de frontera se reduce a resolver la ecuación

F .s/ D 0:

Para resolver esta ecuación se puede utilizar el método de la bisección, por ejemplo,
ChE-401: Computational Methods ininformando
Chem. Eng. al programa corres-
pondiente al partir qué dos valores s0 y s1 hacen que F .s0 /F .s1 / < 0.
Ejemplo 20.1 Resolvamos mediante el método del disparo este problema:
Solution of Boundary-Value Problems - Shooting method Shooting meth
€y 00
D 4y ɺyɺ − 4 y + 4
Boundary-Value Initial-value
y.0/ D1
convert problem y (0) = 0,
Problem
y.1/ D 3:
1. Convert the ODE to a system of
Escribamos la ecuación diferencial como un sistema de dos ecuaciones de orden uno
first order ODE
2. guess the initial conditions that
0
BVP y D v
are not available.
Find y ( x ) to solve
3. Solve the Initial-value problem
ɺyɺ + 2 yɺ + y = x 2 v 0 D 4y:
4. Check if the known boundary
y ( 0 ) = 0 . 2 , y (1 ) = 0 . 8 conditions are satisfied
En M ATLAB podría programarse así: 5. If needed modify the guess and
resolve the problem again
function z=F(s) 0
a=0; b=1; yb=3;
Chemical Engineering Dep. ydot = @(t,y) [y(2); 4*y(1)];
Prof. Ibrahim S. Al-Mutaz King Saud University ٢٧ Chemical Engineering Dep.

[t,y]= ode45(ydot,[a,b],[1,s]); % Solver de Matlab


z = y(end,1)-yb
end

Comprobamos que para s D 1, F . 1/  1;0512 y F .0/  0;7622, por lo que podemos invocar el programa
Bisec_y.m en el intervalo Œ 1; 0. El resultado de la evolución en el tiempo de y e y 0 es el de la figura 20.2.

20.2 Método de las diferencias finitas


Su enfoque consiste en reemplazar las derivadas de la ecuación diferencial por su aproximación por diferencias fintas en
una malla, o retícula, de puntos del intervalo de estudio.
Con esta forma de actuar se consigue formular el problema como un sistema de ecuaciones más o menos grande según
lo “tupida” que sea esa malla. Luego se resuelve. Lo que se expone a continuación sigue a Sauer [2012].
Si y.t/ es una función con derivadas continuas al menos hasta cuarto orden, sabemos que

y.t C h/ y.t h/ h2 000


y 0 .t/ D y ./
2h 6
y que
y.t C h/ 2y.t/ C y.t h/ h2 000
y 00 .t/ D C y ./:
h2 12
20.2 Método de las diferencias finitas j 479

y(t)
y'(t)
5

4
y'(t)
>> [ss,t,y]=Bisec_y(@F,[-1,0]);
>> ss 3
ss =

y
-0.4203
2
| CHAPTER 7 >> plot(t,y)
Boundary Value Problems
>> xlabel(’Tiempo’); ylabel(’y’)
y(t)
>> legend(’y(t)’, ’y’’(t)’,’Location’,’NorthWest’) 1

and for the second derivative


0

′′ y(t + h) − 2y(t) + y(t − h) h2 ′′′′


y (t) = + f (c). (7.12)
h2 12 -1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Tiempo

Both are accurate up to an error proportional to h2 .


The Finite Difference Method consists Figura
of 20.2
replacing the derivatives in the differential
equation with the discrete versions, and solving the resulting simpler, algebraic equations
El objetivofor reemplazar los y1 ,wyi2 ;to
es approximations : : :the
; yncorrect
reales devalues yi , as por
la trayectoria shown in Figure 7.6. por
sus aproximaciones Thediferencias
boundaryfinitas, wi ,
según se veconditions are substituted in the system of equations where they are needed.
en la figura.
y

1 w1
w2
ya y1
y2 wn–1
wn
yn–1
yn yb
t
t0 t1 t 2 ... tn–1 tn tn+1

Si el problemaFigure
de contorno
7.6 Theoriginal
Finite es lineal el problema
Difference Method forse BVPs.
convierte entonces en w
Approximations resolver
i , i = 1, .un
. . , sistema
n for de ecuaciones
lineales; si es nothe
lineal, en lo propio.
correct values yi at discrete points ti are calculated by solving a linear system of
Ejemplo 20.2 Resolvamos
equations. mediante diferencias finitas este problema:

00
€
D 4y situations. If the original boundary value
After the substitutions, there are twoypossible
problem was linear, then the resulting system
y.0/ Dof 1 equations is linear and can be solved by
Gaussian elimination or iterative methods. y.1/ If the original problem was nonlinear, then
D 3:
the algebraic system is a system of nonlinear equations, requiring more sophisticated
La solución exacta de este
approaches. Weproblema tiene
begin with la forma
a linear y.t/ D c1 e 2t C c2 e 2t . Las dos constantes, calculadas teniendo en
example.
cuenta los valores en los puntos y.0/ e y.1/, hacen que
◮ EXAMPLE 7.8 Solve the BVP (7.7) 3 e 2 2t e2 3 2t
y.t/ D e C e :
e 2 e y2′′ = 4y e 2 e 2

4y y(0)
La aproximación de la ecuación diferencial y 00 D  = 1,
por diferencias finitas en ti es
y(1) = 3
wiC1 2wi C wi 1
using finite differences. 4wi D 0;
h2

Consider the discrete form of the differential equation y ′′ = 4y, using the centered-
o, wi 1 C 4h2 2 wi C wiC1 D 0:
difference form for the second derivative. The finite difference version at ti is
wi+1 − 2wi + wi−1
− 4wi = 0
h2
or equivalently
wi−1 + (−4h2 − 2)wi + wi+1 = 0.
480 j Capítulo 20. Integración de ecuaciones diferenciales ordinarias con condiciones de Contorno o Frontera

Si se divide el intervalo de estudio en tres tramos, n D 3, el parámetro h D 1=.n C 1/ D 1=4, por lo que habrá tres
ecuaciones. Introduciendo que w0 D 1 y que w4 D 3 se llega al sistema

rcl1 C 4h2 2 w1 C w2 D 0

w1 C 4h2 2 w2 C w3 D 0

w2 C 4h2 2 w3 C 3 D 0:
Sustituyendo el valor de h en este sistema se llega a otro Ax D b, con matriz tridiagonal, como este
2 9 32 3 2 3
4
1 0 w1 1
4 1 9 15 4w2 5 D 4 05 :
4
0 1 49 w3 3
Resolviéndolo se obtiene la solución que se ve más abajo. Las diferencias que se obtienen son O.10 2 /. Para obtener
más precisión habría que aumentar n.
En general, si h D .b a/=.n C 1/ D 1.n C 1/ el sistema de matriz tridiagonal que se obtiene en este ejemplo es de
la forma 2 3
4h2 2 1 0  0 0 0 2 3
2 3 1
6 1 4h 2 2 1    0 0 0 7 w 1
6 7 6 07
6 0 1 4h 2 2  0 0 0 7 6 w2 7 6 7
6 76 7 6 7
6 :: :: :: :: :: 7 6 w3 7 6 0 7
6 : : : : 0 : 7 6 7 6 :7
6 7 6 :: 7 D 6 :: 7 :
6 : : 7 6 7 6 7
6 0 0 0 :: :: 1 0 76 : 7 6 07
6 7 4 wn 1 5 6 7
6 : 7 4 05
4 0 0 0    : : 4h2 2 1 5 wn
3
0 0 0  0 1 4h2 2
Si recogemos todo lo necesario para el cálculo de este ejemplo en un fichero .m codificado en M ATLAB y resolvemos el
problema con la instrucción >> [c,y]=fidifm_1([0 1],[1 3],3), se llega a la solución que se ve en el cuadro 20.1.
La tabla en él incluida refleja el intervalo de integración, las condiciones de contorno y los valores aproximados por el
método en ese intervalo, así como los exactos.
i ti wi yi
function [c,y]=fidifm_1(inter,bv,n) 0 0;00 1;0000 1;0000
% Diferencias finitas de ejemplo sencillo 1 0;25 1;0249 1;0181
% inter, intervalo de integración; bv, valores de contorno; 2 0;50 1;3061 1;2961
% n, número de pasos.
3 0;75 1;9138 1;9049
a=inter(1); b=inter(2); ya=bv(1); yb=bv(2); e=ones(n,1);
h=(b-a)/(n+1); 4 1;00 3;0000 3;0000
alfa=-4*h*h-2;
M=spdiags([e alfa*e e],-1:1,n,n); >> [c,y]=fidifm_1([0 1],[1 3],3)
d=zeros(n,1); d(1)=-ya; d(n)=-yb; c =
t=0:h:b; e1=exp(2)-exp(-2); 1.0249
y=(3-exp(-2))*exp(2*t)/e1+(exp(2)-3)*exp(-2*t)/e1; 1.3061
c=M\d; 1.9138
end y =
1.0000 1.0181 1.2961 1.9049 3.0000

Cuadro 20.1

Los errores que se producen en este método vienen de la aproximación de las derivadas y de la resolución del sistema
de ecuaciones. Para valores de h mayores que la raíz cuadrada de la precisión de la máquina, , prevalecen los de la
aproximación, O.h2 /.
Ejemplo 20.3 Resolvamos ahora mediante diferencias finitas este otro problema:
€y 00
D y y2
y.0/ D 1
y.1/ D 4:
20.3 Métodos de colocación y de elementos finitos j 481

La discretización de la ecuación diferencial en ti lleva a


wi C1 2wi C wi 1
wi C wi2 D 0
h2
o 
wi 1 2 C h2 wi C h2 wi2 C wi C1 D 0;
para 2  i  n 1.
Las condiciones de contorno añaden

ya 2 C h2 w1 C h2 w12 C w2 D 0

wn 1 2 C h2 w1 C h2 wn2 C yb D 0:

En este caso tenemos un sistema de ecuaciones no lineales que podemos resolver mediante Newton-Raphson con esta
fórmula de recurrencia:
wkC1 D wk J .wk / 1 f .wk /:
La función vectorial es 2  3
ya 2 C h2 w1 C h2 w12 C w2
6  7
6 w1 2 C h2 w2 C h2 w22 C w3 7
6 7
f .wk / D 6
6
:: 7;
7
6 : 7

4 wn 2 2 C h2 wn 1 C h2 wn2 1 C wn 5

wn 1 2 C h2 wn C h2 wn2 C yb
donde ya D 1 y yb D 4. Su matriz Jacobiana
2 2 2
 3
2h w1 2Ch 1 0  0
6  : :: :: 7
6
6 1 2h2 w1 2 C h2 : : : : 7
7
6 :: 7
J D6 0 1 : 1 0 7:
6 7
6 :: :: ::  7
4 : : : 2h2 w1 2 C h2 1 5

0  0 1 2h2 wn 2 C h2

Cada fila i es la derivada parcial de la ecuación i de f con respecto a cada wj .


En el cuadro 20.2 se presenta el resultado de organizar todo el procedimiento en un fichero .m de M ATLAB y la
respuesta que se consigue con la instrucción >> w=nlbvpfd([0 1],[1 4],40); en una sesión de trabajo.

20.3 Métodos de colocación y de elementos finitos


La idea que comparten estos dos métodos es la de convertir el problema en otro de resolver un conjunto de ecuaciones
algebraicas mediante la aproximación de la ecuación diferencial por

y.t/ D c1 1 .t/ C    C cn n .t/;

donde las i son funciones base definidas en el intervalo Œa; b y los ci parámetros que hay determinar. Las funciones
base pueden ser polinomios, funciones trigonométricas, splines u otras funciones simples.
La determinación de una solución aproximada de la ecuación diferencial se reduce a encontrar los valores de los ci .
El enfoque de la colocación consiste en usar la aproximación de y.t/ en un conjunto de n puntos a D t1 <    <
tn D b, denominados puntos de colocación, en los que se fuerza a que la solución aproximada y.t/ satisfaga la ecuación
diferencial. Esto lleva a un sistema de ecuaciones lineales, o no lineales, en los que se calculan los ci . La idea es parecida
a la de la interpolación.
El método de los elementos finitos aproxima mediante mínimos cuadrados los ci de tal forma que se minimice la suma
al cuadrado de las desviaciones entre los valores exactos en unos puntos de la ecuación diferencial y los aproximados.
482 j Capítulo 20. Integración de ecuaciones diferenciales ordinarias con condiciones de Contorno o Frontera

4.5
function w1=nlbvpfd(inter,bv,n)
% Diferencias finitas no lineal para resolver BVP
% inter, intervalo de integración; bv, valores de contorno; 4

% n, número de pasos.
a=inter(1); b=inter(2); ya=bv(1); yb=bv(2); 3.5
h=(b-a)/(n+1); w=zeros(n,1); w1=w+0.01;
while abs(w1-w)>sqrt(eps) % Iteraciones de Newton-Raphson
w=w1; 3

w1=w-jac(w,h,n)\f7(w,h,bv,n);
end
2.5
close all, plot ([a a+(1:n)*h b],[ya w1’ yb]);
end
2
function y=f7(w,h,bv,n)
y=zeros(n,1); function a=jac(w,h,n)
y(1)=bv(1)-(2+h^2)*w(1)+h^2*w(1)^2+w(2); a=zeros(n,n); 1.5

y(n)=w(n-1)-(2+h^2)*w(n)+h^2*w(n)^2+bv(2); for i=1:n


a(i,i)=2*h^2*w(i)-2-h^2;
for i=2:n-1
end 1
y(i)=w(i-1)-(2+h^2)*w(i)+h^2*w(i)^2+w(i+1); for i=1:n-1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

end a(i,i+1)=1;
end a(i+1,i)=1;
end
end

Cuadro 20.2

20.3.1 Método de colocación


Vamos a presentarlo con la intención de resolver la ecuación
€y 00
D 4y
y.0/ D 1
y.1/ D 3:
Se eligen como funciones base monomios j .t/ D t j 1
, para 1  j  n. La solución será de la forma
n
X n
X
y.t/ D cj j .t/ D cj t j 1
:
j D1 j D1

Se formularán n ecuaciones con las n incógnitas c1 ; : : : ; cn . La primera y la última son las condiciones en la frontera:
n
X
c1 D cj j .0/ D y.0/ D 1
j D1
X n
c1 C    C cn D cj j .1/ D y.1/ D 3:
j D1

Las otras
Pnn 2 ecuaciones resultan de evaluar la ecuación diferencial y 00 D f .t; y; y 0 / en ti , 2  i  n 1, siendo
j 1
y.t/ D j D1 cj t . Es decir
0 1
Xn Xn X n
  j 3 
j 1 j 2 cj t D f @t; cj t j 1 ; cj j 1 t j 2 A :
j D1 j D1 j D1

En el ejemplo,
n h
X i
 
j 1 j 2 tij 3
4tij 1
cj D 0; i D 2; : : : ; n 1:
j D1
Las n ecuaciones forman un sistema Ac D b, donde la matriz de coeficientes A está definida así,
‚1 0 0  0 fila i D 1
 
Aij D j 1 j 2 tij 3
4tij 1 filas i D 2; : : : ; n 1
1 1 1  1 fila i D n
20.3 Métodos de colocación y de elementos finitos j 483

y b D Œ1 0 0    0 3T . Los ti de la malla que se usan son los uniformemente espaciados

i 1 i 1
ti D a C .b a/ D (en el caso del ejemplo a) :
n 1 n 1

Para n D 2 el sistema queda


    
10 c1 1
D ;
11 c2 3

y la solución es c D Œ1 2T . Es decir y.t/ D c1 C c2 t D 1 C 2t . Para n D 4 el sistema es


2 32 3 2 3
1 0 0 0 c1 1
6 4 4  1=3 2 4  .1=3/2 6  1=3 4  .1=3/3 7 6 c2 7 6 0 7
6 76 7 D 6 7;
4 4 4  2=3 2 4  .2=3/2 6  2=3 4  .2=3/3 5 4 c3 5 405
1 1 1 1 c4 3

cuya solución es c D Œ1;0000 0;1886 1;0273 1;1613T . Es decir,

y.t/  1 0;1886t C 1;0273t 2 C 1;161t 3 :

El gráfico-resultado para el ejemplo es el de la figura 20.3. La solución exacta y la obtenida casi se confunden.

3
Exacta
y(t)=1+2t
y(t)=1-0.1886t+1.0273t2+1.1613t3

2.5

2
y(t)=1+2t
Exacta
y

1.5

2 3
y(t)=1-0.1886t+1.0273t +1.1613t

0.5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Tiempo

Figura 20.3: Resultado de integrar la ecuación y 00 D 4y con el método de la colocación

El ejemplo que hemos utilizado para introducir el método es lineal, pues así lo es la ecuación diferencial. Si fuese no
lineal, habría que utilizar el método de Newton-Raphson para resolver el sistema de ecuaciones no lineales que resultase.
Igual que hemos utilizado monomios como funciones base para aplicar el método, se puede recurrir a cualesquiera
otras: polinomios de Chebyshev, funciones trigonométricas, etc.
484 j Capítulo 20. Integración de ecuaciones diferenciales ordinarias con condiciones de Contorno o Frontera

20.3.2 Método de los elementos finitos de Galerkin


El método de los elementos finitos fue formulado por Boris Grigoryevich Galerkin, Rusia 1871-1945.

Galerkin

Minimiza el cuadrado del error de la aproximación de la ecuación diferencial a lo largo de la solución. Aboca también
a un sistema de ecuaciones lineales, aunque un poco diferente del de la colocación.
Si en el procedimiento general anterior se usan como funciones base unos splines estamos refiriéndonos entonces al
método de los elementos finitos. Las splines son distintas de cero en un corto espacio de t.
En el caso de la colocación, los ci se obtenían forzando a que la solución aproximada satisficiese exactamente las
condiciones de contorno y los puntos de colocación.
El método de los elementos finitos para resolver
€y 00
D f .t; y; y 0 /
y.a/ D ya
y.b/ D yb ;
escoge una solución aproximada y de tal forma que el residuo r D y 00 f sea lo más pequeño posible.
Análogamente a como vimos para mínimos cuadrados, esto se consigue eligiendo y de tal forma que el vector de
residuos sea ortogonal al espacio vectorial del conjunto de las soluciones de la ecuación diferencial.
Para un intervalo Œa; b se define el espacio vectorial de las funciones integrables cuadradas
( ˇZ b )
ˇ
L Œa; bD funciones y.t/ en Œa; bˇˇ
2 2
y.t/ dt existe y es finita :
a

En este espacio se define el producto interior


Z b
hy1 ; y2 i D y1 .t/y2 .t/dt;
a
con las propiedades habituales:
1. hy1 ; y2 i  0;
2. h˛y1 C ˇy2 ; zi D ˛hy1 ; zi C ˇhy2 ; zi, siendo ˛ y ˇ escalares;
3. hy1 ; y2 i D hy2 ; y1 i.
Dos funciones y1 e y2 son ortogonales en L2 Œa; b si hy1 ; y2 i D 0.
Como este espacio es de dimensión infinita, no podemos hacer r D y 00 f ortogonal al mismo en sentido estricto,
pero si escoger una base en él que abarque lo más posible del mismo en el sentido finito de lo cálculos. Hay dos ideas
principales detrás del método de Galerkin:
1º- Minimizar el residuo r forzando a que sea ortogonal —en el sentido del producto interior anterior— a un conjunto
Rb 
de n C 2 funciones base 0 .t/, 1 .t/; : : :, nC1 .t/. Es decir forzar a que a y 00 f i dt D 0, o que
Z b Z b
y 00 .t/i .t/ dt D f .t; y; y 0 /i .t/ dt forma débil del problema de contorno
a a
para cada 0  i  n C 1.
2º- Utilizar integración por partes para eliminar las segundas derivadas. Teniendo en cuenta que
Z b Z b
ˇb
y 00 .t/i .t/ dt D i .t/y 0 .t/ˇa y 0 .t/i0 .t/ dt
a a Z b
0 0
D i .b/y .b/ i .a/y .a/ y 0 .t/i0 .t/ dt:
a
20.3 Métodos de colocación y de elementos finitos j 485

Utilizando la forma débil y esta expresión resulta un conjunto de ecuaciones


l b l b

f .t; y; y 0 /i .t/ dt D i .b/y 0 .b/ i .a/y 0 .a/ y 0 .t/i0 .t/ dt:
a a

Resolviéndolas se determinan los ci de


nC1
X
y.t/ D ci i .t/:
iD0
Esas dos ideas hacen conveniente usar funciones base i .t/ and
7.3 Collocation —elementos finitos—
the Finite muyMethod
Element simples, como
| 369lo son los
B-splines que se representan en la figura 20.4.
y
␾0 ␾1 ␾2 ␾n–1 ␾n ␾n+1
1

t
t0 t1 t2 t 3 ... tn–1 tn tn+1

Figura 20.4: B-splines lineales por tramos que se usan como elementos finitos
Figure 7.10 Piecewise-linear B-splines used as finite elements. Each φi (t), for
Para ello, en 1los≤ puntos
i ≤ n, has
t0 <support
t1 <  on
 <the interval
tn < from el
tnC1 sobre ti−1
ejetot, tpara
i+1 . i D 1; : : : ; n, se define
„ t ti 1
para ti < t  ti
ti ti 1 1
for each i that can be solved for the c in the functional
para t < tform
i ti C1 t
<t
i .t/ D tiC1 ti i i C1

0 n+1en otros casos.



y(t) = ci φi (t). (7.23)
Y, también, ( (
t1 t i=0 t tn
ti t0
para t0  t < t1 tnC1 tn
para tn < t  tnC1
0 .t/ D y nC1 .t/ D
The two ideas0 of Galerkinen otros make
casos it convenient to 0use extremely
en otros casos. functions as
simple
the finite elements φi (t). Wewill introduce
1 si i D j
piecewise-linear B-splines only and direct the
Estas funciones satisfacen que  .t / D
reader to the literature for more
i j Para un
elaborate choices.conjunto de datos .t i ; ci /, se define la B-spline lineal por
0 si i ¤ j:
tramos Start with a grid t0 < t1 < · · · < tn < tn+1 of points on the t axis. For i = 1, . . . , n define
nC1
X
 t S.t/ D
− ti−1 ci i .t/:
 iD0 for ti−1 < t ≤ ti
 ti − ti−1

PnC1

Se puede comprobar que S.tj / D φi D0 D−
ci i .tjt/i+1 cj ,tpor lo que S.t/ es una función lineal por tramos que interpola
i (t) = for ttii de
< la
t< ti+1 .
los puntos .ti ; ci /. Además, los ci son las soluciones
 t en
− tlos puntos aproximación de la ecuación diferencial.
 i+1 i
Para calcular los ci del problema con condiciones en el contorno, el primero y el último se obtienen por colocación:


0 otherwise
nC1
X
Also define y.a/ D ci i .a/ D c0 0 .a/ D c0
iD0
nC1
X
 t1 − t  t − tn
 
Dt < tc1i i .b/ D cnC1 nC1 .b/ D cnC1 :
t0 ≤
fory.b/ for tn < t ≤ tn+1
φ0 (t) = t1 − t0 iD0
and φn+1 (t) = tn+1 − tn .
0 otherwise 0 otherwise
Los demás, para i D 1; : : : ; n, usando las ecuaciones de los elementos finitos
Z b Z b
The piecewise-linear “tent’’ functions0 φi , shown in Figure 7.10, satisfy the following inter-
f .t; y; y /i .t/ dt C y 0 .t/i0 .t/ dt D 0;
esting property: a a


1 if i = j
φi (tj ) = . (7.24)
0 if i = j

For a set of data points (ti , ci ), define the piecewise-linear B-spline


486 j Capítulo 20. Integración de ecuaciones diferenciales ordinarias con condiciones de Contorno o Frontera

P
o sustituyendo y.t/ por ci i .t/, llegándose a que
Z b  X X  Z b X
i .t/f t; cj j .t/; cj j0 .t/ dt C i0 .t/ cj j0 .t/ dt D 0:
a a

Suponiendo que los puntos en t están uniformemente espaciados un paso h, hay que calcular todas estas integrales
para cada i D 1; : : : ; n:
Z b Z b  Z b  ˇ 3 ˇh
t t t t2 t2 ˇ t ˇ h
i .t/i C1 .t/ dt D dt D D ˇ ˇ
1
h h2
dt ˇ 3h2 ˇ D 6
a a h h a 2h 0
Z b Z h  2
2 t 2
i .t/ dt D 2 dt D h
a 0 h 3
Z b Z h  
1 1 1
i0 .t/i0 C1 .t/ dt D dt D
a 0 h h h
Z b Z h  2
0
2 1 2
i .t/ dt D 2 dt D :
a 0 h h
Si la ecuación diferencial es lineal, las ecuaciones de los ci también.
Ejemplo 20.4 Mediante elementos finitos, resolvamos
€y 00
D 4y
y.0/ D 1
y.1/ D 3:

Sustituyendo la ecuación diferencial en las expresiones de los ci se tiene para cada i


l 1 nC1 nC1
!
X X
0D 4i .t/ cj j .t/ C cj j0 .t/i0 .t/ dt
0 j D0 j D0

i
nC1
 Z 1 Z 1 
D cj 4 i .t/j .t/ dt C j0 .t/i0 .t/ dt :
0 0
j D0

Usando las expresiones de las B-splines para i D 1; : : : ; n y teniendo en cuenta que c0 D f .a/ y cnC1 D f .b/, las
ecuaciones que resultan son estas:
2     
3
h h1 c0 C 38 h C h2 c1 C 23 h h1 c2 D 0
2     
3
h h1 c1 C 38 h C h2 c1 C 23 h h1 c1 D 0
::
:
2 1
 8 2
 2 1

3
h h cn 1 C 3 h C h cn C 3 h h cnC1 D 0:

Como c0 D ya D 1 y cnC1 D yb D 3 el sistema resultante es este


2 3
˛ ˇ 0  0 2 3 2 3
6 7 c1 ya ˇ
6ˇ ˛ : : : : : : ::: 7 6 c 7 6 0 7
6 76 2 7 6 7
6 :: 76 : 7 6 :: 7
6 : ˇ 07 6 7 6 7
60 ˇ 7 6 :: 7 D 6 : 7;
6: 76 7 6 7
6 : :: :: 7
4: : : ˛ ˇ 5 4cn 1 5 4 0 5
cn yb ˇ
0  0 ˇ ˛
20.3 Métodos de colocación y de elementos finitos j 487

donde
8 2 2 1
˛D hC y ˇD h :
3 h 3 h
Recopilando todo lo necesario para el cálculo de este caso en un fichero .m de M ATLABy resolviendo con la instrucción
>> c=Galerkin_ef_1([0 1],[1 3],3) se llega a la solución que se ve en el cuadro 20.3. La tabla en él incluida
refleja el intervalo de integración, las condiciones de contorno y los valores aproximados por el método en él, así como
los exactos. Las diferencias son O.10 2 /. Para obtener más precisión habría que aumentar n.

i ti ci yi
function [c,y]=Galerkin_ef_1(inter,bv,n) 0 0;00 1;0000 1;0000
% Elementos finitos de ejemplo sencillo 1 0;25 1;0109 1;0181
% inter, intervalo de integración; bv, valores de contorno; 2 0;50 1;2855 1;2961
% n, número de pasos.
3 0;75 1;8955 1;9049
a=inter(1); b=inter(2); ya=bv(1); yb=bv(2); e=ones(n,1);
h=(b-a)/(n+1); 4 1;00 3;0000 3;0000
alfa=(8/3)*h+2/h; beta=(2/3)*h-1/h;
M=spdiags([beta*e alfa*e beta*e],-1:1,n,n); >> [c,y]=Galerkin_ef_1([0 1],[1 3],3)
d=zeros(n,1); d(1)=-ya*beta; d(n)=-yb*beta; c =
t=0:h:b; e1=exp(2)-exp(-2); 1.0109
y=(3-exp(-2))*exp(2*t)/e1+(exp(2)-3)*exp(-2*t)/e1; 1.2855
c=M\d; 1.8955
end y =
1.0000 1.0181 1.2961 1.9049 3.0000

Cuadro 20.3

Referencias, fuentes y lecturas complementarias


Todas las apreciaciones hechas a este respecto en el capítulo anterior son validas para éste. Lo expuesto se puede seguir
muy bien en Ascher y Greif [2011], Burden y Faires [2011], Heath [2002], Quarteroni, Sacco y Saleri [2000]. Gran parte
de lo plasmado aquí sigue directamente a Sauer [2012] .
Las referencias clásicas son Atkinson, Han y Stewart [2009], Blanchard et al. [1999], Boyce y Di Prima [2009], But-
cher [2008]. En el listado al final del libro se pueden ver citadas muchas de las referencias usadas. Respecto al software
que se puede usar, sin duda una vez M ATLAB contiene casi todo el espectro de soluciones numéricas disponibles.
Todos los pequeños programas presentados son de elaboración propia, o adaptados de Sauer [2012], o encontrados
en las referencias apuntadas al final del libro, o en Internet. Una fuente muy interesante es el repositorio que mantiene
M ATLAB en sus múltiples versiones online. Por ejemplo, M ATLAB C ENTRAL.
488 j Capítulo 20. Integración de ecuaciones diferenciales ordinarias con condiciones de Contorno o Frontera
Capítulo 21

Resolución numérica de ecuaciones en


derivadas parciales

Contenido
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

21.1 Ecuaciones en derivadas parciales


Una ecuación en derivadas parciales de orden n es una igualdad matemática en la que aparece una función
desconocida, que depende al menos de dos variables independientes, junto a algunas de sus derivadas
parciales hasta orden n respecto a dichas variables.

U NA ecuación en derivadas parciales de la función u.x1 ; :::xn / tiene la forma general


@u
F .x1 ; : : : ; xn ; u; @x @u
; : : : ; @x
2
; @ u ; @ u ; : : :/ D 0.
2

1 n @x1 @x1 @x1 @x2

F y sus derivadas son lineales en u si se cumple que

F .u C w/ D F .u/ C F .w/
y
F .ku/ D k  F .u/:

Las EDP se emplean en la formulación de modelos matemáticos de procesos y fenómenos de la física y otras ciencias
humanas y sociales que suelen presentarse distribuidos en el espacio y el tiempo.
490 j Capítulo 21. Resolución numérica de ecuaciones en derivadas parciales

Se modelizan de esta forma la propagación del sonido o del calor, la electrostática, la electrodinámica, la dinámi-
ca de fluidos, la elasticidad, la mecánica cuántica, las emisiones de contaminantes, los fenómenos meteorológicos, la
valoración de opciones y derivados financieros y muchos otros.
Una solución de una EDP es una función que resuelve la ecuación, o que la convierte en una identidad cuando se
sustituye en la ecuación.
Excepto en casos de concepción geometría analítica sencilla, las ecuaciones en derivadas parciales son muy difíci-
les de resolver analíticamente. Numéricamente, sin embargo, si se pueden resolver muchos problemas de geometría
complicada y muy cercana a la de los problemas reales.
Dada una función u.x; y/, en las EDP es muy común significar las derivadas parciales empleando subíndices (notación
tensorial). Esto es:
@u.x; y/
ux D
@x
2  
@ u.x; y/ @ @u.x; y/
uxy D D
@y @x @y @x

@2 u.x; y/
uxx D
:
@x 2
Si la función u es continua en un cierto dominio y tiene derivadas parciales continuas hasta orden 2, por el teorema de
Schwarz„ por Karl Hermann Amandus Schwarz, Prusia 1843-Alemania 1921,

Schwarz

se sabe que
uxy D uyx :
En la física matemática se usa el operador nabla, que en coordenadas cartesianas se escribe como r D .@x ; @y ; @z /
para las derivadas espaciales, y con un punto, u,
P para las derivadas que tienen que ver con el tiempo.

21.1.1 Ejemplos de EDP


Una EDP lineal de primer orden: ux .x; y/ uy .x; y/ C 2u.x; y/ D ux uy C 2u D 6.
2 2
Una EDP no lineal de primer orden: ux C uy D 0.
Una EDP no lineal de segundo orden: u  uxy C ux D y.
Algunas EDP lineales de segundo orden: Ec. de Laplace uxx .x; y/ C uyy .x; y/ D 0:
Ec. del calor u t .t; x/ uxx .t; x/ D 0:
Ec. de ondas u t t .t; x/ uxx .t; x/ D 0:
En este recorrido por las EDP nos limitaremos a estudiar la resolución numérica de las de segundo orden con dos
variables independientes, con esta forma

Auxx C Buxy C C uyy C F ux ; uy ; u; x; y D 0:

Esta ecuación, en un punto dado .x; y/, puede ser:


Parabólica si B2 4AC D 0:
Hiperbólica si B2 4AC > 0:
Elíptica si B2 4AC < 0:
21.2 Resolución de ecuaciones parabólicas j 491

La diferencia práctica de estos tipos de ecuaciones es que las parabólicas e hiperbólicas están definidas en un intervalo
o región abierto. Para resolverlas se imponen condiciones de contorno a una variable —en general al tiempo— en la
frontera de uno de sus extremos y se parte de él. Las elípticas tienen condiciones de contorno en toda la frontera de esa
región.

21.2 Resolución de ecuaciones parabólicas


La ecuación del calor general
u t D Duxx
representa la temperatura, x, mediada a lo largo de una barra homogénea unidimensional. Modeliza cómo se propaga el
calor en un dominio, de una zona de alta temperatura a las demás. Sus variables independientes son x y t. Seguiremos a
Sauer [2012].
La constante D > 0 se denomina coeficiente de difusión y representa la difusividad térmica del material de la barra.
La ecuación tiene infinitas soluciones por lo que se necesitan condiciones adicionales para definir una particular. En
un intervalo finito, el problema formulado en toda su dimensión es este:

para todo
„u D Duxx
t a  x  b; t  0
u.x; 0/ D f .x/ para todo axb
u.a; t/ D l.t/ para todo t 0
u.b; t/ D r.t/ para todo t  0:

 La función f .x/ define la distribución de temperaturas en la barra al comienzo del tiempo de estudio en el
intervalo Œa; b.
 l.t/ y r.t/, para t  0, designan las temperaturas en los extremos de la barra.
 La constante D es la que gobierna la velocidad de transferencia del calor.

21.2.1 Resolución por diferencias adelantadas


Se basa en discretizar la EDP en Œ0; T  generando una malla de las variables independientes como la de la figura 21.1
CHAPTER 8 Partial Differential Equations
y considerando sólo unos nudos de la misma. Los puntos sólidos son conocidos: definen las condiciones iniciales y de

0 x
a b

Figure 8.1 Figura 21.1:the


Mesh for Malla para Difference
Finite resolver ecuaciones
Method.parabólicas
The filledporcircles
diferencias adelantadas
represent known
initial and boundary conditions. The open circles represent unknown values that must be
contorno; los puntos huecos los que calculará el procedimiento. A partir de esta discretización, el problema continuo se
determined.
convierte en uno discreto con un número finito de ecuaciones lineales, o no lineales.
Sea u.xi ; tj / la solución exacta en .xi ; tj / y wij la aproximada. Denominemos como M y N el número total de
intervalos o pasos en x y en t . Sean h D .b a/=M y k D T =N los tamaños de paso en las direcciones x y t. La
its approximation at (xi , tj ) by wij . Let M and N be the total number of steps in the x and t
directions, and let h = (b − a)/M and k = T /N be the step sizes in the x and t directions.
The discretization formulas from Chapter 5 can be used to approximate derivatives in
the x and t directions. For example, applying the centered-difference formula for the second
derivative to the x variable yields
1
492 j Capítulo 21. Resolución numérica de ecuaciones en derivadas parciales

aproximación de segunda derivada centrada de u.xi ; tj / respecto de x es


1 
uxx .x; t/  2 u.x C h; t/ 2u.x; t/ C u.x h; t/ ;
h
2

con un error O h uxxxx .c1 ; t/=12 , donde x h < c1 < x C h.
La primera derivada adelantada respecto de t es
1 
u t .x; t/  u.x; t C k/ u.x; t/ ;
k
con un error O.ku t t .x; c2 /=2/, donde t < c2 < t C h.
Sustituyendo estas expresiones en la ecuación del calor en el punto .xi ; tj /, queda
D  1 
wi C1;j 2wij C wi 1;j  wi;j C1 wij ;
h2 k
con un error de truncamiento local dado por O.k/ C O.h2 /. Despejando wi;j C1 tenemos la fórmula de recurrencia en
el tiempo: 
wi;j C1 D wij C Dk
h2
wi C1:j 2wij C wi 1;j

D  wi C1;j C .1 2 /wij C  wi 1:j ;

donde  D Dk= h2 . 8.1 Parabolic Equations | 377


En la figura se ven los puntos de la malla que intervienen en esta expresión.

j+1

i–1 i i+1
Las condiciones de contorno y las iniciales dan valores a wi 0 ; i D 0; : : : ; M y w0j y wMj ; j D 0; : : : ; N .
Figure 8.2matricial,
En forma Stencillosfor Forward
valores de wi;j Difference Method. The open circle represents wi,j+1
C1 en el tiempo tj C1 se determinan mediante la fórmula wj C1
, which
D Aw j C sj , o
can be determined from the2 values wi−1,j , wij , and wi+1,j3 at the closed circles by (8.7).
1 2  0  0
23 6
6  1 2  : :: 7 2 3 2 3
w 6
:: : 77 w1j w0;j that this method is
that is not explicit
6 is
1;jcalled
::
C1
7 6 implicit. The stencil
::
of the
76 method
74 :: 7 6shows
:: 7
4 5D6
6 0  1 2 : 0 7 5C  4 5:
explicit. In matrix wterms, we
: 6 can
:
get the values wi,j +1 7 at
w
: time tj +1
w
by computing
: a matrix
m;j C1 6 : : :: : :: : ::  7 mj mC1;j
4 :
multiplication wj +1 = Awj + sj , or 5
0  0  1 2

La matriz A esm  m, donde mDN σ


 
1 − 2σ 1. 0 ··· 0    
w1,j
El vector s
+1 j indica las condiciones en la frontera (contorno)
.. que se imponen
.. al w
problema:
1j las w
temperaturas
0,j en los
extremos de labarra. σ
 
 Lo expuestoes un 1 − 2σ σ . .    0 
procedimiento explícito dado que se determinan nuevos valores   a partirde los previos
 inmediatos
..
en el tiempo. ..   ..  ..
=   . 2 + σ  .
   
 .
 Si elaboramos  un script 0 σ 1 − 2σ .
 de M ATLAB con este algoritmo para D D 1, la función 0  f .x/ D sen
.
 .2x/ ylas condiciones
iniciales u.0;  t/ D. 0 para todo . . t, nos puede
. . salir .resultar  21.1. 0Los dos
. . algo como
t/ D u.1; lolistado enel cuadro
.. . . σ
gráficos
wm,jdel mismo cuadro ilustran la aproximación por diferencias adelantadas de la ecuación wmj del calor para h D 0;1 y
 
+1 wm+1,j
dos valores k D 0;004 y k >00;005. Son· el · ·resultado de0 las instrucciones
σ 1 − 2σ
>>w=heatfd(0,1,0,1,10,250) y >>w=heatfd(0,1,0,1,10,193) (8.8)
Here,
En el the matrix
segundo caso elAmétodo
is m × m, where
es inestable comomse= M −en1.
observa la figura. Se puedesprobar
The vector j on the right
que el represents
método es estable si,the
Dk 1
paraconditions
side D > 0, h <imposed
2 2
. by the problem, in this case the temperature at the ends of the rod.
The solution reduces to iterating a matrix formula, which allows us to fill in the empty
circles in Figure 8.1 row by row. Iterating the matrix formula wj +1 = Awj + sj is sim-
ilar to the iterative methods for linear systems described in Chapter 2. There we learned
that convergence of the iteration depends on the eigenvalues of the matrix. In our present
situation, we are interested in the eigenvalues for the analysis of error magnification.
2
494 j Capítulo 21. Resolución numérica de ecuaciones en derivadas parciales

function w=heatbd(xl,xr,yb,yt,M,N)
% Ecuación del calor por diferencias avanzadas
% Entrada: [xl,xr], tiempo[yb,yt], pasos M, tiempos N
f=@(x)sin(2*pi*x).^2;
l=@(t)0*t; r=@(t)0*t; D=1;
h=(xr-xl)/M; k=(yt-yb)/N; m=M-1; n=N;
sigma=D*k/h/h;
a=diag(1+2*sigma*ones(m,1))+diag(-sigma*ones(m-1,1),1);
a=a+diag(-sigma*ones(m-1,1),-1);
lside=l(yb+(0:n)*k); rside=r(yb+(0:n)*k);
w(:,1)=f(xl+(1:m)*h)’;
for j=1:n
w(:,j+1)=a\(w(:,j)+sigma*[lside(j); zeros(m-2,1); rside(j)]);
end
w=[lside; w; rside];
x=(0:m+1)*h; t=(0:n)*k;
mesh(x,t,w’), view(60,30); axis([xl xr yb yt -1 1])
end

Cuadro 21.2

cuadro. Obsérvese que el k que se utiliza ahora es 0;1 en vez del anterior 0;004. El método es estable para cualesquiera
h y k, con D > 0.

21.2.3 El método Crank–Nicolson


Fue formulado en 1947 por John Crank, Reino Unido, 1916-2006, y Phyllis Nicolson, Reino Unido, 1917-1968.

Crank Nicolson

Es un especie de combinación de los dos anteriores, explícito e implícito, con un error O.h2 / C O.k 2 /.
Usa la diferencia atrasada para la derivada respecto del tiempo y una combinación ponderada uniformemente de
derivada atrasada y adelantada para el resto de la ecuación. En concreto, reemplaza u t por la fórmula de la diferencia
atrasada
1 
wij wi;j 1
k
y uxx por la diferencia mixta
   
1 wiC1;j 2wij C wi 1;j 1 wi C1;j 1 2wi;j 1 C wi 1;j 1
C :
2 h2 2 h2

Haciendo otra vez  D Dk= h2 , la ecuación del calor se puede reordenar así
h i
2wij 2wi;j 1 D  wi C1;j 2wij C wi 1;j C wi C1;j 1 2wi;j 1 C wi 1;j 1 ;

o bien
 wi 1;j C .2 C 2 /wij  wi C1;j D  wi 1;j 1 C .2 2 /wi;j 1 C  wiC1;j 1:
496 j Capítulo 21. Resolución numérica de ecuaciones en derivadas parciales

˚
Formulada en su totalidad para especificar una solución concreta sería:
u t t D c 2 uxx para todo a  x  b; t  0
u.x; 0/ D f .x/ para todo axb
u t .x; 0/ D g.x/ para todo axb
u.a; t/ D l.t/ para todo t 0
u.b; t/ D r.t/ para todo t  0:
Para resolverlo se puede aplicar diferencias adelantadas a partir de una malla como la de la figura 21.2. Los puntos
son i ; tj /, donde x
PTER 8 Partial.xDifferential i D a C ih y tj D j k, con pasos h y k. La aproximación a la solución u.xi ; tj / se representa
Equations
mediante wij .
t

0 x
a b

Figure 8.1 Figura


Mesh 21.2:
for theMalla para resolver
Finite ecuaciones
Difference Method.hiperbólicas
The filledpor diferencias
circles adelantadas
represent known
initial and boundary conditions.
Para discretizar la ecuación u t t D c 2 uxx The open circles represent unknown values that must be
las segundas derivadas se reemplazan por sus aproximaciones por diferencias
determined.
centradas en las direcciones t y x, es decir
2wij C wi;j 1
wi;j C1 wi 1;j 2wij C wi C1;j
2
c2 D 0:
k h2

Haciendo  D ck= h, la explicitación
its approximation de la
at (xi , tj ) by wijsolución
. Let Mpara andelN siguiente
be the paso
totalen el tiempo
number of es wi;jin
steps D x2 and
C1the 2t2 wij C
 2 wi 1;jdirections,
C  2 wi C1;j wi;jh 1=
and let : (b − a)/M and k = T /N be the step sizes in the x and t directions.
Se necesitaThe
la aproximación
discretizationdos
en pasos anteriores,
formulas from Chapter j 1 y5jcan ; parabeelused
primero en el tiempo sederivatives
to approximate utiliza la aproximación
in
de la derivada con la fórmula centrada wthe wi;j 1
the x and t directions. For example, applying
u t .xi ; tj / 
centered-difference
i;j C1 formula for the second
derivative to the x variable yields 2k
en la que sustituyendo el primer paso en el tiempo .xi ; t1 /
1 wi1 wi; 1
uxx (x, t) ≈ g.x i/Du
(u(x +t .xh,i ; t)
t0 /− 2u(x, t) + ;u(x − h, t)), (8.4)
h 2 2k
o wi; 1  wi1 2kg.xi /:
with error
Sustituyendo h2 uxxxx
esta última (c1 , t)/12;
expresión and thedel
en la fórmula forward-difference
siguiente paso en el tiempo formula forj the
para D 0 first derivative
resulta que
used for the time variable gives  2 
2
wi1 D 1  wi 0 C kg.xi / C wi 1;0 C wi C1;0 ;
1 2
que es donde entra la información de lauvelocidad
t (x, t) ≈inicial
(u(x, t + k) − u(x, t)),
g.x/. (8.5)
En forma matricial compacta se llega a la matriz, k
2 2 2
3
with error kutt (x, c2 )/2, where x2 −2h < c1 < x +0 h and
 t <
0 c2 < t + h. Substituting into
6 i , tj2) yields 2
the heat equation at the point (x : :: :: 7
6  2 2 2 : 7
6 7
6 : 7
D AD6 0
6− 2w  2 2 2 2 1: : 0 7:
7 w ),
2
(w i+1,j6 :: ij + : wi−1,j :) ≈ : (wi,j +1 −
7 ij (8.6)
h 4 : :: : : k: :  2 5
0  0 2 2 2 2
with the local truncation errors given by O(k) + O(h2 ). Just as in our study of ordinary
differential equations, the local truncation errors will give a good picture of the total errors,
as long as the method is stable. We will investigate the stability of the Finite Difference
Method after presenting the implementation details.
Note that initial and boundary conditions give known quantities wi0 for i = 0, . . . , M,
and w0j and wMj for j = 0, . . . , N , which correspond to the bottom and sides of the rectangle
in Figure 8.1. The discrete version (8.6) can be solved by stepping forward in time. Rearrange
21.4 Resolución de ecuaciones elípticas j 499

El gradiente del campo está relacionado con la densidad de carga, , por la ecuación de Maxwell

rE D ;
"
donde " es la permisividad eléctrica. La formuló James Clerk Maxwell, Reino Unido, 1831-1879.

Maxwell

En conjunto,
 
u D r ru D ;
"
ecuación de Poisson del potencial u. En el caso de que la carga sea cero, el potencial satisface la ecuación de Laplace
u D 0.

21.4.1 Método de las diferencias finitas


Para estudiarlo resolveremos la ecuación de Poisson u D f en el rectángulo Œxl ; xr   Œyb ; y t  de un plano, con las
condiciones de contorno de Dirichlet „
u.x; yb / D g1 .x/
u.x; y t / D g2 .x/
u.xl ; y/ D g3 .y/
u.xr ; y/ D g4 .y/:
Esas condiciones la formuló Johann Peter Gustav Lejeune Dirichlet, Alemania, 1805-1859. con M D m 1 intervalos
en la dirección horizontal y N D n 1 en vertical.

Dirichlet

Siguiendo a Sauer [2012], utilizaremos la malla de la figura 21.4


Mediante diferencias finitas centradas, la ecuación de Poisson u D f tiene la forma
u.x h; y/ 2u.x; y/ C u.x C h; y/
C O.h2 /C
h2
u.x; y k/ 2u.x; y/ C u.x; y C k/
C C O.k 2 / D f .x; y/;
k2
donde h D .xr xl /=M y k D .y t yb /=N . En términos de la solución aproximada wij  u.xi ; yj /, puede escribirse
wi 1;j 2wij C wiC1;j wi;j 1 2wi;j C wi;j C1
C D f .xi ; yj /
h2 k2
donde xi D xl C .i 1/h y yj D yb C .j 1/k, para 1  i  m y 1  j  n.
Las ecuaciones en los wij son lineales por lo que para determinarlos hay que construir un sistema de mn incógnitas
con una matriz A mnmn .
400 | CHAPTER 8 Partial Differential Equations
500 j Capítulo 21. Resolución numérica de ecuaciones en derivadas parciales

w1n w2n w3n wmn yt


yt

w12 w22 w32 wm 2 vm+1 vm+2 vm+3


w11 w21 w31 wm 1 v1 v2 v3
yb x yb
xl xr xl

Figura 21.4: Reticulado


Figure para
8.12el Mesh
cálculo for
de las diferencias
finite finitas solver of Poisson equation with Dirichlet bo
difference
conditions. (a) Original numbering system with double subscripts. (b) Numbering syste
Cada nudo, incluidos los que representan las(8.39) for linear
condiciones equations,
de contorno dewith single
la malla, subscripts,
tendrá orders meshecuación
su correspondiente points across rows.
lineal. Para establecer adecuadamente el sistema de ecuaciones hay que volver a etiquetar los nudos de forma que se
evite la confusión de los dobles subíndices. Se adopta el esquema que se ve en la figura 21.5, en el que vi C.j 1/m D wij :
rential Equations Since the equations in the wij are linear, we are led to construct a ma
to solve for the mn unknowns. This presents a bookkeeping problem: We ne
these doubly indexed unknowns into a linear order. Figure 8.12(b) shows a
wmn vmn
n yt numbering system for the solution values, where we have set
vi+(j −1)m = wij .
Next, we will construct a matrix A and vector b such that Av = b can be
wm 2 and
vm+1 vm+2 vm+3 translated back into the solution
v2m w on the rectangular grid. Since v is a vec
2
mn, A will be an mn × mn matrix, and each grid point will correspond to it
wm1 v1 v2 v3 vm
1 x yb equation. x
xr xl x
By definition, the entry rApq is the qth linear coefficient of the pth
Av para
= b. For example, represents the equation at grid point (i, j ), w
(8.38)finitas
ure 8.12 MeshFigura 21.5: Esquema
for finite differencede numeración
solver of de la mallaequation
Poisson el método
withdeDirichlet
las diferencias
boundarypara resolver ecuaciones elípticas
equation number p=i + (j − 1)m, according to (8.39). The coefficients
nditions. (a) Original numbering system with double subscripts. (b) Numbering system
Para construir el single
sistemasubscripts,
Av D b, cada
wi−1,j A
coeficiente
, wijes, .el. .pin ésimo
(8.38) are also numbered according to (8.39), which we colle
39) for linear equations, with orders pq across rows. del sistema Av D b. El nudo .i; j / de la malla
mesh points
Table 8.1.
será la ecuación número p D i C .j 1/m. Los coeficientes de los términos wj i;j ; wij ; : : : se numeran de acuerdo con
la fórmula viC.j 1/m D wij obteniéndose que los Apq para varios q son los de las tablas del cuadro 21.5 De acuerdo
Since the equations in the wij are linear, we are led to construct a matrix equation
solve for the mn unknowns. This presents a bookkeeping problem: x yWe need x to relabel
Coeficiente y
número q Equation number p
se doubly indexed unknowns into a linear order. Figure 8.12(b) i shows
j Ci.jalternative
i an 1/m j i + (j − 1)m
x y Ecuación número p
mbering system for the solution values, where we have set i C 1 j i C 1 C .j 1/m
i j i C .j 1/m i 1 j i x1 C .j 1/m y Coefficient number q
vi+(j −1)m = wij . i j C 1 i C j m (8.39)
i j 1 i C .j 2/m
i j i + (j − 1)m
Next, we will construct a matrix A and vector b such that Av = b can bei solved + 1 forj v, i + 1 + (j − 1)m
d translated back into the solution w on the rectangular grid. Cuadro 21.5 v is a vector
Since i−1 of length
j i − 1 + (j − 1)m
, A will be an mn × mn matrix, and each grid point will correspond to itsi own linear j + 1 i + jm
uation. con ellas, en la ecuación p, los coeficientes q, en la fila Apq de A son
i j − 1 i + (j − 2)m
By definition, the entry Apq is the qth linear coefficient of the2 pth2 equation of
= b. For example, (8.38) represents the equation ATable 8.1 C.j
i C.j at gridTranslation
1/m;i point table for two-dimensional domains. The equation at grid point (i,
1/m D (i, j2 ), which we call
h
numbered p, and its k 2coefficients are Apq for various q, with p and q given in the ri
uation number p = i + (j − 1)m, according to (8.39). The coefficients
1 of the terms
AiC.j 1/m;i C1C.j of the D 2The table is simply an illustration of (8.39).
1/mtable.
−1,j , wij , . . . in (8.38) are also numbered according to (8.39), which we h collect together in
ble 8.1.
According to Table 8.1, labeling by equation number p and coefficient n
matrix entries Apq from (8.38) are
x y Equation number p
i j i + (j − 1)m 2 2
Ai+(j −1)m,i+(j −1)m = − 2 − 2
h k
21.4 Resolución de ecuaciones elípticas j 501

1
Ai C.j 1/m;i 1C.j 1/m D
h2
1
Ai C.j 1/m;i Cj m D 2
k
1
Ai C.j 1/m;i C.j 2/m D 2:
k
El término de la derecha del nudo .i; j / es biC.j 1/m D f .xi ; yj /. Sólo quedan por introducir en la formulación las
condiciones de contorno.
En M ATLAB, estructurar todo para resolver la ecuación de Poisson con m D n D 5 en el rectángulo Œ0; 1  Œ1; 2 y
con las condiciones de Dirichlet
u.x; 1/ D ln.x 2 C 1/
u.x; 2/ D ln.x 2 C 4/
u.0; y/ D 2 ln y
u.1; y/ D ln.y 2 C 1//
lleva al cuadro 21.6.

function w=Poisson(xl,xr,yb,yt,M,N)
% Ecuación de Poisson por diferencias adelantadas
% Entrada: [xl,xr], tiempo[yb,yt], pasos M, tiempos N
f=@(x,y) 0; g1=@(x) log(x.^2+1); g2=@(x) log(x.^2+4);
g3=@(y) 2*log(y); g4=@(y) log(y.^2+1);
%g1=@(x) sin(x.*pi); g2=@(x) sin(x.*pi); g3=@(y) 0; g4=@(y) 0; VERSIÓN Poisson_1
m=M+1; n=N+1; mn=m*n; close all
h=(xr-xl)/M; h2=h^2; k=(yt-yb)/N; k2=k^2;
x=xl+(0:M)*h; y=yb+(0:N)*k;
A=zeros(mn,mn); b=zeros(mn,1);
for i=2:m-1, for j=2:n-1
A(i+(j-1)*m,i-1+(j-1)*m)=1/h2; A(i+(j-1)*m,i+1+(j-1)*m)=1/h2;
A(i+(j-1)*m,i+(j-1)*m)=-2/h2-2/k2;
A(i+(j-1)*m,i+(j-2)*m)=1/k2; A(i+(j-1)*m,i+j*m)=1/k2;
b(i+(j-1)*m)=f(x(i),y(j));
end, end
for i=1:m
j=1; A(i+(j-1)*m,i+(j-1)*m)=1; b(i+(j-1)*m)=g1(x(i));
j=n; A(i+(j-1)*m,i+(j-1)*m)=1; b(i+(j-1)*m)=g2(x(i));
end
for j=2:n-1
i=1; A(i+(j-1)*m,i+(j-1)*m)=1; b(i+(j-1)*m)=g3(y(j));
i=m; A(i+(j-1)*m,i+(j-1)*m)=1; b(i+(j-1)*m)=g4(y(j));
end
v=A\b;
w=reshape(v(1:mn),m,n); mesh(x,y,w’)
end

Cuadro 21.6: Código de M ATLAB para resolver la ecuación de Poisson por diferencias finitas

Si lo utilizamos para el problema propuesto con la instrucción >> w=Poisson(0,1,1,2,4,4); se llega a la solución
de la figura 21.6a.

Ejemplo 21.1 Calculemos el potencial electrostático en el rectángulo Œ0; 1  Œ0; 1, suponiendo que no hay carga en el
interior y se dan las siguientes condiciones de contorno

u.x; 0/ D sen.x/
u.x; 1/ D sen.x/
(21.1)
u.0; y/ D 0
u.1; y/ D 0:

Cambiamos ligeramente en el programa Poisson las funciones de partida —incluidas en comentarios— y hacemos
>> w=Poisson_1(0,1,0,1,10,10);. Resulta el gráfico de la figura 21.6b.
1 The model problem
All along this course we will be working with a simple model boundary value problem,
which will allow us to put the emphasis on the numerical method rather than on the
intricacies of the problem itself. For some of the exercises and in forthcoming lessons we
will complicate things a little bit.
In this initial section there is going to be a lot of new stuff. Take your time to read it
carefully, because we will be using this material during the entire course.

1.1 The physical domain


21.4 Resolución de ecuaciones elípticas j 503
The first thing we have to describe is the geometry (the physical setting of the problem).
You have a sketch of it in Figure 1.1.

SD
SN

u.x; y/ C r.x; y/u.x; y/ D f .x; y/ dentro de la región o dominio R R


u.x; y/ D g.x; y/ sobre la frontera o borde S

Figura 21.7 Figure 1.1: The domain Ω and the Dirichlet and Neumann boundaries

We are thus given a polygon in the plane R2 . We call this polygon Ω. Its boundary
is a closed polygonal curve Γ. (There is not much difference if we suppose that there is
que volvemos a definir como
 ˇ“  3
ˇ
2 ˇ 2
L .R/D funciones .x; y/ enRˇ .x; y/ dx dy existe y es finita ;
R

minimizaremos el cuadrado del error de la ecuación elíptica forzando a que el residuo u.x; y/ C r.x; y/u.x; y/
f .x; y/ sea ortogonal a un subespacio de L2 .R/.
Designaremos mediante L20 .R/ el subespacio de L2 .R/ de las funciones que son cero en el borde o frontera S de la
región R.
Si las funciones 1 .x; y/; 2 .x; y/; : : : ; P .x; y/ son una base del subespacio L2 .R/, la condición de ortogonalidad
tiene esta forma “

u C ru f p dx dy D 0
R
o “ “

u C ru p dx dy D f p dx dy;
R R
para cada 1  p  P . A esta forma de la condición se le denomina forma débil de la ecuación elíptica. También
primera identidad de Green, por George Green, Reino Unido 1793-1841.

Green

Dice que si R es una región, con frontera S continua a trozos, u y v funciones continuas (la función v se denomina de
prueba) y n el vector unitario normal hacia afuera a lo largo de la frontera,
“ Z “
@u
vu D v dS ru  rv:
R S @n R

La derivada direccional es @u
@n
D ru  nx ; ny , donde .nx ; ny / es el vector unitario normal hacia afuera en la frontera
S de R.
’  ’
La identidad de Green aplicada a la forma débil . R u C ru p dx dy D R f p dx dy/ es
Z “ “ “
@u 
p dS ru  rp dx dy C rup dx dy D f p dx dy: (21.2)
S @n R R R

La idea fundamental de los elementos finitos es aproximar u en la forma débil por


P
X
w.x; y/ D vq q .x; y/
qD1
for each φp in L20 (R). Factoring out the constants vq yields

P
      
vq ∇φq · ∇φp dx dy − rφq φp dx dy = − f φp dx dy. (8.50)
q=1 R R R
504 j Capítulo 21. Resolución numérica de ecuaciones en derivadas parciales

For each φp belonging to L2 (R), we have developed a linear equation in the unknowns
0
y después determinar las constantes vq .
v 1 , . . . , v P . In matrix form, the
2 equation is Av = b, where the entries of the pth row of A
Supongamos para ello que p pertenece a L0 .R/, es decir, p .S / D 0. Con la aproximación por w.x; y/ en el
and bla are
resultado de aplicar identidad de Green (21.2), para cada p en L20 .R/,
s P
!   s X P
!   s
X
vq rqA  rp dx dy C
∇φq r· ∇φpvqdx q dy dx dy D rφqfφpp dx
p− dx dy
dy: (8.51)
pq =
R qD1 R R qD1 R R

Factorizando las constantes vq ,


and
i
P
“ “ ! Z
vq rq  rp dx dy rq 
p dx dy D f p dx dy;
R R R
qD1 bp = − f φp dx dy. (8.52)
R
que es una ecuación lineal para cada p en las incógnitas v1 ; : : : ; vP .
En forma matricial será Av D b. Los coeficientes de la fila p de A y b son
We are now prepared s to choose explicits functions for the finite elements φp and plan a
computation. Weapq D ther
follow q  r
lead ofpChapter
dx dy 7 in choosing linear B-splines, piecewise-linear
rq p dx dy
functions of x, y that liveR on triangles in the plane.
R For concreteness, let the region R be a
y rectangle, and form a triangulation s with nodes (x i j ) chosen from a rectangular grid. We
, y
will reuse the M × N grid bfrom the previous section, shown in Figure 8.16(a), where we
p D f p dx dy:
set m = M + 1 and n = N + 1. As Rbefore, we will denote the grid step size in the x and y
directions
La pregunta entonces es ¿qué h and k,explícitas
asfunciones respectively. Figure
se pueden 8.16(b)
elegir para losshows thefinitos
elementos triangulation of the rectangular
p ? Utilizaremos B-splines
region
lineales por tramos that we will
(recordemos, use.
curvas hechas con trozos polinómicos de grado p) basadas en triángulos en un plano.
En esta figura se muestra una “triangularización” de la región R rectangular mallada M  N .

w1n w2n w3n wmn w1n w2n w 3n wmn


yt yt

w12 w22 w32 wm2 wm2


w11 w21 w31 wm1 wm1
yb yb
xl xr xl xr

Figure 8.16
Esta triangularización .m D Finite
M C element
1; n D N C solver of elliptic
1/ da lugar a P Dequation
mn funcioneswith lineales
Dirichlet
forboundary
tramos, p conditions.
, cada una de las
cuales toma el (a)
valor 1 enisunsame
Mesh puntoasdeused
la malla y 0 endifference
for finite los mn 1solver.
restantes.
(b) A possible triangulation of the region. Each
Usando la numeración
interior pointintroducida
is a vertex al of
presentar esta malla,
six different las 1 ; : : : ; mn se determinan mediante la igualdad
triangles.
iC.j 1/m .xi ; yj / D 1 y i C.j 1/m .xi 0 ; yj 0 / D 0 para los demás puntos de la malla .xi 0 ; yj 0 /, si son lineales en
los triángulos.
Cada p .x; y/ es derivable, excepto en los bordes o aristas de los triángulos, por lo que son funciones de L2 .R/
integrables de Riemann.
Se cumple además para las aproximaciones que
m X
X n
w.xi ; yj / D viC.j 1/m iC.j 1/n .xi ; yj / D vi C.j 1/m ;
i D1 j D1

para i D 1; : : : ; m, j D 1; : : : ; ; n. Es decir, en cada punto .xi ; yj / la aproximación w de la solución correcta u será la


que se obtenga al resolver Av D b.
21.4 Resolución de ecuaciones elípticas j 505

Para completar la exposición del procedimiento FEM queda el cálculo de los coeficientes de la matriz A y del término
independiente b.
Para ello definimos el baricentro de una región del plano como el punto .x; N donde
N y/
’ ’
x dx dy y dx dy
xN D ’R ; yN D ’R :
R 1 dx dy R 1 dx dy

Si R es un triángulo de vértices .x1 ; y1 /, .x2 ; y2 / y .x3 ; y3 / su baricentro es


x1 C x2 C x3 y1 C y2 C y3
xN D ; yN D :
3 3
Tendremos en cuenta que el valor
’ medio de una función lineal L.x; y/ en una región plana R es L.x; N el valor en
N y/,
el baricentro. En otras palabras, R L.x; y/ dx dy D L.x; N  área.R/.
N y/
El desarrollo en serie de Taylor de una función de dos variables dice que

@f @f
f .x; y/ D f .x;
N y/
N C N y/.x
.x; N N C
x/ N y/.y
.x; N N
y/
@x @y

N 2 ; .x x/.y
C O .x x/ N N .y y/
y/; N 2

D L.x; y/ C O .x N 2 ; .x
x/ N
x/.y N .y
y/; N 2 :
y/

En consecuencia,1
“ “ “

f .x; y/ dx dy D L.x; y/ dx dy C O .x N 2 ; .x
x/ N
x/.y N .y
y/; N 2 dx dy
y/
R R R
D área.R/  L.x; N C O.h4 / D área.R/  f .x;
N y/ N C O.h4 /;
N y/

donde h es el diámetro de R, la distancia más grande entre dos puntos de R.


Por otro lado, si .x; y/ es una función lineal en el triángulo T de vértices .x1 ; y1 /, .x2 ; y2 / y .x3 ; y3 /, que cumple
que .x1 ; y1 / D 1, .x2 ; y2 / D 0 y .x3 ; y3 / D 0, entonces .x; N y/
N D 1=3.
Si 1 .x; y/ y 2 .x; y/ son dos funciones lineales en ese mismo triángulo, que cumplen 1 .x1 ; y1 / D 1, 1 .x2 ; y2 / D
0, 1 .x3 ; y3 / D 0, 2 .x1 ; y1 / D 0, 2 .x2 ; y2 / D 1 y 2 .x3 ; y3 / D 0, y f .x; y/ es una función continua y derivable dos
veces, con
2 3
1 1 1
d D det 4 x1 x2 x3 5
y1 y2 y3
entonces

a/ el triángulo T tiene un área igual a jd j=2


y y 3 x3 x2 
2
b/ r1 .x; y/ D ;
d d

.x2 x3 /2 C .y2 y3 /2
c/ r1  r1 dx dy D
T 2jd j

.x1 x3 /.x2 x3 / .y1 y3 /.y2 y3 /
d/ r1  r2 dx dy D
T 2jd j
“ “
e/ f 1 2 dx dy D f .x; N j=18 C O.h4 / D
N y/jd f 12 dx dy
T T

4
f/ f 1 dx dy D f .x;
N y/jd
N j=6 C O.h /;
T

donde .x; N es el baricentro de T y h D diáme.T /.


N y/
506 j Capítulo 21. Resolución numérica de ecuaciones en derivadas parciales 8.3 Elliptic Equations | 411

(xi,y j+1) (xi+1,y j+1)

5
(xi 1,y j ) 6 4 (xi+1,y j )
1 3
(xi 1,y j 1) 2 (xi ,y j 1)

Figura 21.8
Figure 8.17 Detail of the (i, j) interior point from Figure 8.16(b). Each interior point (xi , yj )
is surrounded by six triangles, numbered as shown. The B-spline function φi+(j−1)m is linear,
Para obtener A, consideremos el .xi ; yj / en el interior del perímetro hexagonal de la figura 21.8. que no está en la
takes the value 1 at the center, and is zero outside of these six triangles.
frontera S del rectángulo mallado considerado. Está rodeado de seis triángulos. La función B-spline iC.j 1/m es lineal
y toma el valor 1 en el centro y 0 fuera de esos triángulos.
Como p D q D i C .j 1/m el coeficiente Ai C.j 1/m;i C.j 1/m está compuesto de dos integrales, que son cero fuera
de esos seistriangles
The triángulos.have horizontal and vertical sides h and k, respectively. For the first integral,
Lossumming
6 triángulosfrom
tienentriangle
lados horizontales h y verticales
1 to triangle k. La primera
6, respectively, use desde
integral,
we can Lemma el triángulo
8.10(c)1toal sum
6, es the

six contributions k 2 h2 h2 C k 2 k2 h2 h2 C k 2 2 h2 C k 2
C C C C C D :
2hk 2hk2 2hk 2hk 22hk 2hk hk
k2 h2 h + k2 k2 h h2 + k 2 2(h2 + k 2 )
Los baricentros de los+ seis triángulos
+ son +  + +  = . (8.54)
2hk 2hk B12hk 2hk
D xi 2hk 2 1 2hk hk
 3 h; yj 3 k

For the second integral of (8.51), we


B2use xi 13 h; y8.10(e).
D Lemma j
2
3 k  Again, the integrals are zero except

B3 D xi C 31of
for the six triangles shown. The barycenters h; the
yj six1
3k triangles are

B4 D xi C 23 h; yj C 13 k
 2 1
B1B= (xixi−C 31 h;
5 D h,yyj jC−23 k k)
 31 3
1
B6 D xi 1 3 h; yj C 3 k 2:
Br.B
La segunda integral es .hk=18/ Œr.B1 / C 2 =2 /(x − 3 /h, yj − k)
Ci r.B 3 C r.B4 / C3 r.B5 / C r.B6 / por lo que sumando las dos se
tiene que
1 1
B = (x + h, yj − k)
2 h2 C k 2 3 hk i
Ai C.j 1/m;i C.j 1/m D Œr.B13/ C r.B2 / C
3 r.B3 / C r.B4 / C r.B5 / C r.B6 / :
hk 18 2 1
De la misma forma, B4 = (xi + h, yj + k)
3 3
1 k hk 2 
AiC.j B5 1C.j
1/m;i i +D h,
= (x1/m yj + r.Bk)6 / C r.B1 /
3 h 18 3
AiC.j 1/m;i 1C.j 2/m D
1 hk r.B11/ C r.B2 /
B6 = (xi − h,18yj + k). (8.55)
3 h hk 3 
AiC.j 1/m;i C.j 2/m D r.B2 / C r.B3 /
The second integral contributes −(hk/18)[r(B k 1 ) 18
+ r(B2 ) + r(B3 ) + r(B4 ) + r(B5 ) +
k hk  
r(B6 )], and so summing up (8.54) and (8.55),
AiC.j 1/m;i C1C.j 1/m D r.B3 / C r.B4 /
h 18
hk  
AiC.j 1/m;i C1Cj+ k2)
m D 2(h2hk 4 / C r.B5 /
r.B
Ai+(j −1)m,i+(j −1)m = −
18 [r(B1 ) + r(B2 ) + r(B3 )
hk k 18 hk  
+r(B4m) D+ r(B
Ai C.j 1/m;iCj r.B5 / C r.B6 /
h 5 )18+ r(B6 )]. (8.56)
Para calcular los coeficientes de b se procede de forma similar resultando que, para p D i C .j 1/m,
Similar usage of Lemma 8.10 (see Exercise 12) shows that
hk  
bi C.j 1/m D f .B1 / C f .B2 / C f .B3 / C f .B4 / C f .B5 / C f .B6 / :
6 k hk
1 Regla
Ai+(j −1)m,i−1+(j −1)m = − − [r(B6 ) + r(B1 )]
del punto medio en dos dimensiones. h 18
hk
Ai+(j −1)m,i−1+(j −2)m = − [r(B1 ) + r(B2 )]
18
h hk
Ai+(j −1)m,i+(j −2)m = − − [r(B2 ) + r(B3 )]
k 18
k hk
Ai+(j −1)m,i+1+(j −1)m = − − [r(B3 ) + r(B4 )]
h 18
508 j Capítulo 21. Resolución numérica de ecuaciones en derivadas parciales

21.5 Resolución de EDP no lineales


Utilizaremos la estrategia del método de las diferencias atrasadas. La aplicaremos a una típica ecuación no lineal en
derivadas parciales,
u t C uux D Duxx ;
conocida como ecuación de Burgers, por Johannes Martinus Burgers, Paises Bajos, 1895-1981.

Burgers

Está presente en mecánica de fluidos, flujo de tráfico, acústica, etc. Si D > 0, modeliza fluidos viscosos; si D D 0,
fluidos
6 | CHAPTER invíscidos
8 Partial o sin viscosidad.
Differential Equations
Utilizaremos una discretización o malla como la de la ecuación del calor.
t

0 x
a b

Los puntos sólidos son 8.1


Figure los que
Meshdefinen
for thelas condiciones
Finite Differenceiniciales
Method. yThe
de filled
contorno
circles(conocidos); los huecos, los que calculará
represent known
el método. initial and boundary conditions. The open circles represent unknown values that must be
Si wij es la aproximación
determined. de la solución en .xi ; tj /, aplicando diferencias atrasadas a ui y centradas en los otros
términos de u t C uux D Duxx se tiene que
wij wi;j 1 w wi 1;j  D 
i C1;j
its approximation at (xC , w
t ij
) by w . Let M and N D the
be 2
wi C1;j
total number 2wof C wi in1;jthe: x and t
ij steps
k i j ij 2h h
directions, and let h = (b − a)/M and k = T /N be the step sizes in the x and t directions.
Reordenando,
The discretization formulas from Chapter 5 can be used to approximate derivatives in
the x and t directions.
h For example, applying  
the centered-difference formula for the second
wij Cto thewxij variable
derivative wi C1;j yields wi 1;j  wiC1;j 2wij C wi 1;j wi;j 1 D 0;
2h
donde  D Dk= h2 . Al ser una ecuación no lineal1 en w, se resolverá por Newton-Raphson.
u (x, t) ≈ (u(x + h, t) − 2u(x, t) + u(x − h, t)), (8.4)
Si se hace zi D wij , en la etapaxxde tiempo hj2 se trata de resolver la ecuaciones en las variables z1 ; : : : ; zm

withF error 
k and the forward-difference
h2 uxxxx (c1 , t)/12; 
i .z1 ; : : : ; zm / D zi C zi ziC1 zi 1  ziC1 formula
2zi C zifor1 the wfirst derivative
i;j 1 D 0;
used for the time variable gives 2h
para i D 1; : : : ; m. El término wi;j 1 se conoce de la1 etapa anterior.
La primera y la última de estas ecuaciones ut (x,se
t) ≈reemplazan por
(u(x, t + k)las condiciones
− u(x, t)), de contorno apropiadas.
(8.5) Así, para el
k
caso de la ecuación de Burgers con condiciones de Dirichlet
with error kutt (x, c2 )/2, where
8̂ x − h < c1 < x + h and t < c2 < t + h. Substituting into
u t C uux D Duxx
< (xi , tj ) yields
the heat equation at the point
ˆ
u.x; 0/ D f .x/ para xl  x  xr
D ˆ u.x ; t/ D l.t/ para todo1 t  0
:̂ −l 2wij + wi−1,j ) ≈ (wi,j +1 − wij ),
(wi+1,j (8.6)
h2 u.xr ; t/ D r.t/ para todo k t  0;
with the local truncation errors given by O(k) + O(h2 ). Just as in our study of ordinary
differential equations, the local truncation errors will give a good picture of the total errors,
as long as the method is stable. We will investigate the stability of the Finite Difference
Method after presenting the implementation details.
Note that initial and boundary conditions give known quantities wi0 for i = 0, . . . , M,
and w0j and wMj for j = 0, . . . , N , which correspond to the bottom and sides of the rectangle
in Figure 8.1. The discrete version (8.6) can be solved by stepping forward in time. Rearrange
21.5 Resolución de EDP no lineales j 509

las ecuaciones 1 y m son


F1 .z1 ; : : : ; zm / D z1 l.tj / D 0
Fm .z1 ; : : : ; zm / D zm r.tj / D 0:
Para aplicar Newton-Raphson la matriz Jacobiana del sistema, J .z/ D @F @z
, de la fórmula de recurrencia, zkC1 D
zk J .zk / 1 F .zk /, es
2 3
1 0
6  kz2 1C2 C k.z3 z1 /  C kz 2 7
6 2h 2h 2h 7
6 kz3 k.z4 z2 / kz3 7
6  2h
1C2 C 2h
 C 2h 7
J .z/D66 :: :: ::
7
7
6 : : : 7
6 7
4  kz2h m 1
1C2 C k.zm 2hzm 2 /  C kz2hm 1 5

0 1

Ejemplo 21.2 Resolvamos la ecuación de Burgers

t C uux D Duxx
„u
sen.x/
u.x; 0/ D 2Dˇ
˛Cˇ cos.x/
para 0  x  1
u.0; t/ D 0 para todo t  0
u.1; t/ D 0 para todo t  0:

El código que lo hace está en el cuadro 21.8. Con la instrucción >> w=Burgers(0,1,0,2,250,250); se obtiene el
gráfico de la figura 21.10.

function w=Burgers(xl,xr,tb,te,M,N)
% Ecuación de Burgers; diferencias atrasadas; In [xl,xr], tiempo[tb,te], M, N
alfa=5; beta=4; D=0.05;
f=@(x) 2*D*beta*pi*sin(pi*x)./(alfa+beta*cos(pi*x));
l=@(t) 0*t; r=@(t) 0*t;
m=M+1; n=N; close all
h=(xr-xl)/M; k=(te-tb)/N; sigma=D*k/h/h;
w(:,1)=f(xl+(0:M)*h)’; w1=w;
for j=1:n
for it=1:4
DF1=diag(1+2*sigma*ones(m,1))+diag(-sigma*ones(m-1,1),1);
DF1=DF1+diag(-sigma*ones(m-1,1),-1);
DF2=diag([0;k*w1(2:m-1)/(2*h)],1)-diag([k*w1(2:m-1)/(2*h);0],-1);
DF=DF1+DF2;
F=-w(:,j)+(DF1+DF2/2)*w1;
DF(1,:)=[1 zeros(1,m-1)]; DF(m,:)=[zeros(1,m-1) 1];
F(1)=w1(1)-l(j); F(m)=w1(m)-r(j);
w1=w1-DF\F; % Newton-Raphson
end
w(:,j+1)=w1;
end
x=xl+(0:M)*h; t=tb+(0:n)*k; mesh(x,t,w’)

Cuadro 21.8

Referencias, fuentes y lecturas complementarias


La parte dedicada al método de los elementos finitos está basado en el trabajo de Sayas [2015]. En el apéndice A se
profundiza sobre los orígenes históricos y porqués de este fundamental método, así como su desarrollo histórico. Lo
demás sigue muy de cerca a Sauer [2012].
Hay referencias actuales muy buenas, y reediciones de clásicas, para calibrar bien el método de los elementos finitos
y cómo utilizarlo para resolver ecuaciones en derivadas parciales. Se aprende mucho leyendo a Haberman [2013], Zien-
kiewicz, Taylor y Zhu [2005], Brenner y Scott [2008], Ciarlet [2002] y Evans [1997]. Las matemáticas detrás de la idea
y sus pasos clave para entender el método se siguen muy bien en Sayas [2015].
510 j Capítulo 21. Resolución numérica de ecuaciones en derivadas parciales

Figura 21.10: Resolución de la ecuación de Burgers con >> w=Burgers(0,1,0,2,250,250);

Los programas de M ATLAB que se listan son una pequeña extensión de los de Sauer [2012]. Para diseño de procedi-
mientos ad-hoc, como casi siempre, M ATLAB C ENTRAL es un buen punto de partida.
Apéndices
Apéndice A

Rudimentos matemáticos: definiciones,


notación y proposiciones esenciales

E STE apéndice trata de aportar ciertos fundamentos, principios matemáticos y orígenes del contexto conceptual que
se abordado en el libro. La notación que se introduce, de forma sistemática y natural, es la que se trata de usar en
todas los capítulos del libro. Es un medio para uniformizar todo el contexto de la exposición y aprendizaje, si ello es
posible. Si algún lector al leer tal o cual cosa en los diferentes capítulos se siente huérfano de algún concepto o desarrollo
que crea necesario conocer, es probable que lo encuentre en este apéndice. Si no, seguro, en las múltiples referencias en
el apartado de bibliografía, al final.

A.1 Conjuntos
Los algoritmos —como agrupación ordenada y finita de operaciones y reglas que permiten hallar la solución de un
problema, o realizar una actividad relativamente compleja— y las matemáticas modernas, tienen mucho que ver con
colecciones abstractas de objetos como lo es un conjunto.
Definición A.1 Un conjunto es una construcción matemática que se refiere a una colección de objetos considerada
en si misma un objeto: los números naturales, las soluciones de un problema determinado, los municipios de una
provincia, etc.
Un conjunto se identifica por una letra mayúscula: el conjunto S , el conjunto de los números naturales N, el de los
enteros Z, el de los reales R, complejos C, racionales Q, etc.
“Conjuntos” es un concepto primitivo, en el sentido de que no es posible definirlos en términos de nociones más
elementales, por lo que su estudio puede realizarse de manera informal, apelando a la intuición y a la lógica. Son el
concepto fundamental de las matemáticas modernas: mediante ellos puede formularse el resto de objetos matemáticos,
como los números y las funciones, entre otros. Su estudio detallado requiere pues la introducción de axiomas y conduce
a la teoría de conjuntos.
El proponente o inventor de la teoría de conjuntos fue Georg Ferdinand Ludwig Philipp Cantor —Rusia 1845, Ale-
mania 1918—. Lo hizo en la segunda mitad del siglo XIX.

Cantor

Cada uno de los objetos de la colección a la que se refiere un conjunto es un elemento o miembro del conjunto. Si un
elemento a pertenece a un conjunto C se indica a 2 C . Los conjuntos se definen mediante la enumeración entre llaves
€    _SKgK, 2SK_ej22AyK HS46[,46E_A>ES++ _A1A6KES_>XA6>S_q,2SKS2x,K,E>iKS_
L{H6XS_AXX,2ASK,E6_ 2SK_c^2bA1E6_H64A,Kb6X6>E,q2SHUt_KS 46_-XXSEE.XSK E,KS2AyK46K{H6XSX6,E
2SHSExHAb646_g26_ASK6_46LgH6X8_X,2ASK,E6_
€ {H6XSAH,>AK-XAS ES_K{H6XS_AH,>AK,XAS_ =6XSKg_,4S_ 4gX-Mb66E_A>ES+*6KE,AKm6_bA>,2AyK46
E,__SEg2ASK6_46,E>gK,_X,x26_USEAKyHA2,_ U6XSKS=6XSK_A_b6H,bAs,4S_@,_b,Ht_b-X46 K6E_A>ES
+*E,KS2AyK46K{H6XS_2SHUE6CS_6X,1A6K2SKS2A4,q@,1x,_A4Sg_,4,q,6K6E_A>ES,Kb6XASX 'AK
6H1,X>SE,KS2AyK,K,ExbA2,46ES_K~H6XS_2SHUE6CS_2SHS6pb6K_AyK46ES_K~H6XS_X6,E6_6HUE6,4S_
6K,KtEA_A_H,b6HtbA2S _6 <XH,EAsy 46 H,K6X, 2SHUE6b, 6K 6E _A>ES ++ g6 6K 6_b, wUS2, 4SK46 _6
2SK_bXgr6XSKHg2@,_>6K6X,EAs,2ASK6_46ES_L{H6XS_X6,E6_6KbX66EE,_
€ S_    
6HUE6,4S_46H,K6X,Ht_SH6KS_2SKbAKg,4,46_466E_A>ES+*6K6E
_A>ES++_SK<XH,EAs,4S_46KeS46E,KtEA_A_H,b6HtbA2S2SHS6pb6K_AyK46ES_X6,E6_
514 j Apéndice A € S_2g,b6IASK6_ UXSUg6_bS_USX%So-K,HAEbSKU.X,X6_SEm6X4Am6X_S_UXS1E6H,_>6SHwbXA2S_
_SKgK,2SK_bYg22AyKWg6>6K6X,EAs,,_gm6s,ES_L}H6XS_2SHUE6CS_
€ {H6XS_@AU6X2SHUE6CS_>6K6X,EAs,KE,2SK_bXj22AyK46,HAEbSK46ES_2g,b6IASK6_
€ pb6K_ASK6_ e,_26K46Kb6_ 46 X6,E6_ q 2SHUE6CS_ $S_b6XASXH6Kb6 4Am6X_,_ 6pb6K_ASK6_ _gX>A4,_ 46E
de sus elementos, C D fa; b;,KtEA_A_H,b6HtbA2S2X6.YSK6pb6K_ASK6_bX,_26Kb6Kb6_KS,E>61X,A2,_Wg6AK2Egx,M,ES_
: : : g, o especificando, también entre llaves, la propiedad que los caracteriza. Por ejemplo,
C D fx W x 2 R; x  2g designa los números
€   reales
   menores
   o iguales que dos; el conjunto C de los números reales x
E, KS2AyK46L{H6XSAK:KAb6_AH,E,_x2SHS,E>gK,_A46,_46
6A1KAs ,KbA2AU,1,K gK, 2SK_eg22AyK Ht_ ,EEt 46 ES_ K{H6XS_ X6,E6_ SX4AK,XAS_ =6XSK
que son mayores que 1 y menores<XH,EAs,4S_:K,EH6Kb62SHSgKHS46ES_KS6_buK4,X
que 0 se designa de esta manera: C D fx46246ES_ R W ,pASH,_46
x > 1; x ES_K{H6XS_
< 0g. X6,E6_
El conjunto sin elementos se denomina vacío, designándose mediante el símbolo ;.
H64A,Kb66Eb6SX6H,46S` 
€ {H6XS__gXX6,E6_
Si S y S 0 son dos conjuntos y€ todos los elementos del conjunto S 0 lo son de S, se dice que S 0 es un subconjunto del
H6XS__gXX6,E6_
conjunto S, o que está contenido en S , expresándose S 0  S o S  S 0 . El conjunto de los números, por ejemplo, se
0

clasifica en diversos subconjuntos de acuerdo con lo que refiere la figura A.1.


&ODVLILFDFLyQ GH Q~PHURV

1DWXUDOHV

 XQR
1DWXUDOHV SULPRV
(QWHURV
1DWXUDOHV &RPSXHVWRV
5DFLRQDOHV  &HUR
&RPSOHMRV
5HDOHV  (QWHURV QHJDWLYRV

   )UDFFLyQ SURSLD
)UDFFLRQDULRV 
)UDFFLyQ LPSURSLD

,UUDFLRQDOHV
 ,UUDFLRQDOHV DOJHEUDLFRV
7UDVFHQGHQWHV

,PDJLQDULRV

Figura A.1: Clasificación de los números en diversos subconjuntos. Fuente: W IKIPEDIA mas pequeños ajustes del autor

   
 
La unión de dos conjuntos S y T , expresada S [ T , es el conjunto formado por los elementos que pertenecen a S o a
T . La intersección de S y T , expresada S \ T , es el conjunto formado por los elementos que pertenecen a S y a T .
'A_b6H,46    gbAEAs,4S_U-X,6pUX6_,XES_K{H6XS_)K'A_b6H,46KgH6X,2AyKUS_A2ASK,E USX
Si S 0 es un subconjunto de S, el complemento del subconjunto
6C6HUES6_bt46:KA4SUSXE,1,_6Wg6gbAEAs, S 0 en S es el conjunto formado por los elementos de
,1,_646iK_A_b6H,46KgH6X,2AyK6_6EK~H6XS46_xH1SES_
0
S que no pertenecen a S4A9X6Kb6_S>g,YA_HS_K626_,YAS_U.X,X6UX6_6Kb.XgKK{H6XS2g,E
. A6X,46ES_AK:KAbS_US_A1E6_6K6E_A_b6H,
E_A_b6H,46 KgH6X,2AyKHt_gbAEAs,4S6KE,,2bl,EA4,46_6E -Xv1A>SS462AH,EUSXWg66HUE6,# _xH1SES_
Si a y b son númerosU,X,X6UX6_6Kb,XbS4S_ES_K{H6XS_#
   
reales, es decir, a 2 R, b 2 R, y a  b, el conjunto de números x de la recta real tales que
a  x  b se indica Œa; b. El formado por los x tales que a < x  b, por .a; b. El de los x que verifican que
a < x < b, por .a; b/.
Si S es un conjunto no vacío de números reales acotados superiormente —mayorados—, existe un número real mínimo
y tal que x  y para todo x 2 S. Al número y se le denomina cota superior mínima o supremo de S ; se expresa así:

sup .x/ o sup fx W x 2 S g :


x2S

De forma similar se define la cota inferior máxima —o ínfimo— de un conjunto S no vacío de números reales acotados
inferiormente o minorados:
Kınf .x/ o Kınf fx W x 2 Sg :
x2S

Dados dos conjuntos S y T , una aplicación, transformación o mapeo f de S en T , expresada como f W S ! T , es


una asociación o criterio que a cada elemento de S hace corresponder uno de T .
Una función es un caso particular de aplicación en donde los conjuntos origen e imagen suelen ser —en este libro; no
necesariamente en general— conjuntos de números: fundamentalmente R, C, Z, N, etc.
Como regla general, las funciones que tienen interés en ingeniería, y cualesquiera aplicaciones de las matemáticas, son
funciones que tienen algún tipo de “buen comportamiento” que nos permite utilizarlas de forma habitual para modelizar
y simular fenómenos de la vida cotidiana.
La imagen de un elemento x 2 S con la aplicación f W S ! T es el elemento f .x/ 2 T . El conjunto imagen f .S /
= ff .x/ 2 T; para todo x 2 S g. La imagen de un subconjunto S 0  S con la aplicación f sería, por consiguiente, el
subconjunto imagen f .S 0 /. El conjunto S se conoce como origen o dominio de definición de la aplicación, o función, y
el T como dominio de valores.
Una aplicación f W S ! T se dice inyectiva si para cualquier par de elementos x; y 2 S, x ¤ y, se cumple que
f .x/ ¤ f .y/. Ejemplo, la aplicación f W R ! R, definida por f .x/ D x 2 , no es inyectiva, pues f .1/ D f . 1/ D 1.
Una aplicación f W S ! T se dice suprayectiva —sobreyectiva, epiyectiva, suryectiva o exhaustiva— si el conjunto
imagen f .S / es igual a todo el conjunto T ; es decir, para todo y 2 T existe un x 2 S tal que f .x/ D y.
A.2 Espacios vectoriales j 515

Una aplicación se dice biyectiva si es inyectiva y suprayectiva. Ejemplo, si Jn es el conjunto de los números enteros
de 1 a n, Jn D f1; : : : ; ng, y se define una aplicación  W Jn ! Jn que modifica el orden de disposición de los elementos
de Jn —estas aplicaciones se denominan permutaciones—, tal aplicación es biyectiva.
Un conjunto S se dice numerable si existe una biyección entre N y S: a cada unos de los n elementos k, 1  k  n,
se le asocia un elemento ak 2 S , esto es: k 7! ak .
Una sucesión de elementos de un conjunto T es una aplicación de N en T : a cada elemento n  1 se le hace
corresponder un x .n/ 2 T : n 7! x .n/ . Tal sucesión se designa x1 ; x2 ; : : : xn ; : : :, o fx .1/ ; x .2/ ; : : : g. También en algunos
casos fx .n/ gn1 e incluso fxn g1 nD1 .
Si fxi g es una sucesión de números reales y existe un número real S tal que 1: para cada " > 0 existe un N tal que
para todo n > N se tiene que xn < S C  y 2: para cada " > 0 y M > 0 existe un n > M tal que xn > S ", entonces S
se denomina límite superior de la sucesión fxn g, escribiéndose S D lKım supn!1 xn . Si fxn g no está acotada por arriba
—mayorada— se escribe lKım sup xn D C1. El límite inferior de la sucesión fxn g es lKım inf xn D lKım sup. xn /. Si
lKım sup xn D lKım inf xn D S , entonces lKım xn D S .
Los conjuntos dotados de ciertas leyes de composición o asociación interna —adición, multiplicación, división o
cualquier otra—, se dice que poseen una estructura algebraica. Alguna estructuras algebraicas fundamentales son el
grupo, el anillo (Z por ejemplo), el cuerpo (R y C, por ejemplo), el espacio vectorial, el álgebra, etc.

A.2 Espacios vectoriales


Definición A.2 Un espacio vectorial E es una estructura algebraica creada a partir de un conjunto no vacío, una ley
de composición interna definida para los elementos del conjunto, adición, C, con las siguientes propiedades —grupo
conmutativo—
xCy DyCx conmutativa
.x C y/ C z D x C .y C z/ asociativa
xCøDx existencia de elemento neutro
x C . x/ D ø;
y una ley de composición externa, producto por un escalar, , definida entre dicho conjunto y otro conjunto con
estructura de cuerpo, K, con las siguientes propiedades,
1  x D x; 0x Dø
˛.ˇx/ D .˛ˇ/x asociativa
.˛ C ˇ/x D ˛x C ˇx distributiva
˛.x C y/ D ˛x C ˛y; distributiva
˛  ø D ø;
válidas cualesquiera que sean x; y; z en E y ˛; ˇ en K. Es usual denominar vectores a los elementos de E y escalares
a los de K.
A ø se le denomina elemento neutro, o nulo, y a x el opuesto de x.
Proposición A.1 En cualquier espacio vectorial se cumple que:
1. x C y D x C z implica que y D z.
2. ˛x D ˛y con ˛ ¤ 0 implica x D y.
3. ˛x D ˇx con x ¤ ø implica ˛ D ˇ.
4. .˛ ˇ/x D ˛x ˇx.
5. ˛.x y/ D ˛x ˛y.
6. ˛ø D ø.
7. . ˛/x D ˛. x/ D .˛x/.

Ejemplo A.1 Quizás el espacio vectorial más simple y utilizado es el conjunto de los números reales. Es un espacio
516 j Apéndice A

vectorial con la adición definida en los términos usuales y el producto o, multiplicación por escalares (reales), definido
por la multiplicación ordinaria. El vector nulo es el número real cero. Las propiedades de adición ordinaria y multipli-
cación de números reales satisfacen las propiedades de la definición anterior. Este espacio vectorial se suele denominar
el espacio unidimensional de números reales, o simplemente la recta real. Se designa por R. Todo lo dicho se aplica
igualmente al espacio vectorial de los números complejos, C.
En las aplicaciones que se estudian habitualmente en este libro los casos más importantes ocurren cuando K D R o
K D C. Con la notación K designaremos a cualquiera de los cuerpos R o C y por x un vector cualquiera de un espacio
vectorial.
Ejemplo A.2 La extensión natural del anterior, y paradigma de espacio vectorial en este libro, lo constituye el formado
por sucesiones ordenadas de n elementos cualesquiera de K, o n-uplas x D Œx1 ; : : : ; xn , definiendo la suma de vectores
mediante
Œx1 ; : : : ; xn  C Œy1 ; : : : ; yn  D Œx1 C y1 ; : : : ; xn C yn 
y el producto por un escalar mediante
˛Œx1 ; : : : ; xn  D Œ˛x1 ; : : : ; ˛xn  :
Si los elementos están definidos en R, el espacio vectorial se denomina Rn , si lo están en C, el espacio vectorial es Cn .
En general, cuando en el libro nos refiramos a un espacio vectorial, salvo que se indique lo contrario, podemos sobre-
entender que nos estamos refiriendo a Rn .
Ejemplo A.3 Si se denota por RN el conjunto cuyos vectores son las sucesiones infinitas de números reales, es decir,
˚
RN D x D fxn g1 nD1 W xn 2 R para todo n 2 N ;

éste tiene estructura de espacio vectorial sobre el cuerpo R. Análogamente, el conjunto CN de todas las sucesiones de
números complejos tiene estructura de espacio vectorial. La adición y la multiplicación en estos espacios vectoriales se
definen elemento a elemento como en el ejemplo A.2. Se dice que una sucesión está acotada si existe una constante M
tal que fxn g1
nD1 < M para todo n. La colección de todas las sucesiones infinitas acotadas también conforman un espacio
vectorial ya que la suma de dos sucesiones acotadas o el múltiplo escalar de una sucesión acotada están acotadas. Este
espacio se suele denominas espacio de sucesiones de números reales acotadas.
Ejemplo A.4 El conjunto de sucesiones infinitas de números reales que convergen a cero es un espacio vectorial ya
que la suma de dos sucesiones convergentes a cero o el múltiplo escalar de una sucesión que converge a cero también
converge a cero.
Ejemplo A.5 Si consideramos un intervalo Œa; b en la recta real. El conjunto de todas las funciones continuas de valores
reales en este intervalo forman un espacio vectorial. Escribamos x D y si x.t/ D y.t/ para todo t 2 Œa; b y sea el vector
nulo la función idénticamente igual a cero en Œa; b. Si x e y son vectores de este espacio vectorial y ˛ es un escalar
(real), las funciones .x C y/.t/ D x.t/ C y.t/ y .˛x/.t/ D ˛x.t/ son obviamente continuas por lo que la estructura de
espacio vectorial es clara. Este espacio se conoce como el espacio vectorial de funciones continuas reales en Œa; b.
Ejemplo A.6 El conjunto Pn de polinomios de grado n,
n
X
pn .x/ D ak x k ;
kD0

con coeficientes ak reales —definidos en toda la recta real o en un intervalo Œa; b—, o complejos, también conforman
sendos espacios vectoriales. El vector nulo y la adición o suma, así como la multiplicación por un escalar, se definen de
la misma manera que en el ejemplo anterior. La suma de dos polinomios y un múltiplo escalar de cualesquiera de ellos
son obviamente polinomios.
Dejamos aquí de momento los ejemplos pues otros que enunciaremos y utilizaremos en el libro requieren la introduc-
ción de otras estructuras adicionales en los espacios vectoriales como son una norma y el producto interior. Seguiremos
enunciando ejemplos al introducir estas estructuras.
A.2 Espacios vectoriales j 517

Definición A.3 Un subespacio vectorial M de un espacio vectorial E sobre un cuerpo K es un subconjunto no vacío
que es un espacio vectorial sobre K. Es decir, es cerrado respecto de las operaciones de adición y producto por un
escalar por lo que cumple que
8x; y 2 M H) x C y 2 M;
8x 2 M y 8 2 K H) x 2 M:

La intersección de una familia cualquiera de subespacios de E es un subespacio de E.


Un conjunto de vectores x1 ; x2 ; : : : ; xk se dicen linealmente dependientes si existen escalares i , no todos cero, tales
P
que kiD1 i xi D 0 ; linealmente independientes, si

k
X
i xi D 0 H) i D 0; 0i k:
i D1

Definición A.4 La dimensión de un subespacio es el máximo número de vectores linealmente independientes en el


subespacio.

Definición A.5 Si X es un subconjunto cualquiera de E el subespacio GenfXg, generado o engendrado por X , es la


intersección se todos los subespacios que contienen a X . Cuando GenfX g D E, se dice que X es una parte generadora
de E.

Definición A.6 Dados vectores x1 ; : : : ; xn y escalares 1 ; : : : ; n , el vector formado según la expresión


x D 1 x1 C    C n xn
se dice que es una combinación lineal de los vectores x1 ; : : : ; xn con coeficientes 1 ; : : : ; n .
Un subconjunto X de E es un subespacio si y sólo si contiene a cualquier combinación lineal de cualquier subconjunto
finito de vectores de X. También se demuestra que el subespacio GenfXg es el conjunto de todas las combinaciones
lineales de vectores de X.
Definición A.7 Una parte X de un espacio vectorial E se dice que es una familia libre si los vectores de cualquier
subconjunto finito de X son linealmente independientes.

Definición A.8 Una base de un espacio vectorial E es cualquier subconjunto B de E que sea, simultáneamente, una
parte libre y generadora de E; dicho de otra forma, una base de un espacio vectorial es un conjunto —normalmente se
supone ordenado (numerado)— de vectores linealmente independientes que generan (o engendran) dicho espacio.
Se demuestra que cualquier espacio vectorial tiene una base y que todas las bases de un mismo espacio tienen la misma
cardinalidad —se pueden poner en biyección—. Cuando el cardinal de las bases es un número natural, n 2 N, se dice
que el espacio es de dimensión finita n.
Definición A.9 En un espacio vectorial K n , los vectores
2 3 2 3 2 3
1 0 0
607 61 7 60 7
e1 D 6 7 6 7 6 7
4 ::: 5 ; e2 D 4 ::: 5 ; : : : ; en D 4 ::: 5 ;
0 0 1
forman una base en dicho espacio; éste, por tanto, tiene dimensión n. Esta base se denomina base canónica o base
estándar de K n . En esta base, cualquier vector x T D Œx1 ; x2 ; : : : ; xn  se puede expresar de la siguiente forma:
2 3 2 3 2 3 2 3
x1 1 0 0
6x2 7 607 617 607
6 : 7 D x1 6 : 7 C x2 6 : 7 C    C xn 6 : 7 :
4 :: 5 4 :: 5 4 :: 5 4 :: 5
xn 0 0 1
518 j Apéndice A

Es decir Rn D Genfe1 ; : : : ; en g, por tanto Rn está generado por los vectores e1 ; : : : ; en . La base estándar de Pn es
S D f1; t; t 2 ; : : : ; t n g.

Proposición A.2 Si M y N son dos subespacios vectoriales de un espacio X, la intersección, M \ N , de M y N es


un subespacio de X.
Si A y B son subconjuntos de un espacio vectorial E, el conjunto A C B se define como:

A C B D fa C b W a 2 A; b 2 Bg :

Cuando A y B son subespacios, también lo es la suma A C B. Si además A \ B D ;, la suma se denomina directa,


escribiéndose A ˚ B. Si A ˚ B D E, cualquier vector c 2 E se descompone de manera única como c D a C b, con
a 2 A y b 2 B; también se dice que A y B son subespacios suplementarios.
En el espacio tridimensional el subespacio generado por un círculo bidimensional centrado en el origen es un plano.
El subespacio generado por un plano que no pase por el origen es el espacio entero. Un subespacio es una generalización
de nuestra noción intuitiva de un plano o línea recta a través del origen. La traslación de un subespacio, por lo tanto, es
una generalización de un plano arbitrario o una recta.
Definición A.10 La traslación de un subespacio se denomina variedad lineal o subespacio afín.
Una variedad lineal V se puede expresar como V D x0 CM , donde M es un subespacio. En la figura A.2 se representa
un subespacio M y una variedad22lineal2.derivada
Basics ofdeAffine
él para un x0 cualquiera de V .
Geometry

V
x0
M

Figura A.2: Variedad lineal o subespacio afín

A.2.1 Espacios vectoriales con estructuras adicionales


Los espacios vectoriales de mayor interés, tanto en el análisis abstracto como en las aplicaciones, tienen más estructura
que la implicada únicamente por las propiedadesFigurepresentadas. Los axiomas
2.6. An affine line U and delitsespacio
directionvectorial sólo describen propie-
dades algebraicas de los elementos del espacio: adición, multiplicación por un escalar y combinaciones de éstas. Faltan
conceptos topológicos como apertura, envoltura, convergencia y completitud, para hacer frente a cuestiones fundamen-
tales para el análisis como es sithis
una time without
sucesión any restriction
de funciones converge
−→ aonotra
the λi , since
función, la the right-hand
continuidad

side
→ de funciones, medir
2
distancias, etc. of the equation is null. Thus, U is a subspace of R . In fact, U is one-
dimensional,
Las necesidades del análisis funcional and itconsiderar
requieren is just a usual
nuevas line in R2 . This
estructuras. line estos
Todos can be identified
conceptos se pueden pro-
2
with a line passing through the origin
porcionar introduciendo una forma de medir y la distancia en un espacio. of A , a line that is parallel to the
line U of equation ax + by = c, as illustrated in Figure 2.6.
Now, if (x0 , y0 ) is any point in U , we claim that
A.2.1.1 Espacios normados y espacios métricos −

U = (x0 , y0 ) + U ,
La idea detrás de una norma es poder medir vectores y calcular distancias.
where
→ n
− →o

(x0 , y0 ) + U = (x0 + u1 , y0 + u2 ) | (u1 , u2 ) ∈ U .



First, (x0 , y0 ) + U ⊆ U , since ax0 + by0 = c and au1 + bu2 = 0 for all


(u1 , u2 ) ∈ U . Second, if (x, y) ∈ U , then ax + by = c, and since we also
have ax0 + by0 = c, by subtraction, we get

a(x − x0 ) + b(y − y0 ) = 0,

→ −

which shows that (x − x0 , y − y0 ) ∈ U , and thus (x, y) ∈ (x0 , y0 ) + U .

→ −

Hence, we also have U ⊆ (x0 , y0 ) + U , and U = (x0 , y0 ) + U .
A.2 Espacios vectoriales j 519

Definición A.11 Si en un espacio vectorial E sobre K (R o C) se define una norma vectorial como una aplicación
k  k W E ! R que verifica
3.1 Espacios normados
kvk D 0 H) v D 0 y x ¤ 0 H) kxk > 0;
k˛vk D j˛jkvkSi en para
un espacio y v 2 E;E sobre K (R o C) se define una norma vectorial com
˛ 2 K vectorial
k  k W E ! R que
ku C vk  kuk C kvk 8u; v 2 E;verifica

se dice que E es un espacio vectorial normado. kvk D 0 H) v D 0 y x ¤ 0 H) kxk > 0;


La condición ku C vk  kuk C kvk es la desigualdad de Minkowski —pork˛vk
Hermann Minkowski,
D j˛jkvk para ˛ Lituania
2 K y v1864-
2 E;
1909—,
ku C vk  kuk C kvk 8u; v 2 E;

se dice que E es un espacio vectorial normado.


Minkowski
La condición kuCvk  kukCkvk es la desigualdad de Minkowski; se conoce tam
del triángulo. Es una generalización del hecho de que un lado de un triángulo no pue
la suma de los otros dos: ver figura. Una variante de esta regla es la siguiente:
ku vk  kuk kvk:
que se conoce también como regla del triángulo. Es una generalización del hecho de que un lado de un triángulo no
puede ser mayor que la suma de los otros dos en un espacio euclídeo multidimensional, como se puede constatar en la
figura A.3.

v
uCv

Figura
Figura A.3: Representación gráfica de la regla del 3.1: Representación gráfica de la regla del triángulo
triángulo

En el espacio vectorial Kn , para 1  p < 1, se tiene la familia de normas


Lema A.3 En un espacio vectorial normado se cumple que kxk kyk  kx yk para cualesquiera dos vectores x e
 1=p
y. p p
kxkp D jx1 j C    C jxn j ;
Demostración. kxk kyk D kx y C ykkyk  kx yk C kyk kyk D kx yk:
denominadas normas p de Hölder. Casos particulares lo constituyen las correspond
p D 2:
Definición A.12 En un espacio vectorial normado se define la distancia entre dos elementos u y v mediante
X n
d.u; v/ D ku vk : kxk1 D jxi j
iD1
Esta definición convierte a cualquier espacio vectorial normado en un espacio métrico. El p espacio de los números
kxk2 D jx1 j2 C    C jxn j2 :
reales, por ejemplo, con la distancia d.x; y/ D jx yj, es el espacio métrico R1 .
Con la introducción de normas adecuadas, casi todos Esta los ejemplos
última de espacios
se denomina en Rn vectoriales arribaTambién
norma euclídea. indicadosen se
Knpueden
es una norma la da
convertir en espacios vectoriales normados.
kxk1 D mKax jxi j :
Ejemplo A.7 El espacio vectorial C Œa; b de funciones continuas en el intervalo de la recta real Œa; b1in
junto con la norma
kxk D mKaxatb jx.t/j es un espacio vectorial normado.
Estas normas cumplen, cualquiera que sea x 2 Kn , que
Comprobemos si esta norma satisface las propiedades requeridas. Es obvio que kxk  0 y es cero sólo si la función
x.t/ es igual a cero. La regla del triángulo se obtiene de la expresión kxk1  kxk2  kxk1  nkxk1 :

Si laCbola
mKax jx.t/ C y.t/j  mKax.jx.t/j cerrada
jy.t/j/  mKunidad enC
ax jx.t/j es
axeljy.t/j:
R2mK conjunto fx 2 R2 W kxk  1g, sus forma
vectoriales 1, 2, 1, y p son las que representa la figura 3.2.
Finalmente, la propiedad que falta se deduce de
7
mKax j˛x.t/j D mKax j˛j jx.t/j D j˛j mKax jx.t/j:
520 j Apéndice A

Ejemplo A.8 El espacio vectorial DŒa; b de todas las funciones continuas en el intervalo Œa; b de la recta real, con
derivadas continuas de primer orden, junto con la norma definida así, kxk D mKaxatb jx.t/j C mKaxat b jx.t/j,
P es un
espacio vectorial normado.
Ejemplo A.9 El espacio euclídeo n dimensional, denotado como n n
pR o E , es el espacio vectorial normado por ex-
celencia con la norma euclídea dada por la expresión kxk2 D jx1 j C    C jxn j2 . Sus elementos lo constituyen
2

sucesiones ordenadas de n elementos cualesquiera de K, o n-uplas x D Œx1 ; : : : ; xn . Si los elementos son complejos se
tendría el espacio Cn .
En el espacio vectorial K n , para 1  p < 1, se tiene la familia de normas
p
p
kxkp D jx1 jp C    C jxn jp

denominadas normas p de Hölder —por Otto Hölder, Alemania 1859-1937—.

Hölder

Casos particulares lo constituyen las correspondientes a p D 1 y p D 2:


n
X
kxk1 D jxi j
iD1
p
kxk2 D jx1 j2 C    C jxn j2 :

Esta última es una vez más la norma euclídea en Rn . Toma su nombre de Euclides de Alejandría, Grecia, 325-265 a.C.
También en K n es una norma la dada por
kxk1 D mKax jxi j :
1in

Esta norma también se conoce como norma infinito o norma del supremo.
Estas normas cumplen, cualquiera que sea x 2 K n , que

kxk1  kxk2  kxk1  nkxk1 :

Si la bola cerrada unidad en R2 es el conjunto fx 2 R2 W kxk  1g, su forma en espacios vectoriales normados por la
1, 2, 1 y p son las que representa la figura A.4.

A.2.1.1.1 Estructura topológica en espacios vectoriales


En un espacio vectorial normado se define una bola abierta, S.x0 ; r/, de centro x0 y radio r, como el conjunto de puntos
x que verifican kx x0 k < r. Es decir:

S.x0 ; r/ D fx 2 Rn W kx x0 k < rg:


N 0 ; r/, se define, por el contrario, como el conjunto de puntos x que verifican kx
Una bola cerrada, S.x x0 k  r. Es
decir:
N 0 ; r/ D fx 2 Rn W kx x0 k  rg:
S.x
Consideraremos en lo que sigue de este apartado un subconjunto S del espacio vectorial métrico hasta ahora estudiado
(puede ser, por ejemplo, Rn ).
– Si el conjunto fx 2 R2 W kxk  1g es la bola cerrada unidad en A.2 Espacios vectoriales j 521
R2, su forma para las normas vectoriales 1, 2, 1, y p son estas.

i 2
2

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

q
 √ q
x22 D
kxk |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 A.4: Forma de la bola unidad para diferentes normas en R2


a b c 1 2 3

d e f g 9 4 6 5

h i j 10 8 7

Definición A.13 Sea S un conjunto de puntos del espacio vectorial normado X. Un punto y 2 S es un punto interior
de S si existe un " > 0 tal que todos los vectores x que satisfacen kx yk < " pertenecen a S . En otras palabras,
existe una bola abierta S.y; "/ de centro y y radio " contenida íntegramente en S. El conjunto de todos los puntos
V
interiores del conjunto S se denomina interior de S y se designa mediante S.
El interior de un conjunto puede, evidentemente, ser vacío. Por ejemplo un conjunto con un único punto, una línea en
R2 o un plano del espacio R3 .
Definición A.14 Un conjunto, o subconjunto S de un espacio normado, se dice abierto si coincide con su interior:
S D SV . Es decir, si alrededor de todo punto de S existe una bola abierta contenida íntegramente en S .
Dos ejemplos: la bola abierta unidad, S.x; 1/ D fx W kxk < 1g y el espacio Rn en su totalidad. En general los
subconjuntos o conjuntos abiertos se caracterizan por no tener límites definidos o ser disjuntos de su frontera (ver más
adelante la definición del concepto frontera).
Definición A.15 Un entorno de un punto x, E.x/, es un conjunto abierto que contiene a x. En otras palabras, E.x/ es
un entorno de x si contiene una bola abierta de centro x.

Definición A.16 Se dice que un punto x es un punto de acumulación del subconjunto S si en todo entorno de x existen
un número infinito de puntos de S.

Definición A.17 Un punto x se denomina punto de adherencia de un subconjunto S de un espacio vectorial cuando
todo entorno de dicho punto x contiene al menos un punto de S; es decir, para todo " existe un y 2 S tal que
kx yk < ". El conjunto de todos los puntos de adherencia de S se denomina adherencia —en la literatura anglosajona
N La adherencia de la bola abierta
y latinoamericana, se denomina clausura cl.S / o cerramiento—. Se designa por S.
N
S.x; 1/ D fx W kxk < 1g es la cerrada S.x; 1/ D fx W kxk  1g.

Definición A.18 Se denomina frontera o borde de un conjunto a la parte de la adherencia que no está en el interior.

Definición A.19 Un conjunto, o subconjunto, se dice cerrado si coincide con su adherencia.

A.2.1.1.2 Convergencia
La adherencia de cualquier conjunto S es el conjunto cerrado más pequeño que contiene a S . Se puede demostrar que
un conjunto es cerrado si y sólo si toda sucesión convergente de elementos de S tiene un límite en ese conjunto.
522 j Apéndice A

Definición A.20 Se dice que en un espacio vectorial normado una sucesión infinita de vectores fxn g converge a un
vector x si la sucesión fkx xn kg converge a cero. En este caso se escribe xn ! x.
Todos los elementos del vector deben converger a cero, lo que hace difícil caracterizar la convergencia en espacios que
no sean Rn .
Proposición A.4 Si la sucesión infinita de vectores converge, el límite es único.

Demostración. Supongamos que xn ! x y que xn ! y. Entonces

kx yk D kx xn C xn yk  kx xn k C kxn yk ! 0:

Como consecuencia de esto, x D y.

En términos de esferas o bolas, una sucesión infinita de vectores fxn g converge a un vector x si y sólo si dado un
" > 0 la bola S.x0 ; "/ contiene un xn para todo n mayor que algún número N .
Proposición A.5 Un conjunto F es cerrado si y sólo si cualquier sucesión convergente de elementos de F tiene límite
en F .

Proposición A.6 La intersección de un número finito de conjuntos abiertos es abierta. La unión de una colección
arbitraria de conjuntos abiertos es abierta.

Proposición A.7 La unión de un número finito de conjuntos cerrados es cerrada. La intersección de una colección
arbitraria de conjuntos cerrados es cerrada.

Definición A.21 Un conjunto, o subconjunto, se dice compacto si es cerrado y acotado (contenido en una bola de
radio r < 1).
El término general de una sucesión f xn gn1 de números reales tiene límite, l, cuando n tiende a 1, si para todo valor
" > 0 por pequeño que sea, existe un valor n0 a partir del cual si n > n0 tenemos que la distancia de l a xn es menor
que ", es decir, 8" > 0; 9 n0 > 0 W 8n > n0 ; d.xn ; l/ < ".
Un importante resultado debido a Karl Theodor Wilhelm Weierstraß, Alemania 1815-1897,

Weierstraß

dice que si S es un conjunto compacto, de cada sucesión o sucesión infinita fxn gn2N de elementos de dicho conjunto es
posible extraer una subsucesión fx` g`2L ; L  N que converge a un elemento del propio conjunto S.
Si frk g es una sucesión de números reales y sk D sup fri W i  kg, entonces fsk g converge a un número real s0 ; a
este número se le denomina límite superior de frk g y se expresa como lKım sup .rk / o lKımk!1 .rk / . El límite superior de
una sucesión de números reales es el mayor punto de acumulación de la sucesión. De forma similar se define el límite
inferior.
Sea E un espacio vectorial normado; se dice que una sucesión fxn g en E converge a un límite v 2 E, si para todo
" > 0, existe un N 2 N tal que a partir de él, n  N , se cumple que kxn vk < ".
Cuando una sucesión fxn g admite un vector límite v sólo tiene ese vector como límite (si existe límite es único.) Se
escribe lKımn!1 fxn g D v, lo que es equivalente a lKımn!1 kxn vk D 0. En particular, xn ! 0 si y sólo si kxn k ! 0.
Definición A.22 Una sucesión fxn g en un espacio vectorial normado por k  k se denomina sucesión de Cauchy si
kxn xm k ! 0 al tender n; m ! 1. En otras palabras, si para todo " > 0 existe un N 2 N tal que cualesquiera que
sean n; m  N , se cumple que kxn xm k < ". Toda sucesión convergente es una sucesión de Cauchy pero pueden
existir espacios normados con sucesiones de Cauchy que no son convergentes.
A.2 Espacios vectoriales j 523

Esta sucesión debe su nombre a Augustin Louis Cauchy, Francia 1789-1857.

Cauchy

Definición A.23 Un espacio vectorial normado se dice completo si toda sucesión de Cauchy en él tiene límite. Un
espacio vectorial normado completo es un espacio de Banach.
Por Stefan Banach, Polonia 1892-1945.

Banach

Si se tiene la sucesión x D fxn g1


nD1 , se puede definir
v
1 u1
X uX
kxk1 D jxn j; kxk2 D t jxn j2 y kxk1 D sup jxn j:
nD1 nD1 n2N

Estas cantidades no estarán definidas para cualquier sucesión en RN o CN y estarán asociadas a un subespacio específico
de sucesiones. Si se define ( )
1
X
`1 .N/ D x D fxn g1 N
nD1 2 C tal que jxn j < 1 ;
nD1

se comprueba que ` .N/ es un subespacio vectorial de C y que kxk1 para x 2 `1 .N/ define una norma. Se obtiene así
1 N

un espacio normado. De la misma manera se definen


( 1
)
X
2 1 N 2
` .N/ D x D fxn gnD1 2 C tal que jxn j < 1
nD1

y ˚
`1 .N/ D x D fxn g1 N
nD1 2 C tal que x esté acotada :

Si   Rn es un conjunto abierto de Rn , el conjunto de todas las funciones continuas en  forman un espacio


vectorial lineal, C./, en Rn , con las operaciones suma y producto por un escalar,

.f C g/.x/ D f .x/ C g.x/; x2


.˛f /.x/ D ˛f .x/; x 2 :

Recordemos antes de introducir otros ejemplos de espacios vectoriales en los que la norma es importante, que una
función f se supone continua (o uniformemente continua) en  si para cualquier " > 0 existe un ı D ı.f; "/ > 0 tal
que jf .x/ f .y/j < ", cualesquiera sean x; y 2  con kx yk < ı.
Mediante C./ se designa el espacio vectorial lineal de las funciones continuas en el conjunto cerrado . Este
último espacio, y C./, son una variedad de espacio vectorial denominada espacio funcional pues sus elementos son
funciones en vez de vectores propiamente dichos. Cualquier función continua en C./ es claramente continua en C./.
Igualmente, si f 2 C./ es continua en el conjunto abierto  y éste está acotado, la función f se puede suponer
continua también en @, la frontera o borde de , y entenderse que es continua por tanto en C./ y pertenece a dicho
conjunto.
524 j Apéndice A

Otro espacio vectorial interesante es C m ./, el de funciones continuas con derivadas parciales continuas hasta orden
m en , o C m ./ en . También Cp .2/, de funciones continuas periódicas-2, es decir, funciones f 2 C. 1; 1/
tales que f .x C 2/ D f .x/, 1 < x < 1. O Cpk .2/ de funciones continuas periódicas-2 con derivadas continuas
hasta orden k. Alguna vez se indica Cp0 .2/ para referirse a Cp .2/.

Definición A.24 El conjunto L1 Œa; b, de todas las funciones del cuerpo de los números reales cuyo valor absoluto
es integrable en el intervalo Œa; b, es un espacio vectorial funcional. También lo es L2 Œa; b, el conjunto de todas las
funciones reales al cuadrado integrables en Œa; b. Es de destacar que en ambos casos estas funciones no tienen por que
ser continuas en ese intervalo.

A.2.1.1.3 Transformaciones, aplicaciones y operadores. Continuidad

Definición A.25 Dados dos espacios vectoriales X e Y y un subconjunto D de X , una regla que asocia a cada elemento
x 2 D un elemento y 2 X se dice una transformación, o aplicación, de X en Y con dominio de definición D. Si y
corresponde a x con la transformación T se escribe y D T .x/.

Definición A.26 Una transformación de un espacio vectorial X en un espacio vectorial de números reales o complejos
se denomina función.

Definición A.27 Dados dos espacios vectoriales E y F sobre el mismo cuerpo K se define una aplicación lineal,
transformación lineal, mapeo, operador lineal u homomorfismo, f , de E en F , como una aplicación f W E ! F
que verifica
f .x C y/ D f .x/ C f .y/ ;
cualesquiera que sean los vectores x, y de E y los escalares  y .
Existen dos casos particulares interesantes: el primero cuando E D F , en este caso se dice que f es un operador lineal
de E o endomorfismo de E; el segundo cuando F D K —el cuerpo base—, en cuyo caso la aplicación se denomina
forma lineal sobre E.
El conjunto L.E; F / de todas las aplicaciones lineales del espacio E en el espacio F se estructura como un espacio
vectorial si se definen las siguientes operaciones:

adición .f C g/ W .f C g/.x/ D f .x/ C g.x/; 8x 2 EI


producto por un escalar f W .f /.x/ D f .x/; 8x 2 E y 8 2 K:

En particular, el conjunto L.E; K/ de formas lineales es un espacio vectorial denominado dual de E, representándose
con E  .
Para una aplicación lineal f W E ! F , el conjunto de vectores de F que son la imagen de los de un subespacio de
E forma un subespacio de F . En particular, la imagen de todo E es un subespacio de F que se denomina subespacio
imagen de f , representándose mediante Im.f /. Análogamente, el conjunto anti-imagen de un subespacio de F forma
un subespacio de E. En particular, la anti-imagen del subespacio nulo de F forma lo que se denomina el núcleo de la
aplicación, representándose por ker.f /. Así pues

ker.f / D fx 2 E W f .x/ D 0g :

Si b 2 F , la ecuación lineal f .x/ D b tiene solución si y sólo si b 2 Im.f /. En ese caso el conjunto de todas
las soluciones es la variedad lineal —traslación de un subespacio— dada por x0 C ker.f /, donde x0 es una solución
particular de la ecuación. En particular, la aplicación es inyectiva si y sólo si ker.f / D ;.
El ejemplo más inmediato de transformación lineal lo proporciona una matriz rectangular m  n que asocia elementos
de Rn en Rm . Volvemos sobre esto unas líneas más abajo.
Rb
Oro ejemplo de transformación lineal de X D C Œa; b en X lo constituye la integral T .x/ D a k.t;  /x. / d  , donde
k.t;  / es una función continua en espacio cuadrado a  t  b, a    b.
A.2 Espacios vectoriales j 525

Definición A.28 Una transformación o aplicación T de un espacio vectorial normado X en otro espacio vectorial
normado Y es continua en x0 2 X si para todo " > 0 existe un ı > 0 tal que kx x0 k < ı implica que kT .x/
T .x0 /k < ".
La continuidad depende de la norma elegida. Si todo punto de un espacio vectorial normado en continuo, el espacio
se dice continuo.
Proposición A.8 Una transformación T de un espacio vectorial normado en otro Y también normado se dice continua
en el punto x0 2 X si y sólo si xn ! x0 implica que T .xn / ! T .xo /.
Dada una transformación lineal, aplicación lineal, o mapeo, f W E ! E, se dice que un subespacio W de E es un
subespacio invariante frente a f (o f -invariante) si para todo vector w 2 W se cumple que f .w/ 2 W . Dicho de otra
manera, W es un subespacio invariante si f .W /  W .

A.2.1.1.3.1 Los espacios `p y Lp


Volvemos sobre ellos en este contexto.
Definición A.29 Sea p un número real tal que 1  p < 1. El espacio `p está formado por todas las sucesiones
x D fxn g1
nD1 2 C tales que
N
1
X
jxn jp < 1:
nD1

Es decir ( )
1
X
p
` .N/ D x D fxn g1
nD1
N
2 C tal que p
jxn j < 1 :
nD1
˚
El espacio `1 es `1 .N/ D x D fxn g1
nD1 2 C tal que x esté acotada .
N

La norma de un elemento x D fxn g1 p


nD1 2 C de ` está definida por
N

1
!1=p
X
p
kxkp D jxi j :
i D1

En `1 .N/ por kxk1 D supi jxi j:


Los espacios (funcionales) Lp Œa; b, e incluso Rp se definen, de forma análoga, para p  1, como el espacio de las
funciones medibles x en el intervalo Œa; b para las cuales la integral de Lebesgue (Riemann) existe. La norma de este
espacio se define como
Z b !1=p
kxkp D jx.t/jp dt :
a

A.2.1.1.4 Espacios de Banach

Definición A.30 Un Espacio de Banach es un espacio vectorial normado completo respecto de la norma a él asociada.
Todo espacio vectorial normado de dimensión finita es un espacio de Banach.

Ejemplo A.10 De Luenberger [1969] sacamos la sucesión, del espacio X de funciones continuas en Œ0; 1 con la norma
R1
que define kxk D 0 jx.t/j dt , que expresa
8̂ 1 1
ˆ 0 para 0  t  2 n
<
n 1 1 1
xn .t/ D nt 2
C 1 para 2 n
t  2
ˆ

1 para t  12 :

Su gráfica es la de la figura A.5. Este espacio no es C Œ0; 1 pues la norma es diferente.


526 j Apéndice A

Cada elemento de la sucesión es una función continua del espacio X . La sucesión es de Cauchy pues kxn xm k D
1
2
j1=n 1=mj ! 0. Sin embargo, es obvio que no converge a ninguna función continua. El espacio X en incompleto.

Figura A.5: Gráfica de sucesión de Cauchy que no converge a una función continua

Ejemplo A.11 También es fácil ver que en C Œ0; 1 la sucesión de funciones cuyas gráficas son las de la figura A.6 es
una sucesión de Cauchy para cualquier norma k  kp , pero no tiene límite en C Œ0; 1.
1
fn .x/ n
= =

0 1 x

= =
1
n
Figura A.6

Ejemplo A.12 El espacio normado C Œ0; 1 es un espacio de Banach. Para probar que es completo tendríamos que probar
que toda sucesión de Cauchy en él tiene límite. Supongamos que fxn g es una sucesión de Cauchy en C Œ0; 1. Para cada
t 2 Œ0; 1, jxn .t/ xm .t/j  kxn xm k ! 0 por lo que fxn g es una sucesión de Cauchy de números reales. Como el
conjunto de los números reales es completo existe un número real x.t/ al que converge la sucesión: xn .t/ ! x.t/. Las
funciones xn convergen en consecuencia punto a punto a la función x.
Ahora probemos que esta convergencia punto a punto en uniforme en t 2 Œ0; 1, es decir, dado un " > 0 existe un N
tal que jxn .t/ x.t/j < " para todo t 2 Œ0; 1 y n  N . Dado un " > 0 escogemos un N tal que kxn xm k < "=2 para
n; m > N . Entonces para n > N
jxn .t/ x.t/j  jxn .t/ xm .t/j C jxm .t/ x.t/j
 kxn xm k C jxm .t/ x.t/j:
Escogiendo un m suficientemente grande (que dependerá de t ), cada término del miembro de la derecha de la expresión
anterior se puede hacer menor que "=2 de tal manera que jxn .t/ x.t/j < " para n > N .
Queda por probar que la función x es continua y que la sucesión fxn g converge a x de acuerdo con la norma de C Œ0; 1.
Para probar la continuidad de x, fijamos " > 0. Para todo ı, t y m,
jx.t C ı/ x.t/j  jx.t C ı/ xn .t C ı/j C jxn .t C ı/ xn .t/j C jxn .t/ x.t/j:
A.2 Espacios vectoriales j 527

Como fxn g converge uniformemente a x, n se puede escoger de tal manera que los términos primero y último de esta
expresión se hagan menores que "=3 para todo ı. Como xn es continua, se puede escoger un ı que haga el segundo
término menor que "=3. Como consecuencia de ello, x es continua. La convergencia de xn a x en C Œ0; 1 se desprende
directamente de la convergencia uniforme.
Es bastante instructivo conciliar la completitud de C Œ0; 1 con el ejemplo A.10 en el que la sucesión de funciones era
de Cauchy pero no convergente con respecto a la norma que allí se definía. La diferencia es que, con respecto a la norma
de C Œ0; 1, la sucesión del ejemplo A.10 no es de Cauchy.
Los espacios `p , 1  p  1 y Lp , 1  p  1, son espacios de Banach.

A.2.1.2 Espacios con producto interior

Definición A.31 Sea E un espacio vectorial sobre un cuerpo K (R o C); una forma sesquilineal —vez y media
lineal— sobre E es una aplicación hji W E  E ! K que verifica (la barra designa complejo conjugado):
1) h˛u C ˇvjwi D ˛hujwi C ˇhvjwi y
2) huj˛v C ˇwi D ˛hujvi C ˇhujwi;
cualesquiera que sean u, v, w en E y ˛; ˇ en K . Si además se cumple que hujvi D hvjui, la forma se denomina
hermítica. Es claro que hujui es siempre un número real. Cuando se cumple que
u ¤ 0 H) hujui > 0 ;
se dice que la forma es definida positiva, denominándosela también producto escalar o producto interior. Una forma
sesquilineal sobre R es siempre una forma bilineal.

A.2.1.3 Espacios de Hilbert


Un espacio prehilbertiano —por David Hilbert, Prusia Oriental 1862-1943— es un espacio vectorial, sobre un cuerpo

Hilbert

K , dotado de una forma hermítica definida positiva. Todo espacio prehilbertiano es un espacio normado mediante
p
kvk D hvjvi :
En la demostración de que esta definición corresponde a la de una norma en E juega un papel importante la desigualdad
de Cauchy-Schwarz —por Augustin Louis Cauchy y Karl Hermann Amandus Schwarz, Prusia 1843-Alemania 1921—,
que tiene por expresión ˇ ˇ
ˇ ˇ
ˇhujviˇ  kuk  kvk :

Schwarz

Sean E y F dos espacios prehilbertianos sobre el cuerpo K ; si f W E ! F es una aplicación lineal, la aplicación
traspuesta de f es la aplicación f  W F ! E que cumple
hxjf  .y/i D hf .x/jyi ;
528 j Apéndice A

cualesquiera que sean los vectores x 2 E e y 2 F . Particularmente importante es el caso en que E D F : f  se dice
entonces que es el operador adjunto de f . Cuando un operador f de E cumple que f  D f se denomina operador
autoadjunto. En el caso de que E sea un espacio vectorial real, también se dice que f es un operador simétrico y cuando
es un espacio vectorial complejo, que f es un operador hermítico. Un operador simétrico cumple que
hxjf .y/i D hf .x/jyi;
mientras que uno hermítico, que
hxjf .y/i D hf .x/jyi:
Un operador f de E es unitario cuando es invertible y su inverso coincide con su adjunto. Es decir, si f  D f 1
.
Para un operador unitario se tiene que
hf .x/jf .y/i D hf  .f .x//jyi D hxjyi ;
de manera que kf .x/k D kxk. Por este motivo a los operadores unitarios también se les denomina operadores isomé-
tricos.
Definición A.32 Un espacio
p de Hilbert es un espacio prehilbertiano completo respecto de la norma asociada al
producto escalar k  k D h; i . Dicho de otra forma, un espacio prehilbertiano que con esta norma da un espacio de
Banach. Todo espacio de Hilbert es un espacio de Banach, pero el recíproco no es cierto.
El espacio euclídeo n-dimensional, expresado Rn o En , es un espacio de Hilbert de dimensión finita. Visto así, un
espacio de Hilbert sería la generalización de un espacio euclídeo, incluida la dimensión infinita. El producto escalar en
un espacio euclídeo es una forma bilineal. En particular, dados dos vectores en R2 de la forma u D Œa; bT y v D Œc; d T ,
su producto escalar viene dado por hu; vi D ac C bd . que se puede verificar que es una forma bilineal.
Dos vectores cuyo producto escalar es cero se denominan ortogonales; si sus k  k2 son la unidad se denominan
ortonormales. Para dos vectores ortogonales se tiene la identidad
ku C vk2 D kuk2 C kvk2 ;
que es una generalización del teorema de Pitágoras. En un espacio prehilbertiano el único vector ortogonal a todos los
vectores del espacio es el vector nulo; si este espacio es de dimensión finita es posible construir una base ortonormalizada.
En un espacio euclídeo n-dimensional el ángulo entre dos vectores x e y es
 T 
x y
 D arc cos ;
kxkkyk
donde
xT y
D
kxkkyk
cumple que 1    1, para cualesquiera x e y.
Dos vectores son ortogonales si x T y D 0 ( D =2;  D 0); alineados, si x T y D kxkkyk ( D 0;  D 1); opuestos,
si x T y D kxkkyk ( D ;  D 1). Forman un ángulo agudo si x T y > 0 ( < =2;  > 0) y un ángulo obtuso si
x T y < 0 ( > =2;  < 0).
Una familia cualquiera de vectores distintos del nulo y ortogonales dos a dos es una familia libre. Si M es un subes-
pacio de un espacio prehilbertiano E de dimensión finita, el subespacio ortogonal de M , M ? , es el subespacio formado
por todos los vectores ortogonales a los de M , siendo un subespacio suplementario de M ; es decir M ˚ M ? D E.
Cualquier x 2 E, por consiguiente, se puede expresar como x D a C b, con a 2 M y b 2 M ? .

A.2.1.3.1 Teorema de la proyección


Gran parte de las teorías de sistemas de ecuaciones y de optimización están basadas en unos pocos resultados simples
e intuitivos. Entre estos, quizás el más sencillo y usado sea el teorema de la proyección. Su aplicación en la teoría de
mínimos cuadrados lineales es fundamental. En un espacio Euclídeo ordinario de tres dimensiones determina que la
distancia más corta de un punto exterior a un plano a ese plano la proporciona la perpendicular al plano desde dicho
punto. La expresión formal de este teorema en espacios de Hilbert es la que sigue.
A.2 Espacios vectoriales j 529

Teorema A.9 Sea H un espacio de Hilbert y M un subespacio cerrado de H . Para todo vector x 2 H existe un único
vector m0 2 M tal que kx m0 k2  kx mk2 , para todo m 2 M . La condición necesaria y suficiente además para
que m0 2 M sea el vector mínimo único es que x m0 sea ortogonal a M .

Demostración. Primero probaremos que si m0 es un vector que minimiza kx mk, x m0 es ortogonal a M . Supon-
gamos para ello, por el contrario, que existe un m que no es ortogonal a x m0 ; sin pérdida de generalidad podemos
suponer que kmk D 1 y que hx m0 jmi D ı ¤ 0. Definamos el vector m1 2 M como m1 D m0 C ım. Tendremos
que

kx m1 k22 D kx m0 ımk22
D kx m0 k22 hx m0 jımi hımjx m0 i C jıj2
D kx m0 k22 jıj2 < kx m0 k22 :

De esta manera, si x m0 no es ortogonal a M , m0 no es el mínimo que decíamos.


Veamos ahora cómo, si x m0 es ortogonal al subespacio M , m0 es el único vector de M que minimiza kx mk2 .
En efecto, para todo m 2 M , el teorema de Pitágoras dice que

kx mk22 D kx m0 C m0 mk22 D kx m0 k22 C km0 mk22 :

Por lo tanto kx mk2 > kx m0 k2 para m ¤ m0 .


Demostraremos ahora la existencia de un m0 que minimiza kx mk2 . Si x 2 M , entonces m0 D x y todo estaría
probado como es obvio. Si x … M , definamos un ı D Kınfm2M kx mk2 ; lo que queremos es obtener un m0 2 M tal
que kx m0 k2 D ı.
A tal fin, sea fm.i/ g una sucesión de vectores en M tal que kx m.i/ k2 ! ı. Por la ley del paralelogramo, para u,
w 2 M , ju C wj2 C ju wj2 D 2juj2 C 2jwj2 , se tiene que
2 2 2 2
.j /
.m x/ C .x m.i/ / C .m.j / x/ .x m.i/ / 2 m.j / x C 2 x m.i/ :
2 2 2 2

Reordenando, se obtiene que


2
2 2 2 m.i/ C m.j /
.j / .i/ .i/
m m D2 m.j / x C2 x m 4 x :
2 2 2 2
2

Para todo i; j , el vector .m.i/ C m.j / /=2 está en M pues éste es un espacio vectorial (lineal). De la definición de ı se
deduce que kx .m.i/ C m.j / /=2k2  ı, por lo que
2 2 2
.j /
m m.i/  2 m.j / x C 2 x m.i/ 4ı 2 :
2 2 2

Como km.i/ xk22 ! ı 2 cuando i ! 1, km.j / m.i/ k22 ! 0 cuando i; j ! 1. Es decir, fm.i/ g es una sucesión de
Cauchy; como M es un subespacio cerrado, la sucesión fm.i/ g tiene un límite m0 en M y, debido a la continuidad de la
norma, kx m0 k2 ! ı.
El teorema de la proyección pone en evidencia que la solución del problema

minimizar ktx yk
t

es el vector proyección ortogonal de y sobre x. En la figura A.7, tx.

A.2.1.4 Espacios de Lebesgue y espacios de Sobolev


Los espacios de Lebesgue y Sobolev son dos casos importantes de espacios vectoriales de Hilbert. Una función f W R !
R tiene como derivada la función
df .x/ f .x C h/ f .x/
f 0 .x/ D D lKım ;
dx h!0 h
Como km.i/ xk22 ! ı 2 cuando i ! 1,rf .j /
km.x  m k2 ! 0 cuando i; j ! 1. Es decir, fm g es
.i/ 2
/d  0:
.i/

una sucesión de Cauchy; como MExercise


es un subespacio cerrado, la sucesión fm.i/ g tiene un límite m0 en

M y, debido a la continuidad de la norma,Sikx
rf .x m0 k/d D 0; entonces d T r 2 f .x  /d  0:
2 ! ı.

given two n-vectors


El teorema 6= 0, y pone en evidencia que la solución del problema
de laxproyección
Proposición 8.4 (Condiciones necesarias de segundo orden) Sea x  un punto interior de  y su-
póngase que también unminimizar
mínimo relativo
ktx yk de f W  ! R, f 2 C 2 . Entonces:
minimize (over t) t ktx − yk

es el vector proyección ortogonal de y sobre x: txrf
en.x / D 0:
la figura.
geometrically, tx is the projection of a vector Para
y ontodo
thed; r f .x  /d
T 2
lined through  0:x
0 and
530 j Apéndice A

Proposición 8.5 (Condiciones suficientes de segundo orden) Sea f 2 C 2 una función definida en
x interior. Supóngase además que:
una región en la cual x  es un punto
tx .x  / D 0:
rf
La matriz Hessiana r 2 f .x  / es definida positiva:
y
x  es entonces un mínimo relativo estricto de f .

0
9Figura
Conjuntos convexos
A.7: Solución de minimizar t ktx yk
8 Conjuntos convexos
Un conjunto C  Rn se dice convexo si y sólo si para todo par de puntos x1 ; x2 2 C todas las
Un conjunto C  R se dice convexo si y sólo si para todo par de puntos x1 ; x2 2 C todas las
n
supuesto ese límite existe.
Vectors Una función
combinaciones
f que es derivable
combinaciones
de la forma x de la 1formaen un
D x
C .1 x /x
punto x D
1 C0.1 /x a ,es
concontinua
0 en
C .Esdecir,
1, a.
1-20estánLa
en derivada
C escuando
. Es decir, una para
D x 2 , con  1,2están en cuando para
medida de la rapidez, o tasa (gradiente), conpar
cada
cada par de puntos la de
del que cambia
puntos
conjunto el todos
valorlos
del conjunto
convexo, depuntos
dichade
convexo, función
todos según
los puntos
la recta que decambie
los une laestán
recta el
enque valor deestán
los une
el conjunto. su variable
en el conjunto.
independiente.
Por otro lado, si f W C ! C, se define la integral definida de esta función en el intervalo Œa; b,
l b
I.f / D f .x/ dx;
a
Conjunto convexo Conjunto no convexo
como el límite de las sumas de Riemann —por Georg Friedrich Bernhard Riemann, Alemania 1826-1866—
La expresión x D x1 C .1 /x2 , 0    1, define la combinación convexa de x1 y x2 . Si
0 <  < 1, es decir  2 .0; 1/,xla D
La expresión combinación
x1 C .1se denomina
/x2 , 0 estrictamente
   1, defineconvexa.
la combinación convexa de x1 y x2 . Si
El concepto
0<de combinación
< 1, es decirconvexa se 1/,
 2 .0; puede generalizar a cualquier
la combinación número
se denomina finito de puntos
estrictamente de
convexa.
la siguiente manera:
Riemann
Xp
25
xD i xi ;
iD1

donde
p
X
i D 1; i  0; i D 1; : : : ; p:
P
Rn D niD1 .xiC1 xi /f .ti /; x1 D a; xnC1 D b; xi  ti  xi C1 ; cuando la partición en subintervalos nse hace muy
i D1

El conjunto intersección de todos los conjuntos convexos que contienen a un subconjunto S  R


fina. se llama envoltura convexa de S y se designa por conv.S /.
La integración, proceso inverso a la derivación, se basa en la idea de sumar todas las partes constituyentes de un todo.
23
Definición A.33 Un espacio de Lebesgue es el espacio vectorial de las funciones al cuadrado integrables en   Rn ,
es decir,  ˇZ 
ˇ
L ./ D f W  ! R ˇˇ jf j2 < 1 :
2


El número 2 se refiere a la potencia del integrando.


Fue formulado por el matemático francés, por Henrí Léon Lebesgue, Francia 1875-1941.

Lebesgue

Esta definición requiere la introducción de la integral de Lebesgue que extiende el concepto de integral de Riemann a
clases o familias de funciones más amplias —por ejemplo, sucesiones de funciones, definidas en espacios más abstractos
que R o Rn , con más discontinuidades, etc.— y donde, en general, se pueda saber cómo y cuándo es posible tomar límites
bajo el signo de la integral. La forma tradicional de explicitar gráficamente cómo se obtiene la integral de Riemann frente
a la de Lebesgue se ve en la figura A.8. En pocas palabras, la diferencia entre ambas integrales es que para la integral de
Riemann interesan los valores que toma la función que está siendo integrada, mientras que en la integral de Lebesgue
importa más el tamaño de subconjuntos en el dominio del integrando.
También habría que definir el concepto de métrica, tamaño o medida de Lebesgue —una forma sistemática de asignar
un número (no negativo) a cada subconjunto de un conjunto— y el espacio de Lebesgue.
A.2 Espacios vectoriales j 531

Figura A.8: Integración de Riemann (izquierda-azul) e integración de Lebesgue (derecha-rojo)

R R
Simplificadamente, si  f .x/ dx es la integral de Lebesgue de f .x/ y se define la norma kf kLp ./ D .  f p dx/1=p ,
para 1  p < 1, los espacios de Lebesgue son
˚
Lp ./ D f .x/ W kf kLp ./ < 1 :
El requerir que las funciones sean integrables no supone ninguna limitación importante en la práctica ingenieril o cien-
tífica pues como hemos aprendido durante mucho tiempo toda función “continua a trozos”, es decir con a lo sumo una
cantidad finita o numerable de discontinuidades, es integrable. El 99,99 % de las funciones que se utilizan en ingeniería,
economía y ciencias sociales en general son integrables. R
El espacio vectorial L2 ./ dotado del producto interior hf; gi D  f .x/g.x/dx es un espacio de Hilbert.
En el espacio C Œ0; 1 de funciones continuas del intervalo Œ0; 1 en C, son normas las dadas por
"Z #1=p
1
kf kp D jf .t/jp dt :
0

También en una norma la dada por


kf k1 D mKax jf .t/j :
t 2Œ0;1

Insistimos en la idea de que la norma k  k2 es la norma euclídea en Rn , sustituyendo el sumatorio por una integral
(recordemos que esta es la forma de pasar de lo discreto a lo continuo). Esto hace que los espacios de Lebesgue L2 sean
“buenos” y se caractericen porque son los únicos espacios vectoriales infinito dimensionales en los que siguen siendo
válidos muchos de los aspectos de nuestra intuición espacial y geométrica habitual.
Desde el punto de vista físico, cuando f .t/ represente algún tipo de “señal”, la norma kf k2 representará su energía,
por lo que la condición f 2 L2 se interpretará como que la energía de f sea finita. En concreto, si f .t/ representa la
tensión —voltage– de una onda electromagnética como función del tiempo, f 2 .t/ es, salvo producto por una constante,
Rb
su potencia, por lo que a f 2 .t/ dt será la energía de la onda en el intervalo temporal Œa; b. Pedir que f pertenezca
a L2 Œa; b equivale a pedir que f no sea demasiado discontinua (sea integrable en algún sentido) y que su energía sea
finita en Œa; b.
Los espacios de funciones Lp .Œ0; 1/, p > 1, con la norma
Z 1 1=p
kxk D jx.t/jp dt ; donde x.t/ 2 L2 .Œ0; 1/;
0

en los que si y.t/ 2 Lp .Œ0; 1/ se cumple que


Z 1 1=p
p
jx.t/j dt <1
0

son también espacios normados. Casos particulares son L1 .Œa; b/ de funciones cuyo valor absoluto es integrable en
Œa; b y L2 .Œa; b/ de funciones al cuadrado integrables en Œa; b.
En particular, el conjunto de todas las funciones tales que
Z
f 2 .x/ dx < 1

con la distancia entre dos de ellas f1 .x/ y f2 .x/ definida por


sZ
.f1 .x/ f2 .x//2 dx
532 j Apéndice A

es el espacio métrico L2 .R/.


El producto escalar (producto interior) en un espacio de Lebesgue L2 ./ es
Z
u  v D hujvi D uv dx:


Definición A.34 Un espacio de Sobolev es un espacio vectorial de funciones dotado de una norma que es combinación
de normas Lp de la función y de sus derivadas hasta un orden dado. Formalmente para dos dimensiones es
 ˇ 
ˇ @u @u
W 1;2 ./ D u 2 L2 ./ ˇˇ ; 2 L2 ./ :
@x1 @x2
El número 1 se refiere al orden de las derivadas parciales y el 2 que las mismas deben pertenecer a L2 ./.
Fue formulado en los trabajos de por Sergéi Lvóvich Sobolév, Rusia 1908-1989.

Sobolev

Las funciones que pertenecen a W 1;2 ./ no tienen que ser derivables en todos los puntos; es suficiente que sean
continuas con derivadas parciales continuas por tramos en el dominio de definición y que satisfagan las condiciones
apuntadas. Esto se explicita en que las derivadas de este espacio se entienden en un sentido débil que hagan que el
espacio sea completo —si toda sucesión de Cauchy en él tiene límite— y por lo tanto sea un espacio de Banach. En
sentido débil no es sino una generalización del concepto de derivada a funciones no necesariamente derivables pero si
integrables localmente en el sentido de Lebesgue en un dominio dado  de Lp ./.
La norma correspondiente de este espacio completo es
Z Z 1=2 Z ˇ ˇ Z ˇ ˇ Z !1=2
ˇ @u ˇ2 ˇ @u ˇ2
kukW 1;2 ./D 2
jruj C juj2
D ˇ ˇC ˇ ˇ C juj 2
;
ˇ ˇ ˇ ˇ
   @x1  @x2 

denominada en ingeniería norma de energía. Las funciones que usan esta forma finita son funciones de energía finita.
Intuitivamente, un espacio de Sobolev es un espacio de funciones con derivadas de orden suficiente para un dominio de
aplicación determinado y equipado con una norma que mida adecuadamente tamaño y regularidad en las funciones.
El producto escalar (producto interior) en un espacio de Sobolev W 1;2 ./ es
Z Z
u  v D hujvi D uv dx C ru  rv dx:
 

A.3 Matrices
Definición A.35 Una matriz es una formación rectangular de numeros reales o complejos ordenados en m filas y n
columnas 2 3
a11 a12    a1n
6 a21 a22    a2n 7
6 : :: : : :: 7 :
4 :: : : : 5
am1 am2    amn
El conjunto de todas las matrices de números reales o complejos se designa, respectivamente, Rmn y Cmn . Si m D n
la matriz es cuadrada y de orden n. Un vector columna es también una matriz Rm1 , que se escribe Rm .
Las matrices de m filas y n columnas con coeficientes en el cuerpo R o C forman un espacio vectorial, Rmn o Cmn ,
sobre dichos cuerpos.
A.3 Matrices j 533

Todo lo que sigue en esta sección es material bastante estándar en libros de texto y monografías al respecto. En el
apartado de referencias hay un buen número de ellas sobre matrices y álgebra matricial.
El primero en usar el término matriz en matemáticas fue James Joseph Sylvester, Reino Unido 1814-1897. Arthur
Cayley, Reino Unido 1821-1895, contribuyó de forma decisiva a que A D .aij / se concibiese como una cantidad
algebraica única.

Silvester Cayley

Si en álgebra lineal E y F son dos espacios vectoriales de dimensiones finitas n y m sobre el mismo cuerpo K. Una
aplicación lineal g W E ! F , g 2 L.E; F /, está caracterizada o representada en dos bases fe1 ; e2 ; : : : ; en g de E y
ff1 ; f2 ; : : : ; fm g de F por una tabla de coeficientes, matriz asociada, de m filas y n columnas:
2 3
a11    a1n
: :
A D 4 :: : : : :: 5 2 K mn :
am1    amn

Los coeficientes aij están definidos por


m
X
g.ej / D aij fi ; 1  j  n:
i D1

El vector columna j -ésimo 2 3


a1j
6 a2j 7
4 :: 5
:
amj
representa el vector g.ej / en la base .fi /. A partir de la matriz A se pueden calcular los coeficientes y1 ; y2 ; : : : ; ym del
vector y D g.x/ en la base .fi /, conociendo los coeficiente x1 ; x2 ; : : : ; xn en la base .ej /. En efecto:
2 3 2 3 2 3 2 3
y1 a11 a12 a1n
6 y2 7 6 a21 7 6 a22 7 6 a2n 7
4 :: 5 D x1 4 :: 5 C x2 4 :: 5 C    C xn 4 :: 5 :
: : : :
ym am1 am2 amn

Expresión que también se puede escribir de la siguiente forma:


n
X
yD xi a i ;
iD1

donde ai es el vector columna i -ésimo de la matriz A. Así pues, si se fijan dos bases en E y F , cada aplicación
lineal, g W E ! F , queda unívocamente representada por una matriz. Recíprocamente, toda matriz en K mn define
unívocamente una aplicación lineal entre dos espacios E y F de dimensiones n y m en los que se han fijado dos bases.
En particular, se pueden identificar las matrices m  n con las aplicaciones lineales de K n en K m .
Las matrices de m filas y n columnas con coeficientes en el cuerpo K forman un espacio vectorial, K mn , sobre dicho
cuerpo K.
Si E y F son dos espacios de dimensión finita dotados de un producto escalar y la aplicación ˛ 2 L.E; F / se
representa en dos bases ortonormalizadas mediante una matriz A, la aplicación ˛ T 2 L.F; E/, traspuesta de ˛, viene
representada por la matriz A T , traspuesta de A.
534 j Apéndice A

Definición A.36 El núcleo y la imagen de una matriz A 2 K mn , ker.A/ y Im.A/, respectivamente, se definen como
los subespacios de K n y K m que son el núcleo y la imagen de la aplicación lineal asociada:
%
ker.A/ D fx 2 K n W Ax D 0g
:
Im.A/ D fy 2 K m W y D Ax; x 2 K n g A2K mn
Dicho de otra forma, la imagen de una matriz es el subespacio generado por los vectores columna de la matriz; los
vectores fila también generan un subespacio que no es otro que la imagen de A T .
Para una matriz A 2 Rmn se cumple que:

ker A T D .Im.A//?

Im A T D .ker.A//?
?
ker.A/ D Im A T
?
Im.A/ D ker A T :

De acuerdo con esto, si A 2 Rmn , se cumple que ,QQHU 3URGXFW /HQJWK DQG 2UWKRJRQDOLW\ 
T

ker .A/ ˚
7KH QH[W WKHRUHP DQG ([HUFLVH Im A
YHULI\ D RnPDGH
WKH FODLPV : LQ 6HFWLRQ FRQFHUQLQJ
WKH VXEVSDFHV VKRZQ LQ )LJ $OVR VHH ([HUFLVH LQ 6HFWLRQ
En la figura A.9 se muestran estos subespacios.

0 Ke T 0
rA rA
Ke
T Im
A A
Im

'*(63&  7KH IXQGDPHQWDO VXEVSDFHV GHWHUPLQHG mn


FiguraE\
A.9:
DQ Subespacios
m  n PDWUL[fundamentales
A determinados por A

Definición A.37 El rango de una matriz es la dimensión (máximo número de vectores linealmente independientes) de
5 ) &su0subespacio
3 & .  imagen:
/HW A EH DQ m  n PDWUL[ 7KH RUWKRJRQDO FRPSOHPHQW RI WKH URZ VSDFH RI A LV
WKH QXOO VSDFH RI A DQG WKHrango.A/ dim.Im.A//:RI WKH FROXPQ VSDFH RI A LV
D FRPSOHPHQW
RUWKRJRQDO
QXOO VSDFH RI AT
WKHmn
Una matriz A 2 K se dice de rango completo si rango.A/ D mKın.m; n/. Una matriz cuadrada A 2 K nn se
denomina singular si rango.A/ <.n;5RZ A/? Dsi 1XO
regular rango.A/
A DQG A/? D
También
D n..&RO se1XO AT que rango.A/ D rango.A T /.
cumple
La aplicación asociada a una matriz A 2 Rmn es suprayectiva cuando rango.A/ D m. Para una matriz A 2 K mn
se cumple que 1300' 7KH URZ²FROXPQ UXOH IRU FRPSXWLQJ A[ VKRZV WKDW LI [ LV LQ 1XO A WKHQ [ LV
RUWKRJRQDO WR HDFK URZ RI Adim.ker.A// C rango.A/
ZLWK WKH URZV WUHDWHG DVDYHFWRUV
n; LQ Rn / 6LQFH WKH URZV
RI A VSDQ WKH URZ VSDFH [ LV RUWKRJRQDO WR 5RZ A &RQYHUVHO\ LI [ LV RUWKRJRQDO WR
o, alternativamente,
5RZdim.ker.A// D n rango.A/.
A WKHQ [ LV FHUWDLQO\ RUWKRJRQDOLa WRaplicación
HDFK URZ RI lineal
A DQG asociada
KHQFH Aa [ADes, por tanto,
7KLV inyectiva, si y sólo
SURYHV
T T
si rango.A/ D n.WKHPor otro
ÀUVW lado dim.ker.A
VWDWHPHQW // C rango.A
RI WKH WKHRUHP /D
6LQFH WKLV m.
VWDWHPHQW LV WUXH IRU DQ\ PDWUL[ LW LV WUXH
IRU AT 7KDW LV WKH RUWKRJRQDO FRPSOHPHQW RI WKH URZ VSDFH RI AT LV WKH QXOO VSDFH RI
Definición A.38 TEl producto exterior uvT de un vector columna n T 1 por un vector fila 1  n es una matriz A nn
A 7KLV SURYHV WKH VHFRQG VWDWHPHQW EHFDXVH 5RZ A D &RO A
de rango 1, 2 3
u1 v1 u1 v2    u1 vn
6u2 v1 u2 v2    u2 vn 7
6 7
2 A D 3uvT D 6 :: :: 7 :
$QJOHV LQ R DQG R 2SWLRQDO 4 : : 5
u v u v2    un vn
,I X DQG Y DUH QRQ]HUR YHFWRUV LQ HLWKHU R2nRU1R3n WKHQ WKHUH LV D QLFH FRQQHFWLRQ EHWZHHQ
WKHLU LQQHU SURGXFW DQG WKH DQJOH # EHWZHHQ WKH WZR OLQH VHJPHQWV IURP WKH RULJLQ WR WKH
SRLQWV LGHQWLÀHG ZLWK X DQG Y 7KH IRUPXOD LV

X  Y D kXk kYk FRV #

7R YHULI\ WKLV IRUPXOD IRU YHFWRUV LQ R2 FRQVLGHU WKH WULDQJOH VKRZQ LQ )LJ ZLWK VLGHV
RI OHQJWKV kXk kYk DQG kX Yk %\ WKH ODZ RI FRVLQHV
2 2 2
A.3 Matrices j 535

A.3.1 Normas de matrices


Aun cuando en gran parte de lo que sigue nos limitaremos a matrices cuadradas, la mayor parte de las definiciones y
resultados son extensibles a matrices rectangulares; también supondremos que las matrices son reales.
Las matrices cuadradas de orden n forman un espacio vectorial con un producto, esto es, un álgebra.
Definición A.39 Una norma matricial sobre Rmn es una aplicación k  k W Rmn ! R que cumple:
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
1 1
se satisfacen 1), 2) y 3); sin embargo, tomando A D b D 11 es fácil ver que kABk D 2 > kAk  kBk D 1, por lo
que no se cumple 4).
Definición A.40 La norma de Frobenius es la dada por
X
kAk2F D 2
aij D traza.A T A/;
1i;j n
Pn
donde la traza de una matriz A de orden n es iD1 ai i . Esta norma cumple que kABkF  kAkF  kBkF .
Toma su nombre de Ferdinand Georg Frobenius, Alemania 1849-1917.

Frobenius

Es fácil ver que esta norma deriva del producto escalar


m X
X n
T
hAjBi D traza.A B/ D aij bij ;
iD1 j D1

para A mn y B mn , que configura al espacio de las matrices m  n como un espacio prehilbertiano. El producto escalar
en el espacio Sn de las matrices simétricas n  n está dado por
n X
X n n
X X
hX jY i D traza.X Y / D xij yij D ai i bi i C 2 aij bij :
iD1 j D1 i D1 i <j

Definición A.41 Una norma matricial k  k sobre Rmn se dice consistente o compatible con una norma vectorial k  k0
sobre Rn cuando para cada matriz A y cada vector x se cumple que
kAxk0  kAk  kxk0 :

Por ejemplo, la norma de Frobenius y la norma euclídea de Rn son consistentes pues

kAxk2  kAkF  kxk2 :


536 j Apéndice A

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 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.


Definición A.42 La norma matricial inducida por la norma euclídea de Rn es la norma espectral:
" #1=2 q
x T A T Ax
kAk2 D sup Tx
D max .A T A/ D max .A/;
0¤x2R n x
donde  designa un valor propio de A y  un valor singular.
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 . En particular, para la norma espectral y la norma
de Frobenius, se cumple que p
kAk2  kAkF  nkAk2 :
También que kABkF  kAkF  kBk2 y kABkF  kAk2  kBkF . Como casos particulares, kIk2 D 1 y para una
matriz diagonal, kDk2 D mKaxi jdi j.
Las normas matriciales inducidas más usadas son
m
X
kAk1 D mKax jaij j y
1j n
i D1
X n
kAk1 D mKax jaij j :
1im
j D1

Ejemplo A.13 El efecto que produce aplicar la transformación lineal basada en la matriz
 
12
AD
02

sobre la bola unidad, explicado a partir de las normas k  k1 , k  k2 y k  k1 en R2 , se representa en la figura A.10.
La aplicación transforma el vector e1 D Œ1; 0T en sí mismo y e2 D Œ0; 1T en Œ2; 2T . Con la norma 1, el vector
unitario que más se amplifica al aplicarle la transformación es Œ0; 1T (o Œ0; 1T ), que pasa a ser Œ2; 2T . Su factor de
amplificación, en términos de la norma 1, es 4.
Con la norma 2, el vector unitario que más se amplifica es el que se representa en la figura con una recta discontinua. El
factor de amplificación es 2,9208.
Para la norma 1, igualmente, el vector unitario que más se amplifica es el que se representa también con la recta
discontinua: Œ1; 1T , que pasa a transformarse en Œ3; 2T . El factor de amplificación correspondiente es en este caso 3 ya
que
Œ1; 1T D 1
1

Œ3; 2T D 3:
1
Además de las normas vectoriales y matriciales ya presentadas, otra norma vectorial muy utilizada es
p p

kxkA D A 1=2 x D hAxjxi D x T Ax;
2

denominada norma A o norma de energía —pues suele corresponder con la energía física de ciertos sistemas— del
vector x, para una matriz A simétrica y definida positiva. Al resultado de hxjyiA D hAxjyi se le denomina producto
interior de A o producto escalar de energía. La matriz A 1=2 es la única matriz definida positiva solución de la ecuación
matricial X 2 D X  X D A.
A.3 Matrices j 537

[2, 2]T

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

A2 ≈ 2,9208
norma
norma22

A∞ = 3
norma1
norma ∞

– La aplicación transforma el vector e 1 D Œ1; 0T en sí mismo y


Figura A.10: EfectoT de una aplicación lineal sobre la bola unidad para diferentes normas
e 2 D Œ0; 1 en Œ2; 2 . T
39/63

A.3.2 Matrices interesantes


a b c 1 2 3

Definición A.43 Una Q 2 Rmn es una matriz ortogonal si verifica que QT Q D I; es decir, cuando sus vectores
d e f g 9 4 6 5

columna son ortogonales dos a dos y de norma euclídea unitaria (ortonormales). Si Q 2 Rnn es ortogonal, se cumple
h i j 10 8 7

que QQT D QT Q D I.
Una matriz ortogonal no modifica ni los ángulos ni las normas de los vectores a los que se aplica la transformación
que representan: .Qx/T .Qy/ D x T QT Qy D x T y. Si y D x, jjQxjj2 D jjxjj2 .
Las matrices ortogonales Q 2 Rmn verifican:
9 9
kQk2 D1 > kQk2 D1 >
>
= >
=
kQkF D n1=2 kQkF D m1=2
si m  n y si m  n:
kQAk2 D kAk2 >
> kAQk2 D kAk2 >
>
; kAQkF D kAkF ;
kQAkF D kAkF

La extensión de las matrices ortogonales al campo complejo son las matrices unitarias.
Definición A.44 Una matriz U 2 Cnn , cuya inversa es su compleja conjugada, U H U D U U H D I, es una matriz
unitaria
Todos los valores propios de las matrices unitarias tienen módulo unidad. Como las ortogonales, una matriz unitaria
no modifica ni los ángulos ni las normas, .U x/H .U y/ D x H U H U y D x H y. Si y D x, jjU xjj2 D jjxjj2 .
Definición A.45 Una matriz de permutación es una matriz cuadrada cuyas columnas están formadas por las de la
matriz unidad permutadas. Una matriz de permutación es una matriz ortogonal.

Definición A.46 Una matriz se dice simétrica si se verifica que A D A T . Para una matriz cualquiera A 2 Rmn ,
la matriz A T A es simétrica. Si A 2 Cnn es igual a su traspuesta conjugada, A D B D A H , bij D aNj i , se dice
hermítica. El conjunto de las matrices simétricas n  n se designa mediante Sn .

Definición A.47 Una matriz A 2 Rnn se dice definida positiva si es simétrica y x T Ax > 0 para todo vector x ¤ 0.
Se designa como A  0. De forma similar se definen matrices semidefinida positiva, A  0, definida negativa,
A  0 y semidefinida negativa, A  0, si x T Ax  0, < 0 y  0, respectivamente, para todo vector x ¤ 0. La
538 j Apéndice A

matriz A se dice indefinida si x T Ax es positivo para algún x y negativo para otros.


También A 2 Cnn se dice definida positiva si es hermítica y para todo x 2 Cn ; x ¤ 0, se cumple que x  Ax > 0.
El conjunto de matrices n  n definidas positivas se designa por SnCC y el de semidefinidas positivas, o nonegativas
definidas, por SnC .
Si A 2 Rnn es simétrica y definida positiva se puede descomponer de la formaA D QDQT donde Q es una
1 1
matriz ortogonal y D, diagonal, tiene todos sus coeficientes positivos por lo que A 2 D QD 2 QT satisfaciéndose que
1 1
A 2 A 2 D A.
Definición A.48 Se dice que una matriz A 2 Cnn de coeficientes aij es de diagonal dominante por filas cuando
cumple que
n
X
jai i j  jaij j; i D 1; : : : ; n:
j D1;j ¤i

Análogamente, se dice diagonal dominante por columnas si


Xn
jai i j  jaj i j; i D 1; : : : ; n:
j D1;j ¤i

Si las desigualdades se verifican estrictamente la matriz A se denomina diagonal estrictamente dominante.

Lema A.10 Para que una matriz simétrica sea definida positiva es necesario que todos los coeficientes de la diagonal
principal sean positivos.

Lema A.11 Para que una matriz simétrica A sea definida positiva es necesario que el coeficiente de mayor valor
absoluto esté en la diagonal principal. Más concretamente, mKaxi ¤j jaij j < mKaxk akk :

Lema A.12 Si en cada fila de una matriz simétrica A el coeficiente de la diagonal principal es mayor que la suma de
los valores absolutos de todos los demás coeficientes de la fila, es decir, si
Xn
akk > jakj j k D 1; : : : ; n;
j D1
j ¤k

A es definida positiva.
Es importante
h 3 2 2 i destacar que este último criterio define una condición suficiente, no necesaria. En efecto, la matriz
Q D 2 3 2 es definida positiva pues x T Qx D x12 C x22 C x32 C 2.x1 C x2 C x3 /2 , cualquiera que sea x ¤ 0, es
223
siempre positiva. Esa matriz, sin embargo, no satisface el lema A.3.2.
Definición A.49 Una matriz de Vandermonde es una matriz que presenta una progresión geométrica en cada fila;
como esta: 2 3
1 ˛1 ˛12 : : : ˛1n 1
6 1 ˛2 ˛ 2 : : : ˛ n 1 7
6 2 2 7
V D6: : : : : 7:
:
4: : :: : : : :: 5
1 ˛n ˛n2 : : : ˛nn 1

Su nombre se debe a Alexandre-Théophile Vandermonde, Francia 1735-1796.


Definición A.50 Una matriz de Hankel es una matriz cuadrada con todas sus diagonales de derecha a izquierda
paralelas numéricamente. Es decir, tiene la forma 2 3
a b c d e
6b c d e f 7
H D6 7
4c d e f g 5 :
d e f g h
e f g h i
A.3 Matrices j 539

El primero que formuló esta matriz fue Hermann Hankel, Alemania 1839-1873.

Hankel

Definición A.51 Una matriz de Hessenberg es una


Una matriz triangular
matriz de Hessenberg excepto
—por Karl por una
Adolf Hessenberg, subdiagonal
Alemania adyacente
1904-1959— es una matriz triangulara
ex-la
diagonal principal. cepto por una subdiagonal adyacente a la diagonal principal.

Cualquier matriz se puede reducir a la forma de Hessenberg mediante trans-



❅ formaciones ortogonales de Householder o Givens. Si la matriz original es si-
❅ métrica, al reducirla a la forma de Hessenberg se obtendrá una tridiagonal.

❅ Se denomina proyector o matriz de proyección a una matriz P 2 Rnn que
❅ verifica que P 2 D P. Si P además es simétrica, se denomina proyector ortogo-
0 ❅

nal o matriz de proyección ortogonal. Si, en este último caso, F es el subespacio
❅ imagen de la matriz P (el mismo que el de la matriz P T ), Px define la proyec-
ción ortogonal del vector x sobre F .
Se denomina proyector suplementario de P al proyector S D I P. Si F D Im.P/ y G D ker.P/,
Fue formulada por primera vez por Karl Adolf Hessenberg, Alemania 1904-1959.
entonces F D ker.S/ y G D Im.S/.
En el caso de un proyector ortogonal P en el que F D Im.P/, se tiene que Rn D F ˚ F ? , verificándose
que kPxk2  kxk2 y que
kx Pxk2 D mKın kx yk2 :
y2Im.P /DF

4.3 ValoresHessenberg
propios, valores singulares y formas cuadráticas
4.3.1 Valores propios
Si A es una matriz cuadrada de orden n y coeficientes en K (R o C), un vector no nulo u 2 Kn se denomina
vector propio de A si para algún  2 K se cumple que
Au D u :
A este  se le denomina valor propio o autovalor de la matriz A. El conjunto de los valores propios de una ma-
Cualquier matriz se puede reducir a la forma de Hessenberg mediante transformaciones ortogonales de Householder
triz A se denomina espectro de A, designándose por ƒ.A/. El radio espectral, .A/, se define de la siguiente
manera:
o Givens. Si la matriz original es simétrica, al reducirla a la forma de Hessenberg se1in
obtendrá una tridiagonal. .A/ D mKax ji j:

Para que un número  sea valor propio de A, el sistema lineal y homogéneo de ecuaciones dado por .I
Definición A.52 Se denomina proyector o matriz A/x de Dproyección a una
0 debe tener soluciones matriz
distintas P x2D R
de la trivial
nn
que averifica
0. Esto equivale que que P 2 D P.
Si P además es simétrica, se denomina proyector ortogonal o matriz de proyección det.A I/ D 0ortogonal.
: Si, en este último
caso, F es el subespacio imagen de la matriz P (el Esta
mismo que elpolinómica
es una ecuación de la matriz
de grado n enPTque), sePx define
denomina la característica,
ecuación proyección ortogonal
o polinomio carac-
terístico, de la matriz A. La ecuación característica admite la raíz  D 0 si y sólo si det.A/ D 0. Una matriz es
del vector x sobre F . invertible, por tanto, si y sólo si no admite al cero como vector propio.
Para que exista una solución distinta de la trivial x D 0, el valor propio  deberá ser raíz del polinomio
característico de grado n asociado a A, esto es det.A I/ D 0. Lo que es igual a n C g1 n 1 C g2 n 2 C
Definición A.53 Se denomina proyector suplementario de P al proyector S D I P. Si F D Im.P/ y G D ker.P/,
   C gn D 0:
El Teorema fundamental del álgebra establece que cada ecuación polinómica de grado n, con coeficientes
entonces F D ker.S / y G D Im.S /. complejos, tiene n raíces en el cuerpo de los complejos.
La multiplicidad algebraica del valor propio  de A es la multiplicidad de la raíz correspondiente del polino-
n de  es el número de ? vectores propios linealmente
En el caso de un proyector ortogonal P en el que F D Im.P/, se tiene que R D F ˚ F , verificándose que
mio característico asociado a A. La multiplicidad geométrica
independientes que se corresponden con . La multiplicidad geométrica de un valor propio es menor o igual
kPxk2  kxk2 y que que su multiplicidad algebraica.
Por ejemplo, si A D I,  D 1 es un valor propio con multiplicidad algebraica y geométrica n. El polinomio
kx Pxk D mKın kx yk : 2característico de A es p.z/ D .z 1/n y ei 22 C n , i D 1; : : : ; n, sus vectores propios. Si el valor propio  tiene
Im P y2
una multiplicidad . geométrica
/DF menor que la algebraica, se dice defectuoso. Se dice que una matriz es defectuosa
si tiene al menos un valor propio defectuoso. La matriz
2 3

A.3.3 Valores propios, valores singulares y formas cuadráticas


210
40 2 15
002

A.3.3.1 Valores propios 16

Definición A.54 Si A es una matriz cuadrada de orden n y coeficientes en K (R o C), un vector no nulo u 2 K n se
denomina vector propio de A si para algún  2 K se cumple que
Au D u :
A este  se le denomina valor propio o autovalor de la matriz A. El conjunto de los valores propios de una matriz A
se denomina espectro de A, designándose por ƒ.A/. El radio espectral, .A/, se define de la siguiente manera:
.A/ D mKax ji j:
1in
540 j Apéndice A

Para que un número  sea valor propio de A, el sistema lineal y homogéneo de ecuaciones dado por .I A/x D 0
debe tener soluciones distintas de la trivial x D 0. Esto equivale a que
det.A I/ D 0 :
Esta es una ecuación polinómica de grado n en  que se denomina ecuación característica, o polinomio característico,
de la matriz A. La ecuación característica admite la raíz  D 0 si y sólo si det.A/ D 0. Una matriz es invertible, por
tanto, si y sólo si no admite al cero como vector propio.
Para que exista una solución distinta de la trivial x D 0, el valor propio  deberá ser raíz del polinomio característico
de grado n asociado a A, esto es det.A I/ D 0. Lo que es igual a n C g1 n 1 C g2 n 2 C    C gn D 0:
El Teorema fundamental del álgebra establece que cada ecuación polinómica de grado n, con coeficientes complejos,
tiene n raíces en el cuerpo de los complejos.
La multiplicidad algebraica del valor propio  de A es la multiplicidad de la raíz correspondiente del polinomio
característico asociado a A. La multiplicidad geométrica de  es el número de vectores propios linealmente indepen-
dientes que se corresponden con . La multiplicidad geométrica de un valor propio es menor o igual que su multiplicidad
algebraica.
Por ejemplo, si A D I,  D 1 es un valor propio con multiplicidad algebraica y geométrica n. El polinomio caracterís-
tico de A es p.z/ D .z 1/n y ei 2 Cn , i D 1; : : : ; n, sus vectores propios. Si el valor propio  tiene una multiplicidad
geométrica menor que la algebraica,
h 2 1 0 ise dice defectuoso. Se dice que una matriz es defectuosa si tiene al menos un valor
propio defectuoso. La matriz 0 2 1 tiene un valor propio, 2, de multiplicidad algebraica 3 y multiplicidad geométrica
002
1; u D Œ100T . Si una matriz A 2 Cnn no es defectuosa, dispone de un conjunto de n vectores propios linealmente
independientes.
Un resultado interesante debido a dos matemáticos del siglo XIX, Arthur Cayley, Reino Unido 1821-2895, y William
Rowan Hamilton, Irlanda 1805-1865,

Hamilton

dice que cualquier matriz A 2 Cnn satisface su propia ecuación característica. Es decir,
A n C g1 A n 1
C g2 A n 2
C    C gn I D 0:
Si A es invertible, como consecuencia de ello,
1 1 n 1 g1 n 2 gn 1
A D A A  I:
gn gn gn
A partir del teorema de Cayley-Hamilton también es fácil
 comprobar que existe un polinomio p de grado máximo n 1
tal que A 1 D p.A/. Como ejemplo, la matriz 13 24 tiene como polinomio característico x 2 5x 2. El teorema de
Cayley-Hamilton dice que A 2 5A 2I D 0, lo cual se puede comprobar inmediatamente. La inversa de A se puede
obtener de esta ecuación a partir de A .A 5I/ D 2I. En efecto, A 1 D 12 .A 5I/.

Definición A.55 Para A 2 Cnn y 0 ¤ b 2 Cn1 , al subespacio


Kj .A; b/ D Genfb; Ab; : : : ; A j 1
bg
se le denomina subespacio de Krylov.
Estos subespacios deben su nombre y formulación al trabajo de Alekséi Nikoláyevich Krylov, Rusia 1863-1945.

Krylov
A.3 Matrices j 541

Igual que cualquier matriz tiene asociado un polinomio característico, cualquier polinomio tiene asociado una matriz
compañera.
Un polinomio a0 C a1 x C a2 x 2 C : : : C an x n se dice que es mónico si an D 1.
La matriz compañera de un polinomio mónico p.t/ D c0 C c1 t C    C cn 1 t n 1 C t n es
2 3
0 0 ::: 0 c0
61 0 : : : 0 c1 7
C .p/ D 6
40:: 1:: :: :: : 0:: c2:7
: : : : ::5
0 0 ::: 1 cn 1

Los valores propios de esta matriz C .p/ son las raíces del polinomio p.t/. El polinomio mínimo q.t/ de una matriz A
es el polinomio mónico único de grado mínimo tal que q.A/ D 0.
Una matriz real de orden n no tiene necesariamente valores propios reales pero, como consecuencia del teorema
fundamental del álgebra, cualquier matriz compleja tiene al menos un valor propio complejo. Su número máximo de
valores propios es n.
Proposición A.13 Al aplicársele a cualquier vector la transformación que representa A ese vector tiende a orientarse
en la dirección del vector propio dominante de A. Si aquel vector está en la dirección de alguno de los vectores propios
de A, se expande o contrae por un factor que determina el correspondiente valor propio.
 
La matriz A D 21 12 tiene como valores propios 3 y 1. Los vectores propios asociados son Œ1 1T y Œ 1 1T . El efecto
de aplicarla sobre distintos vectores se puede ver en la figura A.11: en magenta y azul (en grises con mayor o menor
intensidad) los vectores propios; otros en rojo que si se orientan. 5
Geometric interpretation of Eigenvectors

2 1
Figura A.11: Efecto de aplicársele
(a) a diversos vectores la transformación que representa la matriz A D
(b) 12
 
Siendo  un valor propio de una matriz el conjunto de soluciones 2 sistema
del 1
A,
Figure: Under the transformation matrix A = , thededirections
ecuaciones of
    1 2
1 .I A/x D 0 1
vectors parallel to v1 = (blue) and v2 = (purple) are preserved.
1 −1
es un subespacio de K n que se denomina subespacio propio asociado al valor propio , designándose con E . Si n es
la multiplicidad de  como raíz de la ecuación característica de A, se cumple que
5
diagram from wikipedia.org/wiki/Eigenvalues_and_eigenvectors
K. Bergen (ICME) dim.E / Applied
n : Linear Algebra 112 / 140

La intersección de subespacios propios correspondientes a valores propios distintos se reduce al subespacio nulo; esto
es  ¤  H) E \ E D ;. L
De este modo, la suma de subespacios propios es directa. Se cumple que 2ƒ.A/ E D K n si y sólo si para cada
 2 ƒ.A/, dim.E / D n ; en ese caso existe una base de K n formada toda ella por vectores propios de A.
542 j Apéndice A

Teorema A.14 Descomposición o triangularización de Schur. Para cualquier A 2 Cnn existe una matriz unitaria U
y una matriz triangular superior, T , tal que
AU D U T o U H AU D T :
Los valores propios de A son los coeficientes de la diagonal principal de R.
Este teorema es esencial para el estudio de los métodos y algoritmos numéricos para el cálculo y análisis de valores y
vectores propios. Debe su nombre a Issai Schur, Alemania 1875-1941.

Schur

Teorema A.15 Para cualquier matriz hermítica A 2 Cnn existe una matriz unitaria U tal que
U H AU D D;
donde D es una matriz diagonal. Además:
Los valores propios de A son números reales.
Se pueden obtener vectores propios de A que sean ortonormales.
En este caso se dice que la matriz A es semejante a una matriz diagonal: la matriz A es diagonalizable por semejanza.
Dos matrices semejantes tienen el mismo polinomio característico y los mismos valores propios. Una matriz A 2 Cnn
es normal, es decir AA H D A H A, si y sólo si A D U ƒU H , donde U es una matriz unitaria y ƒ una diagonal cuyos
coeficientes son los valores propios de A. Los vectores propios son los vectores columna de U .
Teorema A.16 Toda matriz real y simétrica tiene todos sus valores propios reales y es diagonalizable por semejanza.
Se demuestra además que los subespacios propios correspondientes a valores propios distintos son ortogonales. De
aquí se sigue que es siempre posible formar una base ortonormalizada de vectores propios para una matriz real y
simétrica A. Existe entonces una matriz ortogonal Q tal que verifica QT AQ D D, con QT D Q 1 y, de aquí que,
toda matriz real y simétrica es congruente ortogonal con su reducida diagonal.
Este resultado, fundamental de la teoría de matrices, es la versión para matrices simétricas del denominado Teorema
espectral. Da lugar a la Descomposición espectral de A.
Una matriz simétrica definida positiva tiene todos sus valores propios reales y positivos; si es semidefinida, alguno es
cero. Si la matriz es negativa definida, todos sus valores propios son negativos. Si A es hermítica, el producto x H Ax
es un número real. Los valores propios de una matriz hermítica, en consecuencia, son números reales. En una matriz
hermítica los vectores propios correspondientes a dos valores propios distintos son ortogonales entre sí.
Teorema A.17 Descomposición de Jordan. Para una matriz A 2 Cnn existe una matriz regular X 2 Cnn tal que
X 1 AX D diag.J 1 ; : : : ; J k /, donde
2 3
i 1
6 i 1 0 7
Ji D 6
4   7 2 Cni ni
5
0  1
i
y n1 C    nk D n. Las J i son las matrices o bloques de Jordan y los i los valores propios de A.
Este resultado debe su nombre a Marie Ennemond Camille Jordan, Francia 1838-1922.
A.3 Matrices j 543

Jordan

Teorema A.18 De Gers̆gorin. Los valores propios de una matriz A 2 Cnn se encuentran en la unión de los n discos
de Gershgorin, cada uno de los cuales está centrado en akk , k D 1; : : : ; n, y tiene de radio
Xn
rk D jakj j:
j D1
j ¤k

Demostración. Sea  un valor propio de A y x su vector propio asociado. De Ax D x y .I A/x D 0 se tiene que
n
X
. akk /xk D akj xj ; k D 1; : : : ; n;
j D1
j ¤k

donde xk es el componente k-ésimo del vector x.


Si xi es el coeficiente de x más grande en valor absoluto, como jxj j=jxi j  1 para j ¤ i , se tiene que
n
X n
jxj j X
j ai i j  jaij j  jaij j:
jxi j
j D1 j D1
j ¤i j ¤i

Luego  está contenido en el disco f W j ai i j  ri g.


Este es un resultado interesantísimo para averiguar el orden de magnitud de los valores propios de una matriz. Fue
formulado por Semyon Aranovich Gers̆gorin, Rusia, 1901-1933.

Gers̆gorin

Teorema A.19 Sea A una matriz simétrica n  n. Las siguientes propiedades de A son equivalentes.
A  0: A  0:
.A/  0. .A/ > 0.
A D D T D para alguna D rectangular. A D D T D para alguna D rectangular de rango n.
A D T  para alguna nn triangular superior. A D T  para alguna nn trian. superior no degenerada.
A D B 2 para alguna B simétrica. A D B 2 para alguna B simétrica no degenerada.
2
A D B para alguna B  0. A D B 2 para alguna B  0.

A.3.3.2 Valores singulares


La noción de valor propio, o autovalor, no tiene significado para matrices rectangulares. En éstas, por el contrario, si lo
tiene, como en las cuadradas, el concepto de valor singular.
A.3 Matrices j 545

La matriz A mn D U †V T , de rango r, se puede escribir como la suma de r matrices de rango uno así
r
X
AD i ui viT ;
iD1

donde los ui y vi son los vectores columna i -ésimos de U y V .


La mejor aproximación de A de rango p  r, en el sentido de mínimos cuadrados, se obtiene de la suma de los
primeros p términos de esta última suma. Por ejemplo —de Sauer [2013]—, el mejor subespacio de dimensión uno de
los puntos Œ3; 2, Œ2; 4, Œ 2; 1 y Œ 3; 5 en el sentido de mínimos cuadrados se obtiene de
 
32 2 3
AD D U †V T
24 1 5 " #
0;4085 0;5327 0;2398 0;7014
 0;5886 0;8084  8;2809 0 0 0  0;6741 0;3985 0;5554 0;2798
D 0;8084 0;5886 0 1;8512 0 0 0;5743 0;1892 0;7924 0;0801 :
0;2212 0;7223 0;0780 0;6507

Como p D 1, la mejor aproximación de A es u1 D Œ0;5886; 0;8084. Del sumatorio anterior, haciendo 2 D 0,


" #
 0;5886 0;8084  8;2809 0 0 0  0;4085 0;5327 0;2398 0;7014
0;6741 0;3985 0;5554 0;2798
A1 D 0;8084 0;5886 0 000 0;5743 0;1892 0;7924 0;0801
0;2212 0;7223 0;0780 0;6507
 1;9912 2;5964 1;1689 3;4188

D 2;7364 3;5657 1;6052 4;6951 :
El proceso
560 | CHAPTER 12seEigenvalues
esquematizaandenSingular
la figura A.13.
Values

Figura A.13: Proyección de cuatro(a)


vectores en el subespacio de dimensión uno que
(b) mejor los representa: recta de trazos

Dada la descomposición en 12.4


Figure valores singulares
Dimension de A,
reduction de rango
by SVD. (a) Fourr,datalosvectors
vectores
to besingulares
projected toa la izquierda fu ; : : : ; u g
1 r
conforman una base ortonormal de Im.A/ ysubspace.
best one-dimensional los restantes,
(b) The dotted
furC1line : ; um g, otra
; : :represents basesubspace.
the best The de ker.A T /. Igualmente,
ortonormal
arrowheads show the orthogonal projections down to the subspace.
fvrC1 ; : : : ; vn g es una base ortonormal de ker.A/ y fv1 ; : : : ; vr g una base ortonormal de Im.A T /.
p = 1 means setting s2 = 0 and reconstituting the matrix. In other words, A1 = U S1 V , T
Definición A.58 El número de condición de una matriz es la relación entre sus valores singulares mayor y menor.
where
Una matriz se dice mal condicionada si ese número es grande o muy grande.  Una matriz singular tiene un número de
condición infinito. 8.2809 0 0 0
S1 = .
0 0 0 0
Definición A.59 SiThus,
A esthe
una matrizofn  n, j det.A/j D 1  2    n . Para una matriz A 2 Rmn cuya descomposición
columns
en valores singulares es A D U †V T , se define su matriz
1.9912 2.5964 pseudoinversa,
−1.1689 −3.4188 A Ž , como

A1 = Ž Ž T (12.34)
D V †−1.6052
2.7346 A3.5657 U ; −4.6951

donde are the four projected vectors corresponding to the original four data vectors. They are
shown in Figure 12.4(b).
† Ž D diag.1 1 ; : : : ; r 1 ; 0; : : : ; 0/ 2 Rnm : ◭
 1  1
Si A 2 Rmn es de rango completo y m > n, A Ž D A T A A T ; si m < n, A Ž D A T AA T .
12.4.3 Compression
mn
Para cualquier matriz A 24 R
Property
, la matriz A Ž A es la matriz n  n de proyección ortogonal sobre el subespacio de los
can also be used to compress the information in a matrix. Note that each term in
Ž
vectores fila de A, AA la m expansion
the rank-one m de proyección
of Propertyortogonal sobre
4 is specified by la imagen
using de la matriz
two vectors A (subespacio
ui , vi and one more de sus vectores
Ž
columna) y .I Anumber A/ la de
si . proyección
If A is an n ×ortogonal
n matrix,sobre el attempt
we can núcleo lossy
de A,compression
ker.A/. of A by throwing
away the terms at the end of the sum in Property 4, the ones with smaller si . Each term in
the expansion requires 2n + 1 numbers to store or transmit.
For example, if n = 8, the matrix is specified by 64 numbers, but we could transmit
or store the first term in the expansion by using only 2n + 1 = 17 numbers. If most of the
information is captured by the first term—for example, if the first singular value is much
larger than the rest—there may be a 75 percent savings in space by working this way.
As an example, return to the 8 × 8 pixel block shown in Figure 11.6. After subtracting
128 to center the pixel values around 0, the matrix is given in equation (11.16). The singular
546 j Apéndice A

A.3.4 Formas cuadráticas


Definición A.60 Una forma cuadrática, o forma bilineal simétrica, en n variables es un polinomio homogéneo de
segundo grado en esas variables. La expresión más general de una forma cuadrática es
q.x/ D x T Qx ;
donde Q D QT es una matriz simétrica de orden n.
Nos limitaremos al análisis de formas cuadráticas con coeficientes reales.
Mediante una transformación lineal de variables, x D T y, una forma cuadrática se puede reducir a la forma canónica
de suma de cuadrados siguiente:
Xp pCq
X
q.x/ D yi2 yi2 :
i D1 i DpC1

El rango de la forma es p C q y la signatura p q (p números positivos y q negativos).


Una forma cuadrática real es definida positiva si para todo vector x ¤ 0, q.x/ > 0. El rango y signatura de una forma
cuadrática definida positiva valen n. Si Q la forman los coeficientes qij y se introducen los números menores como
2 3
q11 q12  q1i
6q21 q22  q2i 7
i D det 6
4 ::: :: :: :: 7 ;
: : : 5
qi1 qi 2  qi i

la forma cuadrática asociada a Q es definida positiva si y sólo si todos los menores i son positivos. Otros gráficos de
 Se pueden dar otros casos:
formas cuadráticas son estos los de la figura A.14. En
The(a) la matriz
Quadratic FormQ es definida positiva, en (b) definida
5 negativa, en

(a) (b)

x2
x1
Q.x/
(c) (d)

Figura A.14: Formas de funciones cuadráticas


Figure 5: (a) Quadratic form for a positive-definite matrix. (b) For a negative-definite matrix. (c) For a
 En (a) la matriz A es definida positiva, en (b) definida negativa, en (c)
singular (and positive-indefinite) matrix. A line that runs through the bottom of the valley is the set of
(c) semidefinida positiva (singular) y en (d)matrix.
indefinida.
semidefinida
solutions. (d)positiva (singular)
For an indefinite y en (d)
Because indefinida.
the solution is a saddle point, Steepest Descent and CG
Sean 1 ; : : : ; will
n los valores propios —que
not work. In three dimensions or sabemos son reales—
higher, a singular de also
matrix can la matriz
have a Q. Por el teorema espectral, existe una
saddle.
matriz ortogonal P tal que P T QP D diag.1 ; : : : ; n /. Haciendo en la forma cuadrática q.x/ D x T Qx48/108 el cambio de
variables x D Py, se tiene que ❀ ▼

solution is a minimum of ✳ , so
✶ ✝
☎ ❢
✆ ❍
✞ ✠ ✆ ❀ ❁
✆ ✶
can be solved by finding an that minimizes ✳ . (If is not

☎✻✢ ☎●✶❣✆❨✞❤✠ . Note that
symmetric, then Equation
☎✻✢ ☎●✶ 6 hints
q.x/ yT P
D that CGT will
QPy find D 1 y12 C
a solution to the C n y12n2✳ ; ✮
   system
a
1
2 ✳ b ✮ c
is symmetric.)1 2 3
por lo que el rangoe de fla forma cuadrática es6 el número total —teniendo en cuenta las multiplicidades— de valores
Why do symmetric positive-definite matrices have this nice property? Consider the relationship between
❀ atQ, ❲
✆ ✞✡☎ la✽ diferencia
d g 9 4 5
propios no nulos de mientras que la signatura coincide con entre3los números de valores propios positivos
j arbitrary point ✐ 10
1 . From Equation
i some and at8 the solution point one can show (Appendix C1)
h ☎
y negativos. En particular, la forma (be
that if is symmetric cuadrática
7
asociada
it positive-definite a Q es definida positiva si y sólo si todos los valores propios de
or not),
Q son positivos.
❀ ✳❥✐ ✶❂✞ ❀ ✳ ✆▼✶ 1
✳❥✐ ✯❨✆❁✶ ✢ ☎ ✳❥✐ ✯❦✆▼✶
✮ 2
(8)

If
☎ is positive-definite as well, then by Inequality 2, the latter term is positive for all ✐❨❧
✞✹✆ . It follows that
✆ is a global minimum of .

❀ ✆▼✶
☎ The fact that ✳ is a paraboloid is our best intuition of what it☎ means for a matrix to be positive-definite.
If is not positive-definite, there are several other possibilities. could be negative-definite — the result

of negating a positive-definite matrix (see Figure 2, but hold it upside-down). might be singular, in which
case no solution is unique; the set of solutions is a line or hyperplane having a uniform value for . If
❀ ☎

is none of the above, then is a saddle point, and techniques like Steepest Descent and CG will likely fail.
548 j Apéndice A

Esta condición debe su nombre a Rudolf Otto Sigismund Lipschitz, Alemania 1832-1903.

Lipschitz

Definición A.63 Dada una norma vectorial k  k en Rn y otra matricial k  k en Rmn , m; n > 0, una función
g W Rn ! Rmn se dice satisface la condición de Lipschitz con constante en un abierto D  Rn , si para todo x e y
pertenecientes a D se cumple que
kg.x/ g.y/k  kx yk:
Una función g que satisface la condición de Lipschitz en D se dice continua -Lipschitz en ese D, designándose
g 2 Lip .D/. Una vez más, si nos referimos a una función diciendo que es Lipschitz, o continua-Lipschitz, se está
diciendo que es algo más que continua, que no cambia radicalmente a lo largo de todas las direcciones posibles.
Un conjunto de funciones f1 ; f2 ; : : : ; fm de Rn en R se puede considerar como una función vectorial

f D Œf1 ; f2 ; : : : ; fm T :

Esta función asigna a todo vector x 2 Rn otro vector f .x/ D Œf1 .x/; f2 .x/; : : : ; fm .x/T de Rm . Tal función vectorial
se dice continua si lo es cada uno de sus componentes f1 ; f2 ; : : : ; fm .
Si cada una de las funciones de f D Œf1 ; f2 ; : : : ; fm T es continua en algún conjunto abierto de Rn , se dice f 2 C .
Si además cada función componente tiene derivadas parciales de primer orden continuas en ese abierto, se dice que
f 2 C 1 . En general, si las funciones componentes tienen derivadas parciales de orden p continuas, se indica f 2 C p .
Teorema A.21 Teorema de Weierstrass. Dada una función continua definida en un conjunto compacto C 2 Rn , existe
un punto donde alcanza un mínimo en C . Es decir, existe un x  2 C tal que para todo x 2 C , f .x/  f .x  /.
También otro donde alcanza un máximo.
Volvemos a dos conceptos esenciales del cálculo: la derivada y la integral definida.

A.4.1 Derivada y diferenciabilidad


Definición A.64 Una función f W R ! R tiene como derivada la función
df .x/ f .x C h/ f .x/
f 0 .x/ D D lKım ;
dx h!0 h
si ese límite existe. Una función f que es derivable en un punto x D a es continua en a.
La derivada es una medida de la rapidez, o tasa (gradiente), con la que cambia el valor de dicha función según cambie
el valor de su variable independiente. Representa, desde el punto de vista geométrico, la pendiente de la recta tangente a
la función en el punto x D a.
En el caso de funciones escalares de varias variables, f W Rn ! R, o funciones vectoriales, f W Rn ! Rm , definidas
en un entorno de x, se introduce el concepto de diferenciabilidad.
Una función de varias variables en general, f , es diferenciable en un entorno de un punto x si existen todas las
derivadas parciales de la función, la aplicación Df .x/ y además se verifica que
kf .x C h/ f .x/ Df .x/hk
lKım D D 0:
h!0 khk
Si f W Rn ! R la aplicación Df .x/ es el vector gradiente de la función,
 
@f .x/ @f .x/ @f .x/ T
rf .x/ D ; ;:::; :
@x1 @x2 @xn
A.4 Funciones, sucesiones y series de funciones j 549

Si f W Rn ! Rm la aplicación Df .x/ es la matriz Jacobiana de la función, por Carl Gustav Jacob Jacobi, Ale-
mania (Prusia), 1804-1851,
2 3
@f1 .x/ @f1 .x/ @f1 .x/
6 @x1 
6 @x2 @xn 7 7
6 @f2 .x/ @f2 .x/ @f2 .x/ 7
6  7
6 7
rf .x/ D J .x/ D 6 @x1 @x2 @xn 7 Jacobi
6 : : :: : 7
6 :: :: : :: 7
6 7
4 @fm .x/ @fm .x/ @fm .x/ 5

@x1 @x2 @xn

Este concepto de diferenciabilidad, que es el que se usa habitualmente, es debido a Maurice Fréchet, Francia 1878-
1973,

Fréchet

y da lugar a la derivada de Fréchet. Existe otro que conocemos como derivada direccional, o derivada de Gâteaux
—por René Eugène Gâteaux, Francia 1889-1914—

Gateaux

(muerto en la primera guerra mundial muy joven), que dice que la función f es diferenciable Gâteaux a lo largo de
cualquier vector h de Rn si existe la función

f .x C t h/ f .x/
g.h/ D lKım :
t!0 t
Si una función es Fréchet diferenciable en x es también Gâteaux diferenciable en ese punto. Lo contrario no siempre es
así. Esto es análogo al hecho de que la existencia de derivadas en todas las direcciones en un punto no garantiza la total
diferenciabilidad (e incluso la continuidad) en ese punto.

Ejemplo A.14 La función f W R2 ! R definida por


(
x3
x 2 Cy 2
si .x; y/ ¤ .0; 0/
f .x; y/ D
0 si .x; y/ D .0; 0/

cuya gráfica es la de la figura A.16, es continua y diferenciable Gâteaux en el punto .0; 0/, con derivada
( 3
a
si .a; b/ ¤ .0; 0/
g.a; b/ D a2 Cb 2
0 si .a; b/ D .0; 0:/

La función g no es un operador lineal y no es diferenciable en el sentido de Fréchet.


550 j Apéndice A

Figura A.16: Función del ejemplo A.14

Ejemplo A.15 La función f W R2 ! R dada por


(
x3 y
x 6 Cy 2
si .x; y/ ¤ .0; 0/
f .x; y/ D
0 si .x; y/ D .0; 0/

cuya gráfica es la de la figura A.17, es diferenciable Gâteaux en el punto .0; 0/, con derivada g.a; b/ D 0 en todas las
direcciones. Sin embargo f no es continua en .0; 0/, lo que se puede ver acercándose al origen de coordenadas a lo largo
de la curva y D x 3 , por lo que f no puede ser diferenciable Fréchet en el origen.

Figura A.17: Función del ejemplo A.15

Si se tiene la función escalar de varias variables f W Rn ! R, con derivadas parciales hasta segundo orden y f 2 C 2 ,
se define la matriz Hessiana de f en x —por Ludwig Otto Hesse, Alemania 1811-1874—

Hesse

como la matriz n  n 2 3
@2 f .x/ @2 f .x/ @2 f .x/

6 @2 x1 @x1 @x2 @x1 @xn 7
6 7
6 @2 f .x/ @2 f .x/ @2 f .x/ 7
6  7
6 7
r 2 f .x/ D 6 @x2 @x1 @2 x2 @x2 @xn 7 :
6 :: :: :: :: 7
6 : : : : 7
6 7
4 @2 f .x/ 2
@ f .x/ @ f .x/ 5
2

@xn @x1 @xn @x2 @2 xn
A.4 Funciones, sucesiones y series de funciones j 551

A esta matriz también se la puede ver designada como F .x/.


Definición A.65 Una función f W Rn ! Rm es afín si es la suma de una función lineal y una constante; es decir, tiene
la forma f .x/ D Ax C b, donde A 2 Rmn y b 2 Rm .

A.4.1.1 Subgradiente y subdiferencial

Definición A.66 Se dice que g 2 Rn es un subgradiente de f W Rn ! R en un entorno de un punto x que pertenece


al dominio de definición de esta funciónSubgradient
si para todo z del dominio de definición de la función se cumple que
of a function
f .z/  f .x/ C g T .z x/;
g is a subgradient of f (not necessarily convex) at x if
Si la función es convexa diferenciable su gradiente en x es el subgradiente.
En la figura A.18, de Boyd y Vandenberghe
f (y) ≥[2004], se gilustra
f (x) + T
(y −gráficamente
x) for all esta
y definición. En ella, si g es un subgra-
diente de f en el punto x la función afín (de z), f .x/ C g T .z x/ es un subestimador global de f .

f (x )f (z)

f (x 1) + g 1T (x − x 1)
f (x1 ) + g1T (z − x1 )
f (x 2) + g 2T (x − x 2)
f (x
f (x ) + gTT (z − x )
2 )2 + g 2 (x − x2 2 )
3

f (x2 ) + g3T (z − x2 )
x1 x2

Figura A.18: f g 2 , es
.x/ g3diferenciable en x1 . xSu
are subgradients at derivada,
x2; g1 isg1a, es el xúnico subgradiente.
subgradient at x1 En x2 la función no es diferenciable
1 2
pero tiene múltiples subgradientes, además de g2 y g3
Figure 1: At x , the convex function f is differentiable, and g1 (which is the
Prof. S. Boyd, EE364b, Stanford1University 2
derivative of f at x1 ) is the unique subgradient at x1 . At T
the point x2 , f is not
Geométricamente, g es un subgradiente
differentiable. de ff has
At this point, en xmany
si el vector Œg;two1subgradients,
subgradients: soporta glo2 and , denomina el epigrafo,
queg3se
epi.f /, de la función f are
(conjunto
shown. de puntos situados en o por encima de la función) en el punto .x; f .x//. Ver figu-
ra A.19

epi( f )

(g, −1)

Figure 2: A vector g ∈ Rn is a subgradient of f at x if and only if (g, −1) defines


Figura A.19: Un vector g 2 Rn es un subgradiente de f en x si y sólo si el vector Œg; 1T define un hiperplano soporte, o
a supportingT hyperplane to epi f at (x, f (x)).
de apoyo, del epi.f / en Œx; f .x/

f (z) = |z| ∂f (x)


Definición A.67 Una función se denomina subdiferenciable en un punto x si existe al menos un subgradiente de la
función en x. El conjunto de todos los subgradientes de f en x se denomina
1 subdiferencial y se designa por ²f .x/.
La idea del subdiferencial generaliza la diferenciabilidad. La función f es diferenciable en un punto x si y sólo si
x
²f .x/ D frf .x/g. La importancia de los subgradientes, sobre todo en optimización, radica en que el mínimo de una
z
función f en un punto x se da cuando 0 2 ²f .x/. −1

Ejemplo A.16 La función valor absoluto, f .x/ D jxj. Para x < 0 el subgradiente es único: ²f .x/ D 1. Para x > 0,
Figure 3: The absolute value function (left), and its subdifferential ∂f (x) as a
igualmente, el subgradiente es único:
function ²f .x/ D 1. En x D 0 el subdiferencial está definido por la desigualdad jzj  gz,
of x (right).
para todo z, lo que se satisface siempre y cuando g 2 Œ 1; 1. Es decir ²f .0/ D Œ 1; 1. Ver figura A.20.

2
(g, −1)

Figure 2: A vector g ∈ Rn is a subgradient of f at x if and only if (g, −1) defines


a supporting hyperplane to epi f at (x, f (x)).
552 j Apéndice A

f (x) = |x| ∂f (x )

x
x
−1

Figura A.20:3:
Figure La The
función valor absoluto
absolute value yfunction
su subdiferencial
(left), and its en
²f .x/ función de x. Ejemplo
subdifferential A.4.1.1
∂f (x) as a
function of x (right).

A.4.2 Integral
2 de esta función en el intervalo Œa; b,
Definición A.68 Si f W C ! C, se define la integral definida
l b
I.f / D f .x/ dx;
a
Pn
como el límite de las sumas de Riemann Rn D i D1 .xi C1 xi /f .ti /; x1 D a; xnC1 D b; xi  ti  xi C1 ; cuando la
partición en subintervalos se hace muy fina.
La integración, proceso inverso a la derivación, se basa en la idea de sumar todas las partes constituyentes de un todo.
Teorema A.22 Teorema
Rx fundamental del cálculo. Supongamos f W R ! R una función continua en el intervalo Œa; b.
1. Si g.x/ D a f .t/ dt entonces g 0 .x/ D f .x/.
Rb
2. a f .x/ dx D F .b/ F .a/, donde F es la función primitiva de f , es decir, F 0 D f .

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


Si suponemos un intervalo I  R, que podemos empezar pensando en Œ0; 1, una sucesión de funciones en este intervalo
no es más que una colección de funciones ffn gn2N (o en algunos casos .fn /n2N ), donde, para cada n 2 N, fn es una
función fn W Œ0;1 ! R.
En una sucesión de funciones ffn g hay dos variables en juego: la n, que va tomando valores naturales, y la x que,
fijado un n0 2 N, le asigna a cada valor x 2 Œ0; 1 el número fn0 .x/.

A.4.3.1 Convergencia puntual


Consideremos el intervalo I  R y, para cada n 2 N, la función fn W I ! R. La sucesión de funciones ffn g converge
puntualmente a la función f W I ! R si para cada x0 2 I se tiene

lKım fn .x0 / D f .x0 /:


n!1

Ese límite es un número, como el de una sucesión numérica. Todas las funciones de la sucesión deben estar definidas en
el mismo intervalo, así como la función límite. El límite de una sucesión de funciones continuas no tiene por qué ser una
función continua. Lo mismo ocurre con la derivabilidad y la integrabilidad, que no se mantienen.

A.4.3.2 Convergencia uniforme


Alguna de las circunstancias mencionadas en la convergencia puntual hace que sea conveniente en ocasiones trabajar
con otro tipo de convergencia —la convergencia uniforme— que sí mantiene las buenas propiedades de las funciones.
Lógicamente esta convergencia es más restrictiva: si una sucesión de funciones converge uniformemente también lo hace
puntualmente; lo contrario no siempre ocurre.
A.4 Funciones, sucesiones y series de funciones j 553

La idea detrás de la convergencia uniforme es trabajar en torno a la norma infinito o norma del supremo. Si fan g  R
es una sucesión de números reales, decir lKımn!1 an D a es lo mismo que lKımn!1 an a D 0 o

lKım jan aj D 0:
n!1

Es decir el límite de una sucesión es a si y sólo si la distancia de la sucesión a a tiende a 0.


Podemos pasar esta definición a funciones sustituyendo escalares por funciones y el valor absoluto por la norma. Si
escogemos para ésta la norma infinito se tiene lo que sigue
Definición A.69 Sea I  R un intervalo y la función fn W I ! R, para cada n 2 N. Decimos que la sucesión de
funciones ffn g converge uniformemente a la función f W I ! R si
lKım kfn f k1 D 0
n!1
o, de forma equivalente, si
lKım supfjfn .x/ f .x/jg D 0:
n!1 x2I

Es fácil comprobar que la convergencia uniforme implica la convergencia puntual.


Proposición A.23 Sea I  R un intervalo y la función fn W I ! R, para cada n 2 N. Si la sucesión de funciones ffn g
converge uniformemente a la función f W I ! R, entonces ffn g también converge puntualmente a la misma función
f.

Demostración. Sea x0 2 I . Puesto que sabemos por hipótesis que lKımn!1 supx2I f jfn .x/ f .x/jg D 0; y además

jfn .x0 / f .x/j  supfjfn .x/ f .x/jg D 0;


x2I

se sigue que lKımn!1 jfn .x0 / f .x0 /j D 0, lo que implica que lKımn!1 fn .x0 / D f .x0 /.
La implicación recíproca no es cierta. Una sucesión puede converger puntualmente y no hacerlo uniformemente.
Teorema A.24 Sea ffn g una sucesión de funciones fn W Œa; b ! R para cada n 2 N. Supongamos que ffn g converge
uniformemente a la función fn W Œa; b ! R. Entonces se tiene que:
1. Si fn es continua en Œa; b para cada n 2 N entonces f es continua.
2. Si fn es integrable en Œa; b para cada n 2 N entonces f es integrable.

Teorema A.25 Sea ffn g una sucesión de funciones fn W Œa; b ! R para cada n 2 N. Supongamos que para cada n 2
N, fn es derivable en Œa; b y sea fn0 su derivada. Supongamos además que la sucesión ffn0 g converge uniformemente
a una función g W Œa; b ! R y que existe x0 2 Œa; b tal que el lKımn fn .x0 / existe. Entonces existe f W Œa; b ! R
derivable en Œa; b tal que f 0 D g y tal que ffn g converge uniformemente a f .
Sentado el patrón para estudiar la convergencia uniforme se pueden estudiar otras forma de convergencia como la
convergencia en norma 2.
Definición A.70 Sea I  R un intervalo y para cada n 2 N la función fn W I ! R. Decimos que la sucesión de
funciones ffn g converge en media cuadrática, o en norma 2, a la función f W I ! R si lKımn!1 kfn f k2 D 0 o, de
forma equivalente, si
Z  21
2
lKım .fn .t/ f .t// dt D 0:
n!1 I

Aunque pueda parecer lo contrario, las relaciones de esta convergencia con las otras que hemos formulado anterior-
mente no son sencillas.
Proposición A.26 Si I es un intervalo acotado, para toda f W I ! R la norma 2 de f en I es menor o igual que una
constante por la norma del supremo de f en I .
554 j Apéndice A

Proposición A.27 Para cada n 2 N, sea fn W I ! R. Si la sucesión ffn g converge uniformemente a f W I ! R,


también converge en media cuadrática.
La recíproca no es cierta.
Proposición A.28 Supongamos que la sucesión de funciones ffn g converge en norma 2 a la función f . Entonces
existe una subsucesión ffnk g que converge a f en casi todo punto.

Corolario A.29 Si la sucesión ffn g converge puntualmente a la función f y sabemos que la sucesión ffn g converge
kk2
en norma 2, entonces necesariamente fn !f

A.4.3.3 Series funcionales


Definición A.71 Sea I  R P un intervalo y sea ffn g una sucesión
P1de funciones fn W I ! R. Se definen las funciones
Sm W I ! R como Sm .x/ D m nD1 fn .x/. Se dice que la serie nD1 fn converge puntualmente a f W I ! R si, para
cada x 2 I , lKımm Sm .x/ D f .x/, escribiéndose
1
X
fn .x/ D f .x/:
nD1
P
Si la sucesión fSm g converge uniformemente a f , se dice que la serie 1 nD1 fn converge uniformemente a f W I ! R.
P
Si n fn converge uniformemente a f en un intervalo Œa; b y las funciones fn son continuas (integrables) en ese
intervalo, por lo enunciado antes f es continua (integrable) en Œa; b. Igual se razona para la derivabilidad.
Teorema A.30 Criterio de Weierstrass. Sea ffn g una sucesión de funciones fn W I ! R y sea fMn g  R una sucesión
numérica que verifica las dos condiciones siguientes:
1. Para cada n 2 N y para cada x 2 I ,
jfn .x/j  Mn :
P
2. La serie n Mn converge. P
Entonces existe una función f W I ! R tal que, para todo x 2 I la serie n fn .x/ converge absolutamente a f .x/.
Además, dicha serie converge uniformemente a f .

A.4.3.4 Series de potencias


Una serie de potencias centrada en a (en lo sucesivo suponemos a D 0) tiene la expresión
1
X
an .x a/n :
nD0

P1
Definición A.72 Dada una serie de potencias an x n , su radio de convergencia es el número
nD0
( 1
)
X
n
 D sup jx0 j 2 R tales que an xo converge :
nD0
Si el conjunto entre llaves no es acotado decimos que  D C1.
P
Teorema A.31
P1 Teorema de Abel. Sea una serie de potencias 1 n
nD0 an x de modo que existe un x0 2 R tal que la serie
n
numéricaP nD0 annx0 es convergente. Sea ahora r 2 R tal que r < jx0 j. Entonces, para todo x 2 R tal que jxj  r
la serie 1
nD0 an x converge absolutamente. Además se tiene que la serie de potencias converge uniformemente en el
A.4 Funciones, sucesiones y series de funciones j 555

intervalo Œ r; r. Además la función f W Œ r; r ! R definida como


X1
f .x/ D an x n
nD0
es derivable y
1
X
0
f .x/ D nan x n 1
;
nD1

es decir, la derivación se puede hacer término a término.


Este teorema fue formulado por Niels Henrik Abel, Noruega 1802-1829. En su nombre se da anualmente desde 2003,
por la La Academia Noruega de Ciencias y Letras, el Premio Abel, que es considerado como el Premio Nobel de
Matemáticas. De hecho, su montante es el mismo que un equivalente Nobel.

Abel

P
Teorema A.32 Sea  el radio de convergencia de una serie de potencias 1 n
nD0 an x . Ocurre uno de los tres casos
siguientes:
1.  D 0. En ese caso la serie converge par x D 0 y diverge para todo x ¤ 0.
2. 0 <  < 1. En ese caso, para todo r <  la serie converge uniformemente en Œ r; r y diverge si jxj > , En
los puntos frontera .˙/ la serie puede converger o divergir.
3.  D 1. En ese caso la serie converge para todo x 2 R y para todo r > 0 la serie converge uniformemente en
Œ r; r.

A.4.4 Resultados importantes de análisis funcional


Dada la función f W R ! R n veces derivable en x0 de un intervalo I  R, se llama polinomio de Taylor de f de
grado n en el punto x0 a
Xn
f .k/ .x0 /
Pn;x0 .x/ D .x x0 /k :

kD0

Se debe a Brook Taylor, Reino Unido, 1685-1731,

Taylor

Se define el resto de Taylor como Rn;x0 .x/ D f .x/ Pn;x0 .x/.


Teorema A.33 Teorema de Taylor (1712). Si f W Rn ! R y f 2 C 1 en una región que contiene el segmento Œx1 ; x2 ,
es decir puntos ˛x1 C .1 ˛/x2 ; 0  ˛  1, existe un , 0    1, tal que f .x2 / D f .x1 / C r T f x1 C .1

/x2 .x2 x1 /: Además, si f 2 C 2 , existe un ; 0    1, tal que f .x2 /Df .x1 / Cr Tf .x1 /.x2 x1 / C 21 .x2

x1 /TF x1 C .1 /x2 .x2 x1 /; donde F denota la matriz Hessiana de f . Si la función f W R ! R es continua y
556 j Apéndice A

derivable k C 1 veces en un intervalo, o segmento, Œx; x0 , existe un b entre x y x0 tal que


 f 00 .x0 / 2 f 000 .x0 / 3
f .x/Df .x0 /Cf 0 .x0 / x x0 C x x0 C x x0
2Š 3Š
f .k/ .x0 / k f .kC1/ .b/ kC1
C C x x0 C x x0 :
kŠ .k C 1/Š

Las siete primeras aproximaciones de la función sen.x/ por este teorema se pueden ver en la figura A.21.

Figura A.21: Función sen.x/ y, en x D 0, las aproximaciones por Taylor de primer orden, de orden 3, 5, 7, 9, 11 y 13

El teorema de Taylor nos dice que el polinomio de Taylor aproxima a la función f tanto mejor cuanto mayor es n y
más cerca estemos de x0 . También, que si conocemos el valor de una función y sus derivadas en un punto x0 , entonces
podemos aproximar el valor de la función en un punto x por un polinomio y la aproximación será tanto mejor cuanto
más cerca esté el punto y cuantas más derivadas consideremos.
Resulta natural extender la noción de polinomio de Taylor, dejando que n tienda a infinito, a la de serie de Taylor
centrada en x0 como
X1
f .k/ .x0 /
.x x0 /k :

kD0

También, preguntarse si, dada una función infinitamente derivable f , la serie de Taylor converge en todo punto a la
función f .
Existe una clase muy amplia de funciones f , denominadas analíticas, que verifican que su serie de Taylor converge
al menos puntualmente a la función f . Obviamente
1
X f .k/ .x0 /
f .x/ D .x x0 /k

kD0

si y sólo si Rn;x0 .x/ ! 0.


La función, por ejemplo
( 1
e x2 si x ¤ 0
f .x/ D
0 si x D 0
es infinitamente derivable y sin embargo la serie de Taylor no converge a f .x/ en ningún x ¤ 0.
A.4 Funciones, sucesiones y series de funciones j 557

Teorema A.34 Teorema del valor intermedio. Si f W R ! R es una función continua en el intervalo Œa; b, toma todos
los valores entre f .a/ y f .b/. Más concretamente, si y es un número entre f .a/ y f .b/, existe un número c dentro de
Œa; b, es decir, tal que a  c  b, en el que f .c/ D y.
20 | CHAPTER
El gráfico de la figura A.22 esquematiza 0 Fundamentals
este resultado.

f(c) f(c)
y

a c b a c b a
(a) del valor intermedio
Figura A.22: Teorema (b)

Figure 0.1 Three important theorems from calculus. There exist


Teorema A.35 Teorema del valor medio. Si f W R ! R es una función
a and bcontinua
such that:y (a)
derivable
f (c) = y,en
forelany
intervalo
given y Œa;
between
b, f (a) and f
existe un número c entre a y b tal que f 0 .c/ D f .b/ f .a/ =.b 0.4,
a/.the Intermediate Value Theorem (b) the instantaneous slope of
20 | CHAPTER 0 Fundamentals (f (b) − f (a))/(b − a) by Theorem 0.6, the Mean Value Theorem (c)
El gráfico de la figura A.23 ayuda a la comprensión de este resultado.
region is equal in area to the horizontally shaded region, by Theore
Value Theorem for Integrals, shown in the special case g(x) = 1.

THEOREM 0.4 (Intermediate Value Theorem) Let f be a continuous function on


f (c) f (c)
f realizes every value between f (a) and f (b). More precisely, i
f (a) and f (b), then there exists a number c with a ≤ c ≤ b such
y

◮ EXAMPLE 0.7 Show that f (x) = x 2 − 3 on the interval [1, 3] must take on the v
Because f (1) = −2 and f (3) = 6, all values
√ between −
1, must be taken on by f . For example, setting c = 3, note that
a c b a c secondly, fb(2) = 1. a c b
(a) (b) del valor medio
Figura A.23: Teorema (c)
THEOREM 0.5 (Continuous Limits) Let f be a continuous function in a neighbo
Figure 0.1 Three important theorems from calculus. There exist numbers c between
Teorema A.36 Teorema de Rolle. Si f W R ! R es una función n→∞ xny=
limcontinua x0 . Then
derivable en el intervalo Œa; b y suponemos
a and b such that: (a) f (c) = y, 0for any given y between f (a) and f (b), byTheorem
que f .a/ D f .b/, existe un número c, entre a y b, tal que f .c/ D 0. G ENERALIZACIÓN Si f es continua y derivable

lim f (xn ) = f lim xn = f (x0 ).
n 1 veces en Œa; b y la0.4,
derivada de orden n existe
the Intermediate Value en Theorem
el abierto (b) they instantaneous
.a; b/, existen n intervalos
slopea1of<fb1atc a2
n→∞ < b2 
equals
n→∞
: : :  an < bn en Œa; b, tales que f .ak/ D f .bk/ para todo k D 1 : : : n, existe un número
(f (b) − f (a))/(b − a) by Theorem 0.6, the Mean Value Theorem (c) the vertically c en .a; b/ tal queshaded
la
derivada de orden n de f en c es cero. In other words, limits may be brought inside continuous func
region is equal in area to the horizontally shaded region, by Theorem 0.9, the Mean
Fue formulado por Michel
ValueRolle, Franciafor
Theorem 1652-1719.
Integrals,0.6
THEOREM shown (Mean
in theValue
special Theorem) Let=f1.be a continuously differentiable
case g(x)
[a, b]. Then there exists a number c between a and b such that f
(b − a).
THEOREM 0.4 (Intermediate Value Theorem) Let f be a continuous function on the interval [a, b]. Then
Rolle
f realizes every value between f (a) and f (b). More precisely, if y is a number between
◮ EXAMPLE 0.8 Apply the Mean Value Theorem to f (x) = x 2 − 3 on the interval
f (a) and f (b), then there exists a number c with a ≤ c ≤ b such that f (c) = y. 
The content of the theorem is that because f (1) = −2 a
exist a number c in the interval (1, 3) satisfying f ′ (c) = (6 − (−2)
El gráfico de la figura A.24 esquematiza lo obtenido por este teorema.
◮ EXAMPLE 0.7 Show that f (x) = x 2 − 3 on the interval [1, 3]a c.must
to find such f ′ (x)
Sincetake 2x,values
on=the the correct c =1.
0 and 2.

Because f (1) = −2 and f (3) The


= 6,next
allstatement
values
√ between
is a special−2 and
case 6, including
of the Mean Value0Theor
√ and
1, must be taken on by f . For example, setting c = 3, note that f (c) = f ( 3) = 0, and
secondly, f (2) = 1. THEOREM 0.7 (Rolle’s Theorem) Let f be a continuously differentiable functio

and assume that f (a) = f (b). Then there exists a number c bet
f ′ (c) = 0.
A.5 Optimización y Programación Matemática j 559

incógnitas. Es decir, si x1 , x2 ; : : : ; xm se pueden expresar en función de las restantes n m de la forma


xi D i .xmC1 ; xmC2 ; : : : ; xn / ; i D 1; 2; : : : ; m:
n m
A las funciones i W R ! R, si existen, se las denomina funciones implícitas.
Teorema A.41 Teorema de la función implícita. Sea x0 D Œx01 ; x02 ; : : : ; x0n T un punto de Rn que satisface:
1. Las m funciones fi 2 C p , i D 1; 2; : : : ; m, en algún entorno de x0 , para alguna p  1.
2. fi .x0 / D 0; i D 1; 2; : : : ; m: 2 3
@f1 .x0 / @f1 .x0 /
6 @x1   
6 :: @x: m 7 7
3. La matriz Jacobiana de la función vectorial, rf .x0 /D6 :: :: 7, es regular.
:
4 @fm .x0 / :
@fm .x0 / 5

@x1 @xm
T n m
Entonces existe un entorno de xO 0 D Œx0mC1 ; x0mC2 ; : : : ; x0n  2 R tal que para xO D ŒxmC1 ; xmC2 ; : : : ; xn T en
ese entorno existen funciones i .x/, O i D 1; 2; : : : ; m tales que:
1. i 2 C p .
2. x0i D i .xO 0 /; i D 1; 2; : : : ; m.
3. fi .1 .x/;
O 2 .x/;O : : : ; m .x/;
O x/ O D 0; i D 1; 2; : : : ; m.
Este teorema, formulado por Cauchy, sirve para caracterizar puntos óptimos en programación matemática con y sin
condiciones, solución de ecuaciones lineales y no lineales y otras bastantes cosas.
Ejemplo A.17 Consideremos la ecuación x12 C x2 D 0. Una solución de la misma es x1 D x2 D 0. En un entorno de
esta solución, sin embargo, no hay función  tal que x1 D .x2 /. En esta solución no se cumple la condición .c/ del
teorema de la función implícita. En cualquier otra solución si existe dicha .

Ejemplo A.18 Sea A una matriz m  n, m < n, y considérese el sistema de ecuaciones lineales Ax D b. Si A se
estructura así, A D ŒB; C , donde B es m  m, entonces se satisface la condición .c/ del teorema de la función implícita
si, y sólo si, B es regular. Esta condición se corresponde con los requisitos y enunciados de la teoría de ecuaciones
lineales.
De acuerdo con este último ejemplo, la teoría de la función implícita se puede considerar como una generalización no
lineal de la teoría lineal.

A.5 Optimización y Programación Matemática


La Optimización o Programación Matemática tiene por objeto el estudio del problema
minimizar
n
f .x/
x2R
(A.1)
sujeta a ci .x/ D 0; i 2 E;
cj .x/  0; j 2 I:
Si no existen las condiciones ci y cj , o restricciones, el problema es de optimización sin condiciones. La función objetivo
f y las condiciones ci y cj son, en general, no lineales, continuas y tienen derivadas parciales continuas hasta al menos
primer orden. Los conjuntos E y I contienen los índices de las condiciones que son de igualdad y de desigualdad, res-
pectivamente. El conjunto de puntos que satisfacen todas las condiciones se denomina región factible. Como referencia
básica de la temática de esta sección está Boyd y Vandenberghe [2004]. También se puede seguir a Luenberger y Ye
[2016].

A.5.1 Condiciones necesarias y suficientes de existencia de un punto mínimo


de una función
Cuando el problema de optimización no tiene restricciones es importante conocer cuáles son las condiciones necesarias
y suficientes en que se puede determinar si dada f W  ! R,  2 Rn , un punto x  hace mínima esa función.
7.4 Convex and Concave Functions 193
560 j Apéndice A

Una función f W Rn ! R se dice convexa (figura A.26) si cumple que f .˛x C ˇy/  ˛f .x/ C ˇf .y/ para todo
x; y 2 Rn y todo ˛; ˇ 2 R, con ˛ C ˇ D 1, ˛  0, ˇ  0. Si S  Rn es un conjunto convexo y f W Rn ! Rm es una
función afín, la imagen de f .S / D ff .x/ W x 2 S g es un conjunto convexo. De forma similar, si f W Rk ! Rn es
una función afín, la imagen inversa f 1 .S / D fx W f .x/ 2 S g también es convexa.

y = f(x)
y

x
convex
Figura A.26: Función
(a) convexa

Un punto x  2  se dice que es un mínimo local de la función f W  ! R si existe un  > 0 tal que f .x/  f .x  /
f que  de x  . Es decir, para todo x 2  tal que jx x  j < . Si f .x/ > f .x  /
para todo x 2  a una distancia menor
para todo x 2 , x ¤ x , a una distancia menor que  de x  , se dice que x  es un mínimo local estricto de f en .


Teorema A.42 Condiciones necesarias de primer orden. Teorema de Fermat. Sea  un subconjunto de Rn y una
función f W  ! R, f 2 C 1 . Si x  en un mínimo local de f en , se cumple que rf .x  / D 0.
Por Pierre de Fermat, Francia 1607-1665.

Fermat

Si en x  se cumple que rf .x  / D 0, x  se denomina punto


convexestacionario.
x
Teorema A.43 Condiciones necesarias de segundo orden. n
(b)Sea  un subconjunto de R y una función f W  ! R,
2   2 
f 2 C . Si x en un mínimo local de f en , se cumple que rf .x / D 0 y r f .x / es semidefinida positiva.

f
Teorema A.44 Condiciones suficientes de segundo orden. Sea  un subconjunto de Rn y una función f W  ! R,
f 2 C . Si se cumple que rf .x / D 0 y r 2 f .x  / es definida positiva, x  en un mínimo local estricto de f en .
2 

Teorema A.45 Si f es convexa, cualquier mínimo local x  es un mínimo global de f . Si además f es derivable,
cualquier mínimo local x  es un mínimo global.

A.5.2 Conjuntos convexos y geometría de la convexidad


En optimización se presta una atención fundamental a los conjuntos convexos. En ellos es más fácil caracterizar las
soluciones de los problemas y definir algoritmos y procedimientos de resolución robustos. En la figura A.27 se ilustran
algunos conjuntos que son convexos y otros que no lo son. Volveremos sobre la cuestión de cómo saber si hay convexidad
o no más adelante.
Si el entorno en el que se define un problema de optimización es convexo, se puedex tener la seguridad de conseguir un
óptimo del problema, con los algoritmos adecuados, y que éste sea el único. Si hay condiciones no convexas o la función
nonconvex
objetivo no lo es, puede que no se pueda conseguir nada del(c)problema ni saber si hay uno o varios óptimos.

Fig. 7.3 Convex and nonconvex functions


Examples of non-convex sets
Examples of convex sets
• The union of two non-overlapping line segments
• A line segment is a convex
• set.
Non-convex sets can have “indentations.”
A.5 Optimización y Programación Matemática j 561

Fig. 4.9. Convex sets


with pairs of points
joined by line segments.

Figura A.27: Conjuntos convexos a la izquierda; no convexos a la derecha


Title Page ◭◭ ◮◮ ◭ ◮ Title Page
38 of 156
◭◭
Go Back
◮◮ ◭
Full Screen
◮ 39
Close
of 156
Quit
Go Back Ful

El análisis de la convexidad de funciones y de problemas de optimización fue fundado en la segunda mitad del siglo XX
por Moritz Werner Fenchel, Alemania 1905-1988, Jean Jaques Moreau, Francia 1923-2014, y Ralph Tyrrell Rockafellar,
EE.UU. 1935.

Fenchel Moreau Rockafellar

Se refiere esencialmente a conjuntos, espacios y funciones convexas y sus aplicaciones en optimización.


Un conjunto C  Rn se dice convexo si y sólo si para todo par de puntos x1 ; x2 2 C todas las combinaciones de la
forma x D x1 C .1 /x2 , con 0    1, están en C . Es decir, cuando para cada par de puntos del conjunto convexo
todos los de la recta que los une están en el conjunto.
La expresión x D x1 C .1 /x2 , 0    1, define la combinación convexa de x1 y x2 . Si 0 <  < 1, es decir
Optimizing a Convex Function Over a
 2 .0; 1/, la combinación se denomina estrictamente convexa. En la figura A.28 se ilustra la fundamental diferencia
Convex and a Non-Convex Set
que hay entre optimizar una función en una región factible convexa y en otra que no lo es.

f(x,y) = - x - y
Óptimo local

Óptimo global

Figura A.28: Optimización (minimización) de f .x; y/ D x y en un conjunto convexo y en otro que no lo es

El concepto de combinación convexa se puede generalizar a cualquier número finito de puntos de la siguiente manera:
p
X
xD i xi ;
i D1
Pp
donde i D1 i D 1, i  0, i D 1; : : : ; p.
Definición A.73 El conjunto intersección de todos los conjuntos convexos que contienen a un subconjunto S  Rn se
llama envoltura convexa —convex hull— de S (figura A.29) y se designa por conv.S /.
Figure 2.2 Some simple convex and nonconvex sets. Left. The hexagon,
which includes its boundary (shown darker), is convex. Middle. The kidney
shaped set is not convex, since the line segment between the two points in
the set shown as dots is not contained in the set. Right. The square contains
562 j Apéndice A some boundary points but not others, and is not convex.

Figura A.29: Envoltura Figure


convexa2.3 de The
dos conjuntos
convex hulls of2 two
de R . La sets
de lainizquierda de The
R2 . Left. 15 puntos;
convexlahull
de laofderecha
a de un conjunto no
convexo set of fifteen points (shown as dots) is the pentagon (shown shaded). Right.
The convex hull of the kidney shaped set in figure 2.2 is the shaded set.

Un conjunto C  Rn se dice que es afín (también se dice que C es una variedad afín o una variedad lineal) si para
cualesquiera x; y 2 C y cualquier  2 R se tiene que .1 /x C y 2 C . El conjunto vacío es afín. Una combinación
afín de vectores v1 ;Roughly
v2 ; : : : ; vspeaking, a set is convex if every point in the set can be seen by every other
n es una combinación lineal c1 v1 C    C cn vn en la que c1 C    C cn D 1.
point, along an unobstructed straight path between them, where unobstructed
Un conjunto C meansRn eslyingafín siinythe
sólo si es de la forma
set. Every affine set is also convex, since it contains the entire
line between any two distinct points in it, and therefore also the line segment
C D fa C l W a 2 Rn ; l 2 Lg ;
between the points. Figure 2.2 illustrates some simple convex and nonconvex sets
in R2 .
donde L es un subespacio vectorial de Rn asociado a C . Es decir, un conjunto afín es un subespacio desplazado del
We call a point of the form θ1 x1 + · · · + θk xk , where θ1 + · · · + θk = 1 and
origen. La dimensión de0,uni =
θi ≥ conjunto
1,n . . . , k,afín es la de su of
x C Lcombination
a convex correspondiente
the points x1 , subespacio
. . . , xk . As L. plano afín en Rn es un
Unaffine
with
n
traslado de un subespacio
sets, it de
canR be. Unashown recta enaRsetesisun
that planoifafín
convex andde dimensión
only 1. Es every
if it contains evidente que cualquier conjunto
convex
afín es convexo aunque el recíproco no es cierto en general.
combination of its points. A convex combination of points can be thought of as a
Si S  Rn , la envoltura
mixture or afín de S , aff.S
weighted /, esoflathe
average intersección
points, withdeθitodos los conjuntos
the fraction of xi inafines que contienen a S. Como
the mixture.
se puede comprobar, aff.S / D aff.conv.S //.
Un conjunto de puntos Theo convex
vectores
hullfvof
1 ;a: :set
: ; vC, de Rn es
p gdenoted afínmente
conv C, is thedependiente si existen
set of all convex números reales c1 ; : : : ; cp
combinations
of points in C:
no todos cero tales que c1 C    C cp D 0 y c1 v1 C    C cp vp D 0. De lo contrario será afínmente independiente.
 $)"15&3  7KH *HRPHWU\ RI 9HFWRU 6SDFHV
Un simplex o simplejo
convesCla=envolvente
{θ1 x1 + · · ·convexa
+ θk xk |de xi un conjunto
∈ C, θi ≥ 0, finito
i = 1,de
. . .vectores
, k, θ1 +afínmente
· · · + θk =independientes.
1}.

As the
v 1 name suggests,
v 1 the convex hull conv C is valways
1 convex. It is the smallest v4
convex set that contains C: If B is any convex set that contains C, then conv C ⊆
B. Figure 2.3 illustrates the definition of convex hull.
The idea of a convex combination can be generalized to include infinite sums, in-
tegrals, and, in the most general form, probability distributions. Suppose θ1 , θ2 , . . .
v1 v2 v2 v3 v2 v3

S0 S1 S2 S3
simplexS 1 es un segmento de recta. El triángulo S 2 proviene de seleccionar un punto v3 que no está en la
Figura A.30: El'*(63&
recta que contiene a S 1 y después formar la envolvente convexa con S 1 . El tetraedro S 3 se produce al elegir un punto v4 que
no esté en el plano de S 2 y después formar la envolvente convexa con S 2
)LJ 7KH WHWUDKHGURQ S3 LV SURGXFHG E\ FKRRVLQJ D SRLQW Y4 QRW LQ WKH SODQH RI S 2
DQG WKHQ IRUPLQJ WKH FRQYH[ KXOO ZLWK S 2
Para construir un simplex
%HIRUHk-dimensional —o k-simplex—
FRQWLQXLQJ FRQVLGHU VRPH RI WKHseSDWWHUQV
procedeWKDW
como sigue (ver figura
DUH DSSHDULQJ A.30):
7KH WULDQJOH
2 1
S KDV WKUHH HGJHV (DFK RI WKHVH HGJHV LV D OLQH VHJPHQW OLNH S :KHUH GR WKHVH
WKUHH OLQH0-simplex S 0 W un
VHJPHQWV FRPH solo2QH
IURP" punto fv1 g LV S 1 2QH RI WKHP FRPHV E\ MRLQLQJ WKH
RI WKHP
HQGSRLQW 1-simplex S 1 SRLQW
Y2 WR WKH QHZ W conv.S 0
Y3 7KH [ WKLUG con vIURP
fv2 g/FRPHV 2 no en
0 RWKHU HQGSRLQW Y WR
aff.SWKH
MRLQLQJ / 1
1 2
Y3 <RX PLJKW VD\ WKDW2HDFK HQGSRLQW 1 LQ S LV VWUHWFKHG RXW LQWR D1 OLQH VHJPHQW LQ S
2-simplex S 3 W conv.S [ fv3 g/ con v3 no en aff.S /
7KH WHWUDKHGURQ S LQ )LJ KDV IRXU WULDQJXODU IDFHV 2QH RI WKHVH LV WKH RULJLQDO
WULDQJOH S 2 DQG WKH RWKHU :: WKUHH FRPH IURP VWUHWFKLQJ WKH HGJHV RI S 2 RXW WR WKH QHZ
:
SRLQW Y4 1RWLFH WRR WKDW WKH YHUWLFHV RI S 2 JHW VWUHWFKHG RXW LQWR HGJHV LQ S 3 7KH
k
k-simplex
RWKHU HGJHV S W IURP
LQ S 3 FRPH conv.SWKHk HGJHV
1
[ fv con vVXJJHVWV
S 2 g/7KLV
LQkC1 kC1 no enKRZaff.S k 1
/:
WR ´YLVXDOL]Hµ WKH
4
IRXU GLPHQVLRQDO S
Un símplex unidad es7KH unFRQVWUXFWLRQ
subconjuntoRIparticular
S 4 FDOOHGdel ortante noLQYROYHV
D SHQWDWRSH negativo que seWKH
IRUPLQJ define así KXOO RI S 3
FRQYH[
3
ZLWK D SRLQW Y5 QRW LQ WKH VSDFH RI S $ FRPSOHWH SLFWXUH LV LPSRVVLEOH RI FRXUVH
EXW )LJ LV VXJJHVWLYH SS4 KDV D fs ÀYH  0; 1> sDQG
j s YHUWLFHV  DQ\ RnCRI
1g IRXU : WKH YHUWLFHV GHWHUPLQH D
IDFHW LQ WKH VKDSH RI D WHWUDKHGURQ )RU H[DPSOH WKH ÀJXUH HPSKDVL]HV WKH IDFHW ZLWK
Es un poliedro convexo
YHUWLFHVacotado
Y1 Y2 Ycon n C 1 vértices y n C 1 y de dimensión n. En la figura A.31 se ve uno de R3 : un
4 DQG Y5 DQG WKH IDFHW ZLWK YHUWLFHV Y2 Y3 Y4 DQG Y5 7KHUH DUH ÀYH
tetraedro sólido pero no regular.
v5

v1 v4
       
1 3 9 5
&9".1-&  /HW D D ED FD DQG S D )LQG WKH EDU\FHQ
7 0 3 3
WULF FRRUGLQDWHV RI S GHWHUPLQHG E\ WKH DIÀQHO\ LQGHSHQGHQW VHW fD; E; Fg
40-65*0/ 5RZ UHGXFH WKH DXJPHQWHG PDWUL[ RI SRLQWV LQ KRPRJHQHRXV IRUP PRYLQJ
WKH ODVW URZ RI RQHV WR WKH WRS WR VLPSOLI\ WKH DULWKPHWLF
2 3 2 3
2.12. CONVEX POLYHEDRA 1 3 9 5 1 1
A.5 1 1
Optimización y Programación
119 Matemática j 563
Q
 
DQ E FQ SQ D 7 0
4 3 3  1 3 9 5
5 4 5
1 1 1 1 7 0 3 3
2 s º 0 , 1T s ≤ 1} 3
1
1 0 0 4
6 7
1 7
6 4 0 1 0 3 5
5
0 0 1 12
1 1 5 51
7KH FRRUGLQDWHV DUH 4 3
DQG 12
VR S D 41 D C 31 E C 12
F
%DU\FHQWULF FRRUGLQDWHV KDYH ERWK SK\VLFDO DQG JHRPHWULF LQWHUSUHWDWLRQV 7KH\
ZHUH RULJLQDOO\ GHÀQHG E\ $ ) 0RHELXV LQ IRU D SRLQW S LQVLGH D WULDQJXODU
Figura A.31: Simplex unidad en 3 . Un tetraedro sólido aunque no regular
UHJLRQ ZLWK YHUWLFHV D E DQG F +H ZURWH WKDW WKH EDU\FHQWULF FRRUGLQDWHV RI S DUH
R
WKUHH QRQQHJDWLYH FigureQXPEHUV mD ; mES in
57: Unit simplex DQGR3mis Fa VXFK
uniqueWKDW LV WKH FHQWHU
solidStetrahedron but RI
notPDVV RI D V\VWHP
regular.
FRQVLVWLQJ RI WKH WULDQJOH ZLWK QR PDVV DQG PDVVHV mD mE DQG mF DW WKH FRUUHVSRQGLQJ
Sea S D fv1 ; : : : ; vk g un conjunto afínmente independiente. Para cada punto p en aff.S / los coeficientes c1 ; : : : ; ck
YHUWLFHV (única)
de la representación 7KH PDVVHV
p D c1DUHv1 C XQLTXHO\
   C ck GHWHUPLQHG E\ UHTXLULQJ
vk son las coordenadas WKDW WKHLU de
baricéntricas VXPp. EH 7KLV
Estas coordenadas tie-
YLHZ LV 2.12.2.1
VWLOO XVHIXO Vertex-description
LQ SK\VLFV WRGD\ ñof polyhedral cone
nen interpretaciones físicas y geométricas de interés. Fueron originalmente definidas en 1827 por August F. Möbius,
)LJXUH
Alemania 1790-1868. GivenJLYHV
closedDconvex
JHRPHWULF
cone K LQWHUSUHWDWLRQ
in a subspace of RWR n
WKH EDU\FHQWULF
having FRRUGLQDWHV
any set of generators LQ ([DPSOH
for it arranged
n×N
in a matrix X ∈ R as in (282),
VKRZLQJ WKH WULDQJOH DEF DQG WKUHH VPDOO WULDQJOHV SEF DSF DQG =DES
then that cone is described setting m = 1 and k 0 in 7KH
vertex-description (291):
DUHDV RI WKH VPDOO WULDQJOHV DUH SURSRUWLRQDO WR WKH EDU\FHQWULF FRRUGLQDWHV RI S ,Q IDFW
K = cone X = {Xa 1 | Möbius
a º 0} ⊆ Rn (105)
DUHD.SEF/ D  DUHD.DEF/
a conic hull of N generators. 4
1
    2.12.2.2
  Pointedness 5 DUHD.DSF/ D  DUHD.DEF/
Si a D 17 , b D 30 ,(c§2.7.2.1.2)
D 93 y[350, p D§2.10]3 ,Assuming
el punto all
p en el 3centroconstituting
generators theA.32
de la figura tieneofpor
columns X ∈coordenadas
Rn×N are baricéntricas
tres números no negativos , mb y mccone
mapolyhedral
nonzero, tales que
K is p es ifeland
pointed centro
only de masais de
if there un sistema
no nonzero a º 0que consiste
that solves en le triángulo
(sin masa) y las masasXam=a ,0 m
5
b y
; id mciffen los
est, vértices
DUHD .DEScorrespondientes.
/D  DUHD.Las DEFmasas
/ están unívocamente determinadas al
requerir que su suma sea 1. 12
find a
subject to Xa = 0
(294)
a 1T a = 1
aº0
área = s·área(∆abc )
is infeasible or iff N (X) ∩ RN + = 0.
2.58
Otherwise, the cone will contain at least one line
and there can be no vertex; id est, the cone cannot otherwise be pointed. Any subspace,
Euclidean vector space Rn , or any halfspace are examples of nonpointed polyhedral cone;
hence, no vertex. This null-pointedness criterion Xa = 0 means that a pointed polyhedral
cone is invariant to linear injective transformation. p
área = t ·polyhedral
Examples of pointed área(∆abc )cone K include: c 0-based ray in a
the origin, any
subspace, any two-dimensional V- shaped cone in a subspace, any orthant in Rn or Rm×n ;
e.g, nonnegative real line R+ in vector space R .
área = r·área(∆abc )
b
2.12.3 Unit simplex
1
'*(63&  S D r D C s E C t F +HUH r D
A Figura
peculiarA.32: Punto
subset 1p D
of the ra 5C sb C
nonnegative t c. Enwith
orthant caso r D 1 4, s D 1 y
estehalfspace-description 5
t D 12 :
sD 3
tD 12
4 3

S , {s | s º 0 , 1T s ≤ 1} ⊆ Rn+ (295)
7KHElIRUPXODV
Proposición A.46 conjunto
2.58 LQ
If rank Xde
)LJ
= nsoluciones
DUHdeYHULÀHG
, then the dual un sistema
cone
LQ de
([HUFLVHV
K∗ (§2.13.1) isecuaciones
² $QDORJRXV HTXDOLWLHV IRU mn ; b 2
pointed. (311)lineales, C D fx W Ax D b; A 2 R
m
R g, es unYROXPHV
conjunto RI WHWUDKHGURQV KROG IRU WKH FDVH ZKHQ S LV D SRLQW LQVLGH D WHWUDKHGURQ LQ R3
afín.
ZLWK YHUWLFHV D E F DQG G
Demostración. En efecto, supongamos que x1 ; x2 2 C , es decir, Ax1 D b, Ax2 D b. Entonces, para cualquier ,

ñ 6HH ([HUFLVH LQ 6HFWLRQA .x,Q1 DVWURQRP\ x2 / D Ax


C .1 /KRZHYHU 1 C .1 FRRUGLQDWHVµ
´EDU\FHQWULF / Ax2 XVXDOO\ UHIHU WR RUGLQDU\
R3 FRRUGLQDWHV RI SRLQWV LQ ZKDW LV QRZ FDOOHG WKH ,QWHUQDWLRQDO
D b C .1 / b 5HIHUHQFH 6\VWHP D &DUWHVLDQ
&HOHVWLDO
FRRUGLQDWH V\VWHP IRU RXWHU VSDFH ZLWK WKH RULJLQ DW WKH FHQWHU RI PDVV WKH EDU\FHQWHU RI WKH VRODU V\VWHP
D b;

lo que prueba que la combinación afín  x1 C .1 /x2 está también en el conjunto C . El subespacio asociado con el
conjunto afín C en este caso es el espacio nulo de A, ker.A/.
C C

0 0

Fig. B.2 Properties of convex sets

564 j Apéndice A Definition. Let S be a subset of E n . The convex hull of S, denoted co(S), is
the set which is the intersection of all convex sets containing S. The closed
convex hull of S is defined as the closure of co(S).
26
Definición A.74 Un conjunto C  Rn se dice un cono si para todo x 22 CConvex sets
y todo escalar 0   2 R, se tiene
Finally, we conclude this section by defining a cone and a convex cone. A
que x 2 C . Un cono que también es convexo se denomina cono convexo. En este caso, para todo x1 ; x2 2 C y
convex cone is a special kind of convex set that arises quite frequently.
1 ; 2  0, 1 x1 C 2 x2 2 C .

x1
0

x2

0
Figure 2.4 The pie slice shows all points of the form θ1 x1 + θ2 x2 , where
θ1 , θ2 ≥ 0. The0apex of the slice (which corresponds to θ1 = θ2 =0 0) is at
0; its edges (which correspond to θ1 = 0 or θ2 = 0) pass through the points
Not convex x1 and x2 . Not convex Convex
Figura A.33: Tres conos: el primero y el segundo no son convexos; el tercero si
Fig. B.3 Cones
El conjunto fx 2 Rm W x D A˛; A 2 Rmn ; ˛ 2 Rn ; ˛  0g es un cono convexo generado por los vectores columna
de la matriz A.
El conjunto de todas las combinaciones cónicas de los puntos de un conjunto C , 1 x1 C    C k xk , 1 ; : : : ; k  0,
es la envoltura cónica de C , cone.C /.

0 0
Figura A.34: Envoltura cónica de los dos conjuntos de la figura A.29
Figure 2.5 The conic hulls (shown shaded) of the two sets of figure 2.3.

Definición A.75 Un punto x es un punto extremo o vértice de un conjunto convexo C si y sólo si no es interior a un
segmento de recta contenido en C . Es decir, si y sólo si
x D .1 ˇ/y C ˇz con 0 < ˇ < 1 y y; z 2 C ) x D y D z:

Dos resultados importantes de Constantin Carathéodory —Alemania, 1873-1950—

Carathéodory

P
dicen que si X  Rn y x 2 cone.X /, existen xi y i , i D 1; : : : ; n, tales que x D niD1 i xi . Es decir, como expresa
la figura A.35, cualquier elemento de la envoltura cónica de X es combinación cónica P de, a lo sumo, n puntos de X .
Igualmente, si X  Rn y x 2 conv.X /, existen xi y i , i D 1; : : : ; n C 1, tales que x D nC1
i D1 i xi . Es decir, cualquier
elemento de la envoltura convexa de X es combinación convexa de, a lo sumo, n C 1 puntos de X.
Definición A.76 Llamaremos hiperplano H de vector característico a 2 Rn ; a ¤ 0, al conjunto H D fx 2 Rn W
aT x D cg, con c 2 R. Un hiperplano es el conjunto de soluciones de una ecuación lineal en Rn .

Definición A.77 Un hiperplano en Rn es un espacio afín o una variedad lineal .n 1/ dimensional.


a f f (X) =  λi xi : k ∈ N, xi ∈ X, λi ∈ R, i = 1, 2, . . . , k ; λi = 1 
 0 0

 Figure 2.5 The conic hulls (shown shaded) of the two sets of figure 2.3. 
Figura 8.8: Envoltura cónica de los dos conjuntos de la figura i=1
8.6
 
i=1
Teorema de Carathéodory para convexos
Teorema de Carathéodory para conos
Un punto x es un punto extremo de un conjunto convexo C si y sólo si no es interior a un segmento de recta contenido
en C . Es decir, si y sólo si
Teorema 2.2. Si X ⊂ Rn y x ∈ conv (X), existen xi ∈ X y λ ≥ 0, i = 1, . . . , n + 1, i
Teorema 2.1. Si X ⊂ Rn yn+1x ∈ cone x D .1 (X),
ˇ/y Cexisten
ˇz con 0 < ˇxi< ∈1n+1
yXy; z y
2C λi)≥x 0,D yiD= z: 1, 2, · · · , n,
n
1, cualquier R iy xEs
λi xque.con tales que dicen
x =quedesi Xlaλcónica
i x . de decir, cualquier
x y  , i D 1; : :elemento de la envoltura
P
P Dosi resultados P n
P importantes
λi . Es debido a Carathéodory 2 cone.X /, existen : ; n,
tales que x = tales Es
x D decir,
 x cualquier
=decir,n elemento
elemento de la envoltura envoltura cónica
X es combinación dede,X
cónica essumo,
a lo
i i

i=1iD1 i
i=1 n puntos de X. Igualmente,
i
i=1 A.5 que
si X  Rn y x 2 conv.X /, existen xi y i , i D 1; : : : ; n C 1, tales Optimización
x D nC1 y Programación Matemática j 565
iD1 i xi .
P

combinación cónica convexa


Es decir,de, dedeXlanenvoltura
a loelemento
cualquier sumo, eselementos
combinación X.convexa
dees combinación
convexa de X convexade, asumo,
de, a lo lo sumo, X. 1
n C 1 puntosnde+ La puntos de X.
figura 8.9 ilustra estos resultados.

Figura A.35: El teorema de Carathéodory


Teorema de Carathéodory para convexos
Figura 8.9: El teorema de Carathéodory

nLlamaremos hiperplano H de vector característico a 2 Rn ; a ¤ 0, al conjunto H D fx 2 Rn W aT x D cg, con


i
Teorema 2.2. Si cX2 R.⊂UnRhiperplano
yx∈ conjunto(X),
es elconv existen
de soluciones de unax y λeni R≥. 0, i = 1, . . . , n + 1,
∈ Xlineal
ecuación n
Definición A.78 UnDado
n+1 un hiperplano
n+1
hiperplano en RP
H
n , a T
x D c, llamaremos semiespacios cerrados de borde H a los conjuntos
es un espacio afín o una variedad lineal .n 1/-dimensional.
i D fx 2 Rn W aT x  cg. Semiespacios abiertos V
con H 1, talesn
que T
x y x . Es decir, cualquier elemento de la envoltura
H D x 2 R de
W a borde
x  c H a HC D
P
λ D= fx 2 R W a x 
= cg λ H
˚ i ˚ i
T n T
Dado un hiperplano , llamaremos semiespacios cerrados de borde H a los conjuntos
˚
C H a x D c,

i=1x 2 Rn W aT xy H> D
C
T i=1
V n W aD n ı ı
c xy2H x xc 2, yR W aT x abiertos
semiespacios < c .deLos
bordesemiespacios
H a H C D x 2 Rde
n
W aborde
T
x>cH y Hson
D convexos; lacunión
x 2 Rn W a T x < . de HC y
˚ ˚ ˚
R
convexa deelXespacio
H es es Los
combinación
semiespacios
R n
. convexa
de borde de,laaunión
H son convexos; lo desumo,
H y H nes+ 1 puntos
el espacio R . de X. C
n

En la figura 8.10 se representa el hiperplano x1 C 4x2 D 11, su vector característico a D Œ 1; 4T y los semiespacios
HC y H .
En la figura A.36 se representa el hiperplano x1 C4x2 D 11, su vector característico a D Œ 1; 4T y los semiespacios
En un hiperplano aT x D c, la constante c determina el desplazamiento del hiperplano del origen. Un hiperplano se
HC y H . puede expresar de la forma fx W aT .x x0 / D 0g, donde x0 es cualquier punto del hiperplano (aT x0 D c). Esa última
expresión se puede trabajar un poco más pues fx W aT .x x0 / D 0g D x0 C a? , donde a? es el complemento ortogonal
de a, es decir fv W aT v D 0g. Lo que lleva a que un hiperplano
a consiste en un desplazamiento x0 más todos los vectores
ortogonales al vector característico a: el conjunto de soluciones de aT x D c: x0 C ker.a/, recordemos.
Un politopo es un conjunto formado por la intersección de un número finito de semiespacios cerrados. Un politopo
H+ cerrados que pasan por un punto.
cónico es un conjunto formado por la intersección de un número finito de semiespacios
y
Un poliedro es un politopo acotado y no vacío. Es fácil comprobarxque la intersección de conjuntos convexos es convexa
x̄0
y que, por lo tanto, los politopos y los poliedros son conjuntos convexos. Si un politopo
HP−
es un poliedro, cualquier punto
se puede expresar como combinación convexa de sus puntos extremos.
a H
Teorema 8.1 Sea C un conjunto convexo e y un punto exterior a la adherencia de C . Existe un vector a tal que
aT y < Kınfx2C aT x.

21

Figura A.36: Hiperplano D2 D1111 yy los


lossemiespacios
semiespacios en los 2
x1 C 4x
Figura 8.10: Hiperplano 2 4x
x1 C en los que divide R2 que divide R

En un hiperplano aT x D c, la constante c determina el desplazamiento del hiperplano del origen.


En un hiperplano aT x D c la constante
Un hiperplano c determina
se puede expresar de la formael
fxdesplazamiento
W aT .x x0 / D 0g, dondedelx0hiperplano deldelorigen. Un hiperplano se
es cualquier punto
fx W aT(a.x
puede expresar de la formahiperplano Esa última donde
expresión es
sexpuede cualquier
trabajar un pocopunto
más puesdel W aT .x x0 / D (aT x D c). Esa última
fx hiperplano
T
x0 D c).
x 0 / D 0g, 0 0
0g D x0 C a? , donde a? es el complementoT ortogonal de a, es decir fv W?aT v D 0g. Lo ? que lleva
expresión se puede trabajara un poco
que un más pues
hiperplano consistefx W adesplazamiento
en un .x x0 / xD 0 más D xlos
0g todos 0C a , donde
vectores a al es
ortogonales el complemento ortogonal
vector
de a, es decir fv W aT v D 0g. Lo quea:lleva
característico a que
el conjunto un hiperplano
de soluciones de aT x D consiste en recordemos.
c: x0 C ker.a/, un desplazamiento x0 más todos los vectores
Un politopo es un conjunto formado por la intersección de un T número finito de semiespacios cerra-
ortogonales al vector característico a: el conjunto de soluciones de a x
dos. Un politopo cónico es un conjunto formado por la intersección de un D ker.a/,
x0 Cfinito
c:número recordemos.
de semiespa-
Hacemos en este punto una incursión
cios cerrados en por
que pasan un punto. [2016] para incluir la figura A.37 que aclara lo expresado de forma
Dattorro
compacta. Un poliedro es un politopo acotado B.3y noSeparating
vacío. Es fáciland Supporting
comprobar Hyperplanes
que la intersección de conjuntos 519
convexos es convexa y que por lo tanto los politopos y los poliedros son conjuntos convexos. En esta
figura se muestran varios politopos; el del centro es un poliedro.
Definición A.79 Un politopo es un conjunto formado por la intersección de un número finito de semiespacios cerrados.
Un politopo cónico es un conjunto formado por la intersección de un número finito de semiespacios cerrados que pasan
por un punto.

Definición A.80 Un poliedro es un politopo acotado y no vacío (figura A.38).

Definición A.81 Se denomina hiperplano soporte o hiperplano de apoyo de un conjunto convexo C a un hiperplano
H tal que H \ C ¤ ; y C  HC o C  H . Es decir, a un hiperplano que contiene al conjunto C en uno de sus
semiespacios cerrados de borde H y algún
Si un politopo punto cualquier
P es un poliedro, frontera dePolytopes
punto
Fig. B.5 se
Cpuede expresar como combinación convexa de
sus puntos extremos.

Teorema 8.1 Sea C un conjunto convexo e y un punto exterior a la adherencia de C . Existe un


Definición A.82 Si P es vector
un politopo convexo y H cualquier hiperplano soporte de P , la intersección F D P \ H
a tal que aT y < Kınfx2C aT x.
define una cara de P . It is easy to see that half spaces are convex sets and that the union of H+ and
D EMOSTRACIÓN
H is . Sea
the whole space.
Existen tres tipos especiales

de caras. ı D Kınf kx yk2 > 0:
x2C
Definition. A set which can be expressed as the intersection of a finite number
of closed half spaces is said to be a 26
convex polytope.
We see that convex polytopes are the sets obtained as the family of solutions
to a set of linear inequalities of the form

a1T x  b1
a2T x  b2
· ·
566 j Apéndice A
60 CHAPTER 2. CONVEX GEOMETRY

a
H + = {y | aT(y − y p ) ≥ 0}

yp c
∂H = {y | aT(y − y p ) = 0} = N (aT ) + y p
y d

H − = {y | aT(y − y p ) ≤ 0}

N (aT ) = {y | aTy = 0}
Figura A.37: De Dattorro [2016] con su notación: un hiperplano @H, desplazado del origen una distancia  y los semiespacios
HC y H ; el ker.a> / D N .a> /, contenido en H . La zona sombreada es una pieza rectangular de semiespacio H con
respecto al cualFigure 28:a es
el vector Hyperplane illustrated
normal, saliendo deB.3 ∂H
esa zona,ishacia
a line
Separating H Cpartially
and bounding
. Supporting
Los puntos halfspaces
y d son 519H−deland
equidistantes
cHyperplanes hiperplano y el
2
vector c d esHnormal Shaded is a rectangular piece of semiinfinite H− with respect to which vector
+ in Ral.mismo
a is outward-normal to bounding hyperplane; vector a is inward-normal with respect
to H+ . Halfspace H− contains nullspace N (aT ) (dashed line through origin) because
aTyp > 0. Hyperplane, halfspace, and nullspace are each drawn truncated. Points c and
d are equidistant from hyperplane, and vector c − d is normal to it. ∆ is distance from
origin to hyperplane.

2.4.1 Halfspaces H+ and H−


Euclidean space Rn is partitioned in two by any hyperplane ∂H ; id est, H− + H+ = Rn .
Figuraconvex)
The resulting (closed A.38: Diversos politopos;
halfspaces,
Fig. both
B.5 el del centro
partially
Polytopes es un by
bounded poliedro
∂H , may be described
H− = {y | aTy ≤ b} = {y | aT(y − yp ) ≤ 0} ⊂ Rn (108)
Definición A.83 Un vértice, unaHarista y unaTfaceta son carasTde un politopo convexo
+ = {y | a y ≥ b} = {y | a (y − yp ) ≥ 0} ⊂ R
n n-dimensional de dimensiones
(109)
It is easy to see that half spaces are convex sets and that the union of H+ and
cero, uno y n 1, respectivamente. n
whereH−nonzero a ∈ R is an outward-normal to the hyperplane partially bounding
vectorspace.
is the whole
Es fácil comprobar que an
H− while la intersección
inward-normal de with
conjuntos
respectconvexos
to H . es Forconvexa y que,
any vector y −por lo tanto,
yp that makeslosanpolitopos y los
Definition. A set which can be expressed+as the intersection of a finite number
poliedros son conjuntos angle withSinormal
obtuse convexos. un politopo es
a , vector
P un poliedro,
y will lie in cualquier punto
the halfspace Hse puede
− on oneexpresar como combinación
side (shaded
of closed half spaces is said to be a convex polytope.
convexa de sus puntos extremos
in Figure 28) ofothevértices.
hyperplane while acute angles denote y in H+ on the other side.
An equivalent
Ya conocemos el conceptoWe de thatmore
seebola intuitive
convex
unidad. representation
polytopes
Se puede are the sets
definir of a en
obtained
también halfspace
as comes
the family
el espacio of about when we
solutions
euclídeo n-dimensional Rn como
n
consider all of
to a set thelinear
points in R closer
inequalities of thetoformpoint d than to point c or equidistant, in the
Euclidean sense; from Figure B.x28,c ; r/ D fxc C ru j kuk  1g:
a1T x  b1
Una bola euclídea es un conjunto convexo. Si H kx−1 = {y xca|k2T2ky
x −r,bdk
2
kx≤2ky − k2  r y 0    1, se tiene
xcck} que
(110)
This representation, in 2terms · ·
k x1 C .1 /x xc kof proximity,
2 D k.x · 1 · both
xisc /resolved
C .1 /.x with2 thexcmore
/k2 conventional
representation of a halfspace (108) by squaring sides of the inequality in (110);
½   kx¾ ·1 · x½c k2 C .1 /kx µ 2 xc¶ k2 ¾ r
T kck2 − kdk a T2
x  b  T c + d
H− convexos
Una familia de conjuntos = y | (c − d) y ≤
similar es la de2los elipsoides.
m = m y |Se − d) yasí
(cdefinen − ≤0 (111)
2
since each individual inequality defines> a half space and the solution family is
E D fx j .x xc / P 1 .x xc /  1g;
the intersection
2.4.1.1 PRINCIPLE of these1: half spaces. (If some ai = 0,of
Halfspace-description theconvex
resultingsets
set can still, as
donde la matriz P  the
0, esreader
decirmayes simétrica
verify, be yexpressed
definida as positiva. Los valores
the intersection of a singulares
finite number—raíces
of halfcuadradas positivas de
The spaces.)
most fundamental principle in convex geometry follows from the geometric
los valores propios— de P, como
Hahn-Banach apuntamos
theorem [266, 2§antes
5.12] en
[19,este1] apéndice,
§in [144, §I.1.2]son las longitudes deany
losclosed
semiejes del hiperelipsoide
Several Wewhich guarantees may be convex
E. Una bola es un elipsoide en el polytopes
que P D are r I.illustrated
Otra forma Fig. B.5.
de definir elnote that
elipsoide a polytope
es
empty, bounded, or unbounded. The case of a nonempty bounded polytope is of
E D fxcthis
special interest and we distinguish C Au casej by kuk 2 
the following.
1g;
Definition. A nonempty bounded polytope is called a polyhedron. 1
donde A es cuadrada y regular. Asumiendo que A es simétrica y definida positiva, A D P 2 proporciona el elipsoide E.
Si A es semidefinida positiva y regular, la última definición de E da un elipsoide degenerado. Un elipsoide degenerado
es también convexo.
B.3 SEPARATING AND SUPPORTING
HYPERPLANES
The two theorems in this section are perhaps the most important results related to
convexity. Geometrically, the first states that given a point outside a convex set, a
hyperplane can be passed through the point that does not touch the convex set. The
second, which is a limiting case of the first, states that given a boundary point of a
convex set, there is a hyperplane that contains the boundary point and contains the
convex set on one side of it.
Norm Cones

Given a norm, norm cone is a convex cone:

C = {(x, t) ∈ Rn+1 |kxk ≤ t}


A.5 Optimización y Programación Matemática j 567

Definición
Example: A.84 Dadaorder
second cualquiera k  k en R , se define la norma bola de radio r
una normacone: n
y centro xc como
fx j kx x k  rg. Es convexa. La norma cono asociada a k  k es el conjunto
c
nC1
C D f.x; t/ j kxk  t g  R :
C = {(x, t) ∈ Rn+1 |kxk2 ≤ t}
Ejemplo A.19 La norma 2
cono de segundo
3 2 orden con 3Trespecto
2 a la norma euclídea
3 2 es 3
8 9
< x
C D f.x;xt/ j kxk2  tg I 0 x
> >
=
= 5 | 4(  ˇ 5 5 4) 5 ≤ 0, t ≥ 0
ˇ  > 
4 4  
: t
> D
xt ˇ ˇ x I 0 −1
0 x
 0; t  0 :t
>
;
t ˇ t 0 1 t

Su forma geométrica se puede ver en la figura A.39.

1
t

0.5

0
1
1
0
0
x2 −1 −1 x1
1
Figura A.39: Frontera de la norma cono en R3 : f.x1 ; x2 ; t/ j .x12 C x22 / 2  t g

A.5.2.1 Conos apropiados y desigualdades generalizadas

Definición A.85 Un cono K  Rn se denomina cono verdadero, o cono apropiado–proper cone, si es convexo,
cerrado, sólido, en el sentido de que su interior no es vacío (K C . K/ D Rn ), y puntiagudo (pointed) lo que significa
que no contiene una línea o que x 2 K; x 2 K H) x D 0, o K \ K D f0g.
Un cono apropiado o verdadero induce desigualdades generalizadas, que son una ordenación parcial, K , de Rn ,
con muchas de las propiedades de un orden estándar de Rn , definida así

x K y ” y x 2 K:

También se escribe x K y si y K x. De forma similar se define la ordenación parcial estricta asociada

x K y ” y x 2 int K:

Si nos referimos como cono apropiado al ortante RnC la ordenación parcial K pasa a ser RnC que es la usual  de Rn
(y la estricta <). Formalmente x RnC y si xi  yi para todo i .
El cono semidefinido positivo SnC es un cono apropiado que induce la desigualdad generalizada X SnC Y si y sólo si
Y X es semidefinida positiva.
Una forma de pensar en un cono convexo cerrado y puntiagudo es como un nuevo tipo de sistema de coordenadas
cuya base es generalmente no ortogonal. Un sistema cónico sería muy parecido al sistema cartesiano habitual cuyo cono
es análogo al primer cuadrante u ortante no negativo.
Las desigualdades generalizadas son un medio para determinar la pertenencia o no a cualquier cono convexo cerrado,
mientras que la denominada expansión biortogonal sería simplemente una expresión de las coordenadas en un sistema
cónico de coordenadas cuyos ejes sin linealmente independientes pero no necesariamente ortogonales.
Cuando el cono K es el ortante no negativo de Rn , estos tres conceptos se corresponden con el prototipo cartesiano.
La expansión biortogonal se convierte en la ortogonal.
568 j Apéndice A

Minimum and minimal elements


A.5.2.2 Elementos mínimos y minimales. Cono dual
Se dice que un x 2 S es el elemento mínimo de S con respecto a la desigualdad generalizada K si para todo y 2 S
not in general a linear ordering : we can have x 6K y and y 6K x
se cumple que x  y. Es decir, si
K
S  x C K:
is the minimum element of S with respect to K if
En esta expresión x C K se refiere a todos los puntos que son comparables con x y mayores o iguales que x de acuerdo
con K . El elemento máximo se define de manera similar. Si un conjunto tiene un elemento mínimo es único.
Se dice que un xy2∈ Sun elemento
S es =⇒ minimal x KdeyS con respecto a la desigualdad generalizada K si para un y 2 S
se cumple que y K x sólo si y D x. Es decir, si y sólo si

.x K/ \ S D fxg:
is a minimal element of S with respect to K if
En esta expresión x K se refiere a todos los puntos que son comparables con x y menores o iguales que x de acuerdo
con K . El único punto en común con S es x. El elemento mínimo es un elemento minimal.
Si K D y RC∈elS,concepto
y de elemento mínimo yyminimal
= x coinciden en el sentido tradicional de mínimo. En la fi-
K x =⇒
gura A.40 se describen geométricamente estos últimos conceptos. También, con algún detalle más general, en A.41.

ple (K = R2+)
S2
S1 x2
the minimum element of S1
a minimal element of S2 x1

Figura A.40: El conjunto S1 tiene un elemento mínimo x1 con respecto a la desigualdad componente a componente en R2 .
El conjunto x1 C K es el sombreado más tenuemente; x1 es el elemento mínimo de S1 dado que S1  x1 C K. El punto x2
ts 2–18
es un elemento minimal de S2 . El conjunto x2 K se muestra en esa parte de la figura de forma más tenue. El punto x2 es
minimal pues x2 K y S2 sólo tienen como elemento común x2

Definición A.86 Si K es un cono, se define el cono dual de K como el conjunto


K  D fy j x > y  0 para todo x 2 Kg

El cono dual siempre es convexo aunque el original K no lo sea. En la figura A.42 se ve la construcción geométrica
del cono dual en dos y tres dimensiones.
Un vector y pertenecerá al cono dual K  si y sólo si y es normal de un hiperplano que soporta a K en su origen. La
geometría de eso se ilustra en la figura A.43.
Si el cono K es apropiado también lo es su cono dual. Si K tiene un interior no vacío su cono dual es puntiagudo. Si
K es convexo y cerrado, K  D K.
Ejemplo A.20 El cono dual de un subespacio V  Rn es su complemento ortogonal V ? D fy j y > v D 0 para todo v 2
V g:
Ejemplo A.21 El cono dual del ortante no negativo RnC es el propio ortante no negativo: y > x  0 para todo x 
0 ” y  0:

Ejemplo A.22 El cono dual de SnC es el propio SnC .


Ejemplo A.23 Si k  k es una norma en Rn , el cono dual del cono K D f.x; t/ 2 RnC1 j kxk  tg es el cono definido
por la norma dual, es decir,
K  D f.u; v/ 2 RnC1 j kuk  vg:
2.7. CONES 83

A.5 Optimización y Programación Matemática j 569

C1 x +K
R2
(a)

x
C2
124 CHAPTER 2. CONVEX GEOMETRY
(b)

y-K

Figura A.41: De Dattorro [2016]. El conjunto C1 tiene


Figure 43: (confer Figure 73) (a)
un elemento mínimo x con respecto al cono K pues dicho cono
Point x is the minimum element of set C1 with respect
trasladado a x contiene todoKelbecause
to cone conjunto
cone 1 . El conjunto
Ctranslated to x ∈C tiene unentire
C12 contains puntoset.minimal en y con
(Cones drawn respecto al cono K pues el
truncated.)
negativo de este trasladado a y 2y Cis2asólo
(b) Point contiene
minimal a y of set C2 with respect to cone K because negative
element
cone translated to y ∈ C2 contains only y . These concepts, minimum/minimal, become
equivalent under a total order.

R2 R3
1

0.8

0.6

K∗ (b)
0.4 (a) K
K ∗
0.2 K
0 q
−0.2

−0.4

−0.6
K∗
−0.8

−1
−0.5 0 0.5 1 1.5

Figura A.42: De Dattorro [2016]. Cómo se construyen los conos duales de sendos conos K en R2 a partir de los ángulos
rectos de los extremos de K
52 2 Convex sets
x ∈ K ⇔ hy , xi ≥ 0 for all y ∈ G(K∗) (367)

Figure 60: Dual cone construction by right angle. Each extreme direction of a proper
polyhedral cone
y is orthogonal to a facet of its dual cone, and vice versa, in any dimension.
K
(§2.13.6.1) (a) This characteristic guides graphical construction of K dual cone in two
dimensions: It suggests finding dual-cone boundary ∂z by making right angles with extreme
directions of polyhedral cone. The construction is then pruned so that each dual boundary
vector does not exceed π/2 radians in angle with each and every vector from polyhedral
cone. Were dual cone in R2 to narrow, Figure 61 would be reached in limit. (b) Same
polyhedral cone and its dual continued into three dimensions. (confer Figure 68)

Figura A.43: El semiespacio con normal hacia dentro y contiene al cono K por lo que y 2 K  . El semiespacio con normal
hacia dentro z no contiene a K por lo que z … K 
Figure 2.22 Left. The halfspace with inward normal y contains the cone K,
so y ∈ K ∗ . Right. The halfspace with inward normal z does not contain K,
so z 6∈ K ∗ .

Example 2.23 Nonnegative orthant. The cone Rn


+ is its own dual:

xT y ≥ 0 for all x  0 ⇐⇒ y  0.
570 j Apéndice A

Si un cono K es apropiado e induce la desigualdad generalizada K , su dual K  es también apropiado e induce por
consiguiente una desigualdad generalizada K  dual de K . Algunas de sus propiedades son

x K y si y sólo si > x  > y para todo  K  0


x K y si y sólo si > x < > y para todo  K  0;  ¤ 0:

Es interesante poder caracterizar un elemento mínimo o minimal de un conjunto mediante desigualdades duales. Un x
es el elemento mínimo de un conjunto S , con respecto a la desigualdad generalizada K si y sólo si para todo  K  0
x es el único mínimo de > z, con z 2 S . Geométricamente esto significa que para cualquier  K  0, el hiperplano

fz j > .z x/ D 0g

es un hiperplano que soporta estrictamente a S en x (sólo en el punto x). Esto el lo que ilustra la figura A.44.
Minimum and minimal elements via dual inequalities

nimum element w.r.t. K


Minimum and minimal elements via dual inequalities
s minimum element of S iff for all
≻K ∗ 0, x is the unique minimizer
minimum element w.r.t. K S
T
λ z over S
x is minimum element of S iff for x all
λ ≻K ∗ 0, x is the unique minimizer S
nimal element
of λw.r.t.
Figura
Kelemento
TA.44: Un
z over S mínimo caracterizado mediante desigualdades duales. El punto x es el elemento mínimo del
conjunto S con respecto a R2 . Esto es equivalente a que para cada   0 el hiperplano fz j > .z
C x/ D 0g soporta
if x minimizes λT z over
estrictamente Sx.for
a S en Esesome λ≻
hiperplano K ∗ 0,a then
contiene x deissus
S en uno minimal x sólo en x
lados y lo toca
λ1
minimal element w.r.t. K un elemento minimal. Si  K 
De forma similar veamos cómo caracterizar 0 y x minimiza > z para todo z 2 S ,
entonces x es minimal. Esto es Tlo que expresa la figura A.45.
• if x minimizes
x1 λ Sz over S for some λ ≻K ∗ 0, then x is minimal
λ1
λ2
x2

x1 S
if x is a minimal element of a convex set S, then there exists a nonzero
λ2
λ K ∗ 0 such that x minimizes λT z over S x2

vex sets Figura A.45: El conjunto de puntos minimales de S  R2 con respecto a R2C están2–22
en la línea más oscura inferior del borde
de•S . if
El x
queisminimiza > >
a minimal
1 z en Selement of a convex
es x1 y es minimal porque 1 set S,quethen
 0. El there
minimiza 2 z exists
en S es elapunto
nonzero
x2 , otro punto
minimal de S pues 2  0 T
λ K ∗ 0 such that x minimizes λ z over S
Para probarlo, supongamos que  K  0 y que x minimiza > z para todo z 2 S pero x no es minimal, es decir,
existe
Convex 2 S , z ¤ x tal que z K x. Entonces > .x z/ > 0, lo que contradice la suposición de que
un zsets x es el que
2–22
>
minimiza  z en S para todo z 2 S .
Lo contrario es en general falso: un punto x puede ser minimal en S pero no el que minimize > z en S para todo
z 2 S . El ejemplo que lo demuestra es el de la figura A.46. Este ejemplo pone de manifiesto la importancia de la
convexidad. Si S es convexo, se puede decir que para cualquier elemento minimal x existe un  K  0, no cero, tal que
x minimiza > z en S para todo z 2 S.
Figure 2.24 A set S ⊆ R2 . Its set of minimal points, with respect to R2+ , is
shown as the darker section of its (lower, left) boundary. The minimizer of
λT1 z over S is x1 , and is minimal since λ1 ≻ 0. The minimizer of λT2 z over
S is x2 , which is another minimal point of S, since λ2 ≻ 0.

A.5 Optimización y Programación Matemática j 571

Figura A.46: El punto x es un punto


Figureminimal
2.25 The de S x2
point R2 conelement
is a minimal respecto R2 2with
of S ⊆a R . Sin embargo,
respect to no existe un  para el cual x
R2+ . However there exists no λ for which x minimizes λT z C
over z ∈ S.
>
minimiza  z para todo z 2 S .

A.5.2.3 Hiperplano separador. Lema de Farkas

Teorema A.47 Sea C un conjunto convexo e y un punto exterior a la adherencia de C . Existe un vector a tal que
aT y < Kınfx2C aT x.

Demostración. Sea
ı D Kınf kx yk2 > 0:
x2C
Existe un x0 en la frontera de C tal que kx0 yk2 D ı. Esto es así pues la función continua f .x/ D kx yk2 alcanza
su mínimo en cualquier conjunto cerrado y acotado por lo que sólo es necesario considerar x en la intersección de la
adherencia de C y la bola abierta de centro y y radio 2ı.
A continuación probaremos que a D x0 y satisface las condiciones del enunciado del teorema. En efecto, para
cualquier ˛, 0  ˛  1, al ser C un conjunto convexo, el punto x0 C ˛.x x0 / 2 C , por lo que
kx0 C ˛.x x0 / yk22  kx0 yk22 :
Desarrollando,
2˛.x0 y/T .x x0 / C ˛ 2 kx x0 k22  0:
Considerando esta expresión cuando ˛ ! 0C, se tiene que
.x0 y/T .x x0 /  0
o que
.x0 y/T x  .x0 y/T x0 D .x0 y/T y C .x0 y/T .x0 y/
D .x0 y/T y C ı 2 :
Haciendo a D x0 y queda probado el teorema.
La interpretación geométrica de este teorema es que dado un conjunto convexo C y un punto y exterior a la adherencia
de C existe un hiperplano que contiene a y, sin tocar a C , estando C en uno de sus semiespacios abiertos. Ese hiperplano,
de vector característico a en el teorema, se denomina hiperplano separador de C e y.
Si C y D son dos conjuntos convexos disjuntos, C \ D D ;, existe entonces un a ¤ 0 y un b tales que aT x  b, para
todo x 2 C , y aT x  ˚ b, para todo x 2 D. Dicho de otra manera, la función aT x b es no positiva en C y no negativa
T
en D. El hiperplano x W a x D b es un hiperplano separador de los conjuntos C y D como se ve en la figura A.47.
Existen bastantes principios de dualidad (en especial en la teoría y técnicas de optimización) que relacionan un pro-
blema en términos de vectores en un espacio vectorial con otro en términos de subespacios en ese espacio. En varios de
esos principios está presente la relación que se ilustra en la figura A.48 que indica que la distancia más corta de un punto
a un conjunto convexo es igual al máximo de las distancias desde el punto a los hiperplanos que separan el conjunto
convexo del punto. El problema original de minimización sobre vectores se convierte en otro de maximización sobre
hiperplanos.
Teorema A.48 Sea C un conjunto convexo e y un punto frontera de C . Existe un hiperplano que contiene a y y a C
en uno de sus semiespacios cerrados.
E2 is minimal, since no other ellipsoid (centered at the origin) contains the
points and is contained in E2 .

572 j Apéndice A

aT x ≥ b aT x ≤ b
578 APPENDIX E. PROJECTION

D
∂H−
C C
(a)

a
PC x
H−

H+

Figura A.47:
Figure 2.19 The hyperplane {x |Hiperplano separadorthe
aT x = b} separates entre C yD
disjoint convex sets
P∂H x
C and D. The affine function aT x − b is nonpositive on C and nonnegative

κa
on D.
x

(b)

Figure 183: Dual


¡ interpretation
¢ of projection of point x on convex set C in R2 .
Figura A.48: Distancia
(a) más corta
κ = (a a) a xde
− σ un
T −1 T
(a) .punto
C a un conjunto
(b) Minimum convexo
distance from x to C is en términos
found by de hiperplanos separadores. Dattorro [2016]
maximizing distance to all hyperplanes supporting C and separating it from x . A convex
problem for any convex set, distance of maximization is unique.

Demostración. Sea fy .k/ g una sucesión de puntos exteriores a la adherencia de C . Sea fa.k/ g la sucesión de puntos
normalizados, ka.k/ k2 D 1, obtenida de aplicar el teorema anterior a la sucesión anterior, tales que,
 T  T
a.k/ y .k/ < Kınf a.k/ x:
x2C

Como fa.k/ g es una sucesión acotada, una subsucesión fa.k/ g, k 2 H, convergerá a un límite a. Para este a se tiene que,
para cualquier x 2 C ,
 T  T
aT y D lKım a.k/ y .k/  lKım a.k/ x D aT x:
k2H k2H

Un hiperplano que contiene un conjunto convexo C en uno de sus semiespacios cerrados y que contiene algún punto
frontera de C se denomina hiperplano de apoyo o hiperplano soporte de C .
De acuerdo con esta definición, el teorema anterior dice que dado un conjunto convexo C y un punto frontera y de C
existe un hiperplano˚ de apoyo de C que contiene y.
En la figura A.49 x W aT x D aT x0 es el hiperplano de apoyo de C en el punto x0 : el punto x0 y el conjunto C están
separados por el hiperplano fx W aT x D aT x0 g. Geométricamente quiere decir que el hiperplano fx W aT x D aT x0 g
es tangente al conjunto C en x0 y el semiespacio x W aT x  aT x0 contiene a C .
Si S es un politopo de dimensión 3 en R3 —un cubo— y H un plano que se traslada en R3 hasta que apenas se apoya
en el cubo, pero no corta el interior de éste, hay tres posibilidades para H \ S dependiendo de la orientación de H . Se
ven en la figura A.50.
Lema A.49 Lema de Farkas. El sistema de ecuaciones
.I / Ax D b; x  0;
%&'*/*5*0/ /HW S EH D FRPSDFW FRQYH[ VXEVHW RI Rn $ QRQHPSW\ VXEVHW F RI S LV FDOOHG
D SURSHU IDFH RI S LI F ¤ S DQG WKHUH H[LVWV D K\SHUSODQH H D Œf d  VXFK
WKDW F D S \ H DQG HLWKHU f .S /  d RU f .S /  d 7KH K\SHUSODQH H LV FDOOHG
D VXSSRUWLQJ K\SHUSODQH WR S ,I WKH GLPHQVLRQ RI F LV k WKHQ F LV FDOOHG D
N IDFH RI S
,I P LV D SRO\WRSH RI GLPHQVLRQ k WKHQ P LV FDOOHG D N SRO\WRSH $ IDFH
RI P LV FDOOHG D YHUWH[ SOXUDO YHUWLFHV D IDFH LV DQ HGJH DQG D .k 1/
A.5 Optimización y Programación Matemática j 573
2.6 Dual cones and generalized inequalities 51
GLPHQVLRQDO IDFH LV D IDFHW RI S

&9".1-&  6XSSRVH S LV D FXEH LQ R3 :KHQ D SODQH H LV WUDQVODWHG WKURXJK


R3 XQWLO LW MXVW WRXFKHV VXSSRUWV WKH FXEH EXW GRHV QRW FXW
a WKURXJK WKH LQWHULRU RI WKH
FXEH WKHUH DUH WKUHH SRVVLELOLWLHV IRU H \ S GHSHQGLQJ
x0
RQ WKH RULHQWDWLRQ RI H 6HH
)LJXUH C

H \ S PD\ EH D GLPHQVLRQDO VTXDUH IDFH IDFHW RI WKH FXEH


H \ S PD\ EH D GLPHQVLRQDO HGJH RI WKH FXEH
H \ S PD\ EH D GLPHQVLRQDO YHUWH[ RI WKH FXEH
FigureFigura
2.21 TheA.49: Hiperplano
hyperplane {x | aT x soporte
= aT x0 } de C enCxat
supports 0 x0 .

that the point x0 andHthe set C are separated by the hyperplane {x | aT x = aT x0 }.


The geometric interpretation is H that the hyperplane {x | aT x = aT x0 } is tangent
to C at x0 , and the halfspace {x | aT x ≤ aT x0 } contains C. This is illustrated in
figure 2.21.
A basicS result, called the supporting hyperplaneS theorem, states that for Sany
nonempty convex set C, and any x0 ∈ bd C, there exists a supporting hyperplane to
C at x0 . The supporting hyperplane theorem is readily proved from the separating
hyperplane theorem. We distinguish two cases. If the interior of C is nonempty,
the result follows immediately by applying the separating hyperplane theorem to H
the sets {x0 } and int C. If the interior of C is empty, then C must lie in an affine
set of dimension less than n, and any hyperplane containing that affine set contains
HC S es xbidimensional
! and 0 , and is a (trivial) supporting
H! S es unidimensional
hyperplane. H ! S es de dimensión 0
There is also a partial converse of the supporting hyperplane theorem: If a set
'*(63&  closed, has nonempty interior, and has a supporting hyperplane at every point
Figura A.50: H \ S esisuna cara cuadrada bidimensional del cubo, una arista unidimensional del cubo o un vértice de
in its boundary, then it is convex. (See exercise 2.27.)
dimensión 0 del cubo
0RVW DSSOLFDWLRQV RI SRO\WRSHV LQYROYH WKH YHUWLFHV LQ VRPH ZD\ EHFDXVH WKH\ KDYH
D2.6
VSHFLDODual cones
SURSHUW\ and
WKDW LV generalized
LGHQWLÀHG inequalities
LQ WKH IROORZLQJ GHÀQLWLRQ
no tiene solución si y sólo si la
2.6.1 Dual conestiene el sistema
T T
%.II
& '/* / * 5 * 0 //HW SLetEHKDbeFRQYH[ A S 0LQ
$y SRLQW bT y >
;S LV FDOOHG DQ0;
H[WUHPH SRLQW RI S LI S LV
a cone. VHW
The set
donde A 2 Rmn . QRW LQ WKH LQWHULRU RI DQ\ OLQH VHJPHQW WKDW OLHV LQ S
K ∗ = {y | xT y ≥ 0 for all x ∈ K}
LI [; \ 2 S
0RUH SUHFLVHO\ (2.19)
DQG S 2 xy WKHQ S D [ RU S D \ 7KH VHW RI DOO H[WUHPH SRLQWV RI S LV FDOOHG WKH
Se debe a Gyula Farkas,isHungría
called the1847-1930.
dual cone of K. As the name suggests, K ∗ is a cone, and is always
SURÀOH RI S
convex, even when the original cone K is not (see exercise 2.31).
Geometrically, y ∈ K ∗ if and only if −y is the normal of a hyperplane that
supports K at the origin. This is illustrated in figure 2.22.

Example 2.22 Subspace. The dual cone of a Farkas


subspace V ⊆ Rn (which is a cone) is
its orthogonal complement V ⊥ = {y | y T v = 0 for all v ∈ V }.

Demostración. El lema se puede reformular de la siguiente manera. Si existe un x  0 tal que Ax D b, no existe
ningún y tal que y T A  0T y bT y > 0. Recíprocamente, si no existe ningún x  0 tal que Ax D b, existe un y tal
que y T A  0T y bT y > 0.
Supongamos que el sistema (I) tiene una solución x tal que Ax D b y x  0. Sea y un punto tal que y T A  0T . En
este caso bT y D x T A T y  0 pues x  0 y y T A  0T . Esto demuestra que bT y no puede ser positivo y, por lo tanto,
el sistema (II) no tiene solución.
Supongamos ahora que el sistema (I) no tiene solución. Esto quiere decir que b … S D fv D Ax W x  0g; es decir que
b no pertenece al politopo cónico S. Observando la figura A.51, está claro que si b … S, existe un hiperplano separador
definido por un y, que separa S y b, y para el cual y T ai  0, i D 1; : : : ; n y y T b > 0, es decir, y forma un ángulo de
más de 90 grados con cada uno de los vectores columna de A y de menos de 90 grados con b (el hiperplano separador
del politopo cónico S de la figura debería “casi” tocar a éste a lo largo de a5 . El hiperplano de apoyo correspondiente, sí
tocaría a a5 ). Esto verifica que el sistema (II) tiene solución.

El lema de Farkas es un resultado importante para el estudio de sistemas lineales de inecuaciones. Su interpretación
geométrica es la siguiente:
574 j Apéndice A 8.1 Dualidad y condiciones de óptimo 473

Politopo cónico S

a2 a3
a4

a1
474 a5
Capı́tulo 8. Dualidad y análisis de sensibilidad

Semiespacio abierto {y : bT y > 0}


Hiperplano
a2
an
a1 a3

b
b∈
/S

y
Figura A.51: Demostración
Figura 8.2del lema de Farkas
Descripción geométrica de la existencia de un hiperplano separador
Cono {y : y T A ≤ 0T }
1. Si ai ; i DEl1;par ; n, sonP
: : : (P)-(D) losdenomina
se n vectores columna de en
habitualmente, la matriz A, que
la literatura se cumpla que
especializada, forma D Ax, x  0, quiere
b simétrica
474 decir que
Capı́tulo de el
8. la vector
Dualidad
dualidad.yb D deniD1
análisis ai xi , xi  0; en otras palabras, que b pertenece al politopo cónico generado por
sensibilidad
los vectoresA columna
continuaciónde A. En la figura
exponemos dos A.52, a la que
teoremas izquierda, se muestra
caracterizan un ejemplo
las soluciones donde
óptimas delelpar
sistema
de (I) no tiene
problemas primal-dual. Figura 8.3
El sistema (I) del lema de Farkas no tiene solución. La tiene (II)
T
{yHolguras)
Semiespacio abiertode
Teorema 8.3 (Complementariedad : b y > 0} Sean x e y soluciones factibles del par de
programas primal-dual en forma simétrica (P)-(D)a 2de (8.8). Las condiciones necesarias y
suficientes para que seanaóptimos
2 de sus respectivos problemas son:
an
a1 a3 (cT − y T A)x = 0 an (8.9)
a1 b
y
T b
y (Ax − b) = 0. (8.10)
Semiespacio abierto {y : bT y > 0}

Demostración. Como x e y son soluciones factibles de (P) y (D), respectivamente, se tiene


que
s = Ax − b ≥ 0, x ≥ 0 (8.11)
y
wT = cT − y T A ≥ 0Cono
T A ≤ 0T }
y T0.
, {yy :≥ (8.12)
Cono {y : y T A ≤ 0 T }

Figura 8.4
El sistema (II) del lema de Farkas no tiene solución. La tiene (I)
Figura 8.3
Figura A.52: Izquierda: El sistema (I) del lema de Farkas no tiene solución; si (II). Derecha: El sistema (II) no tiene solución;
la tiene (I) El sistema (I) del lema de Farkas no tiene solución. La tiene (II)

a2
solución: el vector b no pertenece al cono generado por a1 , a2 , a3 y an . La intersección del cono fy W y T A  0T g
(conjunto formado por los vectores y que forman un ángulo mayor o igual de 90ı con los vectores columna de la
matriz A) y el semiespacio abierto fy W bT y >an0g, no es el conjunto vacío: el sistema (II) tiene solución, pues b
y cualquier y en ela1cono que define
b la zona sombreada forma un ángulo menor de 90ı y, por lo tanto, bT y > 0.
2. El sistema (II) no tiene solución si la intersección del cono fy W y T A  0T g y el semiespacio abierto fy W
bT y > 0g es el conjunto vacío. En la figura A.52 a la
Semiespacio derecha
abierto {y : bse
T
y muestra
> 0} un ejemplo donde el sistema (II) no tiene
solución. Todo vector y en la zona que define el cono indicado forma un ángulo mayor de 90ı con b. La tiene sin
embargo (I) pues b pertenece al cono generado por a1 , a2 y an .

Cono {y : y T A ≤ 0T }

Figura 8.4
El sistema (II) del lema de Farkas no tiene solución. La tiene (I)
A.5 Optimización y Programación Matemática j 575

A.5.3 Caracterización de las soluciones del problema de optimización y condi-


ciones que cumple un punto óptimo
Volvamos al problema general de Optimización

minimizar
n
f .x/
x2R
sujeta a ci .x/ D 0; i 2 E;
cj .x/  0; j 2 I;

donde las función objetivo f y las condiciones ci y cj son, en general, no lineales, continuas y tienen derivadas parciales
continuas hasta al menos primer orden. Los conjuntos E y I contienen los índices de las condiciones que son de igualdad
y de desigualdad, respectivamente. El conjunto de puntos que satisfacen todas las condiciones se denomina región
factible.
Un punto x que satisfaga todas las condiciones se dice regular si los vectores gradiente del conjunto de condiciones
activas en ese punto son linealmente independientes.
Teorema A.50 Condiciones de óptimo de primer orden de Karush-Kuhn-Tucker. Supóngase que x  es un punto
regular y mínimo local del problema general de programación matemática anterior. Existe un vector de multiplicadores
de Lagrange,  , con coeficientes i , i 2 E [ I, tal que se cumple que
rx L.x  ;  / D rf .x  / T c.x  / D 0;
ci .x  / D 0; para todo i 2 E;
ci .x  /  0; para todo i 2 I;
i  0; para todo i 2 I;
i ci .x  / D 0; para todo i 2 E [ I:

Estas condiciones fueron formuladas por Harold William Kuhn, EE.UU., 1925-2014, y Albert William Tucker, Ca-
nadá, 1905-1995, en 1951, con el fin de extender la teoría de Lagrange a la caracterización de los puntos óptimos de
problemas de programación lineal y no lineal sometidos a restricciones. Posteriormente se descubrió que en 1939 Wi-
lliam Karush, EE.UU., 1917-1997, ya había trabajado sobre estas condiciones, por lo que desde ese momento se les pasó
condiciones de Karush-Kuhn-Tucker.
a denominar 264 Richard W. Cottle

Karush Kuhn Tucker

William Karush, circa 1987 Fritz John at NYU, circa 1987

Un caso particular del problema de programación matemática enunciado es el de Programación Lineal:

min. c T x
s. a Ax D b
x  0:

Así expresado se denomina en forma estándar. La región factible, o conjunto de soluciones del programa lineal, P D
fx 2 Rn W Ax D b; x Harold es un
0g, Kuhn politopo
and Albert Tucker, 1980convexo.
at von Neumann Prize presentation

Teorema A.51(Printed
Equivalencia entre puntos extremos y soluciones básicas. Sean A 2 Rmn una matriz de rango m,
with permission of Larry Karush; NYU; Harold Kuhn and Alan Tucker.)

m
b 2 R y elhaving
politopo convexo
come to the United States from Bialystok which was then under Russian
control. (It is now in Poland.) As a child, William P wasDknown
fx 2 Rn W Ax D b; x  0g :
as “Willie;”
his older brother Fred was called “Freddie” [39]. They eventually had two
younger siblings, Jack and Esther. Of the four, only Esther is still living. Willie
Un x 2 P es un this
outgrew punto extremo
diminutive name andde P si
became y sólo
known si los
as “Will.” vectores columna de A asociados a los coeficientes positivos de
He attended
public schools in Chicago, graduating from Murray F. Tuley High School in
x son linealmente
June, 1934. independientes.
From that point on, his Bachelor of Science, Master of Science,
and Doctor of Philosophy were all earned at the University of Chicago in 1938,
1939, and 1942, respectively [18].
Based on an entry in the 17th Edition of American Men & Women of Science
[1, p. 215], the table below gives a summary of the positions held by William
Karush. The table does not make explicit the fact that during World War
II, Karush worked on the Manhattan Project which culminated in the atomic

Documenta Mathematica · Extra Volume ISMP (2012) 255–269


576 j Apéndice A

Demostración. x D ŒxN T ; 0T T , xN > 0, y designamos por A N las p primeras columnas de la matriz A, se tiene que
N
Ax D A xN D b.
Probemos primero la necesidad de la condición enunciada. Supongamos que las columnas de A N no son linealmente
independientes. En este caso existirá un vector w N
N ¤ 0 tal que A w N D 0. De N N xN D b y, para un
0 N N
 aquí00 queA.
N
xN ˙
N
N DA
 "w/
" suficientemente pequeño, que .xN ˙ "w/ N  0. Los puntos y D xC"
0
w
yy D x
0
"w están, por consiguiente, en
P . Además, dado que x D .y 0 C y 00 /=2, x no puede ser un punto extremo de P . Como consecuencia de esto, si x es un
punto extremo, las columnas de la matriz A N son linealmente dependientes.
Probemos ahora la suficiencia. Supongamos que x no es un punto extremo de P . Esto quiere decir que x D y 0 C
.1 /y 00 , donde y 0 ; y 00 2 P; y 0 ¤ y 00 y 0 <  < 1. Como x e y 0 están en P , A.x y 0 / D Ax Ay 0 D b b D 0.
Además, dado que  y 1  son estrictamente positivos, los últimos n p coeficientes de y 0 y, por consiguiente, de
x y 0 , han de ser cero pues lo son los de x. Las columnas de la matriz A, N en consecuencia, son linealmente dependientes.
N
De aquí que, si las columnas de A son linealmente independientes, x es un punto extremo.

Definición A.87 Una dirección del politopo P D fx 2 Rn W Ax D b; x  0g es un vector no nulo, d 2 Rn , tal que
para todo x0 2 P el rayo fx 2 Rn W x D x0 C d;   0g pertenece a P .
Una dirección d de un politopo P se dice extrema si no puede ponerse como combinación lineal no negativa de dos
direcciones diferentes de P . Es decir, no existen dos direcciones d1 y d2 en P , d1 ¤ d2 , y unos ˛1 ; ˛2 > 0, tales que
d D ˛1 d1 C ˛2 d2 .
Cualquier dirección de un politopo se puede expresar como combinación lineal no negativa de las direcciones extremas
del politopo. Si P es un poliedro, obviamente, no tiene direcciones.
Teorema A.52 Teorema de la representación. Todo punto del politopo P D fx 2 Rn W Ax D b; x  0g se puede
expresar de la forma X
xD i vi C d;
i 2I
P
donde fvi W i 2 I g es el conjunto de puntos extremos o vértices de P , i 2I i D 1, i  0, y d, o es una dirección
de P , o d D 0.

Demostración. La haremos por inducción en p, número de coeficientes positivos de x. Si p D 0, el teorema es obvio,


pues x D 0 es un punto extremo. Supongamos que se cumple lo enunciado para puntos con menos de p coeficientes
positivos y que x tiene p coeficientes positivos.
Si x es un punto extremo, como x D vi para algún i 2 I , el teorema es obvio. Supongamos por tanto que x no es
un punto extremo. En este caso existe un vector w ¤ 0, con wi D 0 si xi D 0, tal que Aw D 0. Se pueden dar los tres
casos siguientes:
(a) Que w tenga coeficientes positivos y negativos. Consideremos los puntos x. / D x C  w en la recta que pasa
por x que determina w, y sean  0 y  00 el menor valor positivo y mayor valor negativo, respectivamente, de  para
los que x. / tiene al menos un coeficiente cero más que los que tiene x. Los puntos x 0 D x. 0 / y x 00 D x. 00 /
pertenecen claramente a P por lo que, por la hipótesis de inducción, al tener un coeficiente nulo más, se pueden
expresar según lo enunciado en el teorema. En consecuencia, como x está en la recta que une x 0 y x 00 , se puede
expresar de la siguiente manera
x D x 0 C .1 /x 00 donde  D  00 =. 0  00 /
! !
X X
D 0i vi C d 0 C .1 / 00i vi C d 00
i 2I i 2I
X 00

D 0i C .1 /i vi C d 0 C .1 /d 00 :
i 2I
P P
Como 0 <  < 1, 0i  0 y 00i  0 para todo i 2 I , i 2I 0i D i 2I 00i D 1 y Ad 0 D Ad 00 D 0, d 0  0 y
d 00  0. Se deduce entonces que
00
X
i D 0i C .1 /i  0 para todo i 2 I; i D 1;
i 2I
d D d 0 C .1 /d 00  0 y Ad D 0;
A.5 Optimización y Programación Matemática j 577

quedando probado que x se puede expresar de la forma enunciada.


(b) Que w  0. Definamos x 0 como en el caso (a). El punto x se puede expresar como x D x 0 C  0 . w/, con  0 > 0.
Como x 0 se puede expresar por inducción en la forma deseada y . w/ es una dirección en P , x también se puede
expresar de la forma enunciada.
(c) Que w  0. Este caso se prueba igual que el caso (b) sin más que sustituir x 0 ,  0 y w por x 00 ,  00 y w,
respectivamente.

Corolario A.53 Si el politopo P D fx 2 Rn W Ax D b; x  0g es no vacío, tiene al menos un punto extremo o


vértice.

Corolario A.54 Si el politopo P D fx 2 Rn W Ax D b; x  0g es cerrado y acotado (es un poliedro), todo punto


x 2 P se puede expresar como combinación convexa de sus puntos extremos.

x4

x3

x5
x2
y
x1

Figura A.53: Representación de un punto de un politopo (poliedro) como combinación convexa de puntos extremos

Teorema A.55 Teorema fundamental de la Programación Lineal. Dado un politopo no vacío P D fx 2 Rn W Ax D


b; x  0g de soluciones de un PL, el valor mínimo de la función objetivo c T x, para x 2 P , se alcanza en un punto
extremo de P (solución básica factible óptima), o c T x no está acotada inferiormente en P .

Demostración. Sea V D fvi W i 2 I g el conjunto de puntos extremos de P . Como P es no vacío, al menos tiene un
punto extremo vi 2 V . De acuerdo con el teorema de la representación, o el politopo P posee una dirección d tal que
c T d < 0, o tal dirección no existe. Consideremos estos dos casos.
(a) El politopo P tiene una dirección d tal que c T d < 0. En este caso P no está acotado y el valor de la función
objetivo tiende a 1 en la dirección d.
(b) El politopo P no tiene una dirección d tal que c T d < 0. En este caso cualquier x 2 P se puede expresar de una
de las dos maneras siguientes:
X X
xD i vi donde i D 1; i  0 o
i2I i 2I
X X
xD i vi C dN donde i D 1; i  0 y c T dN  0:
i2I i 2I

En ambos casos, suponiendo que c T vmi n es el menor de los elementos del conjunto fc T vi W i 2 I g, se tiene que
!
X  X
T T T
c x i c vi  c vmi n i D c T vmi n :
i 2I i2I

Es decir, el mínimo de c T x se alcanza en un punto extremo de P : vmi n .


DUALITY

• Two different views of the same object.


578 j Apéndice A

• Example: Dual description of signals.


A.5.4 Dualidad en optimización
Las variables duales y los conjuntos de elementos duales tienen interpretaciones y significaciones muy relevantes en
optimización. Se danAenunion
muchosof problemas
points An intersection
matemáticos of hyperplanes
y modelos de realidades físicas, donde se toman decisiones u
optimizan recursos. Time domain FrequencyTime
Por ejemplo: domain domain Frequency domain
La tensiones (variables primales) y las intensidades (duales) en circuitos eléctricos donde se optimizan los flujos de
energía y los costes para satisfacer la demanda.
La descripción de señales en el dominio del tiempo (problema primal) y en el de frecuencia (dual).
Los niveles de producción de productos (variables primales) y los precios (duales) a los que los pagan los consumi-
dores o clientes.
La tensiones (variables primales) y los desplazamientos (duales) en el análisis o diseño de estructuras mecánicas.
• Dual
Los conjuntos, description
o unión of closed
de elementos, convexos (variablesconvex
primales) y sets
la intersección de semiespacios (duales) que
los delimitan, como se ve en la figura A.54.

Figura A.54: Unión de puntos e intersección de semiespacios que lo delimita

A union
Los problemas duales,of
en points
A union
general, its points
Anofintersection
posibilitan Anvalores
acotar los intersection
of hyperplanesof halfspaces
alcanzables por los primales. Permiten poder saber
Time domain
cuándo una aproximación a la Abstract
solución deMin-Common/Max-Crossing
Frequency domain
un problema Theorems
es “suficientemente” buena.
La solución óptima de un problema dual de otro primal, en optimización, certifica que se ha alcanzado o se pude
alcanzar la del primal.
Por estas consideraciones y porque los problemas duales en optimización a menudo tienen una estructura más agrada-
ble o manejable que los primales es por lo que pasamos a exponer —a grandes rasgos— sus principales características y
cómo deben ser estudiados.
La Dualidad juega un papel destacado en la optimización de problemas de programación lineal y de programación
no lineal. Sirve para caracterizar y verificar la condición de un óptimo de un proceso iterativo, y las condiciones en
que se da, para analizar la sensibilidad de una solución a la variación de los parámetros del problema, para estudiar
la velocidad de convergencia de determinados algoritmos de optimización que usan su formulación y para contemplar
diversos aspectos geométricos que permiten interpretar mejor lo que se está haciendo en la búsqueda de una solución.
Las ideas y formulación que exponemos a continuación siguen muy de cerca lo que se presenta en los libros de
Boyd y Vandenberghe [2004], Luenberger [1969] y Luenberger y Ye [2016]. Se basa en una forma elegante y global de
contemplar la dualidad en términos de conjuntos e hiperplanos que tocan esos conjuntos.
Los métodos numéricos basados en la dualidad siguen el enfoque o punto de vista de que las incógnitas fundamentales
asociadas a un problema de optimización con condiciones son los Multiplicadores de Lagrange —por Joseph-Louis
Lagrange, Turin, 1736-París, 1813—.

Lagrange

Una vez se conocen estos multiplicadores la determinación del punto de solución es simple (al menos en algunas situa-
ciones). Los métodos duales, por lo tanto, no acometen el problema original con condiciones —problema primal—, sino
que atacan un problema alternativo, el problema dual, cuyas incógnitas son los multiplicadores de Lagrange del proble-
ma primal. Para un problema con n variables y m restricciones o condiciones de igualdad, los métodos duales trabajan en
A.5 Optimización y Programación Matemática j 579

el espacio m-dimensional de los multiplicadores de Lagrange. Debido a que estos multiplicadores miden sensibilidades
del problema, a menudo tienen interpretaciones intuitivas significativas, como precios asociados con recursos escasos,
por lo que su búsqueda es a menudo la materialización de un problema práctico de la vida cotidiana, y tan atractivo o
más como el de buscar
436 los valores
Chapterdel 14 óptimo
Dual anddelCutting
problema original
Plane o problema primal.
Methods
Los multiplicadores de Lagrange definen hiperplanos que pueden ser considerados los duales de puntos en un espacio
vectorial. Esta forma teórica de interpretar la dualidad proporciona una simetría entre los problemas primal y dual, la cual
pude considerarse perfecta
considered si los
as problemas son convexos.
dual to points in a vectorSispace.
no lo son,
The latheory provides la
imperfección a plasma
symmetry el denominado gap de
dualidad, o brecha dual,
betweenqueprimal
tiene una
and interpretación
dual problems geométrica muy sencilla
and this symmetry can be en este contexto
considered y mucha importancia en
as perfect
los algoritmos actuales de programación
for convex problems. lineal y no lineal.problems the “imperfection” is made clear
For non-convex
Los multiplicadores de Lagrange del problemaa primal,
by the duality gap which has que mideninterpretation.
simple geometric las sensibilidades del problema
The global theory, original a variacio-
nes en los coeficientes que determinan las condiciones de este problema, determinan una especiewe
which is presented in this section, serves as useful background when later de penalizaciones que
se introducen en su specialize to a local
función objetivo porduality theory
no utilizar that can be used
adecuadamente even without
los recursos convexity
que fijan and
esas condiciones. La función
which
de Lagrange incorpora así istoda
central to the understanding
la información disponibleofdel
theproblema.
convergence of dual algorithms.
La teoría que se exponeAs aencounterpoint
este apartado to Section 11.9general
es la base where equality
sobre laconstraints weredualidades
que construir considered de tipo local de los
before inequality constraints, here we shall first consider a problem with inequality
diversos problemas lineales y no lineales, incluso sin la existencia de convexidad. Sirve también para comprender mejor
constraints. In particular, consider the problem
los algoritmos de punto interior especializados en problemas de Programación Lineal, el dual del Símplex y otros afines.
De momento vamos a referirnos a problemas deminimize programación
fxmatemática como (1)
subject to fgx
minimizar .x/ ≤ 0
x2Rn

sujeta a x ∈ 
g.x/ 0 (A.2)
x 2 ;
 ⊂ E n is a convex set, and the functions f and g are defined on . The function g
donde  2 R es unp-dimensional.
n is conjunto convexoThe yproblem is not necessarily
las funciones, la escalarconvex,
f W Rnbut!weRassume that there
y la vectorial g W Rp ! Rn , están
is a feasible
definidas en . Este problema point. Recall that the primal function associated with (1) is defined for
no es necesariamente convexo pero se asume que tiene al menos un punto factible. Esta
z ∈ E p as
notación es perfectamente compatible con otras que se utilizan sin más que adoptar la convención de signos adecuada.
p
(A.2)=seinfdefine,
La función primal asociada al problema z fx para
 gxun≤zz 2x R , como
∈ 
(2)
defined by letting the!.z/right Kınf ffside
D hand W g.x/
.x/ of  z; xconstraint
inequality 2 g: take on arbitrary (A.3)
values. It is understood that (2) is defined on the set D = z  gx ≤ z, for some
Se llega a ella dejando que el término de la derecha de la inecuación que definen las condiciones pueda tomar valores
x ∈ 
.
arbitrarios. Se entiende que (A.3) está
If problem definida
(1) has en el xconjunto
a solution ∗
D Df ∗fz=Wfx
with value ∗
g.x/  z; fpara
, then ∗
is algunos
the pointxon2 g.
p+1 
Si el problema (A.2) tiene una solución x con un valor de la función objetivo igual a axis.
the vertical axis in E where the primal function passes through the f  DIf f(1)
.x  /, entonces f  es
does not pC1 a solution, then f ∗ = inffx  gx ≤ 0 x ∈ 
is the intersection
have
el punto de eje vertical de R donde la función primal se cruza con ese eje. Si (A.2) no tiene solución ese punto de
point.
cruce es f  D Kınf ff .x/ W g.x/  0; x 2 g.
El principio de dualidadTheseduality
deduceprinciple is derived from
de la consideración consideration
de todos of all hyperplanes
los hiperplanos que quedan that
porliedebajo de la función
below the primal function. As illustrated in Fig. 14.1 the intercept with the vertical
primal. Como ilustra la figura A.55, todos los hiperplanos que se indican se∗ cruzan con el eje vertical por debajo de f  ,
 axis of such a hyperplanes lies below (or at) the value f .
o en f .
r
w(z)

f*

Hiperplano
debajo de w(z)

Figura A.55: Hiperplano por debajo de !.z/.


Fig. 14.1 Hyperplane below z
Para expresar esta propiedad se define la función dual en el cono positivo de Rp , RpC , como
˚
./ D Kınf f .x/ C Tg.x/ W x 2  :
580 j Apéndice A

En general,  puede que no sea finita dentro del ortante —el equivalente en n dimensiones a un cuadrante en el plano o
un octante en tres dimensiones— positivo, R pC , pero la región donde está definida y es finita es convexa.
Proposición A.56 La función dual es cóncava en la región donde es finita.

Demostración. Supóngase que 1 y 2 están en la región finita y sea 0  ˛  1. Entonces

.˛1 C .1 ˛2 // D Kınf ff .x/ C .˛1 C .1 ˛/2 /T g.x/ W x 2 g


 Kınf f˛f .x1 / C ˛T1 g.1 / W x1 2 g
C Kınf f.1 ˛/f .x2 / C .1 ˛/T2 g.x2 / W x2 2 g
D ˛.1 / C .1 ˛/.2 /;

lo que concluye la demostración.


Se define   D sup f./ W   0g, suponiéndose que el supremo se extiende a toda la región donde  es finita.
Proposición A.57 Forma débil de dualidad.    f  .

Demostración. Para todo   0 se tiene que

./ D Kınf ff .x/ C T g.x/ W x 2 g


 Kınf ff .x/ C T g.x/ W g.x/  0; x 2 g
 Kınf ff .x/ W g.x/  0; x 2 g D f  :

Tomando supremos en el miembro de la izquierda, .x/, se llega a que    f  .


De acuerdo con este resultado la función dual proporciona cotas inferiores del valor óptimo de f , lo cual es muy
interesante desde el punto de vista de su aplicación a problemas prácticos.
La función dual tiene una interpretación geométrica muy interesante. Si se considera el vector Œ1 T T 2 RpC1 ,
con   0 y la constante c, el conjunto de vectores Œr zT T 2 RpC1 tales que el producto interior Œ1 T Œr zT T 
r C T z D c define un hiperplano en RpC1 . Para diferentes valores de c se tiene diferentes hiperplanos, todos paralelos
entre si.
Para un vector dado Œ1 T T consideremos el hiperplano más bajo posible de esa forma que casi toca —soporta—
la región de encima de la función primal del problema (A.2). Supongamos que x1 define ese punto de contacto y que
r D f .x1 / y z D g.x1 /. Se tendrá que c D f .x1 / C T g.x1 / D ./.
Ese hiperplano se cruzará con el eje vertical en un punto de la forma Œr0 0T . Este punto también satisfará que
Œ1 T T Œr0 0T D c D ./. Lo que lleva a que c D r0 . Por lo que ese punto dará será el valor ./ directamen-
te. La función dual en  es igual al punto donde se cruzan el hiperplano definido por  que justo toca el epigrafo —el
conjunto de puntos situados en o por encima del gráfico de una función— de la función primal.
Además, como indica la figura A.56, ese punto de cruce (y el valor de la función dual) se maximiza con el multiplicador
de Lagrange que corresponde al hiperplano más alto posible que intercepta el eje vertical y casi toca a la función, siendo
el punto de esa intercepción menor o igual que el valor óptimo f  . La diferencia constituye el gap de dualidad.
Si se incorporan suposiciones de convexidad el análisis que estamos haciendo se completa con el teorema de la
dualidad fuerte cuando no hay gap de dualidad y la intersección de esos planos con el eje vertical es el propio f  .
Se puede ver en la figura A.57.
El teorema siguiente se refiere al problema

minimizar
n
f .x/
x2R
sujeta a h.x/ D 0 (A.4)
g.x/  0
x 2 ;

donde h W Rm ! Rn es afín, g W Rp ! Rn es convexa y  es convexo. La función dual de este problema es

.; / D Kınf ff .x/ C Th.x/ C Tg.x/ W x 2 g;


438 Chapter 14 Dual and Cutting Plane Methods
A.5 Optimización y Programación Matemática j 581

w (z)

438 Chapter 14 Dual and Cutting Plane Methods


f∗ gap de dualidad
ϕ∗

ω (z)
hiperplano más alto

z
f∗ Duality gap
Figura A.56: Hiperplano más alto
ϕ∗
Fig. 14.2 The highest hyperplane

y   D sup f.; / W  2 Rm ;  2Highest Rp ; hyperplane


 0g.
Furthermore, this intercept (and dual function value) is maximized by the
Teorema A.58 Teorema de la dualidad fuerte. Supongamos que en el problema (A.4) h es regular con respecto a  y
Lagrange multiplier which corresponds to the largest possible z intercept, at a point
que existe un punto x 2  en el que h.x/ D 0 y g.x/ ∗
 0.
Supongamos que no higher than the
el problema tieneoptimal value f x. See
como solución conFig. 14.2. de la función objetivo f .x  / D f  . Entonces,
un valor
By introducing
para todo ,   0 se cumple que convexity assumptions, the foregoing analysis can be
strengthened to give the Fig. Thehighest
14.2duality
strong  hyperplane
theorem, with no duality gap when the
 f :
intercept is at f ∗ . See Fig. 14.3.
Además, existen unos We ,  
shall state0 tales que .;
the intercept
result the D
/
for (and f  general
more tanto  that
y por loproblem 
. Los vectores
D fincludes equality  y  son los
Furthermore,
multiplicadoresconstraints
de Lagrange del this
problema. dual function value) is maximized by the
of the form
Lagrange multiplier = 0, as in Section
hxcorresponds
which 11.9. possible intercept, at a point
to the largest
Un punto x que satisfaga
no higher todas
Specifically,
than thelas
we condiciones
consider
optimal value que
the f . se
problem
∗ cumplen
See se dice regular si los vectores gradiente del conjunto
Fig. 14.2.
de condiciones activasBy enintroducing
ese punto son linealmente
convexity independientes.
assumptions, the Una función h.x/
foregoing es regular
analysis can be con respecto a 
n
si el conjunto C strengthened to give the strong duality theorem, with no duality gap when thea 0; es decir, C
D fy W h.x/ D y para algún
maximize x 2 fx
g de R contiene una bola abierta en torno
(4)
contiene un conjunto de is
intercept la at
forma fy WFig.
f ∗ . See < "g para algún " > 0. Esto viene a decir que h.x/ puede hacerse 0 y
jyj 14.3.
variar arbitrariamente en torno a 0 en
subjectdirección.
cualquier
to hxEsta = 0 condición
gx ≤es0 similar a la definición de punto regular en
We shall state the result for the more general problem that includes equality
el contexto de las condiciones de óptimo de primer orden. x ∈inSection 11.9.
constraints of the form hx = 0, as
Specifically, we consider the problem
where h is affine of dimension m, g is convex of dimension p, and  is a convex
A.5.4.1 Dualidad
set.
Lagrangiana
maximize fx (4)
Es una forma de denominar lo que acabamos de exponer. La función de Lagrange del problema (A.4) escrito
subject to hx = 0 gx ≤ 0
r
minimizar
n f .x/
x ∈x2R
ω (z)
sujeta a h.x/ D 0 (A.5)
g.x/ofdimension
where h is affine of dimension m, g is convex 0 p, and  is a convex
set. x 2 ;
f * = ϕ∗
Optimal
hyperplane r
w (z)
z

f * = ϕ∗
Fig. 14.3hiperplano óptimo
The strong duality theorem. There is no duality gap

Figura A.57: Expresión gráfica del teorema de la dualidad fuerte . No hay gap de dualidad
Fig. 14.3 The strong duality theorem. There is no duality gap
582 j Apéndice A

es L.x; ; / D f .x/ C Th.x/ C Tg.x/. Esta función penaliza que g.x/ sea positiva y que h.x/ no sea cero. La
función de Lagrange dual es
def
q.; / D Kınf L.x; ; /:
x

Esta función es cóncava por ser afín, aunque no lo sean ni h.x/ y g.x/. Puede ser 1 para algunos valores de  y .
La función de Lagrange dual define una cota inferior del valor óptimo de la función objetivo de (A.5). Es decir
q.; /  p  si   0. El problema dual de A.5 es este:

maximizar q.; /
sujeta a   0;

que es siempre convexo.

A.5.4.1.1 Interpretación geométrica


En este apartado seguimos lo que exponen Boyd y Vandenberghe [2004], J-P Vert y R. Freund. Consideraremos una
Optimal value f ∗
versión bastante simple del problema A.5 con una sola condición:

minimizar f .x/
sujeta a g.x/  0
We consider the subset of R2 defined
x 2 ; by:
n 2
donde f; g 2 R ! R. Y a este respecto el subconjunto de R definido así:
S = {(g(x), f (x) | x ∈ Rn )} .
S D f.g.x/; f .x//jx 2 Rn g:

El valor óptimo
The deloptimal f  , estaráfdeterminado
problema,value por
∗ is determined by:

f D Kınf ftj.t; u/ 2 S; u  0g;
f ∗ = inf {t | (u, t) ∈ S, u ≤ 0} .
como se puede ver en la figura A.58, pues es el punto en t más bajo en la parte de la región factible (fijada por los valores
a la izquierda del eje t en el conjunto S ). El planteamiento de este problema sería, por ejemplo, la abstracción de uno

f∗

u
c 2006 Jean-Philippe Vert, (Jean-Philippe.Vert@mines.org) – p.33/67
Nonlinear optimization
Figura A.58: Sencillo esquema de un problema de optimización para interpretar geométricamente la dualidad lagrangiana

de determinar el coste mínimo global de una planta de fabricación de productos diversos con varios tipos de recursos,
el balance global de los cuales a lo largo de un periodo de tiempo debe ser menor o igual que cero. Es decir, que no se
consuman más de los disponibles.
La función de Lagrange de este problema es L.x; / D f .x/ C g.x/. La función de Lagrange dual, o simplemente
la función dual, es
q./ D Kınf ft C ug:
.u;t/2S

Según la figura A.59, el punto donde corta al eje t en su punto más bajo posible el hiperplano soporte del conjunto S
que define t C u D cte. —en este caso una línea recta— será el valor de la función dual.
The dual function for µ ≥ 0 is:
q(µ) = infn {f (x) + µg(x)}
x∈R
= inf {µu + t} .
(u,t)∈S A.5 Optimización y Programación Matemática j 583

S
µ u+t=cte

f∗

µ u+t=q(µ) q(µ)

u
Figura A.59: Función dual del problema para interpretar geométricamente la dualidad lagrangiana
Dual optimal d∗ c 2006 Jean-Philippe Vert, (Jean-Philippe.Vert@mines.org) – p.34/67
Nonlinear optimization

De todos esos hiperplanos soporte, con   0, el que obtiene el óptimo del problema dual,

d  D maximizar
∗ q./ D maximizar Kınf ft C ug;
d0= sup q(µ) .u;t/2S
µ≥0
lo dará la intersección con el eje t del que se =
esquematiza
sup infen la{µu +A.60
figura t} .que toca los dos punto mas bajos de S que
se ven. El gap de dualidad en este ejemplo es laµ≥0 diferencia entre f  y d  : d   f  , dualidad débil.
(u,t)∈S

t
(µ,1)
S


(µ,1)
f∗
d∗

Strong duality u
Figura A.60: Óptimo de la función dual del problema paraNonlinear
interpretar geométricamente
optimization
la dualidad lagrangiana
c 2006 Jean-Philippe Vert, (Jean-Philippe.Vert@mines.org) – p.35/67

For convex problems with strictly feasible points:


En el caso de dualidad fuerte, sin gap de dualidad, se darían

formas

como la de la figura A.61.
d =f
t t

S S

f∗
d∗
f∗
d∗
u u

Figura A.61: Dualidad fuerte: f  D d

c 2006 Jean-Philippe Vert, (Jean-Philippe.Vert@mines.org) – p.37/67


Nonlinear optimization
A.5 Optimización y Programación Matemática j 585

Definición A.88 Si consideramos la función f W Rn ! Œ 1; 1, se define la función conjugada de f —también


conjugada de Fenchel o transformación de Fenchel—, a la función f  W Rn ! Œ 1; 1 dada por
f  .y/ D sup fx > y f .x/g:
x2Rn

La función
DUAL conjugada es de mucha utilidad en optimización
DESCRIPTION OF CONVEX para “convexificar” una función y para el cálculo del
FUNCTIONS
subdiferencial de una función convexa .
La transformación de Fenchel coincide con la transformación de Legendre, por Andrien-Marie Legendre, Francia,
1752-1833.
• Define a closed convex function by its epigraph.

• Describe the epigraph by Legendre


hyperplanes.

• Associate hyperplanes with crossing points (the


cuando se refieren conjugate function).
a funciones convexas y diferenciables en todas direcciones (existen todas sus derivadas parciales).
En la figura A.62 se proporciona una interpretación geométrica de esta definición. La función (convexa en este caso)

(-y,1)

f(x)

Pendiente = y

x 0 x x


inf { f (x ) − xTy} = −f ( y),
x ∈ℜn

Figura A.62: Visualización de la conjugada de Fenchel


Primal Description Dual Description
Dual Description Values ( ) Crossing points
soporte. Uno) Crossing funciónfconjugada,
de estos, lapoints
∗ (y)
f .x/ y su epigrafo están Values
descritosfpor
(x)hiperplanos
Crossing points está asociado con un
punto de cruce con el eje vertical que es f  .y/ D Kınfx2Rn ff .x/ x > yg:
Una interpretación económica de la función conjugada identifica x > y f .x/ con el beneficio de producir la cantidad
x de bienes cuando los precios están dados por el vector y. El máximo de ese beneficio asociado a y es la función
conjugada f  .y/.
Cualquiera que sea la estructura de f , su función conjugada f  es convexa y cerrada pues es el supremo, punto a
punto, de la colección de funciones afines

x>y f .x/; para todo x tal quef .x/ es finita.

Si la función f .x/ no es convexa, el correspondiente gráfico para interpretar la función conjugada sería el de la
figura A.63.
Una consecuencia inmediata de la definición de función conjugada es la desigualdad de Fenchel-Young,

f .x/ C f  .y/  x > y;


586 j Apéndice A Conjugate function
f (x )
xy
he conjugate of a function f is

f ∗(y) = sup (y T x − f (x))


x∈dom f
x

(0,−f ∗(y ))

is closed and convex even if f isFigura
not A.63: Conjugada de Fenchel de una función no convexa

por Fenchel y William Henry Young, Reino Unido 1863-1942.


enchel’s inequality

f (x) + f ∗(y) ≥ xT y ∀x, y Young

extends inequality xT x/2 + y T y/2 ≥ xT y to non-quadratic convex f )


Para que esta desigualdad se haga igualdad en necesario y suficiente que
njugate functions f .x/ C f  .y/ D x > y , y 2 ²f .x/ , x 2 ²f
8-6 .y/:

En la figura A.64 se indican algunos ejemplos de funciones conjugadas habituales. Son de Bertsekas [2009]. Se puede
verificar en cada una de ellas que la conjugada de la conjugada es la función original.
Ejemplo A.25 La función cuadrática f .x/ D 12 x > Qx, donde Q  0. La expresión y > x 1 >
2
x Qx es estrictamente
cóncava con respecto a y y tiene un punto máximo en y D Q 1 x por lo que
1 >
f  .y/ D y Q 1
y:
2
Ejemplo A.26 La función f .x/ D log.x/.
(
 >
 1 log. y/ y<0
f .y/ D sup x y C log.x/ D
x>0 1 en cualquier otro caso:
Ejemplo A.27 La función f .x/ D kxk, una norma en Rn , siendo su norma dual asociada kxk D supkuk1 u> x, tiene
por función conjugada (
 0 kyk  1
f .y/ D
1 en cualquier otro caso:
Esto se denomina función indicador de la norma dual de la esfera unidad. La norma dual de la norma euclídea es la
propia norma euclídea.

A.5.6 Optimización SDP


O, realmente, Programación Semidefinida. Se refiere a un problema de optimización convexa que trata de maximizar
o minimizar una función objetivo lineal de una incógnita, que es una matriz simétrica a la que se impone la condición
de ser semidefinida positiva. El óptimo también debe satisfacer el encontrarse en la intersección del cono que genera
la condición de la matriz y un subespacio afín. El diagrama de la figura A.65 muestra dónde se ubica la Programación
Semidefinida en un entorno de programas convexos.
588 j Apéndice A

Uno de los elementos que lanzaron al estrellato este tipo de problemas fue el contar con la potencia de los algoritmos
de punto interior para tratar problemas de grandes dimensiones. Hay una amplia variedad de problemas de optimización
convexa no lineal que se pueden presentar como problemas de este tipo —que implican desigualdades denominadas de
matriz lineal (LMI)— y resolverse hoy en día muy eficientemente usando esos métodos de punto interior.
La programación semidefinida es una importante herramienta numérica para el análisis y resolución de problemas en
sistemas y teoría de control. También se usan cada día más en la optimización combinatoria como una técnica valiosa
para obtener límites en la solución de problemas NP-duros (de toma de decisiones). Sus aplicaciones crecen día a día
en geometría computacional, diseño de experimentos, teoría de información y comunicación, optimización de valores
propios en diseño de estructuras, diagnóstico médico y otros.

A.5.6.1 Definiciones y planteamiento del problema


Se designa el espacio vectorial de matrices reales de orden n simétricas por

S n WD fM 2 Rnn W M > D M g:

A la parte de este S n que forman la matrices simétricas semidefinidas positivas como


n
SC WD fM 2 S n W M < 0g;

donde mediante M < 0 se designa una tal matriz y a


n
SCC WD fM 2 S n W M  0g

como la parte de S n que definen la matrices definidas positivas.


El espacio S n está dotado de un producto escalar o producto interior
X
h; i W .M ; N / 2 S n  S n 7! hM ; N i D tr.M N / D Mij Nij ;
ij

donde tr.M N / denota la traza del producto matricial M N .


El producto interior de matrices generales se calcula de forma similar al de vectores: Primero transformando o vectori-
zando la matriz Rpk , donde p es el número de filas de la matriz y k el número de columnas, en un vector de Rpk conca-
tenando para ello los vectores columna en un orden natural. Por ejemplo, la vectorización de Y D Œy1 y2    yk  2 Rpk
es 2 3
y1
6 y2 7
6 7
vec Y , 6 : 7 2 Rpk :
4 :: 5
yk
De acuerdo con esto, el producto interior de dos matrices no necesariamente simétricas Y y Z es

hY ; Z i , tr.Y > Z / D vec.Y /> vec Z :

Además
tr.Y > Z / D tr.Z Y > / D tr.Y Z > / D tr.Z > Y / D 1> .Y ı Z /1;
donde el signo ı indica el producto de Hadamard, por Jacques Salomon Hadamard, Francia 1865-1963.

Hadamard
A.5 Optimización y Programación Matemática j 589

De igual manera vec.Y ı Z / D vec.Y / vec.Z /.


2
Si las matrices son simétricas en S n la vectorización transforma la matriz en Rn . Como antes, si Y D Œy1 y2    yn  2
Rnn la vectorización simétrica es
2 3
py11
6 2y12 7
6 7
6 y22 7
6p 7
6 2y13 7
6p 7
svec Y , 6 2y 7 2 Rn.nC1/=2 :
6 23 7
6 y33 7
6 7
6 :: 7
4 : 5
ynn

Para ignorar coeficientes redundantes, y reducir el subespacio a Rn.nC1/=2 , en la transformación se han escalado los
coeficientes que no están en la diagonal principal. En este caso, si Y ; Z 2 S n ,

hY ; Z i , tr.Y > Z / D vec.Y /> vec Z D 1> .Y ı Z /1 D svec.Y /> svec Z :

n n
Volviendo a los conos apuntados más arriba, SC y SCC , tienen las siguientes propiedades:
1. M < 0 ” 8N < 0, se tiene que hM ; N i > 0:
2. M  0 ” 8N < 0 no nula, se tiene que hM ; N i > 0
n
3. Si M y N 2 SC , se tiene que hM ; N i D 0 ” M N D 0:
Con la notación 4.1.
y definiciones expuestas, el problema SDP se plantea así.
CONIC PROBLEM 221

minimizar hC ; X i
X 2S n
sujeta a hA; X i D b
X < 0;

donde C 2 S n , A W S n ! Rm es una aplicación lineal y b 2 Rm . Es el problema primal de SDP. Se trata de


minimizar en él un criterio lineal en la intersección del cono de matrices semidefinidas positivas y un subespacio afín
como esquematiza la figura A.66. La función objetivo es lineal así como las condiciones. El requisito de pertenencia al
n
cono SC es no lineal y en algún caso no derivable.

+0 P
3
S+

A = ∂H

Figura
Figure 89: A.66: Visualización
Visualizing positivedesemidefinite
un cono semidefinido positivo
cone in high en 3D. Dattorro
dimension: [2016]
Proper polyhedral
cone S+ 3
⊂ R3 representing positive semidefinite cone S3+ ⊂ S3 ; analogizing its intersection
S3+ ∩ ∂H with hyperplane. Number of facets is arbitrary n(an analogy not inspired by
La aplicación lineal se puede representar mediante m matrices, Ai 2 S matrix
eigenvalue decomposition). The rank-0 positive semidefinite
—teorema de Riesz-Fréchet—, por Frigyes
corresponds to origin
in R3 , rank-1 positive semidefinite matrices correspond to edges of polyhedral cone, rank-2
to facet relative interiors, and rank-3 to polyhedral cone interior. Vertices Γ1 and Γ2 are
3 3
extreme points of polyhedron P = ∂H ∩ S+ , and extreme directions of S+ . A given vector
C is normal to another hyperplane (not illustrated but independent w.r.t ∂H) containing
line segment Γ1 Γ2 minimizing real linear function hC , X i on P . (confer Figure 29,
Figure 33)
590 j Apéndice A

Riesz, Hungría 1880-1956,

Riesz

y Maurice Fréchet, así


2 3
hA1 ; X i
6 :: 7
hA; X i D 4 : 5:
hAm ; X i
m
Si el espacio R está dotado de un producto escalar, o producto interior, también expresado mediante h; i, y se
introduce el operador A  W Rm ! S n , adjunto a A y definido así
8X 2 S n ; 8y 2 Rm W hA.X /; yi D hX ; A  .y/i
el problema dual de SDP se plantea así
maximizar hb; yi
.y;S /2Rm S n
sujeta a hA  ; yi C S D C
S < 0;
Ejemplo A.28 De Freund [2009]. Estudiemos un ejemplo de SDP con n D 3, m D 2 y las matrices
2 3 2 3 2 3
101 028 123
A1 D 40 3 75 ; A2 D 42 6 05 y C D 42 9 05 :
175 804 307

El vector b D Œ11 19> .


La variable del problema es la matriz simétrica 3  3
2 3
x11 x12 x13
X D 4x21 x22 x23 5 :
x31 x32 x33
Calculemos el producto
2 3
x11 2x12 3x13
C ı X D 42x21 9x22 0x23 5
3x31 0x32 7x33
La función objetivo sale de
1> ŒC ı C 1 D x11 C 2x21 C 3x31 C 2x12 C 9x22 C 0x32 C 3x13 C 0x23 C 7x33
D x11 C 4x12 C 6x13 C 9x22 C 0x23 C 7x33 :
Se ha tenido en cuenta ya la simetría de la matriz X .
El problema de optimización SDP es pues
minimizar x11 C 4x12 C 6x13 C 9x22 C 0x23 C 7x33

sujeta a x11 C 0x12 C 2x13 C 3x22 C 14x23 C 5x33 D 11


0x11 C 4x12 C 16x13 C 6x22 C 0x23 C 4x33 D 19
2 3
x11 x12 x13
X D 4x21 x22 x23 5 < 0:
x31 x32 x33
A.5 Optimización y Programación Matemática j 591

Su dual,
maximizar 11y1 C 19y2

2 3 2 3 2 3
101 028 123
sujeta a y1 40 3 75 C y2 42 6 05 C S D 42 9 05
175 804 307
S < 0:

Formulación que puede tener sus ventajas en muchos casos frente a la del primal.

A.5.7 Optimización vectorial y multicriterio o multiobjetivo


Los avances actuales de la técnicas de optimización e inteligencia artificial permiten extender la toma de decisiones
a diversos criterios u objetivos en los que, en términos matemáticos, la función a optimizar es vectorial. En lo que
presentamos a continuación seguimos a Boyd y Vandenberghe [2004].
Un problema de optimización vectorial tiene la forma

minimizar (con respecto a K) f0 .x/


sujeta a fi .x/  0; i D 1; : : : ; m (A.6)
hi .x/ D 0; i D 1; : : : ; p:

Aquí x 2 Rn es el vector a optimizar, K  Rq es un cono no vacío convexo, f0 W Rn ! Rq , fi W Rn ! R son


la condiciones de desigualdad y hi W Rn ! R las condiciones de igualdad. El cono K tiene por objeto comparar los
diversos valores de las funciones objetivo.
Esta forma de expresar el problema se suele denominar así en contraposición al problema de optimización escalar que
definamos en A.1.
Se dice que el problema de optimización vectorial A.6 es convexo si la función objetivo f0 es convexa en K, las
condiciones de desigualdad son convexas y las de igualdad afines (usualmente expresadas mediante Ax D b, donde
A 2 Rpn ).
De acuerdo con lo visto hasta ahora, qué interpretación tiene el problema de optimización vectorial. Supongamos que
x y y son dos puntos del problema factibles y que por lo tanto cumplen las condiciones. Sus valores asociados de la
función objetivo son f0 .x/ y f0 .y/, respectivamente, y se compararán mediante la desigualdad generalizada K , de tal
manera que f0 .x/ K f0 .y/ si x es mejor o igual que y de acuerdo con todos y cada uno de los valores de la función
objetivo. El aspecto clave que introduce una cierta confusión en este análisis es que los valores f0 .x/ y f0 .y/ puede
que no necesiten ser comparados.
Consideremos el conjunto de valores factibles del problema

O D ff0 .x/j9x 2 D; fi .x/  0; i D 1; : : : ; m; hi .x/ D 0; i D 1; : : : pg  Rq ;

denominado de valores objetivo alcanzables. Si este conjunto tiene un elemento mínimo, ello quiere decir que existe un
x  factible tal que f0 .x  / K f0 .y/ para todo y factible por lo que x  es el óptimo de A.6 con un valor de la función
objetivo óptimo único igual a f0 .x  /. Es óptimo si y sólo si O  f0 .x  / C K.
El conjunto O  f0 .x  / C K se puede interpretar como el de valores que son peores, o iguales, a f0 .x  /. La mayoría
de los problemas de optimización vectorial no tienen un punto óptimo ni valor óptimo.

A.5.7.1 Óptimo y óptimos de Pareto


En el caso de que el conjunto de puntos factibles del problema no tenga un valor mínimo y por lo tanto el problema no
tenga un punto óptimo ni valor óptimo, los elementos mínimos en el sentido de Pareto —por Vilfredo Federico Pareto,
Paris 1848-Céligy 1923— del conjunto O adquieren una importancia fundamental. Un punto factible x es óptimo de
592 j Apéndice A
176 4 Convex optimization problems

f0 (x ⋆)

Figura A.67: Conjunto O de valores objetivo


Figure alcanzables
4.7 The set O of achievable x  , de
y óptimo,values forun
a problema de optimización
vector optimization with vectorial con valores
2 objective values in R2 , with cone K = R2+ , is shown shaded. In this case,
en R
Optimal and Pareto optimal points ⋆ ⋆
the point labeled f0 (x ) is the optimal value of the problem, and x is an
optimal point. The objective value f (x ) can be compared to every other
0

achievable value f0 (y), and is better than or equal to f0 (y). (Here, ‘better
Pareto, por Vilfredo Federico Pareto
than Italia,
or equal1848-1923,
to’ means ‘is below and to the left of’.) The lightly shaded
region is f0 (x⋆ )+K, which is the set of all z ∈ R2 corresponding to objective
values worse than (or equal to) f0 (x⋆ ).
hievable objective values
Pareto
O = {f0(x) | x feasible}
(see §2.4.2). The set f0 (x⋆ ) + K can be interpreted as the set of values that are
worse than, or equal to, f0 (x⋆ ), so the condition (4.57) states that every achievable
value falls in this set. This is illustrated in figure 4.7. Most vector optimization
problems do not have an optimal point and an optimal value, but this does occur
si f0 .x/ esifunfmínimo de in En
someeste decimos que f0 .x/ en un valor óptimo de Pareto1 del problema
casocases.
special A.6. Esto
0 (x) is the minimum value of O
e x is optimal O.
quiere decir que x es un óptimo de Pareto si es factible y para cualquier otro y factible, el que f0 .y/ K f0 .x/ implica
m
que f0 .y/ D f0 .x/. En otras palabras, cualquier
Example 4.9 punto
Best linear factible
unbiased y queSuppose
estimator. es mejor que
y = Ax + v, es decir
x,where v ∈ Rf
0 .y/ K f0 .x/, tiene
is
e x is Pareto optimal if f 0 (x) is a
a measurement
el mismo valor de la función objetivo
minimal
noise, y ∈ Rm value
is a vector of O
of measurements, and x ∈ Rn is a vector to
be estimated, given the measurement y. We assume that A has rank n, and that the óptimos de Pareto
que x. Esto se ilustra en la figura A.68. El conjunto de puntos
del problema de optimización vectorial como
measurement sesatisfies
noise ve en E lavfigura
= 0, E está
vv T =en
I, la frontera
i.e., (frontera
its components are de
zeroPareto)
mean o borde de O.
and uncorrelated.
A linear estimator of x has the form x b = F y. The estimator is called unbiased if for
b = x, i.e., if F A = I. The error covariance of an unbiased estimator
all x we have E x
is
E(x b − x)(x O
b − x)T = E F vv T F T = F F T .
O Our goal is to find an unbiased estimator that has a ‘small’ error covariance matrix.
oQ
We can compare error f 0 (xcovariances
) using matrix inequality, i.e., with respect to Sn
+.
This has the following interpretation: Suppose x b1 = F1 y, x
b2 = F2 y are two unbiased
estimators. Then the first estimator is at least as good as the second, i.e., F1 F1T 
F2 F2T , if and only if for all c,

b1 − cT x)2 ≤ E(cT x
E(cT x b2 − cT x)2 .

x⋆ is optimal In other words, for any


Figura A.68: Conjunto O de valores po linear function
objetivoxalcanzables
an estimate as does
of x, the estimator F yields at least as good
de un problema de optimización vectorial con valores en R2 y
F . is Pareto optimal
2
1

óptimos de Pareto (en el borde o frontera de ese conjunto). El punto f0 .x op /


es óptimo de Pareto con ese valor de la función
objetivo del problema. La zona sombreada mas tenue es f0 .x op / K, el conjunto de puntos de R2 que tienen un valor de la
función objetivo mejor o igual que f0 .x op /
ation problems 4–41
La frontera de Pareto puede ser lineal, cóncava, convexa, continua o discontinua dependiendo de las funciones obje-
tivo integrantes del problema. Todas las soluciones pertenecientes a la frontera son igualmente buenas y no se puede
especificar si alguna de las soluciones es preferible a las otras, excepto en aquellos casos en que se haya definido una
preferencia a priori.

A.5.7.2 Escalarización
La escalarización es una técnica para encontrar puntos óptimos de Pareto en un problema de optimización vectorial.
Se basa en la caracterización de puntos mínimos y minimales vía desigualdades generalizadas duales tal como se in-
1 Enanálisis económico se denomina óptimo de Pareto a aquel punto de equilibrio en el que ninguno de los agentes afectados podrá mejorar su
situación sin reducir el bienestar de cualquiera de los otros agentes.
A.5 Optimización y Programación Matemática j 593

trodujeron antes en este apéndice. Si se escoge un  k  0 que es positivo en las desigualdades duales generalizadas,
consideremos el problema escalar
>
minimizar  f0 .x/
Scalarization
sujeta a fi .x/  0; i D 1; : : : ; m (A.7)
hi .x/ D 0; i D 1; : : : ; p;
to find Pareto optimal points: choose λ ≻K ∗ 0 and solve scalar problem
y en él sea x un punto óptimo. Este punto es óptimo de Pareto del problema A.6 de optimización vectorial. Esto se deduce
minimize
de la caracterización λT fdesigualdades
mediante 0 (x) duales de los puntos minimales de las desigualdades de la página 571,
así como de un observación
subject to fidirecta.
(x) ≤ 0, Si noi lo
= fuera,
1, . . . existiría
,m un y factible, que satisfaría f0 .y/ K f0 .x/ y que
además f0 .x/ ¤ f0 .y/. Como f .x/ f .y/ 
hi(x) = 0, i = 1, . . . , p
0 0 K 0 y no es cero, se tiene que > .f0 .x/ f0 .y// > 0, es decir,
> >
 f0 .x/ >  f0 .y/. Lo que contradice el supuesto de que x es óptimo del problema escalar A.7. El método de la

O
if x is optimal for scalar problem,
then it is Pareto-optimal for vector f 0 (x 1)
optimization problem
f 0 (x 3 )
λ1
f 0 (x 2 ) λ2

for convexFigura
vectorA.69: Escalarización.
optimization El conjuntocan
problems, O defind
valores alcanzables
(almost) all para un problema de optimización vectorial en el cono
Pareto
K D R2C y los valores óptimos de Pareto f0 .x1 /, f0 .x2 / y f0 .x3 /. Los primeros dos puntos se pueden obtener mediante
optimal points by varying λ ≻K ∗ 0 > >
escalarización: f0 .x1 / minimiza 1 u para todo u 2 O y f0 .x2 / minimiza 2 u para todo u 2 O, donde 1 ; 2  0. El
valor f0 .x3 / es óptimo de Pareto pero no se puede obtener mediante escalarización
Convex optimization problems 4–45

escalarización se puede interpretar geométricamente con la ayuda de la figura A.69. Un punto x es óptimo del problema
escalar A.7, es decir minimiza > f0 .x/ en el conjunto de puntos factibles, si y sólo si > .f0 .y/ f0 .x//  0 para
todos los y factibles. Esto es lo mismo que decir que el conjunto fu j > .u f0 .x// D 0g es un hiperplano soporte
o de apoyo del conjunto de soluciones alcanzables O en el punto f0 .x/. En particular,

fu j > .u f0 .x// < 0g \ O D ;:

En consecuencia, cuando se encuentre un punto óptimo del problema escalar no sólo se encuentra un punto óptimo de
Pareto del problema vectorial original sino un semiespacio en Rq como el de esta última expresión, de valores de la
función objetivo que no se pueden alcanzar.
Si el problema vectorial A.6 es convexo el problema escalar es también convexo por lo que se pueden obtener todos
(casi) los óptimos de Pareto resolviendo el problema escalar convexo. Para cada elección del vector de pesos  K  0
se obtiene un punto óptimo de Pareto (normalmente) diferente.

A.5.7.3 Optimización multicriterio


Cuando un problema de optimización vectorial tiene que ver con el cono K D RqC se denomina multicriterio o multiob-
jetivo. Los componentes de la función vectorial f0 son funciones F1 , F2 ; : : : ; Fq W Rn ! R que se pueden interpretar
como q diferentes requisitos escalares que hay que optimizar o mejorar. El problema será convexo si lo son cada una de
esas funciones u objetivos a cumplir.
Lo expuesto antes sirve para este caso pues el conjunto de funciones objetivo es una función vectorial en si misma.
No obstante, para los problemas de multicriterio podemos extendernos un poco en su interpretación. Si x es factible,
podemos pensar en cada Fi .x/ en términos del valor que toma el objetivo i ésimo. Si x e y son ambos factibles, el
que Fi .x/  Fi .y/ significa que x es al menos tan buena como y, de acuerdo con el objetivo i ésimo; Fi .x/ < Fi .y/
significa que x es mejor que y, o que x supera a y, de acuerdo con el objetivo i ésimo. Si x e y son ambos factibles,
594 j Apéndice A

decimos que x es mejor que y, o que x domina a y, si Fi .x/  Fi .y/, para i D 1; : : : ; q, y, para al menos un j ,
Fj .x/ < Fj .y/. En términos aproximados, x es mejor que y si x supera a y en todos los objetivos y lo domina en al
menos un objetivo.
En un problema de optimización multicriterio un punto óptimo x  cumple que

Fi .x  /  Fi .y/; i D 1; : : : ; q;

para cada y. Es decir, x  es simultáneamente óptimo para cada problema escalar

minimizar Fj .x/
sujeta a fi .x/  0; i D 1; : : : ; m
hi .x/ D 0; i D 1; : : : ; p;

con j D 1; : : : ; q. Cuando existe un punto óptimo, decimos que los objetivos son no competidores, ya que no hay que
establecer compromisos o hacer concesiones entre los objetivos: cada objetivo es tan pequeño como es posible hacerlo,
incluso si se ignorasen los demás.
Un punto óptimo de Pareto x op cumple lo siguiente: si y es factible y Fi .y/  Fi .x po /, para i D 1; : : : ; q, entonces
Fi .x po / D Fi .y/, i D 1; : : : ; q. Lo que se puede expresar de esta manera: un punto en óptimo de Pareto si y sólo si
es factible y no hay un punto factible mejor. En particular, si un punto factible no es óptimo de Pareto, al menos existe
otro punto factible que es mejor. Todo esto conduce a que para determinar el óptimo del problema nos podemos limitar
a analizar los puntos que son óptimo de Pareto.
Supongamos pues que x y y son óptimos de Pareto y que

Fi .x/ < Fi .y/; i 2A


Fi .x/ D Fi .y/; i 2B
Fi .x/ > Fi .y/; i 2 C;

donde A [ B [ C D f1; : : : ; qg. Dicho de otra forma, A es el conjunto de índices de las funciones objetivo para las
cuales x domina a y, B el de aquellas en las que x iguala a y y C el de las que y bate a x. Si A y C están vacíos,
los dos puntos x e y tiene exactamente los mismos valores de la función objetivo. Si no es el caso, A y C deben ser
simultáneamente no vacíos. Es decir, al comparar dos puntos óptimos de Pareto, u obtienen las mismas prestaciones en
términos de función objetivo, o uno mejora al otro en al menos uno de los objetivos.
Al comparar los puntos x e y decimos que hemos intercambiado mejores valores de funciones objetivos de i 2 A por
los peores de i 2 C . El análisis del intercambio óptimo es el estudio de cuánto peor pueden resultar diversas funciones
objetivo haciendo otras mejor, o más en general, el estudio de qué conjuntos de funciones objetivo son alcanzables y
cuáles no.
Como ejemplo, consideremos un problema con dos funciones objetivo (dos criterios de optimización). Supongamos
que x es un punto óptimo de Pareto con valores de las funciones objetivo F1 .x/ y F2 .x/. La pregunta que se podría uno
hacer es cuánto más grande debería ser F2 .z/ para determinar un punto factible z tal que F1 .z/  F1 .x/ a, donde a > 0
es cualquier constante. Grosso modo, nos preguntamos cuánto debemos pagar a la segunda función objetivo para obtener
una mejora de a en la primera. Si se debe admitir un incremento importante en F2 para obtener un pequeño decremento
en F1 , decimos que existe una contrapartida fuerte entre objetivos cerca de los puntos óptimos de Pareto de valor
.F1 .x/; F2 .x//. Si, por otro lado, se puede conseguir un decremento grande de F1 con un pequeño incremento de F2 ,
decimos que la contrapartida entre esos objetivos es débil cerca de los puntos óptimos de Pareto de valor .F1 .x/; F2 .x//.
De igual manera se puede considerar el caso de qué contrapartidas negativas se consiguen en la primera función
objetivo mejorando la segunda. Aquí buscamos cuánto menor se puede hacer F2 .z/ para obtener un punto factible z en
el que F1 .z/  F1 .x/ C a, con a > 0 una constante como antes. En este caso se obtiene una mejora (reducción) en F2
comparada con F2 .x/. Si esa mejora o beneficio es grande (aumentando un poco F1 se obtiene una reducción importante
de F2 , decimos que los objetivos presentan contrapartidas fuertes. Si es pequeño, contrapartidas débiles cerca del valor
óptimo de Pareto .F1 .x/; F2 .x//.
El conjunto de valores óptimos de Pareto de un problema de optimización multicriterio se denomina superficie óptima
de contrapartida, si q > 2, o curva óptima de contrapartidas cuando q D 2. En general, su análisis se reduce a los
puntos óptimos de Pareto.
A.6 Elementos de cálculo integral, campos escalares y campos vectoriales j 595

Ejemplo A.29 Consideraremos como ejemplo de todo esto el problema de mínimos cuadrados regularizado definido
así: dada A 2 Rmn y b 2 Rm , encontrar un x 2 Rn que cumpla estos dos criterios u objetivos:
F1 .x/ D kAx bk22 D x > A > Ax 2b> Ax C b> b. Una medida de la bondad del ajuste.
Vector Optimization Examples
F2 .x/ D kxk22 D x > x. Una medida del tamaño del vector solución.
Regularized
La idea es encontrar Least-Squares
un vector x para (Continued)
el cual el ajuste sea bueno y su norma no muy grande.
En la figura A.70 se puede ver la superficie o curva de contrapartidas de este problema. La zona sombreada es el
conjunto de For
valores alcanzables
example por data
problem el problema. La línea
A ∈ R100×10 andmás
b gruesa
∈ R100el, we
la óptima de contrapartidas
have the formada por puntos
following set of
óptimos de Pareto. 2 2
achievable values ||Ax − b||2 , ||x||2 and optimal trade-off curve.

0.25
F 2 (x ) = ||x || 22

0.2

O
0.15

0.1

0.05
γ = 100

0
80 85 90 95 100 105 110 115 120

F 1 (x ) = ||Ax − b || 22
Figura A.70: Curva óptima de contrapartidas del problema de mínimos cuadrados regularizado. La zona sombreada es el
The shaded set is the set of achievable values, while the thick line is the optimal
conjunto de puntos alcanzables, .kAx bk22 ; kxk22 /, que considera el problema con A 2 R10010 y b 2 R10 . La curva de
trade-off curve formed by Pareto optimal points.
óptimos de Pareto es la destacada en la parte inferior izquierda
Andre Tkacenko (JPL) EE/ACM 150 - Lecture 10 May 3, 2012 9 / 11

Es esta curva se puede destacar:


El punto más a la derecha de la curva indica el valor más pequeño posible de F2 (sin tener en cuenta F1 ).
El punto más a la izquierda de la curva indica el valor más pequeño posible de F1 (sin tener en cuenta F2 ).
La intersección de la curva con la línea vertical que define F1 D ˛ muestra lo grande que tiene que ser F2 para
conseguir un F1  ˛.
La intersección de la curva con la línea horizontal que define F2 D ˇ muestra lo grande que tiene que ser F1 para
conseguir un F2  ˇ.
La pendiente de la curva en la zona de puntos óptimos de Pareto indica las contrapartidas locales óptimas entre los
dos objetivos del problema. Una pendiente pronunciada indica que pequeños cambios en F1 van acompañados de
cambios elevados en F2 .
Un punto de curvatura pronunciada es aquel en el que pequeñas reducciones en uno de los objetivos sólo lo pueden
obtener grandes incrementos en el otro.
El problema que se plantea es entonces

minimizar (con respecto a R2C ) f0 .x/ D .F1 .x/; F2 .x//:

Su escalarización lleva a una ponderación de los dos objetivos así

T f0 .x/ D 1 F1 .x/ C 2 F2 .x/



D x > 1 A > A C 2 I x 21 b> Ax C 1 b> b;

lo que da como resultado


 1  1
x. / D 1 A > A C 2 I 1 A > b D A > A C I A > b;

donde D 2 =1 . Cualquier > 0 determina un punto óptimo de Pareto del problema.
If we follow this procedure for a
SECTION 15.1 Double Integrals over Rectangles 1029 ing boxes, we get an approximat

as in Figure 3, we form the subrectangles 3 V

Rij − fx i21, x i g 3 fyj21, yj g − hsx, yd |x i21 < x < x i , yj21 < y < yj j
(See Figure 5.) This double sum
A.6 Elementos de cálculo integral, campos escalares y campos vectoriales j 597
each with area DA − Dx Dy. chosen point and multiply by th

y z
R ij (xi, yj)
d

yj (x *ij , y *ij )


Îy yj-1
f(x *ij , y *ij )
› 0
c
c a
(x *£™, y*£™) d
y
b
0 a ⁄ ¤ x i-1 x i b x x x
FIGURE 3
brectangles Îx R ij

If we choose a sample point sx ij*, y ij*d inFigura ij , then we can approximate the part
each RA.73: of R.4Stewart [2015]
FIGURE
División o mallado del rectángulo FIGU
S that lies above each Rij by a thin rectangular box (or “column”) with base Rij and height
f sx ij*, yij*d as shown in Figure 4. (Compare with Figure 1.) The volume of this box is the Copyright 2016 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electron
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserv
height ofen thenbox times the area of the base rectangle:
subintervalos Œy ; y  de igual longitud y D .d c/=n. Cada subrectángulo R D Œx ; x   Œy ; y  D
i 1 i ij i 1 i j 1 j
f.x; y/ j xi 1  x  xi ; yj 1  y  yj g tiene un área A D xy.
Si escogemos un punto f de sx ij*muestra
, yij*d DA .x  ; y  / de cada Rij , la parte de S encima
40621_ch15_p01_hr_1027-1043.indd 1029 de él se puede aproximar por una
ij ij
“columna” o paralelepípedo rectangular de base Rij y altura f .xij ; yij /. Su volumen es f .xij ; yij /A. Siguiendo este
 

patrón,
If we follow en todos los
this procedure for rectángulos
all the rectanglesde R, andeladd
volumen aproximado
the volumes de S será
of the correspond-
ing boxes, we get an approximation to the total volume of S:
m X
X n
m n
V  f .xij ; yij /A:
3 V< o o f sx ij*, yij*d DA
i−1 j−1 i D1 j D1

Aproximación
(See Figure quesum
5.) This double serámeans
tantothat
mejor
for cuanto más se amplíen
each subrectangle las divisiones
we evaluate f at the m y n, es decir,
chosen point and multiply by the area of the subrectangle, and then we
Xm add
X n the results.
V D lKım f .xij ; yij /A:
z m;n!1
iD1 j D1

Definición A.89 La integral doble de f sobre el rectángulo R es


“ Xm Xn
f .x; y/ dA D lKım f .xij ; yij /A;
m;n!1
f(x *ij , y *ij ) i D1 j D1
R
0
c si existe ese límite existe.
d
Otro yresultado importante. y

Teorema A.59 xTeorema de Fubini. Si f es continua en el rectángulo R D f.x; y/ 2 R2 j a  x  b; c  y  d g


entonces “ Z bZ d Z dZ b
R ij
f .x; y/ dA D f .x; y/ dy dx D f .x; y/ dx dy:
FIGURE 5 a c c a
R

En general, esto es cierto si se supone que f está acotada en R, f es discontinua sólo en un número finito de curvas y
eserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
ent does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
las integrales existen.
Se debe al italiano Guido Fubini, Venecia, 19 de enero de 1879-Nueva York, 6 de junio de 1943.
4/10/15 11:45 AM

Fubini
598 j Apéndice A

A.6.1 Integrales de línea 16.2  Vector Fields and Line Integrals: Work, Circulation, and Flux

La integral de línea es una integral similar a42.laCenter


definida en un intervalo Œa; b pero cuya función es evaluada sobre2 una
of mass and moments of inertia for wire with variable 43. ƒ(x, y, z) = 21 + 30x + 10y ; r(t) = t i + t 2 j + 3t 2 k
curva C . En el caso de una curva cerrada en dos dimensiones,
density Find the centero of del massplano
and thecomplejo,
moments of también
inertia se denomina
0 … t … 2 integral de
contorno. about the coordinate axes of a thin wire lying along the curve 1
44. ƒ(x, y, z) = 21 + x3 + 5y3 ; r(t) = t i + t 2 j + 2t k
3
Los ejemplos prácticos de su utilización están en r(t) el cálculo
= ti +
2 2det3>2laj +longitud
2 t 2
k, 0 de
… t una
… 2, curva en el espacio, longitud o peso
0 … t … 2
3 2 45. ƒ(x, y, z) = x 2y - 3z ; r(t) = (cos 2t)i + (sin 2t)j +
2
de un cable tendido en el espacio que une dos puntos, o también en el cálculo del trabajo que se realiza
if the density is d = 1>(t + 1).
para mover algún
0 … t … 2p
objeto a lo largo de una trayectoria teniendo en cuenta campos de fuerzas (descritos por campos vectoriales) que9 actúen
46. ƒ(x, y, z) = a1 + z1>3 b ; r(t) = (cos 2t)i + (sin 2t)
1>4
COMPUTER EXPLORATIONS
sobre dicho objeto. In Exercises 43–46, use a CAS to perform the following steps to
4
Para modelizar y simular estas y otras realidades
evaluate thefísicas, económicas y sociales
line integrals. 946 que nosChapter
rodean, 16:
est5>2natural
k, 0 … trabajar
Integralst … 2p con Fields
and Vector
Find ds = 0 v(t) 0
magnitudes escalares y vectoriales que representan fuerzas y otras magnitudes de regiones conexas planas, o del espacio
a. dt for the path r(t) = g(t)i + h(t)j + k(t)k.
b. Express the integrand ƒ(g(t), h(t), k(t)) 0 v(t) 0 as a function of
al que estamos habituados. the parameter t.
z field defined on
Definición A.90 Un campo escalar es una función 1C ƒde
c. Evaluatereal varias
ds using variables
Equation text.W A  Rn ! R que a cada punto de
(2) in the f
16.15. To sketch
su dominio le asigna el valor que toma una determinada magnitud escalar en dicho punto. Ejemplos de estos son la the vectors att
temperatura, la densidad, la altura de un cuerpo, en nuestro espacio tridimensional. Si un campo escalar no depende attached to the
del tiempo se denomina estacionario. 16.2
Vector Fields and Line Integrals: Work, Circulation, and Flux
16.2  Vector Fields and Line Integrals: Work, Circulation, and Flux 945
Gravitational and electric forces have both a direction and a magnitude. They are
Definición A.91 Un campo vectorial es una función vectorial de varias variables sented byFa vector
W A at R n
each !point Rnin quetheiryadomain,
cada punto
producing a vector field. In this
de su dominiodensity
le asigna el vector correspondiente a
42. Center of mass and moments of inertia for wire with variable
Find the center of mass and the moments of inertia
una determinada
43. ƒ(x, y, z)magnitud
we1 show
= 2 vectorial
+ 30xhow
2
; r(t)que
to compute
+ 10y t i actúa
= the +work en
3t 2 k,dicho
t 2 j +done in movingpunto.
an object through such a field by
0 … t … 2 a line integral involving the vector field. We also discuss velocity fields, such as the
Representa la about
distribución
the coordinateespacial dewire
axes of a thin una magnitud
lying vectorial. Ejemplos son
along the curve field los campos eléctricos, los gravitatorios,
1 2 a flowing fluid in its domain. A line integral can b
44. ƒ(x, y, z) = 2 1 +representing the =velocity
x3 + x5y3 ; r(t) t i + tof j + 2t k,
los del movimiento del viento, 2 22 las
3>2
corrientes
t2 oceánicas, los flujos de 0 …un t …fluido,
2 to finddel
the calor, etc. Si
rate at which the un 3 campo
fluid flows along vectorial
or acrossno
a curve within the domain.
r(t) = t i + t j + k, 0 … t … 2,
depende del tiempo se denomina estacionario. En los campos45.vectoriales
3 2 sey definen
ƒ(x, y, z) = x 2 - 3z2 ; r(t)las líneas
= (cos 2t)i +de (sinfuerza
2t)j + 5tk, o líneas de
campo, como iflas curvas tangentes en cada punto a los vectores definidos
the density is d = 1>(t + 1).
en ellos. 1>4
0 … t … 2pVector Fields

46. ƒ(x, y, z) = a1 + z1>3abregion


FIGURE ; 16.8 Vectors in2t)j
a + is occupied by a moving fluid, such as
COMPUTER EXPLORATIONS
9
Suppose r(t) (cos
in =the 2t)i +
plane or (sin
in space
Un campoIn vectorial en un
Exercises 43–46, use dominio tridimensional
a CAS to perform the following se puede
steps to definir F.x;
comowater. 4
fluidDis M.x;
y; z/
gravitational
The field up
made i C N.x;
y;ofz/a toward
point large numbery; of z/ j C and at any instant of
particles,
t 5>2 k, 0 … t … 2p
P .x; y; z/ k. Es continuo si lo es cada una de las funciones o campos escalares
evaluate the line integrals.
que lo conforman, M , N y P ; es derivable
a. Find ds = 0 v(t) 0 dt for the path r(t) = g(t)i + h(t)j + k(t)k.
particle has a velocity v. At different
the center of mass that gives the points of the region at a given (same) time
si lo es cada una de las funciones. En el caso bidimensional, los vectoresvelocities tendrían canla forma
vary. We can F.x;
thinky/ of aD velocity
M.x; vector
y/ i C
being attached to each point
b. Express the integrand ƒ(g(t), h(t), k(t)) 0 v(t) 0 as a function of source
fluid of thethefield.
representing velocity of a particle at that point. Such a fluid flow is an exam
N.x; y/ j: the parameter t.
FIGURE 16.6 Velocity vectors of a
a vector field. Figure 16.6 shows a velocity vector field obtained from air flowing
flow around an airfoil in a wind tunnel.
Estos conceptos tienen
c. Evaluate 1C ƒsentido físico (2)
ds using Equation si inntheDtext.2 o n D 3. En ocasiones los an campos
airfoil in a vectoriales se refieren
wind tunnel. Figure 16.7 shows aF W A field
a vector  of velocity vectors alo
Rn ! Rm , siendo en general m ¤ n. streamlines of water moving through a contracting channel. Vector fields are also
ated with forces such as gravitational attraction (Figure 16.8), and with magnetic
También son campos vectoriales los vectores T tangentes y los N normales a fields,
electric lo largo de una
and there determinada
are also curvafields.
purely mathematical en
16.2
el espacio, el de vectores Vectorgradiente
Fieldsde
ilustran algunos ejemplos de campos vectoriales.
and unaLinefunción escalarWork,
Integrals: y; z/ a un determinado
f .x;Circulation, Generally,
and nivel,field
Flux a vector etc.is En la figura
a function A.74a se
that assigns vector to each point in its d
A vector field on a three-dimensional domain in space might have a formula like
Gravitational and electric forces have both a direction and a magnitude. They are repre-
F(x, y, z) = M(x, y, z)i + N(x, y, z)j + P(x, y, z)k.
sented by a vector at each point in their domain, producing a vector field. In this section FIGU
we show how to compute the work done inThe fieldan
moving is object
continuous
throughif the
suchcomponent vectoit
functions M, N, and P are continuous;
a field by using
a line integral involving the vector field. Weferentiable
also discussif each of the
velocity component
fields, functions
such as the vector is differentiable. The formulaarrow
for a f
field representing the velocity of a flowingtwo-dimensional vectors
fluid in its domain. A linecould lookcan
integral likebe used
to find the rate at which the fluid flows along or across a curve within the domain.
F(x, y) = M(x, y)i + N(x, y)j.
We encountered another type of vector field in Chapter 13. The tangent vectors
Vector Fields normal vectors N for a curve in space both form vector fields along the curve. A
Suppose a region in the plane or in spacecurve r(t) theybymight
is occupied have afluid,
a moving component
such asformula
air or similar to the velocity field expres
water. The fluid is made up of a large number of y,
f (x, z) = c and at any instant
particles, v(t) = of time,
ƒ(t)i a
+ g(t)j + h(t)k.
FIGUREhas
particle 16.7 Streamlines
a velocity v. Atin different
a points of the region at a given (same) time, these
contractingcan
velocities channel.
vary.The
We water speedsofupa velocity Ifvector
can think we attach
beingthe gradient
attached to each ∇ƒ of the
vectorpoint a scalar function ƒ(x, y, z) to each poi
as therepresenting
fluid channel narrowsthe and of a particle level
the velocity
velocity at thatsurface
FIGURE of thea fluid
point. Such function,
flow we anobtain
isfield
examplea three-dimensional
of field on the surface
FIGURE 16.6 Velocity vectors of a
Figura A.74: Distintos campos vectoriales: aEl flujo
vectors
vector de viento
increase
field. alrededor
in length.
Figure 16.6 shows ade un ala,
velocityattachel the
vector agua
field al16.10
pasar
velocity por
vector
obtained from
Theel
toair estrechamiento
each point around
flowing de fluid, we have a three-dime
of a flowing
flow around an airfoil in a wind tunnel. ∇ƒvectors
un canal y los vectores gradiente rf de unaansuperficie
airfoil in afwind
.x; y; c 16.7 showsofa gradient
z/ DFigure
tunnel. vector fieldvectors
of velocity on a along the
streamlines of water moving through a contracting surface ƒ(x, Vector
channel. y, z) =fields
c. are also associ-
ated with forces such as gravitational attraction (Figure 16.8), and with magnetic fields,
Empezamos con una curva C D f .x; y; z/ definida
electric porthere
fields, and las are
ecuaciones paramétricas
also purely mathematical fields.
Generally, a vector field is a function that assigns a vector to each point in its domain.
A vector field on a three-dimensional domain in space might have a formula like
x D g.t/; y D h.t/; z D k.t/; a  t  b
F(x, y, z) = M(x, y, z)i + N(x, y, z)j + P(x, y, z)k.
M16_THOM8960_CH16_pp938-1032.indd 945
z FIGURE 16
pues puede ser conveniente pensar en C y en como
Thet field la trayectoria
is continuous de un objeto
if the component en el
functions M, tiempo y en
N, and P are espacio.it is dif-
continuous;
F = xi + yj
ferentiable if each of the component functions is differentiable. The formula for a field of
vectorial r.t/vectors
También se puede definir por la ecuacióntwo-dimensional D g.t/ i C h.t/ j C k.t/ k, a  t  b. Los valores de
could look like
f a lo in the plane.
largo de la curva son los dados por f .g.t/; h.t/; k.t//.
F(x, y) = M(x, y)i + N(x, y)j. arrow is draw
x2 + y2 ≤ a2
We encountered another type of vector field in Chapter 13. The tangent vectors T and the point wh
normal vectors N for a curve in space both form vector fields along the curve. Along a
curve r(t) they might have a component formula similar to the velocity fieldzexpression
= a2 − r2
v(t) = ƒ(t)i + g(t)j + h(t)k.
FIGURE 16.7 Streamlines in a
contracting channel. The water speeds up If we attach the gradient vector ∇ƒ of a scalar function ƒ(x, y, z) to each point of a Gradient Fiel
as the channel narrows and the velocity level surface of the function, we obtain a three-dimensional field on the surface. If we
vectors increase in length. attach the velocity vector to each point of a flowing fluid, we have a three-dimensional The gradient ve
0 of greatest incr
x
16.1 Line Integrals
To calculate the total mass of a wire lyin
by a variable force acting along such a
than was defined in Chapter 5. We nee
interval 3 a, b4 . These more general in
integrals might be more descriptive). W
A.6 curves
Elementos de cálculo integral, campos in the yxy-plane
escalares being
campos vectoriales the special
j 599
Suppose that ƒ(x, y, z) is a real-valu
z lying within the domain of ƒ and paramet
t=b
The values of ƒ along the curve are give
are going to integrate this composite w
begin, we first partition the curve C into
r(t) typical subarc has length ∆sk . In each s
C sum

Δs k
n
(x k , yk , z k )
y Sn = a
t=a k=
x

Figura A.75: Curva C troceada entre a y b en n porciones de arco


FIGURE 16.1 The curve r(t) partitioned which is similar to a Riemann sum. Dep
into small arcs from t = a to t = b. The (xk , yk , zk) in the kth subarc, we may get
Para integrar la curva C entre a y blength
se divide
of aen un número
typical subarcdeissubarcos
∆sk . n —como se ve en la figura
functions g, h, A.75—, cada continuous
and k have uno fir
de longitud sk y representado por el punto de muestra .xk ; yk ; zk /. Si se forma la suma
n increases and the lengths ∆s approac k
n
X similar to that for a single integral. In th
Sn D f .xk ; yk ; zk / sk ; ∆sk S 0 as n S q.
kD1

y se cumple que f es continua y las funciones g, h y k tienen derivadas de primer orden continuas, esta suma tiende a
un límite cuando n tiende a infinito y las longitudes sk a cero.
Definición A.92 Si la función f está definida en la curva C , paramétricamente dada por r.t/ D g.t/ iCh.t/ jCk.t/ k,
a  t  b, la integral de línea de f938
en C es, supuesto exista ese límite,
I X n
f .x; y; z/ D lKım f .xk ; yk ; zk / sk
C n!1
kD1

La longitud de C se sabe que es


M16_THOM8960_CH16_pp938-1032.indd 938
l b s   2  2
2
dx dy dz
LD C C dt
dt dt dt
a

por lo que s
I l b  2  2  2
dx dy dz
f .x; y; z/ D f .xk ; yk ; zk / C C dt:
C dt dt dt
a

En forma vectorial I Z b
f .x; y; z/ D f .r.t// jr0 .t/j dt:
C a

A.6.1.1 Integrales de línea en campos vectoriales


El trabajo realizado por una fuerza constante F moviendo un objeto de un punto P a otro Q en el espacio es W D F  D,
!
donde D D PQ es el vector de desplazamiento.
Si suponemos que F D P i C Q j C R k es un campo de fuerzas en R3 , como por ejemplo el campo gravitatorio o
un campo eléctrico, para calcular el trabajo que realiza esa fuerza para mover una determinada partícula a lo largo de
una curva continua C en el intervalo paramétrico Œa; b (que se corresponde con los puntos de la curva P0 y Pn ) —se
ve en la figura A.76—, se divide ese intervalo en subintervalos de igual longitud, que se corresponderán con subarcos
Pi 1 Pi de longitudes si . Cada uno de estos subarcos estarán representados por un punto de muestra Pi .xi ; yi ; zj /
correspondiente al parámetro ti .
work done by a constant force F in movi
l
space is W − F  D, where D − PQ is
Now suppose that F − P i 1 Q j 1
gravitational field of Example 16.1.4 or t
field on R 2 could be regarded as a spec
on x and y.) We wish to compute the wo
600 j Apéndice A
a smooth curve C.
z We divide C into subarcs Pi21Pi wit
fa, bg into subintervals of equal width.
F(x *i , y*i , z *i ) Figure 11 for the three-dimensional cas
T(t *i ) arc corresponding to the parameter valu
Pi-1 from Pi21 to Pi along the curve, it proce
Pi unit tangent vector at Pi*. Thus the work
0 Pi21 to Pi is approximately
Pn
P i*(x *i , y*i , z *i ) y
Fsxi*, yi*, zi*d  fDsi Tsti*
x

and the total work done in moving the p
Figura A.76: Integral de línea en un campo de fuerzas. Stewart [2015]
FIGURE 11
n
Si si es pequeño, al moverse la partícula entre pi 1 y pi seguirá aproximadamente la dirección
curva en Pi . El trabajo que hace F entre Pi 1 y Pi es
11 T.ti /, o fFsx*i , yi*,
tangente a la
i−1

F.xi ; yi ; zi /  Œsi T.ti / D ŒF.xi ; yi ; zi /  T.ti /si
where Tsx, y, zd is the unit tangent vect
y en el total en toda la curva C , aproximadamente
that these approximations ought to bec
n
X define the work W done by the force fi
ŒF.xi ; yi ; zi /  T.xi ; yi ; zi /si namely,
iD1

donde T.x; y; z/ es el vector unitario tangente a C en el punto .x; y; z/. Esta aproximación será tanto mejor cuanto más
12
grande sea n y, en el límite, cuando n ! 1, el trabajo será (el límite de las sumas de Riemann) W− y C
Fsx, y, zd 
I I
RD F.x; y; z/  T.x; y; z/ ds D F  T ds:
C C
Equation 12 says that work is the line in
El trabajo es pues la integral de línea con respecto a la longitud del arco del componente tangencial deof
component la the
fuerza.
force.
Si la curva se expresa paramétricamente mediate r.t/ D x.t/ i C y.t/ j C z.t/ k, entonces T.t/ r0 0
If the curve C is por
D .t/=jr .t/j lo by the vect
given
que la expresión del trabajo queda
l b 
Tstd − r9stdy r9std , so using Equation 9
 Z
| |
b
r .t/
0
W D F.r.t//  jr0 .t/j dt D F.r.t//  r0 .t/ dt:

yF
jr0 .t/j a b r9std
a
W− Fsrstdd 
Definición A.93 Sea F un campo vectorial continuo definido en una curva C dada por la función r.t/, a  t  b. La
a | r9std
integral de línea de F a lo largo de C es
I l bCopyright 2016 Cengage Learning.IAll Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to elect
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning res
F  dr D F .r.t//  r0 .t/ dt D F  T ds
C a C

40621_ch16_ptg1_hr_1118-1127.indd
Teorema A.60 Teorema fundamental 1122
de las integrales de línea. Sea C una curva continua dada por la función r.t/,
a  t  b. Sea f una función derivable de dos o tres variables cuyo vector gradiente rf es una función continua en
C . Entonces I
rf  d r D f .r.b// f .r.a//
C
602 j Apéndice A

Calculemos ahora la integral doble del teorema de Green en la que P D y y Q D x. Se obtiene que
“   “
@Q @P
dA D .1 . 1// dA
@x @x
D D

D2 1 dA
D
D 2  .área del círculo unidad/
D 2:

Esto hace que



  
@Q @P
F  dr D dA D 2:
C @x @x
D

Definición A.94 Si F D P i C Q j C R k es un campo vectorial en R3 y las funciones P , Q y R tienen derivadas


parciales de primer orden, se define el rotacional de F como el campo vectorial en R3 que expresa
     
@R @Q @P @R @Q @P
rot F D iC jC k:
@y @z @z @x @x @y

Si se piensa en el operador r como un vector de coeficientes @=@x, @=@y y @=@z, el producto vectorial de r con el
campo vectorial F es
ˇ ˇ
ˇ i j kˇ
ˇ ˇ
ˇ@ @ @ˇ
r  F D ˇ @x @y @z ˇˇ
ˇ
ˇP Q Rˇ
     
@R @Q @P @R @Q @P
D iC jC k
@y @z @z @x @x @y
D rot F:

De aquí que
rot F D r  F:

Definición A.95 La divergencia de un campo vectorial F es el campo escalar de tres variables


@P @Q @R
div F D C C :
@x @y @z
Como r D .@=@x/ i C .@=@y/ j C .@=@z/ k, la divergencia de F se puede escribir así
div F D r  F

Con estos conceptos, la expresión del teorema de Green puede adoptar estas dos nuevas formas

 s
F  dr D .rot F/  k dA
C
D

 s
F  n ds D div F.x; y/ dA
C
D

donde el vector n es el que se indica en la figura A.78.


604 j Apéndice A

A.7 Sobre el método de los elementos finitos de Ritz-Galerkin pa-


ra resolver ecuaciones en derivadas parciales
Desde tiempos de C.F. Gauss, Alemania 1777-1855 y W. Thompson, Irlanda 1775-1833, la equivalencia entre los pro-
blemas de ecuaciones en derivadas parciales con condiciones de contorno y los de cálculo de variaciones ha ocupado
un puesto destacado en el análisis matemático. En un principio el esfuerzo se concentró en los aspectos teóricos de los
problemas; posteriormente, dos físicos, Lord Rayleigh —John William Strutt, Reino Unido 1842-1919— y Walther Ritz,
Suiza 1878-1909,

Rayleigh Ritz

independientemente al parecer, concibieron la idea de utilizar esa equivalencia para calcular numéricamente soluciones
de problemas habituales de física mediante la sustitución de los problemas de cálculo de variaciones por otros más
simples de obtención de extremos con un número finito de parámetros por determinar.
Sus métodos atrajeron pronto a ingenieros y físicos —los principios físicos de la mecánica son más sugestivos que las
ecuaciones diferenciales— y se empezaron a aplicar a muchos problemas cercanos. El resultado era lógica consecuencia
del esquema conceptual de cómo se tratan en análisis matemático —y en muchos aspectos de la vida cotidiana— los
problemas difíciles: Un problema P con solución S se reemplaza por otro más o menos relacionado o próximo, Pn , más
simple de resolver, cuya solución es Sn . Luego se mejora la aproximación Pn de P de tal forma que la solución Sn , paso
a paso, tienda a la deseada S . Lo esencial es escoger la sucesión de aproximaciones Pn de una manera adecuada.
Una de las cuestiones más interesantes y con más posibilidades de futuro que contemplan las aplicaciones de las mate-
máticas para simular y resolver muchos problemas de la vida cotidiana es el de utilizar modelos matemáticos expresados
en forma de ecuaciones diferenciales e integrales que reproducen procesos y fenómenos complejos de la física y otras
ciencias naturales y sociales cuyos orígenes y evolución suelen estar distribuidos en el tiempo y en el espacio. Se mo-
delan de esta forma la propagación del sonido o del calor, la electrostática, la electrodinámica, la dinámica de fluidos,
la elasticidad, la mecánica cuántica, las emisiones de contaminantes, los fenómenos meteorológicos, la valoración de
opciones y derivados financieros y muchos otros. El enfoque para resolverlos de forma práctica sigue exactamente el
principio enunciado más arriba.

La idea esencial que seguiremos en estas notas es la de convertir el problema con ecuaciones diferencia-
les, integrales o ecuaciones en derivadas parciales, suponiendo que tiene solución con unas determinadas
características, en uno formulado en términos de cálculo de variaciones de funciones continuas —la mi-
nimización de un funcional— para así caracterizar en qué condiciones se da una solución u óptimo del
mismo. Luego se discretiza ese problema continuo con un número infinito de grados de libertad mediante
un problema discreto, o sistema de ecuaciones, con un número de variables finito y más fácil de resolver y
se resuelve mediante alguna de las diversas técnicas que existen para ello.

Cuando se empieza a trabajar y aprender métodos numéricos para resolver problemas matemáticos el de las diferencias
finitas sigue ideas muy intuitivas: simplemente se aproxima una derivada de una curva en un punto de ella por una línea
secante. Si se estudia el método del volumen finito, también su idea es bastante sencilla: cada elemento de volumen es
simplemente un pequeño equilibrio del flujo o de fuerzas. El método de los elementos finitos sigue esa senda más o
menos, con alguna pequeña modificación.
La base matemática para el método de los elementos finitos se encuentra en el entorno de los espacios de Hilbert.
Un espacio de Hilbert es una manera de tratar una función como un vector, por lo que podemos hacer algunos trucos
de matemáticas vectoriales con él. Recordemos que un vector es una serie de valores, o escalares, multiplicados por
un conjunto de vectores de una base ortogonal (como los vectores unitarios que definen la direcciones x, y y z, o los
i , j y k). Podemos utilizar una técnica paralela para definir una función. Primeramente seleccionamos un conjunto
de funciones de base en vez de aquellos vectores (esas funciones deben ser ortogonales entre sí) y luego definimos la
A.7 Sobre el método de los elementos finitos de Ritz-Galerkin para resolver ecuaciones en derivadas parciales j 605

función original como una suma de unos coeficientes multiplicados por las funciones de la base: de esta forma
1
X
uD ˛k k ;
kD1

donde cada una de las k es una función de la base.


El siguiente paso es convertir nuestra ecuación diferencial en algo llamado su formulación débil. Esto se hace básica-
mente multiplicando por una función de prueba y luego integrando en el espacio. Sin entrar en los detalles de momento,
se trata de hacer lo mínimo necesario para convertir nuestra ecuación diferencial en algo en lo que podamos utilizar
nuestras matemáticas de espacios vectoriales. Esencialmente, donde exista una forma de "producto interior", en nues-
tro caso con funciones como la de prueba en vez de vectores, y la solución. Este producto interior será una integral y
podremos usar integración por partes para convertirlo en formatos más manejables.
Después nos desharemos de FEA Fundamentals
alguna manera de la abstracción empleada y comprobaremos que realmente estamos
tratando con un espacio• vectorial de dimensión
Define the domain finita: los vectores función no son infinitos ni estamos sumando infinitos
términos.
FEA Fundamentals
• Discretize the domain

Figura A.80: Discretización en malla de una pieza de geometría sencilla

Este proceso es lo que se entiende por discretización en las técnicas de los elementos finitos. La discretización que se
utiliza está determinada por una malla o retícula (una retícula de por ejemplo 2020 daría como resultado 441 funciones
base únicas) —mesh como la de la figura A.80— y normalmente se emplean dos funciones de base a cada lado de un
elemento de la malla.
Con esas funciones de base la solución de nuestra ecuación diferencial se representaría de esta manera
n
X
u0 D ˛k k :
kD1

La única diferencia con la expresión anterior es el límite superior del sumatorio.


El siguiente paso es hacer que nuestra función de prueba sea una función de base. También habrá que asegurarse que
las funciones base no se superpongan, lo cual garantiza el que sean ortogonales como pretendíamos antes y nos permite
aproximar más fácilmente la solución en el dominio de interés. Las funciones de base que se suelen usar son polinomios
(especialmente polinomios lineales o cuadráticos).
Después de lo que puede parecer que es complicar el problema original agregando toda esta abstracción y matemáticas
para llegar a lo que hemos llegado, ¿qué hemos conseguido realmente? Pues convertir el problema en una ecuación
algebraica matricial sencilla para poderlo resolver por medio del álgebra que conocemos. Si el problema fuese lineal,
simplemente tendremos que resolver la ecuación Ax D b.
Para un problema simple como el de la ecuación de Poisson

@2 u @2 u
u.x; y/ D C D f .x; y/; Poisson
@x 2 @y 2

por Siméon Denis Poisson, Francia, 1781-1840. la matriz A es muy fácil de calcular y se denomina la matriz de rigidez
en homenaje a los principios de las técnicas de elementos finitos en problemas de elasticidad. Esta matriz —muy dispersa
606 j Apéndice A

(con pocos coeficientes distintos de cero) y diagonal dominante— está formada por el producto interior de las funciones
de base con ellas mismas, multiplicadas si es el caso por la constante que aparezca en la ecuación original. El vector
solución de ese sistema se multiplica por el de las funciones de base y se obtiene la del problema original, o una que se
aproxima mucho a la misma.
Resumiendo, el procedimiento de resolución del método de los elementos finitos consta de las siguientes fases u
operaciones:
Conversión del problema original de dimensión infinita, mediante las propiedades de los espacios de Hilbert, en
uno similar próximo en un espacio vectorial de dimensión finita. En éste se estudia la existencia y unicidad de la
solución.
Creación de una formulación débil del problema original con la que podamos usar las herramientas de producto
interior y medida.
Discretización del dominio de definición del problema y elección de una base de funciones que sean ortogonales
entre si.
Conversión de los productos interiores entre funciones de base en sistemas lineales de ecuaciones.
Resolución de ese sistema lineal resultante mediante técnicas de matrices dispersas.
Las ventajas de este método frente a otros son muchas en bastantes ámbitos de la ingeniería, la ciencia y la investigación
por lo que su extensión y precisión, así como los algoritmos que emplea, cada vez son más amplios, ambiciosos y
potentes.
Para concretar con cierto detalle los pasos
Lesson 1 del método, vamos a desarrollar el estudio de un problema preciso habitual.
Seguiremos esencialmente el trabajo de Francisco Javier Sayas [2015].

Linear triangular elements


A.7.1 Solución de una ecuación en derivadas parciales
Consideraremos en lo que sigue el siguiente problema de una ecuación en derivadas parciales elíptica de segundo orden
1 The model problem
con condiciones de contorno:
All along this course we will be working with a simple model boundary value problem,
€ u.x;
which will allow us to C the
y/put cu.x; y/ Donfthe
emphasis y/ dentro
.x;numerical method derather
 than on the
intricacies of the problem itself. For some of the exercises and in forthcoming lessons we
u.x; y/ D g0 .x;bit.y/
will complicate things a little
en la frontera €D
In this@initial
n u.x; y/
sectionD g
there
1 .x;
is y/
going to be a lot of new en laTake
stuff. frontera €Nto: read it
your time
carefully, because we will be using this material during the entire course.
Esta forma de formularlo se denomina formulación fuerte.
1.1 The physical domain
La geometría del entorno físico esquemático en el que se desenvolverá será tan simple como la de la figura A.81, o
d
una generalización deThe firstEn
ella. thing we have
este casotoconcreto
describe is es
the un
geometry (the physical
subconjunto setting 
abierto of the
2R problem).
representado por un polígono
You have a sketch of it in Figure 1.1.

ΓD
ΓN

Figura A.81: Dominio de definición  y condiciones de contorno


Figure 1.1: The domain Ω and the Dirichlet and Neumann boundaries

2
We are thus given a polygon in the plane R . We call this polygon Ω. Its boundary
en el plano R2 , “pegado” o adherido en su frontera a la curva que define €, dividida ésta en dos partes: la que define
is a closed polygonal curve Γ. (There is not much difference if we suppose that there is
€D , que materializan unas condiciones de contorno de Dirichlet —por Johann Peter Gustav Lejeune Dirichlet,
Alemania 1805-1859— y la €N , con condiciones de3 contorno de Neumann —por Karl Gottfried Neumann,
Alemania 1832-1925—. En términos físicos, las condiciones de Dirichlet determinan unos posibles desplazamientos
físicos de esa frontera, mientras que las de Neumann unas posibles tensiones máximas o mínimas.
La ecuación en derivadas parciales propiamente dicha, la primera en la formulación, se denomina habitualmente
ecuación difusión-reacción. El término que representa la difusión es u y el de reacción cu, cuando c > 0. La
A.7 Sobre el método de los elementos finitos de Ritz-Galerkin para resolver ecuaciones en derivadas parciales j 607

Dirichlet Neumann

constante c es no negativa; en principio puede adoptar los valores 0 ó 1.


La función escalar u.x; y/ W R2 ! R, definida en el dominio , es la incógnita de este problema.
La función f .x; y/ está definida en  y se puede considerar como una densidad superficial de fuerzas.
Las dos funciones que expresan las condiciones de contorno, g0 .x; y/ y g1 .x; y/, están definidas en dos partes
diferentes de la frontera. La función g0 deberá ser continua; la g1 puede ser discontinua.
El símbolo @n designa la derivada normal hacia afuera, es decir
@n u D ru  n;
donde n es el vector unidad hacia afuera en puntos de la frontera € y ru es el gradiente de u. Supondremos que
existe.

A.7.1.1 El problema en forma débil o variacional


Siguiendo cada uno de los pasos de la estrategia enunciada para resolver este problema, vamos a formularlo de una
forma diferente de la original denominada forma débil o forma variacional.
Para ello utilizaremos el teorema de Green, a menudo denominado primera fórmula o identidad de Green, derivada
del teorema de la divergencia, que no es sino una forma de integración por partes. Aplicado a nuestro caso dice que
Z Z Z
.u/ v C ru  rv D .@n u/ v:
  €

La función v es una función de prueba, continua, en principio definida en  D  [ €. En esa expresión hay dos
tipos de integrales: las dos del miembro de la izquierda son integrales de superficie, en el dominio . La del derecho es
una integral lineal en el borde o frontera €. Hemos prescindido de los diferenciales correspondientes para compactar la
notación. El punto de la segunda integral del miembro de la izquierda se refiere al producto interior de dos vectores, es
decir ru  rv D @u @v
@x @x
C @u @v
@y @y
.
El resultado sería aplicable también a tres dimensiones: las dos integrales de la izquierda serían de volumen; la de la
derecha de superficie.

Figura A.82: Región o volumen V acotada por la superficie o frontera S D @V con la normal a la superficie n

La identidad expresada es una consecuencia del resultado del teorema de la divergencia que dice que para un sub-
conjunto V 2 Rn —en el caso de tres dimensiones V representa un volumen como el de la figura A.82—, en principio
compacto, de superficie, o borde, S continua a trozos (expresada por @V D S), si F es un campo vectorial con derivadas
parciales de primer orden continuas definido en un entorno de V , se cumple que
• —
.r  F/ dV D .F  n/ dS:
V S
608 j Apéndice A

Aplicado a una función escalar f W Rn ! R y un vector constante c distinto de cero


• • —
c  rf dV C f .r  c/ dV D .cf /  d S;
V V S

donde d S expresa de forma compacta ndS .


Haciendo f D ru y c D v se tiene la expresión anterior de la primera identidad de Green.
Si sustituimos u D f cu en la expresión obtenida a partir de la identidad de Green en donde se integra en  y
que @n u D g1 en €N , después de reordenar un poco se llega a
Z Z Z Z Z
ru  rv C c uv D fv C g1 v C .@n u/ v:
   €N €D

Como no sabemos el valor de @n u en €D imponemos que la función v sea cero en esa parte de la frontera o borde: v D 0
en €D . A partir de ahí,
Z Z Z Z
ru  rv C c uv D fv C g1 v; si v D 0 en €D :
   €N

La expresión del miembro de la izquierda es lineal en las funciones u y v. Es una forma bilineal de las variables u y v.
La de la derecha es lineal en v. Todavía no hemos hecho uso de la condición de Dirichlet en la frontera, u D g0 en €D .
La formulación débil del problema queda por fin así:

en €D Z
‚u D g 0
Z
R R
Determinar una función u tal que: ru  rv C c uv D  f v C €N g1 v;
 
para todo v tal que v D 0 en la frontera €D :

En esta formulación la condición de Dirichlet —desplazamientos dados— se impone como una condición aparte que
ha de cumplir la función de prueba v. Se denomina condición esencial de borde o frontera. La condición de Neumann
—fuerzas normales— aparece como una condición de frontera natural dentro de la formulación del problema.
Como indicábamos anteriormente, la función de prueba v chequea la ecuación que satisface u. Juega un papel de
función de ponderación para comprobar el comportamiento medio de la ecuación. En alguna referencia interesante se la
denomina desplazamiento virtual para enfatizar que no es una incognita sino algo utilizado para formular el problema
de esta manera: mediante desplazamientos virtuales de la realidad, si se llega a conocer.

A.7.1.2 Espacios de trabajo


Hasta ahora hemos dado por hecho que el contexto matemático donde se desenvuelve este problema y las formulaciones
que estamos utilizando cumplen una serie de requisitos matemáticos que permiten su existencia y solución. Vamos a
formalizarlo un poco. El primer espacio que estamos utilizando es el espacio vectorial de las funciones al cuadrado
integrables en , es decir,  ˇZ 
ˇ
L ./ D f W  ! R ˇˇ jf j2 < 1 :
2

Como vimos en la sección dedicada a espacios vectoriales, la definición
R requiere la integral de Lebesgue, la métrica o
medida de Lebesgue y el espacio de Lebesgue. Simplificadamente, si  f .x/ dx es la integral de Lebesgue de f .x/ y
R
se define la norma kf kLp ./ D .  f p dx/1=p , para 1  p < 1, los espacios de Lebesgue son
˚
Lp ./ D f .x/ W kf kLp ./ < 1 :

El segundo es el espacio de Sobolev —por Sergéi Lvóvich Sobolév, Rusia 1908-1989—. Es une espacio vectorial de
funciones dotado de una norma que es combinación de normas Lp de la función y de sus derivadas hasta un orden dado.
Formalmente para dos dimensiones es
 ˇ 
ˇ @u @u
H 1 ./ D u 2 L2 ./ ˇˇ ; 2 L2 ./ :
@x1 @x2
A.7 Sobre el método de los elementos finitos de Ritz-Galerkin para resolver ecuaciones en derivadas parciales j 609

Las derivadas de este espacio se entienden en un sentido débil que hagan que el espacio sea completo —si toda sucesión
de Cauchy en él tiene límite— y por lo tanto sea un espacio de Banach. En sentido débil no es sino una generalización del
concepto de derivada a funciones no necesariamente derivables pero si integrables localmente en el sentido de Lebesgue
en un dominio dado  de Lp ./.
La norma correspondiente de este espacio completo es
Z Z 1=2 Z ˇ ˇ2 Z ˇ ˇ2 Z !1=2
ˇ @u ˇ ˇ @u ˇ
kuk1;D 2
jruj C juj2 D ˇ ˇC ˇ ˇ C juj2 ;
ˇ ˇ ˇ ˇ
   @x1  @x2 

denominada en ingeniería norma de energía. Las funciones que usan esta forma finita son funciones de energía finita.
Intuitivamente, un espacio de Sobolev es un espacio de funciones con derivadas de orden suficiente para un dominio de
aplicación determinado y equipado con una norma que mida adecuadamente tamaño y regularidad en las funciones. Un
subespacio de interés de ese espacio H 1 ./ es
˚
H€1D ./ D v 2 H 1 ./ jv D 0 en €D :

Establecido todo este aparato matemático, la formulación débil del problema original queda así:
1
‚ Determinar una función u 2 H ./ tal que
Z D g0 en €D Z
u Z Z
ru  rv C c uv D fv C g1 v; para todo v 2 H€1D ./:
   €N

La condición que se impone a la función de prueba, v 2 H€1D ./, es la misma que

v 2 H 1 ./ tal que v D 0 en €D ;

lo que quiere decir que v está en el mismo espacio de la función que se busca u pero satisface una versión homogénea
de la condición esencial de borde o frontera.
Los datos del problema están en los siguientes espacios f 2 L2 ./, g1 2 L2 .€N / y g0 2 H 1=2 .€D /. El segundo
espacio restringe el dominio de las integrales en la línea que marca €N en vez de en . Que g0 2 H 1=2 .€D / quiere
decir que existe al menos una función u0 2n H 1 ./ tal que u0 D og0 en €D . De hecho, todas las demás que cumplen esta
˚
condición pertenecen a u0 C H€1D ./ D u0 C vjv 2 H€1D ./ D w 2 H 1 ./jw D g0 en €D . Que g0 pertenezca
a H 1=2 .€D / significa que no se busca la solución en el conjunto vacío.

A.7.1.3 Discretización del problema en un subespacio de elementos finitos lineales


Como venimos anunciando, la resolución del problema que estudiamos con el concurso de “elementos finitos” está
basada en la aproximación, debida a Boris Grigoryevich Galerkin, Rusia 1871-194,

Galerkin

del espacio H 1 ./ mediante funciones polinomiales sencillas por tramos o trozos. Esto transformará el espacio original
de dimensión infinita en un subespacio de dimensión finita de funciones admisibles fáciles de obtener.
Para conseguirlo se utiliza una partición del dominio de cálculo  en subdominios, a los que se denomina mallado.
El más sencillo es aquel en el que  es un intervalo de la recta real, por ejemplo el abierto .0; 1/, en el que se tiene
la partición 0 D x0 < x1 <    < xn D 1 dividida en subintervalos Ij D .xj 1 ; xj / de longitud hj D xj xj 1 ,
j D 1; : : : ; n. Si h D mKax hj y Vh es el espacio lineal de funciones v tal que v 2 C 0 .Œ0; 1/, vjŒxi 1 ;xi  es un polinomio
lineal, i D 1; : : : ; n, perteneciente por tanto a P1 , y v.0/ D 0.
610 j Apéndice A
0.4 Piecewise Polynomial Spaces 7

0.4 Piecewise Polynomial Spaces – The Finite Element


Method Kronecker

Let 0 = x0 < x1 < ... < xn = 1 be a partition of [0, 1], and let S be the
linear space of functions v such that
i) v ∈ C 0 ([0, 1])
Para cada i D 1; : : : ; n se define la función i como una delta de Kronecker, por Leopold Kronecker, Polonia
1823-Alemaniaii) v|[xdei−1
1891, tal,x
forma
i]
is que
a linear polynomial, i = 1, ..., n, and
(
iii) v(0) = 0. 1 si i D j
We will see later that S ⊂iV D ıijeach
.xj. /For D i = 1, .., ;n define φ by the require-
0 si i ¤ j Polynomiali Spaces
0.4 Piecewise 7
ment that φi (xj ) = δij = the Kronecker delta, as shown in Fig. 0.1.
según se indica en la figura A.83.
0.4 Piecewise Polynomial Spaces – The Finite Element
 i
Method
Let 0 = x0 < x1 < ... < xn = 1 be a partition of [0, 1], and let S be the
linear space of functions v such that
i) v ∈ C00 ([0, 1]) xi 1
ii) v|[xi−1 ,xi ] is a Figura
linearA.83:
polynomial, i lineal
Función de base = 1,por ...,tramos
n, and
iii) v(0) = 0.
Se tieneWe
que will
fi W 1see
 ilater
Fig.
that 0.1.
S ⊂de piecewise
VV.h .For linear
each basis
if= function φ
 ng es una base El conjunto i g 1,
es ..,
unanbasedefine i by
nodaliφde Vh ythe
fv.xrequire-
i /g son los valores
nodales dement
una función v. Los puntos .x / se denominan nodos o nudos.
that φi (x0 j ) = δij i = the Kronecker delta, as shown in Fig. 0.1.
DadaPuna funciónLemma.
(0.4.1) v 2 C .Œ0;
{φ1/, el ≤
i: 1 i ≤ n} iso función
interpolante, a basisdefor interpolación,
S. vh 2 Vh de v se obtiene mediante
n
vh D i D1 v.xi /i como se aprecia en la figura A.84. Si v 2 Vh ) v D vi .
(0.4.2) Remark.Vh {φi } is called a nodal basis for S, and {v(xi )} are the nodal
values of a function v. (The points {xi } are called the nodes.)
n
Proof. The set {φi } is linearly independent since i=1 ci φi (xj ) = 0 implies
cj = 0. To see that it spans S, consider the following:
0 xi 1
(0.4.3) Definition. Given
n v ∈
Figura A.84: Aproximación C 0 ([0,
mediante 1]),
vh de the interpolant
una función I ∈ S of v is
de base lineal porvtramos
determined by vI : = i=1 v(xi )φi .
Fig. 0.1. piecewise linear basis function φ i
Otra partición —quizás la más utilizada— consiste en triangularizar un dominio de dos dimensiones, como , en
pequeñosClearly,
triángulos que lo cubran enteramente. En la figura A.85
the set {φi } spans S if the following is true. se ve la correspondiente al dominio con el que venimos
(0.4.1)en Lemma.
experimentando estas notas. {φi : 1 ≤ i ≤ n} is a basis for S.
Para simplificar se supone que la frontera o borde, €, del dominio  es una curva poligonal. Si no lo es, primero se le
aproxima(0.4.4) Lemma.
a un polígono. v ∈ S ⇒ v consiste
La triangularización = vI . en dividir  en un conjunto de triángulos Th D K1 ; : : : ; Km que
(0.4.2) Remark. {φ i } is called a nodal basis for S, and {v(xi )} are
no se solapen y que solo compartan lados completos, o lo que es lo mismo, que ningún vértice
the nodal
de ningún triángulo caiga
Proof.
values
en algún lado of
de otro. I is linear
v −aSevfunction
cumplirá que on each
v. (The [xi−1{x
points , xi }i ] are
andcalled
zero atthethe endpoints, hence
nodes.)
must be identically zero. [independent since  n ⊓

Proof. The set {φi } is linearly D K D K1 [ K2    [ Km : i=1 ci φi (xj ) = 0 implies
cj = 0. To see that it spans K2T
S, consider the following:
We will now prove the followingh approximation theorem for the interpolant.
El subespacio Vh de H 1 ./ es ahora
(0.4.3) Definition. Given v ∈ C 0 ([0, 1]), the interpolant vI ∈ S of v is
(0.4.5) Theorem.  Let hn= maxˇ1≤i≤n xi − xi−1 . Then 
determined by vI : = i=1 v(xiˇˇ)φi .
Vh D funciones v 2 C./ˇvjK es lineal para todo
′′ K 2 T h ; v D 0 en € ;
u − uI E ≤ Ch u
Clearly,
for all u the
∈ Vset {φi } C
, where spans S if the following
is independent is true.
of h and u.

(0.4.4) Lemma. v ∈ S ⇒ v = vI .
Proof. v − vI is linear on each [xi−1 , xi ] and zero at the endpoints, hence
must be identically zero. ⊓

A.7 Sobre el método de los elementos finitos de Ritz-Galerkin para resolver ecuaciones en derivadas parciales j 611

Figura A.85: Triangularización del dominio 


Figure 1.5: A triangulation of Ω

x2
donde vjK 2 P1 se refiere a la función v restringida a K. Recordemos que P1 es el espacio de polinomios lineales del
tipo a0 C a1 x1 C a2 x2 , donde los coeficientes a0 , a1 y a2 serían los parámetros de cada triángulo.
Los parámetros que definirán la función v 2 Vh serán K los valores
K’ v.Ni / de v en los nodos Ni ; i D 1; : : : ; M de Th
excluyendo aquellos en los bordes pues v D 0 en €. Los valores de los nodos de la triangularización del dominio son los
grados de libertad que determinan un elemento de Vh . Una numeración
x1 de esos nodos para nuestro dominio de trabajo
sería la de la figura A.86. Los nodos se indican mediante el vector xi , donde i D 1; : : : ; M , el número de nodos.

Figure 1.6: Two triangles with


14 a common edge
10
5

There is a particularly interesting aspect of this basis of15Vh that makes it especial. In
general if you have a basis2 of Vh you know
6 that11you can decompose elements of Vh as a
unique linear combination of the elements of the basis,
16 that is,
12 18
3 7
N
X
1 uh = uj ϕ j
j=1
8 17
4
is a general element of Vh . With this basis, the13coefficients are precisely the values of uh
on the nodes, that is, uj = uh (pj ). Hence, the coefficients of uh in this basis are something
9
more than coefficients: there are values of the function on points.
Figura A.86: Numeración de los nodos del dominio 
An important result. Figure As you1.7:
canGlobal
see, when defining
numbering the space Vh we have just glued
of nodes.
together P1 functions on triangles. Thanks to the way we have made the triangulation
Si se fija un nodo
and del dominio
to the way weychose
se lethe
asocia
localel valor of
degrees 1 yfreedom,
0 a todos
whatloswedemás, existe
obtained was una función única, i 2 Vh ,
a continuous
función de base de nodo, tal
function. Onequecan think, is this so important? Could I take something discontinuous? At
this level, the answer is a very load ( and clear NO! The reason is the following result that
1
allows us to know whether certain functions
1 si iare D in
j H (Ω) or not.
i .xj / D ıij D ; i; j D 1; : : : ; M:
Theorem. Let uh be a function si i ¤ on
0 defined j a triangulation of Ω such that

El aspecto de una de estas funciones


Figure es graph
1.8: The el de of
la afigura
nodal A.87. Si un triángulo
14function:
basis K no
it looks like tiene a x
a camping i como uno de sus vértices,
tent.
i es cero en todo el triángulo pues el valor de la función en todos sus vértices es cero. El soporte por tanto de i —la
envoltura del conjunto derestricted
puntos donde i no es cero—
to eachtriangle es la misma
it is a polynomial (or que la unión
smooth) de todos
function. Then los triángulos que comparten
xi como vértices. Ver figura A.88.
uh ∈ H 1 (Ω)
Una función cualquiera uh 2 Vh se representa entonces ⇐⇒ como uh is continuous.
There is certain intuition
M to be had on whyMthis result is true. MIf you take a derivative of
X X X
a piecewise smooth function, you obtain Dirac distributions along the lines where there
uh D uh .xj /j .xi / D u .xj /ıj i D uh .xj /j :
are discontinuities. Dirac distributions are not hfunctions and it does not make sense to
j D1 j D1 j D1
see if the are square-integrable or not. Therefore, if there are discontinuities, the function
fails to have a square-integrable gradient.
El conjunto fi ; i D 1; : : : ; M g es una base de Vh .
2.4 Dirichlet nodes
So far we have taken into account the discrete version of the domain Ω but not the partition
of its boundary Γ into Dirichlet and Neumann sides. We first need some terminology. A
Dirichlet edge is an edge of a triangle that lies on ΓD . Similarly a Neumann edge is an
edge of a triangle that is contained in ΓN . The vertices of the Dirichlet edges are called
Dirichlet nodes. The doubt may arise in transitions from the Dirichlet to the Neumann
part of the boundary. If a node belongs to both ΓN and ΓD , it is a Dirichlet node.
1

8 17
4
13

612 j Apéndice A
Figure 1.7: Global numbering of nodes.
i

xi

Figura A.87: Gráfica de la funciones de base de los nodos del dominio 


Figure 1.8: The graph of a nodal basis function: it looks like a camping tent.

restricted to each triangle it is a polynomial (or smooth) function. Then

uh ∈ H 1 (Ω) ⇐⇒ uh is continuous.

There is certain intuition to be had on why this result is true. If you take a derivative of
a piecewise smooth function, you obtain Dirac distributions along the lines where there
are discontinuities. Dirac distributions are not functions and it does not make sense to
Figura A.88: Soporte de dosoffunciones de base del dominio 
see if the are square-integrable or
Figure not.
1.9: Therefore,
Supports two nodalifbasis
there are discontinuities, the function
functions

fails to have a square-integrable gradient.


Hasta ahora no hemos tenido en cuenta si los nodos de la frontera están en el segmento de borde tipo Dirichlet o
Neumann. Si teníamos hasta ahora el espacio
2.4 Dirichlet nodes 1 ˚ ˇ
H€D ./ D v 2 H 1 ./ˇv D 0; en €D ;
So far we have taken into account the discrete version of the domain Ω but not the partition
ahoraof
nosits
interesa
boundary Γ into Dirichlet and Neumann˚ sides. ˇ We first need
some terminology. A
Vh€D D Vh \ H€1D ./ D vk 2 Vh ˇvh D 0; en €D :
Dirichlet edge is an edge of a triangle that lies on ΓD . Similarly a Neumann edge is an
La idea es llevar
edge of a constancia de qué
triangle that is nodos son Dirichlet
contained in ΓN .—Dir— y cuáles of
The vertices no,the
independientes, —Ind—.
Dirichlet edges areEncalled
el caso del
ejemplo que tratamos,
Dirichlet nodes. The doubt may arise in transitions from the Dirichlet to the Neumann
part of the boundary. If a node Dir D nodes
Figure 1.10: Dirichlet f9; 13;
corresponding
belongs 14;to to 18g
15;both
17; the domain as depicted in Figure 1.1
ΓN and ΓD , it is a Dirichlet node.
Ind D f1; 2; 3; 4; 5; 6; 7; 8; 10; 11; 12; 16g :
In truth, in parallel to what happens with how the Dirichlet and Neumann boundary
Entonces, un elemento de Vh se podría
conditions escribir
are treated como
in the weak formulation, we will inherit two different discrete
entities: 15
X X
• Dirichlet
uh nodes,
D and uj j C uj j ; uj D uh .xj /
j 2Ind
• Neumann edges. j 2Dir
Let us now recall the space
y uno de Vh€D así HΓ1D (Ω) = {v ∈ HX
1
(Ω) | v = 0 on ΓD }.
uh D uj j :
We might be interested in the space
j 2Ind
VhΓD = Vh ∩ HΓ1D (Ω) = {vh ∈ Vh | vh = 0, on ΓD }.

A.7.1.4 Reformulación del problema como un 16sistema de ecuaciones lineales


Recapitulando, el método nos ha hecho llegar a la siguiente formulación:
€ u .x / D g .x / 8j 2 Dir
h j 0 j
Obtener una función uh 2 Vh tal que Z Z Z Z
ruh  ri C c uh i D f i C g1 i ; 8i 2 Ind:
   €N

Para ello:
A.7 Sobre el método de los elementos finitos de Ritz-Galerkin para resolver ecuaciones en derivadas parciales j 613

Hemos convertido el espacio de Sobolev en el que buscamos la función solución en uno de dimensión finita, Vh .
Es decir, hemos reducido el problema a calcular uh en los vértices de una triangularización —los nodos— y a un
número finito de incógnitas.
Hemos sustituido las condiciones tipo Dirichlet fijando condiciones a los nodos Dirichlet, lo que reduce aún más el
número de incógnitas: a los nodos independientes.
Hemos reducido el espacio de prueba de H€1D ./ a un subespacio discreto Vh€D , lo que reduce un número infinito
de pruebas en la formulación débil a un número finito de ecuaciones lineales.
Para obtener finalmente el sistema de ecuaciones lineales escribimos uh en términos de las funciones de base de los
nodos: X X
uh D uj j C uj j :
j 2Ind j 2Dir

Luego sustituimos en esta expresión las condiciones de Dirichlet discretizadas:


X X
uh D uj j C g0 .xj /j :
j 2Ind j 2Dir

Finalmente incorporamos esta expresión en la formulación variacional discreta:


Z Z Z Z
ruh  ri C c uh i D f i C g1 i ;
   €N

linealizando, teniendo en cuenta que


X X
ruh D uj rj C g0 .xj /rj
j 2Ind j 2Dir

y reordenando llegamos a
i Z Z  Z Z i Z Z 
rj  ri C c j j uj D f i C g1 i rj  ri C c j j g0 .xj /:
   €N  
j 2Ind j 2Dir

Este es un sistema de ecuaciones lineales con un número de ecuaciones igual al número de incógnitas (# Ind D
dim Vh€D ), que son precisamente los valores de la función uh en los nodos libres de la triangularización llevada a cabo.
Hay dos matrices importantes en este sistema de ecuaciones, la matriz de rigideces,
Z
W ij D rj  ri


y la matriz de masas Z
M ij D j i :

Ambas
R sonR simétricas. La de masas es definida positiva. La de rigideces semidefinida positiva. Si hacemos bi D
 f  i C €N g1 i , i 2 Ind, se llega a

i ! i !
W ij C cM ij uj D bi W ij C cM ij g0 .xj /; i 2 Ind:
j 2Ind j 2Dir

Estas matrices poseen patrones de dispersidad muy pronunciados pues sólo interactúan nodos que están unidos entre si
por lados de triángulos. Ello las hacen propicias para ordenaciones en torno a la diagonal principal. Su manipulación
es sencilla y las operaciones necesarias para resolver los gigantescos sistemas de ecuaciones lineales a que pueden dar
lugar son perfectamente tratables por los ordenadores disponibles actualmente.
614 j Apéndice A

A.7.2 Fundamentos de funcionales y cálculo de variaciones


Definición A.96 Un funcional es una función que tiene funciones como argumento a las que asigna un valor real. Es
decir, una función cuyo dominio es un conjunto de funciones.
2
En la figura A.89 se1:esquematiza
Chapter VARIATIONAL la diferencia
CALCULUS entre una función ordinaria y un funcional.
OVERVIEW

Input: argument x Output: function


Function value y (dependent
(independent operator
variable) variable)

(a) x f y=y(x)=f(x)
FUNCIONES
Input 1: argument x Input 2: function
(independent y=y(x) (primary Functional Output: functional
variable) dependent variable) operator value J (a scalar)

(b) x f y=f(x) J J(y)=J(x,y)

Input 1: argument x Input 2: function


(independent y=y(x) (primary Functional Output: functional
variable) dependent variable) operator value J (a scalar)
(c)
x f y=f(x) J J(y)=J(x,y,y')

Input 3: derivative
of primary y'=dy/dx
dependent variable
FUNCIONALES

Figure 1.1.
Figura A.89: Diagrama deBlock diagrams
bloques que that illustrate
ilustra key differences
la diferencia between
formal functions
en una and functionals
dimensión entre unain one dimension.
función ordinaria y un fun-
(a) An ordinary function y = y(x) = f (x) of the independent variable x; (b) a functional J [y] = J (x, y) of
cional. (a) Una función ordinaria y D y.x/ D f .x/ de una variable
′ independiente x; (b) Un funcional
′ J.y/
the function y(x); (c) a functional J [y] = J (x, y, y ) of the function y(x) and its derivative y = dy/d x.
D J.x; y/ de la
función y.x/; Un funcional J.y/ D J.x; y; y 0 / de la función y.x/ y su derivada y 0 D dy=dx

El funcional básico
§1.2.3. unidimensional
Basic lineal más típico tiene la forma
1D Functional
Z b
To keep things  focus on one specific type of functional, called the basic
J.y/simple,
D F inx;this Chapter
y.x/; y 0 .x/ we
dx; x D Œa; b; a  b; y.a/ D yOa ; y.b/ D yOb :
one-dimensional functional.
a It has the form (1.2), under additional restrictions:
En palabras, la función yDb y.x/ está definida en el segmento x 2 Œa; b, a  b, de la recta real. Dado un x, y.x/ se
0
supone real y único.
J [y]Además, Fy.x/ es continua
y ′ (x) , y derivable
x = [a, b],por lo que b,y .x/ existe
= ŷaal
, igual
y(b)que
= ŷlab .integral enunciada. La
 
= x, y(x), a≤ y(a) (1.3)
función debe satisfacer en ax D a y en x D b unas determinadas condiciones de contorno: concretamente, yOa D y.a/ y
yOb D y.b/.
In words:
Así era cómo the function
la palabra funcionaly = (x) is defined
fuef utilizada over the en
inicialmente segment x ∈ de
el cálculo [a,variaciones,
b], a ≤ b, ofdonde
the real el line.
integrando a ser
Given x, y is assumed real and unique; that is, y(x) is single-valued. Furthermore
minimizado debía ser un funcional, aplicada a′ una todavía desconocida función que satisfacía solamente una cierta y(x) possesses
condición dethe appropriate
contorno, smoothnessdesoderivabilidad.
y condiciones that y (x), as well as the integral in (1.3), exist. That function must
satisfy the stated end conditions
Otro funcional lineal habitual es la función at delta
x = ade and x = b,
Dirac, ı tat
Œfwhich = y(a)
./ D ŷfa .t/, —porandPaul y(b) are
ŷb =Adrien given.3Dirac, Reino
Maurice
Those boundary
Unido, 1902-1984— conditions
que se puede willtambién
escribir be calledcomo
essential.
The basicfunctional (1.3) is historically interesting Z b since it belongs to a class of problems that
prompted the birth and development of variational
ı t Œf ./ D f .x/ı.x int/the
calculus dt:XVIII Century. But it also serves
as a good expository tool. Some specific examples a follow.
Un problema de cálculo de variaciones o problema variacional típico sería el de encontrar la función y 2 Œa; b ! R
que minimiza el funcional anterior, J.y/, con las condiciones de contorno indicadas.
3 The overhat over a symbol will be often used to denote prescribed values.
En varios campos de la ingeniería, la física matemática, el reconocimiento de imágenes y otros muchos, el cálculo
de variaciones es un interesante problema matemático consistente en buscar máximos y mínimos (o más generalmente
2
1–6
Fuente: http://www.colorado.edu/engineering/CAS/courses.d/AVMM.d/AVMM.Ch01.d/AVMM.Ch01.pdf.
A.7 Sobre el método de los elementos finitos de Ritz-Galerkin para resolver ecuaciones en derivadas parciales j 615

Dirac

extremos relativos) de funcionales continuos definidos sobre algún espacio funcional. Constituyen una generalización
del cálculo elemental de máximos y mínimos de funciones reales de una variable. Muchos problemas de este tipo3 son
fáciles de formular pero sus soluciones implican a menudo, a su vez, difíciles procedimientos de cálculo diferencial, los
cuales generalmente suponen usar ecuaciones diferenciales ordinarias —Ordinary Differential Equations—, así como
§1.2FUNCTIONALS
las ecuaciones (diferenciales) en derivadas parciales —Partial§1.2 FUNCTIONALS
Differential VERSUS
VERSUS
Equations—. FUNCTIONS
FUNCTIONS
En la figura A.90 se pueden ver algunos problemas clásicos de funcionales en una dimensión.
y y (a)(a) y y (b)(b) y y

;;;;;
;;;;;
(c)(c)
Constant
Constant
Arclength
Arclength L L gravity
gravity g g

;;;;;
;;;;;
A A y=y(x)
y=y(x) A A A A
Straight
Straight lineline

;;;;;
;;;;;
^ ^
y(a)=y
y(a)=y B B B B Cycloid
Cycloid B B
a a
^ ^
y(b)=y
y(b)=y
Area

;;;;;
Area

;;;;;
A A b b Parabola
Parabola

x=ax=a x=bx=b x x x=ax=a x=bx=b x x x=ax=a x=bx=b x x

Rb
Figura A.90: Ejemplos
Figure
Figure 1.2.
1.2. Canonical
unidimensionales
Canonical one-dimensional
de funcionales:
one-dimensional functionals
(a)
functionals used
Área debajo
used in una
inde
thethe examples
curva, ofa of
examples (a)(a)
?.
y.x/
?. area
area
dx; (b) under
Longitud
under de un arco
Rb p q
R b (c)
0
curve;
curve; (b)(b) curve
curve arclength,
arclength, (c) brachistochrone.
brachistochrone.
1C.y 0 .x//2
de curva, a 1 C .y .x// dx; (c) Curva braquistócrona, a
2
2gy dx

Example
Por Example
regla 1.11.1
general, . Area
. Area
no Under
Under
todas Curve.
lasCurve. The
The
funciones area
area
pueden subtented
subtented enby
encajarby uny(x)
y(x) andand
thethe
funcional. real
real
La axis
axis
figura is given
is given
A.91 by by grosso modo algunos
ilustra
Chapter
Chapter 1: 1:VARIATIONAL
VARIATIONAL CALCULUS
CALCULUS OVERVIEW
OVERVIEW
tipos de funciones permitidas y otras no admisibles.  b b
A=A = y(x) y(x)
d x.d x. (1.4)
(1.4)
(a)(a) a a (b)(b)
1 1
SeeSee Figure
Figure y 1.2(a).
1.2(a).
y This This
hashas
thethe form
form illustrated
B B in in
illustrated Figure
Figure 1.1(b).
1.1(b). y y BB
2 2 1 1
Example
Example 1.21.2. Curve
. Curve 3 Length.
Length.
3
The
The length
length of of
thethe curve
curve between
between
y(x)
y(x) x
x ∈ [a, 2 and
[a, b] and
∈ 2 b] satisfying
satisfying thethe given
given endend
conditions
conditions is is
A given
A given byby AA ^ ^
 b^bb^b
y(b)=y
y(b)=y 3 3 y(b)=y
y(b)=y
b b
4 4
^ ^
y(a)=y
y(a)=y
a a
L=
L= 1+1y(a)=y
+ ′(y ′
(yy(a)=y 2
)2^da) x.
^d x. 4 4 (1.5)
(1.5)
5 5 a
a a 5 5
in in which
which thethe
++ sign
sign of of
thethe square
square root
root is taken.
is taken. SeeSeexFigure
Figure 1.2(b).
x 1.2(b). (If(If
thisthis
L is is uniquely
L uniquely defined
defined byby
thisthis integral
integral
x x
x=a x=bx=b x=a x=bx=b that there
thethe curve
curve is x=a
said
is said to to
bebe This
This
rectifiable.)
rectifiable.) functional
functional hashas
thethe form
form
x=a
illustrated
illustrated in in Figure
Figure 1.1(c),
1.1(c), except
except that there
is
is no no explicit
explicit dependence
dependence
1.3. onon
Visualization
only
only
y;
y; of
of onon
function its its slope. concept as regards (1.3): (a) sample1 admissible functions
slope.
admissibity
Figure
Figure 1.3. Visualization function admissibity concept as regards (1.3): (a) sample admissible functions
Figura A.91: Muestrario de funciones admisibles en un funcional: (a) Funciones continuas, C , con un sólo valor para cada
y(x) over
y(x)
x yExample
que cumplen that
over lassatisfy:
that C 1 Ccontinuity
satisfy:
condiciones
1 continuity
(i.e.,
de contorno; unique
(i.e.,
(b) uniquetangent
tangent
Inadmisibles: at La
each point),
at each andand
lapoint),
1 y1.2(c).
3Atienen essential BC,
essential
derivadas andand
BC, single valuedness;
single
discontinuas; valuedness;
laat2Aes at
discontinua
Example
(b) .
1.31.3
sample
. Brachistochrone.
Brachistochrone.functions
This
Thisthat
is
isthat illustrated
illustrated
violate inorin
oneone
Figure
Figure
more 1.2(c).
of the
A point-mass
point-mass
foregoing
body
body
conditions:
is released
iscurves
released1deand
at A
3 have
at zero
zero
y admite (b) sample
varios inadmissible
inadmissible
valores para un x;functions
la 4 admite violate
varios valores or
paramore
un of
x y the
la 5foregoing
no cumple conditions:
las curves
condiciones 1contorno
and 3 have
time.
time. Itcorners,
is constrained
Itcorners,
is constrained
curve to to
movemove under
under
2 is2 discontinuous,
curve the
is discontinuous,
the
curve influence
influence
curve of of constant
constant
4 is4 multivalued,
is multivalued,
gravity
gravity
andandcurve g
curve
acting
acting
g along
along
5 violates −y
thethe
5 violates
−y
right andand without
without
essential
right essentialBC. friction,
friction,
BC.
along
along a curve
a curve y= y= y(x)
y(x) that
that ends
ends at at
B, B, which
which is lower
is lower thanthanA.A. (The
(The mass
mass is pictured
is pictured as as a rolling
a rolling disk
disk in in
thethe
Si sefigure,
considera
figure, itun
butbut is funcional
it actually
is actually general
a sliding
a sliding point
point —— nono rotation
rotation
Z is is involved.)
involved.) The
The curve
curve is
y(x)
y(x) is called
called thethe trajectory
trajectory or or
x2
function
function The
rather
The
path.
path. rather than
than
traversal
traversal just a taken
taken
just
time
time byby
number. mass
mass
a number. AtoAto
go go
function
D from
from
Ifunction Athat
Athat
to
F to
.x; B
Bisis isypermissible
given
given
y;is 0
/ dxbyby
permissible thethe
asfunctional
input
functional
as inputto to
a functional
a functional is is
called
called
admissible.The
admissible. Thesetset
ofof
such functions
such is is
functions thethe
x
admissible
1 
b class
admissible with
class respect
with to to
respect
b thethe
functional under
functional under
donde F es una función conocida con derivadas B Bcontinuas 1+ 1hasta
+ ′ )2
)2segundo
(y ′(y 0
consideration.
consideration. The
The following
following general
general Tguidelines
guidelines
T
A A = = may may bebe d x. orden respecto a x, y y y . El
offered.
offered.
d x. valor
(1.6) de I
(1.6)
dependerá de la trayectoria de la función entre .x1 ; y1a/ ya .x2 ;2g y2g
2y/; es
y decir, dependerá de la función y.x/ que se escoja.
Function
Si Function
se introduceSmoothness.
Smoothness.
como prueba Admissible
Admissible
la familia de functions
functions
trayectorias areareusually
usually chosen
chosen to to
have
have thetheminimal
minimal smoothness
smoothness forfor
in whch
in whch is the
g isg the acceleration
acceleration of of gravity.
gravity. This
This functional
functional fitsfits
thetheformform illustrated
illustrated in Figure
in Figure 1.1(c).
1.1(c). TheThe derivation
derivation
which
which the integration
the integration overoverthe theproblem
problem domain
domain makes
makes sense.
sense. ForForexample,
example, if the
if thefunctional
functional has the
has the
of of
thisthis functional
functional is the
is the matter
matter ′ of of
anan Exercise.
Exercise. Q AnAn
y.x/ D important
important
y.x/ feature
C feature
".x/; is to
is to find
find thethe trajectory
trajectory that
that minimizes
minimizes T ;T ;
form
form (1.2)
is(1.2)
thisthis thethe
is called
called presence
thepresence
the ofofy ymeans
brachistochrone
brachistochrone

means that
that
problem.
problem. it We
We is reasonable
itshall
is reasonable
shall later
later show
show tothat
ask
to ask
thatthat
the that
the y(x)
y(x)
solution
solution have
of have
of integrable
this
this integrable
fastest
fastest derivatives.
derivatives.
descent
descent is is
time
time
For athis to to
happen,
cycloid,
cycloid, colored
colored it red
red is sufficient
itinis
in 1.2(c). that
3 Por ejemplo el de encontrar la curva de longitud más corta
For athis happen, sufficient
1.2(c). thaty ′ (x)
y ′ (x)beuna
que bepiecewise
puntos. continuous.
piecewise
dos continuous.Requiring
Requiring y(x)
y(x) ∈∈ C 1Cover
1
overthethe
domain would
domain bebe
would overkill butbut
overkill safe.
safe.
Example
Example 1.41.4 . Action
. Action In In
Integral.
Integral. analytical
analytical dynamics
dynamics (including
(including both
both Newtonian
Newtonian andand quantum
quantum mechanics)
mechanics) a a
End
EndConditions.
Conditions.
functional
functional like
like Prescribed
Prescribed
(1.3),
(1.3), with
with end
thethe values,
end values,
integral
integral such
taken
taken as
such
over
over as
ay(a)
a time =
y(a)
time =ŷa ŷ,t aand
interval
interval ∈,t and
∈ay(b)
[t , taby(b)
[t b ŷin
,]tbis]=called
is=
ŷcalled (1.3),
in
bthethe must
(1.3), mustbeintegrand
ItsIts
action.
action. satisfied
be satisfied
integrand
a priori. As previously
Asaspreviously
is known
aFpriori.
is
F known as
thethe noted,
noted,
Lagrangian,
Lagrangian, this kind
thisis kind
which
which of specification
of
is often
often specification
denoted
denoted byby is
L.is
L or
L or called an
L.called an essential boundary condition.
essential boundary condition.
Single Valuedness.
Single
§1.2.4.Valuedness.
§1.2.4. This
Admissible
Admissible Thisrequirement
requirementis isoptional.
Functions
Functions optional.It Itis isoften
oftenstipulated priorito tosimplify
stipulateda apriori simplifythethe
formulation and analysis. But it must be abandoned for certain problems.
formulation and analysis. But it must be abandoned for certain problems. For example, For example, those that
those that
Key
Key
involved
involved question:
question:
closed what
what
curves
closed sort
sort
oror
curves of of function
function
spirals. can
4 4 can
spirals. bebe fed
fed into
into a a functional?
functional? TheThe question
question is is similar
similar to:to: what
what
616 j Apéndice A

donde " es un parámetro y .x/ una función derivable a la que se le pide que .x1 / D .x2 / D 0, resulta que se pueden
generar una infinidad de trayectorias para una .x/ dada sin más que variar el parámetro ". Todas ellas pasan por .x1 ; y1 /
y .x2 ; y2 /. Consideremos
Z x2 Z x2
Q
I D 0
Q yQ / dx D
F .x; y; F .x; y C "; y 0 C "0 / dx
x1 x1

Es evidente que los funcionales I y IQ alcanzarán el mismo valor extremo (valor máximo o mínimo) cuando " D 0.
Desarrollando, se tiene que ! !
d IQ d 2 Q
I "2
IQ D .IQ/"D0 C "C 2
C 
d" d" 2Š
"D0 "D0

Para que IQ sea extremo cuando " D 0 es necesario que


!
d IQ
D 0:
d"
"D0

Es decir que Z   
x2
@F d yQ @F d yQ 0
C 0 dx D 0:
x1 @yQ d " @yQ d " "D0

Q " D , que d yQ 0 =d " D 0 y que quitar las tildes de yQ y de yQ 0 en las derivadas de F es lo mismo que
Dado que d y=d
hacer " D 0 según se requería más arriba, la ecuación anterior se puede reescribir así:
Z x2  
@F @F
 C 0 0 dx D 0:
x1 @y @y

Integrando por partes el segundo término,


Z ˇx 2 Z   
x2
@F 0 @F ˇˇ x2
d @F
 dx D 0 ˇ  dx:
x1 @y 0 @y ˇ x1 dx @y 0
x1

Cuando  D 0 en los extremos la primera expresión del miembro de la derecha de esta ecuación se hace cero. Sustitu-
yendo lo que queda en la anterior se tiene que
Z x2   
@F d @F
 dx D 0:
x1 @y dx @y 0

Cualquiera que sea la función .x/ entre los puntos extremos, según la fórmula de Euler-Lagrange se tiene que

d @F @F
D0
dx @y 0 @y

que es la condición que debe cumplir y.x/ para ser un máximo o un mínimo: un extremo. Si en esta expresión se
sustituye F por su expresión F .x; y; y 0 / resulta una ecuación diferencial de segundo orden en y.x/.

A.7.2.1 Proposiciones esenciales

Lema A.63 Lema fundamental del Cálculo de Variaciones. Sea M.x/ una función continua definida en el intervalo
a  x  b. Supongamos que para cualquier función continua .x/ se tiene que
Z b
M.x/.x/ dx D 0:
a
 b
M (x)ζ(x)dx = 0.
a

Then
M (x) = 0 for all x ∈ [a, b].

Proof Suppose A.7 M (x)


Sobreisel not zero
método de losat some finitos
elementos pointdexRitz-Galerkin
0 ∈ (a, b). paraSuppose for defi-
resolver ecuaciones en derivadas parciales j 617
niteness that M (x0 ) > 0. Then by continuity there is a δ > 0 such that

Se cumple entonces queM (x0 ) D 0 para todo x 2 Œa;Mb.


M.x/ (x0 )
< M (x) − M (x0 ) < for |x − x0 | < δ with x ∈ [a, b].
2 2
Demostración. Supongamos
Thus, M (x)que
>M M.x/ noinesthat
(x0 )/2 cerointerval.
en algúnNow
punto x0 2 ζ(x)
choose .a; b/. Concretamente
such that que M.x0 / > 0. Por la
continuidad de M.x/, existe un ı > 0 tal que


0 if a ≤ x ≤ a1 = max(x0 − δ, a)
M.x0 / > 0 / <if M.x
ζ(x) = M.x |x −0x/0 | < δ, jx
x ∈ [a,
< M.x/ 
 0 0 if min(x
para x0b]
j < ı con x 2 Œa; b:
2 2 0 + δ, b) = b1 ≤ x ≤ b.
En consecuencia, M.x/
See the>Figure
M.x0 /=2 en ese
15.17. Thenintervalo. Escojamos una función .x/ tal que, como se ve en la figura A.92,

M( x0 )

M( x0)
2
.x/

a x 0 ïb x 0 x 0 +b b

FIGURE 15.17
Figura A.92: Lema fundamental del Cálculo de Variaciones
 b  b1 b1 
1
0= M (x)ζ(x)dx =€0 M (x)ζ(x)dx >
M (x0 ) ζ(x)dx > 0,
a asi 2 ax.x0 aı;
1 a  x  a1 D mK 1 a/

.x/ D > 0 si jx x0 j < ı; x 2 Œa; b


✐ ✐
0 si mKın.x0 C ı; b/ D b1  x  b:
✐ ✐
Se tiene entonces que
Z b Z b1 Z b1
1
0D M.x/.x/ dx D M.x/.x/ dx > M.x0 / .x/ dx > 0;
a ai 2 a1

lo cual es una contradicción.


Si M.x0 / < 0 el argumento sería idéntico sustituyendo M.x/ por M.x/. Si x0 D a o x0 D b la demostración sería
casi igual con pequeñas modificaciones en la línea argumental.

Corolario A.64 El resultado del Lema A.7.2.1 sigue siendo aplicable si .a/ D .b/ D 0.

Corolario A.65 Supóngase que M.x/ es continua en el intervalo I D Œa; b y que f'n .x/g1
nD1 es un conjunto de
funciones base. Supóngase además que
Z b
M.x/'n .x/ dx D 0 para n D 1; 2; : : :
a
Se cumple entonces que M.x/ D 0 para todo x 2 Œa; b.

Lema A.66 Sea M.x/ una función continua en a  x  b. Supongamos que para cualquier función continua .x/,
de derivada continua, se tiene que
Z b
M.x/ 0 .x/ dx D 0
a

para .a/ D .b/ D 0. Se cumple así que M.x/ D cte para todo x 2 Œa; b:
618 j Apéndice A

Lema A.67 Sea M.x/ una función continua definida en el intervalo a  x  b. Supongamos que para cualquier
función continua .x/, de derivadas continuas al menos hasta segundo grado, se tiene que
Z b
M.x/ 00 .x/ dx D 0
a
para .a/ D .b/ D 0 y  0 .a/ D  0 .b/ D 0. Se cumple entonces que M.x/ D c0 C c1 x para todo x 2 Œa; b, donde c0
y c1 son constantes.

A.8 Elementos de números y funciones complejas


p p
Los números del cuerpo C de lo complejos surgen para dar sentido a raíces de números negativos, a2 D ˙a 1
pues así se usan para representar
p modelos y problemas en muchas áreas de la ciencia e ingeniería. Para ello se utiliza la
unidad imaginaria i D 1.
Cualquier número complejo z D x C yi , donde x es la parte real e y la imaginaria (ambaspreales), se representa
geométricamente en el plano complejo como se ve en la figura A.93. El módulo de z, jzj D r D x 2 C y 2 .

Figura A.93: Un número en el plano complejo

Las operaciones elementales con números complejos, si z D a C i b y w D c C id , son la suma, z C w D .a C c/ C


.b C d /i y la multiplicación, zw D .ac bd / C i.ad C bc/. Como i  i D i 2 D 1, 1i D i y i. i / D 1.
El complejo conjugado de un número complejo z D x C iy es zN D x iy. Sólo si z es real se cumple que z D z.
Es decir, su imagen en el espejo que define el eje x. Además, z C w D z C w, zw D z w y z D z. Estas fórmulas se
extienden a sumas y productos de más de don números complejos y a integrales (recordemos que son el límite de una
suma de infinitos sumandos), así
Z Z
f .t/g.t/ d t D f .t/ g.t/ dt:

El cociente z=w es
z a C bi
D
w c C di
a C bi c d i
D
c C di c di
.a C bi /.c d i / .ac C bd / C .bc ad /i
D D :
c2 C d 2 c2 C d 2
 p
En su forma polar un número complejo se escribe z D re i' D r cos ' C i sen ' , donde r D x 2 C y 2 y ' D
arctan.y=x/. A e i' D cos ' C i sen ' se la conoce como identidad de Euler.
La circunferencia de radio unidad en el plano complejo es el lugar geométrico de los números complejos con r D 1
—figura A.94—. Si se multiplican dos números e i y e i de esa circunferencia,
 
e i e i D cos  C i sen  cos C i sen

D cos  cos sen  sen C i sen  cos C sen cos  :
i i i i
Reordenando, y recordando que cos  D e Ce 2
y sen  D i e 2 e , resulta que e i.C / D cos. C /Ci sen. C /.
Por tanto, el producto de dos números complejos en la circunferencia de radio unidad es otro número de la misma
circunferencia cuyo ángulo es la suma de los dos precedentes.
A.8 Elementos de números y funciones complejas j 619
10.1 The Fourier Transform | 469


e2 = i

e4

e iπ= –1 + 0i e0= 1 + 0i
x

Figura A.94: Circunferencia de radio unidad en el plano complejo


Figure 10.2 Unit circle in the complex plane. Complex numbers of the form eiθ for some
angle θ have magnitude one and lie on the unit circle.
Los números Moivre, z tales que z n 1 D 0, raíces n-ésimas de la unidad, por Abraham de Moivre, Francia, 1667-
1754, tienen un especial interés en aplicaciones prácticas:
z = a + bi = reiθ , (10.1)

2 2
where r is the complex magnitude |z| = a + b and θ = arctan b/a.
The unit circle in the complex plane corresponds to complex numbers of magnitude
r = 1. To multiply together the two numbers eiθ andMoivre
eiγ on the unit circle, we could convert
to trigonometric functions and then multiply:
eiθ eiγ = (cos θ + i sin θ)(cos γ + i sin γ )
= cos θ cos γ − sin θ sin γ + i(sin θ cos γ + sin γ cos θ).
En la recta de números realesthesólo
Recognizing cos hay dos:formula
addition 1 y 1.and the sin addition formula, we can rewrite
p 4this as
En el plano complejo hay muchos. Por cos(θ ejemplo,
+ γ )i +esi sin(θ
una raíz
+ γ )cuarta
4
= e de .1: i D
i(θ +γ ) 1 D . 1/2 D 1.
Están localizados en laEquivalently,
circunferencia delthe
just add plano complejo de radio la unidad: forman los vértices de un polígono regular
exponents:
de n lados con un vértice en 1 como se ve en la figura iθA.95 iγ
para n D 5.
i(θ +γ )
e e =e . )LIWK URRWV RI XQLW\ (10.2)
Equation (10.2) shows that the product of two numbers on the unit circle gives a new
point on the unit circle whose angle is the sum of the two angles. The Euler formula
hides the trigonometry details, like the sine andL cosine addition formulas, and makes the
bookkeeping much easier. This is the reason we introduce complex arithmetic into the
study of trigonometric interpolation. Although it can be done entirely in the real numbers,
the Euler formula has a profound simplifying effect.
We single out a special subset of magnitude 1 complex numbers. A complex number z
is an nth root of unity if zn = 1. On the real number line, there are only two roots of unity,
−1 and 1. In the complex plane, however, there are many. For example, i itself is a 4th root
of unity, because i 4 = (−1)2 = 1.
í
An nth root of unity is called primitive if it is not a kth root of unity for any k < n.
By this definition, −1 is a primitive second root of unity and a nonprimitive fourth root
of unity. It is easy to check that for any integer n, the complex number ωn = e−i2π/n is a
primitive nth root of unity. The number ei2π/n is also a primitive nth root of unity, but we
will follow the usual convention of using the former for the basis of the Fourier transform.
Figure 10.3 shows a primitive eighth root of unity ω8 = e−i2π/8 and the other seven roots
of unity, which are powers of ω8 . íL

Figura A.95: Circunferencia de radio unidad en el plano complejo y números de Moivre para n D 5

Una raíz n-ésima de la unidad se denomina primitiva si no es una raíz k-ésima para k < n. Así, 1 es una raíz segunda
primitiva de la unidad y cuarta no primitiva de ella.
Visto de otra manera, la raíz n-ésima de la unidad ˛ es primitiva, si sólo si sus k-ésimas potencias, k D 0; 1; : : : ; n 1
son distintas. Las raíces cuartas de 1 son: 1, 1, i , i . En el caso de 1 sus potencias de grado 0, 1, 2 y 3 son iguales;
Roots of Unity
620 j Apéndice A

no es raíz
For primitiva.
given Para i, sen,
integer calcula
we que las notation
use potencias de grado 0, 1, 2, 3 son, respectivamente, 1, i , 1, i, distintas,
luego i es una raíz cuarta primitiva de 1.
− i sin(2π/n) −2πi/n
n =Sea
LemaωA.68 cos(2π/n)
! una raíz primitiva = e y k un número entero. Entonces
n-ésima de la unidad
n 1
(
X n si k=n es un entero;
for primitive nth root of unity !j k D
j D0
0 en cualquier otro caso.

nth roots
Es fácil ver que,of
paraunity, sometimes
una n cualquiera, called !twiddle
el número complejo n D e
i 2=n
es una raíz n-ésima primitiva de la unidad
(también lo es !n D e i 2=n ). En la figura A.96 se ve la raíz cuarta primitiva
k or la unidad, !4 D e
de i 2=4
, y las otras tres.
factors in this context,
Son, en general, las potencias k
,
470 |!CHAPTER
k D
are
0; 10
1;
then
2; Las
given
k
se
Trigonometric
3. !
by ωn
denominan también
Interpolation and factores
the FFT twiddle. Se puede verificar que
4 n
−k
by ωn , k = 0, . . . , n − 1
y

i = ω43 = ω4−1
•.... ω6
...
.... ω5 ω7
...................
.... ......2π/4
... ...
.
ω42 = ω4−2 = −1 •...............................................................................................•. 1 = ω40 = ω44 ω4 π/4 ω0 = ω8 = 1
x
...
....
....
....
− i2π
.. ω3
•.. ω=e 8

−i = ω41 = ω4−3 ω2

Figura A.96: Raíz cuarta primitiva de la unidad !4 D e i 2=4 y las otras tres. Números de Moivre de n D 8
Figure 10.3 Roots of unity. The eight 8th roots of unity are shown. They are generated by
i 2=n ω = e−2π/8 , meaning
4 that each is ωk for some integer k. Although ω and ω3 are primitive
la raíz n-ésima de la unidad, ! D e , con n > 1, cumple que
8th roots of unity, ω2 is not, because it is also a 4th root of unity.
1 C ! C !2 C !3 C    C !n 1
D 0;
2 4 6 2.n 1/
1 C ! C Here
! Cis!a key
C identity
   C !that we will
D 0;need later to simplify our computations of the Discrete
−i2π/n
1 C !Fourier
3
C ! 6 Transform.  Cω
C ! 9 C   Let 1/ the nth root of unity ω = e
denote
! 3.n D 0; where n > 1. Then
1 + ω:+ ω2 + ω3 + · · · + ωn−1 = 0. (10.3
::
The proof of this identity follows from the telescoping sum
1 C !n 1
C ! .n 1/2
C ! .n 1/3
C    C ! .n 1/.n 1/
D 0:
(1 − ω)(1 + ω + ω2 + ω3 + · · · + ωn−1 ) = 1 − ωn = 0. (10.4
También que 1 C ! n C ! 2n C ! 3n C    C ! n.n 1/
DSince
1 C the
1 Cfirst
1 Cterm
1 C on
C D n:
the1left Además,
is not si ksecond
zero, the es un número
must be.entero,
A similar method of proo
n 1
shows
 that
X n si k=n es entero,
jk
! D 1 + ω2 + ω4 + ω6 + · · · + ω2(n−1) = 0,
0 en otro caso.
j D0 1 + ω3 + ω6 + ω9 + · · · + ω3(n−1) = 0,
..
A.8.1 Integración. Teorema de Cauchy .
1 + ωn−1 +ω (n−1)2
+ω (n−1)3
+ ··· + ω (n−1)(n−1)
= 0. (10.5
Las funciones de números reales se integran en intervalos. Las de números complejos en o sobre curvas y tienen muchas
The next one is different:
de sus propiedades en común con las integrales de línea de los campos vectoriales.
En el plano complejo, si z D x C yi, donde x es la parte real 1 +e ωynla+imaginaria
ω2n + ω3n (ambas ωn(n−1) la
+ · · · + reales), = función + 1se
1 + 1 + f1 .z/ + ··· + 1
puede considerar como una función que depende de dos variables, x e y. Esto no es totalmente cierto, = en
n. general, pues (10.6
f .z/ es también una función de una única variable, la compleja z.
This information is collected into the following lemma.
El teorema de Cauchy es una de las piezas esenciales de la teoría de integración de las funciones de números complejos.
Si hay una curva continua, simple y cerrada en el plano, , la misma separa a ese plano en tres partes: la curva en sí
LEMMA 10.1 Primitive roots of unity. Let ω be a primitive nth root of unity and k be an integer. Then
misma, una zona de nominada interior de , que no es sino una región abierta y acotada por la propia curva, y la zona
exterior a , que es una región o conjunto no acotada —ver figura A.97—.  n−1
jk

n if k/n is an integer
ω = .
0 otherwise 
j =0

Exercise 6 asks the reader to fill in the details of the proof.

10.1.2 Discrete Fourier Transform


Let x = [x0 , . . . , xn−1 ]T be a (real-valued) n-dimensional vector, and denote ω = e−i2π/n
A.9 Análisis de Fourier j 621
20.2 Cauchy’s Theorem 701

Exterior
y

Interior
x

FIGURE 20.5 Interior and exterior


Figura A.97: Interior y exterior de una curva
of a closed curve.

Nos referiremos en lo que sigue a una curva simple, continua por tramos, como camino o ruta. Un camino en un
We will refer to a simple, piecewise smooth curve as a path. A path in a set S is a path
conjunto S es un camino cuya trayectoria
whose graph lies in S. y gráfica queda enteramente dentro de S.
Un conjunto de números complejos está conectado si cualesquiera dos puntos de S son principio y final de un camino
de S . En términos más coloquiales esto quiere decir que desde cualquier punto de S podemos llegar a cualquier otro,
también de S , moviéndonos a través de algún camino sin abandonar S. Un conjunto abierto y conectado se denomina
dominio. Por ejemplo,
A setelScuadrante
of complexdel plano is
numbers x connected
> 0, y > if0.every two points of S are endpoints of a path
Un conjunto S deinnúmeros complejos es point ofsiScualquier
S. This means that we can get from anyconexo
simplemente camino
to any other cerrado
point by movingenalong
S encierra dentro de él
puntos de S. some path without leaving S. An open, connected set is called a domain. For example, any
open disk is a domain, and the right quarter plane x > 0, y> 0 is a domain.
Teorema A.69 Teorema integral de Cauchy. Si la función f es derivable en un dominio simplemente conexo G,
entonces I
f .z/
We encountered domains in connection with dz Dfunctions
potential 0 in Chapter 12.

para todo camino cerrado de G.


A set S of complex numbers is simply connected if every closed path in S encloses only
Este teorema quiere decir
points que f .z/ dz D 0 si f es derivable en el camino y en todos los puntos que encierra . Las
of S.
curvas o caminos se suponen orientados en el sentido contrario a las agujas del reloj.
Édouard Goursat —Francia, 1858-1936—
This concept was also discussed in Chapter 12. Every open disk is simply connected. However,
let S be an open disk with the center removed (a punctured disk). Then a closed path about the
center in the disk encloses a point not in the set, so this set is not simply connected (although it
is open and connected, hence is a domain). Goursat
We can now state the main result.

THEOREM 20.1 Cauchy

demostró que elLet


teorema es válido igualmente
f be differentiable on a simply aunque dentro
connected deG.
domain haya un número finitos de puntos que aun siendo
G Then

derivables su derivada no es continua, como se exigía previamente. El teorema se conoce en la actualidad como de
f (z) dz= 0
Cauchy-Goursat. γ

for every closed path γ in G. 



A.9 Análisis de Fourier
Cauchy’s theorem means that f (z) dz = 0 if f is differentiable on the path γ and all
γ
points enclosed by γ . Unless otherwise stated, we always understand closed curves to be oriented
counterclockwise, which we take to be the positive sense.
Las series y polinomios de Taylor permiten aproximar funciones mediante polinomios, o hallan una serie de potencias
que converja a una determinada función.
El análisis de Fourier va en esa misma línea de intenciones, pero aproximando la función mediante combinaciones
de funciones
Editorial review senocontent
has deemed that any suppressed y coseno adecuadamente
does not materially elegidas.
affect the overall learning experience. Loreserves
Cengage Learning quethe right
sigueto removesale básicamente
additional de Villanueva
content at any time if subsequent rights restrictions require[2016]
Copyright 2010 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
it. y Contreras
[2016].
En muchas October ramas
14, 2010de15:32la ingeniería y THM/NEIL de la cienciaPage-701 —análisis de circuitos, tratamiento digital de señales, compresión
27410_20_ch20_p695-714
de imágenes y archivos digitales, etc.— las funciones que se analizan son periódicas (o van moduladas sobre funciones
622 j Apéndice A

periódicas), es decir, existe un período T > 0 tal que


f .t C T / D f .t C nT / D f .t/ para cualquier t 2 R y n 2 Z:
Conocido el valor que adopta la función en un intervalo de longitud T , por ejemplo el Œ0; T , o Œ T2 ; T2 , se conoce en
todo R.
Ejemplos típicos de funciones periódicas son las funciones trigonométricas sen.t/ y cos.t/, que son periódicas con
período 2. Las funciones sen.2t/ y cos.2t/ también tienen período 2. En general, para w0 > 0 y n 2 N, las funciones
sen.nw0 t/ y cos.nwo t/ son periódicas de período
2
T D :
nw0
Para medir la velocidad de repetición de una función con período T se utiliza la frecuencia, a veces denominada fre-
cuencia angular, definida por
2 2
frecuencia D D ;
período T
que se mide en radianes por segundo (en algunos textos la palabra frecuencia se reserva para la inversa del período, 1=T ,
y se mide en ciclos por segundo o hertzios).
Definición A.97 Un polinomio trigonométrico con período T y frecuencia w0 D 2=T es una función de la forma
Xn0
1
f .t/ D a0 C Œan cos.nw0 t/ C bn sen.nw0 t/:
2 nD1
Es decir, una combinación lineal de senos y cosenos que tienen un período común T . Los coeficientes a0 , an y bn
se denominan coeficientes de Fourier del polinomio, w0 es la frecuencia fundamental y el índice n0 , el grado del
polinomio.

A.9.1 Series de Fourier


Jean Baptiste Joseph Fourier, Francia, 1768-1830,

Fourier

fue pionero en el análisis de funciones periódicas para describir fenómenos físicos. Nacido en Auxerre y profesor de la
École Polytechnique, en 1807 formuló la ecuación de difusión del calor mediante ecuaciones matemáticas. Concreta-
mente, la ecuación en derivadas parciales (parabólica):
@u 1 @2 u
D o u t D Duxx :
@t 2 @x 2
La constante D > 0 se denomina coeficiente de difusión y representa la difusividad térmica del material del cuerpo que
se estudia.
Para resolver el problema de la distribución de temperaturas en el cuerpo a partir de la distribución en un instante
inicial necesitaba escribir la función que da el dato inicial como suma de una serie trigonométrica. Este es el aspecto de
sus múltiples contribuciones al conocimiento científico que vamos a considerar aquí brevemente.
Aunque se presenta de varias maneras según el tipo de problema estudiado, en general, para una función de periodo
T , el problema consiste en, dada una función f .x/, encontrar una serie trigonométrica de Fourier
1
a0 X
C Œan cos.nw0 x/ C bn sen.nw0 x/ ;
2 nD1
A.9 Análisis de Fourier j 623

donde w0 D 2 T
, que converja a aproximar a f .x/ en cada punto x. Para todo w0 > 0 las funciones sen.w0 x/ y
2
cos.w0 x/ son periódicas de periodo T D w 0
. Si conocemos una función en un intervalo de longitud T conocemos su
valor en todo R.
Para determinar adecuadamente esa serie, lo primero es obtener los coeficientes an y bn . Para ello hay que usar
de nuevo la noción de ortogonalidad y el ángulo entre vectores. Recordemos que dos vectores del espacio euclídeo
n dimensional son ortogonales si se cruzan formando un ángulo de 90 grados. Es decir, si su producto interior hji
es cero: f ? g y hf jgi D 0. La ortogonalidad y las bases ortogonales de espacios vectoriales son el fundamento de
múltiples técnicas numéricas, estadísticas y científicas a las que nos referimos en este libro.
Para construir el razonamiento necesitamos introducir un producto interior (escalar) que sea conveniente para espacios
de funciones de dimensión infinita. Con ese objetivo utilizaremos el del espacio de Lebesgue L2 .I /, concreta el que
define Z
1
hf jgi D f .x/g.x/ dx
2 I
de funciones integrables en el intervalo I . La norma asociada a partir de ese producto interior es
s Z
p 1
kf k D hf jf i D f .x/2 dx:
 I

Lema A.70 Con el producto interior (escalar) de L2 definido por


Z T
1 2
hf jgi D f .x/g.x/ dx
2 T2
la familia de funciones trigonométricas
f1; sen.nw0 x/; cos.mw0 x/I n; m 2 Ng
satisface las relaciones de ortogonalidad
hcos.kw0 x/j cos.lw0 x/i D hsen.kw0 x/j sen.lw0 x/i D 0 para k¤l
p hcos.kw 0 x/j sen.lw0 x/i D 0 para todo k; l
k1k D 2; k cos.kw0 x/k D k sen.kw0 x/k D 1 para k ¤ 0;
T
por lo que esa familia es ortogonal sobre Π2
; T2 , con T D 2
w0
y para k; l  0.

Demostración. Las fórmulas de las relaciones se obtienen inmediatamente de estas integrales:

Z T
€ 0;
k¤l
2
cos.kw0 x/ cos.lw0 x/ dx D 2; k D l D 0
T
2
; k D l ¤ 0;
Z T
(
2 0; k ¤ l
sen.kw0 x/ sen.lw0 x/ dx D
T
2
; k D l ¤ 0;
Z T
2
cos.kw0 x/ sen.lw0 x/ dx D 0
T
2

que son válidas para todos los enteros k; l  0.


Si de momento dejamos a un lado los asuntos de convergencia, estas relaciones de ortogonalidad permiten el cálculo
de los coeficientes de Fourier.
P En efecto, tomando el producto interior por cos.lw0 x/, l > 0, en los dos términos de la
ecuación f .x/ D a20 C 1 nD1 Œan cos.nw0 x/ C bn sen.nw0 x/ se tiene que

X1
a0
hf j cos.lw0 x/i D h1j cos.lw0 x/iC Œan hcos.nw0 x/j cos.lw0 x/i C bn hsen.nw0 x/j cos.lw0 x/i
2 nD1
624 j Apéndice A

Dal hcos.lw0 x/j cos.lw0 x/i D al ;

obteniéndose así el coeficiente al . De la misma manera, operando con sen.lw0 x/ se obtiene el coeficiente bl . Tomando
el producto interior en la misma ecuación por la función constante 1 se tiene que
X1
a0
hf j1i D h1j1i C Œan hcos.nw0 x/j1i C bn hsen.nw0 x/j1i
2 nD1
a0
D k1k2 D a0 :
2
Esta expresión de a0 explica también el por qué de introducir en la formulación de la serie el sumando a0 dividido por
2.
En consecuencia, si la serie de Fourier converge a la función f .x/, los coeficientes de la misma resultan de tomar
productos interiores con las funciones trigonométricas básicas; es decir, son
Z T
2 2
a0 D f .x/ dx
T T
2
Z T
2 2
ak D hf j cos.lw0 x/i D f .x/ cos.kw0 x/ dx; k D 0; 1; 2;   
T T
2
Z T
2 2
bk D hf j sen.lw0 x/i D f .x/ sen.kw0 x/ dx; k D 1; 2; 3;   
T T
2

Las integrales deben estar bien definidas y ser finitas. Queda por demostrar que existe convergencia hacia f .x/.
Ejemplo A.31 Consideremos la función f .x/ D x en Œ 2 ; 2 . Calculemos los coeficientes de Fourier se su aproxima-
ción por series trigonométricas:
Z 
2 2
a0 D x dx D 0
 
2
Z   
2 2 2 x sen.kw0 x/ cos.kw0 x/ 2
ak D x cos.kw0 x/ dx D C D0
 
2
 k k2 xD  2
Z   
2 2 2 x cos.kw0 x/ sen.kw0 x/ 2
bk D x sen.kw0 x/ dx D C D
 
2
 k k2 xD  2
2
D . 1/kC1 :
k
La serie de Fourier es pues
 
sen 2x sen 3x sen 4x
f .x/  2 sen x C C  :
2 3 4
Demostrar que es convergente (que lo es) dista mucho de ser evidente y más de ser trivial el hacerlo.

Ejemplo A.32 Otro ejemplo interesante para la aplicabilidad de las series de Fourier lo constituye la función “escalón”
definida así:
(
0;  < x < 0;
f .x/ D
h; 0 < x < :

El coeficiente a0 D h dado que el valor medio de f .x/ en el intervalo completo es h=2. Los demás coeficientes son
Z
1 C
an D h cos nx dx D 0
 0
A.9 Análisis de Fourier j 625

y
Z C
1 h
bn D h sen nx dx D .1 cos n/;
 0 n
que simplificando es
(
2h
n
; si n es impar,
bn D
0; si n es par.
The complete Fourier series, then, for the step function is
La serie de Fourier es pues
 
hh 2h2h sin x sen 3x3x sensin
sin 5x5x
.x/ 
f (x) = C + sen x C+ C+ C+  ... : . (5)
22 π 1 33 55
En la figura A.98four
The first se presenta
terms ofesta función
this y los
Fourier cuatro
series areprimeros
shown términos
in Figurede3.la serie de Fourier, lo que esboza el
denominado fenómeno de Gibbs.

1.2

0.8

0.6

0.4
f(x)

0.2

−0.2

−0.4

−0.6

−0.8
−4 −3 −2 −1 0 1 2 3 4
x
Figura A.98: Cuatro primeros términos de la serie de Fourier de la función escalón, con h D 1, y fenómeno de Gibbs
Figure 3: First four terms of the Fourier series describing a step function with h = 1.

A.9.1.1
2.3Expresión compleja de la serie de Fourier
Discussion
Recordemos
Therelaare
expresión
a couple of immediate observations to be made here. A Fourier series is a summa-
e ifunctions
tion of fixed-frequency sine or cosine D cos  Cwith argument nx. As such, the coefficients
i sen :
describe the amplitude of the component with natural frequency n. For the step func-
De la misma se derivan
tion, the series converges very slowly, which implies thate ithere
e i C e i
are significant high-frequency
e i
components necessary tocos D
accurately describey thesenfunction.
D This: is generally true with any
2 2i
discontinuous function, or other function with “sharp” features. A function which is very
Si f .t/rounded
es una función periódica deconverges
and sinusoidal período T quickly
con desarrollo
in theenFourier
serie de series,
Fourier while something like the step
function or triangle wave needs many 1 many high-frequency
X X1 components.
a0
f .t/ D C an cos.nw0 t/ C bn sen.nw0 t/;
2 nD1 nD1
2.4 Exponential Form
sustituyendo los senos y cosenos por la expresiones anteriores se tiene que
An alternative, more compact representation of the Fourier series can be made by using
Euler’s formula 1
a0 X einx i nw0 t
C e i nw0 t
1
X e i nw0 t e i nw0 t
f .t/ D C ane = cos nx + Csin nx.
i bn : (6)
2 2
nD1
2i nD1
Using this we can rewrite Equation 1 as

X
f (x) = cn einx , (7)
n=−∞

4
626 j Apéndice A

Reordenando un poco
1
X 1
X C1
X
f .t/ D c0 C cn e i nw0 t C cn e i nw0 t D cn e i nw0 t ;
nD1 nD 1 nD 1

donde c0 D a0 =2, cn D .an i bn /=2 y c n D .an C i bn /=2


Como en el caso de funciones reales definimos ahora un producto escalar de funciones complejas f; g W I  R ! C
como Z
hf jgi D f .t/g.t/ dt
I
donde z denota el complejo conjugado de z.
Las funciones f y g son ortogonales si su producto escalar (interior) es 0. La norma 2 de una función compleja
f W I ! C es
p Z  21 :
kf k2 D hf jf i D f .t/f .t/ dt
I

T
Proposición A.71 La familia fe i nw0 t gn2Z es ortogonal en el intervalo Œ 2
; T2  (o en Œ0; T ), donde T D 2
w0
.

Demostración. Sea n ¤ m. Entonces


Z T Z T
2 2
i nw0 t i nw0 t
he je iD e i nw0 t e i mw0 t dt D e i nw0 t e i mw0 t
dt D
T T
2 2
Z T
2
.cos nw0 t C i sen nw0 t/.cos mw0 t i sen mw0 t/ dt D 0:
T
2

T
Con este resultado podemos calcular los coeficientes cn para representar una función f W Œ 2
; T2  ! C de la forma
C1
X
f .t/ D cn e i nw0 t :
nD 1

Son
Z T
2
f .t/e i nw0 t dt
T
cn D : 2

T
Muchas señales se representan de manera natural como una función con valores reales —por ejemplo una señal sonora—
mientras que otras, en particular los campos electromagnéticos, se representan como una función de valores complejos.

A.9.1.2 Convergencia de las series de Fourier


A falta de demostraciones sobre sus resultados, lo que Fourier legó fue un problema en el que estaban implicados los
conceptos de función integral, suma de series y tipo de convergencia. La influencia de este problema en el desarrollo
posterior de conceptos de análisis matemático ha sido muy importante.
Los intentos de probar la convergencia de la serie de Fourier aparecieron pronto. Poisson y Cauchy publicaron sendas
pruebas incorrectas. Fue Dirichlet en 1829 el que publicó el primer resultado correcto.
Definición A.98 Sea f W R ! R una función periódica de período T . Se dice que f satisface las condiciones de
Dirichlet si en cada período la función f W Œ0; T  ! R es continua salvo un número finito de discontinuidades de salto
y sólo tiene una cantidad finita de máximos y mínimos locales estrictos.
Prácticamente todas las funciones —señales— de interés en las aplicaciones cotidianas verifican las condiciones de
Dirichlet.
A.9 Análisis de Fourier j 627

Gibbs’ Phenomenon
Teorema A.72 Convergencia de Dirichlet de la serie de Fourier. Sea f W I ! R una función periódica de período T
que satisface las condiciones de Dirichlet. La serie In
de Fourier
practicedeitfmayconverge a f .t0 / en todo
be impossible to use en el
2 Ithe
t0 all que fofsea
terms a Fourier ser
continua. En los puntos t0 2 I en los que f noForsea continua se tiene que la serie de Fourier converge
example, suppose we have a device that manipulates al punto medio
a periodic sig
del salto, by first finding the Fourier series of the signal, then manipulating the
f .t0C / C f .t0 /
nusoidal components,
; and, finally, reconstructing the signal by adding
2
the modified Fourier series. Such a device will only be able to use a fin
donde f .t0C / D lKım t!t C f .t/ y f .t0 / D lKım t !t f .t/. of terms of the series.
number
0
0

El teorema de Dirichlet nos dice que, en los puntosGibbs’ phenomenon


de discontinuidad, occurs
la gráfica near
de la sumaa de
jump discontinuity
la serie in the signal
de Fourier pasa
por el punto medio del salto. Si se dibujan las sumas parciales se ve que en las cercanías de los puntos de discontinuidadFourier ser
says that no matter how many terms you include in your
Gibbs’
se reduce la velocidad de Phenomenon
convergencia de la serie y que
there la always
will gráfica debelaan
suma parcial
error in theoscila
form alrededor de la gráfica
of an overshoot nearde the discon
la función. Cuando se aumenta el número de términos, las oscilaciones
nuity. The overshoot se condensan
always a ambos
be about 9%lados delsize
of the punto
of pero su
the jump.
In practice it may
amplitud nobe impossible
parece decrecer.to use all the terms of a Fourier series.
For example, Esto
suppose we have Weperiodic with the example. of the square wave sq(t). The Four
illustratesignal
se conoce comoaeldevice
fenómenothat
demanipulates
Gibbs —Josiaha Willard Gibbs, EE.UU. 1839-1903—,
by first finding the Fourier series of the signal, then series of sq(t) the
manipulating it well at points of continuity. But there is always
fits si-
nusoidal components, and, finally, reconstructing the signal by adding up (9% of the jump of 2) near the points of discontinu
overshoot of about .18
the modified Fourier series. Such a device will only be able to use a finite1.18 1.18
number of terms of the series. Gibbs 1 1

Gibbs’ phenomenon occurs near a jump discontinuity in the signal. It


says that no matter how many terms you include in your Fourier series t t
there will always be an error in the form of an overshoot near the disconti- −1 1 −1 1
quien lo analizó en 1899. Este fenómeno ocurre en las proximidades de una discontinuidad importante de la señal.
nuity. The overshoot always be about 9% of the size of the jump.
Apunta a que no importa cuántos términos de la serie de Fourier se incluyan, pues siempre se producirá un error o salto
en esa with
We illustrate discontinuidad. Ese salto
the example. es un
of the porcentaje
square wave adicional
sqR(t). alThe
valor de la señal−1en ese punto. La amplitud de la−1oscilación
Fourier
1  sen t
series of sqa(tcada
) fitslado de la gráfica
it well de laof
at points función tiende a ser
continuity. But2 there
0 tis always
dt 1 an0;0895 veces el tamaño del salto: en −1.18
−1.18 torno al 9 %
overshoot ofdeabout
ese salto.
.18 (9% of the jump of 2) near the points of discontinuity. Gibbs: max n = 1 Gibbs: max n = 3

1.18 1.18 1.18 1.18


1 1 1 1

t t t t
−1 1 −1 1 −1 1 −1 1

−1 −1 −1 −1
−1.18 −1.18 −1.18 −1.18

Gibbs: max n = 1 Gibbs: max n = 3 Gibbs: max n = 9 Gibbs: max n = 33

1.18 Figura1.18 In thesede


A.99: Fenómeno figures,
Gibbs enfor cuadrada’max n=9’ means we we included the ter
example,
la onda
1 for n = 1, 3, 5, 7 and 9 in the Fourier sum
1

Consideramos la función onda cuadrada de período 2 definida4en Œ ;  por

sin 3t sin 5t sin 7t sin 9t
( sin t + + + + .
π 3 5 7 9
t 1t si  < t < 0;
−1 1 −1 f .t/ D 1
1 si 0 < t < 

y extendida periódicamente
−1
a R. Su serie de Fourier
−1
es
−1.18  −1.18 
4 sen 3t sen 5t sen 7t sen 9t
Gibbs: max n = 9 senGibbs:
t C max n = 33C C C C  :
 3 5 7 9
In these figures, for example, ’max n=9’ means we we included the terms
for n = 1, 3,En
5, la figura9A.99
7 and se Fourier
in the ilustra esta
sumseñal de onda cuadrada y cómo las series de Fourier se ajustan bastante bien en todos los
puntos,pero es muy perceptible el salto aludido. En la  figura “max n=9”, por ejemplo, quiere decir que se han incluido
4
los términos sin 3t sin 5t serie sin 7t sin 9t
sin tn+D 1; 3; 5;+7 y 9 en la
+ de+
Fourier. .
π 3 5 7 9
628 j Apéndice A

Para la convergencia en norma 2 consideramos este resultado.


Teorema A.73 Teorema de la mejor aproximación y convergencia en media cuadrática de la serie de Fourier. Sea
f W I ! R una función periódica de período T que satisface las condiciones de Dirichlet. Sea la serie de Fourier de f
X1 X1
1
f .t/  a0 C Œan cos.nw0 t/ C bn sen.nw0 t/ D cn e i nw0 t
2 nD1 nD 1
y el polinomio trigonométrico obtenido como la suma m-ésima de dicha serie:
Xm Xm
1
fm .t/ D a0 C Œan cos.nw0 t/ C bn sen.nw0 t/ D cn e i nw0 t :
2 nD1 nD m
Entonces fm es, de todos los polinomios trigonométricos de grado m y período T , el que mejor se aproxima a f en
media cuadrática. Es decir, si gm es un polinomio trigonométrico de grado m distinto de fm , entonces
Z T Z T
2 2
2
jf .t/ fm .t/ dt < jf .t/ gm .t/2 dt
T T
2 2
R T
y, además, lKımm!1 2
T jf .t/ fm .t/2 dt D 0.
2

A.9.1.3 Propiedades de las series de Fourier


En lo que sigue se supone que f y g son funciones periódicas de período T (reales o complejas) que verifican las
condiciones de Dirichlet y cuyos desarrollos o series de Fourier son, respectivamente,
1
X 1
X
f .t/ D cn e i nw0 t y g.t/ D dn e i nw0 t ;
nD 1 nD 1

siendo w0 D 2=T .

A.9.1.3.1 Linealidad
Si p y q son números complejos, entonces la serie de Fourier de pf .t/ C qg.t/ es
1
X
pf .t/ C qg.t/ D .pcn C qdn /e i nw0 t :
nD 1

A.9.1.3.2 Traslación en el tiempo


Si t0 es un número real, entonces la serie de Fourier de la función trasladada f .t t0 / es
1
X 1
X
i nw0 t i nw0 t
f .t t0 / D cn e e D cn e i nw0 .t t0 /
:
nD 1 nD 1

A.9.1.3.3 Escalado en el tiempo


Si p es un número real, entonces función f .pt/ es periódica de período T =p y frecuencia pw0 . Su serie de Fourier es
1
X
f .pt/ D cn e i n.pw0 /t :
nD 1

Es decir, f .t/ y f .pt/ tienen las mismas amplitudes y fases pero correspondientes a frecuencias distintas.
A.9 Análisis de Fourier j 629

A.9.1.3.4 Derivación
La regla de la cadena muestra que la derivada de una función periódica es periódica y tiene el mismo período. Si f es
una función continua y periódica de período T y su derivada f 0 verifica las condiciones de Dirichlet, entonces, la serie
de Fourier de f puede derivarse término a término de manera que si

X1
1
f .t/ D a0 C Œan cos.nw0 t/ C bn sen.nw0 t/;
2 nD1

entonces
1
X
f 0 .t/ Š Œnbn w0 cos.nw0 t/ nan w0 sen.nw0 t/
nD1

para cada t 2 R.

A.9.1.3.5 Integración
A diferencia de la derivación, la integral de una función no necesariamente
Rt vuelve a ser periódica. Sea f una función
periódica con período T y consideremos la función F .t/ D t0 f . / d . La función F es T -periódica si y sólo si
RT Rt
a0 D 2=T 0 f .t/ dt D 0. En caso contrario, se tiene que la función t0 f . / d  1=2a0 .t t0 / es T -periódica. Si la
función f verifica las condiciones de Dirichlet, entonces la serie de Fourier de f puede integrarse término a término de
manera que si
X1
1
f .t/ D a0 C Œan cos.nw0 t/ C bn sen.nw0 t/
2 nD1

y t0 ; t 2 Œ T =2; T =2, entonces


Z t 1 
X 
bn .cos.nw0 t0 / cos.nw0 t// an .sen.nw0 t/ sen.nw0 t0 //
f . / d  1=2a0 .t t0 / D C :
t0 nD1
nw0 nw0

A.9.1.3.6 Convolución
P1
Los coeficientes complejos de Fourier de la convolución f .t/g.t/ D nD 1 hn e i nw0 t son
1
X 1
X
hn D ck dn k D cn k dk :
kD 1 kD 1

A.9.1.3.7 Multiplicación
Se verifica que
Z T 1
X
1 2
f .t/g.t/ dt D cn dn :
T T
2 nD 1

A.9.1.3.8 Igualdad de Parseval


Un resultado muy interesante en análisis de Fourier es el Teorema de Parseval, por Marc-Antoine Parseval des Chênes,
Francia 1755-1836. Físicamente se puede leer como que la energía de una señal periódica es igual a la suma de las
energías de sus componentes. Geométricamente se puede interpretar como una consecuencia de una versión infinito-
dimensional del Teorema de Pitágoras.
630 j Apéndice A

Parseval

T
Proposición A.74 Sean f1 ; f2 2 L2 .Œ 2
; T2 / y .cn1 /n2Z , .cn2 /n2Z sus respectivos coeficientes de Fourier. Entonces
Z T X
1 2
f1 .t/f2 .t/ dt D cn1 cn2 ;
T T
2 n2Z

T
Teorema A.75 Teorema de Parseval. Sean f 2 L2 .Π2
; T2 / y .cn1 / sus coeficientes de Fourier. Entonces
Z T
X
1 1 2
.kf k2 /2 D f .t/f .t/ dt D jcn j2
T T T
2 n2Z

Cuando f .t/ es una señal periódica de período fundamental T , la igualdad de Parseval puede interpretarse de la siguiente
manera
Z T
1 2
P D jf .t/j2 dt:
T T
2

Esta integral se denomina media cuadrática o potencia media de f . Por ejemplo, si f .t/ representa la tensión en voltios
que se aplica a una resistencia de 1 ohmio, entonces la potencia media de f coincide con la potencia eléctrica media
(energía por unidad de tiempo medida en watios) disipada por la resistencia en cada período. Ahora bien, la potencia
media de cada uno de los armónicos presentes en la señal es
Z T
1 2 1 2
P0 D Œa0 =22 dt D a ;
T T
2
4 0
Z T
1 2 1 2
Pn D Œan cos.nw0 t/ C bn sen.nw0 t/2 dt D b D 2jcn j2 ;
T T
2
2 n

para n D 1; 2; : : : La igualdad de Parseval


P nos dice P que la potencia media de la señal es la suma de las potencias medias
de sus componentes armónicos, P D 1 nD0 Pn D
1 2 2
nD 1 jcn j . Por eso, la representación de los valores jcn j cuando
situamos las frecuencias en el eje de abcisas se llama espectro discreto de potencias.

A.9.2 La Transformada de Fourier


Lo visto hasta ahora sobre análisis de Fourier se aplicaba al estudio de funciones periódicas, o funciones definidas en
un intervalo Œa; b. Para ciertas aplicaciones esto no es suficiente y necesitamos estudiar funciones f W R ! R ó C no
periódicas. Este tipo de funciones no puede ser representado por medio de una serie de Fourier, pero si por medio de una
integral de Fourier. Un ejemplo típico es la función f W R ! R dada por
(
1 si t 2 Œ 12 ; 12 
f .t/ D
0 si jt j > 21 :

La idea, más o menos intuitiva, que utilizó Fourier fue considerar una función no periódica como una función periódica
de período infinito, lo que le llevó a representarla no como una serie cuyos términos corresponden a múltiplos de la
frecuencia fundamental 0; w; 2w; 3w; : : : ; sino como una integral cuya variable de integración es una frecuencia que se
mueve de manera continua.
A.9 Análisis de Fourier j 631

P
Cuando hablábamos del espectro de una función periódica, representada por una serie de Fourier n cn e i nw0 t , con
la frecuencia fundamental w0 D 2=T , apuntábamos que los coeficientes cn podían ser entendidos como una función
c.w/ W R ! C(ó R/ que toma valores distintos de 0 sólo en los puntos w D nw0 , con n 2 Z , en los que vale cn .
Al hacer tender el período T a infinito, la frecuencia fundamental, w0 , tiende a 0, por lo que los puntos nw0 —los
armónicos— están cada vez más próximos. Parece razonable pensar que en el límite el espectro se hace continuo, por lo
que podemos definir c.w/ para todo w. Las amplitudes cn D c.nw0 / tenderán también a 0.
Concretando, sea f .t/ una función periódica de período T . Su serie de Fourier es
1
X
f .t/ D cn e i nw0 t ;
nD 1

donde
Z T
1 2
i nw0 t 2
cn D f .t/e dt y w0 D :
T T
2
T
Sustituyendo estas dos expresiones en la serie
1 Z T
! 1 Z T
!
X 1 2 X 1 2
i nw0 x i nw0 t i nw0 x
f .t/ D f .x/e dx e D f .x/e dx w0 e i nw0 t :
nD 1
T T
2 nD 1
2 T
2

Recordando la definición de integral de Riemann y el paso de las sumas de Riemann a la integral, si tenemos una
función h W Œa; b ! R integrable y suponemos elegida una partición equiespaciada P .w0 / D fa D x0 ; x1 ; : : : ; xk D bg
de Œa; b en la que xi xi 1 D w0 para cada i 2 f1; : : : ; kg, tenemos que
k
X Z b
lKım h.a C nw0 /w0 D h.t/ dt:
w0 !0 a
nD1

Con esto en la memoria y volviendo a la última expresión de f .t/, llamemos


Z T !
1 2
iwx
h.w/ D f .x/e dx e iw t :
2 T
2

Haciendo el paso a una integral impropia tenemos que, cuando w0 tiende a 0 —o cuando T tiende a infinito—
Z 1 Z C1 
1
f .t/ D f .x/e iwx dx e iw t dw:
2 1 1

Si se define la transformada de Fourier F.w/ de f como


Z C1
iwx
F.w/ D f .t/e dt;
1

entonces Z 1
1
f .t/ D F.w/e iwx dt:
2 1

Definición A.99 Sea f W R ! R (ó C). Su transformada integral de Fourier es una función


F.f / D F W R ! C
dada por Z 1
iw t
F.f /.w/ D F.w/ D f .t/e dt
1
632 j Apéndice A

Definición A.100 Sea F W R ! C. Su transformada inversa de Fourier es una función


1
F .F/ W R ! R .ó C/
dada por Z 1
1 1
F .F/.t/ D F.w/e iw t dt
2 1

A.9.2.1 Propiedades de la transformada de Fourier


Las que siguen son algunas de sus propiedades y resultados más interesantes. En cualquier caso, hay que tener en cuenta
que la transformada de Fourier viene definida por una integral impropia que puede ser convergente o no serlo.
Teorema A.76 Sea f 2 L2 .R/. Entonces existe la transformada de Fourier de f y es una función F W R ! C.
La condición f 2 L2 .R/ es suficiente pero no necesaria para la existencia de la transformada F. Algunas propiedades
básicas de la transformada de Fourier son las que siguen:

A.9.2.1.1 Linealidad
Si f; g 2 L2 .R/ y ˛; ˇ 2 R, entonces F.˛f C ˇg/ D ˛F.f / C ˇF.g/.

A.9.2.1.2 Escalado en el dominio del tiempo


Si 0 ¤ ˛ 2 R, f 2 L2 .R/ y g.t/ D f .˛t/ entonces
1 w 
F.g/.w/ D F.f / :
jaj a

A.9.2.1.3 Desplazamiento en el dominio de la frecuencia


Si g.t/ D f .t/e i ˛t entonces F.g/.w/ D F.f / .w ˛/.

A.9.2.1.4 Desplazamiento en el dominio del tiempo


Si f 2 L2 .R/, t0 2 R y g.t/ D f .t t0 / entonces F.g/.w/ D F.f /.w/e iw t0 . Los dos resultados que siguen son
interesantes para la resolución de ecuaciones diferenciales pues garantizan el buen comportamiento de la transformada
de Fourier.
Proposición A.77 Sea f W R ! R una función derivable que admite transformada de Fourier F.f / y tal que
lKım t!˙1 f .t/ D 0 (esta condición se verifica siempre que f 2 L2 .R/). Entonces F.f 0 /.w/ D iwF.f /.w/.

Teorema A.78 Si f 2 L2 .R/ entonces F.f / es continua y


lKım F.f /.w/ D 0
w!˙1

Aunque f 2 L2 .R/ puede no ser continua, su transformada siempre lo es. El hecho de que

lKım F.f /.w/ D 0


w!˙1

para cualquier señal, indica que la amplitud de sus componentes en frecuencia tiende a 0 cuando la frecuencia tiende a
1.
Teorema A.79 Inversión. Si f 2 L2 .R/ entonces F.f / 2 L2 .R/ y además la función
Z 1
1
g.t/ D F.f /.w/e iw t dw;
2 1
transformada inversa de la transformada de f , verifica que f .t/ D g.t/ en casi todo punto.
688 THE FO URIER TR AN SFO RM
A.9 Análisis de Fourier j 633
|F( jω)| of a band-limited signal f (t); that is, a signal whose spectrum is zero for | ω | ⬎ ωm.
Figures
La expresión “en casi todo punto” 8.26(b−e)
tiene showmatemático
un significado the amplitude spectrum
muy preciso. |Fs( jω
Quiere )| ofque
decir thef sampled
.t/ D g.t/version
exceptofor
en, a lo sumo, un conjunto de medida cero. Aunque esto habría que desarrollarlo un poco más, la idea intuitiva es que of
increasing values of the sampling interval T. Clearly, as T increases, the spectrum
cualquier intervalo no vacío noF( ω),medida
es jde as observed using |Fque
cero, mientras s( jωun
)| in −ωpunto,
sólo m⬍ ω o ωm,cantidad
⬍una becomesfinita,
moreo and more
incluso misleading
numerable,
because of ‘interaction’ from neighbouring copies.
de puntos, sí forman un conjunto de medida cero. Por tanto, el teorema de inversión nos dice que si tomo una función
f 2 L2 .R/, hallo su transformada AsdeweFourier
saw inF.f / y a 8.6.2,
Section continuación hallo la transformada
the periodicity in the amplitude inversa
spectrum ω)| of fs(t)
de F.f|F/,s( jentonces
recupero f salvo quizás en unos pocos puntos,
is inevitable que no van aoftener
as a consequence ninguna importancia
the sampling process, and enways
la gran mayoría
have de las to
to be found
aplicaciones. Esto es lo que nosminimize
permite decir que “no perdemos
the problems it causes.información” al considerar
The interaction observedF.f / en lugar
in Figure de between
8.26 f , puestothe
que podemos recuperar f (salvo quizás repeats
periodic en unosispocos
known puntos) a partir error,
as aliasing de F.fand/. it is clearly essential to minimize this
Definición A.101 Sean f; g W R ! R. Se define su convolución f  g como if the original unsampled signal f (t) is
effect. This can be achieved in an obvious way
band-limited as in Figure 8.26(a). It is apparent that we must arrange that the periodic
Z 1
repeats of |F( jω)| be far enough apart to prevent interaction between the copies. This
.f  g/.x/ D f .x y/g.y/ dy;
implies that we have 1

ω 0exista.
siempre y cuando la integral impropia ⭓ 2ω m
at an absolute (and impractical!) minimum. Since ω 0 = 2π/T, the constraint implies that
Teorema A.80 Sean f; g 2 L2 .R/. Entonces f  g existe, f  g 2 L2 .R/ y además
T ⭐ π/ωpara
1. F.f  g/.w/ D F.f /.w/  F.g/.w/ m todo w 2 R.
2. F.f  g/.w/ D F.f /.w/  F.g/.w/ para todo w 2 R.
where T is the interval between samples. The minimum time interval allowed is
Estos últimos resultados tienen una importancia fundamental para la realización de filtros en frecuencia, que permitan,
Tmin = π/ω m
dada una señal, quedarnos con sus componentes en cierto rango de frecuencias y desechar las demás. Junto con el
teorema de Nyquist, o teorema de muestreo,
which is knownqueasproporciona
the Nyquistinformación esencial
interval and we para
haveelinpaso
factdededuced
una señala analógica,
form of the
o continua, a una señal digital,Nyquist–Shannon
conforman la base para el estudio
sampling y procesado
theorem. If T digital
⬍ Tmindethen
señales
the —DSP,
‘copies’digital
of F(signal
jω) are
processing—. isolated from each other, and we can focus on just one copy, either for the purpose of
signal reconstruction, or for the purposes of the estimation of F( jω) itself. Here we are
concerned
A.9.2.2 La Transformada de Fourier only discreta
with the latter problem. Basically, we have established a condition
under which the spectrum of the samples of the band-limited signal f (t), that is the
Se refiere al tratamiento de funciones
spectrumdiscretas en el
of fs(t), can betiempo
used toyestimate
frecuencia.
F( jSu
ω). objetivo es transformar una sucesión
discreta de valores, fn , n D 0; : : :Suppose
; N 1, en otra F , k D 0; : : : ; N 1.
we havekdrawn N samples from a continuous signal f (t) at intervals T, in
Las sucesiones objeto de análisis puedenwith
accordance ser elthe
resultado
Nyquistdecriterion,
un registro de Figure
as in una señal propiamente
8.27. dicha, con valores
We then consider
periódicos, o el resultado de una señal continua que se ha digitalizado. Esto último consiste en muestrearla, o samplearla,
N−1
es decir, no quedarse con toda la señal sino con una sucesión de valores de la señal tomados cada T segundos (este es
fs ( t ) = ∑
f ( kT ) δ ( t − kT )
el caso del muestreo uniforme en el tiempo), aunque para ciertas señales puede ser más interesante un muestreo no
k=0
uniforme. En la figura A.100 se ve una muestra de esta idea.

Figure 8.27
Sampling of a
continuous-time signal.

(N-1)T

7 7 7 7 7 1 7

Figura A.100
634 j Apéndice A

Definición A.102 Para un vector de coeficientes reales, x D Œx0 ; x1 ; : : : ; xn T


1 , su Transformada de Fourier
Discreta, TFD, es el vector n-dimensional y D Œy0 , y1 , : : : ; yn 1 T tal que
n 1
1 X
yk D p xj ! j k ;
n j D0
i 2=n
donde ! D e .
p
De acuerdo con el Lema A.8, de la página 620, la transformada de Fourier discreta de x D Œ1, 1, : : : ; 1T es y D Œ n,
0, : : : ; 0T .
En forma matricial, la definición dice que
2 3 2 3 2 0 32 3
y0 a0 C i b0 ! !0 !0    !0 x0
6 y 7 6 a C ib 7 6! 0 ! 1 !2    !n 1 7 6 7
6 1 7 6 1 1 7 6 7 6 x1 7
6 7 6 7 1 6 0 2 4 2.n 1/ 7 6 7
6 y2 7 D 6 a2 C i b2 7 D p 6! ! !  ! 7 6 x2 7 :
6 : 7 6 :: 7 6
n 6 :: :: :: 7 6
:: 7 6 :: 7
6 : 7 6 7 7
4 : 5 4 : 5 4 : : : : 54 : 5
1/2
yn 1 an 1 C i bn 1 !0 !n 1
! 2.n 1/
   ! .n xn 1

A la matriz simétrica 2 3
!0 !0 !0    !0
6! 0 ! 1 !2    !n 1 7
6 7
6
1 !0 !2 7
Fn D p 6 !4    ! 2.n 1/ 7
n6
6 :: :
:: :: :: 7 7
4 : : : 5
0 n 1 2.n 1/ 1/2
! ! !    ! .n
se la denomina matriz de Fourier. Todas sus filas y columnas, excepto las primeras, suman cero. La inversa de la matriz
de Fourier es 2 0 3
! !0 !0  !0
6! 0 ! 1 ! 2    ! .n 1/ 7
6 7
1 6 0 2 4 2.n 1/ 7
1
Fn D p 6 6 ! ! !    ! 7
n 6 :: :: :: :: 7
7
4 : : : : 5
.n 1/2
!0 ! .n 1/
! 2.n 1/
 !
y la Transformada Discreta de Fourier inversa de y es x D Fn 1 y.
El algoritmo por excelencia para calcular la transformada de Fourier discreta es el conocido por Transformada Rápida
de Fourier —FFT—, debido a James William Cooley, EE.UU. 1926 y John Tukey, EE.UU. 1915-2000.

Cooley Tukey

Las fórmulas para el cálculo de la transformada de Fourier discreta son generales y se pueden aplicar a cualquier
conjunto de datos fx0 ; x1 ; x2 ; : : : ; xn 1 g, sin que necesariamente provengan del muestreo de una señal continua.
Volviendo a ese muestreo de señales continuas, su digitalización, o sampleo, tiene una ventaja evidente, que permite
trabajar con una sucesión de números en lugar de con toda la señal, lo que es muy útil sobre todo para el tratamiento
digital de la señal. También un inconveniente obvio, la señal muestreada no contiene, en principio, toda la información
que había en la señal original. Parece claro que cuantas más muestras por segundo se tomen (esto es, cuanto menor sea
T ) menos información se perderá, pero también costará más muestrear, almacenar y manipular la información. Entonces
¿cuál es intervalo de muestreo que debemos usar? La respuesta a esto la da el teorema de Nyquist-Shannon, que veremos
a continuación.
A.10 La Transformada del coseno discreta j 635

Antes, veamos un ejemplo concreto muy próximo en nuestro devenir cotidiano: un CD de música. Hasta hace no
muchos años la música se almacenaba siempre en vinilo o en cinta magnética, y ambos soportes partían de una señal
analógica y almacenaban también una señal analógica. El progreso de la tecnología y la relativamente baja calidad y
durabilidad de ambos soportes llevaron a plantearse el almacenamiento digital de la música en forma de CD, ya que el
soporte físico es muchísimo más duradero y el tratamiento de la señal digital más versátil. El problema una vez más es
¿a qué velocidad hemos de muestrear una señal sonora para que la señal muestreada sea de la máxima calidad?
Primero un par de consideraciones biológicas: nuestro oído “oye en frecuencias” (al igual que nuestros ojos ven en
frecuencias) y está limitado en frecuencia: nadie oye señales de frecuencia superior a 20KHz, al igual que nadie ve luz
infrarroja o ultravioleta. Este límite no es común a todos los animales: algunos, como ratas y perros tienen la capacidad
de oír señales de frecuencia superior, y los famosos ultrasonidos usados en ocasiones para intentar ahuyentar ratas no
son sino sonidos de frecuencia superior a 20KHz y gran volumen, que nosotros no oímos pero ellas sí. Esta limitación
de nuestro oído tiene consecuencias prácticas: si consideramos una señal sonora y le quitamos sus componentes de
frecuencias superiores a 20 KHz, nuestros oídos no son capaces de percibir ninguna diferencia entre ambas señales.
Por tanto la respuesta a la pregunta anterior, ¿a qué velocidad hemos de muestrear una señal sonora para que la señal
muestreada sea gran calidad?, es “A la velocidad necesaria para mantener las componentes de la señal de frecuencias
inferiores a 20 KHz.”
Y aquí es donde interviene por fin el teorema de Nyquist-Shannon.
Teorema A.81 Teorema de Nyquist-Shannon. Sea f W R ! C una señal que admite transformada de Fourier F (lo
que ocurre por ejemplo si f 2 L2 .R/). Si F.!/ D 0 para todo ! > !M D 2fM entonces se puede determinar f en
casi todo punto por medio de sus valores separados por intervalos uniformes menores que 2f1M segundos.

Este teorema es fruto del trabajo de Harry Nyquist, Suecia 1889-EE.UU. 1976 y Claude Elwood Shannon, EE.UU.
1916-2001.

Nyquist Shannon

Al parecer, no obstante, científicos como E. T. Whittaker, Vladimir Kotelnikov y otros estaban trabajando también sobre
este mismo asunto, por lo que en algunos casos se referencia en la literatura especializada como teorema de Nyquist-
Shannon-Kotelnikov, Whittaker-Shannon-Kotelnikov o Whittaker-Nyquist-Kotelnikov-Shannon, además de
teorema cardinal de interpolación.
A partir de este teorema se puede demostrar que la manera de recuperar f .t/, a partir de los datos muestreados y el
resultado, es
X1
sen !M .t nT /
f .t/ D f .nT / ;
nD 1
!M .t nT /

para el caso de que !M D 2fM y T D 2f1M .


Está demostrado que para evitar el fenómeno conocido como aliasing —efecto que causa que señales continuas dis-
tintas se tornen indistinguibles cuando se muestrean digitalmente— es necesario asegurarse de que en la señal analógica
a muestrear, con una frecuencia fs , no tenga componentes sinusoidales de frecuencia mayor a fs =2. Esta condición es
llamada el criterio de Nyquist, y es equivalente a decir que la frecuencia de muestreo fs s debe ser al menos dos veces
mayor que el ancho de banda de la señal. En la figura A.101 se ven dos sinusoides que pueden ser representados por la
misma muestra y que daría lugar al efecto aliasing.
El Teorema de Nyquist indica que la frecuencia de muestreo mínima que tenemos que utilizar debe ser mayor que 2fM
(frecuencia crítica de Nyquist), donde fM es la frecuencia máxima de la señal compleja. Si utilizamos esa frecuencia
de muestreo, podremos reproducir posteriormente la señal a partir de las muestras tomadas. En la práctica, debido a las
limitaciones de los circuitos, la utilización de una frecuencia más alta que la que nos dice Nyquist permite obtener una
representación más exacta de la señal de entrada.
A.10 La Transformada del coseno discreta j 637

DCT-I
1  h i
N
X2 
yk D x0 C . 1/k xN 1 C xn cos nk ; k D 0; : : : ; N 1:
2 nD1
N 1
DCT-II
N
X1    
 1
yk D xn cos nC k ; k D 0; : : : ; N 1:
nD0
N 2
DCT-III
N
X1   
1  1
yk D x0 C xn cos n kC ; k D 0; : : : ; N 1:
2 nD1
N 2
DCT-IV
N
X1    
 1 1
yk D xn cos nC kC ; k D 0; : : : ; N 1:
nD0
N 2 2

Cuadro A.1

(
1
si x D 0
donde k; l D 0; 1; : : : ; 7 y c.x/ D 2 :
1 si x ¤ 0
Su inversa, IDCT-2D,
7 X
X 7    
c.k/c.l/ .2i C 1/k .2j C 1/l
xij D ykl cos cos :
4 16 16
kD0 lD0

El bloque de coeficientes de la DCT está ordenado de modo que la componente continua corresponde al elemento y00 y
la frecuencia espacial crece con los índices k y l siendo y77 el coeficiente correspondiente a la mayor frecuencia.
En la figura A.102 se representa un conjunto de 64 funciones base bidimensionales (imágenes base) que se generan
multiplicando un conjunto de funciones base unidimensionales de ocho puntos (N=8) orientadas horizontalmente, por un
conjunto verticalmente orientado de las mismas funciones. Las imágenes base orientadas horizontalmente representan
las frecuencias horizontales y las orientadas verticalmente representan las frecuencias verticales. La fila superior y la
columna de la izquierda tienen variaciones de intensidad en una sola dimensión. Para propósitos de ilustración, un
gris neutro representa cero en estas figuras, el blanco representa amplitudes positivas, y el negro representa amplitudes
negativas.
La ventaja que tiene la DCT frente a la DFT para la compresión de imágenes, a parte de solo utilizar números reales,
es que produce una mejor compactación de la energía (consigue concentrar la mayor parte de la información en pocos
coeficientes) y un menor efecto de bloque. Este efecto se esquematiza en la figura A.103.
El efecto de bloque se produce cuando se divide la imagen en bloques de 88 píxeles o macrobloques de 1616 píxeles
para poder ejecutar los algoritmos de transformación. Cuando se lleva a cabo la DFT del bloque, se asume la periodicidad
del mismo (que se repite a lo largo de todo el plano bidimensional que contiene la imagen). En la transformada de Fourier
el píxel B del borde derecho será tratado por el algoritmo como si estuviera seguido por el píxel A. Si los niveles de gris
en cada píxel difieren considerablemente cualquier reconstrucción del bloque a partir de únicamente un número limitado
de coeficientes de Fourier dará lugar a valores erróneos en A y B. Este fenómeno es lo que se conoce como efecto de
bloque, que tiende a hacer muy visibles los límites de los bloques en la compresión, especialmente cuando la proporción
de compresión es elevada. Sin embargo, mientras que la teoría de Fourier implica la repetición de los bloques LxL, la
teoría de la DCT impone esta repetición sobre bloques 2Lx2L, que están relacionados con los bloques originales LxL a
través de simetrías especulares. La consecuencia de esta simetría especular es que después del píxel B, le sigue otro píxel
B, eliminando así la discontinuidad, esto provoca una reducción considerable del efecto de bloque. En la figura A.104
se muestra la periodicidad de un bloque 4  4 en la TFD y la TCD.
La transformación lineal óptima que minimiza el error cuadrático medio entre la imagen original y la imagen recu-
perada (después de transformar y comprimir la imagen) es la transformada de Karhunen-Loève (KLT). La KLT realiza
638 j Apéndice A

Figura A.102

Figura A.103: Compactación de la energía de una TCD comparada con una TFD
Introducción y estado del arte 25

píxel B, le sigue otro píxel B, eliminando así la discontinuidad, esto provoca una A.11 La Transformada de Laplace j 639
reducción considerable del efecto de bloque.

Bloque de A B A B Réplica de pixels debido


pixels 4x4 a la periodicidad de la DFT

(a)

2L
L
A B B A

2L

(b)

Figura A.104: Periodicidad supuesta de un bloque 4  4 de una TFD (a) y una TCD (b)
Figura 15. Periodicidad supuesta de un bloque 4x4 por (a) una DFT y (b) una DCT.

La transformación lineal óptima que minimiza el error cuadrático medio entre la


imagen original y la imagen recuperada (después de transformar y comprimir la
una descomposición de componentes
imagen) principales
es la transformada (PCA) de (KLT).
de Karhunen-Loève los bloques
La KLT de la imagen,
realiza por lo que las funciones bases (y
una descom-
posición de componentes principales (PCA) de los bloques de la imagen, por lo que
la matriz de la transformación) dependen de las propiedades estadísticas de la imagen. Las funciones base (y su matriz
las funciones bases (y la matriz de la transformación) dependen de las propiedades
de transformación)estadísticas
de la DCT de dependen únicamente
la imagen. Las del orden
funciones base N. Pordelotransformación)
(y su matriz que como sedemencionó
la antes, fijado el número
de puntos estas sonDCTsiempre iguales
dependen sea cual
únicamente delsea la imagen.
orden Unacomo
N. Por lo que de las ventajas antes,
se mencionó de la fijado
DCT es que siendo fija la transfor-
mación su eficiencia de compresión
el número de puntosse aproxima
estas a la iguales
son siempre de la KLT (la óptima)
sea cual para Una
sea la imagen. imágenes
de las con alto grado de correlación
ventajas de la DCT es que siendo fija la transformación su eficiencia de compresión
espacial. se aproxima a la de la KLT (la óptima) para imágenes con alto grado de correlación
espacial.

A.11 La Transformada de Laplace


Enunciada por Pierre-Simon Laplace, Francia, 1749-1827,
Compresión de imágenes optimizada en consumo energético para redes inalámbricas

Laplace

esta transformada integral es similar a la de Fourier. Mientras ésta es una función compleja de una variable real, la
frecuencia, la de Laplace es una función compleja de una variable compleja.
Definición A.103 Dada una función f .t/ definida en Œ0; 1/, su Transformada de Laplace es la función
Z 1
F .s/ D Lff g D e st f .t/ dt:
0

La transformada de Laplace es un operador: definido para funciones y que transforma funciones en otras funciones.
En generalR c s es una variable compleja. Como la integral de la definición es impropia, al evaluarla hay que considerar
lKımc!1 0 e st f .t/ dt.
La transformada de Laplace mejora algunas de las prestaciones de la Transformada de Fourier al no exigir que la señal
f .t/ sea absolutamente integrable. La Transformada de Laplace es invertible en un gran número de funciones.
640 j Apéndice A

Ejemplo A.33 Consideremos la función f .t/ definida por


(
0 si t < 0
f .t/ D at
Ae si t  0:

Su transformada de Laplace es
Z 1
at st
Lff .t/g D Ae e dt
0
Z 1
.sCa/t
D dt Ae
0
ˇ1
e .sCa/t ˇˇ A
A ˇ D ;
.s C a/ ˇ sCa
0

supuesto que s C a > 0. Es decir se lleva a cabo la correspondencia

at A
Ae .t  0/ , :
sCa

Ejemplo A.34 Sea ahora f .t/ D 1. La transformada de Laplace es


Z 1
ˇ1
st 1 ˇ
st ˇ 1
Lf1g D e dt D e ˇ D :
0 s 0 s

Ejemplo A.35 Sea ahora f .t/ D t. La transformada de Laplace es


Z 1 ˇ Z
st t st ˇˇ1 1 1 st 1
Lftg D e t dt D e ˇ C e dt D :
0 s 0 s 0 s2

Algunas funciones útiles para ingeniería y control de procesos, y sus transformadas de Laplace, se listan en la tabla
del cuadro A.2.
La Transformada de Laplace hace sombra a la de Fourier en algunas aplicaciones ingenieriles como el control de
procesos industriales, el análisis de sistemas lineales, la electrónica industrial y otros afines. Su uso y estudio está
ampliamente extendido para ayudar a entender problemas donde las funciones que surgen están definidas en un tiempo
finito y están acotadas. También para integración numérica de ecuaciones diferenciales ordinarias.
El operador transformada de Laplace permite transformar un problema de funciones en un problema de sus respectivas
transformadas. Éste se resuelve si se puede mediante ecuaciones algebraicas y después se vuelve hacia atrás (problema
inverso) recobrando la solución original ahora en funciones. Por ejemplo, la transformada de Laplace permite cambiar
el dominio tiempo por el dominio frecuencia en problema de ecuaciones diferenciales, convirtiéndolo en ecuaciones
lineales, la convolución en multiplicación, etc.
Para terminar con una osada comparativa rápida general:
La transformada de Laplace “mapea” o transforma una función en otra en el plano complejo con variable compleja;
la de Fourier transforma una función en otra compleja con variable real (la frecuencia).
La transformada de Laplace se usa para estudios de estabilidad de señales y sistemas mientras que la de Fourier
para analizar el comportamiento de sistemas ante entradas sinusoidales.
La primera para señales permanentes; la segunda para señales dinámicas o transitorias.
La transformada de Fourier se usa para integrar ecuaciones diferenciales de problemas de contorno en la recta real;
la de Laplace para problemas de valor inicial.
A.12 Análisis de componentes principales j 641

f .t/; t 2 Œ0; 1/ Lff g

1
1 s

1
e at ; a 2 R s a


t n; n 2 N s nC1

w
sen wt; w 2 R s 2 Cw 2

s
cos wt; w 2 R s 2 Cw 2

w
senh wt; w 2 R s2 w 2

s
cosh wt; w 2 R s2 w 2

w
e at sen wt; a; w 2 R .s a/2 Cw 2

s a
e at cos wt; a; w 2 R .s a/2 Cw 2

2ws
t sen wt; w 2 R .s 2 Cw 2 /2

s2 w 2
t cos wt; w 2 R .s 2 Cw 2 /2

Cuadro A.2

A.12 Análisis de componentes principales


El análisis de componentes principales —ACP en español, PCA en inglés— tiene como objetivo representar la infor-
mación de n observaciones de p variables con un número sustancialmente menor de unas nuevas variables construidas
como combinaciones lineales de las originales. Sirve para hallar las causas fundamentales de la variabilidad de un con-
junto de datos y ordenarlas por importancia. Es uno de los instrumentos básicos del análisis de datos y del Big_Data que
tanto interés teórico y práctico despiertan en la actualidad para explicar multitud de tendencias y comportamientos de la
vida cotidiana.
Técnicamente el ACP busca la proyección del espacio original de variables en un subespacio en el cual los datos
queden adecuadamente representados en términos de mínimos cuadrados lineales de unos componentes principales
(variables artificiales independientes entre sí), perdiéndose la menor cantidad de información original posible. Comporta
el cálculo de la descomposición en valores propios de la matriz de covarianza de los datos, una vez centrados en la media
de cada atributo. La ACP es una extensión inmediata de lo apuntado en la sección A.3.3.2, en la página 543, dedicada a
valores singulares.
El análisis de componentes principales fue formulado por Harold Hotelling, EE.UU. 1895-1973. Sus orígenes se

Hotelling

remontan al trabajo sobre ajustes ortogonales por mínimos cuadrados de Karl Pearson, Reino Unido, 1857-1936. Como
642 j Apéndice A

Pearson

apuntábamos, permite transformar las variables originales de los datos de un problema, en general correladas, en un
número menor de nuevas variables incorreladas, facilitando así la interpretación de esos datos.

A.12.1 Algunos conceptos de estadística


Sea ŒX 1    X n  una matriz p  n de n observaciones de p variables. La media de esta muestra es
Pn
Xi
X D iD1 :
n
La desviación típica, o estándar, s
Pn 2
Xi X
i D1
 .X / D :
n
La varianza, medida de la dispersidad de la muestra, es la desviación típica al cuadrado, esto es,
Pn 2
iD1 Xi X
Var.X / D :
n
El grado de asociación lineal más simple de cada variable con las demás, dos a dos, es lo que configura la matriz de
covarianzas, de dimensión p  p,
Pn  2
i D1 Xi X Yi Y
cov.X ; Y / D D €:
n
Si la covarianza entre dos variables es positiva, cuando una de ellas se incrementa la otra hace lo mismo. Si es nega-
tiva, cuando una de ellas se incrementa, la otra decrece. Si es cero, las dos variables son independientes entre si. Los
coeficientes de la diagonal principal de la matriz de covarianzas son las varianzas de cada variable individual. La matriz
de covarianzas es simétrica. La varianza total de los datos es la suma de cada varianza individual por lo que la traza de
la matriz de covarianzas es precisamente esa varianza total. En la figura A.105 se ilustran unos patrones de datos y las
matrices de covarianzas correspondientes.
La matriz de covarianzas es semidefinida positiva, es decir, x Tcov.X ; Y /x  0 para cualquier vector x ¤ 0.
La covarianza como medida de asociación tiene el inconveniente de que depende de las unidades de medida de las
variables. Si por ejemplo la covarianza entre la estatura de una persona, medida en centímetros, y su peso, en gramos,
es 200, si se expresa el peso en kilogramos, la covarianza será 0;002. Para construir una media adimensional se divide
la covarianza por un término con sus mismas dimensiones. Se define así el coeficiente de correlación y a partir de él la
matriz de correlación, de dimensión también p  p, es

cov.X ; Y /
corr.X ; Y / D D R:
 .X / .Y /

Esta matriz se utiliza para estandarizar los diversos datos. Es también semidefinida positiva.
La matriz de covarianzas y la matriz de correlación están relacionadas mediante la expresión
1 1
corr.X ; Y / D D cov.X ; Y /D ;

donde D es una matriz diagonal construida con las desviaciones típicas de las variables.
Diplomatura en Estadı́stica 11 Diplomatu

Ejemplo 1: Problema 4.2


646 j Apéndice A

La Tabla siguiente contiene información sobre chalets construidos por


diez promotoras que operan a lo largo de la costa española:
X1 =Duración media X2 =Precio medio X3 =Superficie media
$POTUSVDDJØO
hipoteca (años) (millones euros) (m2 ) de cocina
1 8,7 0,3 3,1
2 14,3 0,9 7,4
3 18,9 1,8 9,0
4 19,0 0,8 9,4
5 20,5 0,9 8,3
6 14,7 1,1 7,6
7 18 8 2,5 12,6
8 37,3 2,7 18,1
9 12,6 1,3 5,9
10 25,7 3,4 15,9

Considerando solamente las variables X y X realizar un análisis de


Cuadro A.4: Datos sobre pisos que promocionan1diversas2constructoras en España
componentes principales.

>> datos=[1 2 3 4 5 6 7 8 9 10;


8.7 14.3 18.9 19.0 20.5 14.7 18.8 37.3 12.6 25.7;
0.3 0.9 1.8 0.8 0.9 1.1 2.5 2.7 1.3 3.4;3.1 7.4 9.0 9.4 8.3 7.6 12.6 18.1 5.9 15.9]

datos =
1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000
8.7000 14.3000 18.9000 19.0000 20.5000 14.7000 18.8000 37.3000 12.6000 25.7000
0.3000 0.9000 1.8000 0.8000 0.9000 1.1000 2.5000 2.7000 1.3000 3.4000
3.1000 7.4000 9.0000 9.4000 8.3000 7.6000 12.6000 18.1000 5.9000 15.9000

>> [signal PC V]=pca1(datos(2:4,1:10))

covariance =
56.9685 5.1705 30.4775
5.1705 0.8941 3.6479
30.4775 3.6479 18.7641

signal =
-12.3303 -5.3219 -0.4638 -0.2687 0.5154 -4.8597 1.2482 20.0429 -7.4938 8.9318
0.8063 -0.1713 0.4326 0.5136 2.0809 -0.2107 -2.7532 1.6367 0.0756 -2.4105
-0.0723 0.2971 -0.4540 0.6069 -0.0247 0.1397 0.1627 -0.0000 -0.4252 -0.2302

PC =
0.8714 0.4798 -0.1026
0.0853 -0.3542 -0.9313
0.4832 -0.8027 0.3495

V =
74.3739
2.1580
0.0948

>> [signal PC V]=pca2(datos(2:4,1:10))


signal =
-12.3303 -5.3219 -0.4638 -0.2687 0.5154 -4.8597 1.2482 20.0429 -7.4938 8.9318
0.8063 -0.1713 0.4326 0.5136 2.0809 -0.2107 -2.7532 1.6367 0.0756 -2.4105
-0.0723 0.2971 -0.4540 0.6069 -0.0247 0.1397 0.1627 -0.0000 -0.4252 -0.2302

PC =
0.8714 0.4798 -0.1026
0.0853 -0.3542 -0.9313
0.4832 -0.8027 0.3495

V =
74.3739
2.1580
0.0948
>>
Figura A.108: Sesión de M ATLAB para analizar los datos sobre pisos construidos
A.13 Cálculo estocástico y simulación j 647

Como se puede ver en el listado, la matriz de covarianzas de los datos estudiados es


2 3
56;9685 5;1705 30;4775
€ D 4 5;1705 0;8941 3;64795 :
30;4775 3;6479 18;7641

Los valores propios son ƒ D diag.74;3739; 2;1580; 0;0948/.


Los componentes principales de este ejemplo son

P C1 D 0;8714X1 C 0;0853X2 C 0;4832X3 ;


P C2 D 0;4798X1 0;3542X2 0;8027X3 y
P C3 D 0;1026X1 C 0;9313X2 C 0;3495X3 :

Los porcentajes de variabilidad que explica cada componente principal son


74;3739 2;1580 0;0948
 100 D 97;06 %;  100 D 2;82 % y  100 D 0;12 %:
76;6267 76;6267 76;6267
Con el primer componente, y por supuesto con los dos primeros, sería suficiente para representar casi perfectamente este
conjunto de datos.

A.13 Cálculo estocástico y simulación


Un proceso estocástico o aleatorio se puede concebir en términos de variables aleatorias ligadas al paso del tiempo (en
la escala que sea), o a la ubicación en el espacio. Muchos modelos matemáticos de realidades económicas, físicas, am-
bientales, sociales, financieras o ingenieriles consideran cantidades que cambian aleatoriamente con el paso del tiempo.
Tales modelos se suelen formular y analizar en términos de procesos estocásticos.
En este apartado perseguimos dos objetivos. El primero es proporcionar al lector cierta base teórica sobre procesos
estocásticos y espacios de probabilidad, que se usan para modelizar matemáticamente fenómenos aleatorios en el tiem-
po o el espacio, y sus herramientas de cálculo básicas. El segundo, repasar algunos fundamentos matemáticos de los
algoritmos más usados para generar muestras con las que utilizar o analizar esos modelos. Sigo esencialmente a Nualart
[2017] y Sauer [2012].

A.13.1 Variables aleatorias y espacios de probabilidad


Cada resultado posible de un experimento o experiencia aleatoria, !, es un evento o suceso elemental. El conjunto de
todos los posibles sucesos es el conjunto muestral, designado habitualmente por .
Ejemplo A.36 En una sucesión de cálculos realizados con un ordenador observamos los primeros 9 dígitos no tenidos
en cuenta al truncar los resultados de las operaciones con una cierta cifra decimal. En este caso el conjunto muestral es
 D f.a1 ; : : : ; ak / W ai 2 Z; 0  ai  9g.
Ejemplo A.37 Se lanza un dado varias veces y se cuenta el número de lanzamientos hasta que salga el 6 por primera
vez. En este caso el conjunto muestral es el conjunto de números naturales, N. Es decir  D f1; 2; 3; : : :g.
Ejemplo A.38 Si se mide la presión y la temperatura en una estación meteorológica,  D f.p; t/ W p > 0; t 2 Rg.
En la práctica, al realizar un experimento, suele interesar saber si algún subconjunto de sucesos de  se repite o se da
bajo distintas formas. Interesa por lo tanto en considerar familias de subconjuntos de , significadas por F.
Definición A.104 Una familia F de subconjuntos de un conjunto muestral  se dice que tiene una estructura de
 -álgebra si satisface estas condiciones:
1. ; 2 F;
2. Al realizar un experimento algo ocurre, es decir  2 F. A  se le denomina evento o suceso cierto;
648 j Apéndice A

3. Si A 2 F su complemento Ac (no ocurre A), también pertenece a F: Ac 2 F;


4. Si los sucesos A1 ; A2 ; : : : ; AS
n ; : : : ocurren, el suceso ocurre alguno de los An también es un suceso o evento. Es
decir, A1 ; A2 ; : : : 2 F H) 1 i D1 Ai 2 F.

Definición A.105 La -álgebra generada por los conjuntos abiertos de Rn se denomina -álgebra de Borel de Rn ,
representándose por BRn .
Debe su nombre a Félix Édouard Justin Émile Borel, Francia 1871-1956.

Borel

Ahora definamos el entorno general de probabilidad en el que nos vamos a enmarcar.


Definición A.106 Un espacio de probabilidad es una terna .; F; P / formada por
I Un conjunto muestral  que representa el conjunto de posibles resultados de un experimento aleatorio.
II Una familia F de subconjuntos de  que tiene estructura de -álgebra.
III Una aplicación P W F ! Œ0; 1, denominada probabilidad, que cumple que:
a) P .;/ D 0, P ./ D 1.
b) Para todo A 2 , P .A/  0. La probabilidad de un suceso cualquiera A es un número real no negativo.
c) Si A1 ; A2 ; : : : 2 F son conjuntos disjuntos dos a dos (es decir, Ai \ Aj D ; si i ¤ j ), entonces
1
! 1
[ X
P Ai D P .Ai /:
iD1 i D1

Si P .F / D 1 diremos que el suceso F ocurre con probabilidad uno, o casi seguramente. Algunas reglas básicas del
cálculo de probabilidades son:
P .A \ B/ D P .A/ C P .B/ si A [ B D ;
P .Ac / D 1 P .A/
A  B H) P .A/  P .B/
Ejemplo A.39 Elegimos un número al azar en el intervalo Œ0; 2.  D Œ0; 2, F es la -álgebra de Borel generada por
los intervalos de Œ0; 2. La probabilidad de cualquier intervalo Œa; b  Œ0; 2 será
a b
P .Œa; b/ D :
2
Se dice que un espacio de probabilidad .; F; P / es completo si dado un suceso A de probabilidad cero, todos los
subconjuntos de A pertenecen a la  -álgebra F.
Definición A.107 Una variable aleatoria definida sobre un espacio de probabilidad .; F; P / es una aplicación
X.!/ W  ! R que es F-medible, es decir, X 1 .B/ 2 F, para todo conjunto B de la -álgebra de Borel de R, BR .
De forma más sencilla, una variable aleatoria es una función real definida en el espacio de probabilidad .; F; P / que
otorga un valor numérico a un experimento aleatorio.
Una variable aleatoria determina una -álgebra fX 1 .B/; B 2 BR g  F que se denomina  -álgebra generada por X .
Una variable aleatoria determina una probabilidad en la -álgebra de Borel BR definida por PX D P ı X 1 , es decir,
1
PX .B/ D P .X .B// D P .f! W X.!/ 2 Bg/:
1
El símbolo ı denota composición de funciones y X la preimagen. La probabilidad PX se denomina la ley o distribución
de la variable X.
A.13 Cálculo estocástico y simulación j 649

Definición A.108 Se dice que una variable aleatoria X tiene una densidad de probabilidad fX si fX .x/ es una
función positiva, medible respecto de la -álgebra de Borel y tal que
Z b
P .a < X < b/ D fX .x/ dx;
a
para todo a < b.

Ejemplo A.40 Una variable aleatoria tiene ley normal N.m;  2 / si


Z b
1 .x m/2
P .a < X < b/ D p e 2 2 dx;
2 2 a

para todo par de números reales a < b.


Las variables discretas que toman un conjunto finito o numerable de valores distintos xk no tienen densidad de proba-
bilidad y su ley está determinada por la función de probabilidad

pk D P .X D xk /:

Ejemplo A.41 Una variable aleatoria tiene ley binomial B.n; p/ si


 
n
P .X D k/ D p k .1 p/n k
;
k

para k D 0; 1; : : : ; n.

Definición A.109 La distribución de una variable aleatoria X puede caracterizarse mediante su función de distribu-
ción definida como la probabilidad acumulada
FX .x/ D P .X  x/ D PX .. 1; x/:
La función FX W R ! Œ0; 1 es creciente, continua por la derecha y con límites iguales a cero en 1 y 1 en C1. Si la
variable tiene densidad fX , entonces Z x
FX .x/ D fX .y/ dy;
1

y si la densidad es continua, FX0 .x/ D fX .x/:

Definición A.110 La esperanza matemática de una variable aleatoria X se define como la integral de X con respecto
a la probabilidad P , considerada como una medida en el espacio .; F/. En particular, si X es una variable elemental
que toma los valores ˛1 ; : : : ; ˛n en los conjuntos A1 ; : : : ; An , su esperanza matemática valdrá
X n
E.X / D ˛i P .Ai /:
i D1

El cálculo de la esperanza matemática de una variable aleatoria se efectúa integrando la función X respecto de la ley
de probabilidad de la variable. Es decir, si X es una variable que tiene esperanza (E.jXj/ < 1) se tiene que
Z Z 1
E.X / D X.!/ dP .!/ D x dPX .x/:
 1

En general, si g W R ! R es una función medible respecto de la  -álgebra de Borel y E.g.X // < 1 entonces la
esperanza de la variable g.X / se puede calcular integrando la función g respecto de la ley de la variable X , es decir
Z Z 1
E.g.X // D g.X.!// dP .!/ D g.x/ dPX .x/:
 1
650 j Apéndice A

R1
La integral 1 g.x/ dPX .x/ se calcula utilizando la densidad o función de probabilidad de la variable X :
„Z 1
Z 1 g.x/fX .x/ dx fX .x/ es la densidad de X
1
g.x/ dPX .x/ D X
1 g.xk /P .x D xk / X es variable discreta.
k

Ejemplo A.42 Si X es una variable aleatoria con ley normal N.0;  2 / y  es un número real,
ˇ 1
1 x2
E.e X / D p e x e 2 2 dx
2 2 1
ˇ 1
.x  2 /2
1 2
 2
Dp e 2 e 2 2 dx
2
2 1

 2 2
De 2 :

Definición A.111 La varianza de una variable aleatoria X se define por



X2 D Var.X / D E .X E.X //2 D E.X 2 / ŒE.X /2 :
La varianza mide el grado de dispersión de los valores de la variable respecto de su esperanza.
Por ejemplo, si X es una variable aleatoria con ley normal N.m;  2 / se tiene que
X m
P .m 1;96  X  m C 1;96 / D P . 1;96   1;96/

ˆ.1;96/ ˆ. 1;96/ D 0;95;
donde ˆ es la función de distribución de la ley N.m;  2 /. Es decir, la probabilidad de que la variable X tome valores en
el intervalo Œm 1;96; m C 1;96  es igual a 0;95.
Definición A.112 Se dice que X D ŒX1 ; : : : ; Xn > es un vector aleatorio n-dimensional si sus coeficientes, o com-
ponentes, son variables aleatorias.
La esperanza matemática de un vector aleatorio n-dimensional X será el vector E.X / D .E.X1 /; : : : ; E.Xn //
Definición A.113 La matriz de covarianzas de un vector aleatorio n-dimensional X es la matriz

€X D cov.Xi ; Xj / 1i;j n ;
 
donde cov.Xi ; Xj / D E .Xi E.Xi //.Xj E.Xj // :
Es decir, los coeficientes de la diagonal principal de esta matriz son las varianzas de las variables Xi ; fuera de la
diagonal están las covarianzas entre dos variables Xi y Xj .
La ley o distribución de un vector aleatorio n-dimensional X es la probabilidad definida en el -álgebra de Borel BRn
por PX .B/ D P .X 1 .B// D P .X 2 B/, para todo conjunto B de la -álgebra de Borel de R.
Se dice que un vector aleatorio n-dimensional X tiene una ley normal N.m; €/, donde m 2 Rn y € es una matriz
simétrica y definida positiva, si
Z bn Z b1
n 1 Pn 1
P .ai  Xi  bi ; i D 1; : : : m/ D  .2 det €/ 2 e 2 i;j D1 .xi mi /.xj mj /€ij dx1    dxn :
an a1

En tal caso, se tiene que m D E.X / y € D €x . Si la matriz € es diagonal,


2 2 3
1    0
6 :: : : :: 7
€D4 : : : 5
0    n2
A.13 Cálculo estocástico y simulación j 651

entonces la densidad del vector X será el producto de n densidades normales unidimensionales:


0 1
n .x mi /2
Y B 1 2 C
fX .x1 ; : : : ; xn / D @q e 2i A :
i D1 2i2

Existen también leyes normales degeneradas en las que la matriz € es singular. En este caso no existe la densidad de
probabilidad y la ley de X queda determinada por su función característica:
 0 
E e i t X D e .i t m 2 t €t / ;
0 1 0

donde t 2 Rn . En esta fórmula t 0 es un vector fila 1  n y t uno columna n  1.


Si X es un vector normal n-dimensional con ley N.m; €/ y A es una matriz m  n, entonces AX es un vector normal
n-dimensional con ley N.Am; A€A 0 /.
Se dice que una variable tiene media de orden p  1 si E.jXjp / < 1. En tal caso se define el momento de orden p
de la variable aleatoria X como mp D E.X p /.
El conjunto de las variables que tienen media de orden p se representa por

Lp .; F; P /:

Sea X una variable aleatoria con función característica 'X .t/ D E.e i tX /. Los momentos de la variable aleatoria
pueden calcularse a partir de las derivadas de la función característica en el origen
ˇ
1 .n/ ˇˇ
mn D n 'X .t/ˇ :
i tD0

Un concepto fundamental en probabilidades en el de la independencia.


Definición A.114 Dos sucesos A; B 2 F se dicen independientes si
P .A \ B/ D P .A/P .B/:
Si se tiene una sucesión finita o infinita de sucesos fAi ; i 2 I g, se dice que los sucesos de la colección son indepen-
dientes si
P .Ai1 \    \ Aik / D P .Ai1 /    P .Aik /
para todo conjunto finito de índices fi1 ; : : : ; ik g  I .
Una colección de conjuntos de sucesos fGi ; i 2 I g se dice ques es independiente si cualquier colección de sucesos
fAi ; i 2 I g tal que Ai 2 Gi para todo i 2 I es independiente.
Una colección de variables aleatorias fXi ; i 2 I g se dice que es independiente si la colección de -álgebras
fXi 1 .BRn /; i 2 I g lo es. Esto significa que

P .Xi1 2 Bi1 ; : : : ; Xik 2 Bik / D P .X1 2 Bi1 /    P .Xik 2 Bik /;

para todo conjunto finito de índices fi1 ; : : : ; ik g  I , donde los Bj son conjuntos de Borel.
Si dos variables aleatorias reales X e Y son independientes y tienen esperanza finita, el producto X Y tiene esperanza
finita y se cumple que E.X Y / D E.X /E.Y /.
En general, si las variables X1 ; : : : ; Xn son independientes,

EŒg1 .X1 /    gn .Xn / D EŒg1 .X1 /    EŒgn .Xn /:

donde las gi son funciones medibles tales que EŒjgi .Xi /j < 1.
Las componentes de un vector aleatorio de variables aleatorias son independientes sí y sólo sí su densidad o función
de probabilidad es igual al producto de las densidades o funciones de probabilidad de cada componente.
652 j Apéndice A

Definición A.115 La probabilidad condicionada de un suceso A por un suceso B, suponiendo P .B/ > 0, se define
como
P .A \ B/
P .AjB/ D :
P .B/

Dos sucesos A y B son independientes si y sólo si P .AjB/ D P .A/. La probabilidad condicionada P .AjB/ representa
la probabilidad del suceso A suponiendo sabemos que B ha ocurrido. La aplicación A 7 ! P .AjB/ define una nueva
probabilidad en el  -álgebra F que se concentra en el conjunto B. Se puede calcular la esperanza condicionada por B
de una variable aleatoria integrable X:
1
E.XjB/ D E.X1B /;
P .B/
donde 1B representa la función indicatriz del suceso B, definida por
(
1 si ! 2 B
1B D
0 si ! … B:

A.13.2 Procesos estocásticos


Definición A.116 Un proceso estocástico es una familia de variables aleatorias reales fXi ; t  0g, es decir, de
funciones medibles, X t .!/ W  ! R, definidas en une espacio de probabilidad .; F; P /, e indexadas en un conjunto
T 2 Œ0; 1/. A t ! X t .!/ se le denomina función de muestra o trayectoria del proceso estocástico.
Si T D N el proceso estocástico se dice discreto. Si T D Œ0; 1/ el proceso se denomina continuo.
En la figura A.109 se ven cuatro muestras de un proceso estocástico. El valor de X.t/ cambia con el tiempo y de
muestra a muestra.

X(t) 0

−5
4
3 100
50
Muestra número 2 t
1 0

Figura A.109
Figure 4.1. Four samples of a stochastic process.
Si fijamos un conjunto finito de instantes f0  t1 <    < tn g tendremos un vector aleatorio .X t1 ; : : : ; X tn / W  ! Rn .
Las distribuciones de probabilidad P t1 ;:::;tn D P ı .X t1 ; : : : ; X tn / 1 se denominan distribuciones en dimensión finita
del proceso.
La media (muestral) y la autocovarianza de un proceso estocástico se definen así:
mX .t/ D E.X t /
€X .s; t/ D Cov.Xs :X t /
1 D E..Xs mX .s//.X t mX .t//: Sample 1
Sample 2
La varianza (muestral) del proceso X se define por X2 .t/
D €X .t; t/ D Var.X t /. Sample 3
Se dice que un proceso estocástico fX t ; t  0g es gaussiano o normal si sus distribuciones en dimensión finita son
leyes normales multidimensionales.
X(t) 0 En el caso de un proceso estocástico gaussiano, la media mX .t/ y la autocovarianza
€X .s; t/ determinan las distribuciones de dimensión finita del proceso.
La media mX .t/ y la varianza X2 .t/ nos permiten conocer dónde se concentran los valores de la variable X t así como
su grado de dispersión, para−1cada instante t fijo. Por ejemplo, en el caso de un proceso gaussiano,
0 0.25 0.5 0.75 1
P .mX .t/ 2X .t/  X t  m
t X .t/ C 2X .t// ' 0;95:

Figure 4.2. Three samples of stochastic process X(t) =


A cos (10t).
A.13 Cálculo estocástico y simulación j 653

Un proceso estocástico fX t ; t  0g es continuo en probabilidad si para todo " > 0 y todo t  0, lKıms!t P .jXy Xs j >
"/ D 0: Si el proceso tiene una E.jX t jp / < 1 para todo t  0, con p  1, se dice que el proceso es continuo en media
de orden p si lKımx!t E.jX t Xs jp / D 0: La continuidad en media de orden p implica la continuidad en probabilidad.
La continuidad de media de orden p no implica necesariamente la continuidad de las trayectorias.
Acotaciones adecuadas de los momentos de los incrementos del proceso, permiten deducir la continuidad de las
trayectorias. Este es el contenido del siguiente criterio de continuidad, debido a Andréi Nikoláyevich Kolmogórov,
Rusia 1903-1987.

Kolmogórov
5

X(t) 0

−5
4
100
Proposición A.82 Criterio de continuidad
3 de Kolmogorof. Supongamos50que un proceso estocástico fX t ; t  0g
2
cumple la condición siguiente: 1 0
SampleE.jX
#
t Xs jp /  cT jt sjt ˛ ;
para todo 0  s < t  T , donde a > 1 y p > 0. Entonces existe una versión del proceso estocástico X t que tiene
trayectorias continuas. Figure 4.1. Four samples of a stochastic process.

A.13.2.1 Ejemplos
Sea X.t/ D A cos.10t/, t  0, donde A es una variable aleatoria uniformemente distribuida en el intervalo Œ0; 1. X.t/
es un proceso estocástico pues para cada tiempo dado t0 , X.to / es una variable aleatoria uniforme. En la figura A.110 se
ven tres ejemplos de X.t/, para 0  t  1.

1 Muestra 1
Muestra 2
Muestra 3

X(t) 0

−1
0 0.25 0.5 0.75 1
t
Figura A.110
Figure 4.2. Three samples of stochastic process X(t) =
A cos (10t).

A.13.2.1.1 Proceso de Bernoulli


Debido a Daniel Bernoulli, Groningen (Países Bajos), 1700-Basilea, Suiza, 1782.

38
Bernouilli

Es uno de los procesos estocásticos más simples. Los constituyen secuencias de variables aleatorias independientes e
idénticamente distribuidas, cada una de las cuales toma el valor 1, con probabilidad p, o el 0, con probabilidad 1 p.
Un ejemplo típico es el de lanzar al aire una moneda un número de veces. Cada lanzamiento lo representa una variable
aleatoria de Bernoulli con probabilidad p de que salga cara y 1 p de que salga cruz.
A.13 Cálculo estocástico y simulación j 655

pasos es E.S t / D E.1 C    C  t / D E.1 / C    C E. t / D 0 y la varianza Var.S t / D Var.1 C    C  t / D


Var.1 / C    C Var. t / D t , pues la varianza es aditiva sobre las variables aleatorias independientes.
El hecho de que la media de S t sea 0 y su varianza t indica que al calcular n diferentes desarrollos de la variable
aleatoria S t , la media muestral
S 1 C    C S tn
mS .t/ D E.S t / D t
n
y la varianza muestral
.S 1 Es /2 C    C .S tn Es /2
€S .t; t/ D Var.S t / D t
n 1
deberían aproximarse a 0 y t, respectivamente. La desviación estándar muestral, que es la raíz cuadrada de la varianza
muestral, también se conoce como el error estándar de la media. p
Si se reduce cada paso del paseo aleatorio, en términos de amplitud y altura del mismo, por factores k y 1= k
respectivamente, se conseguirá que la esperanza matemática del proceso siga siendo la misma, al igual que la varianza.
Esto es así porque la multiplicación de una variable aleatoria por una constante hace que su varianza cambie en términos
de la raíz cuadrada de esa constante. p
Si S tk es la variable aleatoria de paso 1=k del de S t , y de altura un ˙1= k, con igual probabilidad, la esperanza
matemática después de t pasos es
Xkt Xkt
k k
E.S t / D E.Si / D 0 D 0:
i D1 i D1

La varianza será
kt kt
" 2  2 #
X X 1 1 kt
Var.S tk / D Var.Sik / D p .0;5/ C p .0;5/ D D t:
k k k
iD1 iD1

450 | CHAPTER 9 Random


La figura A.112Numbers andpaseo
muestra un Applications
aleatorio discreto con 10 pasos y otro con k D 25, es decir con 250.
y y

5 5

x x
5 10 5 10

–5 –5

(a) (b)
Figura A.112
Figure 9.10 Discrete Brownian motion. (a) Random walk Wt of 10 steps. (b) Random walk Wt25

El límite de esta subdivisión
using de steps
25 times more S t cuando !with
than (a),k but 1 step heightal1/movimiento
da lugar 25. The meanbrowniano
and variancecontinuo
en el que t es
of the
height at
tt
1t = 10 are identical (0 and 10, respectively) for processes (a) and (b).
una variable real y W D S es una variable aleatoria para cada t  0. Se conoce más concretamente
time como Proceso
de Wiener, por Norbert Wiener, EE.UU. 1894-1964, que fue quien estableció en los años 20 del siglo XX el modelo
matemático del movimiento browniano basado en la teoría de los procesos estocásticos.
Therefore, Wtk is defined to be the random walk that takes a step sik of horizontal length

1/k, and with step height ±1/ k with equal probability. Then the expected value at time t
is still
kt Wiener
kt
 
k k
E(Wt ) = E(si ) = 0 = 0,
i=1 i=1

and the variance is


kt kt
 
1 2 1 2
  
  1
V (Wtk ) = V (sik ) = √ (.5) + − √ (.5) = kt = t. (9.12)
k k k
i=1 i=1

If we decrease the step size and step height of the random walk in this precise way as k
grows, the variance and standard deviation stays constant, independent of the number k
of steps per unit time. Figure 9.10(b) shows a realization of Wtk , where k = 25, so 250
656 j Apéndice A

Definición A.118 Un proceso estocástico fW t ; t  0g es un proceso de Wiener —o movimiento browniano continuo—


en el espacio .; F; P / si se cumplen estas condiciones:
I W0 D 0.
II Fijados unos instantes 0  t1 <    < tn , los incrementos W tn W tn 1 ; : : : ; W t2 W t1 son variables aleatorias
independientes.
III Si s < t, el incremento W t Ws tiene una ley normal N.0; t s/.
IV Las trayectorias del proceso son funciones continuas.
La condición III es consecuencia del teorema central del límite. El proceso de Wiener es un proceso gaussiano ya
que la ley de un vector aleatorio .W t1 ; : : : ; W tn / es normal ya que éste es una transformación lineal de .W t1 ; W t2
W t1 ; : : : ; W tn W tn 1 / que tiene ley normal ya que tiene las componentes independientes y normales.
La esperanza matemática o media y la autocovarianza son, si s  t,
E.W t / D 0
E.Ws W t / D E.Ws .W t Ws C Ws //
D E.Ws .W t Ws // C E.Ws2 / D s D mi n.s; t/:
Si un proceso gaussiano tiene media cero y función de autocovarianza €X .s; t/ D mi n.s:t /, cumple I, II y III.
El código de M ATLAB del cuadro A.6, que utiliza el generador de numeros aleatorios normales randn, genera un
proceso de Wiener con un paso t D 1=25. Es el que se describía en la figura A.112.

% Proceso de Wiener de 250 pasos


%
k=250; sqdelt=sqrt(1/25); b=0:
for i=1:k
b=b+sqdelt*randn;
end
Cuadro A.6

A.13.2.1.3 Procesos de Poisson


Toman su nombre de Siméon Denis Poisson, Francia, 1781-1840, al que ya hemos recurrido varias veces en este libro.
Definición A.119 Un proceso de Poisson fN t ; t  0g es un proceso estocástico caracterizado por las siguientes
propiedades:
I N0 D 0.
II Fijados unos instantes 0  t1 <    < tn , los incrementos N tn N tn 1 ; : : : ; N t2 N t1 son variables aleatorias
independientes.
III Si s < t, el incremento N t Ns tiene una ley de Poisson de parámetro .t s/, es decir
.t s/ Œ.t s/k
P .N t Ns D k/ D e ; k D 0; 1; 2; : : :

Un proceso de Poisson se construye a partir de una sucesión fYn ; n  1g de variables aleatorias independientes y con
una ley geométrica de parámetro . Es decir, para todo x  0, P .Yn  x/ D e x : Si se hace T0 D 0 y para n  1,
Tn D Y1 C    C Yn , entonces el proceso N t definido por N t D n si Tn  t < TnC1 es un proceso de Poisson de
parámetro , denominado intensidad.
Las trayectorias del proceso de Poisson tienen saltos de amplitud 1 y son constantes en cada par de saltos. Los tiempos
entre cada par de saltos son variables aleatorias independientes con leyes exponenciales de parámetro . Las trayectorias
no son continuas, aunque si lo son en media cuadrática:
1
X 2
.t s/ k Œ.t s/k
EŒ.N t Ns /2  D e

kD1
s!t
D .t s/ C Œ.t s/2 ! 0:
A.13 Cálculo estocástico y simulación j 657

A.13.2.1.4 Procesos de Markov

Definición A.120 Un proceso estocástico fXn ; n  og, en el que las variables aleatorias están definidas en un espacio
medible, es un proceso o cadena de Markov si para cualquier n y cualquier conjunto A se cumple que P .XnC1 2
AjX0 ; : : : ; Xn / D P .XnC1 2 AjXn /. A los procesos que se comportan de esta manera se les dicen, en general, que
cumplen la propiedad de Markov.
Lo que quiere decir que dado el presente cualquier otra información del pasado es redundante o irrelevante para
predecir el futuro. La definición es equivalente a la identidad E.f .XnC1 /jX1 ; : : : ; Xn / D E.f .XnC1 /jXn /.
Los procesos de Bernoulli, Wiener, brownianos y de Poisson son procesos que cumplen esta propiedad. Los procesos
de Markov toman su nombre de Andrey Andreyevich Markov, Rusia 1856-1922.

Markov

A.13.3 Simulación
Los modelos matemáticos, para ser creíbles y robustos ante distintos escenarios de actuación, necesitan simular sus
prestaciones a partir de patrones de situaciones ya dadas o de datos imaginados. Esto permite analizarlos para conocer
sus debilidades numéricas o teóricas y así mejorarlos. Si se alimentan con datos que fijen un punto de partida adecuado
y unas condiciones de contorno previsibles, pueden permitir, con el resultado de su operación, tomar decisiones con un
grado de certeza o riesgo más o menos aceptable de acuerdo con el grado de dificultad o entidad de la decisión.
Los modelos de procesos estocásticos se basan en situaciones probables, aunque inciertas, dentro de unos determinados
márgenes de actuación. Su evolución es aleatoria y dotada de ruido por lo que para simular su comportamiento es
necesario generar números aleatorios que imiten o reproduzcan hasta donde sea posible ese ruido o aleatoriedad. En los
apartados anteriores hemos presentado unos ejemplos muy sencillos de cómo hacer unas modestas simulaciones con la
ayuda de M ATLAB para generar paseos aleatorios, procesos de Wiener, etc.
Aunque todos disponemos intuitivamente de una cierta noción de un número aleatorio, no es nada fácil definirlo con
precisión. Tampoco en fácil imaginar cómo generarlos mediante una máquina y que su patrón de ocurrencia responda a
una distribución concreta como la normal, la exponencial, la gaussiana, etc.

A.13.3.1 Generación de números aleatorios


Aunque el objetivo a alcanzar sería producir números aleatorios sucesivamente de tal manera que cualquiera de ellos
fuese absolutamente independiente de los anteriores y su distribución idéntica, independientemente de su posición en el
orden dado, lo cierto es que tal aspiración, con los medios finitos de que disponemos y con el sistema de numeración
implícito en los ordenadores actuales tan limitado, es imposible. Sí se pueden conseguir números pseudo-aleatorios o
cuasi-aleatorios con patrones de aproximación a las características ideales más o menos adecuadas al objetivo en cada
caso.
La mayoría de los números aleatorios generados por los ordenadores actuales son pseudo-aleatorios, pues la secuencia
se repite con una frecuencia determinada a partir de un “cebado” inicial. Las prestaciones de estos números es buena
en general, pero no son tan aleatorios como, por ejemplo, los sofisticados números generados por el ruido atmosférico
electromagnético utilizado como fuente de entropía, que en algunos casos se usan.
La serie de valores pseudo-aleatorios generados está generalmente determinada por un número fijo llamado semilla
—seed—, que desencadena la sucesión. Uno de los algoritmos más comunes es el denominado de congruencial lineal ,
que utiliza la fórmula de recurrencia xnC1 D .axn C b/ mod m, donde a, b y m son números enteros grandes. El número
máximo de números que la fórmula puede producir es el módulo m.
La mayoría de los lenguajes de programación informática incluyen funciones o rutinas que proporcionan números
aleatorios. El generador de números aleatorios más utilizado y reconocido en la actualidad se basa en el algoritmo
658 j Apéndice A

Mersenne Twister, del tipo minimal standard random number generator. Se suele inicializar utilizando como semilla el
reloj de tiempo real del ordenador. Su nombre proviene de un monje, Marin Mersenne, Francia 1588-1648, que estudió
los números primos que llevan su nombre (primos iguales a una potencia de 2 menos 1).

Mersenne

Ejemplo A.43 Vamos a utilizar este generador de números aleatorios para, siguiendo a Sauer [2012], y adelantándonos
a la introducción de la técnica Monte Carlo, calcular el área del conjunto de puntos .x; y/ que satisfacen

4.2x 1/4 C 8.2y 1/8 < 1 C 2.2y 1/3 .3x 2/2 :

La idea es generar 10.000 pares de puntos .x; y/ de tal manera que los que cumplan esta inecuación se registran. Al final
del proceso se cuentan cuántos de estos hay en total, y esa cantidad dividida por 10.000 nos dará el área más probable
que encierra a ese conjunto de puntos.
En la figura A.113 se puede ver el resultado de la simulación —que numéricamente es 0;547— y el área cubierta por
los puntos que cumplen la inecuación.
9.1 Random Numbers | 435

0.8

0.6
y

0.4

0.2

0
0 0.5 1
x

Figure 9.2 Monte Carlo calculation of area. Figura


From A.113
10,000 random pairs in [0, 1] × [0, 1], the
ones that satisfy the inequality in Example 9.2 are plotted. The proportion of plotted random
pairs is an approximation to the area.
Un pequeño código de M ATLAB para llevar a efecto estos cálculos se lista en el cuadro A.7. Se puede ensayar con
diversos valores de n para comprobar el resultado.
◮ EXAMPLE 9.2 Find the area of the set of points (x, y) that satisfy
function x=MoCa_1(n)
xy=rand(n,2);
4(2x − 1)4 + 8(2y − 1)8 < 1 + 2(2y − 1)3 (3x − 2)2 .
k=0;
for i=1:n
We ifwill4*(xy(i,1)*2-1)^4+8*(2*xy(i,2)-1)^8<1+2*(2*xy(i,2)-1)^3*(3*xy(i,1)-2)^2
call this a Monte Carlo Type 2 problem. There is no clear way to describe
k=k+1;
this area as the
end average value of a function of one variable, since we cannot solve for
end
y. However, given a candidate (x, y), we can easily check whether or not it belongs to
x=k/n;
the set. We
end will equate the desired area with the probability that a given random pair
(x, y) = (ui , ui+1 ) belongs to the set and try to approximate that probability.
Figure 9.2 shows this idea carriedCuadro A.7 10,000 random pairs generated by the
out with
Minimal Standard LCG. The proportion of pairs in the unit square 0 ≤ x, y ≤ 1 that satisfy
the inequality, and are plotted in the figure, is 0.547, which we will take as an approximation
to the area. ◭

Although we have made a distinction between two types of Monte Carlo problems,
there is no firm boundary between them. What they have in common is that they are both
computing the average of a function. This is explicit in the previous “type 1’’ example. In
the “type 2’’ example, we are trying to compute the average of the characteristic function
of the set, the function that takes the value 1 for points inside the set and 0 for points
A.13 Cálculo estocástico y simulación j 659

A.13.3.2 Simulación de variables aleatorias


Teniendo un generador de números aleatorios, o pseudo-aleatorios, suficientemente bueno, rand, podremos simular
variables aleatorias con distribuciones diferentes de la uniforme en Œ0; 1. Esto se consigue mediante transformaciones
de lo producido por ese generador con fórmulas como los que siguen.

A.13.3.2.1 Variables aleatorias discretas


Si X tiene una distribución de probabilidad discreta dada por los pares suceso-probabilidad de la matriz que sigue
 
x1 x2    xn
XD ;
p1 p2    pn

se definen unos números 0 D q0 < q1 <    < qn D 1 tales que

q0 D 0; q1 D p1 ; q2 D p1 C p2 ; : : : ; qn D p1 C p2 C    pn D 1:

Para simular la variable aleatoria discreta X se utiliza el generador rand y se hace igual a x1 si 0 rand< q1 , x2 si
q1 rand< q2 , y así sucesivamente. Si la distribución de probabilidad es muy extensa, se puede truncar a un valor de n
suficientemente grande.

A.13.3.2.2 El método de las funciones inversas


Se basa en que si X es una variable aleatoria con una función de distribución FX , la variable aleatoria Y D FX .X / está
uniformemente distribuida en Œ0; 1. Invirtiendo la función de distribución FX y aplicándola a Y se puede recuperar X .
Si se quiere simular una variable aleatoria con una función de distribución invertible F , primero se simula una variable
aleatoria uniforme en Œ0; 1 y luego se le aplica al resultado la función F 1 . El método falla, por supuesto, si no se puede
explicitar F 1 .
Ejemplo A.44 Apliquemos este método para simular una variable aleatoria X con distribución exponencial y parámetro
. Recordemos que la función de densidad de probabilidad en este caso es fX .x/ D e x , x > 0, por lo que FX D
1 e x , x > 0, y
1
FX 1 .y/ D log.1 y/:

Como 1-rand tiene la misma distribución en Œ0; 1 que rand, se deduce que log.rand) = tiene la distribución expo-
nencial con parámetro  que se desea obtener.

A.13.3.2.3 El método de Box-Müller


Este método se usa para simular variables aleatorias con distribución normal. Toma su nombre del trabajo de George
Edward Pelham Box, Reino Unido 1919-EE.UU. 2013,

Box

y Mervin Edgar Müller. Se basa en este resultado.


Proposición A.83 Dadas dos variables Y1 e Y2 uniformemente distribuidas en Œ0; 1, las variables aleatorias
p p
X1 D 2 log.1 Y1 / cos.2Y2 / y X2 D 2 log.1 Y1 / sen.2Y2 /
son independientes y de distribución normal N.0; 1/.
660 j Apéndice A

De acuerdo con él, para simular una variable aleatoria de distribución normal de media  D 0 y varianza  2 D 1, se
pude utilizar rand para obtener dos números, rand1y rand2 de tal manera que
p p
X1 D 2 log.rand1/ cos.2rand2/ y X2 D 2 log.rand1/ sen.2rand2/

sean dos variables aleatorias normales independientes.

A.13.3.2.4 Método basado en el teorema central del límite


Para simular una variable aleatoria normal se usa habitualmente este procedimiento, en dos pasos:
1. Se simulan doce variables independientes, X1 ; X2 ; : : : ; X12 , uniformemente distribuidas mediante rand.
2. Se hace Y D X1 C X2 C    X12 6.
La distribución de la variable aleatoria Y es muy próxima a una normal, pero no exactamente pues P .Y > 6/ D 0 pero
P .Z > 6/ ¤ 0 para una auténtica normal. Esto es así como consecuencia del resultado que sigue.
Teorema A.84 Sea X1 ; X2 ; : : : una sucesión de variables aleatorias independientes que tienen la misma distribución.
Sea  D E.X1 / D E.X2 / D    y  2 D Var.X1 / D Var.X2 / D    . La sucesión de variables aleatorias normales
.X1 C X2 C    Xn / n
p
 n
converge a una variable aleatoria normal.
El que se escojan 12, u otro número de variables, depende de la experiencia y de la bondad que se requiera de los
resultados con los que se simulen los datos.

A.13.3.2.5 Vector de variables aleatorias


El esquema general para simular un vector de variables aleatorias normales de media  y matriz de covarianzas € sería
este:
1. Simular n variables aleatorias independientes y con ellas construir el vector .
2. Calcular la descomposición de Cholesky A T A D €.
3. El vector que se necesita se obtiene haciendo Y D A C .

A.13.3.3 El método Montecarlo


Este método materializa el conocimiento de procesos estocásticos y sus resultados mediante un procedimiento de cálculo
basado en llevar a cabo múltiples muestreos de los datos esenciales de las variables que constituyen los problemas que
se estudian y analizan. Cuantas más muestras se hagan del problema, y de la dinámica de como evoluciona éste, mejores
serán los resultados que el procedimiento consiga. Ya hemos visto alguna de sus prestaciones y posibilidades para
calcular el área dentro de una determinada curva.
En su versión moderna se debe al trabajo de Stanislaw Marcin Ulam, Lemberg, Austria-Hungría 1909-EE.UU. 1984
y John von Neumann, Budapest, Austria-Hungría 1903-EE.UU. 1957.

Ulam von Neumann

Von Neumann es, como decía Newton, uno de los grandes gigantes que ha dado la naturaleza humana. Sus contribucio-
nes en los 53 años de su vida a múltiples disciplinas relacionadas con las matemáticas son absolutamente portentosas.
No cabe duda de que a hombros de él los avances de muchas áreas a las que dedicamos este libro han permitido ver e ir
mucho más lejos de lo que él comenzó.
El método Montecarlo está basado en este interesante resultado.
A.13 Cálculo estocástico y simulación j 661

Teorema A.85 Ley de los grandes números. Sea X1 ; X2 ; : : : una sucesión de variables aleatorias independientes que
tienen la misma distribución y la función g W R ! R tal que  D EŒg.X1 / D EŒg.X2 / D    . Se cumple que
l 1
g.X1 / C g.X2 / C    C g.Xn /
!D g.x/fX1 .x/ dx al n ! 1:
n
1

De acuerdo con este teorema, el enfoque para el cálculo que sigue el método de Montecarlo es la siguiente:
R1
Supóngase que una cantidad que se quiere determinar se puede escribir como y D 1 g.x/fX .x/ dx para
alguna variable aleatoria X con función de densidad de probabilidad fX , y para alguna función concreta g.
También, que los números x1 ; x2 ; : : : son muestras aleatorias de la distribución de fX . Entonces, la media
1
.g.x1 / C g.x2 / C    C g.xn //
n
p
aproxima el valor de y con una precisión aproximada dada por 1= n.

En la actualidad se usa masivamente para calcular expectativas de precios de derivados financieros, predicciones de
evolución en bolsa de determinados productos y posiciones, procesos estocásticos complicados, etc.

A.13.4 Ecuaciones diferenciales estocásticas


Una variante de las ecuaciones diferenciales cada día más extendida surge cuando la dinámica del proceso que mode-
lizan está afectada por movimientos aparentemente aleatorias, o ruidos. En tal caso nos encontraremos con ecuaciones
diferenciales estocásticas.
Lo que sigue es una breve introducción a la solución de las mismas, que son procesos estocásticos continuos como,
por ejemplo, el movimiento browniano que acabamos de ver un poco más arriba.
La resolución de una ecuación diferencial ordinaria, convertida en ecuación diferencial estocástica —EDS—, trata de
obtener la solución de (
dy D r dt C  dB t
y.0/ D 0;
donde r y  son constantes —coeficiente de deriva y coeficiente de difusión, respectivamente— y B t un proceso
estocástico, como el movimiento browniano por ejemplo. La solución tendrá la forma y.t/ D rt C B t .
Muchos procesos estocásticos, como el movimiento browniano, son continuos pero no diferenciables. La EDS

dy D f .t; y/ dt C g.t; y/ dB t

expresa por definición la ecuación


Z 1 Z 1
y.t/ D y.0/ C f .s; y/ dt C g.s; y/ dBs ;
0 0

donde la segunda integral se denomina integral de Itō. Su nombre proviene de Kiyosi Itô, Japón 1915-2008.

Itō

La integral de Itō, de forma parecida a como se define la integral de Riemann, es


Z b Xn
f .t/ dB t D lKım f .ti 1 /Bi ;
a t!0
i D1
662 j Apéndice A

donde Bi D B ti B ti 1 , es un paso browniano a lo largo del intervalo de integración.


Rb
La integral de Itō, I D a f .t/ dB t es una variable aleatoria. El diferencial dI es dI D f dB t . El diferencial dB t
se denomina ruido blanco.
Si en la ecuación diferencial estocástica dy.t/ D r dt C  dB t , y D f .t; x/, la regla de la cadena en términos
estocásticos define la fórmula de Itō
@f @f 1 @2 f
dy D .t; x/ dt C .t; x/ dx C .t; x/ dx dx;
@t @x 2 @x 2
donde dx dx se puede interpretar en términos de dt dt D 0, dt dB t D dB t , dt D 0 y dB t dB t D dt .
La fórmula de Itō permite resolver explícitamente algunas ecuaciones diferenciales estocásticas.
Ejemplo A.45 Comprobemos si la ecuación de movimiento browniano geométrico
1 2
y.t/ D y0 e .r 2  /t CB t

satisface la ecuación diferencial estocástica

dy D ry dt C y dB t :
1 2
Hagamos y D f .t; x/ D y0 e x , donde x D .r 2
 /t C B t . Mediante la fórmula

1
dy D y0 e x C y0 e x dx dx;
2
donde dx D .r 1=2 2 /dt C  dB t . Haciendo uso de los valores diferenciales de la fórmula de Itō, se tiene que
dx dx D  2 dt . En consecuencia,
 
x 1 2 1
dy D y0 e r  dt C y0 e x  dB t C y0  2 e x dt
2 2
D y0 e x r dt C y0 e x  dB t
D ry dt C y dB t :

Esta ecuación se utiliza habitualmente en modelos financieros. En concreto, es la fórmula detrás del modelo de Black-
Scholes para poner precio a los derivados financieros.
Muchas ecuaciones diferenciales estocásticas no pueden resolverse explícitamente. Por ello es conveniente disponer
de métodos numéricos que permiten la simulación de soluciones.

A.13.4.1 Integración numérica de ecuaciones diferenciales estocásticas


El método de Euler-Maruyama, similar al de Euler para integrar EDO, toma su nombre de Gisiro Maruyama, Japón
1916-1986.

Maruyama

Se trata de resolver el problema (


dy.t/ D f .t; y/ dt C g.t; y/ dB t
y.a/ D ya
Se subdivide el intervalo de integración Œa; b en n subintervalos de longitud ti .
664 j Apéndice A

que a la postre valió a Scholes (Black ya había muerto) para conseguir el Premio Nobel de Economía en 1997, junto a
Robert C. Merton.
Un sencillo ejemplo para contextualizar las fórmulas que emplearemos se refiere a una opción de compra de acciones
de la compañía IBD por 15 e el 1 de diciembre. Si el precio de las acciones de esta compañía, tan aparentemente
atractiva, el 1 de junio está en 12 e, la pregunta es ¿cuál es el valor de esa opción o derecho de compra? El valor o precio
de la acción el día del vencimiento será K euros. Si X es el valor de la acción en un momento dado, el de la opción
esperable será el mKax fX K; 0g. Si X > Z, el valor de la opción el día de la ejecución es positivo e igual a X K
euros. Si X < K el valor será cero para el comprador de la opción.
El modelo para valorar estos derivados se basa en un movimiento browniano de tipo geométrico con la fórmula

dX D mX dt C X dB t ;

donde m es la deriva, o tasa de crecimiento del precio de la acción, y  la constante de difusión, o volatilidad. Estos
dos parámetros se pueden estimar estadísticamente en función de los valores a los que ha cotizado la acción los últimos
tiempos.
El razonamiento de Black y Scholes para deducir su fórmula se basa en considerar —una propuesta de arbitrage al
respecto, nada más— que el valor correcto de esa opción, a T meses o años vista, debería ser el valor presente del valor
esperado de la opción el día de su vencimiento teniendo en cuenta que el valor real de la acción subyacente X.t/ satisface
la ecuación diferencial estocástica
dX D rX dt C X dB t :
Esto resulta en que si el precio de la acción objeto de análisis es X D X0 en el instante t D 0, el valor esperable de la
opción en el instante de su vencimiento t D T es
rT
C.X; T / D e EŒmKax .X.T / K; 0/;

donde X.t/ es el valor determinado por la ecuación diferencial estocástica anterior. Lo sorprendente de esta fórmula es
que la deriva m se reemplaza por la tasa de interés o rentabilidad r. De hecho, el previsible crecimiento de la cotización
de la acción es irrelevante para el valor de la opción, lo cual se desprende de la suposición de no arbitrage, base de la
teoría de Black y Scholes, que viene a decir que no existen ganancias libres de riesgos en un mercado realmente eficiente.
La última fórmula depende del valor de la esperanza matemática de la variable aleatoria X.t/, que sólo se puede
conocer mediante simulación, como sabemos. Si se aporta esa información, la expresión compacta del valor de la opción
que dedujeron Black y Scholes es
C.X; T / D XN.d1 / Ke rT N.d2 /;
Rx s 2 =2
donde N.x/ D p1 1e ds es la función de distribución normal acumulada,
2
 
ln.X=K/ C r C 21  2 T ln.X=K/ C r 1 2
2
 T
d1 D p y d2 D p :
 T  T
Apéndice B

Listado de algunos programas presentados

Estos son los programas en M ATLAB que por su extensión no se pudieron incluir en pequeños cuadros en los capítulos
correspondientes.

B.1 cgLanczos_1.m
Este programa es una versión del Systems Optimization Laboratory, de la Universidad de Stanford, para resolver Ax D
b, donde la matriz A es definida positiva y simétrica, que utiliza iteraciones de Lanczos según lo visto en el capítulo
correspondiente. Se mencionó en el página 212 del capítulo 8.6.2.
function [ x, istop, itn, Anorm, Acond, rnorm, xnorm, D ] = ...
cgLanczos_1( A, b, show, itnlim, rtol )
% cgLanczos solves the system of linear equations Ax = b,
% where A is an n x n positive-definite symmetric matrix
% and b is a given n-vector, where n = length(b).
%
% On entry:
% show (true/false) controls the iteration log.
% itnlim (integer) limits the number of iterations.
% rtol (e.g. 1e-8) is the requested accuracy. Iterations
% terminate if rnorm < (Anorm*xnorm)*rtol.
%
% On exit:
% x (n-vector) is the solution estimate
% istop (0--6) gives reason for termination (see "msg" below)
% itn (integer) is the number of CG iterations
% Anorm estimates the Frobenius norm of A
% Acond estimates the condition of A (in F-norm)
% rnorm estimates the residual norm: norm(r) = norm(b-Ax)
% xnorm is the exact norm(x)
% D (n-vector) estimates diag(inv(A)).
%
% Code author: Michael Saunders, SOL, Stanford University.
% Reference C. C. Paige and M. A. Saunders (1975),
% Solution of sparse indefinite systems of linear equations,
% SIAM J. Numer. Anal. 12(4), pp. 617-629.
%---------------------------------------------------------------------

n = length(b);
if show
fprintf(’\n’)
fprintf(’\n Enter cgLanczos. Solution of symmetric Ax = b’)
fprintf(’\n n = %6g itnlim = %6g rtol = %11.2e’, n,itnlim,rtol)
end

istop = 0; itn = 0;
Anorm = 0; Acond = 0; x = zeros(n,1);
xnorm = 0; D = zeros(n,1);
%------------------------------------------------------------------
% Set up the first Lanczos vector v.
%------------------------------------------------------------------
done = false;
666 j Apéndice B

beta1 = norm(b);
if beta1==0
istop = 0; done = true; show = true; % b=0 exactly. Stop with x = 0.
else
v = (1/beta1)*b;
end

beta = beta1; rnorm = beta1;


Tnorm2 = 0; Wnorm2 = 0;
if show
fprintf(’\n\n Itn x(1) norm(r) norm(x) norm(A) cond(A)’)
fprintf(’\n %6g %12.5e %10.3e’, itn, x(1), beta1)
end

%---------------------------------------------------------------------
% Main iteration loop.
% --------------------------------------------------------------------
if ~done % k = itn = 1 first time through
while itn < itnlim
itn = itn + 1;
%-----------------------------------------------------------------
% Obtain quantities for the next Lanczos vector vk+1, k = 1, 2,...
% The general iteration is similar to the case k = 2.
% p =A*v2; alpha2=v2’*p; p=p - alpha2*v2 - beta2*v1; beta3=norm(p)
% v3=(1/beta3)*p.
%-----------------------------------------------------------------
p = A*v;
if itn>1, p = p - beta*v1; end
alpha = v’*p; % alpha = v’Av in theory
if alpha<=0, istop = 6; break; end % A is indefinite or singular
p = p - alpha*v;
oldb = beta; % oldb = betak
beta = norm(p); % beta = betak+1
beta = max(beta,eps); % Prevent divide by zero
v1 = v;
v = (1/beta)*p;

if itn==1 % Initialize a few things.


delta = sqrt(alpha); gamma = beta /delta;
zeta = beta1/delta; w = v1 /delta;
x = zeta*w; D = w.^2; Tnorm2 = alpha^2 + beta^2;
else % Normal case (itn>1)
delta = alpha - gamma^2;
if delta<=0, istop = 6; break; end % Tk is indefinite or singular
delta = sqrt(delta);
zeta = - gamma*zeta/delta;
w = (v1 - gamma*w )/delta;
x = x + zeta*w;
D = D + w.^2;
gamma = beta /delta;
Tnorm2 = Tnorm2 + alpha^2 + oldb^2 + beta^2;
end
%-----------------------------------------------------------------
% Estimate various norms and test for convergence.
%-----------------------------------------------------------------
Wnorm2 = Wnorm2 + norm(w)^2;
Anorm = sqrt( Tnorm2 );
Acond = Anorm * sqrt(Wnorm2);
xnorm = norm(x);
rnorm = abs(beta*zeta/delta);
test1 = rnorm / (Anorm*xnorm); % ||r|| / (||A|| ||x||)

% See if any of the stopping criteria are satisfied.


if itn >= itnlim , istop = 4; end
if Acond >= 0.1/eps, istop = 3; end
if test1 <= eps , istop = 2; end
if test1 <= rtol , istop = 1; end

% See if it is time to print something.


if show
prnt = false;
if n <= 40 , prnt = true; end
if itn <= 10 , prnt = true; end
if itn >= itnlim-10, prnt = true; end
if mod(itn,10)==0 , prnt = true; end
if Acond >= 1e-2/eps , prnt = true; end
if test1 <= 10*eps , prnt = true; end
if test1 <= 10*rtol , prnt = true; end
B.2 Rsimplex_1.m j 667

if istop ~= 0 , prnt = true; end


if prnt
fprintf(’\n %6g %12.5e %10.3e %8.1e %8.1e %8.1e’, ...
itn,x(1),rnorm,xnorm,Anorm,Acond);
end
if mod(itn,10)==0, fprintf(’\n’); end
end % show

if istop > 0, break; end


end % main loop
end % if ~done early
%-------------------------------------------------------------------
% Display final status.
%-------------------------------------------------------------------
msg = [’beta1 = 0. The exact solution is x = 0 ’ % istop = 0
’A solution to Ax = b was found, given rtol ’ % 1
’Maximum accuracy achieved, given eps ’ % 2
’Acond has exceeded 0.1/eps ’ % 3
’The iteration limit was reached ’ % 4
’A does not define a symmetric matrix ’ % 5
’A does not define a positive-definite matrix’]; % 6
msg = msg(istop+1,:);
if show
fprintf(’\n’)
fprintf(’\n %s’, msg)
fprintf(’\n istop =%3g itn =%10g’, istop,itn)
fprintf(’\n Anorm =%10.2e Acond =%10.2e’, Anorm,Acond)
fprintf(’\n rnorm =%10.2e xnorm =%10.2e’, rnorm,xnorm)
fprintf(’\n’)
end

B.2 Rsimplex_1.m
Este programa es una versión del Simplex un poco más completa que las presentadas para incluir variables acotadas y
las Fases I y II en su totalidad de ese algoritmo. Se mencionó en el página 351 del capítulo 14.7.
function [fobj,niters,x] = Rsimplex_1(file,A,b,c,lb,ub)
% Método Simplex revisado en dos FASES
% Resuelve min c’x st Ax=b, lb<=x<=ub.
%
if nargin>2
if nargin<4, error(’Si no se lee de fichero, se requieren al menos’,...
’ cuatro argumentos en entrada’); end
if nargin<6, ub = Inf*ones(size(c)); end
if nargin<5, lb = zeros(size(c)); end
A = sparse(A); c=c(:); b=b(:); lb=lb(:); ub=ub(:);
else % Lectura de los datos desde fichero ’file’ en MPS
eval([’!copy ’ file ’ d:\Matlab2013a\work\tmp\in.mps’]); clear all
LIPSO = ’d:\Matlab2013a\work’; fin=mps2mat(LIPSO); fprintf(’\n’);
load d:\Matlab2013a\work\tmp\default; % En default.mat los datos
lb=lbounds; ub=ubounds;
end
[m,n] = size(A); zer_tol = 1.0e-5; piv_tol = 1.0e-8; niters=0; t=cputime;
f=fopen(’Salida_Rsimplex’,’w’);
fprintf(f,’ It. Fase Sinf/Fobj Nopt\n’);
fprintf(f,’----------------------------------\n’);
% FASE I
v = zeros(n,1);
lbdd = find(lb>-Inf); v(lbdd) = lb(lbdd); free = setdiff(1:n,lbdd);
ubdd = free(ub(free)<Inf); v(ubdd) = ub(ubdd);
if isempty(ubdd), N = -lbdd’; % Var no en la base: en cota inf. No hay en u
else N = [-lbdd’ ubdd]; free = setdiff(free,ubdd);
end
f = length(free);
if f>0 % ¡OJO! Hay variables libres
[L,U,P,Q] = lu(A(:,free)); % Q es matriz de permutación
free = free*Q’;
i = length(find(abs(diag(U))>piv_tol)); j = free(i+1:f);
if ~isempty(j)
N = [N j]; free = setdiff(free,j); f = length(free);
lb(j) = zeros(size(j)); ub(j) = zeros(size(j));
end;
[k,~] = find(P(1:f,:)); % relies on diag(U) having zeros at end
668 j Apéndice B

v(free) = U(1:f,1:f)\(L(1:f,1:f)\(P(1:f,:)*(b - A*v)));


k = setdiff(1:m,k); m = m-f; B = [free n+1:n+m];
A = [A sparse(k,1:m,sign(b(k)-A(k,:)*v+eps),m+f,m)];
else % No hay variables libres
B = n+1:n+m; j = []; A = [A sparse(1:m,1:m,sign(b-A*v+eps*ones(size(b))))];
end
lb = [lb; zeros(m,1)]; ub = [ub; Inf*ones(m,1)];
w = [zeros(n,1); ones(m,1)]; % Variables + artificiales para FASE I
[x,niters,B,N,L,U] = rsmbdd(A,b,w,lb,ub,B,N,1,niters); % FASE I
if w’*x>zer_tol, error(’El problema no es factible’); end
% Adaptar para FASE II
ub(n+1:n+m) = zeros(m,1); c = [c; zeros(m,1)];
if ~isempty(j)
c_r = c(j)’-c(B)’*(U\(L\A(:,j)));
if norm(c_r,inf)>zer_tol, error(’Problema no acotado’); end
end
[x,niters] = rsmbdd(A,b,c,lb,ub,B,N,2,niters); % FASE II
x = x(1:n); fobj=c(1:n)’*x;
fclose(’all’);
fprintf(’[m n]=[%g %g]. Tiempo CPU:%10.4f; fun. obj.=%17.4e\n’,m,n,cputime-t,fobj);
end

function [x,niters,B,N,L,U] = rsmbdd(A,b,c,lb,ub,B,N,fase,niters)


% Rutina de SIMPLEX revisado para min c’x s.a Ax=b, lb<=x<=ub.
% B vector 1xm con los índices de las variables (columnas) en la base.
% N vector 1x(l-m) con los índices de las variables no básicas,
% es decir, en sus límites (+/-1).
%
f=fopen(’Salida_Rsimplex’,’a’);
zer_tol = 1.0e-5; piv_tol = 1.0e-8;
[L,U] = lu(A(:,B));
if any(abs(diag(U))<piv_tol), error(’La base inicial no es invertible’); end
x = lb; upper = N(N>0); x(upper) = ub(upper);
x(B) = U\(L\(b-A(:,abs(N))*x(abs(N))));
while 1
if any(x(B)<lb(B)-zer_tol | x(B)>ub(B)+zer_tol), error(’Punto no factible’); end
u = L’\(U’\c(B));
c_r = c(abs(N))’-u’*A(:,abs(N)); % Costes reducidos no básicas
if ~any(c_r.*N>zer_tol), return, end % SE HA LLEGADO A UNA SOLUCIÓN
Nopt=sum(c_r.*N>zer_tol);
[~,s] = max(c_r.*sign(N)); % Entra var. s no básica con>coste reducido
blk = abs(N(s));
min_ratio = ub(blk) - lb(blk); order = -sign(N(s)); % Puede s ir de u a l o l a u
d = order*U\(L\A(:,blk));
block_lb = find(d>=piv_tol & lb(B)>-1e32); % Comprobar básica que llega a lb
if ~isempty(block_lb)
[min_lb,index_r] = min((x(B(block_lb))-lb(B(block_lb)))./d(block_lb));
if min_lb<min_ratio
r=block_lb(index_r);
min_ratio = min_lb;
blk = B(r);
end
end
block_ub = find(d<=-piv_tol & ub(B)<1e32); % Comprobar básica que llega a ub
if ~isempty(block_ub)
[min_ub,index_r] = min((x(B(block_ub))-ub(B(block_ub)))./d(block_ub));
if min_ub<min_ratio
r=block_ub(index_r);
min_ratio = min_ub;
blk = B(r);
end
end
if min_ratio>1e32, error(’Problema no acotado’); end
% Readaptar solución y datos
x(B) = x(B)-min_ratio*d;
x(abs(N(s))) = x(abs(N(s))) + order*min_ratio;
if blk == abs(N(s)), N(s) = -N(s); % Se bloquea la no básica
else swap = B(r); B(r) = abs(N(s)); N(s) = -sign(d(r))*swap;
[L,U] = lu(A(:,B));
end
niters=niters+1;
fprintf(f,’%5d%4d%18.9e%6d\n’,niters,fase,c’*x,Nopt);
end
end
B.3 PLip_1.m j 669

B.3 PLip_1.m
Este programa es una versión muy completa de un algoritmo de Punto Interior —basado en Lipsol— para resolver
problemas de Programación Lineal de grandes dimensiones. Se pueden leer los datos en cualquier formato de los más
habituales en el mercado.

function PLip_1(pname,A,b,c,lb,ub)
% PLip Programación Lineal con algoritmo de Punto Interior
% Basado en Lipsol; adaptado para no tener que usar las rutinas de Fortran
% adaptadas a Matlab .mexw32. Lee datos en formato Matlab o .MPS
% Uso PLip_1(’etam-mi.mps’) o PLip_1(’LP_acotadas_clase.mat’)
% >> cEje1=[-1 -3 0 0];
% >> AEje1=[2 3 1 0;-1 1 0 1];
% >> bEje1=[6;1]
% PLip_1([],AEje1,bEje1,cEje1)
%
global x y z s w
t0 = cputime;
if nargin>2
if nargin<4, fprintf(’Si no se lee de fichero, se requieren al menos’,...
’ cuatro argumentos en entrada’); return, end
if nargin<6, ub = Inf*ones(size(c)); end
if nargin<5, lb = zeros(size(c)); end
A = sparse(A); c=c(:); b=b(:); lbounds=lb(:); ubounds=ub(:); BIG=1.e35; NAME=’’;
else % Lectura de los datos desde fichero ’file’ en MPS o MAT
[A,b,c,lbounds,ubounds,BIG,NAME,~] = loadata(pname);
end
times(1) = cputime - t0;
t0 = cputime;
[A,b,c,lbounds,ubounds,FEASIBLE] = preprocess(A,b,c,lbounds,ubounds,BIG); %Preprocesado
if ~FEASIBLE, fprintf(’Infactibilidad detectada en preprocesado\n’), return, end
[A,b,c,ubounds] = scaling(A,b,c,ubounds);
times(2) = cputime - t0;
t0 = cputime;
[info] = Alg_IP(A,b,c,ubounds); % Aqui se resuelve todo
save results x y z s w info;
times(3) = cputime - t0;
t0 = cputime;
[xsol, objp] = postprocess(x,lbounds); % Se deja todo como estaba al principio
times(4) = cputime - t0;
save solution xsol;
printout(NAME,info,objp,times);
end

function [A,b,c,lbounds,ubounds,BIG,NAME,ifree] = loadata(file)


% DATOS - Carga los datos de un fichero .mps o .mat - ifree añadida por mi en mps2mat.
if exist(file,’file’)==0, fprintf(’El archivo no existe\n’), return, end
l1 =length(file); A=[]; b=[]; c=[]; lbounds=[]; ubounds=[]; BIG=1e35; NAME=’’; ifree=[];
if strcmpi(file(l1-3:end),’.mps’) ~= 1
load(file,’A’,’b’,’c’,’lbounds’,’ubounds’);
else
[p,~,~] = mkdir([pwd ’\tmp’]);
if p~=1, fprintf(’Error al crear carpeta temporal\n’); return, end
eval([’!copy ’ file ’ ’ pwd ’\tmp\in.mps’]);
exit=mps2mat(pwd);
fprintf(’\n’);
load([pwd ’\tmp\default.mat’],’A’,’b’,’c’,’lbounds’,’ubounds’,’BIG’,’NAME’,’ifree’);
end
c=c(:); b=b(:); lbounds=lbounds(:); ubounds=ubounds(:);
end
%FIN loadata

function [A,b,c,lbounds,ubounds,FEASIBLE] = preprocess(A,b,c,lbounds,ubounds,BIG)


% PREPROCESS - Preprocesa los datos de entrada para quitar inconsistencias,
% simplificar el problema, etc. Postprocess lo deja como estaba.
global NNZA
global b_orig c_orig
global data_changed
global Lbounds_non0
global Ubounds_exist nub
global Fixed_exist ifix infx xfix
global Zrcols_exist izrcol inzcol xzrcol
global Sgtons_exist isolved insolved xsolved
fprintf(’Preprocesado ...\n’);
[m,~] = size(A); FEASIBLE = 1;
if any(lbounds > ubounds)
670 j Apéndice B

fprintf(’\nPreproceso: Límite inferior mayor que superior\n’);


fprintf(1,’%c’,7); % ring a bell
FEASIBLE = 0; return
end
if ~issparse(A), A = sparse(A); end
b = sparse(b); c = sparse(c); lbounds = sparse(lbounds);
b_orig = b; c_orig = c; data_changed = 0;
%----- delete fixed variables -----
fixed = lbounds == ubounds; Fixed_exist = any(fixed);
if Fixed_exist
ifix = find(fixed);
infx = find(1 - fixed);
xfix = lbounds(ifix);
c = c(infx);
b = b - A(:,ifix)*sparse(xfix);
A = A(:,infx);
lbounds = lbounds(infx);
ubounds = ubounds(infx);
data_changed = 1;
end
%----- delete zero rows -----
rnnzct = sum(spones(A’));
if any(rnnzct == 0)
izrows = find(rnnzct == 0);
if any(b(izrows) ~= 0)
fprintf(’\nPreproceso: problema no factible\n’);
fprintf(1,’%c’,7); % ring a bell
FEASIBLE = 0; return
end
inzrows = find(rnnzct > 0);
A = A(inzrows,:); b = b(inzrows);
rnnzct = rnnzct(inzrows);
fprintf(’ (%i 0-rows)’, length(izrows));
data_changed = 1; [m,~] = size(A);
end
%----- make A structurally "full rank" -----
sprk = sprank(A’);
if sprk < m
Row_deleted = 1;
[dmp,~] = dmperm(A);
irow = dmp(1:sprk);
A = A(irow,:); b = b(irow);
rnnzct = rnnzct(irow);
fprintf(’ (%i dep-rows)’, m-sprk);
data_changed = 1;
end
%----- delete zero columns -----
Zrcols_exist = 0;
zrcol = (max(abs(A)) == 0)’;
if any(zrcol == 1)
Zrcols_exist = 1;
izrcol = find(zrcol);
if any(c(izrcol) < 0 & ubounds(izrcol) > BIG-1)
fprintf(’\nPreproceso: problema no acotado inferiormente\n’);
fprintf(1,’%c’,7); % ring a bell
FEASIBLE = 0; return
end
xzrcol = zeros(size(izrcol))+(c(izrcol) < 0).*ubounds(izrcol)+...
(c(izrcol) > 0).*lbounds(izrcol);
inzcol = find(1 - zrcol);
A = A(:,inzcol);
c = c(inzcol);
lbounds = lbounds(inzcol); ubounds = ubounds(inzcol);
fprintf(’ (%i 0-columns)’, nnz(zrcol));
data_changed = 1;
end
%----- solve singleton rows -----
Sgtons_exist = 0;
singleton = (rnnzct == 1);
nsgrows = nnz(singleton);
if nsgrows >= max(1,0.01*size(A,1))
Sgtons_exist = 1;
isgrows = find(singleton);
iothers = find(1 - singleton);
fprintf(’ (%i singletons)’,nsgrows);

Atmp = A(isgrows,:); Atmp1 = spones(Atmp); btmp = b(isgrows);


if nsgrows == 1
B.3 PLip_1.m j 671

isolved = find(Atmp1);
insolved = find(Atmp1 == 0);
xsolved = b(isgrows)/Atmp(isolved);
else
colnnzct = sum(Atmp1);
isolved = find(colnnzct);
insolved = find(colnnzct == 0);
[ii, jj] = find(Atmp);
Atmp = Atmp(ii,jj); btmp = btmp(ii);
xsolved = btmp./diag(Atmp);
if any(colnnzct > 1)
repeat = diff([0; jj]) == 0;
for i = 1:length(xsolved) - 1
if repeat(i+1) && xsolved(i+1)~=xsolved(i)
fprintf(’\nPreproceso: problema no factible\n’);
fprintf(1,’%c’,7); % ring a bell
FEASIBLE = 0; return
end
end
ii = find(~repeat); jj = ii;
Atmp = Atmp(ii,jj); btmp = btmp(ii);
xsolved = btmp./diag(Atmp);
end
end
if any(xsolved<lbounds(isolved)) || any(xsolved>ubounds(isolved))
fprintf(’\nPreproceso: problema no factible\n’);
fprintf(1,’%c’,7); % ring a bell
FEASIBLE = 0; return
end
b = b(iothers) - A(iothers,isolved)*xsolved;
A = A(iothers, insolved);
c = c(insolved);
lbounds = lbounds(insolved);
ubounds = ubounds(insolved);
data_changed = 1;
end
%----- shift nonzero lower bounds -----
Lbounds_non0 = any(lbounds ~= 0);
if Lbounds_non0, b = b - A*lbounds; data_changed = 1; end
%----- find upper bounds -----
nub = 0; iubounds = ubounds < BIG - 1;
Ubounds_exist = full(any(iubounds));
if Ubounds_exist
ubounds = sparse(iubounds.*(ubounds-lbounds));
nub = nnz(ubounds);
end
[m, n] = size(A); NNZA = nnz(A);
fprintf(’ (m=%i, n=%i)\n’,m,n);
end
%FIN preprocess

function [A,b,c,ubounds] = scaling(A,b,c,ubounds)


% SCALING - Escalado de la matriz A.
global data_changed
global col_scaled colscl
global Ubounds_exist nub
[m, n] = size(A);
badscl = 1.e-4;
col_scaled = 0;
absnzs = abs(nonzeros(A));
thescl = min(absnzs)/max(absnzs);
clear absnzs
if thescl<badscl
fprintf(’Escalado ...\n’);
% ----- scaling vectors ------
AA = abs(A);
colscl = full(sqrt(max(AA)’));
rowscl = full(sqrt(max(AA’)’));
clear AA;
% ----- column scaling -----
if Ubounds_exist, ubounds = ubounds.*colscl; end
colscl = reciprocal(colscl);
A = A*sparse(1:n,1:n,colscl);
c = c.*colscl;
col_scaled = 1;
% ----- row scaling -----
rowscl = reciprocal(rowscl);
A = sparse(1:m,1:m,rowscl)*A;
672 j Apéndice B

b = b.*rowscl;
bnrm = norm(b);
if bnrm>0
q = median([1 norm(c)/bnrm 1.e+8]);
if q>10, A = q*A; b = q*b; end
end
data_changed = 1;
end
end
%FIN scaling

function [x,objp] = postprocess(x,lbounds)


% POSTPROCESS - Postprocesa el resultado para recuperar las variables originales, etc.
global b_orig c_orig
global Lbounds_non0
global col_scaled colscl
global Fixed_exist ifix infx xfix
global Zrcols_exist izrcol inzcol xzrcol
global Sgtons_exist isolved insolved xsolved
if col_scaled, x = x.*colscl; end
if Lbounds_non0, x = x + lbounds; end
if Sgtons_exist, tmp(insolved) = x; tmp(isolved) = xsolved; x = sparse(tmp); end
if Zrcols_exist, tmp(inzcol) = x; tmp(izrcol) = xzrcol; x = sparse(tmp); end
if Fixed_exist, tmp(infx) = x; tmp(ifix) = xfix; x = sparse(tmp); end
if size(x,1)<size(x,2), x = x’; end
objp = full(c_orig’*x);
end
%FIN postprocess

function [info] = Alg_IP(A,b,c,ubounds)


% ALG_IP - Parte central del algoritmo predictor-corrector de resolución del problema.
global x y z s w
global Ubounds_exist nub nt
global Dense_cols_exist ispars
global phi0 tau0
global Hist
global per m R Apro trerror_1
fprintf(’\n<<<<< Alg_IP: Algoritmo de Punto Interior Predictor-Corrector>>>>>\n’);
% Parámetros usados por el algoritmo
tau0 = .9995; % step percentage to boundary
phi0 = 1.e-5; % initial centrality factor
tol = 1.e-6; % tolerancia para terminar
maxiter = 99; % número máximo de iteraciones
Dense_cols_exist = 0; % suponemos que no existen columnas densas; ispars=1:n afecta
[m,n] = size(A); nt = n + nub; ispars = 1:n;
bnrm = norm(b); cnrm = norm(c); unrm = []; Hist = [];
if Ubounds_exist, unrm = norm(ubounds); end
per = symamd(A*A’); Apro = zeros(m,1); % Permutación simbólica para todo el proceso
initpoint(A,b,c,ubounds,bnrm,cnrm);
[Rxz,Rsw,dgap] = complementy;
[Rb,Rc,Ru,rb,rc,ru] = feasibility(A,b,c,ubounds);
[trerror,rrb,rrc,rru,rdgap,objp,objd]=errornobj(b,rb,bnrm,c,rc,cnrm,ubounds,ru,unrm,dgap);
iter = 0; converged = 0; mzeros = sparse(m,1); nzeros = sparse(n,1);
fprintf(’\n Residuos: Primal Dual U-bounds d-Gap Err_rel_max\n’);
fprintf(’ -----------------------------------------------------------------\n’);
Vd = [];
while iter <= maxiter %%% Bucle de iteraciones %%%
fprintf(’ Iter %4i: ’, iter);
fprintf(’%8.2e %8.2e %8.2e %8.3e %8.3e\n’,rb,rc,ru,dgap,trerror);
if iter > 0
[stop,converged] = stopping(tol);
if stop, break, end
end
xn1 = reciprocal(x); sn1 = [];
if ~Ubounds_exist
vmid = reciprocal(z.*xn1);
else
sn1 = reciprocal(s);
vmid = reciprocal(z.*xn1 + w.*sn1);
end
cap = 1.e+11; vmid = full(min(cap,vmid));
P = A*sparse(1:n,1:n,vmid,n,n,n)*A’; U=[]; %Antes [P,U] = getpu(A,vmid);
Vd = [Vd vmid];
[dx,dy,dz,ds,dw] = direction(A,P,U,Rb,Rc,Ru,Rxz,Rsw,vmid,xn1,sn1,z,w,0,bnrm,1);
[ap,ad] = ratiotest(dx,dz,ds,dw);
if tau0*ap < 1 || tau0*ad < 1
mu = centering(dx,dz,ds,dw,ap,ad,dgap,trerror);
Rxz = dx.*dz; Rsw = ds.*dw;
B.3 PLip_1.m j 673

[dx2,dy2,dz2,ds2,dw2] = direction(A,P,U,mzeros,nzeros,nzeros,...
Rxz,Rsw,vmid,xn1,sn1,z,w,mu,bnrm,2);
dx = dx + dx2; dy = dy + dy2; dz = dz + dz2;
ds = ds + ds2; dw = dw + dw2;
[ap,ad] = ratiotest(dx,dz,ds,dw);
end
[Rxz,Rsw,dgap] = update(ap,ad,dx,dy,dz,ds,dw,trerror,tol);
[Rb,Rc,Ru,rb,rc,ru] = feasibility(A,b,c,ubounds);
[trerror,rrb,rrc,rru,rdgap,objp,objd]=errornobj(b,rb,bnrm,c,rc,cnrm,ubounds,ru,unrm,dgap);
Hist = [Hist [trerror rrb rrc rru rdgap objp objd]’];
iter = iter + 1;
end %%% Fin while %%%
info(1) = converged;
info(2) = iter;
info(3) = trerror;
save vd Vd;
end
%FIN Alg_IP

function initpoint(A,b,c,ubounds,bnrm,cnrm)
% INITPOINT - Punto de comienzo del proceso.
global x y z s w
global Ubounds_exist
global per m R Apro trerror_1 posdef
[m,n] = size(A); y = zeros(m,1);
pmin = max(bnrm/100, 100);
dmin = cnrm*.425; dmin = max(dmin, pmin/40);
pmin = min(pmin, 1.e+4); dmin = min(dmin, 1.e+3);
e = ones(n,1);
P = A*sparse(1:n,1:n,e,n,n,n)*A’; U=[];
[R,p] = chol(P(per,per));
if p == 0
posdef = 1;
else
posdef = 0;
warningstate4=warning(’off’,’MATLAB:cholinc:ArgInfToBeRemoved’);
R = cholinc(P(per,per),’inf’);
%R = builtin(’_cholinf’,sparse(P(per,per)));
end
rho = min(100,bnrm);
br = b-rho*A*e; Apro(per) = (R\(R’\br(per))); % antes: x=A’*(P\(b-rho*A*e)) + rho*e;;
x = A’*Apro + rho*e; %
pmin = max(pmin, -min(x)); x = max(pmin,x);
z = full((c+dmin).*(c > 0) + dmin*(-dmin < c & c <= 0) - c.*(c <= -dmin));
s = []; w = [];
if Ubounds_exist
s = spones(ubounds).*max(pmin, ubounds-x);
w = spones(ubounds).*(dmin*(c > 0)+(dmin - c).*(-dmin < c & c <= 0)-2*c.*(c <= -dmin));
end
end
%FIN initpoint

function [Rxz,Rsw,dgap] = complementy


% COMPLEMENTY - Se calculan los vectores de complementariedad y la brecha dual.
global x y z s w
global Ubounds_exist
Rxz = x.*z; Rsw = [];
if Ubounds_exist, Rsw = s.*w; end
dgap = full(sum([Rxz; Rsw]));
end
%FIN complementy

function [Rb,Rc,Ru,rb,rc,ru] = feasibility(A,b,c,ubounds)


% FEASIBILITY - Se calculan los vectores residuo de factibilidad y sus normas.
global x y z s w
global Ubounds_exist
Rb = A*x - b; Rc = A’*y + z - c; Ru = [];
if Ubounds_exist, Rc = Rc - w; Ru = spones(s).*x + s - ubounds; end
rb = norm(Rb); rc = norm(Rc); ru = 0;
if Ubounds_exist, ru = norm(Ru); end
if any(isnan([rb rc ru])), error(’ NaN occured.’); end
end
%FIN feasibility

function [trerror,rrb,rrc,rru,rdgap,objp,objd] = errornobj(b,rb,bnrm,c,rc,cnrm,ubounds,ru,unrm,dgap)


% ERRORNOBJ - Se calcula el error relativo total y el valor de los objetivos primal y dual.
global x y z s w
global Ubounds_exist nt
674 j Apéndice B

global per m R Apro trerror_1


rrb = rb/max(1,bnrm); rrc = rc/max(1,cnrm); rru = 0; rru_1 = 0;
objp = full(c’*x); objd = full(b’*y);
if Ubounds_exist, objd = objd - w’*ubounds; rru = ru/(1+unrm); rru_1 = ru/max(1,unrm); end
rdgap = dgap/nt;
trerror = max([rrb rrc rru_1 rdgap]);
trerror_1 = rrb+rrc+rru_1+abs(objp-objd)/max([1 abs(objp) abs(objp-objd)]);
end
%FIN errornobj

function [stop,converged] = stopping(tol)


% STOPPING - Comprobación de criterio de finalización del algoritmo
global Hist message
stop = 0; converged = 0;
iter = size(Hist,2);
trerror = Hist(1,iter);
if trerror<tol, stop = 1; converged = 1; message = ’<* Converge! *>’; return, end
small = 1.e-5; if iter<=2, return, end
blowup = Hist(1:5,iter) > max(tol,min(Hist(1:5,:)’)’)/small;
if iter > 5
blowup = blowup | Hist(1,iter) > 1000*min(Hist(1,:)) | ...
all(Hist(1,iter-4:iter) > 1.01*(Hist(1,iter-5:iter-1)));
end
if any(blowup), stop = 1; converged = 0; message = detectinf(tol); end
nstall = 5; if iter<=nstall, return, end
latest = iter-nstall:iter;
h = Hist(1:5,latest); hmean = mean(h’);
for i = 1:5
stall(i) = all(abs(h(i,:)-hmean(i)) < 1.e-3*hmean(i));
if i > 1 stall(i) = stall(i) & hmean(i) > small; end
end
if any(stall)
if trerror < small
stop = 1; converged = 1;
message = ’Parece que converge pero hay error > tolerancia’;
else
stop = 1; converged = 0;
message = detectinf(tol);
end
end
end
%FIN stopping

function [dx,dy,dz,ds,dw]=direction(A,P,U,Rb,Rc,Ru,Rxz,Rsw,vmid,xn1,sn1,z,w,mu,bnrm,flag)
% DIRECTION - Calcula las direcciones del proceso iterativo
global Ubounds_exist
global per m R Apro trerror_1 posdef
if mu~=0 Rxz = Rxz - mu; end
Rc0 = Rc;
Rc = Rc - Rxz.*xn1;
if Ubounds_exist
if mu ~= 0, Rsw = Rsw - mu; end
Rc = Rc + (Rsw - Ru.*w).*sn1;
end
rhs = -(Rb + A*(vmid.*Rc));
if flag==1
if posdef
[R,p] = chol(P(per,per)); if p ~= 0, posdef = 0; end
else
warningstate4=warning(’off’,’MATLAB:cholinc:ArgInfToBeRemoved’);
R = cholinc(P(per,per),’inf’);
%R = builtin(’_cholinf’,sparse(P(per,per)));
end
end
warningstate1=warning(’off’,’MATLAB:nearlySingularMatrix’);
warningstate2=warning(’off’,’MATLAB:singularMatrix’);
warningstate3=warning(’off’,’MATLAB:rankDeficientMatrix’);
Apro(per) = R\(R’\rhs(per));
dy = Apro;
dx = vmid.*(A’*dy + Rc); % Antes: dy = P\rhs;
dz = -(z.*dx + Rxz).*xn1;
ds = []; dw = [];
if Ubounds_exist
ds = -(dx.*spones(w) + Ru);
dw = -(w.*ds + Rsw).*sn1;
end
resp = Rb + A*dx;
if norm(resp) > 1.e-1*bnrm
B.3 PLip_1.m j 675

Apro(per) = R\(R’\resp(per)); % Antes: dx = dx - A’*(P\resp);


dx = dx - A’*Apro;
end
end
%FIN direction

function [ap,ad] = ratiotest(dx,dz,ds,dw)


% RATIOTEST - Ratio test.
global x y z s w
global Ubounds_exist
% ----- ratio test -----
ap = -1/min([dx./x; -0.1]);
ad = -1/min([dz./z; -0.1]);
if Ubounds_exist
as = -1/min([ds(find(s))./nonzeros(s); -0.1]);
aw = -1/min([dw(find(w))./nonzeros(w); -0.1]);
ap = min(ap, as); ad = min(ad, aw);
end
end
%FIN ratiotest

function mu = centering(dx,dz,ds,dw,ap,ad,dgap,trerror)
% CENTERING - Calculo del parámetro de centrado mu.
global x y z s w
global Ubounds_exist nt
newdgap = (x + min(1,ap)*dx)’*(z + min(1,ad)*dz);
if Ubounds_exist
newdgap = newdgap + (s + min(1,ap)*ds)’*(w + min(1,ad)*dw);
end
sigmak = (newdgap/dgap)^2;
sigmin = 0; sigmax = .208; % Don’t ask why.
p = ceil(log10(trerror));
if p<-2 && dgap<1.e+3, sigmax = 10^(p+1); end
sigmak = max(sigmin, min(sigmax, sigmak));
mu = sigmak*dgap/nt;
end
%FIN centering

function [Rxz,Rsw,dgap] = update(ap,ad,dx,dy,dz,ds,dw,trerror,tol)


% UPDATE - Actualiza datos de iteración. Usa backtracking para que los puntos del proceso
% iteratico permanezcan en un entorno del central path.
global x y z s w
global phi0 tau0
global backed nt
tau = tau0;
if ~exist(’backed’), backed = 0; end
if ~backed, tau = .9 + 0.1*tau0; end
k = ceil(log10(trerror));
if k<=-5, tau = max(tau,1-10^k); end
ap = min(tau*ap,1); ad = min(tau*ad,1);
xc = x; yc = y; zc = z; sc = s; wc = w;
step = [1 .9975 .95 .90 .75 .50];
for k = 1:length(step)
x = xc + step(k)*ap*dx;
y = yc + step(k)*ad*dy;
z = zc + step(k)*ad*dz;
s = sc + step(k)*ap*ds;
w = wc + step(k)*ad*dw;
[Rxz,Rsw,dgap] = complementy;
phi = nt*full(min([Rxz; Rsw(Rsw~=0)]))/dgap;
if max(ap,ad)==1 || phi>=phi0, break, end
end
phi0 = min(phi0, phi); if k > 1, backed = 1; end
end
%FIN update

function printout(NAME,info,objp,times)
% PRINTOUT - Imprime información del problema y solución.
global message
global x y z s w
global NNZA NNZL
global Lbounds_non0
global Ubounds_exist nub
global Fixed_exist ifix infx xfix ifree
global Zrcols_exist izrcol inzcol xzrcol
global Dense_cols_exist idense ispars
converged = info(1);
fprintf(’\n%s’,NAME); fprintf(’\n%s\n’,message);
676 j Apéndice B

if converged
fprintf(’Resultados (sin procesar) en results.mat\n’);
fprintf(’Solución xsol (procesada) en solution.mat\n’);
fprintf(’Primal Obj = %18.10e\n’, objp);
end;
fprintf(’[m n] = [%i %i], nnz(A) = %i\n’, length(y),length(x),NNZA);
if Lbounds_non0, fprintf(’Hay límites inferiores distintos de cero.\n’), end
if Ubounds_exist, fprintf(’Número de límites superiores: %g\n’,nub), end
if Fixed_exist, fprintf(’Número de variables fijas: %g\n’,length(ifix)), end
if exist(’ifree’), if ~isempty(ifree)
fprintf(’Número de variables libres: %g\n’,length(ifree)/2); end, end
if Zrcols_exist, fprintf(’Número de columnas totalmente a cero en A: %g\n’,length(izrcol)); end
if Dense_cols_exist, fprintf(’Número de columnas densas en in A: %g\n’,length(idense)), end
fprintf(’CPU seconds: %6.2f ... carga de datos\n’, times(1));
fprintf(’ %6.2f ... preprocessado\n’, times(2));
fprintf(’ %6.2f ... resolución\n’, times(3));
fprintf(’ %6.2f ... postprocesado\n’, times(4));
fprintf(’ %6.2f ... total\n\n’, sum(times));
end
Bibliografía

[1] A ASEN , J.O. 1971. On the Reduction of a Symmetric Matrix to Tridiagonal Form. BIT 11, pp. 233-242.
[2] A BADIE , J. ED . 1970. Integer and Nonlinear Programming. North-Holland.
[3] A BERTH , O. 2007. Introduction to Precise Numerical Methods. Elsevier.
[4] A BELL , M.L. Y B RASELTON , J.P. 2004. Mathematica by Example. Elsevier.
[5] ACTON , F.S. 1990. Numerical Methods that Work. The Mathematical Association of America.
[6] A DAMS , J.C., B RAINERD , W.S., M ARTIN , J.T., S MITH , B.T. Y WAGENER , J.L. 1992. Fortran 90 Handbook. Complete
ANSI/ISO Reference. McGraw-Hill.
[7] A DOBE S YSTEMS I NCORPORATED . 1986. PostScript Language. Tutorial and Cookbook. Addison-Wesley.
[8] A DOBE S YSTEMS I NCORPORATED . 1990. PostScript Language. Reference Manual. Addison-Wesley.
[9] A HUJA , R.K., M AGNATI , T.L. Y O RLIN , J.B. 1989. Network Flows. En Handbooks in Operations Research and Management
Science. Volume 1: Optimization. Nemhauser, G.L., Rinnooy Kan, A.H.G. y Todd, M.J. eds. North-Holland.
[10] A LJ , A. Y FAURE , R. 1988. Investigación operativa. Elementos fundamentales. Vol. 1. Masson.
[11] A LVARADO , F.L. 1979. A Note on Sorting Sparse Matrices. Proceedings of the IEEE 67, pp. 1362-1363.
[12] A LVARADO , F.L. 1990. Manipulation and Visualization of Sparse Matrices. ORSA J. Computing 2, pp. 186-207.
[13] A LLAIRE , G. Y K ABER , S.M. 2008. Numerical Linear Algebra. Springer.
[14] A NDERS , G.J. 1990. Probability Concepts in Electric Power Systems. Wiley.
[15] A NDERSON , E., BAI , Z., B ISCHOF, C., D EMMEL , J., D ONGARRA , J., D U C ROZ , J., G REENBAUM , A., H AMMARLING S.,
M C K ENNEY, A., O STROUCHOV, S. Y S ORENSEN , D. 1992. LAPACK User’s Guide. SIAM.
[16] A NDERSON , E., BAI , Z., B ISCHOF, C., D EMMEL , J., D ONGARRA , J., D U C ROZ , J., G REENBAUM , A., H AMMARLING S.,
M C K ENNEY, A., O STROUCHOV, S. Y S ORENSEN , D. 1995. LAPACK User’s Guide. Second Edition. SIAM.
[17] A NTONIOU , A. Y L U , W-S. 2007. Practical Optimization. Algorithms and Engineering Applications. Springer.
[18] A RBEL , A. 1993. Exploring Interior-Point Linear Programming. Algorithms and Software. MIT Press.
[19] A RMIJO , L. 1966. Minimization of Functions Having Lipschitz Continuos First Partial Derivatives. Pacific J. Math. 16, pp.
1-3.
[20] A RRILLAGA , J. Y A RNOLD , C.P. 1990. Computer Analysis of Power Systems. Wiley.
[21] A SCHER , U.M. Y G REIF, C. 2011. A First Course in Numerical Methods. SIAM.
[22] ATKINSON , K. 1993. Elementary Numerical Analysis. Wiley.
[23] ATKINSON , K. Y H AN , W. 2009. Theoretical Numerical Analysis. A Functional Analysis Framework. Third Edition, Springer.
[24] ATKINSON , K., H AN , W. Y S TEWART, D.E. 2009. Numerical Solution of Ordinary Differential Equations. Wiley.
[25] ATKINSON , L.V., H ARLEY, P.J. Y H UDSON , J.D. 1989. Numerical Methods with Fortran 77. A Practical Introduction.
Addison-Wesley.
[26] ATTAWAY, S. 2012. MATLAB. A Practical Introduction to Programming and Problem Solving. Elsevier.
[27] ATTEIA , M. Y P RADEL , M. 1990. Éléments d’Analyse Numérique. Cepadues-Editions.
[28] AUZINGER , W. 2013. Iterative Solution of Large Linear Systems. TU Wien, Institute for Analysis and Scientific Computing.
http://www.asc.tuwien.ac.at/~winfried/teaching/101.403/SS2012/downloads/iter.pdf
[29] AVRIEL , M. 1976. Nonlinear Programming. Analysis and Methods. Prentice Hall.
[30] A XELSSON , O. 1996. Iterative Solution Methods. Cambridge.
[31] BARRETT, R., B ERRY, M., C HAN , T.F., D EMMEL , J., D ONATO , J.M., D ONGARRA , J., E IJKHOUT, V., P OZO , R., ROMINE ,
C. Y VAN DER VORST, H. 1994. Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods. Second
Edition. SIAM.
678 j Bibliografía

[32] BÁRSOV, A.S. 1988. Qué es la Programación Lineal. Editorial Mir.


[33] BARTELS , R.H. Y G OLUB , G.H. 1969. The Simplex Method of Linear Programming Using LU Decomposition. Communi-
cations of the ACM 12, pp. 266-268.
[34] BASHIROV, A.E. 2014. Mathematical Analysis Fundamentals. Elsevier.
[35] BAZARAA , M.S. Y JARVIS , J.J. 1977. Linear Programming and Network Flows. Wiley.
[36] BAZARAA , M.S., JARVIS , J.J. Y S HERALI , H.D. 1990. Linear Programming and Network Flows. Wiley.
[37] BAZARAA , M.S. Y S HETTY, C.M. 1979. Nonlinear Programming. Theory and Algorithms. Wiley.
[38] BAZARAA , M.S., S HERALY, H.D. Y S HETTY, C.M. 1994. Nonlinear Programming. Theory and Algorithms. Second Edition.
Wiley.
[39] B EALE , E.M.L. 1954. An Alternative Method for Linear Programming. Proceedings of the Cambridge Philosophical Society
50, pp. 513-523.
[40] B EASLEY, J.E. 1996. Advances in Linear and Integer Programming. Oxford University Press.
[41] B ECKMANN , M.J. 1968. Dynamic Programming of Economic Decisions. Springer.
[42] B ELLMAN , R. Y D REYFUS , S.E. 1962. Applied Dynamic Programming. Princeton University Press.
[43] B ELLMAN , R. 1970. Introduction to Matrix Analysis. SIAM.
[44] B ELLMAN , R. 1972. Dynamic Programming. Princeton University Press.
[45] B ELLMAN , R. 1985. Introducción al análisis matricial. Editorial Reverté.
[46] B ERGE , C. 1970. Graphes et Hypergraphes. Dunod.
[47] B EN -TAL , A. Y N EMIROVSKI , A. 2001. Lecture Notes on Modern Convex Optimization. Analysis, Algorithms, and Enginee-
ring Applications. SIAM.
[48] B ERGEN , A.R. 1986. Power Systems Analysis. Prentice Hall.
[49] B ERMAN , A. Y P LEMMONS , R.J. 1974. Codes and Iterative Methods for Best Least Squares Solutions of Linear Systems.
SIAM J. Numer. Anal. 11, pp. 145-154.
[50] B ERTSEKAS , D.P. 1982. Constrained Optimization and Lagrange Multiplier Methods. Academic Press.
[51] B ERTSEKAS , D.P. 1991. Linear Newtwork Optimization: Algorithms and Codes. The MIT Press.
[52] B ERTSEKAS , D.P. 1995. Nonlinear Programming. Athena Scientific.
[53] B ERTSEKAS , D.P. 2003. Convex Analysis and Optimization. Athena Scientific.
[54] B ERTSEKAS , D.P. 2009. Convex Optimization Theory. Athena Scientific.
[55] B ERTSEKAS , D.P. 2015. Convex Optimization Algorithms. Athena Scientific.
[56] B ERTSEKAS , D.P. Y T SITSIKLIS , J.N. 1989. Parallel and Distributed Computation. Numerical Methods. Prentice Hall.
[57] B ERTSIMAS , D.P. Y T SITSIKLIS , J.N. 1997. Introduction to Linear Optimization. Athena Scientific.
[58] B EST, M.J. Y R ITTER , K. 1985. Linear Programming. Active Set Analysis and Computer Programms. Prentice Hall.
[59] B HATTI , M.A. 2000. Practical Optimization Methods. Springer.
[60] B IEGLER , L.T. 2010. Nonlinear Programming. Concepts, Algorithms, and Applications to Chemical Processes. SIAM.
V 1990. Least Squares Methods. En Handbook of Numerical Analysis. Volume 1: Finite Difference Methods (Part
[61] B JÖRK , A.
1); Solution of Equations in Rn (Part 1). Ciarlet, P.G. y Lions, J.L. eds. North-Holland.
V 1996. Numerical Methods for Least Squares Problems. SIAM.
[62] B JÖRK , A.
V 2015. Numerical Methods in Matrix Computations. Springer.
[63] B JÖRK , A.
V Y E LFVING , T. 1979. Accelerated Projection Methods for Computing Psudoinverse Solutions of Systems of Linear
[64] B JÖRK , A
Equations. BIT 19, pp. 145-163.
[65] B LACKFORD , L.S., C HOI , J., C LEARY, A., D’A ZEVEDO , E., D EMMEL , J., D HILLON , I., D ONGARRA , J., H AMMARLIG ,
S., H ENRY, G., P ETITE , A., S TANLEY, K., WALKER , D. Y W HALEY, R.C. 1997. ScaLAPACK Users’ Guide. SIAM.
[66] B LANCHARD , P., D EVANEY, R.L. Y H ALL , G.R. 1999. Ecuaciones diferenciales. Thomson.
[67] B LAND , R.G. 1977. New Finite Pivoting Rules for the Simplex Method. Mathematics of Operations Research 2, pp. 103-107.
[68] B OGGS , P.T., B YRD , R.H. Y S CHNABEL , R.B. EDS . 1985. Numerical Optimization 1984. SIAM.
[69] B ORSE , G.J. 1997. Numerical Methods with MATLAB. PWS.
[70] B OT, R.I., G RAD , S.M. Y WANKA , G. 2009. Duality in Vector Optimization. Springer.
[71] B OYCE , W.E. Y D I P RIMA , R.C. 2009. Elementary Differential Equations and Boundary Value Problems. Ninth Edition.
Wiley.
[72] B OYD , S. Y VANDENBERGHE , L. 2004. Convex Optimization. Cambridge.
Bibliografía j 679

[73] B ONNANS , J.F., G ILBERT, J.C., L EMARÉCHAL , C. Y S AGASTIZÁBAL , C.A. 2006. Numerical Optimization. Theoretical
and Practical Aspects. Second Edition. Springer.
[74] B RADLEY, G.H., B ROWN , G.G. Y G RAVES , G.W. 1977. Design and Implementation of Large Scale Transshipment Algo-
rithms. Management Science 24, pp. 1-34.
[75] B RAINERD , W.S., G OLDBERG , C.H. Y A DAMS , J.C. 1990. Programmer’s Guide to Fortran 90. McGraw-Hill.
[76] B RAINERD , W.S., G OLDBERG , C.H. Y A DAMS , J.C. 1996. Programmer’s Guide to Fortran 90. Springer.
[77] B RAESS , D. 2007. Finite Elements. Theory, Fast Solvers, and Applications in Elasticity Theory. Cambridge.
[78] B RANDIMARTE , P. 2006. Numerical Methods in Finance and Economics. A MATLAB-Based Introduction. Wiley.
[79] B RENNER , S.C. Y S COTT, L.R. 2008. The Mathematical Theory of Finite Element Methods. Springer.
[80] B RIGGS , W.L. Y H ENSON , V.E. 1995. The DFT. An owner’s manual for the Discrete Fourier Transform. SIAM.
[81] B RIGHAM , E.O. 1988. The Fast Fourier Transform and its Applications. Prentice Hall.
[82] B ROOKE , A., K ENDRICK , D. Y M EERAUS , A. 1988. GAMS. A User’s Guide. The Scientific Press.
[83] B ROWN , H.E. 1975. Solution of Large Networks by Matrix Methods. Wiley.
[84] B ROYDEN , C.G. 1965. A Class of Methods for Solving Nonlinear Simultaneous Equations. Mathematics of Computation 19,
pp. 577-593.
[85] B UNCH , J.R. Y K AUFMAN , L. 1977. Some Stable Methods for Calculating Inertia and Solving Symmetric Linear Systems.
Mathematics of Computation 31, pp. 163-179.
[86] B UNCH , J.R. Y PARLETT, B.N. 1971. Direct Methods for Solving Symmetric Indefinite Systems of Linear Equations. SIAM
J. Numer. Anal. 8, pp.639-655.
[87] B UNCH , J.R. Y ROSE , D.J. EDS . 1976. Sparse Matrix Computations. Academic Press.
[88] B UNCH , J.R., K AUFMAN , L. Y PARLETT, B.N. 1976. Decomposition of a Symetric Matrix. Numerische Mathematik 27, pp.
95-109.
[89] B UNCH , J.R. 1971. Analysis of the Diagonal Pivoting Method. SIAM J. Numer. Anal. 8, pp. 656-680.
[90] B UNCH , J.R. 1974. Partial Pivoting Strategies for Symmetric Matrices. SIAM J. Numer. Anal. 11, pp. 521-528.
[91] B URDEN , R.L. Y FAIRES , J.D. 1985. Análisis numérico. Grupo Editorial Iberoamérica.
[92] B URDEN , R.L. Y FAIRES , J.D. 2011. Numerical Analysis. Ninth Edition. Brooks/Cole.
[93] B UTCHER , J.C. 2008. Ordinary Differential Equations. Wiley.
[94] B UTT, R. 2010. Introduction to Numerical Analysis using MATLAB. Jones and Barlett.
[95] B UZZI -F ERRARIS , G. 1993. Scientific C++. Building Numerical Libraries the Object-Oriented Way. Addison-Wesley.
[96] B YRD , R.H., G ILBERT, J.C. Y N OCEDAL , J. 1996. A Trust Region Method Based on Interior Point Techniques for Nonlinear
Programming. INRIA.
[97] C AJORI , F. 1991. A History of Mathematics. Fifth Edition. Chelsea Publishing Company.
[98] C ANUTO , C. Y TABACCO , A. 2015. Mathematical Analysis Vols I y II. Second Edition. Springer.
[99] C ARREIRA -P ERPIÑAN , M.A. 2016. Lecture Notes on Optimization-EECS260. University of California Merced, Electrical
Engineering and Computer Science Dpt.
[100] C HAITIN -C HATELIN , F. Y F RAYSSÉ , V. 1996. Lectures on Finite Precision Computations. SIAM.
[101] C HAMBERLAND , L. 1995. Fortran 90. A Reference Guide. Prentice Hall.
[102] C HAN , T.F. 1982. Algorithm 581: An Improved Algorithm for Computing the Singular Value Decomposition. ACM Trans. on
Mathematical Software 8, pp. 84-88.
[103] C HAN , T.F. 1982. An Improved Algorithm for Computing the Singular Value Decomposition. ACM Trans. on Mathematical
Software 8, pp. 72-83.
[104] C HAPRA , S.C. 2012. Applied Numerical Methods with MATLAB for Engineers and Scientists. McGraw-Hill.
[105] C HAPRA , S.C. Y C ANALE , R.P. 2002. Numerical Metthods for Engineers with Applications and Programming Applications.
Fourth Edition. McGraw-Hill.
[106] C HENEY, W. Y K INCAID , D. 1985. Numerical Mathematics and Computing. Brooks/Cole.
[107] C HIVERS , I. Y S LEIGHTHOLME , J. 1995. Introducing Fortran 90. Springer.
[108] C HONG , E.K.P. Y Ż AK , S.H. 2001. An Introduction to Optimization. Second Edition. Wiley.
[109] C HU , E., G EORGE , A., L IU , J, Y N G , E. 1984. SPARSPAK: Waterloo Sparse Matrix Package. User’s Guide for SPARSPAK-A.
Research Report CS-84-36, Department of Computer Science, University of Waterloo, Waterloo, Ontario, Canadá.
[110] C HVÁTAL , V. 1983. Linear Programming. W.H. Freeman and Company.
680 j Bibliografía

[111] C IARLET, P.G. Y L IONS , J.L. EDS . 1990. Handbook of Numerical Analysis. Volume 1: Finite Difference Methods (Part 1);
Solution of Equations in Rn (Part 1). North-Holland.
[112] C IARLET, P.G. 1988. Introduction à L’Analyse Numérique Matricielle et à L’Optimisation. Masson, S.A.
[113] C IARLET, P.G. 1989. Introduction to Numerical Linear Algebra and Optimisation. Cambridge.
[114] C IARLET, P.G. 2002. The Finite Element Method for Elliptic Problems. SIAM.
[115] C IRIANI , T.A. Y L EACHMAN , R.C. 1993. Optimization in Industry. Mathematical Programming and Modeling Techniques in
Practice. Wiley.
[116] C LINE , A.K., M OLER , C.B., S TEWART, G.W. Y W ILKINSON , J.H. 1979. An Estimate for the Condition Number of a Matrix.
SIAM J. Numer. Anal. 16, pp. 368-375.
[117] C ODDINGTON , E.A. Y C ARLSON , R. 1997. Linear Ordinary Differential Equations. SIAM.
[118] C OLEMAN , T.F. Y L I , Y. EDS . 1990. Large-Scale Numerical Optimization. SIAM.
[119] C OLEMAN , T.F. Y VAN L OAN , C. 1988. Handbook for Matrix Computations. SIAM.
[120] C OLEMAN , T.F., E DENBRANDT, A. Y G ILBERT, J.R. 1986. Predicing Fill for Sparse Orthogonal Factorization. Journal
ACM 33, pp. 517-532.
[121] C ONTE , S.D. Y DE B OOR , C. 1987. Elementary Numerical Analysis. An Algorithmic Approach. McGraw-Hill.
[122] C ONTRERAS , M. 2016. Análisis de Fourier. Universidad de Sevilla.
http://personal.us.es/contreras/
[123] C OOK , T.M. Y RUSSELL , R.A. 1977. Introduction to Management Science. Prentice Hall.
[124] C ORDENO , A., H UESO , J., M ARTÍNEZ . E. Y T ORREGOSA , J.R. 2006. Problemas resueltos de métodos numéricos. Thomson.
[125] C ORMEN , T.H., L EISERSON , C.E. Y R IVEST, R.L. 1992. Introduction to Algorithms. The MIT Press.
[126] C OWELL , W.R. ED . 1984. Sources and Development of Mathematical Software. Prentice Hall.
[127] C OURANT, R. 1943. Variational Methods for the Solutions of Problems of Equilibrium and Vibrations. Bulletin of the Ameri-
can Mathematical Society, Vol. 49, No. 1, pp. 1-23.
[128] C UTHILL , E. Y M C K EE , J. 1969. Reducing the bandwidth of Sparse Symmetric Matrices. Proceedings of the 24th Nationeal
Conference of the Association for Computing Machinery (ACM), pp. 157-172. Brandon Systems Press.
[129] DAHLQUIST, G. Y B JÖRK , A. V 1974. Numerical Methods. Prentice Hall.
[130] DACOROGNA , B. 2004. Introduction to the Calculus of Variations. Imperial College Press.
[131] DAKIN , R.J. 1965. A Tree-Search Algorithm for Mixed Integer Programming Problems. Computer Journal 8, pp. 250-255.
[132] DANAILA , I., J OLY, P., K ABER , S.M. Y P OSTEL , M. 2007. A, Introduction to Scientific Computing. Twelve Computational
Projects Solved with MATLAB. Springer.
[133] DANILINA , N.I., D UBROVSKAYA , N.S., K VASHA , O.P. Y S MIRNOV, G.L. 1988. Computational Mathematics. Mir Publis-
hers.
[134] DANTZIG , G.B. 1963. Linear Programming and Extensions. Princeton University Press.
[135] DANTZIG , G.B. 1987. Origins of the Simplex Method. Technical Report SOL 87-5. Systems Optimization Laboratory, Depart-
ment of Operations Research, Stanford University.
[136] DANTZIG , G.B. Y W OLFE , P H . 1960. Decomposition Principle for Linear Programming. Operations Research 8, pp. 101-111.
[137] DARST, R.B. 1991. Introduction to Linear Programming: Applications and Extensions. Marcel Dekker.
[138] DATTA , B.N. 1995. Numerical Linear Algebra and Applications. Brooks/Cole.
[139] DATTORRO , J. 2016. Convex Optimization Ž Euclidean Distance Geometry 2". M"ˇoo Publishing.
[140] DAVENPORT, J.H. S IRET, Y. Y T OURNIER , E. 1993. Computer Algebra. Systems and Algorithms for Algebraic Computation.
Academic Press.
[141] DAVIS , T.A. 2006. Direct Methods for Sparse Linear Systems. SIAM.
[142] DAVIS , P.J. Y R ABINOWITZ , P. 1984. Methods of Numerical Integration. Second Edition. Academic Press.
[143] DAVIS , T.A. Y S IGMAN , K. 2005. MATLAB Primer. Seventh Edition. Chapman and Hall/CRC.
[144] DE LA F UENTE , J.L. Y L UMBRERAS , J. 1987. A New Implementation of an Optimal Power Flow System Based on a General
Purpose Nonlinear Programming Program. Proc. IEEE PICA, pp. 422-428.
[145] DE LA F UENTE , J.L. 1986. Programación en redes no lineales. El problema de redes eléctricas. Actas Optimización de Flujos
en Redes’86.
[146] DE LA F UENTE , J.L. 1987. Programación no lineal: Aplicaciones en análisis, gestión y planificación de sistemas eléctricos.
Actas I Seminario Internacional de Investigación Operativa-Programación Matemática’86. J.P. Vilaplana y L.F. Escudero eds.,
pp. 255-278.
Bibliografía j 681

[147] DE LA F UENTE , J.L. 1988. Application of Nonlinear Network Optimization Techniques to Large Scale Power Schedulling
Problems. TIMS/ORSA National Meeting.
[148] DE LA F UENTE , J.L. 1989. La programación matemática y la planificación de redes eléctricas. Actas Programación Matemá-
tica’89.
[149] DE LA F UENTE , J.L. 1998. Técnicas de cálculo para sistemas de ecuaciones, programación lineal y programación entera.
Segunda edición. Reverté.
[150] DE LA F UENTE , J.L. 2016. Matemáticas y algoritmos numéricos. Definiciones, notación y proposiciones esenciales para un
curso avanzado. Círculo Rojo.
[151] D EMMEL , J.W. 1997. Applied Numerical Linear Algebra. SIAM.
[152] D EMIDOVICH , B.P. Y M ARON , I.A. 1985. Cálculo Numérico Fundamental. Paraninfo.
[153] D ENNIS , J.E. Y S CHNABEL , R.B. 1983. Numerical Methods for Unconstrained Optimization and Nonlinear Equations. Pren-
tice Hall.
[154] D ENNIS , J.E. Y S CHNABEL , R.B. 1996. Numerical Methods for Unconstrained Optimization and Nonlinear Equations.
SIAM.
[155] D OMMEL , H.W. Y T INNEY, W.F. 1968. Optimal Power Flow Solutions. IEEE Trans. on Power Apparatus and Systems PAS-
87, pp. 1866-1876.
[156] D ONGARRA , J.J., B UNCH , J.R., M OLER , C.B. Y S TEWART, G.W. 1979. LINPACK Users’ Guide. SIAM.
[157] D ONGARRA , J.J., D UFF , I.S., S ORENSEN , D.C. Y VAN DER VORST, H.A. 1991. Solving Linear Systems on Vector and
Shared Memory Computers. SIAM.
[158] D ORFMAN , R., S AMUELSON , P. Y S OLOW, R. 1958. Linear Programming and Economic Analysis. McGraw-Hill.
[159] D UBIN , D. 2003. Numerical and Analytical Methods for Scientists ans Engineers Using Mathematica. Wiley.
[160] D UFF , I.S. 1981. MA32 - A Package for Solving Sparse Unsymmetric Systems Using the Frontal Method. AERE Harwell
Report AERE-R 10079. Computer Science & Systems Division, AERE Harwell.
[161] D UFF , I.S., E RISMAN , A.M. Y R EID , J.K. 1986. Direct Methods for Sparse Matrices. Oxford University Press.
[162] D UFF , I.S., G RIMES , G. Y L EWIS , J.G. 1989. Sparse Matrix Test Problems. ACM Trans. on Mathematical Software 15, pp.
1-14.
[163] D UFF , I.S. Y R EID , J.K. 1979. Some Design Features of a Sparse Matrix Code. ACM Trans. on Mathematical Software 5,
pp.18-35.
[164] D UFF , I.S. Y S TEWART, G.W. EDS . 1979. Sparse Matrix Proceedings 1978. SIAM.
[165] D UOANDIKOETXEA , J. 2007. 200 años de convergencia de las series de Fourier. La Gaceta de la RSME, Vol. 10, No. 3.
[166] E ISELT, H.A. Y S ANDBLOM , C.L. 2007. Linear Programming and its Applications. Springer.
[167] E ISENTAT, S.C., S CHULTZ , M.H. Y S HERMAN , A.H. 1981. Algorithms and Data Structures for Sparse Symmetric Gaussian
Elimination. SIAM J. Sci. and Statist. Comput. 2, pp. 225-237.
[168] E LDÉN , L., W ITTMEYER -KOCH , L. Y B RUUN N IELSEN , H. 2004. Introduction to Numerical Computation. Analysis and
MATLAB Illustrations. Studentlitteratur AB.
[169] E LGERD , O.I. 1983. Electric Energy Systems Theory: An Introduction. McGraw-Hill.
[170] E L -H AWARY, M.E. Y C HRISTENSEN , G.S. 1979. Optimal Economic Operation of Electric Power Systems. Academic Press.
[171] E LLIS , T.M.R., P HILIPS , I.R. Y L AHEY, T.M. 1994. Fortran 90 Programming. Addison-Wesley.
[172] E NGELN -M ÜLLGES , G. Y U HLIG , F. 1996. Numerical Algorithms with Fortran. Springer.
[173] E NGELN -M ÜLLGES , G. Y U HLIG , F. 1996. Numerical Algorithms with C. Springer.
[174] E PPERSON , J.F. 2013. An Introduction to Numerical Methods and Analysis. Second Edition. Wiley.
[175] E RISMAN , A.M., N EVES , K.W. Y DWARAKANATH , M.H. EDS . 1980. Electric Power Problems: The Mathematical Challen-
ge. SIAM.
[176] E VANS , L.C. 1997. Partial Differential Equations. American Mathematical Society.
[177] E VANS , J.R. Y M INIEKA , E. 1992. Optimization Algorithms for Network and Graphs. Marcel Dekker.
[178] FAIRES , J.D. Y B URDEN , R.L. 1993. Numerical Methods. PWS.
[179] FANG , S.C., P UTHENPURA , S. 1993. Linear Optimization and Extensions. Theory and Algorithms. Prentice Hall.
[180] FARIN , G. 1988. Curves and Surfaces for Computer Aided Geometric Design. Acaddemic Press.
[181] FARKAS , J. 1902. Theorie der Einfachen Ungleichungen. Journal für die Reine und Angewandte Mathematik 124, pp. 1-27.
[182] F ERRIS , M.C., M ANGASARIAN , O.L. Y W RIGHT, S.J. 2007. Linear Programming with MATLAB. SIAM.
[183] F IACCO , A.V. Y M C C ORMICK , G.P. 1968. Nonlinear Programming: Sequential Unconstrained Minimization Techniques.
Wiley.
682 j Bibliografía

[184] F IACCO , A.V. Y M C C ORMICK , G.P. 1990. Nonlinear Programming: Sequential Unconstrained Minimization Techniques.
SIAM.
[185] F ILBERT, F. 2009. Analyse numérique. Algorithme et étude mathématique Dunod.
[186] F LETCHER , R. 1987. Practical methods of optimization. Wiley.
[187] F LOWERS , B.H. 1995. An Introduction to Numerical Methods in C++. Clarendon Press.
[188] F ORD , L.R. Y F ULKERSON , D.R. 1962. Flows in Networks. Princeton University Press.
[189] F ORREST, J.H. Y T OMLIN , J.A. 1972. Updated Triangular Factors of the Basis to Maintain Sparsity in the Product Form
Simplex Method. Mathematical Programming 2, pp. 263-278.
[190] F ORSGREN , A., G ILL , P.E. Y W RIGHT, M.H. 2002. Interior Methods for Nonlinear Optimization. SIAM Review, Vol. 44,
No. 4, pp. 525-597.
[191] F ORSYTHE , G.E., M ALCOLM , M.A. Y M OLER , C.B. 1977. Computer Methods for Mathematical Computations. Prentice
Hall.
[192] F ORTIN , A. 2011. Analyse numérique pour ingénieurs. Presses internationales Polytechnique.
[193] F OURER , R., G AY, D.M. Y K ERNIGHAM , B.W. 1993. AMPL. A Modeling Language for Mathematical Programming. Boyd
and Fraser.
[194] F RANDSEN , P.E., J ONASSON , K., N IELSEN , H.B. Y T INGLEFF , O. 2004. Unconstrained Optimization. Technical University
of Denmark, Informatics.
[195] F REUND , R.M. 2009. Introduction to Semidefinite Programming (SDP). MIT Open Course Ware.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-251j-introduction-to-mathematical-programming-
fall-2009/readings/MIT6_251JF09_SDP.pdf
[196] G AL , T. 1979. Postoptimal Analysis, Parametric Programming, and Related Topics. McGraw-Hill.
[197] G ANDER , W. Y H R̆EBÍ C̆EK , J. 1993. Solving Problems in Scientific Computing Using Maple and MATLAB. Springer.
[198] G ANDER , W. Y H R̆EBÍ C̆EK , J. 1997. Solving Problems in Scientific Computing Using Maple and MATLAB. Third Edition.
Springer.
[199] G ANDER , W., G ANDER , M.J. Y K WOK , F. 2014. Scientific Computing. An Introduction using Maple and MATLAB. Springer.
[200] G ANDER , M.J. Y WANNER , G. 2012. From Euler, Ritz, and Galerkin to Modern Computing. SIAM Review, Vol. 54, No. 4.
SIAM.
[201] G ARBOW, B.S., B OYLE , J.M., D ONGARRA , J.J. Y M OLER , C.B. 1977. Matrix Eigensystem Routines-EISPACK Guide Ex-
tension. Springer.
[202] G ARCÍA , C.B. Y Z ANGWILL , W.I. 1981. Pathways to Solutions, Fixed Points, and Equilibria. Prentice Hall.
[203] G ARFINKEL , R.S. Y N EMHAUSER , G.L. 1972. Integer Programming. Wiley.
[204] G AUTSCHI , W. 2012. Numerical Analysis. Second Edition. Springer
[205] G ENTLE , J.E. 2007. Matrix Algebra. Springer
[206] G ENTLE , J.E. 2007. Matrix Algebra. Theory, Computations, and Applications in Statistics. Springer
[207] G EORGE , A. Y H EATH , M.T. 1980. Solution of Sparse Linear Least Squares Problems Using Givens Rotations. Linear Algebra
and its Applications 34, pp. 69-83.
[208] G EORGE , A. Y L IU , J.W. 1979. An Implementation of a Pseudoperipherial Node Finder. ACM Trans. on Mathematical
Software 5, pp. 284-295.
[209] G EORGE , A. Y L IU , J.W. 1979. The Design of a User Interface for a Sparse Matrix Package. ACM Trans. on Mathematical
Software 5, pp. 139-162.
[210] G EORGE , A. Y L IU , J.W. 1981. Computer Solution of Large Sparse Positive Definite Systems. Prentice Hall.
[211] G EORGE , A. Y N G , E. 1984. SPARSPAK: Waterloo Sparse Matrix Package. User’s Guide for SPARSPAKB. Research Report
CS-84-37, Department of Computer Science, University of Waterloo, Waterloo, Ontario, Canadá.
[212] G EORGE , A. Y N G , E. 1985. An Implementation of Gaussian Elimination with Partial Pivoting for Sparse Systems. SIAM J.
Sci. and Statist. Comput. 6, pp. 390-409.
[213] G EORGE , A. 1971. Computer Implementation of the Finite Element Method. Ph.D. Dissertation, Computer Science Department
Report STAN-CS-71208, Stanford University.
[214] G EORGE , A. 1980. An Automatic One-way Disecction Algorithm for Irregular Finite Element Problems. SIAM J. Numer.
Anal. 17, pp. 740-751.
[215] G ERALD , C.F. Y W HEATLEY, P.O. 1994. Applied Numerical Analysis. Addison-Wesley.
[216] G IBBS , N.E., P OOLE , W.G. Y S TOCKMEYER , P.K. 1976. An Algorithm for Reducing the Bandwidth and profile of a Sparse
Matrix. SIAM J. Numer. Anal. 13, pp. 236-250.
Bibliografía j 683

[217] G ILL , P.E. Y M URRAY, W. 1974. Numerical Methods for Constrained Optimization. Academic Press.
[218] G ILL , P.E., M URRAY, W. Y W RIGHT, M.H. 1981. Practical Optimization. Academic Press.
[219] G ILL , P.E., M URRAY, W. Y W RIGHT, M.H. 1991. Numerical Linear Algebra and Optimization. Volume 1. Addison-Wesley.
[220] G ILL , P.E., M URRAY, W., S AUNDERS , M.A. Y W RIGHT, M.H. 1986. Maintaining LU Factors of a General Sparse Matrix.
Technical Report SOL 86-8. Systems Optimization Laboratory, Department of Operations Research, Stanford University.
[221] G ILL , P.E., M URRAY, W., S AUNDERS , M.A., T OMLIN , J.A. Y W RIGHT, M.H. 1986. On Projected Newton Barrier Methods
for Linear Programming and an Equivalence to Karmarkar’s Projective Method. Technical Report SOL 85-11R, revision of
May 1986. Systems Optimization Laboratory, Department of Operations Research, Stanford University.
[222] G ILLETT, B.E. 1976. Introduction to Operations Research: A Computer Oriented Algorithmic Approach. McGraw-Hill.
[223] G OLDBERG , S. 1958. Introduction to Difference Equations. Wiley.
[224] G OLDFARB , D. Y T ODD , M.J. 1989. Linear Programming. En Handbooks in Operations Research and Management Science.
Volume 1: Optimization. Nemhauser, G.L., Rinnooy Kan, A.H.G. y Todd, M.J. eds. North-Holland.
[225] G OLDSTEIN , A.A. 1965. On Steepest Descent. SIAM J. Control 3, pp. 147-151.
[226] G OLOVINA , L.I. 1974. Algebra lineal y algunas de sus aplicaciones. Editorial Mir.
[227] G OLUB , G.H. Y M EURANT, G.A. 1983. Résolution Numérique des Grands Systèemes Linéaires. Editions Eyrolles.
[228] G OLUB , G.H. Y O’L EARY, D.P. 1989. Some History of the Conjugate Gradient and Lanczos Algorithms: 1948-1976. SIAM
Review 31, pp.50-102.
[229] G OLUB , G.H. Y O RTEGA , J.M. 1992. Scientific Computing and Differential Equations. An Introduction to Numerical Meth-
ods. Academic Press.
[230] G OLUB , G.H. Y R EINSCH , C. 1970. Singular Value Decomposition and Least Squares Solutions. Numerische Mathematik
14, pp. 403-20.
[231] G OLUB , G.H. Y VAN L OAN , C.F. 1983. Matrix Computations. The Johns Hopkins University Press.
[232] G OLUB , G.H. Y VAN L OAN , C.F. 1989. Matrix Computations. Second Edition. The Johns Hopkins University Press.
[233] G OLUB , G.H. Y VAN L OAN , C.F. 1996. Matrix Computations. Third Edition. The Johns Hopkins University Press.
[234] G OLUB , G.H. Y VAN L OAN , C.F. 2013. Matrix Computations. Fourth Edition. The Johns Hopkins University Press.
[235] G OMORY, R.E. 1960. An Algorithm for the Mixed Integer Problem. RAND Corporation paper RM-2597.
[236] G OMORY, R.E. 1963. An Algorithm for Integer Solutions to Linear Programs. Recent Advances in Mathematical Program-
ming. Graves, R. y Wolfe, Ph. eds. McGraw-Hill.
[237] G ONDRAN , M. Y M INOUX , M. 1979. Graphes et Algorithmes. Editions Eyrolles.
[238] G ONIN , R. Y M ONEY, A.H. 1989. Nonlinear Lp Estimation. Marcel Dekker.
[239] G OOSSENS , M., M ITTELBACH , F. Y S AMARIN , A. 1994. The LATEX Companion. Addison-Wesley.
[240] G OOSSENS , M., M ITTELBACH , F. Y S AMARIN , A. 2004. The LATEX Companion. Second Edition. Addison-Wesley.
[241] G OOSSENS , M., R AHTZ , S. Y M ITTELBACH , F. 1997. The LATEX Graphics Companion. Illustrating Documents with TEX and
PostScript. Addison-Wesley.
[242] G RAINGER , J.J. Y S TEVENSON J R ., W.D. 1994. Power Systems Analysis. McGraw-Hill.
[243] G RANÉ , A. Análisis de Componentes Principales. Departamento de Estadística, Universidad Carlos III de Madrid.
[244] G REENBAUM , A. 1997. Iterative Methods for Solving Linear Systema. SIAM.
[245] G REENBERG , H. 1971. Integer Programming. Academic Press.
[246] G RIFFITHS , D.F. Y H IGHAM , D.J. 2010. Numerical Methods for Ordinary Differential Equations. Initial Vaue Problems.
Springer.
[247] G RIGORIADIS , M.D. 1986. An Efficient Implementation of the Network Simplex Method. Mathematical Programming Study
26, pp. 83-111.
[248] G RIVA , I., NASH , S.G. Y S OFER , A. 2009. Linear and Nonlinear Optimization. SIAM.
[249] G RÖTSCHEL , M., L OVÁSZ , L. Y S CHRIJVER , A. 1988. Geometric Algorithms and Combinatorial Optimization. Springer.
[250] G UTKNECHT, M.H. 2008. Iterative Methods. ETH Zurich, Seminar for Applied MAthematics.
http://www.sam.math.ethz.ch/~mhg/unt/SWNLA/itmethSWNLA08.pdf
[251] H ÄFELE , W. Y K IRCHMAYER , L.K. EDS . 1981. Modeling of Large-Scale Energy Systems. Pergamon Press.
[252] H ABERMAN , R. 2013. Applied Partial Differential Equations with Fourier Series and Boundary Value Problems. Pearson.
[253] H AGER , W.W. 1984. Condition Estimates. SIAM J. Sci. and Statist. Comput. 5, pp. 311-316.
[254] H AGER , W.W. 1988. Applied Numerical Linear Algebra. Prentice Hall.
[255] H AHN , B. Y VALENTINE , D.T. 2007. Essential MATLAB for Engineers and Scientists. Third Edition. Elsevier.
684 j Bibliografía

[256] H EATH , M.T. 2002. Scientific Computing. An Introductory Survey. Second Edition. McGraw-Hill.
[257] H ALL , M. 1956. An Algorithm for Distinct Representatives. Amer. Math. Monthly 63, pp. 716-717.
[258] H ALMOS , P.R. 1974. Finite-Dimensional Vector Spaces. Springer.
[259] H AMMER , P.L., J OHNSON , E.L. Y KORTE , B.H. EDS . 1979. Discrete Optimization III. North-Holland.
[260] H ÄMMERLIN , G. Y H OFFMANN , K. H. 1991. Numerical Mathematics. Springer.
[261] H AMMING , R.W. 1986. Numerical Methods for Scientists and Engineers. Dover Publications.
[262] H ANSELMAN , D. Y L ITTLEFIELD , B. 1998. Mastering MATLAB 5. A Comprehensive Tutorial abd Reference. Prencite Hall.
[263] H ARMAN , T.L., DABNEY. J. Y R ICHERT, N. 2000. Advanced Enginerring Mathematics with MATLAB. Brooks/Cole.
[264] H ARWELL L ABORATORY 1987. HARWELL Subroutine Library: A Catalogue of Subroutines (1987). Computer Science and
Systems Division, AERE Harwell.
[265] H EATH , M.T. 2002. Scientific Computing. An Introductory Survey. Second Edition. McGraw-Hill.
[266] H ELLERMAN , E, Y R ARICK , D. 1971. Reinversion with the Preassigned Pivot Procedure. Mathematical Programming 1, pp.
195-216.
[267] H ELLERMAN , E, Y R ARICK , D. 1972. The Partitioned Preassigned Pivot Procedure (P4 ). En Sparse Matrices and their
Applications. Rose, D.J. y Willoughby, R.A. eds. Plenum Press.
[268] H ERDRIX , E.M.T. Y T ÓTH , B.G. 2010. Introduction to Nonlinear and Global Optimization. Springer.
[269] H ENRICI , P. 1982. Essentials of Numerical Analysis with Pocket Calculator Demonstrations. Wiley.
[270] H ÉRON , B., I SSARD -ROCH , F. Y P ICARD , C. 2005. Analyse numérique. Exercices et problèmes corrigés. Dunod.
[271] H ESTENES , M. 1980. Conjugate Direction Methods in Optimization. Springer.
[272] H IAI , F. Y P ETZ , D. 2014. Introduction to Matrix Analysis and Applications. Springer.
[273] H IGHAM , N.J. 1995. The Test Matrix Toolbox for MATLAB. Numerical Analysis Report No. 276. The University of Manches-
ter.
http://www.ma.man.ac.uk/MCMM.
[274] H IGHAM , N.J. 1996. Accuracy and Stability of Numerical Algorithms. SIAM.
[275] H IGHAM , N.J. 2002. Accuracy and Stability of Numerical Algorithms. Second Edition. SIAM.
[276] H IGHAM , N.J. 2002. The Matrix Computation Toolbox for MATLAB. Numerical Analysis Report No. 410. The University of
Manchester.
http://www.ma.man.ac.uk/MCMM.
[277] H IGHAM , D.J. Y H IGHAM , N.J. 2000. MATLAB Guide. SIAM.
[278] H IGHAM , D.J. Y H IGHAM , N.J. 2005. MATLAB Guide. Second Edition. SIAM.
[279] H ILDEBRAND , F.B. 1987. Introduction to Numerical Analysis. Dover Publications.
[280] H ILLIER , F.S. Y L IEBERMAN , G.J. 1974. Introduction to Operations Research. Holden-Day.
[281] H ILLIER , F.S. Y L IEBERMAN , G.J. 1995. Introduction to Mathematical Programming. McGraw-Hill.
[282] H ILLIER , F.S. Y L IEBERMAN , G.J. 2010. Introducción a la Investigación de Operaciones. McGraw-Hill.
[283] H IMMELBLAU , D.M. ED . 1973. Decomposition of Large-Scale Problems. North-Holland.
[284] H OCKNEY, R.W. 1996. The Science of Computer Benchmarking. SIAM.
[285] H OFFMAN , J.D. 2001. Numerical Methods for Engineers and Scientists. CRC Press.
[286] H OLMES , M.H. 2007. Introduction to Numerical Methods in Differential Equations. Springer.
[287] H OPCROFT, J.E. Y K ENNEDY, K.W. C HAIRS 1989. Computer Science. Achievements and Opportunities. SIAM.
[288] H ORN , R.A. Y J OHNSON , C.R. 1985. Matrix Analysis. Cambridge.
[289] H OUSEHOLDER , A.S. 1975. The Theory of Matrices in Numerical Analysis. Dover Publications.
[290] H U , T.C. 1970. Integer Programming and Network Flows. Addison-Wesley.
[291] H UNT, B.R., L IPSMAN , R.L. Y ROSENBERG , J.M. 2006. A Guide to MATLAB for Beginners and Experienced Users. Second
Edition. Cambridge.
[292] H URLBERT, G. 2010. Linear Optimization. The Simplex Workbook. Springer.
[293] H WANG , K. Y B RIGGS , F.A. 1985. Computer Architecture and Parallel Processing. McGraw-Hill.
[294] I GNIZIO , J.P. Y C AVALIER , T.M. 1994. Linear Programming. Prentice Hall.
[295] I LI Ć , M.D. Y L IU , S. 1996. Hierarchical Power Systems Control. Its Value in a Changing Industry. Springer.
[296] I NFANGER , G. 1994. Planning under Uncertainty. Solving Large-Scale Stochastic Linear Programs. Boyd & fraser Publishing
Company.
Bibliografía j 685

[297] I SAACSON , E. Y K ELLER , H.B. 1994. Analysis of Numerical Methods. Dover Publications.
[298] JACOBS , D. ED . 1977. The State of the Art in Numerical Analysis. Academic Press.
[299] JAMES , G. 2011. Advanced Modern Engineering Mathematics. Fourth Edition. Pearson.
[300] JAMES , G. 2015. Modern Engineering Mathematics. Fifth Edition. Pearson.
[301] JAHN , J. 2007. Introduction to the Theory of Nonlinear Optimization. Springer.
[302] JARRE , F. Y S TOER , J. 2004. Optimierung. Springer.
[303] J ENNINGS , A. Y M C K EOWN , J.J. 1992. Matrix Computation. Second Edition. Wiley.
[304] K ARLOFF , H. 1991. Linear Programming. Birkhäuser.
[305] K ARMARKAR , N. 1984. A New Polynomial-Time Algorithm for Linear Programming. Combinatorics 4, pp. 373-395.
[306] K ARRIS , S.T. 2004. Numerical Analysis using MATLAB and Spreadsheets. Orchard Publications.
[307] K ARUSH , W. 1939. Minima of Functions of Several Variables with Inequalities as Side Constraints. M.Sc. Dissertation, De-
partment of Mathematics, University of Chicago.
[308] K AUFMANN , A. Y H ENRY-L ABORDÈRE , A. 1974. Méthodes et Modèles de la Recherche Opérationnelle. Dunod.
[309] K ELLEY, C.T. 1995. Iterative Methods for Linear and Nonlinear Equations. SIAM.
[310] K ELLEY, C.T. 1999. Iterative Methods for Optimization. SIAM.
[311] K ENNINGTON , J.L. Y H ELGASON , R.V. 1980. Algorithms for Network Programming. Wiley.
[312] K ERN , M. 2005. Éléments finis aspects mathématiques. INRIA.
http://mms2.ensmp.fr/ef_paris/formulation/transparents/f_MathMef.pdf
[313] K HARAB , A. Y G UENTHER , R.B. 2012. An Introduction to Numerical Methods. A MATLAB Approach. CRC Press.
[314] K INCAID , D.R. Y H AYES , L.J. EDS . 1990. Iterative Methods for Large Linear Systems. Academic Press.
[315] K IUSALAAS , J. 2010. Numerical Methods in Engineering with MATLAB. Second edition. Cambridge.
[316] K LEE , V. Y M INTY, G.J. 1972. How good is the Simplex Algorithm? En Inequalities III. Shisha, O. ed. Academic Press.
[317] K LINGMAN , D., NAPIER , A. Y S TUTZ , J. 1974. NETGEN-A Program for Generating Large-scale (Un)Capacitated Assig-
ment, Transportation and Minimum Cost Flow Network Problems. Management Science 20, pp. 814-821.
[318] K NIGHT, A. 2000. Basics of MATLAB and Beyond. Chapman and Hall/CRC.
[319] KOLMAN , B. Y B ECK , R.E. 1995. Elementary Linear Programming with Applications. Academic Press.
[320] KOLMOGOROV, A.M. Y F OMIN , S.V. 1972. Elementos de la teoría de funciones y del análisis funcional. Editorial Mir.
[321] KOLMOGOROV, A.M. Y F OMIN , S.V. 1975. Introductory Real Analysis. Dover Publications.
[322] KOPCHENOVA , N.V. Y M ARON , I.A. 1975. Computational Mathematics. Worked Examples and Problems with Elements of
Theory. Mir Publishers.
[323] KOPKA , H. Y DALY, P.W. 1995. A Guide to LATEX 2" . Document Preparation for Beginners and Advanced Users. Addison
Wesley.
[324] KOROVKIN , P.P. 1976. Desigualdades. Editorial Mir.
[325] K RANTZ , S.G. Y PARKS , H.R. 2003. The Implicit Function Theorem. History, Theory, and Applications. Birkhäuser.
[326] K RESSNER , D. 2005. Numerical Methods for General and Structured Eigenvalue Problems. Springer.
[327] K REYSZIG , E. 2011. Advanced Engineering Mathematics. Wiley.
[328] K UESTER , J.L. Y M IZE , J.H. 1973. Optimization Techniques with Fortran. McGraw-Hill.
[329] K UHN , H.W. Y T UCKER , A.W. 1951. Nonlinear Programming. En Proceedings of the Second Berkeley Symposium on
Mathematical Statistics an Probability. University of California Press.
[330] K ÜNZI , H.P. Y K RELLE , W. 1969. La Programmation Non Linéaire. Gauthier-Villars.
[331] L AMPORT, L. 1994. LATEX. A Document Preparation System. User’s Guide and Reference Manual. Addison-Wesley.
[332] L AND , A. Y P OWELL , S. 1973. Fortran Codes for Mathematical Programming. Wiley.
[333] L ANG , S. 1968. Analysis. Vols. I y II. Addison-Wesley.
[334] L ANG , S. 1983. Linear Algebra. Addison-Wesley.
[335] L ARSON , R.E. 1968. State Increment Dynamic Programming. American Elsevier.
[336] L ARSSON , S. Y T HOMÉE , V. 2009. Partial Differential Equations with Numerical Methods. Springer.
[337] L ASCAUX , P. Y T HÉODOR , R. 1986. Analyse Numérique Matricielle Appliquée a l’Art de l’Ingénieur. Vols. I y II. Masson,
S.A.
[338] L ASDON , L.S. 1970. Optimization Theory for Large Systems. Macmillan Publishing Company.
[339] L AWLER , E.L. 1976. Combinatorial Optimization: Networks and Matroids. Holt, Rinehart and Winston.
686 j Bibliografía

[340] L AWSON , C.L. Y H ANSON , R.J. 1974. Solving Least Squares Problems. Prentice Hall.
[341] L AWSON , C.L. Y H ANSON , R.J. 1995. Solving Least Squares Problems. SIAM.
[342] L AY, D.C. 2012. Álgebra lineal y sus aplicaciones. Cuarta edición. Pearson educación.
[343] L AY, D.C. 2015. Linear Algebra and its Applications. Fourth Edition. Addison-Wesley.
[344] L AY, D.C. Y L AY, S.R. 2015. Linear Algebra and its Applications. Fifth Edition. Pearson.
[345] L EIFMAN , L.J. ED . 1990. Functional Analysis, Optimization, and Mathematical Economics. Oxford University Press.
[346] L EBOUCQ , R.B., S ORENSEN , D.C. Y YANG , C. 1998, ARPACK Users’ Guide: Solution of Large-Scale Eigenvalue Problems
with Implicitly Restarted Arnoldi Methods. SIAM.
[347] L EMKE , C.E. 1954. The Dual Method of Solving the Linear Programming Problem. Naval Research Logistics Quarterly 1, pp.
36-47.
[348] L ERMAN , S.R. 1993. Problem Solving and Computation for Scientists and Engineers. An Introduction Using C. Prentice Hall.
[349] L EW, A. Y M AUCH , H. 2007. Dynamic Programming. A Computational Tool. Springer.
[350] L EYFFER , S. Y M AHAJAN , A. 2010. Software for Nonlinear Constrained Optimization. Argonne National Laboratory, Mat-
hematics and Computer Science Division.
[351] L EVENBERG , K. 1944. A Method for the Solution of Certain Problems in Least Squares. Quart. Appl. Math. 2, pp. 164-168.
[352] L IEBMAN , J., L ASDON , L., S CHRAGE , L. Y WAREN , A. 1986. Modeling and Optimization with GINO. The Scientific Press.
[353] L INDFIELD , G. Y P ENNY, J. 1995. Numerical Methods Using MATLAB. Ellis Horwood.
[354] L OEHR , N 2014. Advanced Linear Algebra. CRC Press.
[355] L ONGLEY, J.W. 1984. Least Squares Computations Using Orthogonalization Methods. Marcel Dekker.
[356] L UENBERGER , D.G. 1969. Optimization by Vector Space Methods. Wiley.
[357] L UENBERGER , D.G. 1984. Linear and Nonlinear Programming. Addison-Wesley.
[358] L UENBERGER , D.G. 1989. Programación lineal y no lineal. Addison-Wesley Iberoamericana.
[359] L UENBERGER , D.G. Y Y E , Y. 2016. Linear and Nonlinear Programming. Fourth Edition. Springer.
[360] L USTIG , I.J., M ARSTEN , R.E. Y S HANNO , D.F. 1992. On Implementing Mehrotra’s Predictor-Corrector Interior-Point Meth-
od for Linear Programming. SIAM J. Optimization, Vol. 2, No. 3, pp. 435-449.
[361] M ADDEN , N. 2012. Numerical Solution to Differential Equations using MATLAB: Part 2. Finite Element Methods. National
University of Ireland Galway, School of Mathematics, Statistics and Applied Mathematics.
http://www.maths.nuigalway.ie/~niall/teaching/Archive/1112/FiniteElement1DMatlabV02.pdf
[362] M ADDEN , N. 2012. Numerical Solution to Differential Equations using MATLAB: Part 3. A finite element implementation for
2D elliptic problem. National University of Ireland Galway, School of Mathematics, Statistics and Applied Mathematics.
http://www.maths.nuigalway.ie/~niall/teaching/Archive/1112/FiniteElement2DMatlabV01.pdf
[363] M ADSEN , K. Y N IELSEN , H.B. 2010. Introduction to Optimization and Data Fitting. Technical University of Denmark,
Informatics.
[364] M ADSEN , K., N IELSEN , H.B. Y T INGLEFF , O. 2004. Methods for Nonlinear Least Squares Problems. Technical University
of Denmark, Informatics.
[365] M ADSEN , K., N IELSEN , H.B. Y T INGLEFF , O. 2004. Optimization with Constraints. Technical University of Denmark,
Informatics.
[366] M ANDL , C. 1979. Applied Network Optimization. Academic Press.
[367] M ANASSAH , J.T. 2001. Elementary Mathematical and Computational Tools for Electrical and Computer Engineers Using
MATLAB. CRC Press.
[368] M ANGASARIAN , O.L. 1994. Nonlinear Programming. SIAM.
[369] M ANNEBACK , P. 1985. On Some Numerical Methods for Solving Large Sparse Linear Least Squares Problems. Ph.D. Disser-
tation, Facultés Iniversitaires Notre-Dame de la Paix, Namur, Bélgica.
[370] M ARCHUK , G.I. Y DYMNIKOV, V.P. 1985. Problems of Computational Mathematics and Mathematical Modelling. Mir Pu-
blishers.
[371] M ARCUS , M. Y M ING , H. 1964. A Survey of Matrix Theory and Matrix Inequalities. Allyn and Bacon.
[372] M ARTINEZ , W.L. Y M ARTÍNEZ , A.R. 2002. Computational Statistics Handbook with MATLAB. Chapman and Hall/CRC.
[373] M ARKOWITZ , H.M. 1957. The Elimination Form of the Inverse and its Application to Linear Programming. Management
Science 3, pp. 255-269.
[374] M ARQUARDT, D. 1963. An Algorithm for Least Squares Estimation of Nonlinear Parameters. SIAM J. Appl. Math. 11, pp.
431-441.
Bibliografía j 687

[375] M ATHEWS , J.H. 1992. Numerical Methods for Mathematics, Science, and Engineering. Prentice Hall.
[376] M ATHEWS , J.H. Y F INK , K.D. 2000. Métodos numéricos con MATLAB. Prentice Hall.
[377] M C M AHON , D. Y T OPA , D.M. 2006. A Beginners’s Guide to Mathematica. Chapman and Hall/CRC.
[378] M C C ORMICK , G.P. 1983. Nonlinear Programming. Wiley.
[379] M EHROTRA , S. 1992. On the Implementation of a Primal-Dual Interior Point Method. SIAM J. Optimization, Vol. 2, No. 4,
pp. 575-601.
[380] M ESIROV, J.P. ED . 1991. Very Large Scale Computation in the 21st Century. SIAM.
[381] M ETCALF, M. Y R EID , J. 1990. Fortran 90 Explained. Oxford University Press.
[382] M ETCALF, M. Y R EID , J. 1996. Fortran 90/95 Explained. Oxford University Press.
[383] M EYER , C.D. 2000. Matrix Analysis and Applied Linear Algebra. SIAM.
[384] M EYER , Y. 1993. Wavelets. Algorithms and Applications. SIAM.
[385] M IERSEMANN , E. 2012. Partial Differential Equations. Lecture notes. Department of Mathematics, Leipzig University.
http://www.math.uni-leipzig.de/~miersemann/pdebook.pdf
[386] M INOUX , M. Y BARTNIK , G. 1986. Graphes, Algorithmes, Logiciels. Dunod.
[387] M INOUX , M. 1986. Mathematical Programming: Theory and Algorithms. Wiley.
[388] M OIN , P. 2010. Fundamentals of Engineering Numerical Analysis. Cambridge.
[389] M OLER , C.B. 2004. Numerical Computing with MATLAB. SIAM.
[390] M OLER , C.B., L ITTLE , J.N. Y BANGERT, S. 1987. PC-MATLAB User’s Guide. The MathWorks.
[391] M ORÉ , J.J. Y W RIGHT, S.J. 1993. Optimization Software Guide. SIAM.
[392] M ORGAN , S.S. 1997. A Comparison of Simplex Method Algorithms. University of Florida, Computer and Information Science
and Engineering Dept.
[393] M OTZ , L. Y W EAVER , J.H. 1993. The Story of Mathematics. Avon Books.
[394] M ORGANSTERN , R.E. 2014. Numerical Análisis I. Self Edition.
[395] M ORGANSTERN , R.E. 2014. Numerical Análisis II. Self Edition.
[396] M URTAGH , B.A. Y S AUNDERS , M.A. 1978. Large Scale Linearly Constrained Optimization. Mathematical Programming 14,
pp. 41-72.
[397] M URTAGH , B.A. Y S AUNDERS , M.A. 1982. A Projected Lagrangian Algorithm and its Implementation for Sparse Nonlinear
Constraints. Mathematical Programming Study 16, pp. 84-117.
[398] M URTAGH , B.A. Y S AUNDERS , M.A. 1987. MINOS 5.1 User’s Guide. Systems Optimization Laboratory, Department of
Operations Research, Stanford University.
[399] M URTY, K.G. 1983. Linear Programming. Wiley.
[400] M URTY, K.G. 1992. Network Programming. Prentice Hall.
[401] NAG 1992. C Library Manual. Numerical Algorithms Group, Mark 2, Oxford, England.
[402] NAG 1993. Fortran Library Manual. Numerical Algorithms Group, Mark 16, Oxford, England.
[403] NAGLE , R.K., S AFF , E.B. Y S NIDER , A.D. 2005. Ecuaciones diferenciales y problemas con valores en la frontera. Pearson.
[404] NAKAMURA , S. 1996. Numerical Analysis and Graphic Visualization with MATLAB. Prentice Hall PTR.
[405] NASH , S.G. Y S OFER , A. 1996. Linear and Nonlinear Programming. McGraw-Hill.
[406] N EMHAUSER , G.L. Y W OLSEY, L.A. 1988. Integer and Combinatorial Optimization. Wiley.
[407] N EMHAUSER , G.L. Y W OLSEY, L.A. 1989. Integer Programming. En Handbooks in Operations Research and Management
Science. Volume 1: Optimization. Nemhauser, G.L., Rinnooy Kan, A.H.G. y Todd, M.J. eds. North-Holland.
[408] N EMHAUSER , G.L., R INNOOY K AN , A.H.G. Y T ODD , M.J. EDS . 1989. Handbooks in Operations Research and Manage-
ment Science. Volume 1: Optimization. North-Holland.
[409] N ERING , E.D. Y T UCKER , A.W. 1993. Linear Programs and Related Problems. Academic Press.
[410] N ESTEROV, Y. Y N EMIROVSKII , A. 1994. Interior-Point Polynomial Algorithms in Convex Programming. SIAM.
[411] N IEDERREITER , H. 1992. Random Number Generation and Quasi-Monte Carlo Methods. SIAM.
[412] N OCEDAL , J. Y W RIGHT, S.J. 2006. Numerical Optimization. Springer.
[413] O LVER , P.J. 2014. Introduction to Partial Differential Equations. Springer.
[414] O LVER , P.J. Y S HAKIBAN , C. 2006. Applied Linear Algebra. Pearson.
[415] O’N EIL , P.V. 2010. Advanced Engineering mathematics. Brooks/Cole.
[416] O RCHARD -H AYS , W. 1968. Advanced Linear Programming Computing Techniques. McGraw-Hill.
688 j Bibliografía

[417] O RTEGA , J.M. Y R HEINBOLDT, W.C. 1970. Iterative Solution of Nonlinear Equations in Several Variables. Academic Press.
[418] O RTEGA , J.M. 1988. Introduction to Parallel and Vector Solution of Linear Systems. Plenum Press.
[419] PADBERG , M. 1995. Linear Programming and Extensions. Springer.
[420] PAI , M. A. 1986. Computer Techniques in Power System Analysis. McGraw-Hill.
[421] PAIGE , C.C. 1979. Computer Solution of Perturbation Analysis of Generalized Linear Least Squares Problems. Mathematics
of Computation 33, pp. 171-184.
[422] PAIGE , C.C. 1979. Fast Numerically Stable Computations for Generalized Linear Least Squares Problems. SIAM J. Numer.
Anal. 16, pp. 165-171.
[423] PANIK , M.J. 1996. Linear Programming: Mathematics, Theory and Algorithms. Kluver Academic Publishers.
[424] PANNELL , D.J. 1997. Introduction to Practical Linear Programming. Wiley.
[425] PARKER , R.G. Y R ARDIN , R.L. 1988. Discrete Optimization. Academic Press.
[426] PARTER , S.V. 1961. The Use of Linear Graphs in Gaussian Elimination. SIAM Review 3, pp. 119-130.
[427] PATEL , R.V., L AUB , A.J. Y VAN D OOREN , P.M. EDS . 1994. Numerical Linear Algebra Techniques for Systems and Control.
IEEE Press.
[428] P EDREGAL , P. 2004. Introduction to Optimization. Springer.
[429] P ETERSEN , K.B. Y P EDERSEN , M.S. 2012. The Matrix Cookbook.
http://matrixcookbook.com
[430] P EÑA S ÁNCHEZ DE R IVERA , D. 1986. Estadística. Modelos y métodos. 1. Fundamentos. Alianza Universidad Textos.
[431] P FAFFENBERGER , R.C. Y WALKER , D.A. 1976. Mathematical Programming for Economics and Business. The Iowa State
University Press.
[432] P HAN , D. 2010. Introduction au calcul des variations. EPFL.
[433] P HILLIPS , C. Y C ORNELIUS , B. 1986. Computational Numerical Methods. Ellis Horwood Limited.
[434] P HILLIPS , D.T., R AVINDRAN , A. Y S OLBERG , J. 1976. Operations Research: Principles and Practice. Wiley.
[435] P HILLIPS , G.M. Y TAYLOR , P.J. 1996. Theory and Applications of Numerical Anaylis. Second Edition. Academic Press.
[436] P IERRE , D.A. Y L OWE , M.J. 1975. Mathematical Programming Via Augmented Lagrangians. An Introduction with Computer
Programs. Addison-Wesley.
[437] P IERRE , D.A. 1986. Optimization Theory with Applications. Dover Publications.
[438] P IKE , R.W. 1986. Optimization for Engineering Systems. Van Nostrand Reinhold Company.
[439] P ISSANETZKY, S. 1984. Sparse Matrix Technology. Academic Press.
[440] P LATO , R. 2003. Concise Numerical Mathematics. American Mathematical Society.
[441] P LYBON , B.F. 1992. An Introduction to Applied Numerical Analysis. PWS-Kent Publishing Company.
[442] P OWELL , M.J.D. ED . 1982. Nonlinear Optimization. Academic Press.
[443] P RESS , W.H., F LANNERY, B.P., T EUKOLSKY, S.A. Y V ETTERLING , W.T. 1986. Numerical Recipes in Fortran. The Art of
Scientific Computing. Cambridge.
[444] P RESS , W.H., T EUKOLSKY, S.A., V ETTERLING , W.T. Y F LANNERY, B.P. 1992. Numerical Recipes in C. The Art of Scien-
tific Computing. Second Edition. Cambridge.
[445] P RESS , W.H., T EUKOLSKY, S.A., V ETTERLING , W.T. Y F LANNERY, B.P. 1996. Numerical Recipes in Fortran 90. The Art
of Parallel Scientific Computing. Cambridge.
[446] P RESS , W.H., T EUKOLSKY, S.A., V ETTERLING , W.T. Y F LANNERY, B.P. 2007. Numerical Recipes. The Art of Scientific
Computing. Third Edition. Cambridge.
[447] P YTLAK , R. 2009. Conjugate Gradient Algorithms in Nonconvex Optimization. Springer.
[448] Q UARTERONI , A., S ACCO , R. Y S ALERI , F. 2000. Numerical Mathematics. Springer.
[449] Q UARTERONI , A., S ALERI , F. Y G ERVASIO , P. 2010. Scientific Computing with MATLAB and Octave. Springer.
[450] R AO , S.S. 2002. Applied Numerical Methods for Engineers and Scientists. Prentice Hall.
[451] R AO , K.R., K IM , D.N. Y H WANG , J.J. 2010. Fast Fourier Transform: Algorithms and Applications. Springer.
[452] R AVINDRA , A., R AGSDELL , K.M. Y R EKLAITIS , G.V. 2006. Engineering Optimization. Methods and Applications. Second
Edition. Wiley.
[453] R EDFERN , D. Y C AMPBELL , C. 1998. The MATLAB 5 Handbook. Springer.
[454] R ECKTENWALD , G. 2000. Numerical Methods with MATLAB. Implementation Application. Prentice Hall.
[455] R EDWINE , C. 1995. Upgrading to Fortran 90. Springer.
[456] R EGISTER , A.H. 2007. A Guide to MATLAB Object Oriented Programming. Chapman and Hall/CRC.
Bibliografía j 689

[457] R EID , J.K. ED . 1971. Large Sparse Sets of Linear Equations. Academic Press.
[458] R EID , J.K. 1982. A Sparsity-Exploiting Variant of the Bartels-Golub Decomposition for Linear Programming Bases. Mathe-
matical Programming 24, pp. 55-69.
[459] R EKLAITIS , G.V., R AVINDRAN , A. Y R AGSDELL , K.M. 1983. Engineering Optimization. Methods and Applications. Wiley.
[460] R HEINBOLDT, W.C. 1988. Methods for Solving Systems of Nonlinear Equations. SIAM.
[461] R IAZA , R. Y Á LVAREZ , M. 1996. Cálculo infinitesimal. Vols. I y II. Sociedad de Amigos de la Escuela Técnica Superior de
Ingenieros Industriales de Madrid.
[462] R ÍBNIKOV, K. 1987. Historia de las matemáticas. Editorial Mir.
[463] R ICE , J.R. 1966. Experiments on Gram-Schmidt Orthogonalization. Mathematics of Computation 20, pp. 325-328.
[464] R ICE , J.R. 1983. Matrix Computations and Mathematical Software. McGraw-Hill.
[465] R ICE , J.R. 1993. Numerical Methods, Software, and Analysis. Academic Press.
[466] ROCKAFELLAR , R.T. 1970. Convex Analysis. Princeton University Press.
[467] ROOS , C. T ERLAKY, T. Y V IAL , J. 1997. Theory and Algorithms for Linear Optimization. An Interior Point Approach. Wiley.
[468] ROOS , C. T ERLAKY, T. Y V IAL , J. 2005. Interior Point Methods for Linear Optimization. Springer.
[469] ROSE , D.J. Y W ILLOUGHBY, R.A. EDS . 1972. Sparse Matrices and Their Applications. Plenum Press.
[470] ROSEN , J.B., M ANGASARIAN , O.L. Y R ITTER , K. EDS . 1970. Nonlinear Programming. Academic Press.
[471] RUTISHAUSER , H. 1990. Lectures on Numerical Mathematics. Birkhäuser.
[472] S AAD , Y. 1994. SPARSKIT: A Basic Tool Kit for Sparse Matrix Computations. Version 2. Computer Science Department,
University of Minnesota, Minneapolis, EE. UU.
[473] S AAD , Y. 1996. Iterative Methods for Sparse Linear Systems. PWS.
[474] S AIGAL , R. 1995. Linear Programming. A Modern Integrated Analysis. Kluver Academic Publishers.
[475] S ALKIN , H.M. 1975. Integer Programming. Addison-Wesley.
[476] S ALKIN , H.M. Y M ATHUR , K 1989. Introduction to Integer Programming. North-Holland.
[477] S ALKIN , H.M. Y S AHA , J. EDS . 1975. Studies in Linear Programming. North-Holland.
[478] S ARGENT, R.W.H. Y W ESTERBERG , A.W. 1964. Speed-up in Chemical Engineering Design. Trans. Inst. Chem. Eng. 42,
pp.190-197.
[479] S AUER , T. 2012. Numerical Analysis. Second Edition. Pearson.
[480] S AUER , T. 2013. Análisis numérico. Segunda edición. Pearson educación.
[481] S AUNDERS , M.A. 1976. A Fast Stable Implementation of the Simplex Method using Bartels-Golub Updating. En Sparse Matrix
Computations. Bunch, J.R. y Rose, D.J. eds. Academic Press.
[482] S AVILLE , D.J. Y W OOD , G.R. 1991. Statistical Methods: The Geometric Approach. Springer.
[483] S AYAS , F.J. 2015. A Gentle Introduction to the Finite Element Method.
[484] S CHATZMAN , M. 1991. Analyse numérique. Cours et exercices pour la licence. InterEditions.
[485] S CHENDEL , U. 1989. Sparse Matrices. Numerical Aspects with Applications to Scientists and Engineers. Ellis Horwood
Limited.
[486] S CHERER , C.R. 1977. Estimating Electric Power System Marginal Costs. North-Holland.
[487] S CHITTKOWSKI , K. ED . 1985. Computational Mathematical Programming. Springer.
[488] S CHITTKOWSKI , K. 1980. Nonlinear Programming Codes. Information, Tests, Performance. Lecture Notes in Economics and
Mathematical Systems, 183. Springer.
[489] S CHITTKOWSKI , K. 1981. Test Examples for Nonlineal Programming Codes. Lecture Notes in Economics and Mathematical
Systems, 187. Springer.
[490] S CHITTKOWSKI , K. 2009. Test Examples for Nonlinear Programming Codes. All Problems from the Hock-Schittkowski-
Collection. Department of Computer Science, University of Bayreuth.
[491] S CHRAGE , L. 1989. User’s Manual for Linear, Integer, and Quadratic Programming with LINDO. The Scientific Press.
[492] S CHRAGE , L. 1991. LINDO. An Optimization Modeling System. Boyd and Fraser Publishing Company.
[493] S CHRIJVER , A. 1986. Theory of Linear and Integer Programming. Wiley.
[494] S COTT, L.R. 2011. Numerical Analysis. Princeton University Press.
[495] S EDGEWICK , R. 1992. Algorithms in C++. Addison-Wesley.
[496] S EN , R. 2013. A First Course in Functional analysis. Theroy and Applications. Anthem Press.
[497] S ENIOR , T.B.A. 1986. Mathematical Methods in Electrical Engineering. Cambridge.
690 j Bibliografía

[498] S HAMPINE , L.F., G LADWELL , I. Y T HOMPSON , S. 2003. Solvin ODEs with MATLAB. Cambridge.
[499] S HAPIRO , J.F. 1979. Mathematical Programming. Structures and Algorithms. Wiley.
[500] S HEWCHUK , J.R. 1994. An Introduction to Conjugate Gradient Method without the Agonizing Pain. School Of Computer
Science, Carnegie Mellon University.
[501] S IDDALL , J.N. 1982. Optimal Engineering Design. Principles and Applications. Marcel Dekker.
[502] S IERKSMA G. 1996. Linear and Integer Programming: Theory and Practice. Marcel Dekker.
[503] S IMONNARD , M. 1972. Programmation Linéaire. Technique du Calcul Économique. Fondements. Dunod.
[504] S IMONNARD , M. 1973. Programmation Linéaire. Technique du Calcul Économique. Extensions. Dunod.
[505] S KORNIAKOV, L.A. 1988. Sistemas de Ecuaciones Lineales. Editorial Mir.
[506] S MITH , B.T., B OYLE , J.M., D ONGARRA , J.J., G ARBOW, B.S., I KEBE , Y., K LEMA , V.C. Y M OLER , C.B. 1976. Matrix
Eigensystem Routines-EISPACK Guide. Springer.
[507] S ÓBOL , I.M. 1983. Método de Montecarlo. Editorial Mir.
[508] S OLODÓVNIKOV, A.S. 1980. Sistemas de Desigualdades Lineales. Editorial Mir.
[509] S ORDET, J. 1970. La Programmation Linéaire Appliquée à l’Entreprise. Dunod.
[510] S ORENSEN , D.C. 2015. CAAM 454 Lecture Notes: Iterative Methods for Linear Systems. Rice University, Department of
Computational and Applied Mathematics
http://www.caam.rice.edu/~caam551/NOTES/Notes454.pdf
[511] S PEDICATO , E. ED . 1991. Computer Algorithms for Solving Linear Algebraic Equations. The State of the Art. Springer, NATO
Scientific Affairs.
[512] S TAGG , G.W. Y E L -A BIAD , A.H. 1968. Computer Methods in Power Systems Analysis. McGraw-Hill.
[513] S TAHEL , A. 2012. Numerical Methods.
[514] S TEVENSON , W. D. 1984. Elements of Power System Analysis. McGraw-Hill.
[515] S TEWART, G.W. 1973. Introduction to Matrix Computations. Academic Press.
[516] S TEWART, G.W. 1996. Afternotes on Numerical Analysis. SIAM.
[517] S TEWART, G.W. 1998. Matrix Computations. Vol 1: Basic Decompositions. SIAM.
[518] S TEWART, J. 2015. Calculus. Eighth Edition. Brooks/Cole.
[519] S TOER , J. Y B ULIRSCH , R. 1980. Introduction to Numerical Analysis. Springer.
[520] S TOTT, B. Y A LSAC , O. 1974. Fast Decoupled Load Flow. IEEE Trans. on Power Apparatus and Systems PAS-93, pp. 859-
869.
[521] S TRANG , G. 1976. Linear Algebra and its Applications. Academic Press.
[522] S TRANG , G. 1988. Linear Algebra and its Applications. Harcourt Brace Jovanovich.
[523] S TRAUSS , W.A. 2008. Partial Differential Equations. An Introduction. Second Edition. Wiley.
[524] S ÜLI , E. Y M AYERS , D. 2003. An Introduction to Numerical Analysis. Cambridge.
[525] S ULTAN , A. 1993. Linear Programming. An Introduction with Applications. Academic Press.
[526] S ÜLLI , E. 2012. Lecture Notes on Finite Element Methods for Partial Differential Equations. Mathematical Institute University
of Oxford.
http://people.maths.ox.ac.uk/suli/fem.pdf
[527] S UN , W. Y Y UAN , Y-X. 2006. Optimization Theory and Methods. Nonlinear Programming. Springer.
[528] TARJAN , R. 1972. Depth-First Search and Linear Graph Algorithms. SIAM J. Computing 1, pp. 146-160.
[529] T EWARSON , R.P. 1973. Sparse Matrices. Academic Press.
[530] T HOMAS , B.J. 1996. The Internet for Scientists and Engineers. Oxford University Press.
[531] T HOMAS , G.B. 2014. Thomas’ Calculus. Thirteenth Edition. Pearson.
[532] T INNEY, W.F. Y WALKER , J.W. 1967. Direct Solution of Sparse Network Equations by Optimally Ordered Triangular Facto-
rizations. Proceedings of the IEEE 55, pp.1801-1809.
[533] T ITS , A.L., WÄCHTE , A., BAKHTIARI , S., U RBAN , T.J. Y L AWRENCE , G.T. 2003. A Primal-Dual Interior-Point Method
for Nonlinear Programming with Strong and Local Convergence Properties. SIAM J. Optimizaton, Vol. 14, No. 1, pp. 173-199.
[534] T OMLIN , J.A. 1970. Branch-and-Bound Methods for Integer and Non-Convex Programming. En Integer and Nonlinear Pro-
gramming. Abadie, J. ed. North-Holland.
[535] T OMLIN , J.A. 1972. Pivoting for Size and Sparsity in Linear Programming. J. Inst. Maths. Applics. 10, pp. 289-295.
[536] T REFETHEN , L.N. Y BAU , D. 1997. Numerical Linear Algebra. SIAM.
Bibliografía j 691

[537] T REFETHEN , L.N. 2005. Who invented the great numerical algorithms? Oxford University Mathematical Institute, Oxford
University.
http://www.maths.ox.ac.uk/~trefethen
[538] T YRRELL ROCKAFELLAR , R. 1972. Convex Analysis. Princeton University Press.
[539] T YRRELL ROCKAFELLAR , R. Y W ETS , R.J-B. 1997. Variatonal Analysis. Springer.
[540] U EBERHUBER , C.W. 1995. Numerical Computation. Methods, Software, and Analysis. Vols I y II. Springer.
[541] VAN DE PANNE , C. 1976. Linear Programming and Related Techniques. North-Holland.
[542] VAN DER VORST, H.A. 2003. Iterative Krylov Methods for Large Linear Systems. Cambridge.
[543] VAN L OAN , C.F. 1997. Introduction to Scientific Computing. A Matrix-Vector Approach Using MATLAB. Prentice Hall.
[544] VANDERBEI , R.J. 2001. Linear Programming. Foundations and Extensions. Princeton University, Operations Research and
Financial Engineering Dept.
[545] VANDERBEI , R.J. 1999. LOQO: An Interior Point Code for Quadratic Programming. Journal on Optimization Methods and
Software, Vol. 11, pp. 451-484
[546] VARGA , R.S. 1962. Matrix Iterative Analysis. Prentice Hall.
[547] V ENKATARAMAN , P. 2002. Applied Optimization with MATLAB Programming. Wiley.
[548] V ILENKIN , N.YA . 1984. Método de Aproximaciones Sucesivas. Editorial Mir.
[549] V ILLANUEVA , I. 2016. Apuntes de Ampliación de Cálculo. Universidad Complutense de Madrid.
http://www.mat.ucm.es/~cruizb/Informatica-2/Apuntes-i/Otros-Grupos/AC-Fourier.pdf
[550] WÄCHTER , A. Y B IEGLER , L.T. 2006. On the Implementation of a Primal-Dual Interior Point Filter Line Search Algorithm
for Large-Scale Nonlinear Programming. Mathematical Programming 106, pp. 25-57.
[551] WALSH , G.R. 1975. Methods of Optimization. Wiley.
[552] WATKINS , D.S. 1991. Fundamentals of Matrix Computations. Wiley.
[553] WATKINS , D.S. 2002. Fundamentals of Matrix Computations. Second Edition. Wiley.
[554] WATKINS , D.S. 2007. The Matrix Eigenvalue Problem. GR and Krylov Subspace Methods. SIAM.
[555] W ELLIN , P., K AMIN , S. Y G AYLORD , R. 2005. An Introduction to programming with Mathematica. Cambridge.
[556] W ENTZEL , E.S. 1983. Operations Research. A Methodological Approach. Mir Publishers.
[557] W HEEDEN , R.L. Y Z YGMUND , A. 2015. Measure ans Integral. An Introduction to Real Analysis. Second Edition. CRC Press.
[558] W HITE , R.E. 1985. An Introduction to Finite Element Method with Applications to Nonlinear Problems. Wiley.
[559] W HITEHOUSE , G.E. Y W ECHSLER , B. 1976. Applied Operations Research: A Survey. Wiley.
[560] W ILKINSON , J.H. 1965. The Algebraic Eigenvalue Problem. Oxford University Press.
[561] W ILKINSON , J.H. 1994. Rounding Errors in Algebraic Processes. Dover Publications.
[562] W ILSON , D.I. 2015. Numerical Methods with MATLAB for Engineers. Auckland University of Technology.
[563] W ILSON , H.B., T URCOTTE , L.H. Y H ALPERN , D. 2003. Advanced Mathematics and Mechanics Applications Using
MATLAB. Third Edition. Chapman and Hall/CRC.
[564] W INSTON , W.L. 1994. Operations Research. Applications and Algorithms. Duxbury Press.
[565] W OLFE , M.A. 1978. Numerical Methods for Unconstrained Optimization. An Introduction. Van Nostrand Reinhold Company.
[566] W OLFE , P. 1961. A Duality Theorem for Non-Linear Programming. Quart. Appl. Math. 19, Nı 3.
[567] W OLFE , P. 1967. Methods of Nonlinear Programming. En Nonlinear Programming. Abadie J. ed. North-Holland.
[568] W ONNACOTT, T.H. Y W ONNACOTT, R.J. 1972. Introductory Statistics for Business and Economics. Wiley.
[569] W OOD , A.J. Y W OLLENBERG , B.F. 1984.cc Power Generation Operation and Control. Wiley.
[570] W RIGHT, M.H. 2004. The Interior-Point Revolution in Optimization: History, Recent Developments, and lasting Consequen-
ces. Bulletin of The American Mathematical Society, Vol. 42, No. 1, pp. 39-56.
[571] W RIGHT, M.H. 1991. Interior Methods for Constrained Optimization. ATT Bell Laboratories. Acta Numerica.
[572] W RIGHT, S.J. 1997. Primal-Dual Interior Point Methods. SIAM.
[573] YANG , W.Y., C AO , W., C HUNG , T.-S. Y M ORRIS , J. 2005. Applied Numerical Methods Using MATLAB. Wiley.
[574] YOUNG , D.M. Y G REGORY, R.T. 1988. A Survey of Numerical Mathematics. Vols. I y II. Dover Publications.
[575] Z IENKIEWICZ , O.C., TAYLOR , R.L. Y Z HU , J.Z. 2005. The Finite Element Method: Its Basis and Fundamentals. Second
Edition. Elsevier.
692 j Bibliografía
Índice de materias y autores

ˇ, base de numeración de un ordenador, 4 Gauss-Newton, para solución de problemas no lineales de


mínimos cuadrados, 228
A Gauss-Seidel, para solución de Ax D b iterativamente, 186
Aasen, método de 91 George y Heath, para la ortogonalización de una matriz
número de operaciones, 91 dispersa y resolución de mínimos cuadrados, 179
Abierto, conjunto o subconjunto, 521 GMRES de subespacios de Krylov para resolver Ax D b,
Adams, JC, 452 206
Adherencia, 521 con acondicionado previo, para resolver Ax D b, 208
de un conjunto, 521 Golub-Reinsch, para la descomposición numérica en valores
punto de, 521 singulares de una matriz cualquiera, 117
Adyacente, Gradientes conjugados, para solución de Ax D b, 200
nudo, Gradientes conjugados con acondicionado previo, para
de un digrafo, 175 solución de Ax D b, 205
de un grafo, 166
grado mínimo, para reducción del número de elementos de
solución, 315
relleno en una matriz dispersa, 169
Afínmente dependiente, independiente, 562
Gram-Schmidt clásico, para la ortonormalización de los
Álgebra, 3, 535
vectores columna de una matriz, 103
Teorema fundamental del Álgebra, 540
Gram-Schmidt modificado, para la ortonormalización de los
 -álgebra de Borel, 648
vectores columna de una matriz, 104
Algoritmo, 3, 513
Hall, para la búsqueda de un transversal completo de una
Algoritmo(s), ver también Método(s)
matriz dispersa, 176
y D Ax, producto de matriz A por vector x, 22
Halley, para resolver f .x/ D 0, 48
C D AB, producto dedos matrices A y B, 24
inverso de Cuthill-McKee, para reducir la envolvente de una
branch and bound, enumerativos, o de ramificación y
matriz dispersa simétrica, 173
acotación, 423–437
Illinois, para resolver f .x/ D 0, 49
Bisección, para la solución de f .x/ D 0, 32
Jacobi, para solución de Ax D b iterativamente, 184
Brent, 52
Broyden, cuasi Newton para solución de sistemas de Jacobi, variante de Newton-Raphson para sistemas de
ecuaciones no lineales, 220 ecuaciones no lineales, 220
Bunch y Kaufman, para la factorización LBLT de una Máxima pendiente, para solución de Ax D b, 197
matriz simétrica indefinida con pivotación, 91 Mersenne Twister, 658
eliminación de Gauss con pivotación parcial, para solución Muller, para resolver f .x/ D 0, 50
de Ax D b, 69 Newton-Raphson, para resolver f .x/ D 0, 41
Cholesky, para la factorización G T G de una matriz simétrica Newton-Raphson, para sistemas de ecuaciones no lineales,
definida positiva, 89 218
Cholesky, con pivotación, para la factorización G T G de una Optimización, 270
matriz simétrica semidefinida positiva, 91 sin condiciones, existencia de punto mínimo, 272
Crout, para la factorización LU1 de una matriz, 81 sin condiciones, métodos de dirección de descenso, 273
con pivotación parcial, 82 máxima pendiente, 275
Crout, para la factorización L1 U de una matriz, 83 Newton, 278
Cuthill-McKee, para reducción del ancho de banda de una máxima pendiente y Newton, 278
matriz dispersa simétrica, 171 Newton amortiguado y región de confianza, 281
selección nudo inicial, 172 Newton amortiguado, 282
Cuthill-McKee inverso, para reducción de la envolvente de región de confianza, 284
una matriz dispersa simétrica, 173 gradientes conjugados, 286
dual del simplex, 366 cuasi Newton, 290
factorización LDLT , de una matriz simétrica, 87 planos cortantes de Gomory, 422
694 j Índice de Materias y Autores

predictor-corrector para Programación Lineal, 380 Armijo, regla o criterio de, 275
programación entera, algoritmo general basado en Arnoldi, WE, 206
relajaciones sucesivas lineales, 426 Asignación de precio, en programación lineal, 325
punto fijo, para resolver f .x/ D 0, 36 Áurea, razón, 48
relajación SOR, para solución de Ax D b iterativamente, 195 Autovalor, o valor propio, 536
Símplex revisado, para programación lineal, 325
dual del Símplex, 361 B
en dos fases, 336 B, base o matriz básica de un programa lineal, 314
forma producto de la inversa de la base, 359 Banach, S. 523
gran M, para solución básica factible inicial en Símplex, espacio vectorial de, 523, 525
343 Banach, espacio vectorial de, 525, 523
para variables acotadas, 351 Barrera logarítmica, función, para programación lineal con
solución básica factible inicial, 335 puntos interiores, 377
variables artificiales, 335 Base, de un espacio vectorial, 517
solución de mKınx2Rn kAx bk2 mediante transformaciones canónica, 517
ortogonales de Householder, 110 Base, de un programa lineal, 314
solución de mKınx2Rn kAx bk2 mediante transformaciones Base, matriz de un programa lineal, 314
ortogonales de Givens, 115 Bashforth, F, 473
solución de mKınx2Rn kAx bk2 mediante transformaciones Básica, solución de un programa lineal, 314
ortogonales rápidas de Givens, 116 factible, 315
subespacios de Krylov para resolver Ax D b, 206 factible degenerada, 315
ramificación y acotamiento o branch and bound, 423 BBMI, programa, 428
Aliasing, fenómeno en señales, 635 Beale, E.M.L. 365
Almacenamiento, en ordenador de matrices dispersas, 157–158 Bernoulli, D. 653
por coordenadas, 157 Bernstein, S.N. 137
por filas/columnas, 157 polinomios de Bernstein, 137
por perfil o envolvente, 158 Bézier, P. 137
Amplitud de paso, 273 Bilineal, forma, 527
en optimización de funciones sin condiciones, 273 Bit, 4
en el método simplex, 324 Biyectiva, aplicación, 515
Análisis post-optimización, en programación lineal, 344 Black, F.S. 663
Análisis de sensibilidad, en programación lineal, 344–347 Bland, R.G. 334
Ancho de banda de una matriz, 158 Bland, regla para el ciclado en el método simplex, 334
simétrica, 158 Bola,
Aplicación, 514 abierta, en un espacio vectorial normado, 520
biyectiva, 515 cerrada, en un espacio vectorial normado, 520
dominio de definición, origen, 515 euclídea, 566
dominio de valores, 515 norma, 567
imagen, 515 Bolzano, B. 32
inyectiva, 515 Borel, F.E.J.E. 648
lineal, 524 Box, G.E.P. 659
núcleo, 524 Branch and bound, algoritmo enumerativo, o de ramificación y
permutaciones, 515 acotamiento, 423
suprayectiva, 515 Brent, R.P. 52
traspuesta, 524 Brown, R. 654
Árbol, de un digrafo, 166 Browniano, movimiento, 654
Árbol, de un grafo, 169 Broyden, C.G. 220
Árbol de búsqueda de soluciones en programación entera, 423 Broyden, método para solución de sistemas de ecuaciones no
poda, 426 lineales, 220
criterios de, 425 convergencia, 220
ver también algoritmos enumerativos, de ramificación y fórmula de, 220
acotamiento o branch and bound implementación práctica, 221
Arco(s) de un grafo, de un digrafo, 165, 174 Broyden, C, Fletcher, R, Goldfarb, D y Shanno, D, fórmula, 290
nudo origen, 165, 174 Bunch y Kaufman, método de, 91
nudo destino, 165, 174 número de operaciones, 91
Aristas de un grafo, ver Arcos de un grafo Bunch y Parlett, método de, 91
Aritmética en ordenador, 12 número de operaciones, 91
Índice de Materias y Autores j 695

Burgers, J.M. 508 Compresión de imágenes y vídeo, JPG, MP3, 636


Byte, 4 Condición,
de complementariedad de holguras, en programación lineal,
C 320
C, cuerpo de los números complejos, 513, 515 de Lipschitz, 547
Cabeza, de un arco, ver Nudo Destino número de, de una matriz, 75
Camino, Condicionamiento,
de un digrafo, 175 de un problema, 73
creciente, 176 de un sistema de ecuaciones lineales, 73
de un grafo, 166 Condiciones,
longitud, 166 de complementariedad de holguras, 320
nudo de partida, 166 de Karush-Kuhn-Tucker, de punto óptimo en PL y PNL, 320
nudo de llegada, 166 de un programa lineal, 296
Camino central, en puntos interiores, 376, 377, 378 necesarias y suficientes de primer y segundo orden de un
Campo escalar, 598 mínimo, 560
Campo vectorial, 598 Conexo,
Canónica, digrafo, 175
base de un espacio vectorial, 517 grafo, 166
Cantor, G.F.L.P. 513 Conjugada de Fenchel, 585
Cara, de un politopo, 565 Conjunto(s), 513
Carathéodory, C. 564 N, 513
Cartan, E.J. 603 Z, 513
Cauchy, A.L. 196, 522 R, 513
sucesión de, 522 C, 513
Cauchy, método de, 196 Q, 513
ver también método de máxima pendiente abierto, subconjunto de un espacio normado, 521
sucesión de, 522 entorno, 520
Cauchy-Schwarz, desigualdad de 527 adyacente,
Cayley, A. 540, 532 de un digrafo, 175
Chebyshev, P.L. 131 de un grafo, 166
nudos o puntos de, 131 afín, 562
Cholesky, A.L. 88 aplicación, función, transformación o mapeo entre conjuntos,
Cholesky, factorización, 88–92 513
con pivotación para matrices simétricas semidefinidas imagen, conjunto imagen, 514
positivas, 92 origen o dominio de definición, 514
existencia y unicidad, 89 dominio de valores, 514
número de operaciones, 89 inyectiva, 514
Ciclado, en programación lineal, 334 suprayectiva, 514
Ciclo, biyectiva, 514
en un digrafo, 166, cerrado, 521
en un grafo, 166 compacto, 522
Clenshaw, C.W. 133 complemento, de un subconjunto, 514
Coeficientes de coste, de programa lineal, 296 convexo, 307, 560, 561
Cola, de un arco, ver Nudo Origen punto extremo, 306
Combinaciones convexas, 561 cota superior mínima o supremo, 513
estrictamente, 561 cota inferior máxima o ínfimo, 513
Combinación lineal, de vectores, 517 elemento o miembro, 513
Compacto, subconjunto o conjunto, 522 elemento mínimo, 568
Complemento, de un subconjunto, 514 elemento máximo, 568
Completo, espacio vectorial, 522 elemento minimal, 568
Componentes principales, 641 estructura algebraica en conjuntos, 514
Compacto, subconjunto o conjunto, 522 grupo, 514
Complementariedad de holguras, en programación lineal, 320 anillo, 514
condición o condiciones, 320 cuerpo, 514
Complemento, de un subconjunto, 514 espacio vectorial, 514
Completo, espacio vectorial, 522 frontera o borde de, 521
Componentes principales, 641 interior de, 521
696 j Índice de Materias y Autores

intersección, 513 Curvas NURBS, forma, 139


numerable, 514 Cuthill-McKee,
sucesión de elementos, 514 algoritmo para la reducción del ancho de banda de una matriz
límite superior de la sucesión, 514 dispersa simétrica, 171
límite inferior de la sucesión, 514 selección nudo inicial, 172
unión, 513 inverso, algoritmo para la reducción de la envolvente de una
vacío, 513 matriz dispersa simétrica, 173
Cono, 308, 564
convexo, 564 D
dual, 568 Dantzig, G. 319
norma, 567 Davidon, W., Fletcher, R. y Powell, M., fórmula, 290
puntiagudo 567 de Boor, C. 135
verdadero o apropiado, 567 Definida positiva,
Continuidad, 547 forma cuadrática, 546
de Lipschitz, 547 matriz, 538
Convergencia, de una sucesión en espacio vectorial normado, Deflación, 53, 253
521 Degeneración y ciclado, en programación lineal, 334
Convergencia, orden, 38 Densidad de probabilidad, 648
cuadrática, 38 Dependencia lineal, vectores de espacio vectorial, 517
lineal, 38 Derivada de una función, 19 548
superlineal, 38 Derivada de Fréchet, 548
Convergencia, tasa o relación, 38 Derivada de Gâteaux, 548
Convergencia puntual, 552 Derivación, numérica de funciones, 442
Convergencia uniforme, 552 derivación y aproximación numérica, 442
Convexo, adelantada, 442
conjunto, 307 atrasada, 442
cono, 308 centrada, 442
Cooley, J.W. 149 extrapolación de Richardson, 445
Coordenadas, forma de almacenar matrices dispersas en un mediante polinomio de interpolación de Newton, 445
ordenador, 157 orden del error, 442
Coordenadas baricéntricas, 563 Descomposición, ver también Factorización,
Correlación, 642 o triangularización de Schur, 243, 542
coeficiente, matriz, 642 de Jordan, 542
Corte fraccionario de Gomory, 421 en valores singulares, 99, 544
Coste reducido, en programación lineal, vector de costes numérica, 98
reducidos, 321 espectral, 542
Cota Desigualdad,
inferior máxima, o ínfimo, 514 de Cauchy-Schwarz, 527
superior mínima, o supremo, 514 de Fenchel-Young, 586
Courant, R. 498 Desigualdades generalizadas, 567
Cramer, fórmulas, 72 Destino, nudo destino de un arco, 165, 174
Crank, J. 494 Diagonal dominante, matriz de, 538
Criterio o regla Diámetro, de un grafo, 166
de Armijo, 275 Dieta alimenticia, problema, 297
de Markowitz, 178 Diferenciabilidad, 548
de Weierstrass, 554 Diferencias finitas, método de Newton-Raphson,
Crout, P.D. 80 para ecuaciones no lineales de una variable, 44
Crout, método de, 80–83 para sistemas de ecuaciones no lineales, 218
versión LU1 , 80 Dígitos significativos, número de una máquina, 4
con pivotación, 82 Digrafo, ver también Grafo dirigido, 165, 174
número de operaciones, 83 acíclico, 166
versión L1 U , 83 conexo, 175
Cuadrática, forma, 546 de eliminación, 176
Cuadratura, integración, 447 Dimensión, de espacio vectorial, 517
Cuasi Newton, métodos para resolver sistemas de ecuaciones no Dirac, P.A.M. 615
lineales, 220 función delta de, 615
Broyden, 220 Dirección,
Índice de Materias y Autores j 697

de descenso, en métodos iterativos para solución de Ax D b, Ecuaciones diferenciales ordinarias con condiciones de contorno
195 o frontera, 477
de máxima pendiente, 196 integración, 477
direcciones conjugadas, 200 método del disparo, 477
relajación en una variable, 195 método de las diferencias finitas, 478
relajación SOR, 195 método de colocación, 481
de un politopo, 317 método de los elementos finitos, 484
extrema, 576 Ecuaciones en derivadas parciales, 489
Direcciones conjugadas, 200 parabólicas, resolución, 491
Dirichlet, P.G.L, 499, 606 por diferencias adelantadas, 491
Dispersas, matrices, 155 por diferencias adelantadas, 493
Distancia, método de Crank-Nicolson, 494
en espacio vectorial normado, 28, 519, 525 hiperbólicas, resolución, 495
entre dos nudos de un digrafo, 166 elípticas, resolución, 498
entre dos nudos de un grafo, 166, 28, 166 por diferencias finitas, 499
Divergencia, de un campo vectorial 602 por elementos finitos, 502
Dog leg, en optimización sin condiciones, 285 Ecuaciones en derivadas parciales no lineales, 508
Dominio Ecuaciones normales, 100, 252, 379
de definición, de una aplicación, 514 con matrices dispersas, 15
de valores, de una aplicación, 514 Elemento de un conjunto, 513
Dual, Elementos de relleno, fill-in, 161
dual del simplex, algoritmo, 366 Elemento minimal, 568
espacio vectorial, 524 Elemento mínimo, 568
programa, 361 Elemento máximo, 568
de uno lineal en forma estándar, 361 Elemento pivote en eliminación de Gauss, 63
Dualidad, en programación lineal, 361 ver también Pivote
algoritmo dual del Símplex, 366 Eliminación,
débil, 365 digrafo de, 176
interpretación económica, 364 e interpretación grafo-teórica de la eliminación de Gauss
en matrices dispersas de estructura no simétrica, 176
E grafo de, 166
e, exponente coma flotante, 4 e interpretación grafo-teórica de la eliminación de Gauss
Ecuación característica, de una matriz, 539 en matrices dispersas de estructura simétrica, 166
Ecuación de Laplace, 490 Eliminación de Gauss, 62–73
Ecuación del calor, 490 en matrices dispersas, 163
Ecuación de ondas, 490 de estructura simétrica, 163
Ecuación de Poisson, 498, 605, 490, 499, de estructura no simétrica, 176
Ecuación en derivadas parciales, 489 y teoría de grafos, 166, 176
parabólica, 491 matriz de transformación, 64
hiperbólica, 491 multiplicadores, 63
elíptica, 491 número de operaciones, 70–73
Ecuaciones diferenciales ordinarias, EDO, 459 pivotación, 68–70
integración, 460 parcial, 67
método de Euler, 461 total, 67
método de Heun, 463 y factorización LU , 79
método del punto medio, 465 Elipsoide(s), 566
método de Taylor, 465 degenerado, 566
métodos de Runge-Kutta, 465 Emisión de deuda, problema, 305
método de Ralston, 466 Endomorfismo, 524
métodos Runge-Kutta de paso variable, 468 Entorno, de un punto en un conjunto, 521
método Runge-Kutta-Fehlberg, 468 Enumerativo, branch and bound, algoritmo de ramificación y
métodos implícitos y problemas rígidos o stiff, 470 acotamiento, 423
método de Euler hacia atrás, 471 Envoltura afín, 562
métodos multipaso, 471 Envoltura cónica, 564
métodos predictor-corrector, 473 Envoltura convexa, 561
sistemas de ecuaciones diferenciales ordinarias, 474 Envolvente de una matriz, 158
ecuaciones diferenciales de orden superior, 475 simétrica, 158
698 j Índice de Materias y Autores

Epsilon de una máquina, precisión, 9 variedad lineal o subespacio afín, 564


Epigrafo de una función, 547 vectores linealmente independientes, 517
Error, de un orden dado en una derivada, 442 vectores linealmente dependientes, 517
Error, en algoritmos numéricos, Espectral, norma de una matriz, 536
hacia delante, 34 Espectro de una matriz, 240, 539
eliminación de Gauss, 78 Esperanza matemática, de variable aleatoria, 649
hacia atrás, 34 Esquema iterativo,
eliminación de Gauss, 78 de descenso para solución de Ax D b, 195
Errores numéricos, dirección, 195
de cancelación, 15 de Gauss-Seidel,
de la representación de un número en ordenador, 11 para solución de Ax D b, 186
absoluto, 11 de Jacobi,
relativo, 11 para solución de Ax D b, 185
de redondeo, 11 de relajación SOR,
en aproximación de la derivada, 19, 442 para solución de Ax D b, 195
Escalar(es), 515 de Richardson, 184
Espacio afín, o variedad lineal, 311, 564 de SSOR, para solución de Ax D b, 190
Espacio(s) vectorial(es), 515 Estimación del estado, de sistemas eléctricos, 224
Pn , 517 Estimador,
Rn , 517 de mínimos cuadrados, 225
`p , 525 de máxima verosimilitud, 225
Lp , 525 Estrictamente dominante, matriz, 186, 538
aplicación, función o transformación, 524 Estructura de niveles,
imagen y núcleo, 524 de un digrafo, 176
variedad lineal, 524 de un grafo general, 169
continua, 524 Estudio de cargas, 215
base, 517 Euclídeo, espacio vectorial, 528
base canónica o base estándar, 517 Euclides de Alejandría, 520
combinación lineal de vectores, 517 Euler, L. 143
completo, 522 fórmulas de, 142
de Lebesgue, 530 Euler-Maruyama, método, 662
de probabilidad, 648 European call option, 663
de Sobolev, 532 Excentricidad, de un nudo en un grafo, 166
dimensión, 517 Extrapolación de Richardson, para derivación numérica, 445
distancia en espacio vectorial, 28, 519
elementos o vectores, 515 F
elemento neutro o nulo, 515 Faceta, de un politopo, 565
familia libre, 517 Factores twiddle, 146, 619
funcional, elementos son funciones, 522 Factorización
generado o engendrado por un subconjunto, 517 de Cholesky para matrices simétricas definidas positivas,
parte generadora, 517 88–92
dual, 524 de Cholesky con pivotación para matrices simétricas
métrico, 28, 519, 525 semidefinidas positivas, 89
norma vectorial, 519 LBLT , matrices simétricas indefinidas, 91
norma euclídea, 520 Bunch y Kaufman, 91
norma infinito o norma del supremo, 520 Bunch y Parlett, 91
p de Hölder, 27, 520 LDLT , matrices simétricas, 87
normado, 519 LT LT , matrices simétricas indefinidas, 91
bola abierta, en un espacio vectorial normado, 520 Aasen, 91
bola cerrada, en un espacio vectorial normado, 520 Parlett y Reid, 91
completo, 522 LU , 79–85
de Banach, 525 condiciones de existencia, 80
de Hilbert, 528 métodos directos para su obtención, 80–85
euclídeo, 28, 528 unicidad, 80
prehilbertiano, 527 y eliminación de Gauss, 80
subespacio vectorial, 517 LU1 , 80
subespacios suplementarios, 517 método de Crout, 80
Índice de Materias y Autores j 699

L1 U , 83 Frobenius, F.G. 29
método de Crout, 83 norma de, 29, 535
matrices simétricas, 85–73 Friedrichs, K. 498
definidas positivas, Cholesky, 88–92 Frontera, o borde de un conjunto, 521
indefinidas, 91 Fubini, G. 597
LDLT , 87 Función, 514
semidefinidas positivas, 89 afín, 548
QR, 105–116 conjugada, 585
por transformaciones ortogonales de Householder, de barrera logarítmica, métodos para programación lineal,
107–112 377
por transformaciones ortogonales de Givens, 112 dual, 580, 580, 580, 582
por transformaciones ortogonales rápidas de Givens, 116 continua, 547
Familia libre, en espacio vectorial, 517 continua de Lipschitz, 547
Farkas, G, 573 convexa, 560
Farkas, lema, 573 matriz Hessiana de, 550
Fase I y II, del método simplex, 336 objetivo, de un programa lineal, 296
Fill-in, 161 subdiferenciable, 551
ver también Elementos de relleno vector gradiente de, 232
Fehlberg, E, 468 Funcional, función de funciones, 614
Fenchel, M.W. 561 function, o rutina de M ATLAB
desigualdad de Fenchel-Young, 586 Ax.m, 23
función conjugada de, 585 bidiag.m, 265
Fermat, P. 560 Bisec_0.m, 33
Filas/columnas, forma de almacenar matrices dispersas en un Brent.m, 52
ordenador, 157 Broyden_3.m, 220
Fletcher, R, 286 Burgers.m, 508
Flujo de cargas, ver estudios de cargas CGr.m, 203
Forma, Chebpol_clenshaw.m, 133
bilineal, 527, 546 Chebpol_int.m, 133
cuadrática, 194, 546 Chebypoly.m, 131
rango, 546 Chols_1.m, 89
signatura, 546 Chol_p.m, 91
hermítica, 527 Crank_Nicolson.m, 495
lineal, 524 Crout_1.m, 81
sesquilineal, 527 CroutP.m, 82
Forma simétrica de la dualidad, 363 CroutP1.m, 83
Forma estándar, de un programa lineal, 296 Croutl1u.m, 83
Formato, defl_1.m, 255
binario IEEE 64 bits, 8 Dogleg_UBC_yo.m, 284
binario IEEE 32 bits, 10 Diagpiv_1.m, 91
entero, 4 Dual_simplex.m, 366
coma flotante, o punto flotante, 4 expSeriesPlot.m, 17
Fórmula de Black y Scholes, 663 epsilon.m, 9
Fórmula de Broyden, 220 fpi.m, 36
Fórmula de Broyden, C, Fletcher, R, Goldfarb, D y Shanno, D, Galerkin_ef_1.m, 487
290 Gauss.m, 69
Fórmula de Davidon, W, Fletcher, R y Powell, M, 290 Gauss_Seidel_1.m, 187
Fórmula de Laguerre, 55 Gauss_Seidel_NEW.m, 187
Fórmula de Sherman-Morrison-Woodbury, 85, 221 Gershgorin.m, 244
Formulación débil, 608, 605, 606 Givens.m, 115
Formulación fuerte, 606 gmres_1.m, 208
Fórmulas de Cramer, 72 Gmres_1_precon.m, 208
Fourier, J.B.J. 142, 622 gmres_Netlib.m, 208
transformada discreta, 147 GN111.m, 228
transformada rápida, 149 Grad_Conjugados_unc.m, 286
Fréchet, M. 548 Grmsch_2.m, 104
Frecuencia de Nyquist, 635 Grmsch_3.m, 104
700 j Índice de Materias y Autores

HalleysMethod_log.m, 48 sparsesetup_J.m, 195


heatbd.m, 493 SSOR_1.m, 195
heatfd.m, 493 strass.m, 26
Horner.m, 3 Suma_de_serie_1.m, 20
ilp_bb_1.m, 427 Svdre.m, 117
InvLU_1.m, 83 svd_GolRein_1.m, 266
IterSimul.m, 256 svd_J.m, 266
IteracionQR.m, 257 VecMatC.m, 24
Iter_ref.m, 87 VecMatF.m, 24
ItInversa_2.m, 252 vpa(), 9
ItInvRayleigh_2.m, 253 wavefd.m, 498
It_QR_3.m, 258 wilkpoly.m, 21
Jacobi_NEW_1.m, 185
Jacobi_2.m, 185 G
jacobi_S_1.m, 195 Galerkin, B.G. 209, 484, 502, 605
jacrot.m, 246 Gap de dualidad, 320, 365, 376, 579, 580, 583, 584
Jac_Rot.m, 246 en condiciones de punto óptimo de Programación Lineal, 320
Jacobi_val_12_2.m, 249 Gâteaux, R.E. 548
lagrang_int.m, 125 Gauss, Carl Friedrich, 62, 187
Lanczos_1.m, 209 Gauss-Jordan, método de, 73
Levmar_99.m, 229 matriz de transformación, 73
Levmar__1.m, 229 número de operaciones, 73
LevenbergMarquardt.m, 231 Gauss-Newton, método de, 228
LUCrout.m, 81 convergencia, 228
LSQ_New_1.m, 231 Gauss-Seidel, método iterativo,
LSQ_New_diff.m, 231 para solución de Ax D b, 186
MatMatExte.m, 25 esquema iterativo, 187
MatMatInt.m, 24 matriz, 187
MatMatVec.m, 24 relación de recurrencia, 187
MatVecC.m, 23 variante de Newton-Raphson para solución de sistemas de
MatVecF.m, 23 ecuaciones no lineales, 218
Maxima_pendiente_unc.m, 275 George y Heath, método de transformaciones ortogonales en
Mincua_QR.m, 112 matrices dispersas, 179
Muller_2.m, 51 Gerschgorin, S.A. 244
Newt_Ls.m, 231 teorema de, 244, 543
Newton.m, 41 Gestión de un servicio hospitalario, problema, 419
Newton_amortiguado.m, 282 G T G, descomposición de Cholesky, 88
Newton_int_1.m, 129 Gibbs, J.W. 625, 627
Newton_compsite.m, 46 fenómeno de, 627
Newton_mp.m, 278 Givens, matriz de, 112
Newton_sec.m, 47 Givens, transformaciones de, 112
Newt_Rap.m, 218 y factorización QR, 112
Newton_unc_1.m, 278 y resolución numérica de mínimos cuadrados lineales, 112
Newtrp_df_1.m, 218 transformaciones rápidas de, 116
NRP_1_dif_1.m, 219 Golub, G.H. 265
PCGr.m, 205 Golub-Reinsch, método de, 98
PL_pd_simplex_1.m, 371 Gomory, R, 417
potencia.m, 248 Gomory,
Poisson.m, 502 algoritmo de los planos cortantes, 422
Poisson_FEM_1.m, 508 corte fraccionario, 420
ProgLineal_3.m, 325 Goursat, É. 621
ProgLineal_InP_MPS_sc.m, 380 Gradiente, vector gradiente de una función, 548
Qrdes_3.m, 110 Gradientes conjugados, método iterativo para solución de
quasi_newton_1.m, 290 Ax D b, 200
Steep.m, 197 con acondicionado previo, 205
SOR.m, 189 implementación práctica, 203
sor_1.m, 189 Grado, de un nudo de un grafo, 166
Índice de Materias y Autores j 701

de entrada de un nudo de un digrafo, 175 vector característico, 306, 311, 564


de salida de un nudo de un digrafo, 175 Hipografo de una función, 547
Grado mínimo, algoritmo para la reducción del número de Hölder, O. 27
elementos de relleno en una matriz dispersa, 169 normas p de Hölder, 27, 520
Gráfico de una función, 547 Homomorfismo, 524
Grafo, 165, 174 Horner, William George 2
árbol, 169, 166 Hotelling, H. 641
cociente, 169 Householder, matriz, 107
enraizado, 169 Householder, A.S. 107
maximal, 166 Householder, transformaciones, 107
partición, 169 factorización QR, 107–112
asociado a una matriz de estructura simétrica, 165 resolución numérica de mínimos cuadrados lineales, 107–112
conexo, 166
de eliminación, 166, 176 I
diámetro, 166 Illinois, algoritmo, 49
dirigido, 165, 174 Imagen,
estructura de niveles, 169 de una aplicación, 514
inconexo, 166 de una matriz, 534
numerado, 165, 174 subespacio, 524
partición, 169 Incidencia nudo-arco, matriz de, 166
teoría para eliminación de Gauss, 166, 176 Independencia lineal, vectores en espacio vectorial, 517
Gram, J.P. 102 Ínfimo, o cota inferior máxima, 514
Gram-Schmidt, método para la ortonormalización de los Integración, numérica de funciones, 447
vectores columna de una matriz, 102–105 integración de Riemann, 447
clásico, 103 integración de Lebesgue, 447
modificado, 104 fórmulas de Newton-Cotes, 448
número de operaciones, 103 fórmula compuesta del trapecio, 449
y solución del problema lineal de mínimos cuadrados, 103 fórmula compuesta de Simpson, 449
Green, G. 607 fórmulas abiertas y cerradas, 450
fórmula de Adams, 452
H método de Romberg, 452
h, parámetro para el cálculo de derivadas mediante diferencias cuadratura de Gauss-Legendre, 454
finitas, 19 cuadratura adaptativa, 457
Hadamard, J.S. 589 Integración de ecuaciones diferenciales ordinarias, EDO, 459
Hall, método de Euler, 461
algoritmo de, 176 método de Heun, 463
Halley, E. 46 método del punto medio, 465
Hamilton, W.R. 540 método de Taylor, 465
Hermítica, forma, 527 métodos de Runge-Kutta, 465
Hesse, L.O. 550 método de Ralston, 466
matriz hessiana, 550 métodos Runge-Kutta de paso variable, 468
Hessenberg, K.A. 538 método Runge-Kutta-Fehlberg, 468
matriz de, 538, 259 métodos implícitos y problemas rígidos o stiff, 470
Hesse, L.O. 550 método de Euler hacia atrás, 471
matriz hessiana, 550 métodos multipaso, 471
Hessiana, matriz de una función, 550 métodos predictor-corrector, 473
Hestenes, M.R. 200 sistemas de ecuaciones diferenciales ordinarias, 474
Heun, K. 463 ecuaciones diferenciales de orden superior, 475
Hijo, nudo de una relajación lineal, 428 Integración de ecuaciones diferenciales ordinarias con
Hilbert, D. 528 condiciones de contorno o frontera, 477
espacio vectorial, 528 método del disparo, 477
matriz de, 104 método de las diferencias finitas, 478
Hiperplano, variedad lineal, 311, 564 método de colocación, 481
separador, 572 método de los elementos finitos, 484
teorema de existencia, 571 Integral definida, 446, 530, 552
soporte, o de apoyo 565, 572 Integral doble, 597
teorema de existencia, 571 Integral de Cauchy, 621
702 j Índice de Materias y Autores

Integral de Fourier, 630 Krylov, A. 206


Integral de Itô, 661 subespacio de, 203, 206, 260, 540
Integral de Riemann, 447, 447, 530 Kuhn, H.W. 320
Integral de Lebesgue, 447, 447, 530 Kutta, M.W. 465
Integral en línea, 598, 599, 600
Interior, de un conjunto, 521 L
punto, 521 `p , espacio vectorial, 525
Interpolación, Lp , espacio vectorial, 525
polinómica, L, límite underflow de un ordenador, 4
de Chebyshev, 131 Lagrange, 124
de Lagrange, 124 multiplicadores, 320
de Legendre, 130 Laguerre, E. 55
de Newton, 127 Lanczos, C, 209
Interpolación de Hermite, polinómica por trozos, 134 Laplace, P.S. 498
Interpolación trigonométrica, 143 LBLT , factorización, 91
con la Transformada Rápida de Fourier, 150 LDLT , factorización, 87
Interpretación geométrica Lebesgue, H.L. 447, 530
de la factibilidad y de la búsqueda de óptimo de un programa integral de, 530
lineal, 306 espacio de, 530
de la factibilidad de un programa lineal con condiciones de Lemke, C.E. 365
desigualdad, 310 Lewy, H. 498
de la factibilidad de un programa lineal con condiciones de Levenberg-Marquardt, método de, 229–231
igualdad, 309 Libre, familia, en espacio vectorial, 517
sistemas lineales de ecuaciones, 60 LIFO, regla en algoritmos branch and bound, 428
en R2 , 60 Límite, de una sucesión, 525
en Rn , 61 Lineal, forma, 524
en Im.A/, 61 Linesearch, 273
Interpretación grafo-teórica de la eliminación de Gauss de Lipschitz, R.O.S. 547
matrices dispersas, condición de, 547
simétricas, 166 función continua, 547
no simétricas, 176 Llegada,
Intersección, de conjuntos, 513 de un arco de un digrafo, 175
Inyectiva, aplicación, 515 de un arco de un grafo, 166
Isométrico, operador, 528 Longitud, de un camino de un grafo, 166
Itô, K. 661 LT LT , factorización, 91
integral de, 661 LU , factorización, 79
LU 1 , factorización, 80
J L1 U , factorización, 83
Jacobi, C.G. 184
Jacobi, método iterativo M
para solución de Ax D b, 184–186 M grande, método para llegar a solución básica factible inicial en
esquema iterativo matricial, 185 Símplex, 343
matriz, 185 Mantisa, del sistema de numeración de un ordenador, 4
relación de recurrencia, 185 Markov, A.A. 657
variante de Newton-Raphson para solución de sistemas de Markowitz, H.M. 178
ecuaciones no lineales, 220 criterio, 178
Jacobiana, matriz, de una función vectorial, 218 Maruyama, G. 662
Jordan, M.E.C. 243 Matriz, 532
ancho de banda, 158
K matriz simétrica, 158
Karmarkar, N. 374 aumentada, 63
Karush, W. 320 B, o básica de un programa lineal, 314
Karush-Kuhn-Tucker, condiciones en programación lineal, 320 básica, de un programa lineal, 314
al-Khwarizmi, Muhammad Ibn Musa, 3 birreducible, 176
Kirchhoff, G.R. 216 congruente ortogonal, 542
Kolmogórof, A.N. 653 definida negativa, 538
Kronecker, L. 610 definida positiva, 88, 538
Índice de Materias y Autores j 703

de coeficientes de un sistemas de ecuaciones lineales, 57 ancho de banda, 158


de covarianzas, 227, 642 envolvente, 158
de diagonal dominante, 186, 538 singular, 534
de diagonal estrictamente dominante, 186, 538 triangular inferior unitaria, 64
de Fourier, 634 unitaria, 242, 537
de Gauss, 64 Matriz simétrica, 538
de Givens, 112 definida negativa, 538
de Hankel, 538 definida positiva, 538
de Hessenberg, 259, 538 indefinida, 538
de Hilbert, 104 semidefinida positiva, 538
de Householder, 107 semidefinida negativa, 538
de incidencia nudo-arco de un digrafo, 166 Matriz base, B, de un programa lineal, 314
de Jacobi, 185 Matriz no base, N , de un programa lineal, 314
de permutación, 99, 100, 539 Matriz compañera, de un polinomio, 239, 541, 540
de proyección, 99, 100, 539 Matriz diagonalizable por semejanza, 240, 542, 542
de proyección ortogonal, 99, 100, 539 Matriz de proyección, 99, 100, 539
de transformación de Gauss, 64 Matriz de proyección ortogonal, 99, 100, 539
de transformación de Gauss-Jordan, 73 Matriz pseudoinversa, 76, 99, 545
de Vandermonde, 124, 538 Máxima pendiente, método de 196
dispersa, 155, 176 Máxima verosimilitud, indicador, 225
almacenamiento en ordenador de matrices dispersas, Mehrotra, S, 378
157–158 Menores, números de una matriz, 546
por coordenadas, 157 Mersenne, M. 658
por filas/columnas, 157 Método, 658
por perfil o envolvente, 158 Método(s), ver también Algoritmo
operaciones algebraicas, 159 Aasen, 91
ecuación característica, 539 Brent, 52
en banda, 158 Broyden, para solución de sistemas de ecuaciones no
ancho de banda, 158 lineales, 220
matriz simétrica, 158 convergencia, 220
envolvente de, 158 implementación práctica, 221
espectro, 240, 539 Box-Müller, 659
estrictamente dominante, 186, 538 Bunch y Kaufman, 91
hermítica, 242, 537 Bunch y Parlett, 91
Hessiana, de una función, 550 Crout, 80
imagen, 534 versión LU 1 , 80–83
indefinida, 538 con pivotación parcial, 82
inversa generalizada Moore-Penrose, 99 versión L1 U , 83
Jacobiana, de una función vectorial, 218, 548 directos, para solución de sistemas lineales de ecuaciones,
N , o no básica de un programa lineal, 314 por medio de factorización, 79
no básica de un programa lineal, 314 Aasen, 91
normal, 242, 537 basados en transformaciones ortogonales,
núcleo, 534 Givens, 112
número de condición, 75, Householder, 107–112
matriz invertible, 75 rápidas de Givens, 116
matriz cualquiera, 75 Bunch y Kaufman, 91
ortogonal, 242, 537 Bunch y Parlett, 91
pseudoinversa, 76, 99, 545 Crout, 80
radio espectral, 240, 539 eliminación de Gauss, 62–73
rango, 534 Gauss-Jordan, 73
completo, 534 Gram-Schmidt, 102–105
reducible, 176 eliminación de Gauss, 62–73
regular, 534 con pivotación parcial, 68–70
semejante a otra, 240, 542 Método de Euler-Maruyama, 662
semidefinida negativa, 538 falsa posición, regula falsi, para solución de sistemas de
semidefinida positiva, 538 ecuaciones en una variable, 48
simétrica, 537 Gauss-Jordan, 73
704 j Índice de Materias y Autores

Gauss-Newton, método de, 228 variantes, 218


George y Heath, 179 diferencias finitas, 218
Golub-Reinsch, 98 Gauss-Seidel, 218
Gradientes conjugados, 200 Jacobi, 218
con acondicionado previo, 205 Newton modificado, 218
implementación práctica, 203 relajación SOR, 218
Gram-Schmidt, 102–105 Optimización, 270
clásico, 103 sin condiciones, existencia de punto mínimo, 272
modificado, 104 sin condiciones, métodos de dirección de descenso, 273
gran M, para solución básica factible inicial en el método máxima pendiente, 275
Símplex, 343 Newton, 278
Halley, para resolver f .x/ D 0, 48 máxima pendiente y Newton, 278
iterativos, Newton amortiguado y región de confianza, 281
de descenso para solución de Ax D b, 195 Newton amortiguado, 282
Gauss-Seidel, región de confianza, 284
en solución de Ax D b, 186 gradientes conjugados, 286
esquema iterativo, 187 cuasi Newton, 290
matriz, 187 Parlett y Reid, 91
relación de recurrencia, 187 Richardson, 184
variante de Newton-Raphson para solución de sistemas Símplex, 325
de ecuaciones no lineales, 220 factorización LU de la base, B, 359
Jacobi, fase I y II, 336
en solución de Ax D b, 184–186 forma producto de la inversa de la base, 359
esquema iterativo matricial, 185 para variables acotadas, 351
relación de recurrencia, 185 solución básica factible inicial, 336
variante de Newton-Raphson para solución de sistemas variables artificiales, 335
de ecuaciones no lineales, 220 secante, para solución de sistemas de ecuaciones no lineales
Jacobi y Gauss-Seidel, convergencia, 186 en una variable, 47
Relajación, SOR, Métodos de punto(s) interior(es), para Programación Lineal, 374
para solución de Ax D b, 189 Métodos de punto(s) interior(es), para Programación No Lineal,
esquema iterativo matricial, 189 408
matriz, 189 Métodos predictor-corrector, en métodos de punto interior, 378,
relación de recurrencia, 189 395
variante de Newton-Raphson para solución de sistemas Métrico, espacio vectorial, 525
de ecuaciones no lineales, 220 Mínimo global, 560
Relajación, SSOR, Mínimo local, 560
para solución de Ax D b, 195 Mínimo local estricto, 560
esquema iterativo matricial, 195 Mínimos cuadrados lineales, 95
relación de recurrencia, 195 comparación número de operaciones diversos métodos, 117
esquema iterativo matricial, 195 con matrices dispersas, 100
Richardson, 184 ecuaciones normales, 100
subespacios de Krylov para resolver Ax D b, 206 transformaciones ortogonales Givens de George y Heath,
Mersenne, M. 658 179
Muller, para resolver f .x/ D 0, 50 resolución numérica, 101–117
Newton-Raphson, para solución de ecuaciones no lineales en descomposición en valores singulares, 116
una variable, 40–47 Gram-Schmidt, 102–105
convergencia, 42 transformaciones de Givens, 112
variantes, 43–47 transformaciones de Householder, 107–112
de la secante, 47 transformaciones rápidas de Givens, 116
diferencias finitas, 44 sistemas incompatibles, ecuaciones normales, 100
Newton modificado, 45 sistemas indeterminados, 100
regula falsi, 48 Mínimos cuadrados no lineales, 223
y mecanismo de salvaguarda, 44 resolución numérica, métodos, 228
Newton-Raphson, para solución de sistemas de ecuaciones de Gauss-Newton, 228
no lineales, 218 convergencia, 228
convergencia, 218 de región de confianza, 229
relación de recurrencia, 218 Levenberg-Marquardt, 229–231
Índice de Materias y Autores j 705

Newton, 231 cono, 567


Minkowski, H.M. 519 de energía, 532
desigualdad de, 519 matricial, 29, 534, 535
Mochila, problema, 418 consistente, 29, 535
Modelo de Black y Scholes, 663 de Frobenius, 29, 535
Moivre, A. 146 espectral, 29, 536
números de Moivre, 146, 619 inducida, 29, 536
Monótona, numeración de un árbol, 169 kAk1 , 29
Montecarlo, método, 660 kAk1 , 29
Movimiento Browniano, 654 vectorial, 26, 519
Muestreo de señales, 634 kxk1 , 27
Moore-Penrose, matriz inversa generalizada, 99 kxk1 , 27
Moreau, J.J. 561 euclídea, 27, 520
Moulton, F.R. 473 p de Hölder, 27, 520
MPS, formato, 371 Núcleo,
Muller, D.E. 50 de una aplicación, 524
Multiplicaciones/divisiones, de un método o algoritmo, 70 de una matriz, 534
Multiplicación anidada, 2 Nudo(s), de un grafo, de un digrafo, 165, 174
Multiplicadores, en eliminación de Gauss, 63 accesibilidad, 175
Multiplicadores de Lagrange, en simplex, en Programación adyacentes, 166, 175
Lineal, 320 de demanda, en un digrafo, 175
en optimización, 320, 390, 390, 575, 578, 581 de holgura, 215
Multiplicadores símplex, 321 ver también Estudio de Cargas
de llegada de un camino, 166
N de llegada de un arco en un digrafo, 175
N, conjunto de los números naturales, 513 de partida de un camino, 166
N , matriz no básica de un programa lineal, 314 destino de un arco, 165, 174
Nested Dissection, ver Disección anidada distancia entre, 166, 175
Neumann, K.G. 606 excentricidad, 166
Newton, Isaac 40 grado, 166
ver también Newton-Raphson hijo, 169
Newton modificado, origen de un arco, 165, 174
para solución de ecuaciones no lineales en una variable, 44 padre, 169
para solución de ecuaciones no lineales en más de una periférico, 166
variable, 220 raíz, de un árbol, 169
Newton-Raphson, para solución de ecuaciones no lineales en Numerable, conjunto, 515
una variable, 40–43 Numeración, monótona de un árbol, 169
convergencia, 42 Número de condición de una matriz, 75,
variantes, 43–47 invertible, 75
de la secante, 47 cualquiera, 75
diferencias finitas, 44 Número de dígitos significativos, de una máquina, 4
Newton modificado, 45 Número de operaciones del método o algoritmo,
regula falsi, 48 Aasen, 91
y mecanismo de salvaguarda, 43 Bunch y Parlett, 91
Newton-Raphson, para solución de sistemas de ecuaciones no Bunch y Kaufman, 91
lineales, 218 Cholesky, 89
convergencia, 218 Crout, 83
variantes, 218 eliminación de Gauss, 70–73
diferencias finitas, 218 fórmulas de Cramer, 72
Gauss-Seidel, 218 factorización LDLT de una matriz simétrica, 87
Jacobi, 218 factorización QR por transformaciones de Householder, 117
Newton modificado, 218 factorización QR por transformaciones de Givens, 117
relajación SOR, 218 factorización QR por transformaciones rápidas de Givens,
Nicolson, P. 494 117
Niveles, estructura de, en un grafo, 169 Gauss-Jordan, 73
Norma, Gram-Schmidt,
bola, 567 clásico, 103
706 j Índice de Materias y Autores

modificado, 104 Ortonormales, vectores, 528


Parlett y Reid, 91 Overflow, límite de, en un ordenador, 4
resolución de mKınx2Rn kAx bk2 ,
mediante transformaciones ortogonales de Householder, P
107 p, dígitos de mantisa, 4
mediante transformaciones ortogonales de Givens, 117 Padre, nudo, 169
mediante transformaciones ortogonales rápidas de Givens, Parte generadora, de un espacio vectorial, 517
117 Parseval, M-A. 629
Números, representación en ordenador, 4 Paseo aleatorio, 654
exponente, 4 Partición, de la región factible de un programa entero, 423
mantisa, 4 Partición, de un grafo, árbol, 169
Nyquist, H. 635 Pareto, V.F. 592
Parlett y Reid, método de, 91
O número de operaciones, 91
Opción de compra, 663 Pearson, K. 641
Operaciones aritméticas de un método, 70 Penalización, o gran M, método para llegar a solución básica
ver también multiplicaciones/divisiones, sumas/restas factible inicial en simplex, 343
Operador, Penalizaciones, en programación entera, 432
adjunto, 528 Perfil, de una matriz, 158
autoadjunto, 528 monótono, 171
hermítico, 528 perfil o envolvente, forma de almacenar matrices dispersas en
isométrico, 528 un ordenador, 158
lineal 524 Periférico, nudo de un grafo, 166
simétrico, 528 Permutación, matriz de, 537
unitario, 528 Permutación simétrica, 92
Optimización, 270 Pivote, 63
de flujos en redes, 305 Pivotación, 325
sin condiciones, existencia de punto mínimo, 272 operación en método simplex revisado, 325
sin condiciones, métodos de dirección de descenso, 273 en eliminación de Gauss, 68
máxima pendiente, 275 parcial, 67
Newton, 278 rook pivoting, 68
máxima pendiente y Newton, 278 total, 68
Newton amortiguado y región de confianza, 281 Planificación de la generación de energía en una empresa
Newton amortiguado, 282 eléctrica, problema, 298
región de confianza, 284 Plano afín, 562
DogLeg, 285 Polak, E. 288
gradientes conjugados, 286 Poliedro, 313
cuasi Newton, 290 Polinomio(s) de interpolación de Lagrange, 124
Óptimo de Pareto, 592 Polinomio(s) de interpolación de Newton, 127
Orden de convergencia, 38 Polinomio(s) ortogonales de interpolación de Chebyshev, 130
Orden, del error de aproximación de una derivada numérica, 442 Polinomio(s) ortogonales de interpolación de Hermite, 130
Ordenación de las ecuaciones, matrices dispersas, 161 Polinomio(s) ortogonales de interpolación de Jacobi, 130
Ordenador, Polinomio(s) ortogonales de interpolación de Laguerre, 130
dígitos significativos, 4 Polinomio(s) ortogonales de interpolación de Legendre, 130
epsilon, 9 Polinomio(s) de Bernstein, 137
errores, 11 Polinomio característico, de una matriz, 239, 540
de cancelación, 15, 11 Polinomio de Taylor, 555
de redondeo, 11 Polinomio de Wilkinson, 21
de truncamiento, 11 Polinomio mínimo de una matriz, 239
precisión, 9 Polinomio mónico, 239, 540
representación de números, 4 Polinomio trigonométrico, 622
Origen, nudo origen de un arco, 165, 174 coeficientes de Fourier, 622
Ortante no negativo RnC , 568, 580 frecuencia fundamental, 622
Ortogonal(es), grado, 622
matriz, 537 Politopo(s), 312
subespacio, 528 arista, 565
vectores, 528 cara, 565
Índice de Materias y Autores j 707

cónico, 312 Proceso, de Poisson, 657


dirección de un politopo, 317 Proceso, de Wiener, 655
faceta, 565 Proceso estocástico, 652
y región factible de un programa lineal, 313 Producto de la inversa de la base, forma del algoritmo simplex
vértice, 565 para programas lineales, 359
Poisson, S.D. 498 Producto escalar, o producto interior, en un espacio vectorial,
Post-optimización, análisis en programación lineal, 344 528
Potencias inyectadas en redes eléctricas, 216 Producto exterior, 534
activa, 216 Programa combinatorio, 418
reactiva 216 Programa dual, de uno lineal, 361, 364
Precisión de la máquina, u ordenador, 9 Programación Entera, 417
ver epsilon el problema de Programación Entera, 418
Precondicionador, 208 de la gestión de un servicio hospitalario, 419
gradientes conjugados con acondicionado previo, 205 de la mochila, 418
Predictor-corrector, en métodos de punto interior, 378, 395 mixto, 418
algoritmo para Programación Lineal, 380 programación no lineal en variables enteras, 437
Prehilbertiano, espacio vectorial, 527 puro, 418
Prestaciones de algoritmos, criterios, 70 región factible, 419
y errores de redondeo, 70 resolución numérica, algoritmos, 420
y tiempo de cálculo, 70 algoritmo general, 420
Price-out, ver Asignación de precio planos cortantes de Gomory, 420
Probabilidad, 648 algoritmo de los planos cortantes de Gomory, 422
condicionada, 652 Branch and Bound, ramificación y acotación, 423
densidad, 648 algoritmo Branch and Bound, 426
espacio de, 648 selección de la variable de ramificación, 432
Problema de optimización, Programación Lineal, programa lineal, 296
del transporte de mercancías, 306 coeficientes de coste, 296
de la dieta alimenticia, 297 condiciones, 296
de la emisión de deuda, 305 condiciones de punto óptimo, 320
de la gestión de un servicio hospitalario, 419 dual, 361, 364
de la mochila, 418 forma estándar, 296
de la planificación de la generación de energía en una función objetivo, 296
empresa eléctrica, 298 inconsistente, o no factible, 308
Problema de Programación Lineal, 296 punto factible, 385
análisis de sensibilidad, 344–347 región factible, 296
coeficientes de coste, 296 restricciones o condiciones, 296
condiciones, 296 solución óptima, 308
forma estándar, 296 alternativas, 308
función objetivo, 296 no acotada, 308
variables de decisión, 296 única, 308
vector factible, 296 término de la derecha, 296
Problema de Programación No Lineal, 385 variables de decisión, 296
Problema de optimización escalar, 591 variables de holgura, 296
Problema de optimización vectorial, 591 vector factible, 296
Problema lineal de mínimos cuadrados, 95 Programación No Lineal con condiciones, 385
descomposición en valores singulares y solución, 99 condiciones de punto óptimo, 390
formulación, 95 algoritmo de resolución, 391
resolución numérica, 101 programación cuadrática con condiciones de igualdad, 391
Problema no lineal de mínimos cuadrados, 223 método del subespacio imagen de A, 391
formulación, 223 método del subespacio núcleo de A, 392
resolución numérica, 228 programación cuadrática con condiciones generales, 394
método de Gauss-Newton, 228 programación cuadrática secuencial, 398
convergencia, 228 con condiciones de igualdad, 399
métodos de región de confianza, 229 con condiciones de desigualdad, 399
Levenberg-Marquardt, 229 con condiciones de todo tipo, 405
Newton, 231 métodos de puntos interiores, 408
Proceso, de Markov, 657 programación no lineal en variables enteras, 437
708 j Índice de Materias y Autores

Proyección, Regula falsi, 48


matriz de, 99, 100, 539 Relajación, SOR,
ortogonal de un vector, 99, 100, 539 para solución de Ax D b, 189
matriz de, 99, 100, 539 variante de Newton-Raphson para solución de sistemas de
teorema de la, 528 ecuaciones no lineales, 220
Proyector suplementario, 99, 100, 539 Relajación, SSOR,
Punto, para solución de Ax D b, 195
de acumulación, 521 esquema iterativo matricial, 195
de adherencia, 521 relación de recurrencia, 195
de silla, 273 esquema iterativo matricial, 195
extremo de una región factible, 308, 564 Relajaciones, de un programa entero, 420
de conjunto convexo, 308, 564 lineal, 420
y solución básica, 385 Relleno, elementos de, 161
estacionario, 560 Representación de números en ordenador, 4
factible, de un programa lineal, 385 exponente, 4
fijo, iteración, 36, 184, 248 mantisa, 4
interior, 521 Resolución numérica de Ecuaciones en derivadas parciales, 489
Puntos de base, 3 parabólicas, resolución, 491
Punto extremo o vértice de una región factible, 308, 564 por diferencias adelantadas, 491
Punto regular, 389 por diferencias adelantadas, 493
método de Crank-Nicolson, 494
Q hiperbólicas, resolución, 495
Q, conjunto de los números racionales, 513 elípticas, resolución, 498
QR, 105 por diferencias finitas, 499
ver Factorización QR por elementos finitos, 502
Ecuaciones en derivadas parciales no lineales, 508
R Resto de Taylor, 555
R, cuerpo de los números reales, 513, 515 Richardson, L.F. 445
Radio espectral de una matriz, 240, 539 extrapolación para derivación numérica, 445
Raíz múltiple de f .x/ D 0, 35 Richardson, esquema iterativo para resolución de sistemas de
Rango, ecuaciones lineales, 184
de una forma cuadrática, 546 Riemann, G.F.B. 447
de una matriz, 534 Riesz, F 590
completo, 534 Ritz, W, 263, 502, 604
Raphson, J, 40 valores de Ritz, 263
Rápidas de Givens, transformaciones, 116 Rockafellar, R.T. 561
Rapidez de convergencia, 38 Rolle, M. 557
Razón áurea, 48 Romberg, W. 452
Redondeo, en ordenador, 11 Ruido blanco, 662
Reflexiones de Householder, 107 Runge, C.D.T. 131, 465
ver también Factorización QR, transformaciones de función de Runge, 131
Householder
Región de confianza, métodos, 229 S
Levenberg-Marquardt, 229–231 Salida, grado de un nudo de un digrafo, 175
Región factible, Schmidt, E. 102
de un programa entero, 418 Scholes, M.S. 663
de un programa lineal, 296 Schur, I, 243
vacía, 296 Schwarz, K.H.A. 490
punto extremo, o vértice, 308, 564 Schwarz, desigualdad de Cauchy-Shwarz, 527
y politopo, 313 Secante, método para solución de ecuaciones no lineales en una
de un programa no lineal, 385 variable, 47
Regla, Seidel, P.L. von, 186
de Bland, 334 Semidefinida negativa,
de Horner, 2 matriz, 538
del triángulo, 27, 519 Semidefinida positiva,
desigualdad de Mínkowski, 519 matriz, 538
LIFO, 428 Semiespacio,
Índice de Materias y Autores j 709

abierto, 312, 564 Stiefel, E. 200


cerrado, 312, 564 Subconjunto, 513
Sensibilidad, análisis en programación lineal, 344–347 abierto, 521
Separación y acotación, algoritmos enumerativos o branch and cerrado, 521
bound, 423 compacto, 521
Separador, hiperplano, 572 Subespacio(s),
Serie de Taylor, 556 de Krylov, 203, 206, 260, 540
Serie trigonométrica de Fourier, 622 imagen, de una aplicación, 524
Sesquilineal, forma, 527 ortogonal, 528
en un espacio vectorial, 527 propio, 539
Shannon, C.E. 635 suplementarios, 517
Sherman-Morrison-Woodbury, fórmula de, 85, 221 vectorial, 517
Schoenberg, I.J. 139 Subdiferencial, de una función, 551
Signatura, de una forma cuadrática, 546 Subgradiente, de una función, 551
Símplex, o simplejo, 562 Sucesión, 515
símplex unidad, 563 convergencia en un espacio vectorial normado, 525
Símplex, algoritmo para Programación Lineal, 325 de Cauchy, 522
complejidad computacional, 359 de elementos de un conjunto, aplicación, 515
factorización LU de la base, B, 359 límite de, 525
fase I y II, 336 Suma directa, de dos subespacios vectoriales, 517
forma producto de la inversa de la base, 359 Sumas/restas, de un método o algoritmo, 70
gran M, para solución básica factible inicial en el método Sustitución inversa, 62
Símplex, 343 Suprayectiva, aplicación, 515
para variables acotadas, 351 Supremo, o cota superior mínima, 514
solución básica factible inicial, 335 Sylvester, J.J. 532
variables artificiales, 335
Sistema de ecuaciones lineales, 57 T
coeficientes, 57 t, precisión de un ordenador, 4
con matriz dispersa, 163 Tableau, método simplex en forma de, 356
de estructura simétrica, 163 Tasa, o relación de convergencia, 38
de estructura no simétrica, 176 Taylor, B. 19
interpretación geométrica, Taylor, teorema de, 556
en R2 , 60 desarrollo en serie de, 19
en Rn , 60 método de, 465
en Im.A/, 62 polinomio de, 555
matriz de coeficientes, 57 resto de, 555
términos independientes, 57 serie de, 556
Sistema de ecuaciones no lineales, 215 Teorema,
Sistema de numeración en ordenador, 4, 4 de Abel, 555
binario, 6 de Cayley-Hamilton, 539
normalizado, 4 de Fermat, 560
desnormalizado, 6 de Fubini, 597
Sistema lineal triangular superior, 62 de Green, 601
Sobolev, S.L. 532 de Nyquist-Shannon, 635
Solución básica de un programa lineal, 315 de Parseval, 629
Solución básica factible de un programa lineal, 315 de Riesz-Fréchet, 590
Solución básica factible degenerada de un programa lineal, 315 de Rolle, 557
Solución óptima, de programa lineal, 308 de Stokes, 603
alternativas, 308 de Taylor, 556
no acotada, 308 de Weierstrass, 548
única, 308 del valor intermedio, 557
inconsistente, problema inconsistente 308 del valor medio, 557
Splines, 135 de la divergencia, 607
cúbicas, 135 de la dualidad fuerte, 581
B-splines, 139 de la función implícita, 559
Stokes, G.G. 603 de la proyección, 528
Strassen, V. 25 espectral, 542
710 j Índice de Materias y Autores

fundamental del álgebra, 539 iteración QR con desplazamiento, 257


fundamental del cálculo, 552 iteración QR con doble desplazamiento, 257
fundamental de la Programación Lineal, 577 iteración QR con doble desplazamiento implícito tipo
fundamental de las integrales en línea, 600 Francis, 258
Término de la derecha, de un programa lineal, 296 subespacios de Krylov, 260
Tiempo, Valor(es) singular(es), 99, 542
de cálculo de un algoritmo, 70 descomposición en, 99
de multiplicación/división, 70 obtención numérica, 265
de suma/resta, 70 algoritmo de Golub y Reinsch, 265
Transformación, algoritmo de Jacobi, 266
de Fenchel, 585 Vandermonde, A.T. 538
de Gauss, 64 Vandermonde, matriz de, 124, 538
Transformaciones ortogonales, 105 Variable aleatoria, 648
de Givens, 112 densidad de probabilidad, 648
de Householder, 107 esperanza matemática, 649
rápidas de Givens, 116 función de distribución, 649
Transformada de Fourier, 631 varianza, 649
Transformada de Fourier discreta, 633 Variables,
Transformada de Karhunen-Loève, 639 artificiales, en el método Símplex, 335
Transformada de Laplace, 639 básicas de un programa lineal, 314
Transformada del coseno discreta, 636 de decisión, de un programa lineal, 296
Transformada discreta de Fourier, 147 de holgura, de un programa lineal, 297
Transformada integral de Fourier, 631
de ramificación, en programación entera, 432
Transformada inversa de Fourier, 631
penalizaciones, 434
Transformada rápida de Fourier, 149
no básicas de un programa lineal, 314
Transporte, problema de Programación Lineal 175
Variedad afín, variedad lineal, 562
Transversal de una matriz dispersa, 175
Variedad lineal, hiperplano, 311, 564
completo, 175
separador, 572
búsqueda, 176
teorema de existencia, 571
Triangularización en bloques de una matriz dispersa, 176
soporte, 565, 572
algoritmo de Hall, 176
teorema de existencia, 571
Triangularización ortogonal, ver Factorización QR
Triángulo, regla, 519 vector característico, 306, 311, 564
Tucker, A.W. 320 Vector(es), 515
Tukey, J. 149 aleatorio, 650
alineados, 528
U característico, de un hiperplano o variedad lineal, 306, 311,
U , límite de overflow de un ordenador, 4 564
Ulam, S.M. 660 conjugados, 200
Underflow, límite de, en un ordenador, 4 de Householder, 107
Unidad imaginaria, 145, 618 formando ángulo obtuso, 528
Unión, de conjuntos, 513 formando ángulo agudo, 528
gradiente, 232, 278
V índice, 69
Valor(es) propio(s), 239, 539 linealmente dependientes, 517
defectuoso, 539 linealmente independientes, 517
dominante, 240 opuestos, 528
multiplicidad algebraica, 239, 539 ortogonales, 528
multiplicidad geométrica, 239, 539 A ortogonales, 200
obtención numérica ortonormales, 528
método de Jacobi, 245 Vector propio, 239
método de la iteración de la potencia, 248 Velocidad de convergencia, 38
método de la iteración inversa, 251 Verosimilitud, 225
iteración mediante cociente de Rayleigh, 252 estimador de máxima verosimilitud, 225
deflación, 53, 253 Vértice de una región factible, 308, 564
iteración simultánea o de subespacio, 255 de un politopo, 565
iteración QR, 256 Von Neumann, J. 660
Índice de Materias y Autores j 711

W
Weierstraß, K.T.W. 522
Weierstraß, criterio de, 554
Weierstraß, teorema de, 548
Wiener, N. 655
Wiener, Proceso de, 655
Wilkinson, J.H. 21
Wolfe, P.S. 361, 584
WRETA, operación del simplex, 359

Z
Z, conjunto (anillo) de los números enteros, 513, 515

You might also like