0% encontró este documento útil (0 votos)
10 vistas229 páginas

Métodos Numéricos en Ingeniería

El documento aborda los métodos numéricos en el contexto de la ingeniería, cubriendo temas como la aritmética de punto flotante, sistemas de ecuaciones lineales, interpolación polinomial, ecuaciones no lineales, mínimos cuadrados, descomposición SVD, integración numérica y ecuaciones diferenciales ordinarias. Se presenta un índice detallado que organiza los contenidos en secciones y subsecciones, permitiendo una fácil navegación por los conceptos y técnicas fundamentales. La última actualización del documento fue el 31 de julio de 2025.

Cargado por

aguilatorre19
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas229 páginas

Métodos Numéricos en Ingeniería

El documento aborda los métodos numéricos en el contexto de la ingeniería, cubriendo temas como la aritmética de punto flotante, sistemas de ecuaciones lineales, interpolación polinomial, ecuaciones no lineales, mínimos cuadrados, descomposición SVD, integración numérica y ecuaciones diferenciales ordinarias. Se presenta un índice detallado que organiza los contenidos en secciones y subsecciones, permitiendo una fácil navegación por los conceptos y técnicas fundamentales. La última actualización del documento fue el 31 de julio de 2025.

Cargado por

aguilatorre19
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Métodos Numéricos

Instituto de Matemática y Estadı́stica “Rafael Laguardia” (IMERL)


Facultad de Ingenierı́a
Universidad de la República

Última actualización: 31 de julio de 2025.


Métodos Numéricos Facultad de Ingenierı́a – IMERL

2
Índice general

1. Aritmética de punto flotante y errores 9


1.1. Introducción. Aproximaciones y errores. . . . . . . . . . . . . . . . . . . . . 9
1.1.1. Errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2. Errores de aproximación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.1. Sumas de Riemann . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.2. Desarrollos de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.3. Calcular raı́ces cuadradas como un Herón . . . . . . . . . . . . . . . 14
1.3. Errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3.1. Errores absolutos y relativos . . . . . . . . . . . . . . . . . . . . . . 15
1.3.2. Funciones reales: número de condición . . . . . . . . . . . . . . . . 16
1.3.3. Propagación de errores en operaciones aritméticas . . . . . . . . . . 17
1.4. Aritmética de punto flotante . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.1. Representación de punto flotante . . . . . . . . . . . . . . . . . . . 20
1.4.2. Constantes de máquina y números especiales . . . . . . . . . . . . . 22
1.4.3. Error de representación en punto flotante . . . . . . . . . . . . . . . 24
1.5. Propagación de errores en punto flotante . . . . . . . . . . . . . . . . . . . 25
1.5.1. Advertencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.5.2. Análisis de error hacia adelante . . . . . . . . . . . . . . . . . . . . 26
1.5.3. Cálculo de derivadas usando diferencias hacia adelante . . . . . . . 30

2. Sistemas de ecuaciones lineales 35


2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.2. Escalerización gaussiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.2.1. Sistemas triangulares . . . . . . . . . . . . . . . . . . . . . . . . . . 37

1
Métodos Numéricos Facultad de Ingenierı́a – IMERL

2.2.2. Escalerización gaussiana (sin pivoteo) . . . . . . . . . . . . . . . . . 39


2.2.3. Escalerización gaussiana con pivoteo parcial . . . . . . . . . . . . . 41
2.3. Descomposición LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.4. Matrices dispersas y de banda . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.5. Estabilidad y convergencia . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.5.1. Normas de vectores y matrices . . . . . . . . . . . . . . . . . . . . . 50
2.5.2. Errores y residuos: un ejemplo . . . . . . . . . . . . . . . . . . . . . 56
2.5.3. Número de condición . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.5.4. Análisis de perturbaciones . . . . . . . . . . . . . . . . . . . . . . . 60

3. Interpolación polinomial 63
3.1. Introducción. ¿Por qué interpolar? . . . . . . . . . . . . . . . . . . . . . . . 63
3.2. Polinomio interpolante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.2.1. Forma de Vandermonde . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2.2. Forma de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.2.3. Forma de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.3. Interpolación de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.3.1. Error de interpolación . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.3.2. Fenómeno de Runge . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.4. Interpolación a trozos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.4.1. Interpolación lineal a trozos . . . . . . . . . . . . . . . . . . . . . . 81
3.4.2. Interpolación cúbica a trozos . . . . . . . . . . . . . . . . . . . . . . 84

4. Ecuaciones no lineales 93
4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.2. Método de bisección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.3. Método de la regla falsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.4. Método de la secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.5. Método de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.6. Resumen: una muy breve comparación . . . . . . . . . . . . . . . . . . . . 106
4.7. Métodos iterativos generales . . . . . . . . . . . . . . . . . . . . . . . . . . 107
4.7.1. Convergencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.7.2. Orden y velocidad de convergencia . . . . . . . . . . . . . . . . . . 111

2
Métodos Numéricos Facultad de Ingenierı́a – IMERL

4.7.3. Criterios de parada . . . . . . . . . . . . . . . . . . . . . . . . . . . 112


4.8. Sistemas de ecuaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.8.1. Métodos iterativos generales . . . . . . . . . . . . . . . . . . . . . . 114
4.8.2. Método de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . 116
4.8.3. Variantes al método de Newton-Raphson* . . . . . . . . . . . . . . 118

5. Mı́nimos cuadrados 121


5.1. Introducción. Modelos y ajustes . . . . . . . . . . . . . . . . . . . . . . . . 121
5.2. Ecuaciones normales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
5.3. Descomposición QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
5.3.1. Aplicación de QR a mı́nimos cuadrados . . . . . . . . . . . . . . . . 130
5.3.2. Transformaciones de Householder . . . . . . . . . . . . . . . . . . . 132
5.4. Mı́nimos cuadrados no lineales . . . . . . . . . . . . . . . . . . . . . . . . . 139

6. Descomposición SVD 143


6.1. Aplicaciones de SVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.1.1. Computar rangos, espacios de columnas y núcleos de matrices. . . . 145
6.1.2. Aproximaciones de rango bajo. . . . . . . . . . . . . . . . . . . . . 146
6.1.3. Análisis de componentes principales. . . . . . . . . . . . . . . . . . 147
6.1.4. SVD en sistemas de recomendación . . . . . . . . . . . . . . . . . . 150
6.2. Aplicación de SVD a mı́nimos cuadrados . . . . . . . . . . . . . . . . . . . 155
6.2.1. Mı́nimos cuadrados de rango completo . . . . . . . . . . . . . . . . 155
6.2.2. Mı́nimos cuadrados lineales con rango deficiente . . . . . . . . . . . 156
6.2.3. Comparación de métodos para la resolución de problemas de mı́ni-
mos cuadrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

7. Integración numérica 161


7.1. Motivación y reglas de Newton-Cotes básicas . . . . . . . . . . . . . . . . . 161
7.2. Reglas compuestas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
7.3. Adaptatividad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
7.4. Cuadratura gaussiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

8. Ecuaciones diferenciales ordinarias 179


8.1. Introducción. Nociones generales. . . . . . . . . . . . . . . . . . . . . . . . 179

3
Métodos Numéricos Facultad de Ingenierı́a – IMERL

8.1.1. Problemas de valores iniciales. . . . . . . . . . . . . . . . . . . . . . 182


8.2. Métodos de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
8.3. Elementos de los métodos numéricos aplicados a ecuaciones diferenciales
ordinarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
8.3.1. Un poco de nomenclatura . . . . . . . . . . . . . . . . . . . . . . . 188
8.3.2. Consistencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
8.3.3. Cero-estabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
8.3.4. Convergencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
8.3.5. Estabilidad absoluta . . . . . . . . . . . . . . . . . . . . . . . . . . 194
8.4. Método del trapecio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.5. Métodos de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
8.5.1. Construcción de métodos de Runge-Kutta . . . . . . . . . . . . . . 200
8.5.2. El método de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . 202
8.6. Esquemas predictores-correctores . . . . . . . . . . . . . . . . . . . . . . . 204
8.7. Solvers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.7.1. El algoritmo BS23 y ode23 . . . . . . . . . . . . . . . . . . . . . . . 209
8.8. Rigidez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

A. Preliminares y repaso 215


A.1. Desarrollo de Taylor y resto de Lagrange . . . . . . . . . . . . . . . . . . . 215
A.1.1. En una variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
A.1.2. En varias variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
A.2. Teoremas de valores medios . . . . . . . . . . . . . . . . . . . . . . . . . . 218
A.3. Valores y vectores propios . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
A.4. Ortogonalidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
A.5. Ecuaciones diferenciales ordinarias . . . . . . . . . . . . . . . . . . . . . . . 223
A.5.1. Ecuaciones de primer orden de variables separables . . . . . . . . . 223
A.5.2. Ecuaciones lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

4
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Importante
Este es un material preparado para el curso de Métodos Numéricos. La primera
versión fue para el curso 2023, y para esta edición hemos hecho algunos ajustes: mo-
dificamos contendios de varias secciones y capı́tulos, agregamos un capı́tulo acerca
de integración numérica y otro sobre descomposición en valores singulares.
Si encontrás errores o tenés comentarios o sugerencias sobre estas notas,
te agradecemos escribir en el foro de Sugerencias y erratas en las notas
teóricas la página del curso.

Las notas están en su segundo semestre en uso. Varios estudiantes hicieron suge-
rencias y comentarios, encontraron errores de tipeo o inconsistencias, y con eso
ayudaron a mejorar las notas. De todos modos, es inevitable que sigan habiendo im-
perfectos; en la medida que hagamos correcciones sobre lo que ya está escrito, en el
texto van a estar en rojo y vamos a dejarlas detalladas en la lista de actualizaciones.

Notación
Pautamos aquı́ muy brevemente alguna notación que utilizamos en las notas del curso.

Cuando escribamos un sı́mbolo de igualdad con dos puntos por delante, esto denota
que se trata de una definición. Por ejemplo, si ponemos a := b + c (o b + c =: a)
estamos definiendo la variable a como la suma de b y c; en cambio, si ponemos
a = b + c (o b + c = a) esta relación se deduce de las definiciones de a, b, c.

Hacemos un uso un tanto liberal del sı́mbolo “≈”, que indica que estamos haciendo
una aproximación, ya sea de un valor numérico o de una función. Por ejemplo,
perfectamente podrı́amos escribir

t2
π ≈ 3, π ≈ 3,1416, o cos(t) ≈ 1 − para t ≈ 0.
2

Escribimos los números reales usando la fuente normal, y los vectores en negrita;
en general, usaremos minúsculas para todos ellos. Ası́, tendremos x ∈ R y x ∈ Rn .
En cambio, escribimos las matrices usando mayúsculas con fuente normal: A ∈
Mm×n (R). Al conjunto de matrices cuadradas n × n lo denotamos simplemente
como Mn (R).

Cada demostración de un lema, proposición, teorema o corolario, concluye con el


sı́mbolo . En cambio, toda observación, definición o ejemplo concluye con el sı́mbo-
lo 4.

5
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Definición 0.0.1 (O “grande” y o “chica”). Dadas dos funciones f, g : D ⊂ R → R, un


punto a interior a D, escribimos f (x) = O(g(x)) en a si existen K > 0 y un entorno de a
tales que g(x) > 0 y
|f (x)| ≤ Kg(x)
para todo x en dicho entorno. Intuitivamente, f (x) = O(g(x)) en a quiere decir que f no
crece más rápido que g cerca de a.
Por otra parte, escribimos f (x) = o(g(x)) en a si para todo  > 0, existe un entorno de a
tal que g(x) > 0 y
|f (x)| ≤ g(x)
para todo x en dicho entorno o, equivalentemente, si

f (x)
lı́m = 0.
x→a g(x)

Intuitivamente, el hecho de que f (x) = o(g(x)) en a quiere decir que f es de magnitud


menor que g cerca de a.
La notación O y o se extiende, de forma análoga, al caso en que a = ±∞. 4

Observación 0.0.1 (no simetrı́a). De la definición se deduce que, si f (x) = o(g(x)) en a,


entonces f (x) = O(g(x)) en a. Por otra parte, si f (x) = O(g(x)) en a entonces no se
deduce que g(x) = O(f (x)) en a, incluso si ambas funciones son positivas. 4

Ejemplo 0.0.1 (órdenes). Sean f (x) = x y g(x) = sen(x) + x2 . Tenemos

f (x) = O(|g(x)|) en 0, g(x) = O(f (x)) en 0, f (x) = o(g(x)) en +∞.

6
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Lista de versiones y actualizaciones


31 de julio de 2025: tercera versión.

25 de julio de 2024: segunda versión.

Julio-diciembre de 2023: primera versión.

7
Métodos Numéricos Facultad de Ingenierı́a – IMERL

8
Capı́tulo 1

Aritmética de punto flotante y


errores

1.1. Introducción. Aproximaciones y errores.


Consideremos un proceso o sistema real del cual se desea conocer el comportamiento de
determinadas cantidades a partir de cierta información de base. Podemos considerar dos
estrategias para resolver problemas de este tipo:

Experimentación. A través de la realización de experimentos es posible obtener


valores reales del comportamiento que se desea estudiar. A pesar de esto, en mu-
chos casos la experimentación resulta costosa (ensayos de materiales, inspección de
recursos naturales), y en otros casos se tardarı́a demasiado (polı́ticas económicas,
sistemas biológicos).

Modelamiento computacional. Utilizando herramientas de las ciencias exactas


es posible formular problemas matemáticos que modelan o describen el comporta-
miento de dichos sistemas. A través del uso de métodos numéricos es posible resolver
estos problemas y ası́ predecir el comportamiento de los sistemas, aunque obteniendo
un error con respecto al proceso real en todos los casos.

En este curso nos enfocamos en la segunda estrategia y en ciertos aspectos relativos a


la misma. Para lograr nuestro cometido, en primer lugar requerimos modelos que nos
permitan capturar las caracterı́sticas que consideramos relevantes sobre el fenómeno a
estudiar. El modelo que elijamos conllevará un conjunto de ecuaciones que representan
cómo varı́an las cantidades que nos interesan al cambiar los parámetros de base. Para
determinar los valores de dichos parámetros de base, que necesitaremos en nuestras ecua-
ciones, debemos hacer mediciones. Una vez que tenemos un modelo y mediciones, nos
encontramos un conjunto de ecuaciones a resolver; a menos que estas ecuaciones sean muy
sencillas, no podremos resolverlas en una cantidad finita de operaciones. Necesitamos una

9
Métodos Numéricos Facultad de Ingenierı́a – IMERL

estrategia de aproximación para estimar sus soluciones, lo que requiere el diseño de algo-
ritmos. Finalmente, seguramente realicemos un programa computacional que implemente
nuestro algoritmo y nos devuelva una solución computacional a nuestro problema.
Esquemáticamente, tenemos los siguientes pasos.

MODELO MEDICIONES ALGORITMO SOLUCIÓN


COMPUTACIONAL
cantidades relevantes, instrumentos discretización valores estimados
teorı́a, ecuaciones

Ejemplo 1.1.1 (caı́da de un objeto). Deseamos determinar la velocidad terminal de caı́da


de un objeto cayendo del cielo, esto es, la velocidad vf con la que llega al piso.

Para el modelado, seguramente utilicemos las leyes que nos da la mecánica new-
toniana. ¿Debemos incluir el efecto del rozamiento del aire? No hacerlo conduce a
un modelo muy simple (caı́da libre), pero que no serı́a apropiado si, por ejemplo,
queremos determinar la velocidad de caı́da de una hoja de un árbol. En algunos
casos, como en la caı́da de una gota de lluvia, puede ser relevante que el modelo in-
cluya que la masa del objeto pueda cambiar con el tiempo (porque la gota podrı́a ir
absorbiendo pequeñas gotitas del aire). Un buen modelo debe ser lo suficientemente
rico como para capturar los fenómenos que nos interesan con la precisión que nos
interesa, pero también lo suficientemente simple como para ser tratable.
Una vez determinadas las ecuaciones modelando la caı́da del objeto, éstas involucran
ciertos parámetros que debemos medir o estimar, como por ejemplo la altura
y velocidad inicial de la caı́da, o la constante gravitatoria. En caso de incluir el
rozamiento del aire, también podrı́an ser relevantes la forma y masa del objeto y
el coeficiente de rozamiento. Para una gota de lluvia cuya masa va variando, es
necesario incluir en el modelo la humedad del aire que la rodea, que también debe
ser determinada.
Nos encontramos ahora ante un sistema de ecuaciones (en este ejemplo, diferen-
ciales) que debemos resolver. En algún caso es posible que podamos resolverlas
analı́ticamente, pero en general necesitaremos una estrategia para aproximar las
soluciones. Esto es lo que se conoce como una discretización; hacia el final de es-
te curso aprenderemos métodos para tratar con ecuaciones diferenciales ordinarias.
Podemos aproximar las ecuaciones diferenciales involucradas mediante un sistema
de ecuaciones algebraicas si, por ejemplo, reemplazamos las derivadas por cocientes
incrementales,
f (x + h) − f (x)
f 0 (x) ≈ con h > 0 “chico”.
h
Finalmente, debemos resolver nuestro sistema de ecuaciones algebraicas. El tamaño
del sistema implica que seguramente sea inviable resolverlo “a mano”, y buscare-
mos implementar un programa computacional para realizar la tarea. La salida

10
Métodos Numéricos Facultad de Ingenierı́a – IMERL

(output) de este programa deben ser las cantidades que deseemos estimar, como por
ejemplo la velocidad terminal de caı́da del objeto.

Este curso se concentra en los dos últimos puntos discutidos en el Ejemplo 1.1.1: el di-
seño, implementación y análisis de métodos para la solución de problemas de ingenierı́a.
Asumimos que tenemos dadas las ecuaciones o los problemas que queremos resolver. Bus-
camos desarrollar herramientas que nos permitan tratar computacionalmente con estos
modelos, comparar diferentes métodos entre sı́, entender en qué casos uno puede ser mejor
que otro, estimar sus costos computacionales, e introducir nociones básicas del área de la
matemática llamada Análisis Numérico.

1.1.1. Errores
Al resolver problemas reales mediante modelos computacionales, debemos lidiar con di-
versos errores. En cada una de las etapas de las descritas en el Ejemplo 1.1.1 se cometen
errores. En referencia a los cuatro puntos mencionados en ese ejemplo, podemos tener:

Errores de modelo: un aforismo muy popular en estadı́stica dice:


Todos los modelos están mal, pero algunos son útiles.
Es inviable pretender que nuestro modelo pueda tener en cuenta toda la complejidad
del problema que queremos estudiar. Es necesario hacer simplificaciones.
Errores de medición: no siempre podemos recolectar toda la información que
queremos, y nuestras mediciones no pueden ser infinitamente precisas.
Errores de aproximación: las ecuaciones que nos da el modelo generalmente
no pueden ser resueltas de forma exacta con una cantidad finita de operaciones.
Debemos utilizar algoritmos que nos permitan llegar a soluciones a menos de una
cierta tolerancia para el error.
Errores de redondeo: las máquinas no trabajan con números reales sino con una
aritmética de precisión finita, llamada de punto flotante, y que estudiamos en este
capı́tulo. Al representar números reales en punto flotante, introducimos una nueva
fuente de error.

Además de estos errores, no podemos descartar los errores humanos (en cualquiera de las
etapas) y los errores de instrumentos (como fallas en el equipamiento para medir, defectos
de hardware). En este curso no vamos a tener en cuenta estos últimos factores.
En este capı́tulo nos centramos en los errores asociados a la representación de punto flo-
tante y de operaciones entre números representados en punto flotante. En el resto del

11
Métodos Numéricos Facultad de Ingenierı́a – IMERL

curso, nos vamos a enfocar en errores de aproximación para diversos métodos, pero en la
Sección 1.2 vamos a mostrar con algunos ejemplos a qué nos referimos con la expresión
“errores de aproximación”. La Sección 1.3 define los conceptos de error absoluto y relativo
y nos da algunas pautas sobre cómo los errores se pueden propagar al aplicar funciones u
operaciones aritméticas elementales. En la Sección 1.4 introducimos el sistema de nume-
ración que usan las computadoras, vemos algunas constantes especiales y consideramos
su capacidad de representar números reales. Finalmente, la Sección 1.5 se enfoca en cómo
los distintos tipos de error pueden aparecer y propagarse en un algoritmo.

1.2. Errores de aproximación: una ventana a algunos


temas del curso
El alma de este curso es el estudio de métodos para realizar discretizaciones (u apro-
ximaciones) que nos permitan resolver algunos problemas. Aunque tal vez en cursos an-
teriores el foco no estuviese en este punto, ya tenemos alguna experiencia en este tema.
A continuación mostramos algunos ejemplos, y en los capı́tulos siguientes consideramos y
profundizamos en muchı́simos más.

1.2.1. Sumas de Riemann


Del curso de Cálculo Diferencial e Integral en una Variable, sabemos que el concepto de
determinar el área encerrada entre el gráfico de una función real f y el eje de las x en un
cierto intervalo está dado por la integral de f entre a y b. A su vez, dicha integral está
dada por el ı́nfimo de las sumas superiores o el supremo de las sumas inferiores de f en el
intervalo. Por lo tanto, podemos aproximar la integral de f entre a y b mediante sumas
de Riemann (inferiores o superiores) para una partición lo suficientemente fina.
Ejemplo 1.2.1 (sumas de Riemann). La integral
Z 1
I= esen x dx
0

está bien definida (el integrando es monótono creciente en el intervalo [0, 1]) pero el valor
de I no puede escribirse usando una cantidad finita de funciones elementales: no conocemos
una primitiva de esen x . Podemos considerar una partición uniforme del intervalo [0, 1] con
n + 1 puntos, Pn = {a0 , a1 , . . . , an }, esto es, ai = i/n con i = 0, . . . , n, y computar las
sumas inferiores y superiores asociadas a Pn ,
n−1 n−1
X
sen x
X 1 sen( ni )
S∗ (f, Pn ) = (ai+1 − ai ) ı́nf e = e ,
i=0
x∈[ai ,ai+1 ]
i=0
n
n−1 n−1
X X 1 sen( i+1
n ).
S ∗ (f, Pn ) = (ai+1 − ai ) sup esen x = e
i=0 x∈[ai ,ai+1 ] i=0
n

12
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Por ejemplo, usando una partición P10 con n = 10 intervalos, esto nos conduce a

1,566 . . . = S∗ (f, P10 ) ≤ I ≤ S ∗ (f, P10 ) = 1,698 . . . .

Esto nos da cotas bastante groseras para el valor de I: haciendo el promedio entre nuestra
cota superior y nuestra cota inferior, deducimos que I ≈ 1,632 ± 0,066. Si esta precisión
fuese suficiente para los cálculos que necesitamos, podrı́amos quedarnos satisfechos. Si no
lo fuese, podrı́amos tomar mayor cantidad de puntos.

n S∗ (f, Pn ) S ∗ (f, Pn ) Estimación de I


10 1,56609 . . . 1,69807 . . . 1.6320813 ± 0,06599
100 1,62527 . . . 1,63847 . . . 1,6318717 ± 0,00659
1000 1,63120 . . . 1,63252 . . . 1,6318696 ± 0,00066
10000 1,63180 . . . 1,63193 . . . 1,6318696 ± 0,00007

En principio, podrı́amos seguir aumentando n hasta tener una aproximación de I tan


precisa como queramos. Llama la atención que, cada vez que aumentamos n en un factor
de 10, el margen de error también se reduce en un factor de aproximadamente 10. ¿Será
esto casualidad? ¿Es posible diseñar algún método que nos permita estimar I de forma
más eficiente, logrando que el margen de error se reduzca más rápido? 4

Ejercicio 1.1. Implementar un código de Octave que permita reproducir los resultados
de la tabla de arriba.

1.2.2. Desarrollos de Taylor


El Teorema de Taylor nos indica que toda función lo suficientemente regular puede ser
aproximada mediante funciones polinomiales, los llamados polinomios de Taylor. Además,
contamos con expresiones para el error cometido al hacer estas aproximaciones por poli-
nomios: las llamadas formas de Lagrange o de Cauchy para el resto.
Si tenemos una función que no podemos evaluar de forma sencilla, los polinomios de
Taylor nos ofrecen aproximaciones a los valores de dicha función.

Ejemplo 1.2.2 (polinomio de Taylor). Queremos aproximar el número real y = sen(10−1 )


con 4 dı́gitos de precisión. Utilizando los Teoremas A.1.1 y A.1.2 del capı́tulo de repaso
tenemos, para f (x) = sen(x) (que es infinitamente derivable) y evaluando el polinomio de
orden k alrededor de a = 0 en el punto x = 10−1 ,

sen(k) (0) −1 k
sen(10−1 ) = sen(0) + cos(0)10−1 + . . . + (10 ) + rk (10−1 ),
k!
donde
sen(k+1) (θx ) −1 k+1
rk (10−1 ) = (10 ) , y θx ∈ [0, 10−1 ].
(k + 1)!

13
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Si usamos k = 1, obtenemos la aproximación sen(10−1 ) ≈ 10−1 = 0,1, y podemos estimar


el error cometido usando que la función seno está acotada entre −1 y 1:
− sen(θx ) −2 10−2
|r1 (10−1 )| = 10 ≤ = 0,005.
2 2
Esta aproximación no es lo suficientemente buena para nuestro objetivo, por lo que in-
tentamos con un polinomio de mayor grado. Notemos que poner k = 2 no nos aporta
ningún otro término (porque sen(2) (0) = − sen(0) = 0), por lo que tomamos k = 3 para
−3
obtener sen(10−1 ) ≈ 10−1 − 106 = 0,09983̄. Podemos acotar el error de esta aproximación
mediante
sen(θx ) −4 10−4
|r3 (10−1 )| = 10 ≤ = 4,16̄ × 10−6 .
24 24
Esto quiere decir que nuestra aproximación ya es tan precisa como querı́amos.
Más aún, podemos observar que poner k = 4 no aportarı́a ningún otro término (porque
sen(4) (0) = sen(0) = 0), de modo que la aproximación anterior de hecho corresponde al
polinomio de Taylor de grado 4 y por lo tanto podemos mejorar nuestra estimación de
error:
sen(θx ) −5 10−5
|r4 (10−1 )| = 10 ≤ ≈ 8.3̄ × 10−8 .
120 120
4

1.2.3. Calcular raı́ces cuadradas como un Herón


En el siguiente ejemplo, asumiremos que tenemos a mano una calculadora que solamente
nos permite realizar las operaciones básicas (suma, resta, multiplicación, división). En
muchas aplicaciones es necesario calcular raı́ces cuadradas. Hace unos dos mil años la ne-
cesidad de tener estimaciones precisas era cada vez mayor y lamentablemente los celulares
de la época no tenı́an calculadora, por lo que habı́a que hacer las cuentas “a mano”. El
método que describimos a continuación se debe a Herón de Alejandrı́a.
Ejemplo
√ 1.2.3 (aproximación de raı́ces cuadradas). Queremos estimar el número real
√ {an } definida por√recurrencia. La idea
7 y lo vamos a√hacer a partir de una sucesión
es que, √
si an < 7 (respectivamente, an > 7) entonces 7/an > 7 (respectivamente,
7/a√n < 7), por lo que el punto medio entre an y 7/an puede dar una mejor aproximación
de 7 que cualquiera de estos dos números. Por lo tanto, dado an ∈ R, consideramos
 
1 7
an+1 = an + .
2 an
Sólo necesitamos un iterado √
inicial para tener definida nuestra sucesión. De forma sencilla,
podemos estimar que 2 < 7 < 3. Como primera estimación, tomemos a0 = 3. Esto
da lugar a la sucesión cuyos primeros iterados mostramos a continuación. En negrita,
marcamos las cifras correctas en an .

14
Métodos Numéricos Facultad de Ingenierı́a – IMERL

n an a2n − 7
0 3 2
8
1 3
= 2,6666̄ 0.1̄
2 127
48
= 2,6458 3̄ ≈ 4,3 × 10−4
3 32257
12192
≈ 2,645751312335958 ≈ 6,7 × 10−9

Vemos que, en cada iteración de este procedimiento, la cantidad de dı́gitos correctos √


esencialmente se duplica. Esto se puede justificar de la siguiente forma: sea εn = an√−7 7 ;
en la Sección 1.3 definiremos a esta cantidad como error relativo de la aproximación an .
Es fácil verificar que se cumple
ε2n
εn+1 = , (1.1)
2(1 + εn )
lo que significa que el error relativo se reduce cuadráticamente y por lo tanto es esperable
que la cantidad de dı́gitos correctos se vaya duplicando de un iterado al siguiente. 4

Ejercicio 1.2. Aproximar 7 usando polinomios de Taylor de grado 1 y 2 alrededor del
punto a = 3, como en el Ejemplo 1.2.2. Notar que usando el polinomio de grado 1 se
tiene la misma aproximación que a1 arriba, pero con polinomios de grado 2 se tiene una
aproximación bastante peor que a2 .

Ejercicio 1.3. Sea a ∈ R+ . Generalizar el método del Ejemplo 1.2.3 para estimar a e
implementarlo en Octave.

1.3. Errores
La noción de error se refiere a una discrepancia entre lo que computamos y lo que queremos
computar. En esta sección introducimos la diferencia entre error absoluto y relativo y
estimamos cómo una discrepancia en las entradas afecta a la salida al evaluar una función
o al realizar operaciones aritméticas elementales (suma, resta, producto, división).

1.3.1. Errores absolutos y relativos


Para estimar el error cometido al aproximar una cierta cantidad, es importante distinguir
la magnitud absoluta del error de su magnitud relativa. Por ejemplo, supongamos que A
y B son dos deportistas que corren una carrera y A llega 10 segundos antes que B. Para
poder decir si A le ganó a B “por mucho” o “por poco” necesitamos conocer cuánto duró
la carrera: no es lo mismo si la carrera fue de 100 metros que si fue un maratón de más
de 42 kilómetros.
Definición 1.3.1 (error absoluto). Sean x ∈ R un número real dado y x̄ ∈ R una
aproximación de x. Definimos el error absoluto como la diferencia entre x̄ y x,

ex := x̄ − x.

15
Métodos Numéricos Facultad de Ingenierı́a – IMERL

4
Definición 1.3.2 (error relativo). Sean x ∈ R un número real dado con x 6= 0 y x̄ ∈ R
una aproximación de x. Definimos el error relativo como el error absoluto normalizado
por x,
x̄ − x ex
εx := = .
x x
4
Observación 1.3.1 (errores con signo). Las definiciones anteriores implican que los errores
absoluto y relativo tienen signo: pueden ser positivos o negativos. Elegimos esta convención
porque nos permite relacionar las cantidades x y x̄ mediante las sencillas identidades
x̄ = x + ex y
x̄ = (1 + εx ) x. (1.2)
En general, en las aplicaciones nos interesa la magnitud de los errores y no su signo. En
esos casos, tenemos que estimar o acotar |ex | o |εx |. 4

La definición de error absoluto se puede generalizar a espacios vectoriales, en particular al


espacio Rn . En ese caso, dados un vector x ∈ Rn y una aproximación x̄ ∈ Rn , definimos
el error absoluto mediante
ex := x̄ − x ∈ Rn .
Para generalizar nuestra definición de error relativo, como no podemos dividir por el
vector x, necesitamos introducir una norma en nuestro espacio vectorial. Por ejemplo, si
k · k denota la norma euclı́dea en Rn , podrı́amos definir el error relativo mediante
x̄ − x
εx := para x 6= 0;
kxk
notar que esto no es exactamente lo mismo que definimos en R, por lo que en caso de ser
necesario vamos a aclarar qué definición de error relativo estamos utilizando.

1.3.2. Funciones reales: número de condición


Queremos evaluar una función derivable f : I → R, donde I ⊂ R, y suponemos que
tenemos la capacidad de computar f exactamente. Nos preguntamos cómo un error en
la entrada puede afectar a nuestra evaluación de f . Dado un número real x 6= 0 tal que
f (x) 6= 0, consideramos una aproximación x̄ ∈ R. En virtud de (1.2), podemos relacionar
de forma sencilla a x̄ ∈ R con el error relativo de esta aproximación.
Nos interesa computar y := f (x), pero dado que tenemos acceso a x̄, lo mejor que podemos
hacer es computar ȳ = f (x̄). Podemos estimar el error relativo en y usando un desarrollo
de Taylor de primer orden para f alrededor de x:
ȳ − y f (x̄) − f (x) f 0 (x)(x̄ − x) f 0 (x)x (x̄ − x)
εy = = ≈ = .
y f (x) f (x) f (x) x

16
Métodos Numéricos Facultad de Ingenierı́a – IMERL

(x̄−x)
Al ser x
= εx , deducimos que
f 0 (x)x
εy ≈ εx ,
f (x)
lo que significa que el error relativo en y = f (x) se relaciona con el error relativo en x
mediante un cierto factor. Esto motiva la siguiente definición.
Definición 1.3.3 (número de condición). Llamamos número de condición de f en
el punto x al número
f 0 (x)x
κf (x) := . (1.3)
f (x)
Vagamente,
si κf (x) ∼ 1, diremos que el problema de evaluar f en x está bien condicionado;
κf (x)  1, diremos que el problema de evaluar f en x está mal condicionado.
4
Remarcamos que el hecho de que el problema de evaluar f en x esté bien o mal con-
dicionado solamente tiene que ver con la función f . No estamos asumiendo nada sobre
cómo estamos computando f . En matemática, los números de condición dan una pauta
de la sensibilidad en la salida de una operación (como evaluar una función) respecto a sus
entradas. Al trabajar con sistemas de ecuaciones lineales, vamos a retomar este concepto
y dar una definición análoga a (1.3).

1.3.3. Propagación de errores en operaciones aritméticas


Sean x e y dos números reales, para los que tenemos almacenados respectivas aproxi-
maciones x̄ e ȳ. En esta sección analizamos lo que ocurre con la magnitud del error de
aproximación al realizar las operaciones aritméticas elementales (suma, resta, producto,
división). Recordamos la identidad (1.2),
x̄ = (1 + εx ) x, ȳ = (1 + εy ) y. (1.4)
Suponemos que εx y εy son ambos de magnitud pequeña, en el sentido de que su producto
satisface |εx εy |  mı́n{|εx |, |εy |}.

Producto. Multiplicamos las dos igualdades en (1.4) y obtenemos


x̄ȳ = xy (1 + εx )(1 + εy ) ≈ xy(1 + εx + εy ),
de donde deducimos que, en el producto xy, se tiene el error relativo
εxy ≈ εx + εy .
Esto implica que, en el peor de los casos, el error relativo en el producto entre dos números
es comparable en magnitud al peor de los errores relativos en ellos.

17
Métodos Numéricos Facultad de Ingenierı́a – IMERL

División. Suponiendo que ni y ni ȳ son nulos, dividimos las dos igualdades en (1.4) y
1
usamos el equivalente1 1+t ≈ 1 − t para obtener

x̄ x (1 + εx ) x x
= ≈ (1 + εx )(1 − εy ) ≈ (1 + εx − εy ).
ȳ y (1 + εy ) y y

Esto implica que, en la división x/y, tenemos el error relativo

εx/y ≈ εx − εy .

En consecuencia, en el peor de los casos, el error relativo en la división entre dos números
es comparable en magnitud al peor de los errores relativos en ellos. Recordamos que los
errores relativos son tomados con signo, por lo que el signo negativo en εy no tiene ningún
significado especial.

Suma y resta. Como restar es sumar el opuesto de un número, solamente considera-


mos la suma; naturalmente, podemos suponer que x, y 6= 0. Escribimos directamente la
definición de εx+y y usamos las dos identidades en (1.4):

x̄ + ȳ − (x + y) x y
εx+y = = εx + εy .
x+y x+y x+y
x y
Aquı́, vemos que aparecen los factores x+y
e x+y
multiplicando a εx y εy , respectivamente.
Distinguimos tres casos.

Si xy > 0 (es decir, si x e y tienen igual signo), entonces los factores que multiplican
a εx y εy son ambos positivos, suman 1, y podemos acotar
x y
|εx+y | ≤ máx{|εx |, |εy |} + máx{|εx |, |εy |} = máx{|εx |, |εy |}.
x+y x+y

En este caso, el error relativo en la suma x + y no es peor en magnitud que el peor


de los errores relativos en x e y.

Si xy < 0 y |x|  |y| (o |x|  |y|), entonces los factores que multiplican a εx y εy
no son mucho mayores que 1 en valor absoluto y tenemos

x y
|εx+y | ≤ |εx | + |εy | . |εx | + |εy |.
x+y x+y

En este caso tenemos que, en el peor de los casos, el error relativo en la suma x + y
es comparable en magnitud con el peor de los errores relativos en x e y.
1 1
Este equivalente no es otra cosa que el polinomio de Taylor de orden 1 de la función f (t) = 1+t
alrededor del origen.

18
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Si xy < 0 y x ≈ −y, entonces tendremos x + y ≈ 0. Esto nos pone en problemas:


¡los factores que multiplican a εx y εy pueden ser muy grandes! Este fenómeno lleva
el nombre de cancelación catastrófica.

Vamos a ilustrar por qué se usa el tan dramático término “cancelación catastrófica” con
un ejemplo.
Ejemplo 1.3.1 (cancelación catastrófica). Buscamos las raı́ces del polinomio x2 − 56x +
1 = 0. Es fácil mostrar que estas raı́ces son
√ √
r1 = 28 + 783 ≈ 55,982; r2 = 28 − 783 ≈ 0,017863.
Supongamos que √ solamente tenemos 5 cifras de precisión. Con ellas, 28 se computa
exactamente y 783 se aproxima como 27,982. Tenemos errores relativos ε28 = 0 y
ε√783 ≈ −4,90 × 10−6 .

La raı́z r1 se puede calcular sin error considerable (e incluso mejor que el de 783) pues
estamos sumando números positivos,
r1 = 28 + 27,982 = 55,982 εr1 ≈ −2,45 × 10−6 .

Sin embargo, el cálculo de la raı́z r2 implica una resta de dos valores muy próximos,
r2 = 28 − 27,982 = 0,018, εr2 ≈ 7,7 × 10−3 .
Observamos que el error relativo en r2 aumentó en magnitud en un factor de aproxima-
damente 1500 respecto al error relativo en las entradas que utilizamos. Este aumento de
magnitud
√ puede causar que un error tolerable en las entradas (nuestras aproximaciones
de 28 y 782) dé lugar a un error no tolerable en la aproximación de r2 : esto es lo que se
llama una cancelación catastrófica.
Para evitar caer en una cancelación catastrófica, es importante evitar computar r2 en la
forma en que lo hicimos. Una forma de lograrlo es reescribir el polinomio original como
x2 − 56x + 1 = (x − r1 )(x − r2 ) = x2 − (r1 + r2 )x + r1 r2 .
Podemos determinar r2 igualando los coeficientes término a término y usando el valor ya
calculado para r1 . Si utilizamos el término independiente se tiene
1 1
r1 r2 = 1 ⇔ r2 = = ≈ 0,017863, εr2 ≈ 8,9 × 10−6 .
r1 55,982
Esta es una aproximación que tiene un error√relativo del mismo orden de magnitud que
el que tenemos en nuestra aproximación de 783. En cambio, observar que si en lugar
del término independiente quisiéramos determinar r2 usando el término en x, entonces
llegarı́amos al mismo mal resultado que antes. 4

Del ejemplo anterior, sacamos una importante moraleja: cuando nos enfrentamos a
problemas que implican restar números de igual magnitud, es importante bus-
car reescribir las fórmulas para evitar cancelaciones catastróficas.

19
Métodos Numéricos Facultad de Ingenierı́a – IMERL

1.4. Aritmética de punto flotante


Independientemente de qué sistema de representación usemos, en general un número real
puede tener infinitos dı́gitos. Intuitivamente, esto quiere decir que para almacenar exacta-
mente un número real podemos llegar a necesitar infinita información. En consecuencia,
las computadoras tienen que truncar en algún lugar las representaciones de los números.
Además, la cantidad de números reales es infinita, por lo que tampoco es esperable que
las computadoras los puedan almacenar a todos: la cantidad de números representables
es finita.
Vamos a hacer pasar un poco de vergüenza a nuestra máquina. Hacemos la siguiente
operación “a mano”:
1 + 10−16 − 1 = 10−16 .
Sin embargo, si ejecutamos la misma operación (y en el mismo orden) en Octave, nos
encontramos con una sorpresa:

>> 1 + 1e-16 - 1 [Enter]


ans = 0

¿Por qué ocurre esto? La máquina realiza las operaciones en el orden en que se le presentan,
por lo que primero suma 1 + 10−16 y al resultado que obtiene le resta 1. El hecho de que el
resultado final sea igual a 0 quiere decir que, para la máquina, los números 1 + 10−16
y 1 son indistinguibles.
En general, al almacenar un número x podremos guardar algún número próximo a éste
de entre el conjunto de números que puede representar exactamente la máquina. A conti-
nuación estudiamos este conjunto y algunas de sus propiedades básicas, luego analizamos
qué efectos puede tener este error de representación (o almacenamiento), y finalmente
marcamos algunos cuidados que debemos tener en consecuencia.

1.4.1. Representación de punto flotante


Un bit es la unidad básica de información usada en el cómputo: es un número binario
(un 0 o un 1). En la aritmética de punto flotante, cada número es almacenado por un
conjunto de bits. Hoy en dı́a, el estándar más utilizado es el formato de precisión doble
de la IEEE, en el que cada número es representado por 64 bits, esto es, una tira de 0’s o
1’s de longitud 64. De los 64 bits que forman a un número x, tendremos

1 bit para el signo (±);

52 bits para la mantisa (f );

11 bits para el exponente (e).

20
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Ası́, los números de punto flotante son aquellos que se pueden escribir de la forma
x = ±(1 + f ) × 2e . (1.5)
Aquı́, la mantisa es un número 0 ≤ f < 1 tal que 252 f es un número entero, esto es,
j
f= , j ∈ {0, 1, . . . , 252 − 1}.
252
Notemos que hay exactamente 252 posibles valores para f , lo que se corresponde con el
hecho de que f sea representado por 52 bits.
En cambio, el exponente e es un número entero tal que −1022 ≤ e ≤ 1023. Observemos
que esta elección nos deja 2046 = 211 − 2 posibles valores para e; los dos valores restantes
para el exponente (e = −1023 y e = 1024) se reservan para ciertos números especiales.

Distribución de números

Analicemos con más detalle cómo se distribuyen los números de punto flotante. Para fijar
ideas, consideremos los posibles números de punto flotante que se corresponden con signo
positivo y e = 0 en (1.5). Al variar la mantisa f , tendremos un conjunto de 252 números,
252 − 1
 
1 2 3
1, 1 + 52 , 1 + 52 , 1 + 52 , . . . 1 + .
2 2 2 252
Este conjunto es el conjunto de números en el intervalo [1, 2) que pueden ser representados
exactamente por una máquina que use el estándar de precisión doble. Notamos que este
conjunto es un conjunto de 252 números equiespaciados, con una separación igual a 2−52 .
Ahora, fijemos un valor de e mayor en (1.5), por ejemplo e = 4. Al variar la mantisa
f , nuevamente tendremos un conjunto de 252 números equiespaciados pero ahora en el
intervalo [24 , 25 ) = [16, 32),
252 − 1
         
1 2 3
16, 1 + 52 × 16, 1 + × 16, 1 + 52 × 16, ... 1 + × 16 .
2 252 2 252
La separación entre elementos consecutivos de este conjunto es 16
252
= 2−48 , esto es, 16
veces mayor que la separación en el intervalo [1, 2).
Observamos, pues, que el conjunto de números de punto flotante es finito y la
distancia entre números consecutivos no es globalmente uniforme.

Redondeo y truncamiento.

Como hemos visto, los sistemas de representación pueden representar una cantidad finita
de números, por lo que al desear representar un número real x que quizás no esté incluido
en el mismo, la computadora deberá aproximarlo con un número fl(x) que sı́ lo esté. Para
esta aproximación existen dos métodos habitualmente usados:

21
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Redondeo: aproximar el real al número representable más cercano. Si los números


representables más cercanos son dos, se aproxima al menor.

Truncamiento: aproximar el real al número representable menor más próximo.

A menos que especifiquemos lo contrario, en adelante asumimos que nuestra máquina


hace redondeo para representar números reales que no estén incluidos en el sistema de
punto flotante que use.

1.4.2. Constantes de máquina y números especiales


En esta sección definimos algunas constantes relevantes respecto a un sistema de punto
flotante. Comenzamos con una que representa la capacidad relativa de aproximar números
reales.

Definición 1.4.1 (épsilon de máquina). Llamamos épsilon de máquina (εM ) a la


separación entre el número 1 y el siguiente número representable de un sistema de punto
flotante. 4

Observación 1.4.1 (valor numérico de εM ). Para determinar el valor de εM en el formato


de precisión doble, nos basta con observar que el menor número estrictamente mayor a 1
y representable en precisión doble se corresponde con las elecciones:

signo: +, exponente: e = 0, mantisa: f = 2−52 ,

lo que arroja el número x = 1 + 2−52 en (1.5). Deducimos, por lo tanto, que en precisión
doble
εM = 2−52 ≈ 2,2 × 10−16 .

En Octave y Matlab, el comando eps nos devuelve el valor de εM para precisión doble,
que es el formato que nuestras máquinas usan por defecto:

>> eps [Enter]


ans = 2.2204e-16

Como los sistemas de punto flotante incluyen una cantidad finita de números, necesaria-
mente debe haber uno máximo y uno mı́nimo (en valor absoluto) representables.

Definición 1.4.2 (Realmax y Realmin ). Llamamos Realmax al mayor número represen-


table exactamente en un sistema de punto flotante y Realmin al menor número positivo
representable en un sistema de punto flotante. 4

22
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Observación 1.4.2. Para determinar el valor de Realmax en el formato de precisión doble,


basta con tomar el signo positivo, y el exponente y la mantisa mayores posibles:

signo: +, exponente: e = 1023, mantisa: f = 1 − 2−52 ,

lo que en (1.5) arroja

Realmax = (2 − 2−52 ) × 21023 ≈ 1,8 × 10308 .

De forma análoga, para determinar el valor de Realmin en el formato de precisión doble


tomamos el signo positivo, y el exponente y la mantisa menores posibles:

signo: +, exponente: e = −1022, mantisa: f = 0,

lo que da lugar a
Realmin = 1 × 2−1022 ≈ 2,2 × 10−308 .

En Octave y Matlab, los comandos realmax y realmin nos devuelven los valores de
Realmax y Realmin para precisión doble, respectivamente:

>> realmax [Enter]


ans = 1.7977e+308
>> realmin [Enter]
ans = 2.2251e-308

4
Recordamos que los exponentes e = −1023 y e = 1024 se reservan para ciertos números
especiales. Veamos algunos de estos casos.
Definición 1.4.3 (overflow e Inf). Si un cálculo en la máquina arroja un número mayor
que Realmax , decimos que se produce un overflow. El resultado de este cálculo es un
número de punto flotante llamado Inf, que se almacena con el exponente e = 1024 y la
mantisa f = 0. 4
Definición 1.4.4 (NaN). Si hacemos un cálculo en la máquina que no está definido en
el sistema real, como por ejemplo 0/0 o Inf − Inf, el resultado de nuestro cálculo es un
número de punto flotante llamado NaN2 , que se almacena con el exponente e = 1024 y
una mantisa f 6= 0. 4

Cero. Al número 0 obviamente no se lo puede escribir en el formato (1.5). En el estándar


IEEE 754, se tienen ceros con signo: uno positivo y uno negativo, y que formalmente se
tratan como objetos distintos. Estos números se representan con el exponente e = −1023,
la mantisa f = 0 y el signo determina de qué cero se trata. Como como caso de uso, si
escribimos en Octave:
2
NaN proviene del inglés Not-a-Number, que significa “no es un número”.

23
Métodos Numéricos Facultad de Ingenierı́a – IMERL

>> x_pos = 1e-300;


>> x_neg = -1e-300;
>> pos_cero = x_pos * 0 [Enter]
pos_cero = 0
>> neg_cero = x_neg * 0 [Enter]
neg_cero = 0

obtenemos que ambos resultados son cero. Ahora, si usamos estas variables para calcular:

>> 1/pos_cero [Enter]


ans = Inf
>> 1/neg_cero [Enter]
ans= -Inf

tenemos dos infinitos distintos. En particular, escribiendo el cero positivo como +0,0 y el
negativo como −0,0, en el estándar IEEE 754 se cumple
1 1
= +Inf, = −Inf.
+0,0 −0,0
Por defecto, al computar o escribir 0 en Octave o Matlab, obtenemos +0,0.

Subnormales. Finalmente, puede ocurrir que hagamos en la máquina un cálculo cuyo


resultado sea un número real menor en valor absoluto que Realmin . En ese caso, se puede
hablar de un underflow. El resultado podrı́a ser 0 (uno de los dos!), pero optativamente
el formato da lugar a una mayor representación: los números subnormales. Éstos son
números a los que el estándar IEEE 754 deja como optativos de incluir. Se encuentran
entre eps*realmin y realmin y se los representa con el exponente e = −1023 y mantisas
f = 2−52 , . . . , 1 − 2−52 .

1.4.3. Error de representación en punto flotante


Consideremos un número x ∈ R \ {0} y sea fl(x) su representación en punto flotante
utilizando redondeo. Una pregunta muy relevante para nosotros es estimar el error come-
tido al aproximar x por fl(x). Como adelantamos antes de la Definición 1.4.1, el épsilon de
máquina entra en juego para estimar el error relativo de esta aproximación (ver Definición
1.3.2). El siguiente resultado nos muestra que, independientemente de la magnitud de x,
el error relativo al representarlo en punto flotante permanece uniformemente acotado.
Proposición 1.4.1 (aproximación relativa con precisión doble). Sean x ∈ R tal que
2−1022 ≤ |x| < 21024 y fl(x) su representación de punto flotante en formato de precisión
doble. Entonces, se cumple
|fl(x) − x| εM
|εx | = ≤ , (1.6)
|x| 2
donde εM = 2−52 es el épsilon de máquina de dicho formato.

24
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Demostración. Sea x tal que 2−1022 ≤ |x| < 21024 ; sin perder generalidad, asumimos que
x es positivo. Consideremos los intervalos de la forma [2e , 2e+1 ) con e entero y tal que
−1022 ≤ e ≤ 1023. Como estos intervalos son disjuntos dos a dos y la unión de todos
ellos es [2−1022 , 21024 ), necesariamente x tiene que estar en uno de ellos. Esto es, existe un
único e entero con −1022 ≤ e ≤ 1023 y αx ∈ [0, 1) tales que
x = (1 + αx ) × 2e .
−52
Si αx ≤ 1 − 2 2 , entonces la representación de punto flotante de x usando redondeo es
un número fl(x) de la forma
fl(x) = (1 + fx ) × 2e .
Notemos que el exponente es el mismo que en x, y la mantisa es fx = k2−52 para algún
k = 0, . . . , 252 − 1. Si restamos, dividimos por x y simplificamos las exponenciales, nos
encontramos con que
fl(x) − x fx − αx
= .
x 1 + αx
Finalmente, tenemos que 1 + αx ≥ 1, y como estamos usando redondeo se cumple |αx −
−52
fx | ≤ 2 2 ; notar que como el espaciado entre mantisas es de 2−52 , la mantisa más cercana
a αx no puede estar a una distancia mayor que la mitad de este espaciado. Tomando valor
absoluto en la igualdad anterior y acotando, se llega a (1.6).
2−52
Por otra parte, si 1 − 2
< αx < 1, entonces la representación de punto flotante de x
usando redondeo es
fl(x) = 1 × 2e+1 .
Dejamos como ejercicio verificar que en ese caso también se cumple (1.6).
Observación 1.4.3 (cota inferior para |x|). La condición sobre |x| en la Proposición 1.4.1
es necesaria para evitar que fl(x) sea Inf o 0, aunque la cota inferior puede mejorarse si
se usan números subnormales. También observemos que esta proposición refiere al error
relativo al aproximar con redondeo un número en punto flotante; si nos interesa estimar
el error absoluto en esta aproximación, usando la Definición 1.3.1 tenemos
|x| εM
|ex | = |x εx | ≤
.
2
Por lo tanto, mientras nuestra mejor cota para el error relativo al aproximar un
número real es uniforme, nuestra mejor cota para el error absoluto depende
de la magnitud de dicho número real. 4

1.5. Propagación de errores en punto flotante


En la Sección 1.4 discutimos la capacidad de la aritmética flotante de aproximar números
reales y en la Sección 1.3 estudiamos cómo los errores se pueden ver afectados al evaluar
funciones o realizar operaciones aritméticas en forma exacta. Aquı́ combinamos ambos
temas: analizamos cómo se propagan los errores al utilizar aritmética de punto flotante.

25
Métodos Numéricos Facultad de Ingenierı́a – IMERL

1.5.1. Advertencias
La aritmética en punto flotante no es ni asociativa ni distributiva: las operaciones se
hacen por etapas y en cada operación se aplica el redondeo correspondiente. Por lo tanto,
colocar paréntesis puede alterar el resultado en punto flotante incluso cuando no lo hace
en aritmética real. Recordando que en el formato de precisión doble εM = 2−52 ≈ 2,204 ×
10−16 , veamos un ejemplo.

>> (1 + 1e-16) + 1e-16 - 1 [Enter]


ans = 0

>> 1 + (1e-16 + 1e-16) - 1 [Enter]


ans = 2.2204e-16

>> (1 + 1e-16) + (1e-16 - 1) [Enter]


ans = 1.1102e-16

¿Por qué obtenemos tres resultados diferentes3 ? En el primer caso, la operación entre
paréntesis da como resultado 1 (porque 1 + 10−16 se redondea a 1), al sumarle a ese 1
el número 10−16 se vuelve a obtener 1, y al restar 1 se obtiene 0. En el segundo caso,
primero se resuelve la suma entre paréntesis, cuyo resultado es 2.0000e-16. Al sumar 1
más dicho número el resultado es 1+eps (porque estamos usando redondeo), y al restar 1 se
obtiene como resultado final eps. Finalmente, en el tercer caso se resuelven las sumas entre
paréntesis en primer lugar: el resultado de la primera es 1 y el de la segunda es -1+0.5*eps
(ver el ejercicio a continuación). Al sumar ambas, el resultado final es 0.5*eps.

Ejercicio 1.4. Explicar por qué al computar 1e-16 - 1 en Octave se obtiene el resultado
-1+0.5*eps.

1.5.2. Análisis de error hacia adelante


Ahora combinamos ingredientes sobre propagación de errores (secciones 1.3.2 y 1.3.3) con
lo que sabemos sobre aproximaciones de punto flotante (Sección 1.4.3). Como en la Sección
1.3.2 , supongamos que queremos evaluar una función derivable f : I → R en un cierto
punto x ∈ I tal que y = f (x) 6= 0 y que tenemos la capacidad de evaluar f exactamente
en cualquier punto dado. En general, no tenemos acceso a x, sino a su representación de
punto flotante fl(x). Por la Proposición 1.4.1, sabemos que fl(x)−x
x
≤ ε2M .
Lo mejor que podemos esperar es que computemos ŷ = f (fl(x)) exactamente y que luego
aproximemos ŷ usando punto flotante, esto es, que computemos ȳ = fl(ŷ) = fl(f (fl(x))).
3
Para hacer las cosas peor, ¡los tres resultados son incorrectos en aritmética real!

26
Métodos Numéricos Facultad de Ingenierı́a – IMERL

De nuestra discusión sobre números de condición, sabemos que


ŷ − y εM
≤ κf (x) .
y 2
Luego, usando la desigualdad triangular y que y ≈ ŷ, deducimos
ȳ − y fl(ŷ) − ŷ ŷ − y fl(ŷ) − ŷ ŷ − y εM εM
≤ + ≈ + ≤ + κf (x) . (1.7)
y y y ŷ y 2 2

Al término ε2M + κf (x) ε2M lo llamamos error inevitable al computar f (x). Es la mejor
cota que podemos tener para el error relativo en caso de que pudiésemos computar f
exactamente. Para valorar la calidad de un algoritmo, más que utilizar como referencia el
error en su salida, debemos comparar este error con el error inevitable. Si un algoritmo
para computar y = f (x) produce una salida ȳ con error relativo comparable con el error
inevitable, diremos que el algoritmo es “bueno”. Esta no es una definición matemática,
pero nos da una pauta de la calidad de un método dado. Veamos dos ejemplos.
Ejemplo 1.5.1 (algoritmo malo, algoritmo bueno). Queremos evaluar y = 1 − cos(x) en
x = 10−10 . Estimamos el número de condición de f (x) = 1 − cos(x) en el punto 10−10 (ver
(1.3)) usando que sen t ≈ t y 1 − cos t ≈ t2 /2 para t ≈ 0,

− sen(10−10 ) 10−10
κf (10−10 ) = ≈ 2.
1 − cos(10−10 )

Por (1.7), esto implica que el error inevitable al computar y = 1 − cos(10−10 ) es aproxima-
damente 32 εM ; en otras palabras, teóricamente deberı́a ser posible computar y sin cometer
un gran error relativo.
Para computar y, la estrategia que parece más obvia es la que harı́amos si tuviésemos
lápiz y papel: en primer lugar calcular y1 = cos(10−10 ), y luego computar y = 1 − y1 . Esto
se corresponde con componer f2 ◦ f1 (10−10 ), donde

f1 (z) = cos z, f2 (z) = 1 − z.

Analicemos la mejor cota que podemos obtener para la magnitud del error relativo en
este algoritmo. Razonando como hicimos para llegar a (1.7), tenemos
εM
|εy | ≤ + κf2 (y1 ) |εy1 |,
2
y
εM εM
|εy1 | ≤ + κf1 (x) .
2 2
Aquı́ utilizamos que la magnitud del error relativo al aproximar x se puede acotar por ε2M ,
ya que x es la entrada de nuestro algoritmo. Combinando las dos expresiones, obtenemos
εM ε
M εM 
|εy | ≤ + κf2 (y1 ) + κf1 (x) .
2 2 2
27
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Por lo tanto, nos basta con estimar los números de condición κf1 (x) y κf2 (y1 ). Usando
nuevamente la definición (1.3) y las aproximaciones sen(10−10 ) ≈ 10−10 y 1 − y1 = 1 −
cos(10−10 ) ≈ 10−20 /2, tenemos

− sen(10−10 ) 10−10
κf1 (x) = ≈ 10−20 ,
cos(10−10 )
y1
κf2 (y1 ) = ≈ 2 × 1020 .
1 − y1
Sustituyendo, obtenemos la cota
εM ε
M εM 
|εy | ≤ + 2 × 1020 + 10−20 ≈ εM × 1020 .
2 2 2
¡Esta cota es del orden de 1020 veces peor que el error inevitable! Esto nos da la pauta de
que este es un mal algoritmo: si lo implementamos computacionalmente, estamos intro-
duciendo cancelaciones catastróficas. Es muy sencillo verificarlo computacionalmente:

>> y = 1 - cos(1e-10) [Enter]


y = 0

Analicemos un algoritmo alternativo. Utilizamos la identidad trigonométrica

1 − cos(x) = 2 sen2 (x/2),

y computamos y1 = f1 (x) = x/2, y2 = f2 (y1 ) = sen(y1 ), y3 = f3 (y2 ) = y22 , y4 = f4 (y3 ) =


2y3 . Se verifica que (Ejercicio 1.5)

κf1 (x) = 1, κf2 (y1 ) ≈ 1, κf3 (y2 ) = 2, κf4 (y3 ) = 1

y por lo tanto este algoritmo da lugar a


εM hε
M

M

M εM i
|εy | ≤ + κf4 (y3 ) + κf3 (y2 ) + κf2 (y1 ) + κf1 (x)
2 2ε 2 2 2
εM h εM M

M εM i
≈ + +2 + + = 4εM .
2 2 2 2 2
Esta cota para el error relativo es comparable con el error inevitable: este es un buen
algoritmo. Notar que este segundo algoritmo evita restar números de igual magnitud.
Confirmamos nuestra predicción teórica computacionalmente:

>> y = 2*sin(1e-10/2)^2 [Enter]


y = 5.0000e-21

28
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Ejercicio 1.5. Completar los detalles de la estimación del error para el segundo algoritmo
en el ejemplo anterior.
Ejemplo 1.5.2 (otro ejemplo de cancelaciones). Consideremos el polinomio

p(x) = x7 − 7x6 + 21x5 − 35x4 + 35x3 − 21x2 + 7x − 1. (1.8)

Es fácil verificar que p tiene una raı́z en x = 1. Corremos en Octave unas lı́neas de código
que nos permitan graficarlo para x ∈ (0,99, 1,01):

>> x = linspace(0.99, 1.01);


>> y = x.^7-7*x.^6+21*x.^5-35*x.^4+35*x.^3-21*x.^2+7*x-1;
>> plot(x,y)

El resultado se muestra a la izquierda en la Figura 1.1. El gráfico no se parece en nada


al de un polinomio. Con nuestros conocimientos de cancelaciones catastróficas, podemos
entender que evaluar computacionalmente la expresión (1.8) para x ≈ 1 es una mala
práctica. Como alternativa, podemos darnos cuenta de que se puede factorizar

p(x) = (x − 1)7 . (1.9)

Usamos esta expresión en Octave y graficamos nuevamente

>> x = linspace(0.99, 1.01);


>> z = (x-1).^7;
>> plot(x,z)

El resultado se muestra a la derecha en la Figura 1.1, y notamos que ahora sı́ se parece a
lo que esperamos del gráfico de un polinomio.
En teorı́a, las dos opciones que presentamos arriba nos permitirı́an graficar al polinomio
p en el intervalo (0,99, 1,01). Sin embargo, al evaluar p(x) con x cercano a 1, la primera
introduce cancelaciones que se pueden evitar si se factoriza a p. La segunda opción es
computacionalmente mucho más robusta que la primera. 4
Ejercicio 1.6. Justificar la última afirmación del ejemplo anterior: realizar un análisis de
error hacia adelante para computar p(x) con x cercano a 1 usando ambos métodos.
Observación 1.5.1 (análisis de error hacia atrás). El análisis de error hacia adelante mide
la discrepancia entre los valores computados y los valores exactos que queremos aproximar.
Un enfoque alternativo para estimar el error consiste en, dado un algoritmo, preguntarse
cuánta deberı́a ser la discrepancia entre la entrada que usamos y la entrada exacta para
que se produzca la salida aproximada que obtuvimos. Esta alternativa se suele llamar
análisis de error hacia atrás, pero no profundizaremos en ella. Para quien esté interesado,
referimos a [Hea02, Sección 1.2.5]. 4

29
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Figura 1.1: Gráfico de p(x) usando (1.8) (izquierda) y usando (1.9) (derecha).

1.5.3. Cálculo de derivadas usando diferencias hacia adelante


Concluimos este capı́tulo con una aplicación que ilustra cómo pueden interactuar dos ti-
pos de errores distintos que discutimos en la Sección 1.1.1. Volviendo al Ejemplo 1.1.1,
podemos pensar que estamos haciendo los últimos dos pasos que allı́ mencionamos: dis-
cretización e implementación.
Sea f : R → R, de clase C 2 . Recordamos la definición de la derivada de f en x ∈ R,
f (x + h) − f (x)
f 0 (x) = lı́m ∆h f (x), donde ∆h f (x) := .
h→0 h
Al número ∆h f (x) se lo suele llamar cociente incremental (o diferencia hacia adelante) de
f en x con paso h. Queremos evaluar f 0 (x) numéricamente en un punto x en el que f (x) 6=
0, f 00 (x) 6= 0. Para simplificar nuestro análisis, vamos a suponer que podemos almacenar a
x y a x + h exactamente. Como queremos que nuestra máquina pueda distinguir f (x) de
f (x + h), ya sabemos que no podemos tomar h arbitrariamente pequeño. Una estrategia
razonable –y que ya propusimos en el Ejemplo 1.1.1– es aproximar
f 0 (x) ≈ ∆h f (x), (1.10)
para pasos h > 0 pequeños y fijos4 . Si estuviésemos trabajando con aritmética real,
entonces obviamente serı́a conveniente tomar h lo más pequeño posible. Sin embargo,
si trabajamos con una máquina nos enfrentamos al riesgo de introducir cancelaciones
catastróficas en el numerador: si f (x) 6= 0, hacer f (x + h) − f (x) con h pequeño es
justamente lo que en la Sección 1.3.3 dijimos que era peligroso computacionalmente. De
hecho, más que trabajar con (1.10), en la práctica vamos a aproximar con
fl(f (x + h)) − fl(f (x))
f 0 (x) ≈ . (1.11)
h
4
Tomar h < 0 no reviste ninguna dificultad técnica adicional. Simplemente tomamos h > 0 para
alivianar la notación.

30
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Podrı́amos haber puesto fl(h) en vez de h en el denominador, pero como no vamos a tener
cancelaciones, la simplificación que hicimos no es relevante.
Estimemos la magnitud del error absoluto en la aproximación (1.11). Observamos que hay
dos fuentes de error:

El error de truncamiento, asociado a que en vez de tomar lı́mite estamos dejando


fijo un h pequeño. Esperamos que este error se reduzca cuanto menor sea h.

El error de redondeo, asociado a que estamos trabajando con precisión finita


(punto flotante). Esperamos que este error aumente cuanto menor sea h.

Una forma de cuantificar esta observación es utilizar una desigualdad triangular para
separar el error absoluto como la suma de las componentes de truncamiento y de redondeo,

fl(f (x + h)) − fl(f (x))


|ef 0 (x) | = f 0 (x) −
h
fl(f (x + h)) − fl(f (x)) (1.12)
≤ |f 0 (x) − ∆h f (x)| + ∆h f (x) −
h
=: |errortruncamiento | + |errorredondeo |.

Error de truncamiento

Comenzamos por acotar el primer término del lado derecho en (1.12). Este término tiene
que ver exclusivamente con reemplazar la derivada por un cociente incremental. Para
analizarlo, basta con utilizar un desarrollo de Taylor de primer orden en el punto x,
usando la expresión de Lagrange para el resto,

h2
f (x + h) = f (x) + f 0 (x) h + f 00 (c) para algún c ∈ [x, x + h].
2
Con esta expresión, podemos despejar y estimar

h
|errortruncamiento | = |f 00 (c)| .
2

Como estamos asumiendo que f es de clase C 2 y c ∈ [x, x + h], entonces esperamos que
f 00 (c) ≈ f 00 (x). Obtenemos ası́ una estimación para el error de truncamiento,

h
|errortruncamiento | ≈ |f 00 (x)| . (1.13)
2
Deducimos que el error de truncamiento es de orden h: esperamos que decrezca linealmente
al decrecer el paso h.

31
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Error de punto flotante

Por la Proposición 1.4.1 y usando la expresión (1.2), sabemos que se cumple

fl(f (x + h)) = (1 + εf (x+h) )f (x + h), fl(f (x)) = (1 + εf (x) )f (x),

con
εM εM
|εf (x+h) | ≤ , |εf (x) | ≤ .
2 2
Por lo tanto, podemos reemplazar fl(f (x+h)) y fl(f (x)) y utilizar la desigualdad triangular
y las cotas para los errores relativos para obtener
|f (x + h) εf (x+h) − f (x) εf (x) |
|errorredondeo | =
h
|f (x + h)| |εf (x+h) | + |f (x)| |εf (x) |

 h 
|f (x + h)| + |f (x)| εM
≤ .
h 2
Como f es continua y f (x) 6= 0, podemos suponer f (x + h) ≈ f (x), y concluimos que
|f (x)| εM
|errorredondeo | . . (1.14)
h
A diferencia del error de truncamiento, nuestra cota para este error es inversamente pro-
porcional al paso h. Esto significa que un paso demasiado pequeño puede incrementar el
error relacionado a la representación en punto flotante.

Paso óptimo

Tenemos entonces que, por un lado, se requiere un paso pequeño para minimizar el error de
truncamiento, pero por otro lado un paso demasiado pequeño puede dar lugar a problemas
de punto flotante. Una forma de encontrar el paso óptimo es combinar (1.13) y (1.14),
sustituir en (1.12) para obtener
h |f (x)| εM
|ef 0 (x) | ≤ |f 00 (x)| + ,
2 h
y buscar el valor hopt > 0 en el que el lado derecho se hace lo menor posible. Esto se logra
de forma sencilla derivando el lado derecho de la desigualdad respecto a h y despejando.
Obtenemos s
2 |f (x)| εM
hopt = , (1.15)
|f 00 (x)|
lo que da lugar a una cota óptima para la magnitud del error absoluto,
p
|ef 0 (x),opt | = 2 |f (x)| |f 00 (x)| εM (1.16)

32
Métodos Numéricos Facultad de Ingenierı́a – IMERL

En la Figura 1.2 ilustramos cómo se comportan las dos componentes del error y su suma al
variar h. Esta sencilla figura es ilustrativa del comportamiento cualitativo de los errores de
truncamiento y de redondeo, pero en la práctica podemos ver algo un poco más interesante.

00
etrunc = |f (x)|
2
h

ered = |f (x)|
h
εM

etotal = etrunc + ered

Figura 1.2: Cota superior del error total. Permite hallar h óptimo.

Ejemplo 1.5.3 (estimación del paso óptimo). Apliquemos la discusión anterior a apro-
ximar la derivada de la función f (x) = ex en el punto x = 1. Como f 00 (1) = f (1) = e, las
expresiones (1.15) y (1.16) nos indican que

hopt = 2εM = 2−52/2 ≈ 2,1 × 10−8 , |ef 0 (x),opt | = hopt e ≈ 5,7 × 10−8 .

Implementamos en Octave un código que tome varios h en el intervalo [10−16 , 10−1 ], calcule
las aproximaciones (1.11) y estime el error sabiendo que f 0 (x) = e.

n = 1000;
derivadas = zeros(1,n);
h = 10.^(-linspace(1,16,n)); % toma n puntos entre 10^{-16} y 10^{-1}
f = @(x) exp(x);
x = 1;

for k = 1:n
derivadas(k) = (f(x+h(k))-f(x))/(h(k));
end

errores = abs(derivadas - exp(1)*ones(1,n));


loglog(h,errores) % genera un grafico con ejes logaritmicos

33
Métodos Numéricos Facultad de Ingenierı́a – IMERL

La salida de este código se muestra en la Figura 1.3. Observamos que, para h grande,
el error computado decrece linealmente al reducir h: esta es la región en la que domina
el error de truncamiento. En cambio, para h pequeño el error se comporta de manera
errática aunque muestra una tendencia a crecer al reducir h: en esta región domina el
error de redondeo. La transición entre una región y la otra se da cuando h (y el error) son
del orden de 10−8 , consistentemente con nuestras estimaciones de hopt y |ef 0 (x),opt |.

Figura 1.3: Error computacional en el Ejemplo 1.5.3.

Ejercicio 1.7. En la Figura 1.3 se observa que para h ≈ 10−16 ≈ εM el error absoluto es
del orden de una unidad. Estimar el error de redondeo para h = 10−16 .

34
Capı́tulo 2

Sistemas de ecuaciones lineales

2.1. Introducción
Un sistema de m ecuaciones lineales y n incógnitas consiste en un conjunto de relaciones
algebraicas de la forma
Xn
aij xj = bi ∀ i = 1 . . . m,
j=1

que puede ser representado en notación matricial como Ax = b:


     
a11 a12 . . . a1n x1 b1
 a21 a22 . . . a2n   x2   b2 
n
A =  .. ..  ∈ Mm×n (R), x =  ..  ∈ R , b =  ..  ∈ Rm .
     
.. ..
 . . . .   .   . 
am1 am2 . . . amn xn bm

Cuando m = n, decimos que el sistema es cuadrado; en ese caso, el sistema tiene solución
única si y sólo si det A 6= 0. En este capı́tulo trabajamos con sistemas de este tipo, a los
que llamamos compatibles determinados.
Asumiendo que el sistema Ax = b tiene solución única, nos planteamos cómo hallarla.
En general, los métodos de resolución de sistemas lineales pueden ser clasificados en las
siguientes dos categorı́as.

Aquellos métodos que, si tuviésemos precisión infinita, nos permitirı́an obtener la


solución exacta luego de una cantidad finita de pasos. Estos métodos se dicen di-
rectos.

Aquellos métodos que, en lugar de permitirnos obtener la solución exacta x en una


cantidad finita de pasos, nos arrojan una sucesión de vectores {xk } ⊂ Rn con xk → x
con k → ∞. Estos métodos se dicen indirectos.

35
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Comenzamos mostrando un primer ejemplo de método directo, que ya hemos encontrado


en el curso de Geometrı́a y Álgebra Lineal 1.

Ejemplo 2.1.1 (regla de Cramer). Dado el sistema Ax = b, la regla de Cramer devuel-


ve cada entrada del vector solución solamente como un cociente de determinantes que
dependen de la matriz A y del vector b. En efecto, se tiene

det(Ai )
xi = ,
det(A)

donde Ai es la matriz resultante al reemplazar la columna i-ésima de la matriz A por el


vector b.
Por ejemplo, para resolver el sistema Ax = b con
   
3 1 5
A= y b= ,
1 −1 −1

computamos los determinantes

5 1 3 5
det(A) = −4, det(A1 ) = = −4, det(A2 ) = = −8,
−1 −1 1 −1

y tenemos por lo tanto x = [1 2]t . 4

Al analizar el costo de la ejecución de algoritmos, muchas veces es relevante contar la


cantidad de operaciones que se realizan. Con este fin, introducimos la siguiente noción.

Definición 2.1.1 (f lop1 ). Denotaremos por f lop a una simple operación de punto flo-
tante, como suma, resta, producto o división. 4

En general, no nos interesa la cantidad exacta de f lops que requiere un método, sino el
orden de magnitud de esta cantidad. Retomando el Ejemplo 2.1.1, supongamos que usamos
la regla de Cramer para resolver un sistema con A ∈ Mn (R). Calcular el determinante
de una matriz n × n desarrollando por filas o columnas requiere O(n!) operaciones, y la
regla de Cramer requiere que calculemos n + 1 determinantes de matrices n × n y los
dividamos n veces. Deducimos que una aplicación ingenua de la regla de Cramer para
resolver un sistema de n × n tiene un costo computacional de O((n + 1)!) f lops. Esto es
pésimo computacionalmente. Incluso aunque sea posible calcular determinantes de forma
eficiente (ver Observación 2.2.2 más abajo), es poco común usar la regla de Cramer para
resolver sistemas grandes de ecuaciones lineales. No vamos a profundizar en este algoritmo.
En la Sección 2.2 vamos a analizar con detalle otro método directo ya conocido de cursos
anteriores: el algoritmo de escalerización gaussiana. Luego, la Sección 2.3 profundiza sobre
la descomposición LU , que está cercanamente relacionada con dicho algoritmo. Si bien la
1
La palabra f lop proviene del inglés floating point operations.

36
Métodos Numéricos Facultad de Ingenierı́a – IMERL

descomposición gaussiana permite tratar con sistemas Ax = b solamente asumiendo que


A es invertible y se pueden probar varios resultados en general, éstos se pueden mejorar
si la matriz A posee cierta estructura adicional. Comentamos brevemente sobre este tema
en la Sección 2.4. La Sección 2.5 estudia la estabilidad y convergencia del algoritmo de
escalerización gaussiana; esta sección también incluye material sobre normas vectoriales
y matriciales, y el importante concepto de número de condición.

2.2. Escalerización gaussiana


El método de escalerización gaussiana es un método directo para resolución de sistemas
de ecuaciones lineales. Este algoritmo nos permite llevar un sistema Ax = b, con A
cuadrada y no singular, a uno equivalente de tipo triangular superior. En esta sección,
en primer lugar analizamos cómo resolver sistemas triangulares de forma directa. Luego,
repasamos el algoritmo de escalerización gaussiana, sin y con pivoteo, y mostramos por
qué computacionalmente pivotear es importante, incluso en casos en los que en aritmética
real no serı́a necesario.

2.2.1. Sistemas triangulares


Comenzamos por abordar un caso particularmente simple de sistemas lineales. Recorda-
mos que una matriz A = (aij ) ∈ Mn (R) se dice triangular superior si

aij = 0 para todo i, j = 1, . . . , n, con j < i.

Análogamente, decimos que A es triangular inferior si

aij = 0 para todo i, j = 1, . . . , n, con j > i.

Consideremos un sistema Ax = b con A ∈ Mn (R) triangular inferior,


   
a11 0 ... 0 b1
 a21 a22 ... 0   b2 
  
A =  .. , b =  ..  .

.. .. .. 
 . . . .  .
an1 an2 . . . ann bn

En forma de sistema de ecuaciones, tenemos




 a11 x1 = b1
a12 x1 + a22 x2 = b2

. (2.1)

 . . .
an1 x1 + an2 x2 . . . ann xn = bn

37
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Como estamos asumiendo que este sistema tiene solución única, necesariamente tiene que
ser det(A) 6= 0. Al ser A triangular inferior, es fácil verificar que

det(A) = a11 a22 . . . ann ,

de modo que aii 6= 0 para todo i = 1, . . . , n. Para resolver este sistema, parece natural
comenzar por la primera ecuación en (2.1):

b1
a11 x1 = b1 ⇒ x1 = .
a11

Luego, podemos usar el valor de x1 que hallamos para continuar con la segunda ecuación
en (2.1),
b2 − a21 x1
a21 x1 + a22 x2 = b2 ⇒ x2 = .
a22
Podemos continuar sucesivamente: si conocemos x1 , . . . , xi−1 , entonces podemos despejar
xi de la i-ésima ecuación en (2.1) mediante
Pi−1
bi − j=1 aij xj
xi = .
aii

Este método para resolver sistemas triangulares inferiores se denomina sustitución hacia
adelante. En el Algoritmo 2.1, lo presentamos en formato de pseudo-código.
Algoritmo 2.1: Pseudo-código: sustitución hacia adelante
Datos: A = (aij ) ∈ Mn (R) triangular inferior, b ∈ Rn
Resultado: x ∈ Rn solución de Ax = b
x1 ← ab111 ;
para i = 2 : n hacer
xi ← a1ii (bi − i−1
P
j=1 aij xj );
fin

Análogamente, los sistemas de la forma Ax = b con A ∈ Mn (R) triangular superior se


pueden resolver de forma sencilla realizando una sustitución hacia atrás. Dicho método
consiste en comenzar por la última ecuación para hallar xn ,

bn
xn = ,
ann

y para i = n − 1, . . . 1 calcular
Pn
bi − j=i+1 aij xj
xi = .
aii

38
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Algoritmo 2.2: Pseudo-código: sustitución hacia atrás


Datos: A = (aij ) ∈ Mn (R) triangular superior, b ∈ Rn
Resultado: x ∈ Rn solución de Ax = b
xn ← abnn
n
;
para i = n − 1 : −1
Pn: 1 hacer
1
xi ← aii (bi − j=i+1 aij xj );
fin

Observación 2.2.1 (costo computacional de sustitución hacia adelante o hacia atrás). Es


claro que los costos computacionales de hacer sustitución hacia adelante o hacia atrás son
iguales. Veamos con detalle el costo de hacer sustitución hacia adelante: para computar
xi (i = 1, . . . , n) necesitamos hacer i − 1 productos, i − 1 sumas y una división. Por lo
tanto, en total necesitamos hacer
n
X n
X
(i − 1 + i − 1 + 1) = (2i − 1) = n2
i=1 i=1

operaciones. Deducimos que el costo computacional de resolver un sistema n×n triangular


usando sustitución hacia adelante/atrás es de O(n2 ) f lops. 4

2.2.2. Escalerización gaussiana (sin pivoteo)


Sean A ∈ Mn (R) una matriz no singular y b ∈ Rn . Para llevar el sistema Ax = b a uno
equivalente de tipo triangular superior, el algoritmo de escalerización gaussiana consiste en
realizar ciertas operaciones elementales en forma sucesiva. Dichas operaciones elementales
consisten en intercambiar filas o reemplazar una fila dada por una combinación lineal entre
filas en la que la fila reemplazada tiene un multiplicador no nulo.
Recordamos en qué consiste el método de escalerización gaussiana. Para k = 1, . . . , n, en
el paso k se tiene una matriz semi-escalerizada y con estructura
 (1) (1) (1) (1) 
a11 a12 . . . a1k . . . a1n
 0 a(2) . . . a(2) . . . a(2) 
 22 2k 2n 
 . .. .. .. .. .. 
 .. . . . . . 
(k)
A =  (k)

(k) 
 0 0 . . . a kk . . . a kn 
 . .. .. .. ... .. 
 .. . . . . 
(k) (k)
0 0 . . . ank . . . ann
(k)
Si akk 6= 0, lo llamamos pivot del paso k; por el momento, asumimos que en todos los
(k)
pasos de nuestro algoritmo tenemos akk 6= 0. Notamos que la matriz A tiene estructura
triangular superior en sus primeras k filas, y el resto de la matriz es llena. Buscamos
llevar a 0 los elementos de la columna k-ésima que están por debajo de la diagonal. Para

39
Métodos Numéricos Facultad de Ingenierı́a – IMERL

(k)
aik
ese fin, para cada i = k + 1, . . . , n definimos el coeficiente lik := (k) , al que llamamos
akk
multiplicador, y actualizamos la fila i-ésima de la matriz A(k) y la entrada i-ésima del
término independiente b(k) mediante

(k+1) (k) (k)


aij := aij − lik akj
(k+1) (k) (k) , ∀ j = k, . . . , n. (2.2)
bi := bi − lik bk

Este procedimiento puede escribirse en la forma de pseudo-código que mostramos en el


Algoritmo 2.3.
Algoritmo 2.3: Pseudo-código: EG sin pivoteo
Datos: A = (aij ) ∈ Mn (R), b ∈ Rn
Resultado: A = (aij ) ∈ Mn (R) triangular superior, L = (lik ) ∈ Mn (R) triangular
inferior y que tiene los multiplicadores del algoritmo de escalerización
gaussiana sin pivoteo
para k = 1 : n − 1 hacer
para i = k + 1 : n hacer
l(i, k) ← a(i, k)/a(k, k);
a(i, k) ← 0;
para j = k + 1 : n hacer
a(i, j) ← a(i, j) − l(i, k) ∗ a(k, j);
fin
bi ← bi − l(i, k) ∗ bk ;
fin
fin

Estimemos el costo computacional de usar escalerización gaussiana para llevar la matriz


A a una triangular superior mediante operaciones elementales. Contamos los f lops de
acuerdo a los loops en el Algoritmo 2.3:

loop en j: 2(n − k) f lops,

loop en i: (2(n − k) + 3) (n − k) = 2(n − k)2 + 3(n − k) f lops,

Pn−1
loop en k: k=1 [2(n − k)2 + 3(n − k)] f lops.

Agrupando según k y usando que

n−1 n−1
X (n − 1)n X (n − 1)n(2n − 1)
k= , k2 = ,
k=1
2 k=1
6

40
Métodos Numéricos Facultad de Ingenierı́a – IMERL

obtenemos:
n−1
X
2n2 − 4nk + 2k 2 + 3n − 3k

f lops(EG) =
k=1
n−1
X n−1
X
2
k2

= 2n + 3n (n − 1) − (4n + 3) k+2
k=1 k=1
2n3
 
2
 (n − 1)n (n − 1)n(2n − 1)
= 2n + 3n (n − 1) − (4n + 3) +2 =O .
2 6 3

Por lo tanto, si resolvemos un sistema cuadrado n × n usando escalerización gaussiana y


sustitución hacia atrás, requerimos

2n3 2n3
   
2
O + O(n ) = O f lops.
3 3

Observación 2.2.2 (bajando el costo de calcular determinantes). Al hacer escalerización


gaussiana sin pivoteo, el determinante de A permanece inalterado. La matriz resultante
al terminar la escalerización es triangular superior, y por lo tanto se puede calcular su
determinante multiplicando todos los elementos en la diagonal. Como en la diagonal
hay n elementos, y por lo tanto tenemos que hacer n multiplicaciones para calcular el
determinante de una matriz triangular,
 3 este procedimiento para calcular el determinante
2n
de una matriz requiere de O 3 f lops. 4

2.2.3. Escalerización gaussiana con pivoteo parcial


En la sección anterior asumimos que en cada paso de la escalerización gaussiana se tuvo
(k)
(k) aik
akk 6= 0. Esto es necesario para que esté bien definido el multiplicador lik = (k) , que es el
akk
factor por el que multiplicamos a la fila k-ésima en las combinaciones lineales que hacemos
(k)
en el paso k. Sabemos que la condición akk 6= 0 no es necesaria para que el sistema tenga
(k)
solución única: en caso de que akk = 0 podemos intercambiar la fila k-ésima por una fila
que esté más abajo y seguir con nuestro algoritmo de escalerización gaussiana. Este paso
de intercambiar filas se llama pivoteo.

¿Por qué pivotear?

Desde el punto de vista de la aritmética real, esto es, si tuviésemos precisión infinita,
(k)
pivotear sólo es necesario cuando se llega a que akk = 0 para algún paso k. Cuando
(k)
trabajamos con aritmética de punto flotante, pivotear se vuelve importante cuando akk ≈
0. Ilustramos esta idea con un ejemplo.

41
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Ejemplo 2.2.1 (el peligro de no pivotear). Queremos resolver el sistema Ax = b, donde


   
10 −7 0 7
A = −3 2,099 6 , b = 3,901 ,
5 −1 5 6
pero tenemos una máquina que solamente nos permite computar 5 dı́gitos significativos y
usamos redondeo. Es sencillo verificar que el sistema tiene como solución única x = [0 −
(1) 3
1 1]t . Como tenemos a11 = 10, podemos calcular los multiplicadores l21 = − 10 = −0,3,
5
l31 = 10 = 0,5 y reemplazamos

fila2 ← fila2 − l21 ∗ fila1 , fila3 ← fila3 − l31 ∗ fila1 ,

lo que nos da el sistema ampliado


 
 (2)  10 −7 0 7
A b(2) =  0 −0,001 6 6,001 . (2.3)
0 2,5 5 2,5
(2)
Ahora, nos encontramos con que a22 = −0,001. Como es distinto de cero y no somos
conscientes del peligro en el que nos estamos metiendo, usamos este elemento como pivote
2,5
y computamos el multiplicador l32 = − 0,001 = −2500. Al computar

fila3 ← fila3 − l32 ∗ fila2 ,


(3)
nos encontramos con una limitación de máquina: tenemos a33 = 5 + 2500 ∗ 6 = 15005
pero para calcular b(3) tenemos que hacer

2500 ∗ 6,001 = 15002,5 7→ 15002 ⇒ b(3) = 2,5 + 15002 = 15004,5 7→ 15004.

El sistema ampliado luego de este paso es


 
 (3) (3)  10 −7 0 7
A b =  0 −0,001 6 6,001  .
0 0 15005 15004
Como ya quedó escalerizado, podemos realizar una sustitución hacia atrás:
15004
15005x3 = 15004 ⇒ x3 = 7→ 0,99993 (nada mal),
15005
6,001 − 5,9996
−0,001x2 + 6x3 = 6,001 ⇒ x2 = = −1,4 (bastante mal),
−0,001
7 − 9,8
10x1 − 7x2 = 7 ⇒ x1 = = −0,28 (un desastre).
10

Vale la pena comparar la solución exacta del problema, [0, −1, 1]t , con la que obtuvimos,
[−0,28, −1,4, 0,9993]t : comenzamos con un muy pequeño error en x3 , que se propagó
peligrosamente al realizar la sustitución hacia atrás. 4

42
Métodos Numéricos Facultad de Ingenierı́a – IMERL

¿Dónde estuvo el problema en el ejemplo anterior? En que al tomar pivotes pequeños,


se da lugar a multiplicadores grandes. A su vez, al realizar las combinaciones lineales
entre filas, multiplicadores grandes dan lugar ecuaciones con coeficientes grandes respecto
a las entradas de la matriz original. Esto hace que pequeños errores relativos de redon-
deo sean grandes en términos absolutos y abre la posibilidad de introducir cancelaciones
catastróficas, tal como nos ocurrió al despejar x2 en el Ejemplo 2.2.1.
Una forma habitual de mitigar este problema de propagación de errores es asegurar que
los multiplicadores sean menores o iguales que 1 (en valor absoluto). Esto se
logra, por ejemplo, con la estrategia de pivoteo parcial.

Pivoteo parcial. En el paso k-ésimo de la escalerización, se toma como pivote al mayor


elemento (en valor absoluto) de la parte no reducida de la columna k-ésima de la matriz
A, esto es,
(k)
arg máx |ark | = p ⇒ pivote: apk
r∈{k,...,n}

Una vez hallado el nuevo pivote, se intercambia la fila en la que está con la fila k-ésima
en la matriz ampliada y se continúa con la escalerización gaussiana.
Algoritmo 2.4: Pseudo-código: EG con pivoteo parcial
Datos: A = (aij ) ∈ Mn (R), b ∈ Rn
Resultado: A = (aij ) ∈ Mn (R) triangular superior, L = (lik ) ∈ Mn (R) triangular
inferior y que tiene los multiplicadores del algoritmo de escalerización
gaussiana sin pivoteo
para k = 1 : n − 1 hacer
p ← arg máxr∈{k,...,n} |ark |
intercambiar(bk , bp );
para j = 1 : n hacer
intercambiar(akj , apj );
fin
para i = k + 1 : n hacer
l(i, k) ← a(i, k)/a(k, k);
a(i, k) ← 0;
para j = k + 1 : n hacer
a(i, j) ← a(i, j) − l(i, k) ∗ a(k, j);
fin
bi ← bi − l(i, k) ∗ bk ;
fin
fin

Es evidente que la estrategia de escalerización gaussiana con pivoteo parcial requiere


más operaciones que la de escalerización gaussiana sin pivotear. En el paso k-ésimo, es-
(k)
tamos agregando k operaciones de comparar los elementos |ark |, r = k, . . . , n. Por lo
tanto, el pivoteo parcial agrega O(n2 ) operaciones, lo que es de menor orden que el costo

43
Métodos Numéricos Facultad de Ingenierı́a – IMERL

computacional de realizar una escalerización gaussiana. Deducimos, pues, que el costo


computacional de realizar escalerización gaussiana con pivoteo parcial y sustitución hacia
atrás para resolver un sistema n × n de ecuaciones lineales es de
 3
2n
O f lops.
3
Ejercicio 2.1. Rehacer el Ejemplo 2.2.1, pero utilizando una estrategia de pivoteo parcial:
en (2.3) intercambiar la segunda y tercera filas y seguir adelante con el algoritmo. Mostrar
que usando la misma máquina con 5 dı́gitos de precisión el resultado obtenido es exacto.

2.3. Descomposición LU
En la Sección 2.2 analizamos el algoritmo de escalerización gaussiana (sin pivoteo y
con pivoteo parcial) para la resolución de sistemas de ecuaciones lineales Ax = b con
A ∈ Mn (R). Una consecuencia directa de este algoritmo es que nos da una forma intere-
sante de factorizar la matriz A como producto de una matriz triangular inferior por una
triangular superior, a menos de permutaciones. En esta sección profundizamos en este
hecho; concretamente, demostramos el siguiente resultado.
Teorema 2.3.1 (descomposición LU ). Sea A ∈ Mn (R) no singular. Entonces, existen

una matriz de permutación P ,


una matriz triangular inferior L, cuya diagonal está formada por unos, y
una matriz triangular superior U ,

tales que vale la identidad P A = LU .

En el teorema anterior aparece un término que no definimos aún, que es el de matriz de


permutación.
Definición 2.3.1 (matriz de permutación). Una matriz P ∈ Mn (R) se dice de per-
mutación si P se puede obtener intercambiando filas o columnas de la matriz identidad
I ∈ Mn (R). 4
Observación 2.3.1 (intercambios de filas o columnas). Sean P ∈ Mn (R) una matriz de
permutación y A ∈ Mn (R). Es fácil verificar que P A permite intercambiar filas de la
matriz A, mientras que AP intercambia columnas de A. Como ejercicio, en caso de no
 se puede comprobar este hecho tomando una matriz A ∈ M2 (R)
ser claro para ellector,
0 1
genérica y P = .
1 0
Computacionalmente, no es eficiente almacenar una matriz de permutación como una
matriz llena, ya que sabemos que sus elementos son todos 0 o 1, y que en cada fila/columna

44
Métodos Numéricos Facultad de Ingenierı́a – IMERL

se tiene exactamente un único 1. Es más eficiente utilizar vectores de permutación, que


indican en qué orden se deben intercambiar las filas o columnas de la identidad. Por
ejemplo, consideremos
 
0 0 0 1
0 1 0 0
P = 1 0 0 0 , p = [4 2 1 3], q = [3 2 4 1].

0 0 1 0

Entonces, siguiendo con la Observación 2.3.1, dada una matriz A ∈ Mn (R), para calcular
B = P A o C = AP en Octave, simplemente podemos escribir

>> B = A(p,:);
>> C = A(:,q);

La descomposición P A = LU del Teorema 2.3.1 está ı́ntimamente relacionada con el


algoritmo de escalerización gaussiana. Para demostrar el teorema, escribimos la operación
elemental “reemplazar una fila dada por una combinaciónes lineales entre filas en la que
la fila reemplazada tiene un multiplicador no nulo” en forma matricial.

Definición 2.3.2 (matriz de multiplicadores). Una matriz de multiplicadores es una


matriz M = (mij ) ∈ Mn (R) triangular inferior, con unos en la diagonal, que debajo de la
diagonal solamente tiene elementos no nulos en una única columna y que cumple |mij | ≤ 1
para todos i, j. 4

Ejemplo 2.3.1 (producto por una matriz de multiplicadores). Sean


   
1 0 0 6 −6 6
M =  1/2 1 0 , A = −3 2 1 .
−1/3 0 1 2 0 −1

Entonces, el producto M A transforma a A en la matriz que

fila2 ← fila2 + 1/2 ∗ fila1 , fila3 ← fila3 − 1/3 ∗ fila1 ,

esto es,  
6 −6 6
M A = 0 −1 4  .
0 2 −3
4

El ejemplo anterior ilustra cómo entran las matrices multiplicadoras en el algoritmo de


escalerización gaussiana: usando la notación de la Sección 2.2.2, si en el paso k-ésimo

45
Métodos Numéricos Facultad de Ingenierı́a – IMERL

escribimos la matriz multiplicadora Mk que se obtiene “colgando” los opuestos de los


(k)
aik
coeficientes lik = (k) ,
akk
 
01 ... ... ... 0
 .. .. .
0
.
. . ... . . . .. 

.
. . . . 1 ... . . . 0

Mk =  . , (2.4)
0 . . . −l
 (k+1),k 1 . . . .. 

 .. .. .. . . .. 
. . . ... . .
0 ... −lnk 0 ... 1
entonces la operación (2.2) sobre la matriz A se puede escribir en forma compacta como
realizar el producto Mk A.

Bosquejo de demostración del Teorema 2.3.1. Dada la matriz A ∈ Mn (R), escribimos las
operaciones elementales asociadas al algoritmo de escalerización gaussiana en el paso k-
ésimo:

permutar la fila k-ésima con la fila j-ésima (j > k) se corresponde con multiplicar
a izquierda por una matriz de permutación Pk , que es la matriz identidad con las
filas k y j intercambiadas2 ;
reemplazar una fila dada por una combinación lineal se corresponde con multiplicar
a izquierda por una matriz de multiplicadores Mk .

Además, sabemos que al final del algoritmo de escalerización gaussiana se llega a una
matriz triangular superior, a la que llamaremos U . Ası́, sabemos que existen P1 , . . . , Pn−1
y M1 , . . . , Mn−1 tales que
Mn−1 Pn−1 Mn−2 Pn−2 . . . M2 P2 M1 P1 A = U.

Usando el Ejercicio 2.2 (ver abajo) sucesivamente, la identidad de arriba se puede reescribir
como
Mn−1 M̃n−2 . . . M̃1 Pn−1 Pn−2 . . . P1 A = U,
donde M̃1 , . . . , M̃n−2 son matrices de multiplicadores. Finalmente, definimos
 −1
P := Pn−1 Pn−2 . . . P1 , L := Mn−1 M̃n−2 . . . M̃1 .

Tenemos que P es una matriz de permutación, que L es triangular inferior con unos en
la diagonal (ver el Ejercicio 2.3 abajo) y se cumple la identidad deseada,
L−1 P A = U ⇒ P A = LU.

2
Observar que si en el paso k-ésimo no se hace pivoteo, entonces se puede tomar Pk = Id.

46
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Ejercicio 2.2. Sea P ∈ Mn (R) de permutación que se obtiene al permutar las filas i y
j de la matriz identidad y sea Mk ∈ Mn (R) de multiplicadores con términos no nulos
debajo de la diagonal en la columna k, con k < i, j. Demostrar que existe M̃ ∈ Mn (R) de
multiplicadores tal que P M = M̃ P . Concretamente, demostrar que M̃ es la matriz que
se obtiene al intercambiar los elementos mik y mjk de la matriz M .
Ejercicio 2.3. Demostrar que el producto de matrices de permutación es de permutación.
Demostrar que el producto de matrices triangulares inferiores con unos en la diagonal es
triangular inferior y con unos en la diagonal. Demostrar que la inversa de una matriz
triangular inferior con unos en la diagonal es triangular inferior y con unos en la diagonal.
Observación 2.3.2 (costo computacional de la factorización
 3  LU ). Como realizar el algorit-
mo de escalerización gaussiana tiene un costo de O 2n3 f lops, deducimos que el costo
de computar una descomposición LU de una matriz A es del mismo orden. 4
Observación 2.3.3 (uso de la descomposición LU para resolver un sistema). Supongamos
que queremos resolver un sistema de la forma Ax = b, y ya conocemos una descomposición
de la matriz A como en el Teorema 2.3.1, P A = LU . Multiplicando nuestro sistema a
izquierda por P , obtenemos
LU x = P b.
Llamamos b0 := P b e y := U x. El sistema de arriba se puede pensar como la composición
de dos sistemas triangulares: por un lado el sistema Ly = b0 , y por el otro el sistema U x =
y. Uno puede primero hallar y, y luego utilizar y para hallar x. Como los dos sistemas
involucrados son triangulares, se los puede resolver usando sustitución hacia adelante y
sustitución hacia atrás, respectivamente. El costo de cada una de las resoluciones es de
O(n2 ) f lops, por lo que contar con una descomposición LU de la matriz A nos permite
resolver el sistema Ax = b con O(n2 ) f lops. 4
Observación 2.3.4 (resolver muchos sistemas con una misma matriz). En algunas aplica-
ciones, podemos encontrarnos con la necesidad de resolver muchos sistemas en los que
aparece la misma matriz A ∈ Mn (R), esto es, para vectores b(1) , . . . , b(m) ∈ Rn , tenemos
que hallar x(1) , . . . , x(m) ∈ Rn tales que

Ax(1) = b(1) , . . . , Ax(m) = b(m) .

Una forma de lograr esto es aplicar escalerización


  gaussiana m veces; el costo compu-
2mn3
tacional de este procedimiento es de O 3
f lops. Notamos que el tratamiento sobre
la matriz A en cada algoritmo de escalerización es el mismo, por lo que hacerlo todas las
veces parece ser un desperdicio de recursos. Una alternativa es computar una factorización
P A = LU una sola vez, almacenar estas matrices, y luego usar el método descrito en la
Observación 2.3.3 para resolver los m sistemas. El costo computacional de este segundo
procedimiento es de  3 
2n 2
O + mn f lops.
3
4

47
Métodos Numéricos Facultad de Ingenierı́a – IMERL

2.4. Matrices dispersas y de banda


El algoritmo de escalerización
 3 gaussiana se puede realizar con cualquier matriz Mn (R), y
2n
su costo es de O 3 f lops en general. Esta estimación del costo computacional es una
cota superior, y es válida incluso en el peor escenario posible. Si la matriz A posee cierta
estructura adicional, entonces se la puede explotar para desarrollar métodos o bien más
eficientes o bien que posean otras propiedades. Un ejemplo de esto es la factorización de
Cholesky para matrices simétricas y definidas positivas que se discute en el práctico del
curso.
Aquı́ nos centramos en matrices que “tienen muchos ceros”. Como mostramos a continua-
ción, definimos esta caracterı́stica de un modo un tanto vago.

Definición 2.4.1 (matrices dispersas (o ralas)). La dispersidad de una matriz A ∈


Mn (R) es la fracción de sus elementos que son cero. Diremos que una matriz A ∈ Mn (R)
es dispersa (o rala)3 si su dispersidad es cercana a 1. 4

Las matrices dispersas aparecen en muchı́simos problemas tanto de ingenierı́a como de


otras ramas y su manipulación eficiente es un vivo tema de investigación.
Sea A una matriz dispersa con elementos no nulos. Esto quiere decir que A “tiene muchos
ceros” y por lo tanto no es eficiente almacenarlos. Una técnica de almacenamiento más
apropiada consiste en guardar el valor de los elementos no nulos de A junto con sus ı́ndices
de fila y columna,

(i1 , j1 , ai1 ,j1 ) 

(i2 , j2 , ai2 ,j2 ) 

.. si una entrada aij no está en la lista, entonces es nula.
. 


(im , jm , aim ,jm ) 

Observemos que, si tratamos a una matriz A ∈ Mn (R) como si fuera una matriz llena,
entonces requerimos almacenar n2 números de punto flotante. En cambio, si la tratamos
como una matriz dispersa y tiene m elementos no nulos, entonces requerimos almacenar
3m números de punto flotante. Deducimos, pues, que si 3m  n2 , se logra una interesante
reducción de espacio de almacenamiento al tratar a A como dispersa. En Octave, para
indicar que se trate a una matriz como dispersa, se usa la función sparse.
Observación 2.4.1 (inversa de una matriz dispersa). En general, que una matriz invertible
A sea dispersa no implica que A−1 también lo sea. 4

Una clase de matrices dispersas muy especial y que aparece en múltiples aplicaciones es
la de aquellas matrices cuyos elementos no nulos se concentran alrededor de la diagonal.
3
A veces, se utiliza el inexistente término esparsa para nombrar a estas matrices; esta palabra parece
derivar del inglés sparse.

48
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Definición 2.4.2 (ancho de banda). El ancho de banda de una matriz A ∈ Mn (R)


es la máxima distancia entre sus elementos no nulos y la diagonal. Equivalentemente,
decimos que A ∈ Mn (R) tiene ancho de banda k si aij = 0 para todo |i − j| > k. 4

Como casos particulares de la definición anterior, tenemos:

toda matriz diagonal tiene ancho de banda igual a 0;

a las matrices que tienen ancho de banda igual a 1 se las llama tridiagonales.

A las matrices tridiagonales es posible realizarles una factorización LU en forma extre-


madamente eficiente, computando matrices L triangular inferior y U triangular superior
y ambas con un ancho de banda igual a 1. Dicho procedimiento se llama algoritmo de
Thomas y en el práctico demostramos que tiene un costo computacional de O(n) f lops.
Es importante recalcar que, si A ∈ Mn (R) es una matriz dispersa pero sin una estructura
especial (como ser tridiagonal), entonces en general el método de escalerización gaussiana
requiere O(n3 ) f lops. En diversas aplicaciones, incluyendo en el estudio de redes eléctricas,
modelos en economı́a, procesos fı́sicos como difusión y radiación, y elasticidad, suelen
aparecer matrices de este tipo con potencialmente miles o millones de incógnitas. En estos
casos, el costo computacional puede volver inviable utilizar la escalerización gaussiana.

Los comandos backslash y lu.

En Octave y Matlab, tenemos disponibles los comandos \, llamado backslash, y lu.


Dados una matriz A ∈ Mn (R) y un vector b ∈ Rn , el comando

>> x = A \ b;

nos devuelve un vector x con la solución computacional al sistema Ax = b. En general,


la función backslash chequea en primer lugar si la matriz A posee una cierta estructura
especial: si es triangular, realiza una sustitución hacia adelante o atrás, según corresponda;
si es simétrica y definida positiva, utiliza el algoritmo de Cholesky para producir una
descomposición particular. En caso de que A no tenga una estructura especial, backslash
efectúa un algoritmo de escalerización gaussiana con pivoteo parcial.
Por otra parte, el comando

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

nos devuelve tres matrices L, U, P como en la Sección 2.3: L es triangular inferior, U es


triangular superior, P es de permutación, y vale P A = LU . Estas matrices son calculadas
realizando un algoritmo de escalerización gaussiana como describimos en esa sección.

49
Métodos Numéricos Facultad de Ingenierı́a – IMERL

2.5. Estabilidad y convergencia


Por lo que hemos estudiado en el Capı́tulo 1 sabemos que, incluso utilizando métodos
directos, en la resolución numérica de sistemas lineales cometeremos errores. Para los
métodos directos de resolución de sistemas lineales, la única fuente de error es la repre-
sentación de números reales con precisión finita. En esta sección inspeccionamos cómo se
puede definir el error al resolver un sistema lineal y qué se puede decir acerca del error
cometido al utilizar el método de escalerización gaussiana con pivoteo parcial.

2.5.1. Normas de vectores y matrices


Para estudiar la convergencia de un método, nuestro punto de partida debe ser definir
una noción de cercanı́a en los espacios con los que trabajamos. Aquı́ recordamos algunas
nociones sobre normas en espacios vectoriales en general e introducimos algunas nociones
sobre normas de matrices.
En primer lugar, consideremos el espacio vectorial Rn con las operaciones habituales de
suma de vectores y de producto entre números reales y vectores. Recordamos que una
norma es una función k · k : Rn → R que verifica las siguientes propiedades:

1. kuk ≥ 0 ∀u ∈ Rn , y kuk = 0 ⇔ u = 0;

2. kλ uk = |λ| kuk ∀λ ∈ R, ∀u ∈ Rn ;

3. ku + vk ≤ kuk + kvk ∀u, v ∈ Rn .

En este curso, es de interés la siguiente familia de normas en Rn .

Normas `p . Sea 1 ≤ p < ∞. Dado un vector x = [x1 , . . . , xn ]t ∈ Rn , la norma `p del


vector x está dada por
n
!1/p
X
kxkp := |xi |p .
i=1

Algunos casos destacables de normas `p son los siguientes.


Pn
Para p = 1, se obtiene la norma de taxi (o de Manhattan), kxk1 = i=1 |xi |.
pPn
2
Para p = 2 se obtiene la norma Euclı́dea, kxk2 = i=1 xi .

Observación 2.5.1. La norma Euclı́dea tiene la importante propiedad de provenir del


producto interno usual en Rn . Recordamos que este producto interno es h·, ·i : Rn × Rn →
R, hx, yi := xt y. A veces también usaremos el punto √· para denotar al producto interno
n
en R , x · y = hx, yi. Es sencillo verificar que kxk2 = x · x para todo x ∈ Rn . 4

50
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Norma `∞ . Dado x = [x1 , . . . , xn ]t ∈ Rn , se define la norma `∞ (llamada norma


infinito, del máximo, o de Chebyschev) del vector x mediante

kxk∞ := máx |xi |.


1≤i≤n

El siguiente ejercicio justifica la notación k · k∞ para la norma del máximo.

Ejercicio 2.4. Sea x ∈ Rn un vector fijo. Demostrar que

lı́m kxkp = kxk∞ .


p→∞

[Sugerencia: primero, demostrar que si α1 , . . . αn son tales que |αi | ≤ 1 para i = 1, . . . , n y se


tiene |αk | = 1 para algún k, entonces lı́mp→∞ ( ni=1 |αi |p )1/p = 1. Luego, si x 6= 0, aplicar esta
P
xi
propiedad con αi = kxk ∞
. La afirmación es trivialmente cierta si x = 0.]

De cursos anteriores de álgebra lineal, sabemos que el espacio de matrices Mm×n (R), con
las operaciones habituales de suma de matrices y de producto de matrices por números
reales, tiene estructura de espacio vectorial. Para definir normas, puede ser tentador iden-
tificar matrices en Mm×n (R) con vectores en Rmn y utilizar las normas `p o `∞ de vectores
que discutimos arriba4 . Aquı́ nos concentramos en normas de matrices definidas de otra
forma, las llamadas normas de operador, que están asociadas a identificar las matrices en
Mm×n (R) con transformaciones lineales Rn → Rm .

Definición 2.5.1 (norma inducida o norma operador). Sea k · kv una norma vectorial.
Definimos la norma matricial inducida por k · kv (o norma operador asociada a
k · kv ), k · k : Mm×n (R) → R, mediante

kAxkv
kAk := máx . (2.5)
x6=0 kxkv

Ejercicio 2.5. a) Verificar que las normas inducidas son efectivamente normas. Esto es,
demostrar que la norma dada por (2.5) verifica las tres condiciones que mencionamos
al comienzo de esta sección.

b) Demostrar que se cumplen las igualdades

kAxkv
kAk = máx = máx kAxkv = máx kAxkv .
x6=0 kxkv kxkv ≤1 kxkv =1

Esto muestra que el valor de la norma inducida de una matriz A por una cierta norma
vectorial k · kv es igual al máximo que logra “estirar” (según la norma k · kv ) la matriz
A a los vectores de norma k · kv igual a 1.
4
El caso p = 2 da lugar a la llamada norma de Frobenius, que es de interés en varias aplicaciones.

51
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Observación 2.5.2 (normas diferentes). En la Definición 2.5.1 aparece la norma vectorial


k · kv aplicada tanto a vectores x ∈ Rn como a vectores Ax ∈ Rm . Esta definición se puede
extender al caso en que se tienen normas diferentes en Rn y en Rm , pero en este curso no
vamos a profundizar en esa extensión. 4
Definición 2.5.2 (normas compatibles y submultiplicativas). Sean k · kM una norma
matricial y k · kv una norma vectorial.
Decimos que k · kM es compatible con k · kv si se cumple que
kAxkv ≤ kAkM kxkv , ∀ A ∈ Mm×n (R), ∀ x ∈ Rn

Decimos que k · kM es submultiplicativa si se cumple que


kABkM ≤ kAkM kBkM , ∀A ∈ Mm×n (R), B ∈ Mn×p (R).
4

La siguiente proposición muestra que la definición anterior aplica a las normas matriciales
inducidas.
Proposición 2.5.1 (compatibilidad y submultiplicatividad de las normas operador). Sea
k · k la norma matricial inducida por una norma vectorial k · kv . Se cumplen las desigual-
dades
kAxkv ≤ kAk kxkv ∀A ∈ Mm×n (R), ∀x ∈ Rn ,
y
kABk ≤ kAkkBk ∀A ∈ Mm×n (R), B ∈ Mn×p (R). (2.6)

Demostración. Comenzamos por demostrar la primera desigualdad. Sean A ∈ Mm×n (R)


y x ∈ Rn . Si x = 0 entonces la desigualdad vale trivialmente, por lo que podemos asumir
x 6= 0. Utilizamos la definición (2.5) para obtener
 
kAxkv kA zkv
kAxkv = kxkv ≤ máx kxkv = kAkkxkv .
kxkv z6=0 kzkv

Para demostrar la segunda desigualdad, consideramos A ∈ Mm×n (R) y B ∈ Mn×p (R),


y suponemos que k · k es la norma operador asociada a una norma vectorial k · kv . Dado
x ∈ Rp , usamos dos veces la compatibilidad entre estas normas y k · kv para escribir
kABxkv kAkkBxkv kAkkBkkxkv
kABk = máx ≤ máx ≤ máx = kAk kBk.
x6=0 kxkv x6=0 kxkv x6=0 kxkv

Corolario 2.5.2 (normas de potencias). Sea k · k una norma matricial inducida y k ∈ N.


Entonces, para toda A ∈ Mn (R) vale
kAk k ≤ kAkk .

52
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Demostración. Es una consecuencia directa de la propiedad de submultiplicatividad (2.6)


de las normas inducidas.

A partir de este punto, cuando escribamos normas no haremos referencia explı́cita a qué
tipo de norma estamos considerando (matricial o vectorial), sino que esto se deduce del
argumento que tome la norma en cada caso. Asimismo, cuando escribamos una norma
matricial, por defecto asumimos que es una norma operador asociada a una cierta norma
vectorial.

Ejemplos de normas inducidas. A continuación profundizamos en qué formas toman


las normas matriciales inducidas por algunas de las normas vectoriales `p . Especı́ficamente,
nos concentramos en las normas operador asociadas a las normas `1 , `2 , y `∞ .
Proposición 2.5.3 (norma inducida por la norma infinito). Sea k·k∞ la norma matricial
inducida por la norma `∞ vectorial. Se cumple que
n
X
kAk∞ = máx |aij | ∀A = (aij ) ∈ Mm×n (R). (2.7)
i=1,...,m
j=1

Esto es, la norma matricial inducida por la norma `∞ es igual al máximo de las normas
`1 de las filas de la matriz.

Demostración. Sea A = (aij ) ∈ Mm×n (R). Si A es la matriz nula, entonces (2.7) vale
trivialmente. Asumamos A no es nula y tomemos un vector x ∈ Rn con kxk∞ = 1, lo que
implica que
|xj | ≤ máx |xk | = kxk∞ = 1 ∀j = 1, . . . , n.
k
Usamos esta propiedad junto a la desigualdad triangular, y la definición de norma `∞
vectorial para obtener
n
X n
X n
X
kAxk∞ = máx |(Ax)i | = máx aij xj ≤ máx |aij xj | ≤ máx |aij |.
i=1,...,m i=1,...,m i=1,...,m i=1,...,m
j=1 j=1 j=1

Por lo tanto, utilizando la segunda parte del Ejercicio 2.5, llegamos a la desigualdad
n
X
kAk∞ = máx kAxk∞ ≤ máx |aij |. (2.8)
kxk∞ =1 i=1,...,m
j=1

Para probar que se cumple (2.7), alcanza con probar que la cota hallada se alcanza. Es
decir, basta con hallar un vector y ∈ Rn con kyk∞ = 1 tal que la desigualdad de arriba
sea de hecho una igualdad. Para este fin, consideremos un ı́ndice i0 ∈ 1, . . . , m tal que la
fila i0 de la matriz A tiene la mayor norma `1 entre todas las filas de A,
n
X n
X
|ai0 j | = máx |aij |,
i=1,...,m
j=1 j=1

53
Métodos Numéricos Facultad de Ingenierı́a – IMERL

y consideramos el vector y ∈ Rn cuyas coordenadas son el signo de las entradas de la fila


i0 de A: y := [sgn(ai0 1 ), sgn(ai0 2 ), . . . , sgn(ai0 n )]t ; esto da lugar a que ai0 j yj = |ai0 j | para
todo j = 1, . . . n. Como sus entradas son todas −1, 0, 1 y no pueden ser todas iguales a 0
(porque A no es la matriz nula), se tiene kyk∞ = 1 y
n
X n
X n
X
kAk∞ = máx kAxk∞ ≥ kAyk∞ = máx aij yj ≥ ai0 j yj = |ai0 j |.
kxk∞ =1 i=1,...,m
j=1 j=1 j=1

Esto prueba que la igualdad en (2.8) se alcanza cuando x = y y concluye la prueba.

Sea A ∈ Mm×n (R). Ası́ como la norma matricial de A inducida por la norma `∞ es igual al
máximo de las normas `1 de las filas de A, la norma matricial de A inducida por la norma
`1 es igual al máximo de las normas `1 de las columnas de A. Dejamos la demostración
de esta propiedad como ejercicio.
Ejercicio 2.6. Sea k·k1 la norma matricial inducida por la norma `1 vectorial. Demostrar
que vale la igualdad
m
X
kAk1 = máx |aij | ∀A = (aij ) ∈ Mm×n (R).
j=1,...,n
i=1

[Sugerencia: seguir la estrategia de demostración de la Proposición 2.5.3. Primero, probar de


forma directa la desigualdad kAk1 ≤ máxj=1,...,n m
P
i=1 |aij | y luego demostrar que la cota se
alcanza cuando se toma y = ej0 , el j0 -ésimo vector de la base canónica de Rn , donde j0 es el
ı́ndice de la columna de A que tiene mayor norma `1 .]

La norma matricial inducida por la norma euclı́dea también tiene una caracterización
importante. En ella aparecen los llamados valores singulares de la matriz. Vamos a pro-
fundizar en ellos cuando tratemos problemas de mı́nimos cuadrados.
Proposición 2.5.4 (norma inducida por la norma euclı́dea). Sea k·k2 la norma matricial
inducida por la norma `2 vectorial. Para toda A ∈ Mm×n (R), se cumple que
p
kAk2 = λ1 , (2.9)

donde λ1 es el mayor valor propio de At A. El número σ1 (A) := λ1 se llama el primer
valor singular de la matriz A.
Observación 2.5.3 (valores propios de At A). Antes de demostrar la proposición, observe-
mos que el enunciado tiene sentido: que At A tiene valores propios reales y son no negativos.
Dada A ∈ Mm×n (R) es sencillo verificar que la matriz At A ∈ Mn (R) es simétrica; por
lo tanto, el Teorema Espectral para matrices reales y simétricas nos asegura que At A es
diagonalizable. Además, At A es semidefinida positiva, pues para todo x ∈ Rn tenemos
(At Ax) · x = xt At Ax = (Ax)t (Ax) = kAxk22 ≥ 0. (2.10)
Esto quiere decir que para toda A ∈ Mm×n (R), todos los valores propios de At A son
mayores o iguales que 0. Por lo tanto, tiene sentido tomar raı́z cuadrada en (2.9). 4

54
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Demostración de la Proposición 2.5.4. Por la definición de norma inducida y operando


como en (2.10), tenemos

kAk2 = máx kAxk2 = máx xt At Ax. (2.11)
kxk2 =1 kxk2 =1

Por la Observación 2.5.3 la matriz At A es simétrica, y por lo tanto es diagonalizable y


existe una base ortonormal de Rn , {v1 , . . . , vn }, formada por vectores propios de At A.
Asumimos que para cada i = 1, . . . , n, el vector propio vi tiene valor propio asociado λi
(notar que λi ≥ 0 por (2.10)) y que λ1 ≥ λ2 ≥ . . . λn ≥ 0.
Sea x ∈ Rn tal que kxk2 = 1. Podemos escribir x en esta base como
n
X
x= α i vi , con αi = x · vi = xt vi .
i=1

Notemos que entonces podemos usar la ortonormalidad de la base de vectores propios


para escribir
n
!t n
! n n
X X X X
1 = kxk22 = xt x = αi v i αj vj = αi αj vit vj = αi2 .
i=1 j=1 i,j=1 i=1

Por lo tanto, usando propiedades elementales del producto de matriz por vector, la defi-
nición de los coeficientes αi y el hecho de que λ1 ≥ λi para todo i, tenemos
n
X n
X n
X
t t t t t t t
x A Ax = x (A Ax) = x αi A Avi = x αi λi vi = αi2 λi ≤ λ1 .
i=1 i=1 i=1

Tomando raı́z cuadrada en la desigualdad anterior√ y tomando máximo entre todos los
vectores con kxk2 = 1, deducimos que kAk2 ≤ λ1 .

Para probar
√ que vale kAk 2 ≥ λ1 , basta con encontrar un vector y tal que kyk2 = 1 y
kAyk2 = λ1 . Elegimos y como un vector propio de At A asociado al mayor valor propio
λ1 . Usando la definición de norma euclı́dea, tenemos que
p p p p p p
kAyk2 = yt At Ay = yt λ1 y = λ1 yt y = λ1 kyk2 = λ1 .

Esto concluye la prueba.

Observación 2.5.4 (advertencia sobre valores singulares de matrices diagonalizables). De


Geometrı́a y Álgebra Lineal 2 sabemos que si A ∈ Mn (R) es diagonalizable, entonces
At también es diagonalizable y que sus valores propios coinciden. Sin embargo, en gene-
ral, no se cumple que los subespacios propios coincidan. Esto implica que incluso si A
es diagonalizable, los valores propios de At A en general no son iguales a los
cuadrados de los valores propios de A. 4

55
Métodos Numéricos Facultad de Ingenierı́a – IMERL

2.5.2. Errores y residuos: un ejemplo


Dados una matriz invertible A ∈ Mn (R) y un vector b ∈ Rn , queremos resolver el sistema
Ax = b computacionalmente. Supongamos que tenemos un algoritmo –como por ejemplo
el método de escalerización gaussiana o uno de los que veremos más adelante en este
capı́tulo– que nos permite hallar una aproximación x̄. Tal como vimos en la Definición
1.3.1, consideramos el error (absoluto)
e := x̄ − x ∈ Rn .
Naturalmente, es deseable que este error sea pequeño, pero para poder determinarlo ne-
cesitamos conocer la solución del sistema. En la práctica, no parece razonable esperar
conocer la solución exacta del problema que queremos resolver, por lo que es relevante
contar con otra forma de medir la discrepancia entre nuestra solución aproximada y la
solución del problema exacto. Definimos el residuo como
r := Ax̄ − b ∈ Rn .
El residuo mide por cuánto “le erra” a b nuestra solución aproximada cuando la multi-
plicamos por A. Una diferencia fundamental entre el residuo y el error es que el residuo
es computable: para calcular r no se necesita conocer cuál es la solución del sistema que
queremos resolver. Además, el error y el residuo se relacionan mediante
r := Ax̄ − b = Ax̄ − Ax = Ae;
como A es invertible, esto demuestra que e = 0 si y sólo si r = 0. Sabemos que no
es realista esperar que e = 0, pero quizás sı́ podamos aspirar a que e sea “chico”, en
el sentido de que alguna norma de e sea pequeña. Si no conocemos la solución exacta a
nuestro sistema, no podemos calcular e exactamente, pero sı́ podrı́amos calcular el residuo
r y alguna norma de este vector. Una pregunta clave es entonces: si krk es pequeña (para
alguna norma vectorial k · k), ¿esto implica que necesariamente kek sea pequeña? La
respuesta corta es: no. La respuesta más larga es: depende de la matriz A. A continuación
profundizamos en este tema, empezando con un ejemplo.
Ejemplo 2.5.1 (residuo vs. error). Este ejemplo está tomado de [Mol04, Sección 2.8].
Consideremos el sistema Ax = b, con
   
0,780 0,563 0,217
A= , b= . (2.12)
0,913 0,659 0,254
Resolvemos este sistema usando una máquina con tres dı́gitos de precisión y truncamiento,
y usando el algoritmo de escalerización gaussiana con pivoteo parcial.
Hacemos pivoteo (intercambio de la primera y segunda fila), calculamos el multiplicador
`21 = − 0,780
0,913
≈ −0,854, y el sistema ampliado nos queda:
 
0,913 0,659 0,254
.
0 0,001 0,001.

56
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Haciendo sustitución hacia atrás, obtenemos la solución aproximada


 
−0,443
x̄ = .
1
Si no conocemos la solución exacta del sistema, podemos calcular el residuo en nuestra
solución,  
−0,000460
r = Ax̄ − b = .
−0,000541
Nos quedamos tranquilos porque el residuo es pequeño5 : por ejemplo, krk∞ = 5,41×10−4 .
Sin embargo, se puede comprobar que la solución exacta del sistema es
 
1
x= .
−1
¡Le erramos feo! Hicimos las cosas de la mejor forma que pudimos, pivoteando6 , y sin
embargo nuestra solución tiene un error
 
−1,443
e = x̄ − x = .
2
Claramente, en este caso, tener un residuo pequeño no nos garantiza que el error también
lo sea: aquı́ tenemos kek∞ = 2. 4
¿Qué falló en el ejemplo anterior? La matriz A es invertible, por lo que el sistema es
compatible determinado, pero está muy cerca de ser singular. Si entendemos las dos
ecuaciones en el sistema como las ecuaciones de dos rectas en el plano, y que por lo tanto
resolver el sistema es equivalente a hallar la intersección entre ambas rectas, tenemos
una situación como en la Figura 2.1 (izquierda). Observamos que las dos rectas son casi
paralelas, y que la solución x̄ que computamos, si bien no está cerca de x, sı́ está cerca
de ambas rectas. Esto es precisamente lo que mide el residuo: qué tan cerca están de
satisfacerse todas las ecuaciones que conforman el sistema.
En general, el algoritmo de escalerización gaussiana con pivoteo parcial nos
asegura que el residuo resultante es (relativamente) pequeño. Si eso implica
que el error sea pequeño o no, dependerá de cómo sea la matriz del sistema.
En la Sección 2.5.4 hacemos formal esta afirmación, y cuantificamos qué tan grande puede
ser el error (en alguna norma dada) en función del residuo obtenido.
Supongamos, en cambio, que al representar las ecuaciones de un sistema (2 × 2) Ax = b
tuviésemos una situación como en la Figura 2.1 (derecha). En ese caso, las rectas están
lejos de ser paralelas, y por lo tanto estar simultáneamente cerca de ambas rectas implica
estar cerca del punto de intersección. Para un sistema de esa forma, obtener una solución
aproximada con residuo pequeño da lugar a un error pequeño.
5
En este ejemplo usamos la norma `∞ simplemente por elegir una. El lector puede repetir el análisis
con cualquier otra norma vectorial, y el resultado cualitativamente será el mismo.
6
Se puede verificar que si no hubiésemos pivoteado la solución serı́a muchı́simo peor: el sistema nos
hubiera quedado indeterminado (!!).

57
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Figura 2.1: Izquierda: solución computada x̄ y solución exacta x del sistema (2.12). De-
recha: un sistema que, al resolverlo y obtener residuo pequeño, podemos asegurar que el
error es pequeño.

2.5.3. Número de condición


El Ejemplo 2.5.1 nos muestra que obtener un residuo pequeño no nos garantiza que el
error lo sea. El factor de amplificación de residuo a error se relaciona con el llamado
número de condición de la matriz, que definimos a continuación.
Definición 2.5.3 (número de condición de una matriz). Sean A ∈ Mn (R) una matriz
invertible y k · k una norma matricial. El número de condición de A respecto a k · k
es el número κ(A, k · k) definido mediante

κ(A, k · k) := kAk kA−1 k.

Cuando no exista ambigüedad respecto a la norma matricial que estamos considerando,


simplemente escribiremos κ(A) = κ(A, k · k). 4
Observación 2.5.5 (el número de condición depende de la norma). Sea A ∈ Mn (R) una
matriz invertible. Es claro que el valor de κ(A, k · k) depende de la norma que estemos
utilizando. Sin embargo, remarcamos que su magnitud no depende de la norma conside-
rada. 4
La siguiente proposición nos indica que el número de condición de A es una medida del
cociente entre lo máximo que se puede “estirar” y lo máximo que se puede “comprimir”
un vector al multiplicarlo por ella.
Proposición 2.5.5 (expresión equivalente de κ(A)). Sean A ∈ Mn (R) una matriz in-
vertible y k · k una norma matricial inducida por una norma vectorial k · kv . Se cumple
kAxkv
máxx6=0 kxkv
κ(A, k · k) = kAxkv
. (2.13)
mı́nx6=0 kxkv

58
Métodos Numéricos Facultad de Ingenierı́a – IMERL

kAxkv
Demostración. Por el Ejercicio 2.5, ya sabemos que kAk = máxx6=0 kxkv
, por lo que resta
demostrar que
1
kA−1 k = .
mı́nx6=0 kAxk
kxkv
v

Para probar esta igualdad, basta notar que


1 kxkv
kAxkv
= máx ,
mı́nx6=0 x6=0 kAxkv
kxkv

y como A es invertible, cualquier vector y ∈ Rn se puede escribir como y = Ax con


x ∈ Rn . Esto implica entonces que
1 kA−1 ykv
kAxkv
= máx = kA−1 k.
mı́nx6=0 y6=0 kykv
kxkv

Una consecuencia inmediata de la proposición anterior es que el número de condición


de toda matriz es mayor o igual a 1. En Octave, la función cond permite calcular κ(A)
respecto a varias normas vectoriales. Calcular números de condición puede ser costoso
computacionalmente, pero la función condest nos permite estimar en forma eficiente el
número de condición respecto a la norma inducida por la norma `1 vectorial.
Ejemplo 2.5.2 (número de condición en el Ejemplo 2.5.1). Fijemos la norma matricial
inducida por la norma vectorial `∞ . Usando la Proposición 2.5.3, para la matriz A dada
en (2.12), tenemos
kAk∞ = 1,572.
Invirtiendo A, y nuevamente usando la Proposición 2.5.3 tenemos
 
−1 6,59 × 105 −5,63 × 105
A = ⇒ kA−1 k∞ = 1,693 × 106 .
−9,13 × 105 7,8 × 105

En consecuencia, κ(A, k · k∞ ) ≈ 2,66 × 106 . Esta es una matriz mal condicionada. 4

Error residual. El número de condición de una matriz A juega un rol central en la


relación entre la magnitud de errores y residuos en soluciones aproximadas. Sea x̄ una
aproximación a la solución del sistema lineal Ax = b. Recordamos que el residuo se define
mediante r := Ax̄ − b y que por lo tanto el error e = x̄ − x y el residuo se relacionan
mediante r = Ae, o equivalentemente e = A−1 r.
Si consideramos una norma vectorial k · k en Rn y su norma operador inducida (que
también denotaremos mediante k · k), como éstas son compatibles (Proposición 2.5.1),
tenemos las desigualdades

krk = kAek ≤ kAk kek, kek = kA−1 rk ≤ kA−1 k krk.

59
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Combinando ambas desigualdades, llegamos a


krk
≤ kek ≤ kA−1 k krk. (2.14)
kAk

Por otra parte, usando forma análoga las identidades equivalentes b = Ax y x = A−1 b,
obtenemos
kbk
≤ kxk ≤ kA−1 k kbk (2.15)
kAk
Combinando (2.14) y (2.15), deducimos
1 krk kek krk
−1
≤ ≤ kAk kA−1 k
kAk kA k kbk kxk kbk
y usando la Definición 2.5.3 concluimos
1 krk kek krk
≤ ≤ κ(A) . (2.16)
κ(A) kbk kxk kbk
Notemos que el término en el centro arriba es un error relativo en x, mientras que el
krk
término kbk corresponde a un residuo relativo. La identidad (2.16) nos dice entonces que
este residuo relativo y el error relativo al aproximar la solución de nuestro sistema Ax = b
están relacionados mediante el número de condición de la matriz A. En otras palabras,
si κ(A) no es muy grande, residuos relativos pequeños se corresponden con
errores relativos pequeños; en cambio, si κ(A) es grande, el hecho de que el
residuo relativo sea pequeño no nos permite asegurar que el error relativo lo
sea.

2.5.4. Análisis de perturbaciones


A continuación, analizamos qué tan sensible es la solución exacta de un sistema Ax = b al
perturbar sus parámetros. Esto es, suponiendo que tenemos un error de representación en
A o en b, nos preguntamos cuánto puede cambiar la solución del sistema. El número de
condición de la matriz A juega un rol preponderante en la relación entre el error relativo
de la solución y el error relativo en las perturbaciones. En lo que sigue, fijamos una norma
vectorial y consideramos la norma matricial inducida por ella; notaremos todas estas
normas mediante k · k.

Perturbación en el lado derecho (b 7→ b + δb ). Dados A ∈ Mn (R) invertible y


b ∈ Rn , sea x la solución del sistema Ax = b. Consideramos una perturbación en el lado
derecho de la igualdad, que ahora será de la forma b + δb . Escribimos la solución de este
sistema perturbado como x + δx , y por lo tanto tenemos

Ax = b
⇒ Aδx = δb ⇒ δx = A−1 δb .
A(x + δx ) = b + δb

60
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Tomando normas en ambos lados de la última igualdad y aplicando la compatibilidad de


la norma inducida (Proposición 2.5.1), tenemos

kδx k = kA−1 δb k ≤ kA−1 k kδb k.

Por otra parte, haciendo un razonamiento análogo, tenemos

b = Ax ⇒ kbk ≤ kAk kxk.

Multiplicando las dos desigualdades anteriores, deducimos entonces que vale


kδx k kδb k
≤ kAk kA−1 k .
kxk kbk
Recordando la Definición 2.5.3, concluimos

kδx k kδb k
≤ κ(A) .
kxk kbk

Perturbación en la matriz (A 7→ A + δA ). Dados A ∈ Mn (R) invertible y b ∈ Rn ,


sea x la solución del sistema Ax = b. Consideramos una perturbación en la matriz del
sistema, que ahora será de la forma A + δA y asumimos que esta nueva matriz también es
invertible. Escribimos la solución de este sistema perturbado como x + δx , y por lo tanto
tenemos

Ax = b
⇒ Aδx + δA (x + δx ) = 0 ⇒ δx = −A−1 δA (x + δx )
(A + δA )(x + δx ) = b

Tomamos norma de ambos lados de la última igualdad, usamos la Proposición 2.5.1,


multiplicamos y dividimos el lado derecho de la igualdad por kAk y usamos la Definición
2.5.3 para llegar a
kδA k
kδx k ≤ kA−1 k kδA k kx + δx k = κ(A) kx + δx k,
kAk
y concluimos la estimación
kδx k kδA k
≤ κ(A) . (2.17)
kx + δx k kAk

Aplicación a escalerización gaussiana con pivoteo parcial.

Ahora estamos en condiciones de interpretar cómo se comportan los errores y residuos al


realizar el algoritmo de escalerización gaussiana con pivoteo parcial para resolver numéri-
camente un sistema de la forma Ax = b. El ingrediente que nos falta es el siguiente
resultado, que asumimos sin demostración.

61
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Teorema 2.5.6 (Wilkinson, 1961). Consideremos un sistema de ecuaciones lineales de


la forma Ax = b, con A ∈ Mn (R) invertible y b ∈ Rn . Sea x̄ la solución computacional
obtenida al realizar escalerización gaussiana con pivoteo parcial. Entonces, x̄ es la solución
(exacta) a un sistema de la forma

(A + E) x̄ = b, (2.18)

donde E ∈ Mn (R) es una matriz cuyos elementos son (en valor absoluto) del orden de
los errores de redondeo al representar la matriz A.

Analicemos el enunciado del Teorema 2.5.6. El hecho de que los elementos de E sean del
orden de los errores de redondeo al representar la matriz A significa que, para cualquier
norma matricial, tenemos
kEk ≤ ρ εM kAk
para alguna constante ρ > 0, que podemos esperar cumpla ρ . 10. Por lo tanto, ese
teorema nos garantiza estar en una situación en la que nuestra solución computacional x̄
es la solución exacta a un sistema al que le hemos perturbado la matriz A, la perturbación
es δA = E, y tenemos un cierto control en norma sobre esta perturbación. Notamos que
δx = x̄ − x = e y que por lo tanto la fórmula (2.17) se puede reescribir como

kek kEk
≤ κ(A) ≤ κ(A) ρ εM .
kx̄k kAk

Como el lado izquierdo de la desigualdad anterior es como el error relativo en x (pensando


en que kx̄k ≈ kxk), concluimos que al realizar escalerización gaussiana con pivoteo
parcial, el error relativo que se tiene no es peor que del orden del épsilon de
máquina multiplicado por el número de condición de la matriz del sistema. En
particular, si la matriz del sistema está bien condicionada, podemos estar tranquilos de
que nuestra solución computacional es de buena calidad.
En cambio, la fórmula (2.18) nos dice que podemos escribir el residuo como r = Ax̄ − b =
−E x̄ y por lo tanto tenemos

krk kEk
≤ ≤ ρ εM .
kAk kx̄k kAk

El lado izquierdo de la desigualdad anterior es como un residuo relativo, ya que toma la


norma del residuo y la normaliza por el producto kAk kx̄k7 . En conclusión, al realizar
escalerización gaussiana con pivoteo parcial, el residuo relativo que se tiene es
del orden del épsilon de máquina.

7
Para entender por qué esta es una buena normalización del residuo, puede servir pensar en el sistema
como si A, x y b tuviesen dimensiones (de largo, de tiempo, etc). Las dimensiones del residuo tienen que
ser iguales que las del vector b, que a su vez deben ser iguales al producto de las dimensiones de A por
las de x.

62
Capı́tulo 3

Interpolación polinomial

3.1. Introducción. ¿Por qué interpolar?


El problema de interpolación consiste en encontrar una función ϕ desconocida a partir de
un cierto conjunto (finito) de datos, respetando los valores de los mismos. Por ejemplo, si
realizamos una actividad experimental y medimos observaciones {(xi , yi )}i=0,...,n , entonces
podemos querer que ϕ cumpla ϕ(xi ) = yi para todo i. Evidentemente, si no tenemos más
información sobre ϕ, este será un problema con infinitas soluciones, ya que cualquier
función ϕ cuyo gráfico pase por los datos podrı́a ser solución (ver Figura 3.1). Una forma
natural de evitar este inconveniente es restringir la clase de funciones posibles en la que
podemos elegir ϕ; en este curso nos centramos en la llamada interpolación polinomial (o
polinómica), que justamente consiste en requerir que ϕ sea un polinomio o un polinomio
a trozos.

0
y

−1

−2

−3

−4
0 0,5 1 1,5 2 2,5 3
x

Figura 3.1: Cualquiera de las curvas dibujadas pasa por los tres puntos marcados.

63
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Además del ejemplo que mencionamos en el párrafo anterior, el problema de interpolación


tiene variados usos en la práctica, ya sea como un fin en sı́ mismo –buscando una función
cuyo gráfico pase por ciertos puntos– o como herramienta auxiliar para llevar adelante
otras técnicas. Mencionamos unos pocos ejemplos.

Si tenemos una tabla de evaluaciones de una cierta función (desconocida) f , y nos


interesa evaluar esta f en algún punto que no esté en la tabla, entonces necesitaremos
“asignarle” valores a f en los puntos que no estén en nuestra tabla. Precisamente,
hacer esto es definir una interpolación ϕ de los datos de nuestra tabla y luego evaluar
ϕ en puntos que no estén en la tabla.

En forma similar, dada una tabla de evaluaciones de una cierta función (desconocida)
f , nos puede interesar aproximar la derivada o la integral de esta función f . Para
ello, podemos nuevamente construir una interpolante de los datos de la tabla y
utilizarla para derivarla o integrarla analı́ticamente.

El CAD1 , o diseño asistido por computadora consiste en utilizar computadoras para


ayudar en la creación, modificación, análisis u optimización de un diseño. Es posible
que el lector tenga experiencia en el uso de programas como AutoCAD: uno podrı́a
preguntarse cómo hacen programas de ese tipo para definir curvas y superficies y
que al abrir y cerrar los archivos éstas no cambien. ¿Tiene que almacenar todos los
puntos de la curva o la superficie? ¿Puede almacenar las “fórmulas” de curvas y
superficies? Un estándar en este tipo de programas es el uso de las llamadas splines,
que introducimos en la Sección 3.4.2, o variantes de ellas. Como dato anecdótico,
algunos de los avances algorı́tmicos más importantes para el tratamiento de curvas y
superficies, como son los algoritmos de De Casteljau y de De Boor, fueron motivados
por necesidades concretas de la industria automotriz de mediados del siglo XX.

La Sección 3.2 está dedicada a la definición del polinomio interpolante a través de un


conjunto dado de puntos y a distintas formas de representarlo y computarlo. Luego, en
la Sección 3.3, considerando que estos puntos estén dados por la imagen de una cierta
función, estimamos la discrepancia entre dicha función y la interpolante, y nos encon-
tramos con que no siempre interpolar por más puntos implica una mejor aproximación.
Finalmente, la Sección 3.4 está destinada a las llamadas interpolaciones polinomiales a
trozos, en particular la interpolación lineal y tres tipos de interpolantes cúbicas distintas.

3.2. Polinomio interpolante


Consideramos el problema clásico de interpolación polimomial: dados n + 1 puntos en el
plano {(xi , yi )}i=0,...,n con xi 6= xj si i 6= j, buscamos un polinomio p tal que p(xi ) = yi
1
Del inglés Computer-Aided Design.

64
Métodos Numéricos Facultad de Ingenierı́a – IMERL

para todo i = 0, . . . , n. La primer pregunta que surge es qué requerimientos tiene sentido
pedirle a p: ¿puede ser un polinomio de cualquier grado?
Razonemos intuitivamente. Si tenemos un único punto (x0 , y0 ), entonces hay un único
polinomio de grado 0 que cumple lo estipulado, la función constante p(x) = y0 , y ob-
viamente hay infinitos polinomios de grado mayor o igual a 1 cuyos gráficos pasan por
(x0 , y0 ). Si tenemos dos puntos {(x0 , y0 ), (x1 , y1 )}, entonces en general –salvo que y0 = y1 –
no podemos esperar que el gráfico de una función constante pase por esos dos puntos. En
cambio, sı́ sabemos que existe una única recta por los puntos (x0 , y0 ), (x1 , y1 ) y podemos
considerar la función lineal cuyo gráfico sea dicha recta: para n + 1 = 2 puntos, hay una
única función lineal que cumple lo estipulado. Si consideramos polinomios de grado más
alto, entonces tenemos demasiados grados de libertad y no tenemos una solución única.
Del razonamiento de arriba parece deducirse que, si esperamos que nuestro problema de
interpolación por n + 1 puntos tenga solución y que ésta sea única, entonces debemos
requerir que el polinomio p sea de grado n. El siguiente teorema demuestra que esta
intuición es correcta.
Teorema 3.2.1 (polinomio interpolante). Sea n ≥ 0 un número entero. Dados n + 1
puntos en el plano {(xi , yi )}i=0,...,n con xi 6= xj si i 6= j, existe un único polinomio pn de
grado menor o igual que n tal que pn (xi ) = yi para todo i = 0, . . . , n.
Definición 3.2.1 (polinomio interpolante). Al polinomio definido por el teorema anterior
lo llamamos el polinomio interpolante por los puntos {(xi , yi )}i=0,...,n . 4

Demostración del Teorema 3.2.1. Procedemos por inducción en n.


Paso base. Si n = 0, entonces tenemos un único punto (x0 , y0 ) y, tal como razonamos
antes, el único polinomio de grado 0 cuyo gráfico pasa por ese punto es p0 (x) = y0 .
Paso inductivo. Supongamos tenemos demostrado el teorema para n puntos, y veamos
que entonces la afirmación también es verdadera para n + 1 puntos.
Dados n + 1 puntos {(xi , yi )}i=0,...,n , consideremos los primeros n de ellos,
{(xi , yi )}i=0,...,n−1 . Nuestra hipótesis inductiva dice que existe un único polinomio pn−1
de grado menor o igual que n − 1 cuyo gráfico pasa por estos n puntos. Es de esperar
que el gráfico de pn−1 no pase por el punto (xn , yn ). Buscamos ahora un polinomio pn de
grado menor o igual a n, al que vamos a escribir como
pn (x) := pn−1 (x) + q(x), (3.1)
donde q es otro polinomio de grado menor o igual que n. Remarcamos que todo polinomio
de grado n se puede escribir de esta manera.
Si evaluamos la identidad (3.1) en los primeros n puntos, como vale pn−1 (xi ) = yi para
todo i = 0, . . . , n − 1 y queremos que sea pn (xi ) = yi para todo i = 0, . . . , n − 1, entonces
tiene que cumplirse que q(xi ) = 0 para todo i = 0, . . . , n − 1. Por lo tanto, como es de
grado n, el polinomio q tiene que ser de la forma
q(x) = an (x − x0 )(x − x1 ) . . . (x − xn−1 ), (3.2)

65
Métodos Numéricos Facultad de Ingenierı́a – IMERL

y an ∈ R es una incógnita a determinar. Para hallar an , nos resta imponer que pn (xn ) = yn :
evaluando (3.1) en xn y usando la expresión para q, tenemos

yn = pn (xn ) = pn−1 (xn ) + an (xn − x0 )(xn − x1 ) . . . (xn − xn−1 ).

Como xn 6= xi para cada i = 0, . . . , n, podemos despejar an :


yn − pn−1 (xn )
an = . (3.3)
(xn − x0 )(xn − x1 ) . . . (xn − xn−1 )

Ası́, tenemos determinado un polinomio pn de grado menor o igual a n que cumple pn (xi ) =
yi para todo i = 0, . . . , n. La unicidad de pn se deduce de que todo polinomio de grado
menor o igual a n se puede escribir como (3.1) y del hecho de que el an que hallamos es
único.

El teorema anterior nos da condiciones para que el problema de interpolar datos con una
función polinomial tenga solución única. A continuación, exploramos distintas formas de
hallar este polinomio interpolante.

3.2.1. Forma de Vandermonde


Del Teorema 3.2.1, sabemos que para n + 1 datos en el plano {(xi , yi )}i=0,...,n con xi 6= xj
si i 6= j, existe un único polinomio pn de grado menor o igual a n que interpola a esos
puntos. Una primera forma de expresar a este polinomio pn es de forma desarrollada,
n
X
pn (x) = cj x j . (3.4)
j=0

Naturalmente, basta con hallar los coeficientes c0 , . . . , cn para determinar a pn . Si im-


ponemos que pn (xi ) = yi para todo i = 0, . . . , n, obtenemos un sistema de ecuaciones
lineales: 
n
 y0 = pn (x0 ) = c0 + c1 x0 + . . . + cn x0

 y1 = pn (x1 ) = c0 + c1 x1 + . . . + cn xn

1
.. .. ..

 . . .
 y = p (x ) = c + c x + . . . + c xn

n n n 0 1 n n n

Remarcamos que aquı́ las incógnitas son los coeficientes c0 , . . . , cn del polinomio pn ; los
puntos (x0 , y0 ), . . . , (xn , yn ) son datos de nuestro problema. En forma matricial, el sistema
anterior se puede escribir como
    
1 x0 x20 . . . xn0 c0 y0
1 x1 x2 . . . xn   c1   y1 
1 1  
..   ..  =  ..  . (3.5)
  
 .. .. ..
. . . .  .   . 
1 xn x2n . . . xnn cn yn

66
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Definición 3.2.2 (matriz de Vandermonde). A toda matriz que presenta una progresión
geométrica en cada fila, tal como la matriz que aparece en el sistema (3.5), se le llama
matriz de Vandermonde. 4
Observación 3.2.1 (invertibilidad de matrices de Vandermonde). Si xi 6= xj cuando i 6= j,
entonces la matriz de Vandermonde asociada es invertible. Esto es una consecuencia inme-
diata del Teorema 3.2.1, que nos asegura la existencia y unicidad del polinomio interpolan-
te. Si escribimos el polinomio interpolante como en (3.4), entonces el Teorema 3.2.1 puede
interpretarse como que el sistema (3.5) sea compatible determinado. En consecuencia, la
matriz de dicho sistema, que es la matriz de Vandermonde, es invertible. 4
Ejemplo 3.2.1 (forma de Vandermonde). Tenemos la siguiente tabla con tres datos:

i xi yi
0 1/4 -3/4
1 1 -1
2 5/2 3/2

Sabemos que existe un único polinomio p2 de grado menor o igual a 2 tal que su gráfico
pasa por esos tres puntos. Si escribimos p2 como en (3.4), nuestras incógnitas son los
coeficientes c0 , c1 , c2 , y las podemos hallar resolviendo el sistema (3.5), que en este ejemplo
toma la forma     
1 1/4 1/16 c0 −3/4
1 1 1  c1  =  −1  .
1 5/2 25/4 c2 3/2
Podemos resolver este sistema en forma sencilla usando  cualquiera
  de las técnicas que
c0 −4/9
discutimos el capı́tulo anterior, y llegamos a la solución c1 = −13/9. Deducimos
  
c2 8/9
entonces que el polinomio interpolante por los datos de la tabla es
4 13 8
p2 (x) = − − x + x2 . (3.6)
9 9 9
Se puede verificar que este polinomio verifica p2 (xi ) = yi para i = 0, 1, 2, y su gráfico es
el que está representado por la curva azul en la Figura 3.1. 4

La forma de Vandermonde tiene la ventaja de que nos permite reducir el problema de


hallar el polinomio interpolante a resolver un sistema lineal de ecuaciones compatible
determinado. Sin embargo, no es un método muy usado en la práctica y es especialmente
no recomendable en caso de tener que interpolar a través de muchos puntos. Esto se debe
fundamentalmente a las dos limitaciones que mencionamos en las siguientes observaciones.
Observación 3.2.2 (condicionamiento de matrices de Vandermonde). Un gran problema
de usar la forma de Vandermonde es que, si bien las matrices de Vandermonde
son invertibles, en general están mal condicionadas. Por ejemplo, consideremos el
siguiente código de Octave:

67
Métodos Numéricos Facultad de Ingenierı́a – IMERL

>> x = linspace(0,1,21);
>> V = vander(x);
>> condest(V)
ans = 6.7512e+16

En la primera lı́nea, usamos el comando linspace para definir un vector fila x que tiene
21 elementos equiespaciados en el intervalo [0, 1], esto es, x= [0, 1/20, . . . , 1]. La segunda
lı́nea usa la función de Octave vander para definir la matriz de Vandermonde V asociada
a los nodos x(i), y la tercera estima el número de condición de V asociado a la norma
`1 (recordar la Definición 2.5.3). Observamos que el resultado es bastante desalentador:
nuestra estimación es que κ(V) es del orden de 1016 . Esto implica, por ejemplo y teniendo
en cuenta lo que hemos discutido en la Sección 2.5.4, que si quisiéramos interpolar por
21 puntos cuyas abscisas sean las del vector x y usáramos la forma de Vandermonde
resolviendo el sistema (3.5) mediante escalerización gaussiana con pivoteo parcial, nuestra
mejor cota para el error relativo en los coeficientes serı́a del orden de 1. En otras palabras,
¡podrı́amos obtener un error del 100 % en los coeficientes del polinomio!
Notar, sin embargo, que esto no implica que nuestra evaluación del polinomio interpolante
sea mala, ya que al hacer escalerización gaussiana con pivoteo parcial el residuo es del
orden de εM independientemente del condicionamiento de la matriz. 4
Observación 3.2.3 (agregar datos en la forma de Vandermonde). Otra limitación de la
forma de Vandermonde surge si queremos agregar puntos por los que interpolar.
Supongamos que tenemos la misma tabla de datos que en el Ejemplo 3.2.1, hallamos p2
como allı́ se indica, pero ahora disponemos de un nuevo dato adicional (x3 , y3 ). Esto es,
queremos hallar un polinomio p3 de grado menor o igual a 3 que interpole por los puntos
(x0 , y0 ), . . . , (x3 , y3 ). Si usamos la forma de Vandermonde, entonces el trabajo que hicimos
para hallar p2 no servirá de mucho, porque vamos a tener que rearmar el sistema
(3.5) pero ahora con la matriz de Vandermonde asociada a los 4 puntos x0 , x1 , x2 , x3 . En
general, al usar (3.4) no existe una relación directa entre la solución del sistema que nos
da los coeficientes de p2 con el que nos dé los coeficientes de p3 , por lo que tendremos que
empezar de cero nuevamente. 4

3.2.2. Forma de Lagrange


Las dificultades de la forma de Vandermonde que discutimos en las observaciones 3.2.2 y
3.2.3 tienen que ver esencialmente con que usamos la representación (3.4), esto es, a la
elección de la base monomial {1, x, x2 , . . . , xn } para el espacio vectorial de los polinomios
de grado menor o igual a n. Esta base monomial no tiene ninguna relación con los puntos
que queremos interpolar.
La forma de Lagrange consiste en usar una base particular –y que sı́ depende de los
puntos que queremos interpolar– para escribir pn de otra forma.

68
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Definición 3.2.3 (polinomio de base de Lagrange). Dados x0 , . . . , xn con xi 6= xj si i 6= j


y k ∈ {0, . . . , n}, el polinomio de base de Lagrange Lkn es el único polinomio de grado
menor o igual a n que cumple

k 1 si j = k
Ln (xj ) = .
0 si j 6= k

En otras palabras, Lkn es el polinomio interpolante por

(x0 , 0), . . . , (xk−1 , 0), (xk , 1), (xk+1 , 0), . . . , (xn , 0).

Observación 3.2.4 (forma explı́cita de los polinomios de base de Lagrange). Dados


x0 , . . . , xn con xi 6= xj si i 6= j y k ∈ {0, . . . , n} se tiene

(x − x0 ) . . . (x − xk−1 )(x − xk+1 ) . . . (x − xn )


Lkn (x) = . (3.7)
(xk − x0 ) . . . (xk − xk−1 )(xk − xk+1 ) . . . (xk − xn )

En efecto, basta con observar que el polinomio dado en (3.7) verifica la Definición 3.2.3 y
usar la unicidad del polinomio interpolante dada por el Teorema 3.2.1. 4

Hallar la funciones de base de Lagrange puede ser laborioso, pero una vez calculadas
{Lkn }k=0,...,n , el polinomio interpolante se puede expresar en forma sumamente sencilla.

Proposición 3.2.2 (interpolación en forma de Lagrange). Dados n+1 puntos en el plano


{(xi , yi )}i=0,...,n con xi 6= xj si i 6= j, el polinomio interpolante por esos puntos es
n
X
pn (x) = yk Lkn (x), (3.8)
k=0

donde {Lkn }k=0,...,n es la base de Lagrange dada por la Definición 3.2.3.

Demostración. El lado derecho de (3.8) define un polinomio de grado menor o igual a n


y se verifica, para cada i = 0, . . . , n,
n
X
yk Lkn (xi ) = yi .
k=0

Por lo tanto, el lado derecho de (3.8) coincide con el polinomio interpolante por
{(xi , yi )}i=0,...,n .

Ejemplo 3.2.2 (forma de Lagrange). Volvemos al Ejemplo 3.2.1 y a la tabla de tres datos
allı́ presentada. Usando la expresión (3.7), encontramos que la base de Lagrange asociada

69
Métodos Numéricos Facultad de Ingenierı́a – IMERL

a los puntos {1/4, 1, 5/2} es

(x − 1)(x − 5/2) 16
L02 (x) = = (x − 1)(x − 5/2),
(1/4 − 1)(1/4 − 5/2) 27
(x − 1/4)(x − 5/2) 8
L12 (x) = = − (x − 1/4)(x − 5/2),
(1 − 1/4)(1 − 5/2) 9
(x − 1/4)(x − 1) 8
L22 (x) = = (x − 1/4)(x − 1).
(5/2 − 1)(5/2 − 1/4) 27
La Figura 3.2 muestra estas tres funciones de base. Por lo tanto, usando los valores de las
coordenadas y de la tabla de datos, deducimos que el polinomio interpolante es
2
X 3 3
p2 (x) = yk Lk2 (x) = − L02 (x) − L12 (x) + L22 (x).
k=0
4 2

Dejamos para el lector verificar que esta expresión coincide con (3.6). 4

1,5

0,5

0
y

−0,5

−1 L02
L12
−1,5 L22

−2
0 0,5 1 1,5 2 2,5 3
x

Figura 3.2: Funciones de base de Lagrange correspondientes al Ejemplo 3.2.1/3.2.2.

Observación 3.2.5 (algunas ventajas de la forma de Lagrange). Escribir el polinomio inter-


polante en la forma de Lagrange tiene la ventaja de que nos da una expresión compacta,
y de que no tenemos problemas de condicionamiento para determinar los coeficientes en
caso de que haya un número elevado de puntos. Además, como la base de Lagrange sola-
mente depende de los {xi }, si cambiamos el valor de un cierto yk –pero dejando fijos los
{xi }–, encontrar el nuevo polinomio interpolante es extremadamente sencillo: simplemente
debemos cambiar el factor multiplicando a Lkn en (3.8). 4
Observación 3.2.6 (algunas desventajas de la forma de Lagrange). Si queremos obtener
una expresión explı́cita para el polinomio interpolante usando la forma de Lagrange,

70
Métodos Numéricos Facultad de Ingenierı́a – IMERL

entonces la evaluación de (3.7) para hallar la base correspondiente puede ser costosa.
Además, si queremos evaluar pn en algún punto que no sea x0 , . . . , xn , entonces será más
costoso computacionalmente hacerlo si lo tenemos escrito en la base de Lagrange que si
lo tenemos escrito en la base monomial. En forma análoga, la forma de Lagrange puede
ser más difı́cil de manipular a la hora de integrar o derivar el polinomio interpolante, lo
que es un uso relevante de esta herramienta (ver la Sección 3.1).
Por otra parte, al igual que ocurre con la forma de Vandermonde, la forma de Lagrange no
es demasiado amigable con agregar nuevos puntos para interpolar: si se agrega un nuevo
punto, será necesario recalcular la nueva base. 4

3.2.3. Forma de Newton


Las formas de Vandermonde y de Lagrange comparten la limitación de que no son prácti-
cas de manipular en caso de que vayamos agregando nuevos puntos por los que queremos
interpolar. Esto está en contraste con el espı́ritu de nuestra demostración del Teorema
3.2.1: allı́, hicimos una inducción en la cantidad de puntos, agregando datos secuencial-
mente. La forma de Newton consiste en construir el polinomio interpolante pn mediante
este mismo proceso inductivo. Volvamos a la demostración del Teorema 3.2.1, pero ahora
con una perspectiva algorı́tmica.

Si tenemos un único punto (x0 , y0 ), entonces el polinomio interpolante es p0 (x) = y0 .

Si ya tenemos el polinomio interpolante pn−1 a través de los primeros n puntos


entonces, usando (3.1), (3.2) y (3.3), tenemos

(yn − pn−1 (xn ))(x − x0 )(x − x1 ) . . . (x − xn−1 )


pn (x) = pn−1 (x) + .
(xn − x0 )(xn − x1 ) . . . (xn − xn−1 )

Otra forma de escribir esta última identidad es

pn (x) = a0 + a1 (x − x0 ) + a2 (x − x0 )(x − x1 ) + . . . + an (x − x0 ) . . . (x − xn−1 ). (3.9)

Ejercicio 3.1. Sean los coeficientes {ai }i=0,...,n dados por (3.3). Verificar que el lado
derecho de (3.9) es efectivamente una expresión para el polinomio interpolante por los
puntos {(xi , yi )}i=0,...,n .
[Sugerencia: evaluar el lado derecho en x0 , . . . , xn y usar la unicidad del polinomio interpolante.]

Observación 3.2.7 (sobre la demostración del Teorema 3.2.1). Nuestra demostración del
Teorema 3.2.1 está relacionada con la forma de Newton y motivada por ella. Ese teorema se
puede demostrar de varias formas alternativas. En particular, referimos a [Hea02, Sección
7.3.1] para una demostración basada en la forma de Vandermonde y a [SM03, Teorema
6.1] para una inspirada en la forma de Lagrange. 4

71
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Observación 3.2.8 (algoritmo de Horner). La expresión (3.9) da lugar a un método eficiente


para evaluar pn , el llamado algoritmo de Horner. Éste consiste en reescribir dicha
fórmula como
 h 
 i
pn (x) = a0 + (x − x0 ) a1 + (x − x1 ) a2 + (x − x2 ) a3 + . . . .

El Algoritmo 3.1 muestra cómo esta expresión puede ser implementada de forma muy
sencilla.
Algoritmo 3.1: Pseudo-código: algoritmo de Horner
Datos: a0 , . . . , an ∈ R, x ∈ R
Resultado: y = pn (x)
y ← an ;
para j = n − 1 : −1 : 0 hacer
y ← aj + (x − xj )y;
fin

4
Observación 3.2.9 (diferencias divididas). Una vez que tenemos determinados los coefi-
cientes {ai }i=0,...,n , el algoritmo de Horner nos permite evaluar pn de forma eficiente. Para
determinar estos coeficientes, bien podrı́amos utilizar (3.3) directamente, aunque en esta
expresión también hay una “recursión escondida”.
Esta recursión se explota en el llamado método de diferencias divididas, que descri-
bimos a continuación. Se parte2 de f [xi ] = f (xi ) = yi y se toma, para i = 1, . . . , n,
f [xk+1 , xk+2 , . . . , xk+i ] − f [xk , xk+1 , . . . , xk+i−1 ]
f [xk , xk+1 , . . . , xk+i ] := , k = 0, . . . , n − i.
xk+i − xk
Una vez halladas estas diferencias divididas, simplemente se tiene
a0 = f [x0 ], a1 = f [x0 , x1 ], . . . , an = f [x0 , x1 , . . . , xn ].
4
Ejemplo 3.2.3 (forma de Newton). Volvamos al Ejemplo 3.2.1/3.2.2, y expresemos el
polinomio interpolante p2 en la forma de Newton.
En primer lugar, hallamos los coeficientes a0 , a1 , a2 mediante el método de diferencias
divididas. Recordando los valores de la tabla de datos de este ejemplo, tenemos
f [x0 ] = −3/4, f [x1 ] = −1, f [x2 ] = 3/2 (i = 0, k = 0),
f [x1 ] − f [x0 ] −1 − (−3/4) 1
f [x0 , x1 ] = = =− (i = 1, k = 0),
x1 − x0 1 − 1/4 3
f [x2 ] − f [x1 ] 3/2 − (−1) 5
f [x1 , x2 ] = = = (i = 1, k = 1),
x2 − x1 5/2 − 1 3
f [x1 , x2 ] − f [x0 , x1 ] 5/3 − (−1/3) 8
f [x0 , x1 , x2 ] = = = , (i = 2, k = 0).
x2 − x0 5/2 − 1/4 9
2
A no asustarse con la expresión f [·]: ¡es solamente notación!

72
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Deducimos que los coeficientes de p2 en la forma de Newton son


3 1 8
a0 = f [x0 ] = − , a1 = f [x0 , x1 ] = − , a2 = f [x0 , x1 , x2 ] = ,
4 3 9
y por lo tanto3
  
  3 1 1 8
p2 (x) = a0 + (x − x0 ) a1 + a2 (x − x1 ) = − + x − − + (x − 1) .
4 4 3 9

Queda como ejercicio para el lector verificar que esta expresión coincide con (3.6). 4

3.3. Interpolación de funciones


Hasta aquı́ nos hemos concentrado en el problema de hallar el polinomio interpolante a
través de ciertos datos. A continuación, profundizaremos en un aspecto central en muchas
aplicaciones: la capacidad de aproximar del polinomio interpolante.
Concretamente, en esta sección asumimos que los datos están tomados al muestrear
una cierta función f : R → R desconocida. Esto es, dados n + 1 puntos en el plano
{(xi , f (xi ))}i=0,...,n con xi 6= xj si i 6= j, consideramos el único polinomio pn de grado
menor o igual a n que cumple p(xi ) = f (xi ) para todo i = 0, . . . , n y nos preguntamos:
¿qué tan cerca están f y pn ?
Una pregunta importante en este punto es cómo definir “estar cerca” o “estar lejos”
para dos funciones. De nuestra experiencia de Cálculo, sabemos que las normas inducen
distancias4 ; en este curso vamos a trabajar con la siguiente norma de funciones.

Definición 3.3.1 (norma del supremo). Sea f : D → R una función. Definimos la norma
del supremo de f en D, que escribimos como kf kL∞ (D) , mediante

kf kL∞ (D) := sup |f (x)|. (3.10)


x∈D

Observación 3.3.1. La norma del supremo (3.10) es análoga a la norma `∞ en Rn que


consideramos en el Capı́tulo 2, con la obvia diferencia de que el espacio de funciones
D → R es de dimensión infinita. Si estamos trabajando con funciones continuas en un
dominio cerrado y acotado, por el Teorema de Weierstrass el supremo es en realidad un
máximo. 4
3
Aquı́ usamos la expresión anidada de Horner solamente para ilustrarla, pero bien podrı́amos haber
utilizado la fórmula (3.9).
4
Por ejemplo: si a Rn le damos una norma `p como las que introdujimos en el Capı́tulo 2, podrı́amos
definir la distancia entre dos puntos x, y ∈ Rn como dp (x, y) := kx − ykp . Para p = 2, esto se corresponde
con nuestra noción habitual de distancia en el plano/espacio.

73
Métodos Numéricos Facultad de Ingenierı́a – IMERL

3.3.1. Error de interpolación


En esta sección, vamos a analizar el error de interpolación polinomial. Dadas las funciones
f y pn , la norma kf − pn kL∞ ([a,b]) consiste en tomar todos los puntos x ∈ [a, b], evaluar
la discrepancia |f (x) − pn (x)|, y luego tomar la mayor de estas discrepancias. Para esti-
mar el error de interpolación polinomial, procedemos de forma análoga: en primer lugar,
damos una expresión de la discrepancia para puntos arbitrarios (Teorema 3.3.1) y luego
estimamos qué tan grande puede ser esta discrepancia.
Para simplificar la notación, dadas f y pn como en el párrafo anterior, definimos5 el error
de interpolación polinomial como

en := f − pn .

Notar que en : [a, b] → R es una función: para cada punto x ∈ [a, b] tenemos un valor
en (x). Teniendo en cuenta la Definición 3.3.1, nos interesa estimar ken kL∞ ([a,b]) .

Teorema 3.3.1 (error de interpolación polinomial). Sean f de clase C n+1 en un intervalo


[a, b], los puntos x0 < x1 < . . . < xn en el intervalo [a, b], y pn el polinomio interpolante
por {(xi , f (xi )}i=0,...,n . Entonces, para cada x ∈ [a, b] existe un γx ∈ (a, b) tal que

f (n+1) (γx )
en (x) = f (x) − pn (x) = (x − x0 )(x − x1 ) . . . (x − xn ). (3.11)
(n + 1)!

La fórmula (3.11) nos dice que el error de interpolación en un punto dado x ∈ [a, b]
depende de la derivada (n + 1)-ésima de f en un cierto punto (desconocido y que depende
de x) del intervalo [a, b] y del producto de las distancias (con signo) entre x y los nodos
de interpolación x0 , . . . , xn . Si nos interesa acotar el error de interpolación polinomial,
entonces debemos estimar la magnitud de estos términos: volvemos a este punto en la
Observación 3.3.2 más adelante. Por el momento, y para alivianar un poco la notación,
introducimos la siguiente definición.

Definición 3.3.2 (polinomio nodal). Sean los puntos x0 < x1 < . . . < xn en el intervalo
[a, b]. Definimos el polinomio nodal por x0 , . . . , xn como ωn : [a, b] → R,
n
Y
ωn (x) := (x − xi ).
i=0

Demostración del Teorema 3.3.1. Fijemos un punto x ∈ [a, b]. Es claro que si x = xi para
algún i entonces f (xi ) − pn (xi ) = 0 y vale (3.11), por lo que podemos suponer que x 6= xi
para todo i = 0, . . . , n.
5
Observar que aquı́ estamos definiendo el error con el signo opuesto a como lo hicimos en el Capı́tulo
1. De todas formas, nos interesa la magnitud (valor absoluto) de este error y no su signo.

74
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Consideramos la función auxiliar G : [a, b] → R dada por

ωn (t)
G(t) := en (t) − en (x) . (3.12)
ωn (x)

Remarcamos que la variable que toma la función G es t, y que el punto x permanece


fijo. Como f es de clase C n+1 , resulta que G también es de clase C n+1 . Por otra parte,
observamos que G(xi ) = 0 para todo i = 0, . . . , n, y que además G(x) = 0. Por lo tanto,
G tiene al menos n + 2 raı́ces distintas en el intervalo [a, b].
Sean z0 < z1 < . . . < zn+1 las n + 2 raı́ces que sabemos que G tiene en el intervalo [a, b].
Aplicando el Teorema de Rolle en cada subintervalo [zi , zi+1 ] (i = 0, . . . , n), podemos
asegurar que G0 tiene al menos n + 1 raı́ces distintas en el intervalo (a, b). Aplicamos
nuevamente el Teorema de Rolle en cada subintervalo definido por las raı́ces de G0 y
hallamos que G00 tiene al menos n raı́ces distintas en (a, b). Podemos seguir ası́ hasta
llegar a la derivada (n + 1)-ésima de G, y deducir que existe al menos una raı́z γx ∈ (a, b)
de la función G(n+1) .
Observemos la definición (3.12) de la función G: involucra a los polinomios pn , que es de
grado n, y ωn , que es de grado n + 1. Luego, la derivada de orden n + 1 de pn es nula, y
la de ωn es una constante:
ωn(n+1) (t) = (n + 1)!
Por lo tanto, tenemos

(n + 1)!
G(n+1) (t) = f (n+1) (t) − en (x) ,
ωn (x)

y evaluando en γx ,

(n + 1)!
0 = G(n+1) (γx ) = f (n+1) (γx ) − en (x) .
ωn (x)

Finalmente, despejamos en (x) de esta última igualdad y obtenemos (3.11).

La utilidad principal del Teorema 3.3.1 radica en poder acotar el error de interpolación.

Corolario 3.3.2 (estimación del error de interpolación polinomial). Bajo las mismas
hipótesis del Teorema 3.3.1, tenemos las estimaciones

|ωn (x)| kf (n+1) kL∞ ([a,b])


|en (x)| ≤ ∀x ∈ [a, b], (3.13)
(n + 1)!
y
kωn kL∞ ([a,b]) kf (n+1) kL∞ ([a,b])
ken kL∞ ([a,b]) ≤ . (3.14)
(n + 1)!

75
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Demostración. Ambas estimaciones son consecuencia directa de (3.11). Dado x ∈ [a, b],
tomando valor absoluto en (3.11) y acotando |f (n+1) (γx )| ≤ kf (n+1) kL∞ ([a,b]) , deducimos
(3.13). Luego, como además vale |ωn (x)| ≤ kωn kL∞ ([a,b]) , tomando supremo en x ∈ [a, b]
obtenemos (3.14).

Ejemplo 3.3.1 (error de interpolación). Consideramos la función f : [0, 1] → R, f (x) =


sen(x) cos(x), y tomamos n + 1 puntos equiespaciados en dicho intervalo,
i
xi := , i = 0, . . . , n.
n
Consideramos el polinomio interpolante pn a través de {(xi , f (xi )}i=0,...,n . La Figura 3.3
muestra la función f y los polinomios interpolantes p1 , p2 , p3 , que son lineal, cuadráti-
co y cúbico, respectivamente. Nos preguntamos cómo acotar el error de interpolación
polinómica en la norma del supremo en función de n.

Figura 3.3: Interpolación polinomial de la función f : [0, 1] → R, f (x) = sen(x) cos(x).

Es sencillo verificar que f es infinitamente derivable6 y que se cumplen

f 0 (x) = cos2 (x) − sen2 (x), f 00 (x) = −4 sen(x) cos(x), f 000 (x) = −4(cos2 (x) − sen2 (x)), . . . .

Acotando (groseramente) el valor absoluto de las funciones seno y coseno por 1, deducimos
que para todo x ∈ [0, 1] valen

|f 0 (x)| ≤ 2, |f 00 (x)| ≤ 4, |f 000 (x)| ≤ 8 . . . y, en general, |f (n) (x)| ≤ 2n ∀n ≥ 1,


6
Esto se suele escribir como f ∈ C ∞ .

76
Métodos Numéricos Facultad de Ingenierı́a – IMERL

lo que podemos escribir como kf (n) kL∞ ([0,1]) ≤ 2n ∀n ≥ 1. Por otra parte, como esta-
mos trabajando en el intervalo [0, 1], para todo x ∈ [0, 1] podemos acotar (nuevamente,
groseramente)
|x − xi | ≤ 1 ∀i = 0, . . . , n,
lo que implica
n
Y
kωn kL∞ ([0,1]) = máx |ωn (x)| = máx |x − xi | ≤ 1.
x∈[0,1] x∈[0,1]
i=0

Por lo tanto, usando (3.14), obtenemos la estimación


2n+1
ken kL∞ ([0,1]) ≤ .
(n + 1)!
Por ejemplo, si usamos polinomios de grados n = 5, n = 10, o n = 20, esta última
desigualdad quiere decir que
26
|f (x) − p5 (x)| ≤ ≈ 8,9 × 10−2 ∀x ∈ [0, 1],
6!
211
|f (x) − p10 (x)| ≤ ≈ 5,1 × 10−5 ∀x ∈ [0, 1],
11!
221
|f (x) − p20 (x)| ≤ ≈ 4,1 × 10−14 ∀x ∈ [0, 1].
21!
4
Observación 3.3.2 (comportamiento del error de interpolación). En el Ejemplo 3.3.1, ob-
tuvimos que al aumentar la cantidad de puntos por los que interpolamos f , el error de
interpolación decrece. En principio esto parece muy natural, ya que al aumentar la can-
tidad de puntos estamos capturando “más información” sobre f . Sin embargo, esto no se
deduce ni del Teorema 3.3.1 ni del Corolario 3.3.2. Notemos que en los lados derechos de
las estimaciones (3.11), (3.13), (3.14) aparecen:

un factor 1/(n + 1)!, que obviamente decrece al aumentar n;


el polinomio nodal ωn , del que no sabemos mucho cómo se comporta al variar n, y
al que tal vez podamos aspirar a controlar como hicimos en el Ejemplo 3.3.1;
un término involucrando la derivada (n + 1)-ésima de f , que evidentemente depende
de f y por lo tanto está fuera de nuestro control.

Si estamos en una situación como la del Ejemplo 3.3.1, en que podemos estimar
kωn kL∞ ([0,1]) de forma razonable, y las normas del supremo de las derivadas de
la función f no crecen “demasiado rápido” respecto a n, entonces es de esperar
que al aumentar la cantidad de puntos por los que interpolamos, el error de
interpolación decrezca. En estos casos, vale la pena hacer una interpolación polinomial
de grado alto. 4

77
Métodos Numéricos Facultad de Ingenierı́a – IMERL

3.3.2. Fenómeno de Runge


La Observación 3.3.2 nos deja entrever que quizás no siempre sea buena idea aumentar el
grado polinomial al interpolar una función. En esta sección mostramos que, efectivamente,
al aumentar el grado polinomial no necesariamente se gana en precisión. Especı́ficamente,
el llamado fenómeno de Runge, que describimos a continuación, tiene que ver con
la presencia de oscilaciones cerca de los bordes del intervalo al realizar interpolación
polinomial de grado alto.
El marco en el que trabajamos es similar al del Ejemplo 3.3.1. Consideramos la llamada
función de Runge f : [−1, 1] → R,
1
f (x) = ,
1 + 25x2
y la interpolamos usando n + 1 puntos equiespaciados en [−1, 1],
2i
xi := −1 + , i = 0, . . . , n.
n
La Figura 3.4 nos muestra la interpolación polinomial que se obtiene al tomar n = 5,
n = 10, n = 20. Observamos que el polinomio interpolante genera unas oscilaciones
siniestras cerca de los extremos del intervalo [−1, 1]. En particular, notamos que no se
cumple ken kL∞ ([−1,1]) → 0 con n → ∞. De hecho, se tiene ken kL∞ ([−1,1]) → ∞.

Figura 3.4: Fenómeno de Runge: interpolar la función de Runge sobre puntos equiespa-
ciados.

¿A qué se debe tan mal comportamiento del polinomio interpolante? Recordemos los tres
puntos que marcamos en la Observación 3.3.2. Se puede demostrar –es una cuenta larga y

78
Métodos Numéricos Facultad de Ingenierı́a – IMERL

tediosa– que las derivadas de la función de Runge crecen rápidamente al aumentar n. De


hecho, la magnitud de estas derivadas crece más rápido que (n + 1)!, que era el término
“bueno” que tenı́amos a nuestro favor. Por lo tanto, para que el error de interpolación
decrezca necesitamos la ayuda del polinomio nodal. La elección de nodos equiespaciados
hace que el polinomio nodal ωn no nos dé la ayuda que necesitamos, y el resultado es
desastroso.
Surge, entonces, la pregunta de qué hacer cuando interpolamos una función cu-
yas derivadas de orden alto crecen rápidamente en magnitud. Proponemos dos
alternativas:

1. Mantenerse con interpolaciones de grado bajo. Esto logra evitar las oscila-
ciones que observamos en la Figura 3.4. Como una interpolación de grado bajo en
un intervalo “grande” es poco precisa, la estrategia habitual consiste en dividir el
intervalo en subintervalos pequeños y en cada uno de estos subintervalos aplicar
una interpolación de grado bajo. Vamos a explorar en detalle esta estrategia en la
Sección 3.4.

2. Elegir los nodos de interpolación de forma más astuta, de modo de lograr que
kωn kL∞ ([−1,1]) sea lo menor posible. Comentamos muy brevemente esta alternati-
va. Los nodos de Chebyschev en el intervalo [−1, 1] son
 
πi
xi = − cos , i = 0, . . . , n,
n
y tienen la propiedad de minimizar
n
Y
máx |x − xi | = kωn kL∞ ([−1,1]) .
x∈[−1,1]
i=0

La Figura 3.5 nos muestra las interpolaciones polinomiales p5 , p10 , p20 de la fun-
ción de Runge utilizando los nodos de Chebyschev. Notemos que no se observan las
oscilaciones presentes en la Figura 3.4 y que efectivamente una buena elección de
los nodos por los que interpolamos nos puede permitir estabilizar estas oscilacio-
nes. De hecho, se puede demostrar que con esta elección se tiene la convergencia
ken kL∞ ([−1,1]) → 0 con n → ∞. Referimos a [QS06, Sección 3.1.2] para más detalles.

3.4. Interpolación a trozos


Como adelantamos al final de la Sección 3.3.2, una alternativa a considerar interpolaciones
polinomiales de grado alto en un intervalo grande consiste en partir este intervalo en
subintervalos pequeños y considerar interpolaciones de grado bajo en cada uno de estos
subintervalos. Al hacer esto, se puede buscar también imponer ciertas propiedades de

79
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Figura 3.5: Interpolación polinomial de la función de Runge sobre nodos de Chebyschev.

suavidad o regularidad sobre la función interpolante. Esta estrategia se conoce como


interpolación a trozos.
A la luz del fenómeno de Runge (Sección 3.3.2), una ventaja aparente de considerar inter-
polaciones polinomiales a trozos de grado bajo es que se mitiga la aparición de oscilaciones,
asociadas a interpolaciones de grado alto de funciones con poca regularidad (recordar la
Observación 3.3.2).
¿De qué grado polinomial deberı́amos considerar nuestras interpolantes? Si tenemos un
conjunto de datos {(xi , yi )}i=0,...,n , parece natural la idea de “unir los puntos” con seg-
mentos de recta: esto se corresponde a una interpolación lineal a trozos, que analizamos
en la Sección 3.4.1. El resultado de esta interpolación es una curva que no es derivable en
los puntos x0 , . . . , xn , como la que mostramos en la Figura 3.6 más abajo.
Supongamos que deseamos que nuestra función interpolante –a la que llamaremos p–
sea un polinomio a trozos y con mejores propiedades de regularidad. Para fijar ideas,
supongamos que queremos que p sea una función derivable. Como p es un polinomio en
cada intervalo [xi , xi+1 ] (i = 0, . . . , n − 1), basta con lograr que p sea derivable en los
nodos interiores x1 , . . . , xn−1 . Fijemos un i ∈ {1, . . . , n − 1} y analicemos lo que ocurre en
el nodo xi . Imponer que p sea derivable en xi es equivalente a lograr que

p [xi−1 ,xi ]
(xi ) = p [xi ,xi+1 ]
(xi ) y p0 [xi−1 ,xi ]
(xi ) = p0 [xi ,xi+1 ]
(xi ). (3.15)

Por lo tanto, si queremos que el polinomio interpolante sea derivable, debemos prescribir
de alguna forma el valor de p0 (xi ); llamemos di a ese valor, que por el momento asumimos
conocido. Si nos restringimos a un intervalo [xi , xi+1 ] (i = 0, . . . , n − 1), requerimos que p

80
Métodos Numéricos Facultad de Ingenierı́a – IMERL

cumpla 4 condiciones:

p(xi ) = yi , p(xi+1 ) = yi+1 , p0 (xi ) = di , p0 (xi+1 ) = di+1 .

Como tenemos 4 restricciones, si queremos tener un problema con solución única parece
natural que lo podamos lograr con 4 grados de libertad. Por lo tanto, en cada intervalo
[xi , xi+1 ] (i = 0, . . . , n − 1) el polinomio p debe ser un polinomio cúbico.
Más en general, al hacer interpolaciones polinomiales a trozos, las funciones
interpolantes se suelen tomar como polinomios de grado impar en cada subin-
tervalo. En esta sección nos restringimos a funciones lineales y cúbicas a trozos.

3.4.1. Interpolación lineal a trozos


Conceptualmente, la interpolación lineal a trozos es extremadamente simple: dados n + 1
puntos en el plano {(xi , yi )}i=0,...,n con x0 < x1 < . . . < xn , se considera la función
L : [x0 , xn ] → R cuyo gráfico se corresponde con “unir los puntos” con segmentos de recta
en orden.

Definición 3.4.1 (interpolación lineal a trozos). Dados n + 1 puntos en el plano


{(xi , yi )}i=0,...,n con x0 < x1 < . . . < xn , su interpolación lineal a trozos es la función
L : [x0 , xn ] → R que en cada intervalo [xi , xi+1 ] (i = 0, . . . , n−1) coincide con el polinomio
interpolante por los puntos (xi , yi ), (xi+1 , yi+1 ). En otras palabras, L es la función dada
por
 
yi+1 − yi
L(x) := yi + (x − xi ) , ∀x ∈ [xi , xi+1 ] (i = 0, . . . , n − 1). (3.16)
xi+1 − xi

Observación 3.4.1 (no derivabilidad). La interpolante lineal a trozos L es una función


continua, pero no es derivable en los nodos interiores x1 , . . . , xn−1 . 4

Dados x0 < x1 < . . . < xn , la implementación de un algoritmo que computa la interpo-


lación lineal a trozos por (x0 , y0 ), . . . , (xn , yn ), evaluada en un cierto punto v ∈ [x0 , xn ],
se puede lograr como se muestra en el Algoritmo 3.2. Allı́, hacemos uso de las siguientes
variables auxiliares:

la variable local s := x − xi , para x ∈ [xi , xi+1 ],


yi+1 − yi
las diferencias divididas δi := , para i = 0, . . . , n − 1.
xi+1 − xi

Usando s como nueva variable, podemos reescribir (3.16) compactamente como

L(s) = yi + sδi , ∀s ∈ [0, xi+1 − xi ] (i = 0, . . . , n − 1).

81
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Algoritmo 3.2: Implementación de una interpolación lineal a trozos.


Datos: {(xi , yi )}i=0,...,n con x0 < x1 < . . . < xn , y un punto v ∈ [x0 , xn ]
Resultado: w = L(v) según la Definición 3.4.1
δ ←diff(y)./diff(x) % computar las diferencias divididas;
% hallar el ı́ndice i tal que x(i) <= v < x(i+1);
i = 1;
mientras x(i) < v hacer
i←i+1
fin
% computar la variable local y evaluar L;
s ← v − x(i);
w ← y(i) + sδ(i) ;

Ejercicio 3.2. El Algoritmo 3.2 computa todas las diferencias divididas, lo que es innece-
sario si solamente nos interesa evaluar L en un punto. Sin embargo, esto puede ser útil si
queremos evaluar L en varios puntos a la vez. Modificando el Algoritmo 3.2, implementar
un código que permita evaluar L en un vector de puntos v ∈ Rm de forma eficiente, asu-
miendo que las entradas de v están ordenadas de forma creciente y pertenecen al intervalo
[x0 , xn ].

En forma similar a la Sección 3.3, cabe preguntarse qué tan bien podemos aproximar a
una cierta función f si usamos su interpolación lineal a trozos. Concretamente, si tenemos
que yi = f (xi ) para todo i = 0, . . . , n, y construimos la interpolante lineal a trozos L,
queremos estimar la discrepancia entre f y L. Nuestra herramienta principal es el Teorema
3.3.1.
En efecto, supongamos que f es de clase C 2 , tomemos n + 1 puntos x0 < x1 < . . . < xn , y
L la interpolante lineal a trozos por {(xi , f (xi )}i=0,...,n . Consideremos un punto x ∈ [x0 , xn ]
fijo: si x = xi para algún i = 0, . . . , n, entonces el error de interpolación es nulo. Si x no
coincide con ninguno de los nodos, entonces x ∈ (xi , xi+1 ) para algún i = 0, . . . , n − 1.
Observemos que en ese intervalo estamos haciendo una interpolación lineal (n = 1) de f ,
por lo que podemos usar (3.11): existe un γx ∈ (xi , xi+1 ) tal que
f 00 (γx )
f (x) − L(x) = (x − xi )(x − xi+1 ). (3.17)
2
Esta fórmula nos da una representación del error de interpolación; si queremos estimar
su magnitud, entonces debemos acotar el lado derecho de la igualdad de forma análoga a
como hicimos en la demostración del Corolario 3.3.2.
Teorema 3.4.1 (estimación del error de interpolación lineal a trozos). Sean n + 1 puntos
x0 < x1 < . . . < xn , f una función de clase C 2 en el intervalo [x0 , xn ], y L la interpolante
lineal a trozos por los puntos {(xi , f (xi ))}i=0,...,n . Entonces, si x ∈ [xi , xi+1 ] para i ∈
{0, . . . , n − 1}, se tiene
kf 00 kL∞ ([xi ,xi+1 ])
|f (x) − L(x)| ≤ (x − xi ) (xi+1 − x). (3.18)
2
82
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Además,
kf 00 kL∞ ([x0 ,xn ])
kf − LkL∞ ([x0 ,xn ]) ≤ máx |xj+1 − xj |2 . (3.19)
8 j=0,...,n−1

Demostración. Sea x ∈ [xi , xi+1 ] para algún i ∈ {0, . . . , n − 1}. Tomando valor absoluto
en (3.17), y como γx ∈ (xi , xi+1 ) podemos acotar

|f 00 (γx )| ≤ kf 00 kL∞ ([xi ,xi+1 ]) ,

y se deduce (3.18). Para probar (3.19), observemos que la función nodal

ω(x) := (x − xi ) (xi+1 − x), x ∈ [xi , xi+1 ],

alcanza su máximo en x = xi +x2 i+1 , el punto medio del intervalo [xi , xi+1 ], y este máximo
2
vale |xi+14−xi | . Por lo tanto, si x ∈ [xi , xi+1 ], tenemos

kf 00 kL∞ ([xi ,xi+1 ]) |xi+1 − xi |2


|f (x) − L(x)| ≤ .
2 4
Finalmente, usando que kf 00 kL∞ ([xi ,xi+1 ]) ≤ kf 00 kL∞ ([x0 ,xn ]) y que |xi+1 − xi |2 ≤
máxj=0,...,n−1 |xj+1 − xj |2 , obtenemos

kf 00 kL∞ ([x0 ,xn ])


|f (x) − L(x)| ≤ máx |xj+1 − xj |2 .
8 j=0,...,n−1

Como esto vale para todo x ∈ [x0 , xn ], deducimos (3.19).

Ejemplo 3.4.1 (interpolación lineal a trozos de la función de Runge). Interpolamos la


función de Runge, con la que ya trabajamos en la Sección 3.3.2. Consideramos f : [−1, 1] →
1
R, f (x) = 1+25x 2 , usamos n + 1 puntos equiespaciados en [−1, 1],

2i
xi := −1 + , i = 0, . . . , n,
n
y construimos la interpolante lineal a trozos de f por estos nodos. Esto es, en la Definición
3.4.1 tomamos yi = f (xi ) para i = 0, . . . , n. La Figura 3.6 nos muestra el resultado
tomando n + 1 = 21 puntos, y se contrasta notablemente con el panel derecho de la
Figura 3.4: la interpolación lineal a trozos evita que la función interpolante oscile.
También podemos estimar el error de interpolación usando el Teorema 3.4.1. La derivada
segunda de la función de Runge es

50 (75x2 − 1)
f 00 (x) = ,
(1 + 25x2 )3

que en valor absoluto alcanza su máximo en x = 0 y es f 00 (0) = −50. Por lo tanto,


kf 00 kL∞ ([−1,1]) = 50.

83
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Figura 3.6: Interpolación lineal a trozos de la función de Runge.

Por otra parte, estamos tomando nodos equiespaciados, por lo que todos los subintervalos
tienen la misma longitud: tenemos el intervalo [−1, 1] partido en n = 20 subintervalos,
por lo que tenemos
1
|xi+1 − xi | = ∀i = 0, . . . , n − 1.
10
Reemplazando en (3.19), obtenemos que, al realizar una interpolación lineal a trozos de
la función de Runge con 21 nodos equiespaciados, el error en norma del supremo se puede
acotar mediante
50 1 1
kf − LkL∞ ([−1,1]) ≤ 2
= .
8 10 16
Más en general, si en lugar de 21 usáramos n + 1 nodos equiespaciados, entonces cada
subintervalo tendrı́a longitud
2
|xi+1 − xi | = ∀i = 0, . . . , n − 1.
n
y llegarı́amos a la cota del error
 2
50 2 25
kf − LkL∞ ([−1,1]) ≤ = 2.
8 n n
Notemos que kf − LkL∞ ([−1,1]) → 0 cuando n → ∞: a diferencia de lo que ocurrı́a en la
Figura 3.4, ahora tenemos que la sucesión de interpolantes lineales a trozos por n puntos
equiespaciados converge a la función. 4

3.4.2. Interpolación cúbica a trozos


La interpolación lineal a trozos nos da una función que no es derivable, y quizás en ciertas
aplicaciones queramos que el gráfico resultante sea más agradable a la vista. Tal como

84
Métodos Numéricos Facultad de Ingenierı́a – IMERL

ya analizamos (recordar la discusión alrededor de (3.15)), la siguiente opción natural es


buscar interpolantes cúbicas a trozos.
A continuación discutimos varias alternativas posibles para construir tal interpolante,
dependiendo del tipo de problema que tengamos y de qué propiedades deseemos que
nuestra interpolante tenga. El marco general para las tres interpolantes que analizamos
(de Hermite, splines, y “que preserva forma”) es el siguiente. Dado un conjunto de n + 1
ternas de números reales {(xi , yi , di )}i=0,...,n , con x0 < . . . < xn , buscamos una función p
que cumpla:

para cada i = 0, . . . , n − 1, p [xi ,xi+1 ]


sea un polinomio de grado 3,

para cada i = 0, . . . , n − 1, se cumplan p(xi ) = yi , p0 (xi ) = di .

Es conveniente tratar este problema en cada subintervalo por separado. Para probar que
existe un único polinomio cúbico en el intervalo [xi , xi+1 ] que cumple

p(xi ) = yi , p(xi+1 ) = yi+1 , p0 (xi ) = di , p0 (xi+1 ) = di+1 , (3.20)

podemos razonar “a la Vandermonde”7 , planteando a p en la base monomial, p(x) =


c0 + c1 x + c2 x2 + c3 x3 , imponiendo estas ecuaciones y llegando a un sistema lineal 4 × 4
cuyas incógnitas son c0 , c1 , c2 , c3 . Nos vamos a ahorrar el trabajo de ensamblar y resolver
este sistema y simplemente vamos a dar su solución: para x ∈ [xi , xi+1 ] (i = 0, . . . , n − 1),

3hi s2 − 2s3
 3
hi − 3hi s2 + 2s3
  
p(x) = yi+1 + yi
h3i h3i
(3.21)
s2 (s − hi ) s(s − hi )2
+ di+1 + di .
h2i h2i

Aquı́, introdujimos la notación


hi := xi+1 − xi ,
y usamos la variable local que definimos en la Sección 3.4.1,

s := x − xi .

Ejercicio 3.3. Verificar que el polinomio dado por (3.21) cumple las condiciones (3.20).

La diferencia entre las tres alternativas que analizamos a continuación radica en cómo
tomamos las pendientes d0 , . . . , dn . Dependiendo del problema que nos interese, éstas
podrı́an ser conocidas o no. En caso de que no lo sean, tenemos la libertad de elegirlas a
nuestro criterio.
7
Notar que, como el sistema resultante es 4 × 4, no tenemos los inconvenientes que comentamos en las
observaciones 3.2.2 y 3.2.3.

85
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Interpolación de Hermite

La interpolación de Hermite parte de una base similar a la de la Sección 3.3: asumimos


que nuestros datos vienen dados por muestrear una cierta función f . Especı́ficamente,
asumimos que existe f : [x0 , xn ] → R suficientemente regular y tal que

yi = f (xi ), di = f 0 (xi ), ∀i = 0, . . . , n.

Como las pendientes d0 , . . . , dn son conocidas, simplemente debemos reemplazar los va-
lores correspondientes en (3.21) y logramos construir una interpolante cúbica a trozos
p : [x0 , xn ] → R, que cumple p(xi ) = f (xi ), p0 (xi ) = f 0 (xi ) para todo i = 0, . . . , n.
Definición 3.4.2 (interpolante cúbica a trozos de Hermite). A la función p : [x0 , xn ] → R
construida como se describe arriba se le llama la interpolante cúbica a trozos de
Hermite de f por x0 , . . . , xn . 4
Observación 3.4.2. En general, la interpolación de Hermite refiere a interpolar una función
f incorporando no solamente sus valores en los nodos (los y0 = f (x0 ), . . . , yn = f (xn ))
sino que también los valores de las derivadas hasta un cierto orden de f en los nodos.
Si queremos que las primeras k derivadas de nuestra interpolante de Hermite a trozos
coincidan con las primeras k derivadas de f , entonces la interpolante debe ser un polinomio
de grado 2k + 1 en cada subintervalo. Por ejemplo, si queremos que nuestra interpolante
tenga iguales derivada primera y derivada segunda en todos los nodos, obtendremos la
llamada interpolante quı́ntica de Hermite, que es un polinomio de grado 5 a trozos. En
este curso nos restringimos a la interpolación cúbica de Hermite, que es la más utilizada
en la práctica. 4
De forma análoga a lo que hicimos en las secciónes 3.3.1 y 3.4.1, podemos estimar el error
de interpolación al usar interpolantes cúbicas a trozos de Hermite. Comenzamos con una
fórmula de representación del error análoga a (3.11).
Teorema 3.4.2 (error de interpolación cúbica de Hermite). Sea f : [a, b] → R una función
de clase C 4 , y consideremos su interpolante cúbica de Hermite p por los puntos a y b, esto
es, p es el único polinomio de grado 3 que cumple p(a) = f (a), p(b) = f (b), p0 (a) = f 0 (a),
p0 (b) = f 0 (b). Entonces, para todo x ∈ [a, b] existe un γx ∈ (a, b) tal que
(x − a)2 (x − b)2 (4)
e(x) := f (x) − p(x) = f (γx ). (3.22)
24
Demostración. Sea x ∈ [a, b]. El resultado es trivial si x = a o x = b, por lo que asumimos
x ∈ (a, b). Consideramos la función auxiliar G : [a, b] → R,
(t − a)2 (t − b)2
G(t) := e(t) − e(x) .
(x − a)2 (x − b)2
Como G(a) = G(b) = G(x) = 0, por el Teorema de Rolle podemos asegurar que G0 tiene al
menos dos raı́ces, una en el intervalo (a, x) y otra en el intervalo (x, b). Pero además, como

86
Métodos Numéricos Facultad de Ingenierı́a – IMERL

e0 (a) = f 0 (a) − p0 (a) = 0, es sencillo verificar que G0 (a) = 0, y análogamente G0 (b) = 0.


Por lo tanto, deducimos que G0 tiene al menos cuatro raı́ces distintas en el intervalo [a, b].
Ahora argumentamos como en la demostración del Teorema 3.3.1: aplicando el Teorema
de Rolle sucesivamente llegamos a que G(4) tiene al menos una raı́z en el intervalo (a, b),
a la que llamamos γx , y tenemos
4!
0 = G(4) (γx ) = e(4) (γx ) − e(x) .
(x − a)2 (x − b)2
Como p es un polinomio de grado 3, e(4) (γx ) = f (4) (γx ) y despejando e(x) obtenemos
(3.22).
Observación 3.4.3 (técnica de la demostración). En este punto, recomendamos comparar
las demostraciones de los teoremas 3.3.1 y 3.4.2. En ambas demostraciones hacemos apa-
recer una función auxiliar, dependiente de una cierta variable t, que computa el error en
t menos el error en x multiplicado por un cociente entre polinomios nodales. En ambas
demostraciones el argumento se basa en aplicar el Teorema de Rolle sucesivamente, y
para la interpolación de Hermite explotamos el hecho de que tenemos e0 (a) = e0 (b) = 0
elevando al cuadrado el cociente entre polinomios nodales, lo que nos permite “ganar” dos
ceros adicionales para G0 y por lo tanto llegar a un resultado más fuerte que si solamente
hubiésemos hecho una interpolación por (a, f (a)), (b, f (b)). 4
Del Teorema 3.4.2 podemos deducir cotas del error de interpolación cúbica de Hermite,
y aplicando estas cotas en cada subintervalo llegamos a estimaciones para el error de
interpolación cúbica a trozos de Hermite.
Corolario 3.4.3 (estimación del error de interpolación cúbica a trozos de Hermite). Sean
n + 1 puntos x0 < x1 < . . . < xn , f una función de clase C 4 en el intervalo [x0 , xn ], y p
la interpolante cúbica a trozos de Hermite por x0 , . . . , xn . Entonces, si x ∈ [xi , xi+1 ] para
i ∈ {0, . . . , n − 1}, se tiene
kf (4) kL∞ ([xi ,xi+1 ])
|f (x) − p(x)| ≤ (x − xi )2 (xi+1 − x)2 . (3.23)
24
Además,
kf (4) kL∞ ([x0 ,xn ])
kf − pkL∞ ([x0 ,xn ]) ≤ máx (xj+1 − xj )4 . (3.24)
384 j=0,...,n

Demostración. La demostración es análoga a la del Teorema 3.4.1. Sea x ∈ [xi , xi+1 ] para
algún i ∈ {0, . . . , n − 1}. Para probar (3.23), aplicamos (3.22) en el intervalo [xi , xi+1 ],
tomamos valor absoluto, y como γx ∈ (xi , xi+1 ) podemos acotar
|f (4) (γx )| ≤ kf (4) kL∞ ([xi ,xi+1 ]) .
Luego, para probar (3.24), basta con notar que
(xi+1 − xi )4
(x − xi )2 (xi+1 − x)2 ≤ ∀x ∈ [xi , xi+1 ],
16
y usar que kf (4) kL∞ ([xi ,xi+1 ]) ≤ kf (4) kL∞ ([x0 ,xn ]) y (xi+1 − xi )4 ≤ máxj=0,...,n (xj+1 − xj )4 .

87
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Ejemplo 3.4.2 (interpolación de Hermite de la función de Runge). Nuevamente inter-


polamos la función de Runge sobre n + 1 nodos equiespaciados en el intervalo [−1, 1],
xi = −1 + 2i
n
. Como la derivada primera de la función de Runge es
−50x
f 0 (x) = ,
(1 + 25x2 )2
en la fórmula (3.21) y para cada i = 0, . . . , n, debemos imponer
1 −50xi
yi := f (xi ) = , di := f 0 (xi ) = .
1 + 25x2i (1 + 25x2i )2
La Figura 3.7 muestra el resultado obtenido con n + 1 = 12 nodos. Podemos usar el

Figura 3.7: Interpolación de Hermite cúbica a trozos de la función de Runge.

Corolario 3.4.3 para estimar el error de interpolación. Al usar n + 1 nodos equiespaciados


en el intervalo [−1, 1], la longitud de cada intervalo es xi+1 − xi = n2 . Con mucha paciencia
(o un poco de Wolfram Alpha), se encuentra que
15000 (3125x4 − 250x2 + 1)
f (4) (x) = ,
(25x2 + 1)5
y por lo tanto kf (4) kL∞ ([−1,1]) = f (4) (0) = 15000. Reemplazando en (3.24), obtenemos
 4
15000 2 625
kf − pkL∞ ([−1,1]) ≤ = 4.
384 n n
Notamos que kf − pkL∞ ([−1,1]) → 0 con n → ∞ y, en particular para la interpolante con
n = 11 de la Figura 3.7 , hemos probado que
625
kf − pkL∞ ([−1,1]) ≤ ≈ 4,3 × 10−2 .
114
4

88
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Splines cúbicas

Volvamos a nuestro punto de partida (3.20) y (3.21), pero ahora suponiendo que no
conocemos los valores de d0 , . . . , dn . Esto es, dados n+1 puntos en el plano {(xi , yi )}i=0,...,n
con x0 < x1 < . . . < xn , buscamos una función p cúbica a trozos, derivable en [x0 , xn ], y
tal que p(xi ) = yi para todo i = 0, . . . , n.
La idea al construir splines cúbicas es lograr que la función p sea lo más regular posible.
En el caso de funciones cúbicas a trozos, se toman los {di }i=0,...,n de modo tal que p sea de
clase C 2 , esto es, que tenga derivada segunda continua en el intervalo [x0 , xn ]. Derivando
dos veces (3.21), obtenemos para cada x ∈ [xi , xi+1 ], i = 0, . . . , n − 1,
(6hi − 12s)δi + (6s − 2hi )di+1 + (6s − 4hi )di
p00 (x) = , (3.25)
h2i
donde nuevamente usamos la notación
yi+1 − yi
s = x − xi , hi = xi+1 − xi , δi = .
hi
Como p [xi ,xi+1 ] es un polinomio, para lograr que p sea C 2 basta con imponer que las
derivadas segundas se peguen bien en los nodos interiores x1 , . . . , xn−1 . Usamos (3.25) y
obtenemos, para j = 1, . . . , n − 1,
6δj − 2dj+1 − 4dj
p00 (x+
j ) = (i = j, s = 0 en (3.25)),
hj
−6δj−1 + 4dj + 2dj−1
p00 (x−
j ) = (i = j − 1, s = hi en (3.25)).
hj−1

Por lo tanto, si queremos que la interpolante p sea de clase C 2 , necesitamos que los
coeficientes d0 , . . . , dn satisfagan
6δj − 2dj+1 − 4dj −6δj−1 + 4dj + 2dj−1
= ∀j = 1, . . . , n − 1,
hj hj−1
lo que podemos reescribir como
hj dj−1 + 2(hj−1 + hj )dj + hj−1 dj+1 = 3hj δj−1 + 3hj−1 δj ∀j = 1, . . . , n − 1. (3.26)
Ası́, hemos obtenido un sistema (tridiagonal) de ecuaciones lineales que debemos resolver
para deteminar los valores de d0 , . . . , dn . Recordemos que una vez que tenemos hallados
estos valores, nos basta con utilizar la expresión (3.21) para definir la interpolante spline
cúbica a trozos p.
Sin embargo, notemos que (3.26) pone requerimientos solamente sobre los nodos interiores,
esto es, nos da n − 1 restricciones. En cambio, tenemos n + 1 incógnitas d0 , . . . , dn . Aún
tenemos algo de libertad para imponer dos condiciones adicionales. Aquı́ se abren algunas
posibilidades8 :
8
Referimos a [Sau12, Sección 3.4.2] para más detalles y otras opciones. En ese libro, a la que nosotros
llamamos spline completa se la denomina spline sujetada (clamped).

89
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Prescribir los valores de p0 (x0 ) y p0 (xn ), esto es, tomar d0 y dn como datos, por lo
que ahora (3.26) corresponde a un sistema de n − 1 ecuaciones con n − 1 incógnitas
d1 , . . . , dn−1 . Esta elección se llama spline completa.

Imponer que p00 (x0 ) = 0 y que p00 (xn ) = 0. Esto nos agrega dos ecuaciones adicionales
más a (3.26) y da lugar a un sistema (n + 1) × (n + 1). Hacer esto se conoce como
tomar una spline natural.

Buscar que p tenga un poco más de regularidad cerca de los bordes, esto es, que p
sea de clase C 3 en los intervalos [x0 , x2 ] y [xn−2 , xn ]. Como p es una función cúbica
a trozos, hacer esto es equivalente a usar la misma función cúbica en [x0 , x1 ] que
en [x1 , x2 ] y respectivamente, en [xn−2 , xn−1 ] que en [xn−1 , xn ]. Esto es, estamos
“eliminando” los nodos x1 y xn−1 , y por esta razón a este tipo de interpolante se la
conoce como spline not-a-knot9 .

Ejemplo 3.4.3 (spline not-a-knot). Para fijar ideas, vamos a ejemplificar con la última
elección, la de spline not-a-knot, analizando lo que ocurre en [x0 , x2 ]. Tomando derivada
tercera de p en (3.21) en los intervalos [x0 , x1 ] y [x1 , x2 ], obtenemos dos constantes. Como
queremos que la interpolante tenga derivada tercera continua en x1 , estas dos constantes
deben coincidir. Ası́, obtenemos la identidad

−12δ0 + 6d1 + 6d0 −12δ1 + 6d2 + 6d1


2
= .
h0 h21

De la misma forma, imponer que p tenga derivada tercera continua en [xn−2 , xn ] da lugar
a la ecuación
−12δn−2 + 6dn−1 + 6dn−2 −12δn−1 + 6dn + 6dn−1
2
= .
hn−2 h2n−1
Por lo tanto, al sistema (3.26) le debemos agregar estas dos ecuaciones y obtenemos un
sistema (n + 1) × (n + 1). 4

Observación 3.4.4 (elección de spline). En la práctica, la elección de qué tipo de spline


utilizar depende de la aplicación o de qué propiedades nos parezcan deseables que la
interpolante tenga. ¡No hay una opción “mejor” que otra! 4

Interpolación “que preserva forma”

Volvemos a nuestro punto de partida en interpolación cúbica a trozos: dados n + 1 puntos


en el plano {(xi , yi )}i=0,...,n con x0 < x1 < . . . < xn , buscamos una función p cúbica a
trozos, derivable en [x0 , xn ], y tal que p(xi ) = yi para todo i = 0, . . . , n. Ya sabemos, por
(3.20) y (3.21), que la función p queda determinada si fijamos los valores de d0 , . . . , dn .
9
Que en inglés significa “no es un nodo”.

90
Métodos Numéricos Facultad de Ingenierı́a – IMERL

En Octave y Matlab hay una función que se llama pchip y que genera una interpolante
“visualmente agradable”10 de los datos. La idea es que la interpolante respete los máximos
y mı́nimos locales, esto es, que no genere oscilaciones más allá de los valores y0 , . . . , yn .
A continuación describimos cómo opera la función pchip para definir los valores de
d1 , . . . , dn y, en consecuencia, construir una interpolante cúbica a trozos. Referimos a
[Mol04, Sección 3.4] para más detalles. Remarcamos, una vez más, que las elecciones que
tomamos aquı́ son arbitrarias y responden a criterios cosméticos.

Para i = 0, . . . , n − 1, computamos las longitudes de los subintervalos hi := xi+1 − xi


y las diferencias divididas δi := yi+1hi−yi .

Supongamos ahora que estamos en un nodo interior, i ∈ {1, . . . , n − 1}.

• Si δi−1 δi ≤ 0, estamos ante un máximo o mı́nimo local respecto a los valores


de los datos, por lo que imponemos que di = 0.
• Si δi−1 δi > 0, entonces se considera una media armónica pesada entre las dife-
rencias divididas, con los pesos dependiendo de la longitud de los subintervalos.
Esto es, se define di como el valor que cumple

3(hi−1 + hi ) hi−1 + 2hi 2hi−1 + hi


= + .
di δi−1 δi

Para determinar d0 y dn , se utiliza lo que se llama una fórmula no centrada: por


ejemplo, para definir d0 se considera

(2y0 + y1 )δ0 − y0 δ1
d := .
y0 + y1

Luego,

• si sgn(d) 6= sgn(δ0 ), se define d0 := 0,


• en caso contrario, si sgn(δ0 ) 6= sgn(δ1 ) y |d| > 3|δ0 |, se define d0 := 3δ0 ,
• en caso contrario, se define d0 := d.

El procedimiento para definir dn es análogo.

Ejemplo 3.4.4 (spline vs. interpolante “que preserva forma”). Consideremos los datos
de la siguiente tabla:

x 0 1 3 4 5 7
y 1 1 -2 2 3 0
10
Evidentemente, esta es una noción subjetiva.

91
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Construimos interpolantes de estos datos usando una spline not-a-knot y la interpolante


“que preserva forma” dada por pchip. Nuestros resultados se muestran en la Figura 3.8.
La spline muestra una mayor suavidad (es dos veces derivable), pero notamos que la curva
azul puede oscilar más allá de los valores de los datos. En cambio, la interpolante “que
preserva forma” se ve menos suave pero no genera oscilaciones: el máximo y mı́nimo de la
curva roja se alcanzan en nodos de interpolación. Además, en el intervalo [0, 1] la curva
roja es constante e igual a 1. 4

Figura 3.8: Interpolaciones cúbicas a trozos.

92
Capı́tulo 4

Ecuaciones no lineales

4.1. Introducción
En este capı́tulo analizamos métodos para aproximar raı́ces de funciones. Para fijar ideas,
comenzamos nuestra discusión con funciones f : R → R, y buscamos x∗ ∈ R tal que
f (x∗ ) = 0. Si f es una función lineal, o más en general si contamos con una forma
de computar exactamente la preimagen de 0, entonces el problema es sencillo. Esto se
corresponde con los métodos directos para resolver sistemas de ecuaciones lineales: por
ejemplo, conocemos una fórmula cerrada para escribir las raı́ces de polinomios cuadráticos
y podrı́amos utilizarla para –al menos en lápiz y papel– determinarlas exactamente. Los
casos en que tenemos una fórmula cerrada para hallar raı́ces son muy particulares, y en
general buscamos una aproximación de x∗ mediante métodos indirectos.
Ası́, tendremos generada una sucesión {xk } que aspiramos que cumpla xk → x∗ con
f (x∗ ) = 0. Como condición de parada, podemos tomar una cierta tolerancia ε > 0 y
computar elementos de esta sucesión hasta que se satisfaga que los errores
ek := xk − x∗ , (4.1)
cumplen |ek | < ε. Este enfoque no parece muy útil en la práctica, ya que para computar
ek debemos conocer x∗ . Una alternativa computable es utilizar los residuos
rk := f (xk )
y parar cuando |rk | < ε. Como ya a esta altura podemos esperar, el hecho de que un
residuo “pequeño” en valor absoluto dé lugar a un error “pequeño” en valor absoluto
depende de un cierto número de condición. Notemos, sin embargo, que tal número de
condición no es igual al de la Definición 1.3.3, ya que nuestro objetivo aquı́ no es evaluar
f (es decir, hallar sus imágenes), sino hallar preimágenes del número 0. Visualmente, la
Figura 4.1 nos muestra que aquı́, si f 0 (x∗ ) ≈ 0, entonces el problema de hallar raı́ces de f
va a estar mal condicionado. Referimos a [Sau12, Sección 1.3.3] para más detalles sobre
el condicionamiento del problema de hallar raı́ces.

93
Métodos Numéricos Facultad de Ingenierı́a – IMERL

2 2

xk xk
0 ∗ 0
x x∗

−2 −2

0 0,5 1 1,5 2 0 0,5 1 1,5 2

Figura 4.1: Izquierda: si |f 0 (x∗ )| está lejos de ser 0, la aproximación de x∗ es un problema


bien condicionado, porque si f (xk ) ≈ 0, entonces xk ≈ x∗ . Derecha: si f 0 (x∗ ) ≈ 0, la
aproximación de x∗ es un problema mal condicionado, porque puede pasar que f (xk ) ≈ 0
con xk lejos de x∗ .

Una pregunta fundamental para nosotros es cómo cuantificar la capacidad de un método


dado para aproximar a x∗ . En la siguiente definición asumimos que estamos trabajando
con funciones vectoriales f : Rn → Rn , y que k · k es una norma dada en Rn . En el caso
escalar (f : R → R), basta con reemplazar k · k por | · |.
Definición 4.1.1 (orden y velocidad de un método). Sea f : Rn → Rn . Diremos que un
método convergente para hallar raı́ces de f tiene orden p ≥ 1 si p es el mayor número tal
que la sucesión de errores {ek } cumple
kek+1 k = O kek kp con k → ∞.


En caso de ser de orden p, diremos que tiene velocidad β > 0 si


kek+1 k
lı́m = β.
k→∞ kek kp

4
Observación 4.1.1 (velocidad de convergencia). No todos los métodos convergentes tienen
por qué tener un orden o una velocidad de convergencia. En caso de que un método lo
tenga, por lo general conocer el orden nos da mucho mejor idea sobre cómo aproxima a
la solución que conocer su velocidad de convergencia. Cuando p = 1, se suele decir que la
convergencia es lineal. En ese caso, para que sea convergente, es necesario que su velocidad
de convergencia sea β < 1. En caso de que p > 1, no es necesario que sea β < 1 para que
el método sea convergente. 4

4.2. Método de bisección


A diferencia de las ecuaciones lineales, cuyo conjunto de soluciones se puede caracterizar de
forma simple, las ecuaciones no lineales en general no tienen por qué tener solución única.

94
Métodos Numéricos Facultad de Ingenierı́a – IMERL

En general, una ecuación no lineal puede tener una cantidad arbitraria de soluciones, y el
conjunto de soluciones podrı́a ser arbitrariamente difı́cil de caracterizar matemáticamente.
Asegurar que una ecuación no lineal tiene alguna solución puede ser una tarea difı́cil, pero
el Teorema de Bolzano A.2.1 nos da una situación concreta en la que sı́ podemos lograrlo:
toda función real continua que tenga un cambio de signo en un intervalo [a, b] tiene al
menos una raı́z en dicho intervalo. El Teorema de Bolzano no nos asegura que esa raı́z
sea única –en general, no lo es–, pero sı́ podemos usarlo en forma iterada de modo de
encerrar a alguna raı́z. Esto da lugar al llamado método de bisección.
El método de bisección no es más que una forma sistemática de ensayo y error. Supon-
gamos que I ⊂ R es un intervalo, y que tenemos una función f : I → R continua, con
f (a) < 0, f (b) > 0 para ciertos a, b ∈ I 1 . Podemos considerar el punto medio entre a y b,
m := a+b
2
.

Si f (m) = 0, conseguimos nuestro objetivo de haber hallado una raı́z de f y termi-


namos nuestro trabajo.
Si f (m) > 0, entonces como f es continua en [a, m] y f (a)f (m) < 0, el Teorema de
Bolzano nos asegura que f tiene (al menos) una raı́z en [a, m]. Redefinimos b := m
y repetimos el proceso de bisección.
Si f (m) < 0, entonces de la misma manera tenemos garantizado que f tiene (al
menos) una raı́z en [m, b]. Redefinimos a := m y repetimos el proceso de bisección.

En forma de pseudo-código, este método se describe en el Algoritmo 4.1.


Algoritmo 4.1: Pseudo-código: bisección.
Datos: a < b ∈ R, f continua en [a, b] con f (a)f (b) < 0, tol> 0
Resultado: un nuevo intervalo [a, b], que contiene una raı́z en [a, b] y de longitud
b − a < tol
mientras b − a ≥ tol hacer
m ← a+b2
;
si f (m) = 0 entonces
break
fin
si no, si f (a)f (m) < 0 entonces
b←m
fin
en otro caso
a←m
fin
fin

Observación 4.2.1 (orden y velocidad). Formalmente, el método de bisección no genera


una sucesión {xk } que converge a una raı́z x∗ , sino una sucesión de intervalos que van
1
Naturalmente, el razonamiento es análogo si f (a) > 0, f (b) < 0.

95
Métodos Numéricos Facultad de Ingenierı́a – IMERL

atrapando a x∗ . Vamos a llamar a este tipo de métodos como de encierro2 . Para este
método no tiene sentido definir el error como en (4.1), pero la longitud del intervalo [a, b]
nos da una cota superior para el error. Si usamos como estimación del error la longitud
del intervalo de búsqueda [a, b] y observamos que en cada paso esta longitud se reduce
a la mitad, deducimos que el método de bisección es de primer orden, y tiene
velocidad de convergencia igual a 1/2. En lenguaje más práctico, como log2 (10) ≈ 3,3,
tenemos que cada aproximadamente 3 pasos nuestro intervalo de búsqueda gana un dı́gito
de precisión para aproximar x∗ . 4
Observación 4.2.2 (lento, pero seguro). El método de bisección tiene dos caracterı́sticas
particulares. En primer lugar, tiene la desventaja de que usa información muy cruda de
f : solamente considera su signo y no sus valores. Incluso si f fuese una función lineal
el método no convergirı́a en una sola iteración a menos que la raı́z de f fuese el punto
medio del intervalo inicial de búsqueda. Esta limitación se contrasta con el hecho de que
el método de bisección nos garantiza la convergencia a una raı́z. 4
Observación 4.2.3 (converge, pero, ¿a dónde?). Notemos que si f tiene más de una raı́z
en el intervalo inicial de búsqueda [a, b], entonces puede no ser sencillo caracterizar hacia
qué raı́z converge el método de bisección. 4

4.3. Método de la regla falsa


Tal como comentamos en la Observación 4.2.2, el método de bisección tiene la desventaja
de usar información muy cruda sobre f . La idea en el método de la regla falsa (también
llamado método de regula falsi) es incorporar información sobre los valores de f y
mantener la garantı́a de convergencia para funciones continuas con un cambio de signo.
El punto de partida de este método es el mismo que en el de la bisección: tenemos dada
una función f continua y que tiene un cambio de signo en el intervalo [a, b]. La diferencia
entre el método de la regla falsa y el método de bisección está en cómo definimos el nuevo
intervalo de búsqueda: ahora, consideramos la interpolante lineal por (a, f (a)) y (b, f (b))
y tomamos m como el punto en el que esa función lineal se anula:
f (a)(b − a) a f (b) − b f (a)
m := a − = . (4.2)
f (b) − f (a) f (b) − f (a)
Luego, se procede como en el método de bisección, y se determina el nuevo intervalo de
búsqueda como [a, m] o [m, b] según cuál de los dos presente el cambio de signo al evaluar
f en sus extremos. Puede probarse que el método de la regla falsa converge a una raı́z
de f en [a, b] para funciones continuas con cambio de signo3 , y que generalmente lo hace
de manera más eficiente que el método de bisección al incorporar información sobre los
valores de la función para el cálculo de m. Ilustramos la diferencia entre los métodos de
bisección y de la regla falsa en la Figura 4.2.
2
Lo más habitual es utilizar la palabra del inglés bracketing.
3
La demostración puede encontrarse, por ejemplo, en [Ngu21].

96
Métodos Numéricos Facultad de Ingenierı́a – IMERL

3
(a, f (a))
2

x∗
0 mbis mrf

−1 (b, f (b))

0 0,5 1 1,5 2

Figura 4.2: Comparación entre cómo se toma el nuevo punto m para los métodos de
bisección (mbis ) y de la regla falsa (mrf ). A la recta marcada en azul se le llama la secante
al gráfico de f por (a, f (a)), (b, f (b)).

Parece tentador pensar que el método de la regla falsa es de mayor orden que el de
bisección, al estar incorporando información sobre cuánto vale f y no solamente su signo.
Sin embargo, a diferencia de este último, la velocidad de convergencia del método de regla
falsa no siempre es lineal y puede verse afectada por la forma de la función cerca de la
raı́z. En particular, si la función es estrictamente cóncava o convexa en el intervalo, el
método mantendrá una de las aproximaciones fija mientras que la otra se acercará a la
raı́z buscada, lo que puede ralentizar la convergencia. Esta diferencia puede verse en el
siguiente ejemplo.

Ejemplo 4.3.1 (convergencia de regla falsa). Buscamos computar log 3 ≈ 1,0986 a partir
de hallar la raı́z de f (x) = 3e−x − 1. Inicializamos el método de la regla falsa con

a = 0 ⇒ f (a) = 2 > 0,
b = 2 ⇒ f (b) = 3e−2 − 1 ≈ −0,5940 < 0,

y computamos algunos iterados en la siguiente tabla.

ek
n a b m (ver (4.2)) f (m) ek := m − log 3 ek−1
1 0 2 1,5420 −0,3582 0,4434 —
2 0 1,5420 1,3078 −0,1888 0,2092 0,47
3 0 1,3078 1,1950 −0,0919 0,0964 0,46
4 0 1,1950 1,1425 −0,0430 0,0439 0,46
5 0 1,1425 1,1185 −0,0197 0,0199 0,44
6 0 1,1185 1,1076 −0,0089 0,0090 0,45

Hay dos hechos que resultan llamativos. En primer lugar, el punto a permanece fijo en la
iteración, esto es, en todos los pasos tomamos a = 0, pues el punto m computado verifica
f (m) < 0 y por lo tanto al iterado siguiente se toma b ← m. Como a está a una distancia

97
Métodos Numéricos Facultad de Ingenierı́a – IMERL

“grande” de la raı́z log 3, esto implica que si pusiéramos un criterio de parada como en
el Algoritmo 4.1 con tol suficientemente pequeña la iteración no pararı́a nunca4 . En este
sentido, la longitud del intervalo de búsqueda no parece ser un buen indicador de qué tan
cerca está el método de converger. Podrı́a parecer más razonable tomar como indicador
de error la distancia entre m y log 3, como tomamos en la penúltima columna de la tabla;
aquı́ estamos haciendo la “trampa” de que damos por conocido el valor de x∗ que estamos
aproximando. Allı́ surge el segundo hecho llamativo: los errores computados de esta forma
decrecen linealmente, y la velocidad de convergencia parece ser apenas menor que 1/2.
En este ejemplo, no parece claro que el método de la regla falsa se desempeñe mejor que
el de bisección. 4
Ejercicio 4.1. El objetivo de este ejercicio es generalizar el Ejemplo 4.3.1. Consideremos
una función f : R → R de clase C 2 y tal que f 00 > 0.

1. Demostrar que f es estrictamente convexa, esto es, que para todos a, b ∈ R, λ ∈


(0, 1), se cumple
f ((1 − λ)a + λb) < (1 − λ)f (a) + λf (b).
[Sugerencia: observar que f 0 es creciente y usar el Teorema de Lagrange A.2.3 en los
intervalos (a, (1 − λ)a + λb) y ((1 − λ)a + λb, b).]

2. Supongamos que, como en el Ejemplo 4.3.1, existen puntos a < b tales que f (a) > 0,
f (b) < 0 y se inicializa el método de la regla falsa con estos puntos. Demostrar que
en todas las iteraciones se tiene f (m) < 0, y por lo tanto el punto a permanece fijo
a lo largo de la iteración.

3. Análogamente, probar que si existen puntos a < b tales que f (a) < 0, f (b) > 0
y se inicializa el método de la regla falsa con estos puntos, entonces en todas las
iteraciones se tiene f (m) < 0 y por lo tanto b permanece fijo en la iteración.

4.4. Método de la secante


El método de la regla falsa corre el riesgo que uno de los extremos en el intervalo de
búsqueda quede fijo a lo largo de la iteración, lo que hace que sea un poco rı́gido. Una
alternativa simple es forzar al método a actualizar alternadamente los extremos del in-
tervalo de búsqueda. Sin embargo, esto implica que perdamos el control sobre que haya
un cambio de signo en el intervalo de búsqueda, por lo que la ganancia en flexibilidad del
método tiene como contracara la pérdida de certeza de que sea convergente para funciones
continuas con un cambio de signo.
Sea f : R → R. El método de la secante genera una sucesión {xk } a partir de dos
iterados iniciales x0 , x1 , y calculando la intersección de la recta secante al gráfico de f
por (x0 , f (x0 )), (x1 , f (x1 )) con el eje de las x. A diferencia del método de la regla falsa,
4
En este caso, bastarı́a que fuera tol< log 3 ≈ 1,0986.

98
Métodos Numéricos Facultad de Ingenierı́a – IMERL

este método no revisa el signo de f (xk+1 ) para definir a cuál de los puntos xk−1 o xk
descartar. Como este no es un método de encierro, la notación que estamos usando es
un poco distinta; sin embargo, dados puntos a = xk , b = xk−1 , para computar el iterado
siguiente simplemente necesitamos usar (4.2):

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


x := x − = . (4.3)
f (xk−1 ) − f (xk ) f (xk−1 ) − f (xk )
Para comparación futura, notamos que también podemos escribir esta definición como
f (xk ) f (xk ) − f (xk−1 )
xk+1 := xk − , donde sk := . (4.4)
sk xk − xk−1
Observación 4.4.1 (no certeza de convergencia). Es muy simple observar que el método
de la secante no tiene por qué ser convergente, y ni siquiera la iteración tiene por qué
estar bien definida. En efecto, si f (xk−1 ) = f (xk ), entonces la recta secante al gráfico de
f por (xk−1 , f (xk−1 )), (xk , f (xk )) es paralela al eje de las x y por lo tanto la intersección
entre ambas es vacı́a.
Un ejemplo sencillo de no convergencia del método de la secante es tomar la función
f (x) = |x|, con x0 = 1, x1 = −2. Usando la definición (4.3) y un argumento de inducción,
se deduce que xk = (−1)k 2k = (−2)k para todo n ∈ N y por lo tanto el método es
divergente. 4
En general no podemos garantizar la convergencia del método de la secante. Sin embargo,
sı́ podemos hacerlo en caso de que nuestros iterados estén lo suficientemente cerca de la raı́z
que queremos aproximar y, bajo condiciones adecuadas en la función f , esta convergencia
es superlineal.
Procedemos en tres pasos: primero, demostramos que el método es convergente; luego,
deducimos una ecuación para el error; finalmente, en caso de que la convergencia sea con
orden, deducimos cuál debe ser.
Lema 4.4.1 (Convergencia del método de la secante). Sea f : I → R una función de
clase C 2 , y x∗ un punto interior a I y tal que f (x∗ ) = 0, f 0 (x∗ ) 6= 0. Entonces, existe un
δ > 0 tal que si |x0 − x∗ | < δ, |x1 − x∗ | < δ, el método de la secante (4.4) converge a x∗ .

Demostración. Sea α := f 0 (x∗ ). Como α 6= 0, por simplicidad en este paso asumimos


α > 0. Al ser f 0 continua, existe un δ > 0 tal que
3α 5α
0< < f 0 (x) < ∀x ∈ (x∗ − δ, x∗ + δ) =: Iδ . (4.5)
4 4
Dados xk−1 , xk , aplicamos el Teorema de Lagrange A.2.3 dos veces: por un lado, tenemos
que sk = f 0 (ck ) para algún ck entre xk−1 y xk . Por otro lado, existe un c̃k entre x∗ y xk
tal que
f (xk ) − f (x∗ ) f (xk )
f 0 (c̃k ) = = ⇒ f (xk ) = f 0 (c̃k )(xk − x∗ ).
xk − x∗ xk − x∗

99
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Usando (4.4), podemos escribir entonces

k+1 ∗ kf (xk ) ∗k ∗ f 0 (c̃k )(xk − x∗ )


x −x =x −x − =x −x − .
sk f 0 (ck )
Como xk−1 , xk , x∗ ∈ Iδ , también tenemos que ck , c̃k ∈ Iδ y podemos usar (4.5) para acotar
f 0 (c̃k ) 5α/4 2|ek |
|ek+1 | = |ek | 1 − ≤ |ek
| 1 − = ,
f 0 (ck ) 3α/4 3
donde ek := xk − x∗ es el error en el paso n-ésimo. Deducimos entonces que si x0 , x1 ∈ Iδ
entonces el método es convergente, y lo hace al menos linealmente y con velocidad 32 .
Proposición 4.4.2 (Cota para el error del método de la secante). Sea f : I → R una
función de clase C 2 , y x∗ un punto interior a I. Entonces, el método de la secante obedece

k+1 f 00 (γk+1 ) k−1 k


e = e e , (4.6)
2sk
para algún γk+1 ∈ I, y donde sk está dado por (4.4).

Demostración. Comenzamos observando que, dados xk−1 y xk , el siguiente iterado xk+1


se computa intersectando la interpolante lineal por (xk−1 , f (xk−1 )), (xk , f (xk )) con el eje
de las x. De acuerdo a lo que discutimos en la Sección 3.2 (o a (3.16) especı́ficamente para
una interpolación lineal), esta interpolante está dada por

L(x) := f (xk ) + sk (x − xk ).

En particular, tenemos que L(xk+1 ) = 0. Además, como f (x∗ ) = 0, podemos escribir

L(x∗ ) − f (x∗ ) = f (xk ) + sk (x∗ − xk ),

y restando L(xk+1 ) = 0 en el lado derecho de esta última igualdad llegamos a

L(x∗ ) − f (x∗ ) = f (xk ) + sk (x∗ − xk ) − f (xk ) + sk (xk+1 − xk ) = −sk ek+1 .


 
(4.7)

Por otra parte, como L es una interpolante lineal para f en I, podemos utilizar el Teorema
3.3.1 (o la fórmula (3.17) especı́ficamente para una interpolación lineal) para escribir
f 00 (γx∗ ) ∗ f 00 (γk+1 ) k−1 k
L(x∗ ) − f (x∗ ) = − (x − xk−1 )(x∗ − xk ) = − e e , (4.8)
2 2
para algún γk+1 . Combinando (4.7) y (4.8), obtenemos (4.6).

En lo que sigue, llamamos Φ al número áureo



1+ 5
Φ := ≈ 1,618,
2
que es la raı́z positiva del polinomio p(x) := x2 − x − 1.

100
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Lema 4.4.3 (Orden de convergencia del método de la secante). Sea f : I → R una función
de clase C 2 , y x∗ un punto interior a I y tal que f (x∗ ) = 0, f 0 (x∗ ) 6= 0.

Entonces, cuando
1+ 5
el método de la secante converge con orden, éste es al menos Φ := 2 .

Demostración. A partir de la proposición anterior, comenzamos controlando los términos


que no involucran el error del lado derecho de (4.6). Por un lado, tenemos |f 00 (γk+1 )| ≤
kf 00 kL∞ (I) . Por otro lado, como f 0 (x∗ ) 6= 0, usando el Teorema de Lagrange A.2.3 y el
hecho de que f 0 es continua, se deduce que existe un  > 0 tal que |sk | >  si xk−1 , xk
están lo suficientemente cerca de x∗ .
kf 00 kL∞ (I)
Tomando valor absoluto en (4.6) y definiendo M := 2
, tenemos

|ek+1 | ≤ M |ek ek−1 |.

Ahora, como sabemos que el método converge con orden, podemos asumir que para k
suficientemente grande se cumplen |ek+1 | ≈ C|ek |p y |ek | ≈ C|ek−1 |p , donde p es el orden
de convergencia y C es la velocidad de convergenica del método. Reemplazando arriba,
tenemos
1 p+1
C|ek |p . M C|ek−1 |p+1 ⇒ |ek | . M p |ek−1 | p .
1 p+1
Como tenemos |ek | ≈ C|ek−1 |p y |ek | . M p |ek−1 | p , deducimos que el orden p debe
cumplir
p+1
p= , o equivalentemente p2 − p − 1 = 0.
p

1+ 5
Concluimos que el orden de convergencia es p = Φ = 2
.

Combinando los Lemas 4.4.1 y 4.4.3, obtenemos el siguiente teorema.

Teorema 4.4.4 (convergencia y orden del método de la secante). Sea f : I → R una


función de clase C 2 , y x∗ un punto interior a I y tal que f (x∗ ) = 0, f 0 (x∗ ) 6= 0. Entonces,
existe un δ > 0 tal que si |x0 − x∗ | < δ, |x1 − x∗ | < δ, el método de la secante √
(4.4)
∗ 1+ 5
converge a x , y, si la convergencia es con orden, el orden es (al menos) Φ = 2 .

Observación 4.4.2 (cuenca de convergencia). El Teorema 4.4.4 nos dice que, bajo condi-
ciones adecuadas, si el método de la secante es inicializado lo suficientemente cerca de
la raı́z entonces es convergente. Notemos que a partir de la demostración se deduce una
forma para estimar un valor de δ > 0 que garantice la convergencia: basta con tomar δ
de modo que la derivada f 0 varı́e lo suficientemente poco (en el sentido de (4.5)) en un
entorno de centro x∗ y radio δ. De todos modos, estimar el valor de δ es un tema delicado
en general, ya que si no conocemos x∗ , parece difı́cil que podamos conocer f 0 (x∗ ) con
exactitud. 4
Observación 4.4.3 (velocidad de convergencia). La Proposición 4.4.2, junto con la demos-
tración del Lema 4.4.3, permiten incluso estimar la velocidad de convergencia del método.

101
Métodos Numéricos Facultad de Ingenierı́a – IMERL

En efecto, si ahora ya asumimos que el método converge con orden Φ y volvemos a (4.6),
podemos afinar nuestra cota para M y aproximar
f 00 (x∗ )
f 00 (γk+1 ) ≈ f 00 (x∗ ), sk ≈ f 0 (x∗ ) ⇒M ≈ .
2f 0 (x∗ )
Como la velocidad de convergencia que estimamos en la demostración del Lema 4.4.3 era
1
C = M Φ , podemos estimar la velocidad del método como
1
f 00 (x∗ ) Φ
C≈ .
2f 0 (x∗ )
4
Ilustramos el Teorema 4.4.4 con el siguiente ejemplo.
Ejemplo 4.4.1 (convergencia de secante). Repetimos la consigna del Ejemplo 4.3.1, pero
ahora usamos el método de la secante inicializado en los mismos puntos x0 = 0, x1 = 2.
Computamos algunos iterados en la siguiente tabla.

|ek+1 |
k xk−1 xk xk+1 (ver (4.4)) ek+1 := xk+1 − log 3 |ek |Φ
1 0 2 1,5420 0,4434 0,5245
2 2 1,5420 0,8465 −0,2521 0,9398
3 1,5420 0,8465 1,1557 0,0571 0,5311
4 0,8465 1,1557 1,1056 0,0070 0,7144
5 1,1557 1,1056 1,0984 −0,0002 0,6221
6 1,1056 1,0984 1,0986 7 × 10−7 0,6712

La última columna nos indica que el orden de convergencia observado es Φ, con una veloci-
dad de convergencia alrededor de 0,67. Por la Observación 4.4.3, como en este ejemplo te-
nemos f 0 (x∗ ) = −1, f 00 (x∗ ) = 1, esperamos convergencia con velocidad 2−1/Φ ≈ 0,65. 4

4.5. Método de Newton-Raphson


El método de la secante propone computar iterados a partir de la intersección del eje de las
x con la recta secante al gráfico de f por los dos iterados anteriores. Esa recta secante tiene
pendiente sk (ver (4.4)); si xk y xk−1 están lo suficientemente cerca, podemos considerar
la aproximación
f (xk ) − f (xk−1 )
sk = ≈ f 0 (xk ).
xk − xk−1
Esto invita a considerar la siguiente iteración para hallar raı́ces de f ,
f (xk )
xk+1 := xk − , (4.9)
f 0 (xk )

102
Métodos Numéricos Facultad de Ingenierı́a – IMERL

que es el llamado método de Newton-Raphson. Gráficamente, este método se corres-


ponde con computar la recta tangente al gráfico de f por el punto (xk , f (xk )) e intersecarlo
con el eje de las x (ver Figura 4.3). En efecto, tal recta tangente está dada por

y = f (xk ) + f 0 (xk )(x − xk ),

e imponiendo y = 0 arriba y despejando x se llega fácilmente a (4.9).

2
(xk , f (xk ))
1

xk+1
0

−1

0 0,5 1 1,5 2

Figura 4.3: Método de Newton-Raphson.

Ejemplo 4.5.1 (el retorno


√ de Herón). Sea a > 0, y consideremos f (x) = x2 − a, que
tiene una raı́z en x∗ = a. Dado x0 , la iteración de Newton-Raphson está dada por

k+1 k f (xk ) k (xk )2 − a k xk a 1 k a


x =x − 0 k =x − =x − + k = x + k .
f (x ) 2xk 2 2x 2 x
Ya nos encontramos con esta iteración (con a = 7) en la Sección 1.2.3: el método de Herón
para calcular raı́ces cuadradas es justamente el método de Newton-Raphson aplicado a
la función f (x) = x2 − a. Recordamos que en esa sección, demostramos –sin decirlo
explı́citamente– que el método converge con orden cuadrático; ver la fórmula (1.1). 4
Observación 4.5.1 (Taylor camuflado). Otra forma de pensar en el método de Newton es
como la iteración que resulta al linealizar f alrededor de xk , esto es, de aproximar f por
su polinomio de Taylor de grado 1 en el punto xk . En efecto, tal linealización indica

f (x) ≈ T1 f (x; xk ) = f (xk ) + f 0 (xk )(x − xk ).

Como este polinomio es lineal, resulta trivial hallar su raı́z y ası́ queda definido xk+1 de
la misma forma que en (4.9). 4
Observación 4.5.2 (comparación con secante). El método de Newton-Raphson no solo
utiliza los valores de f , sino que también incorpora información sobre f 0 . Por lo tanto,
es de esperar que presente una convergencia de mayor orden que el de la secante. Sin
embargo, requiere que tengamos acceso a f 0 , lo que no siempre tiene por qué ocurrir en
la práctica. 4

103
Métodos Numéricos Facultad de Ingenierı́a – IMERL

El método de Newton-Raphson en general no nos garantiza la convergencia hacia la raı́z


pero converge cuadráticamente bajo condiciones adecuadas, tal como ocurre en el Ejemplo
4.5.1.

Teorema 4.5.1 (convergencia y orden del método de Newton-Raphson). Sea f : I → R


una función de clase C 2 , y x∗ un punto interior a I y tal que f (x∗ ) = 0, f 0 (x∗ ) 6= 0.
Entonces, existe δ > 0 tal que si |x0 − x∗ | < δ, el método de Newton-Raphson (4.9)
converge a x∗ , y la convergencia es con orden (por lo menos) cuadrático.

Demostración. Postergamos la demostración de que la iteración de Newton-Raphson es


convergente; ver el Corolario 4.7.4 abajo. Para probar que el método es de segundo orden,
planteamos un desarrollo de Taylor para f alrededor de xk , evaluado en x∗ ,

∗ k 0 k ∗ f 00 (θk ) ∗
k
0 = f (x ) = f (x ) + f (x )(x − x ) + (x − xk )2 ,
2
para algún θk entre x∗ y xk . Como f 0 es continua (pues f ∈ C 2 ), f 0 (x∗ ) 6= 0, y el método
es convergente, existe k0 tal que f 0 (xk ) 6= 0 para todo k ≥ k0 . Combinamos la definición
(4.9) con el desarrollo de Taylor y obtenemos

f (xk ) f 00 (θk ) ∗ f 00 (θk ) k 2


ek+1 = xk+1 − x∗ = xk − − x ∗
= (x − x k 2
) = (e ) .
f 0 (xk ) 2f 0 (xk ) 2f 0 (xk )

Por lo tanto, tomando lı́mite en k, como xk → x∗ y θk → x∗ (porque está encerrado entre


xk y x∗ ),
|ek+1 | |f 00 (θk )| |f 00 (x∗ )|
= → .
|ek |2 2|f 0 (xk )| 2|f 0 (x∗ )|
|f (x )| 00 ∗
Si f 00 (x∗ ) 6= 0, esto demuestra la convergencia con segundo orden y velocidad 2|f 0 (x∗ )| .
00 ∗
Si f (x ) = 0 el lı́mite de arriba es 0, por lo que la convergencia podrı́a ser de mayor
orden.

Observación 4.5.3 (condiciones favorables y desfavorables). El Teorema 4.5.1 nos da con-


diciones en las que podemos asegurar que el método de Newton-Raphson converge con
(al menos) segundo orden, y nos da una pauta de que si f 00 (x∗ ) = 0 entonces podemos
esperar que la convergencia sea aún con mayor orden. Por otra parte, cabe preguntarse
qué ocurre con la iteración si f 0 (x∗ ) = 0 o f no es derivable en x∗ , ya que ese caso no
está en las hipótesis del teorema. Damos tres ejemplos sencillos para ilustrar lo que puede
suceder en estos casos.

1. Sea f : R → R, f (x) = x + x3 , cuya única raı́z es x∗ = 0. Comenzamos con x0 > 0


suficientemente pequeño, y la iteración de Newton-Raphson (4.9) para este problema
es
f (xk ) xk + (xk )3 2(xk )3
xk+1 = xk − 0 k = xk − =
f (x ) 1 + 3(xk )2 1 + 3(xk )2

104
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Como estamos aproximando la raı́z x∗ = 0, tenemos ek = xk para todo k y por lo


tanto obtenemos
2|ek |3
|ek+1 | = ≤ 2|ek |3 .
1 + 3|ek |2
Por lo tanto, en este caso el método converge con orden p = 3.

2. Sean γ > 1 y f : R → R, f (x) = |x|γ , cuya única raı́z es x∗ = 0. Notamos que


f 0 (x) = γ|x|γ−1 sgn(x) y por lo tanto f 0 (x∗ ) = 0. Comenzamos con x0 > 0, lo que
da lugar a xk > 0 para todo k, y la iteración para este problema queda

(xk )γ
 
k+1 k k 1
x =x − =x 1− .
γ(xk )γ−1 γ

Por lo tanto, la sucesión de errores aquı́ cumple

ek+1 1
k
=1− ,
e γ

y deducimos que el método de Newton-Raphson converge linealmente y con veloci-


dad 1 − γ1 ∈ (0, 1).

3. Consideramos f : R → R, f (x) = |x|γ , pero ahora suponiendo 0 < γ < 1. Se puede


realizar el mismo razonamiento del punto anterior, con la salvedad de que ahora f
no es derivable en x∗ = 0, y llegamos a

ek+1 1
k
=1− .
e γ
1
Como 0 < γ < 1, tenemos 1 − γ
< 0. De hecho, si 1/2 < γ < 1 aún tenemos
1
1− γ
< 1 y podemos garantizar que el método converge linealmente. Si 0 < γ <
1
1/2, entonces 1 − γ
> 1 y tendremos |ek | → ∞. Finalmente, en el caso lı́mite
γ = 1/2, la iteración de Newton-Raphson permanecerá “rebotando” entre x0 y −x0 .

Ejemplo 4.5.2 (cuencas de convergencia). El comportamiento del método de Newton-


Raphson comenzando lejos de las raı́ces puede ser un tanto errático. Consideremos f : R →
R, f (x) = (x + 3)(x − 1)(x − 4). Es evidente que esta función tiene raı́ces −3, 1, 4.
Implementamos en Octave la iteración de Newton-Raphson con el criterio de que pare
cuando el valor absoluto entre dos iterados sucesivos sea menor que 1e-3, e inicializamos
el método en x0 = 2,352, x0 = 2,353, y x0 = 2,354. La siguiente tabla muestra los
resultados que obtenemos.

105
Métodos Numéricos Facultad de Ingenierı́a – IMERL

k x0 = 2,352 x0 = 2,353 x0 = 2,354


1 −0,7760 −0,7843 −0,7927
2 2,3218 2,3590 2,3977
3 −0,5469 −0,8356 −1,2179
4 1,6331 2,6180 11,0674
5 0,9047 −11,1912 7,8614
6 0,9994 −7,4866 5,8484
7 1,0000 −5,1489 4,6860
8 — −3,7926 4,1481
9 — −3,1671 4,0094
10 — −3,0100 4,0000
11 — −3,0000 4,0000
12 — −3,0000 —

¡Una perturbación del orden de 10−3 en el iterado inicial afecta a qué raı́z converge el
método! 4

4.6. Resumen: una muy breve comparación


Hasta aquı́, hemos cubierto los siguientes métodos para hallar raı́ces de funciones de una
variable: bisección, regla falsa, secante, y Newton-Raphson. Referimos al material [Pic]
para más ejemplos y discusión sobre estos métodos.
Los métodos de bisección y de la regla falsa son de encierro: nos aseguran la convergencia
si nuestra función es continua y le encontramos un cambio de signo. La contracara es que
son métodos de primer orden, por lo que la convergencia puede ser lenta.
El método de la secante propone una variante sobre el de la regla falsa, con una conver-
gencia de orden Φ > 1. Sin embargo, para garantizar que este método sea convergente
necesitamos inicializarlo lo suficientemente cerca de la raı́z buscada. Por esta razón, puede
ser conveniente –tal como hacen funciones de Octave como fzero– implementar la estrate-
gia de comenzar con unos iterados con métodos de encierro (de convergencia segura, pero
lenta) e ir ensayando pasos con métodos de mayor orden pero cuya convergencia no está
garantizada. En la medida que los métodos de orden alto muestran un comportamiento
estable, se los usa5 .
Por otra parte, el método de Newton-Raphson es aún de mayor orden que el de la se-
cante, ya que bajo condiciones adecuadas es de segundo orden; esto tiene sentido, ya que
incorpora información no solo sobre los valores de f sino sobre los de su derivada f 0 . Sin
embargo, para aplicar este método se requiere evaluar f 0 , lo que no siempre está disponi-
ble en la práctica. Al igual que el método de la secante, para que el de Newton-Raphson
5
De hecho, fzero utiliza tanto el método de la secante como la llamada Inverse Quadratic Interpo-
lation, que es otro método rápido pero no necesariamente convergente. Referimos a [Mol04, Sección 4.6]
para más detalles.

106
Métodos Numéricos Facultad de Ingenierı́a – IMERL

converja se requiere inicializarlo lo suficientemente cerca de la raı́z deseada. De todos mo-


dos, el método de Newton-Raphson es ampliamente utilizado en la práctica para hallar
raı́ces de funciones reales. También es un ejemplo de un método iterativo general, tema
que analizamos en la próxima sección.

4.7. Métodos iterativos generales


Seguimos con nuestro estudio de métodos para computar raı́ces de funciones f : R → R.
La iteración (4.9) para el método de Newton-Raphson sugiere que puede ser de utilidad
transformar nuestro problema para f en uno equivalente de hallar puntos fijos. Esto es,
buscamos una función g : R → R tal que

f (x∗ ) = 0 ⇔ g(x∗ ) = x∗ , (4.10)

y proponemos un método de la forma



xk+1 = g(xk )
. (MIG)
x0 ∈ R

Nos referiremos a un método que se pueda escribir de esta forma como un método
iterativo general.
Naturalmente, dada una función f : R → R, existen infinitas formas posibles de elegir
g de modo que se cumpla (4.10). Una de estas formas es g(x) := x − ff0(x)(x)
, que, como
observamos, corresponde al método de Newton-Raphson y muestra que éste es un método
iterativo general. Otra posibilidad para construir un MIG a partir de una función f , es
tomar, por ejemplo, g(x) := x − f (x).
La Observación 4.5.3 muestra que no siempre podemos esperar que la iteración (MIG)
sea convergente. Sin embargo, el Teorema 4.5.1 sugiere que la derivada de la función
f (y por lo tanto de la función g para nuestro MIG) debe cumplir un rol fundamental
en la convergencia de estos métodos. Como muestra el Corolario 4.7.2 (ver abajo), para
que (MIG) sea convergente basta con asegurar que |g 0 | sea menor que 1 a lo largo de la
iteración.

Ejemplo 4.7.1 (distintos MIGs). Buscamos aproximar la raı́z x∗ = 2 de la función


f (x) = x2 − x − 2. Para ello, tomamos x0 = 1,5 y consideramos las siguientes funciones:

x2 − x − 2 = 0 ⇔ x = x2 − 2 g1 (x) := x2 − 2,

x2 − x − 2 = 0 ⇔ x2 = x + 2 g2 (x) := x + 2,
2 2
x2 − x − 2 = 0 ⇔ x(x − 1) = 2 ⇔ x = 1 + g3 (x) := 1 + ,
x x
2
x +2
x2 − x − 2 = 0 ⇔ x2 − x = 2 ⇔ x(2x − 1) = x2 + 2 g4 (x) := .
2x − 1

107
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Observamos que, por construcción, las funciones g1 , . . . , g4 satisfacen (4.10). Implementa-


mos en Octave un código que compute la iteración (MIG) para estas cuatro funciones y
mostramos los primeros iterados a continuación.

k (MIG) con g1 (MIG) con g2 (MIG) con g3 (MIG) con g4


0 1,5 1,5 1,5 1,5
1 0,2500 1,8708 2,3333 2,1250
2 −1,9375 1,9674 1,8571 2,0048
3 1,7539 1,9918 2,0769 2,0000
4 1,0762 1,9980 1,9630 2,0000

El comportamiento de las cuatro iteraciones es bien diferente. La iteración con g1 parece


no estar convergiendo, mientras que las otras tres sı́. La iteración con g4 parece ser la de
convergencia más rápida. De las otras dos, la iteración con g2 se comporta monótonamente
y parece estar convergiendo más rápidamente que la que usa g3 , que oscila. Notemos
también que la iteración con g4 corresponde al método de Newton-Raphson (4.9). 4

4.7.1. Convergencia
La siguiente definición nos permite dar una condición compacta para asegurar la conver-
gencia de un método iterativo general.

Definición 4.7.1 (función contractiva). Una función g : R → R se dice contractiva en


I ⊂ R si existe 0 ≤ m < 1 tal que

|g(x) − g(y)| ≤ m |x − y| ∀x, y ∈ I. (4.11)

Ejercicio 4.2. a) Demostrar que toda función contractiva en un intervalo I es conti-


nua en todo punto x ∈ I. Más aún, probar que si g es contractiva en I entonces es
uniformemente continua en I.

b) Probar que si g es una función derivable en I, y existe un λ < 1 tal que |g 0 (x)| < λ
para todo x ∈ I, entonces g es contractiva en I.

El siguiente es un resultado muy general, que en nuestro contexto nos permite asegurar
la convergencia de (MIG).

Teorema 4.7.1 (de punto fijo). Sea I ⊂ R un intervalo cerrado, y sea g : I → I una
función contractiva. Entonces, existe un único x∗ ∈ I tal que g(x∗ ) = x∗ . Más aún, para
todo x0 ∈ I, si se define la sucesión {xk }k∈N mediante (MIG), se tiene

lı́m xk = x∗ .
k→∞

108
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Demostración. Sea m < 1 como en (4.11). Procedemos en tres pasos.


1. Unicidad del punto fijo. Supongamos que g tiene dos puntos fijos, esto es, que existen
x∗ , y ∗ ∈ I tales que g(x∗ ) = x∗ , g(y ∗ ) = y ∗ . Entonces, tenemos
|x∗ − y ∗ | = |g(x∗ ) − g(y ∗ )| ≤ m|x∗ − y ∗ |.
Por lo tanto, como m < 1, solamente puede ser x∗ = y ∗ .
2. La sucesión dada por (MIG) es de Cauchy. Dado x0 ∈ I, definimos {xk }k∈N mediante
(MIG) y probemos que es de Cauchy. Dado  > 0, basta con probar que existe k0 > 0 tal
que si k, j > k0 entonces |xj − xk | < . Sin perder generalidad, asumimos k < j := k + `.
Entonces, aplicando la desigualdad triangular sucesivamente, tenemos
`−1
X
k j k k+1 k+1 k+2 k+`−1 j
|x − x | ≤ |x − x | + |x −x | + . . . + |x −x |= |xk+i − xk+i+1 |.
i=0

Ahora, para cualquier i = 0, . . . , ` − 1, usando la definición (MIG) y el hecho de que g es


contractiva, tenemos
|xk+i − xk+i+1 | = |g(xk+i−1 ) − g(xk+i )|
≤ m|xk+i−1 − xk+i | ≤ . . . ≤ mk+i |x0 − x1 |.
Por lo tanto, obtenemos
`−1 `−1
!
X X
k j k+i k+i+1 0 1 k+i
|x − x | ≤ |x −x | ≤ |x − x | m
i=0 i=0
`−1
!
1 − m`
X  
1 0 k i 1 0 k
= |x − x | m m = |x − x | m ,
i=0
1−m
1−m`
donde en el último paso usamos la suma geométrica `−1 i `
P
i=0 m = 1−m . Como 1 − m < 1 y
los términos |x1 − x0 |, 1 − m están fijos, el lado derecho arriba tiende a 0 con k → ∞. Por
lo tanto, tomando k0 suficientemente grande podemos afirmar que si j > k ≥ k0 entonces
|xk − xj | < . Esto quiere decir que {xk } es de Cauchy.
3. Existencia del punto fijo. Como el intervalo I es cerrado y {xk } es de Cauchy, tenemos
que {xk } tiene lı́mite en I. Sea x∗ tal lı́mite. Solamente nos falta demostrar que x∗ es un
punto fijo para g. Como g es contractiva en I, es continua (Ejercicio 4.2, parte a)) y por
lo tanto
g(x∗ ) = lı́m g(xk ) = lı́m xk+1 = x∗ .
k→∞ k→∞
Observamos, además, que como por el paso 1. solamente puede haber un punto fijo,
tenemos xk → x∗ independientemente de cómo elijamos x0 .
Observación 4.7.1 (completitud). En el Teorema 4.7.1, es fundamental asumir que el
intervalo I es cerrado; remarcamos que I incluso podrı́a ser una semirrecta [a, ∞) o
(−∞, a], o incluso todo R. La propiedad subyacente que estamos usando es la completitud
de I, que nos permite afirmar que toda sucesión de Cauchy en I tiene lı́mite en I. 4

109
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Ya tenemos los ingredientes necesarios para dar condiciones que nos permitan asegurar la
convergencia de (MIG).

Corolario 4.7.2 (convergencia de (MIG)). Sea x∗ un punto fijo de g y supongamos que


existe un entorno Iδ = (x∗ − δ, x∗ + δ) en el que g es contractiva. Entonces, si x0 ∈ Iδ , la
sucesión {xk }k∈N dada por (MIG) verifica

xk ∈ Iδ ∀k, lı́m xk = x∗ .
k→∞

Demostración. Sea x0 ∈ Iδ . Nos basta con hallar un intervalo cerrado I˜δ ⊂ Iδ que contenga
a x0 y a x∗ . En efecto, supongamos I˜δ = [x∗ − δ̃, x∗ + δ̃] para algún 0 < δ̃ < δ. Como g es
contractiva en Iδ , es fácil verificar que también lo es en I˜δ . Por lo tanto, para todo y ∈ I˜δ ,
tenemos

g(y) = g(y) − g(x∗ ) + x∗ > −m|y − x∗ | + x∗ > x∗ − δ̃,


g(y) = g(y) − g(x∗ ) + x∗ < m|y − x∗ | + x∗ < x∗ + δ̃,

y concluimos g(y) ∈ I˜δ para todo y ∈ I˜δ . Como g|I˜δ verifica las hipótesis del Teorema
4.7.1, concluimos que (MIG) converge al único punto fijo de g en I˜δ , que es x∗ .

A continuación, damos un caso particular del Corolario 4.7.2 que es de utilidad práctica.

Corolario 4.7.3 (condición suficiente de convergencia). Supongamos que g es de clase


C 1 , sea x∗ un punto fijo de g y supongamos que |g 0 (x∗ )| < 1. Entonces, existe δ > 0 tal
que si |x0 − x∗ | < δ, el método (MIG) converge a x∗ .

Demostración. Al ser g 0 una función continua y tener |g 0 (x∗ )| < 1, existen λ < 1 y δ > 0
tal que si |x − x∗ | < δ, entonces |g 0 (x)| < λ. Por el Ejercicio 4.2, parte b), deducimos que
g es contractiva en (x∗ − δ, x∗ + δ) y podemos aplicar el Corolario 4.7.2.

Ejemplo 4.7.2 (distintos MIGs, revisitado). Volvemos al Ejemplo 4.7.1, en el que bus-
camos la raı́z x∗ = 2. Tenemos
g10 (x) = 2x − 1 ⇒ g10 (x∗ ) = 3,
g20 (x) = 2√x+2
1
⇒ g20 (x∗ ) = 14 ,
g30 (x) = − x22 ⇒ g30 (x∗ ) = − 12 ,
2 +2)
g40 (x) = 2x(2x−1)−2(x
(2x−1)2
⇒ g40 (x∗ ) = 0.

Esto muestra que la iteración usando g10 no es convergente, mientras las otras tres sı́ lo son,
siempre y cuando las inicialicemos lo suficientemente cerca de x∗ . Además, observamos
que cuanto menor sea |gi0 (x∗ )| más rápida parece ser la convergencia. 4

Un caso particular del Corolario 4.7.3 es la convergencia del método de Newton-Raphson,


que tenemos pendiente del Teorema 4.5.1.

110
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Corolario 4.7.4 (convergencia de Newton-Raphson). En las condiciones del Teorema


4.5.1, el método de Newton-Raphson (4.9) converge a x∗ .

Demostración. Ya sabemos que (4.9) es de la forma (MIG), tomando g(x) = x − ff0(x) (x)
.
0 ∗
Nos basta con verificar que se verifica |g (x )| < 1 y aplicar el Corolario 4.7.3. Derivamos
g, y obtenemos
0 f 0 (x)f 0 (x) − f 00 (x)f (x) f 00 (x)f (x)
g (x) = 1 − = .
f 0 (x)2 f 0 (x)2
Por lo tanto, g 0 (x∗ ) = 0.

4.7.2. Orden y velocidad de convergencia


A continuación establecemos el orden y la velocidad con la que convergen los métodos
iterativos generales.

Teorema 4.7.5 (orden y velocidad de convergencia). Sea g de clase C r , y supongamos


que la sucesión {xk }k∈N generada por (MIG) converge a x∗ , siendo x∗ punto fijo de g.
|g(p) (x∗ )|
Entonces, xk converge a x∗ con orden p ≤ r y velocidad p!
, si y solo si g (i) (x∗ ) = 0
para i = 1, . . . , p − 1 y g (p) (x∗ ) 6= 0.

Demostración. (⇐) Realizamos un desarrollo de Taylor para g alrededor de x∗ ,


p−1 (i) ∗

X g (x ) g (p) (θx ) g (p) (θx )
g(x) = g(x ) + (x − x∗ )i + (x − x∗ )p = x∗ + (x − x∗ )p ,
i=1
i! p! p!

para algún θx entre x∗ y x. Evaluamos este desarrollo en xk , notando que xk+1 = g(xk ),
para obtener
g (p) (θk ) k
xk+1 = g(xk ) = x∗ + (x − x∗ )p .
p!
Reordenando, esta relación se puede escribir en función de los errores como

k+1 g (p) (θk ) k p


e = (e ) .
p!

Como xk → x∗ , θk → x∗ y g (p) es continua, tomando lı́mite en k tenemos

ek+1 g (p) (x∗ )


lı́m = 6= 0,
k→∞ |ek |p p!

|g(p) (x∗ )|
lo que demuestra que la convergencia es con orden p y velocidad p!
.

111
Métodos Numéricos Facultad de Ingenierı́a – IMERL

|g(p) (x∗ )|
(⇒) Supongamos ahora que (MIG) converge con orden p y velocidad p!
, lo que
significa que
ek+1 g (p) (x∗ )
lı́m p = 6= 0.
k→∞ |ek | p!
Esto implica que g (p) (x∗ ) 6= 0. Veamos ahora que g (i) (x∗ ) = 0, ∀ i = 1, . . . , p − 1. Supon-
gamos por absurdo que alguna de estas derivadas no es nula, y sea j el orden de la primer
derivada no nula en x∗ , esto es,

g (i) (x∗ ) = 0, ∀ i = 1, . . . , j − 1, g (j) (x∗ ) 6= 0.

Hacemos un desarrollo de Taylor para g alrededor de x∗ de orden j − 1 y lo evaluamos en


xk ,
g (j) (θk ) k
g(xk ) = g(x∗ ) + 0 + . . . + 0 + (x − x∗ )j
j!
para algún θk entre xk y x∗ . Como xk+1 = g(xk ) y x∗ = g(x∗ ), reordenando arriba
obtenemos
|ek+1 | |g (j) (θk )|
=
|ek |j j!
(j) ∗
Al ser θk → x∗ y g (j) continua, el término de la derecha tiende a |g j!(x )| 6= 0. Pero
como j < p y xk → x∗ con orden p, el término de la izquierda tiende a 0, lo que es una
contradicción.
Observación 4.7.2 (derivada de la función de iteración). Del Teorema 4.7.5 se deduce que,
al diseñar un método iterativo general (MIG) para hallar una raı́z x∗ de una cierta función
f , el método tendrá orden igual a la primera derivada de g que no se anule en x∗ . Como
un método de primer orden es convergente si su velocidad es menor que 1 (Observación
4.1.1), notamos que el Teorema 4.7.5 nos devuelve la condición |g 0 (x∗ )| < 1 para garantizar
la convergencia, al igual que el Corolario 4.7.2. Además, para un método iterativo general
que converja con primer orden, la convergencia será más rápida en la medida que |g 0 (x∗ )|
sea lo menor posible. 4

4.7.3. Criterios de parada


Al considerar métodos iterativos, una pregunta relevante en la práctica es cuándo pa-
rar. Nuestra discusión aquı́ complementa a la de la Sección 4.1. Podemos considerar las
siguientes posibilidades:

Usar la variación entre iterados consecutivos. Dada una tolerancia ε > 0,


detener el algoritmo cuando |xk+1 − xk | < ε. Como xk+1 = g(xk ) y x∗ = g(x∗ ),
podemos aplicar el Teorema de Lagrange A.2.3 para deducir que

|xk+1 − x∗ | = |g(xk ) − g(x∗ )| = |g 0 (ck )||xk − x∗ |

112
Métodos Numéricos Facultad de Ingenierı́a – IMERL

para algún ck entre xk y x∗ . Si asumimos |g 0 | ≤ m < 1 en un entorno de x∗ que


contiene a xk tendremos, usando la desigualdad triangular, que
|xk+1 − x∗ | ≤ m|xk − x∗ | ≤ m |xk − xk+1 | + |xk+1 − x∗ | .


Por lo tanto, como |xk − xk+1 | < ε, deducimos que vale



|xk+1 − x∗ | < .
1−m
Si podemos asegurar que m no es muy cercano a 1 en el intervalo en el que estamos
trabajando, usando este criterio tendremos un buen control sobre la magnitud del
error al detener el algoritmo.
Usar los valores de f . Dado ε > 0, detener el algoritmo cuando |f (xk )| < ε.
Es de esperar que se necesario algún tipo de “buen condicionamiento” en juego si
queremos estimar el error al detener el algoritmo usando este criterio (recordar la
Figura 4.1). Supongamos f 0 (x∗ ) 6= 0. Si hacemos la linealización
f (xk ) ≈ f (x∗ ) + f 0 (x∗ )(xk − x∗ ) = f 0 (x∗ )(xk − x∗ ),
llegamos a que si |f (xk )| < ε entonces
ε
|xk − x∗ | . .
|f 0 (x∗ )|
Esto cuantifica lo que ilustramos en la Figura 4.1: si |f 0 (x∗ )|  0, tendremos un
buen control sobre el error al usar este criterio, mientras que si f 0 (x∗ ) ≈ 0 este
criterio no es muy significativo.
De hecho, supongamos f 0 (x∗ ) = 0 pero f 00 (x∗ ) 6= 0. Entonces, haciendo un desarrollo
de Taylor de segundo orden tenemos
f 00 (x∗ ) k f 00 (x∗ ) k
f (xk ) ≈ f (x∗ ) + f 0 (x∗ )(xk − x∗ ) + (x − x∗ )2 = (x − x∗ )2 .
2 2
k
Por lo tanto, si |f (x )| < ε en este caso solamente podremos afirmar que
s

|xk − x∗ | . .
|f (x∗ )|
00

¡Nuestro control sobre el error es mucho más pobre! Naturalmente, este razona-
miento se puede generalizar: si f tiene sus primeras p − 1 derivadas nulas en
x∗ y f (p) (x∗ ) √
6= 0, entonces si |f (xk )| < ε solamente podremos afirmar que
|xk − x∗ | = O( p ε).
Usar el número de iteraciones. Esta puede ser una importante red de seguridad
en caso de que el método no esté convergiendo o lo haga muy lentamente. Podemos
fijar que el algoritmo se detenga en caso de que el número de iteraciones llegue a
una cantidad máxima fijada de antemano. De este modo, evitamos que el algoritmo
entre en un ciclo sin fin, pero naturalmente no tenemos ningún tipo de información
relevante sobre x∗ en caso de que el algoritmo se detenga usando este criterio.

113
Métodos Numéricos Facultad de Ingenierı́a – IMERL

4.8. Sistemas de ecuaciones


En esta sección generalizamos algunos de los métodos que discutimos anteriormente en
este capı́tulo a sistemas de ecuaciones. Consideramos sistemas de n ecuaciones no lineales
en n variables, fi : Rn → R,


 f1 (x1 , x2 , . . . , xn ) = 0
 f2 (x1 , x2 , . . . , xn ) = 0

.. .. . (4.12)


 . .
 f (x , x , . . . , x ) = 0
n 1 2 n

Consideramos f : Rn → Rn tal que f (x) = [f1 (x), f2 (x), . . . , fn (x)]t . En forma compacta,
resolver (4.12) puede expresarse equivalentemente como

hallar x∗ = [x1 , x2 , . . . , xn ]t ∈ Rn tal que f (x∗ ) = 0.

A diferencia de los sistemas de ecuaciones lineales, aquı́ no tenemos condiciones sencillas


de verificar que nos permitan asegurar la existencia o unicidad de soluciones.

4.8.1. Métodos iterativos generales


Conceptualmente, la generalización al caso vectorial de los métodos iterativos generales
que analizamos en la Sección 4.7 es bastante sencilla. En efecto, dada f : Rn → Rn ,
buscamos construir una función g : Rn → Rn tal que

f (x∗ ) = 0 ⇔ g(x∗ ) = x∗ , (4.13)

y aproximamos x∗ mediante la sucesión


 k+1
x = g(xk )
. (4.14)
x ∈ Rn
0

Para simplificar la discusión, de aquı́ en más asumimos que g es tan regular como sea
necesario. No vamos a profundizar en aspectos técnicos de este tipo de métodos, pero
con los conocimientos que hemos adquirido en la Sección 4.7, podemos generar algunas
intuiciones. Por una parte, en el caso de métodos iterativos generales para ecuaciones no
lineales en R tenemos que la derivada de la función de iteración juega un rol prepon-
derante para establecer la convergencia, asegurando la misma en caso de que la función
sea contractiva. Para funciones de varias variables, la matriz jacobiana cumple el rol de
la derivada, y por lo tanto es de esperar que deba asignarse una condición que asegure
contractividad para la matriz jacobiana.
Por otro lado, de nuestros conocimientos de Geometrı́a y Álgebra Lineal 2 sabemos que
la intuición de “contraer direcciones” tiene que ver con la noción de vectores y valores
propios. La siguiente noción nos permite tratar esta idea en forma compacta.

114
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Definición 4.8.1 (radio espectral). Sea A ∈ Mn (R) una matriz cuyos valores propios
(complejos) escribimos como λ1 , . . . , λn . El radio espectral de A, que denotamos por
ρ(A), se define como
ρ(A) = máx |λi |.
1≤i≤n

Intuitivamente, la Definición 4.8.1 nos dice que el hecho de que una matriz A ∈ Mn (R)
“contraiga” todas las direcciones es equivalente a que ρ(A) ≤ 16 .
Combinando la definición de radio espectral con la matriz jacobiana, y en analogı́a con
el Teorema 4.7.1, es de esperar que podamos garantizar que (4.14) converja a x∗
siempre y cuando la matriz jacobiana de g tenga radio espectral menor que
1 en un entorno de x∗ , y de hecho, cuanto menor sea ρ(Jg (x∗ )) más rápida será la
convergencia.

Ejemplo 4.8.1 (métodos iterativos en R2 ). Consideremos el sistema



x1 + 2x2 − 2 = 0
,
x21 + 4x22 − 4 = 0

cuya solución x∗ = [0, 1]t buscamos aproximar, y analizamos dos alternativas usando
(4.14). Consideramos g1 , g2 : R2 → R2 , tales que
" #
−2x + 2
 
2x + 2x − 2 √ 22
g1 (x1 , x2 ) = 2 1 2 2 , g2 (x1 , x2 ) = 4−x1 .
x1 + 4x2 + x2 − 4
2

Notemos que ambas alternativas satisfacen (4.13), pero sus jacobianos son
   
2 2 ∗ 2 2
Jg1 (x1 , x2 ) = ⇒ Jg1 (x ) = ,
2x1 8x2 + 1 0 9
" #
0 −2
 
∗ 0 −2
Jg2 (x1 , x2 ) = √−x1 0 ⇒ Jg2 (x ) = 0 0 .
2 4−x2 1

Es sencillo verificar que los valores propios de Jg1 (x∗ ) son 9 y 2, mientras que Jg2 (x∗ )
solamente tiene valor propio 0 (que es doble). Deducimos que ρ(Jg1 (x∗ )) = 9 y que
ρ(Jg2 (x∗ )) = 0, por lo que esperamos que la iteración usando g1 no converja y que la
iteración usando g2 sı́ lo haga.
Implementamos en Octave estas iteraciones, comenzando con x0 = [0,5, 0,5]t . La siguiente
tabla muestra los primeros iterados e indica que nuestro razonamiento parece ser el co-
rrecto. Para no cargar la notación, usamos un punto y coma ; para marcar un cambio de
fila.
6
Es claro por definición que ρ(A) ≥ 0 para toda matriz A ∈ Mn (R).

115
Métodos Numéricos Facultad de Ingenierı́a – IMERL

k (4.14) con g1 (4.14) con g2


0 [0,5; 0,5] [0,5; 0,5]
1 [0; −2,2500] [1,0000; 0,9682]
2 [−6,5000; 14,0000] [0,0635; 0,8660]
3 [13,0000; 836,2500] [0,2679; 0,9995]
4 [0,0017; 2,7983] × 106 [0,0010; 0,9910]

Observación 4.8.1 (criterios de parada). Los criterios de parada que imponemos sobre los
métodos iterativos en Rn son los mismos que comentamos en la Sección 4.7.3, con la única
diferencia de que donde dice “valor absoluto” allı́, aquı́ debemos usar alguna norma en
Rn7 . 4

4.8.2. Método de Newton-Raphson


Al igual que para ecuaciones en una variable, podemos considerar el método de Newton-
Raphson para sistemas. Sea f : Rn → Rn diferenciable, y buscamos x∗ tal que f (x∗ ) = 0.
Dado xk ∈ Rn , siguiendo el enfoque de la Observación 4.5.1 podemos linealizar f alrededor
de este punto, esto es, aproximar

f (x) ≈ T1 f (x; xk ) = f (xk ) + Jf (xk )(x − xk ),

y definir xk+1 como el único punto en Rn en el que T1 f (xk+1 ; xk ) = 0. A diferencia del


método de Newton-Raphson en una variable, aquı́ para hallar xk+1 tendremos que resolver
un sistema de ecuaciones lineal:

Jf (xk )(xk+1 − xk ) = −f (xk ). (4.15)

De este modo, dado xk , para para calcular el siguiente iterado xk+1 podemos

resolver el sistema lineal Jf (xk )dk+1 = −f (xk ),

y luego tomar xk+1 := xk + dk+1 .


7
Remarcamos que no es relevante cuál, ya que las normas en Rn son todas equivalentes: si k · k y ||| · |||
son normas en Rn , entonces existen constantes c, c0 > 0 (que dependen de n) tales que

ckvk ≤ |||v||| ≤ c0 kvk ∀v ∈ Rn .

116
Métodos Numéricos Facultad de Ingenierı́a – IMERL

El Algoritmo 4.2 describe este método en forma de pseudo-código.


Algoritmo 4.2: Pseudo-código: Newton-Raphson para sistemas.
Datos: x0 ∈ Rn , f : Rn → Rn diferenciable, Jf : Rn → Mn (R) su jacobiana,
tol> 0, max it> 0
Resultado: x ∈ Rn que cumpla el criterio de parada que establezcamos
x ← x0
mientras [criterio de parada] ≥ tol & k < max it hacer
b ← −f (x);
A ← Jf (x);
d ← solución del sistema Ad = b;
x ← x + d;
k ← k + 1;
fin

Observación 4.8.2 (invertibilidad de Jf ). Para que los iterados del método de Newton-
Raphson estén bien definidos, es necesario que las matrices jacobianas Jf (xk ) sean inver-
tibles. Esto es análogo a la versión (4.9) en R, en la que necesitamos que f 0 (xk ) 6= 0. 4
Ejemplo 4.8.2 (Newton-Raphson en R2 ). Volvemos al problema del Ejemplo 4.8.1, al
que ahora abordamos usando el método de Newton-Raphson en R2 . Para computar los
iterados necesitamos la matriz jacobiana de f , que es
 
1 2
Jf (x1 , x2 ) = .
2x1 8x2

Comenzamos con x0 = [0,5; 0,5]. Para computar x1 primero resolvemos el sistema


     
0 1 0 1 2 1 1/2 1 −7/4
Jf (x )d = −f (x ) ⇒ d = ⇒ d = ,
1 4 11/4 9/8

y por lo tanto  
1 0 −5/4
1
x =x +d = .
13/8
Siguiendo de este modo, implementando el Algoritmo 4.2 en Octave obtenemos los iterados
       
1 −1,2500 2 −0,3472 3 −0,0447 4 −0,0010
x = , x = , x = , x = .
1,6250 1,1736 1,0224 1,0005

Observamos que la iteración converge a x∗ = [0; 1]. 4


Observación 4.8.3 (Newton-Raphson como método iterativo general). Sea f : Rn → Rn
una función de clase C 2 , con f (x) = 0 y Jf (x∗ ) invertible. El método de Newton-Raphson
en Rn es un método iterativo de la forma (4.14), en el que se toma

g(x) = x − Jf (x)−1 f (x).

117
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Es elemental (pero engorroso) verificar que las entradas de la matriz jacobiana de g en x


están dadas por
n n
X ∂Kir X
(Jg (x))ij = δij − fr − Kir Jrj , i, j = 1, . . . , n,
r=1
∂xj r=1

donde denotamos por δij la delta de Kronecker (δij = 1 si i = j y δij = 0 si no), K =


Jf (x)−1 , y J = Jf (x). Si evaluamos esta identidad en x = x∗ se obtiene que Jg (x∗ ) = 0, lo
que justifica que el método de Newton-Raphson en Rn presente convergencia cuadrática.
4

4.8.3. Variantes al método de Newton-Raphson*


El método de Newton-Raphson tal como lo tratamos en estas notas es extremadamente
popular para trabajar con problemas en una variable, pero no lo es tanto para sistemas de
ecuaciones. Tiene ciertas limitaciones que hacen que muchas veces se opte por variantes
al método.

No siempre converge. Bajo hipótesis adecuadas sobre f , el método de Newton-


Raphson converge a x∗ siempre y cuando lo inicialicemos lo suficientemente cerca de
x∗ . Si estamos lejos de x∗ , el método no siempre es confiable. Una opción para mitigar
una posible no convergencia del método de Newton-Raphson es amortiguarlo.
Concretamente, dado x0 ∈ Rk , podemos considerar una sucesión {αk } ⊂ (0, 1) (muchas
veces se la elige simplemente como una constante) y, en cada paso,

resolver el sistema lineal Jf (xk )dk+1 = −f (xk ),


y luego tomar xk+1 := xk + αk+1 dk+1 .

Costo computacional. El método de Newton-Raphson puede resultar inconveniente


para resolver sistemas de ecuaciones, ya que requiere conocer las derivadas parciales de f ,
y en cada paso hay que resolver un sistema de ecuaciones lineales distinto. Ensamblar las
matrices jacobianas implica computar n2 funciones escalares en cada paso, y la resolución
de cada sistema –asumiendo que estas jacobianas son matrices densas– tiene un costo de
O(n3 ) flops.
Los métodos de cuasi-Newton apuntan a alivianar este elevado costo computacional.
Una posibilidad es utilizar la misma matriz jacobiana en varias iteraciones consecutivas, lo
que ahorra el trabajo de ensamblado y permite sacar ventaja de computar la factorización
LU en cada actualización de la jacobiana. Naturalmente, esto afecta al orden cuadrático
del método.
Otra opción consiste en reemplazar Jf (xk ) por una matriz B k ∈ Mn (R) que la aproxime,
pero que nos evite el trabajo de calcular las derivadas parciales de f . Los métodos de tipo

118
Métodos Numéricos Facultad de Ingenierı́a – IMERL

secante son métodos de cuasi-Newton que logran obtener órdenes de convergencia mayor
a 1, y toman B k de modo que se cumpla

B k (xk+1 − xk ) = f (xk+1 ) − f (xk ).

Esta ecuación es análoga a la definición del método de la secante (4.4) en R, con la


diferencia de que aquı́ reemplazamos el escalar sk ∈ R por la matriz B k ∈ Mn (R). Un
ejemplo popular de método de este tipo es el método de Broyden. Referimos a [Hea02,
Sección 5.6] para mayores detalles acerca de métodos de cuasi-Newton y otras variantes
sobre el método de Newton-Raphson en Rn . No profundizaremos sobre el tema en este
curso.

119
Métodos Numéricos Facultad de Ingenierı́a – IMERL

120
Capı́tulo 5

Mı́nimos cuadrados

5.1. Introducción. Modelos y ajustes


El problema principal que abordamos en este capı́tulo tiene que ver con el ajuste de
datos. Dados m datos u observaciones {(ti , yi )}i=1,...,m ⊂ R2 , buscamos una curva “que
los ajuste”. A diferencia de lo que ocurre en el problema de interpolación que discutimos
en el Capı́tulo 3, aquı́ tenemos un modelo de cómo deberı́an comportarse los datos. Ese
modelo incluye una cierta cantidad n de parámetros, en general vamos a asumir n < m, y
el objetivo es hallar los valores de parámetros que logren el “mejor ajuste” a los datos. La
Figura 5.1 muestra dos ejemplos. En la izquierda, el modelo subyacente es que los datos
siguen una relación lineal, esto es

yi ≈ f (ti ) := x1 ti + x2 , i = 1, . . . , m.

Aquı́, x1 , x2 ∈ R son los n = 2 parámetros a determinar. La imagen de la derecha en la


Figura 5.1 muestra un ajuste en el que se asume que los puntos (ti , yi ) están distribuidos
en una cónica,

x1 t2i + x2 ti yi + x3 yi2 + x4 ti + x5 yi + x6 ≈ 0, i = 1, . . . , m,

por lo que tenemos n = 6 parámetros en nuestro modelo1 .


Estos dos ejemplos son levemente distintos en el sentido de que en uno de ellos se asume
que yi se puede escribir como una función de ti , mientras que en el otro no. El segundo caso
no reviste mayores dificultades técnicas (ver el ejercicio Órbita planetaria en el práctico)
pero, para simplificar la discusión, vamos a asumir que existe una función f : R → R tal
que
yi ≈ f (ti ), ∀i = 1, . . . , m.
1
En este caso, si ya sabemos que los datos se distribuyen en una elipse, deberı́amos imponer la res-
tricción adicional x22 − 4x1 x3 < 0. Si no imponemos esta restricción, simplemente estamos asumiendo que
los puntos siguen una sección cónica (hipérbola, parábola, o elipse).

121
Métodos Numéricos Facultad de Ingenierı́a – IMERL

y y

t t

Figura 5.1: Ajustes de modelos a datos.

Queremos escribir esta función f a partir de un conjunto de funciones φ1 , . . . , φr conocidas


(notar que podemos permitir r 6= n, ver el Ejemplo 5.1.1), y de un cierto conjunto de n
parámetros. La dependencia en estos parámetros puede ser lineal o no. Veamos algunos
ejemplos.
Ejemplo 5.1.1 (ejemplos de modelos). A continuación damos algunos ejemplos de cómo
los modelos pueden depender linealmente respecto a ciertos parámetros pero no lineal-
mente respecto a otros.

Polinomios: si sabemos que f (t) es un polinomio de grado n − 1, entonces podemos


tomar el conjunto de funciones de base φ1 (t) = tn−1 , φ2 (t) = tn−2 , . . . φn (t) = 1, y
podemos escribir
f (t) = x1 tn−1 + x2 tn−2 + . . . xn .
En este ejemplo tenemos n = r y la dependencia en los parámetros es lineal. Es
posible que el lector haya utilizado la función de Octave/Matlab polyfit en otros
cursos: esa función hace ajustes de datos mediante modelos polinomiales en el sentido
que describimos en este capı́tulo.
Exponenciales: dados α1 , . . . , αr ∈ R, consideramos φj (t) = e−αj t para j = 1, . . . , r,
y tomamos
f (t) = x1 e−α1 t + x2 e−α2 t + . . . + xr e−αr t .
Aquı́ tenemos n = 2r parámetros: la dependencia en x1 , . . . , xr es lineal pero la
dependencia en α1 , . . . , αr no lo es.
tr−j
Funciones racionales: dados α1 , . . . , αp ∈ R, consideramos φj (t) = α1 tp−1 +...+αp
para
j = 1, . . . , r, y tomamos
x1 tr−1 x2 tr−2 xr
f (t) = p−1
+ p−1
+ ... + p−1
α1 t + . . . + αp α1 t + . . . + αp α1 t + . . . + αp
r−1 r−2
x1 t + x2 t . . . + xr
= p−1
.
α1 t + . . . + αp

122
Métodos Numéricos Facultad de Ingenierı́a – IMERL

En este caso, tenemos n = p + r parámetros y el modelo es lineal en x1 , . . . , xr y no


lineal respecto a α1 , . . . , αp .
 2
t−µ
− σ j
Gaussianas: dados µ1 , . . . , µr ∈ R y σ1 , . . . , σr > 0, consideramos φj (t) = e j

y tomamos
t−µ1 2
 
t−µr 2
+ . . . + x e−( σr ) .

f (t) = x e σ1
1 r

Aquı́, tenemos n = 3r parámetros, y la dependencia respecto a µ1 , . . . , µr , σ1 , . . . , σr


es no lineal, mientras que la dependencia respecto a x1 , . . . , xr sı́ lo es.

En las primeras secciones del capı́tulo, nos vamos a concentrar en problemas lineales:
dadas n funciones linealmente independientes φ1 (t), . . . , φn (t), buscamos una función f
de la forma
Xn
f (t) = xj φj (t).
j=1

Un concepto útil para tratar con problemas lineales es el siguiente.

Definición 5.1.1 (matriz de diseño). Dados puntos {(ti , yi )}i=1,...,m ⊂ R2 y funciones


φ1 (t), . . . , φn (t) como arriba, llamamos matriz de diseño asociada a ellos a A = (aij ) ∈
Mm×n (R), tal que
aij = φj (ti ).
4

Notemos que la matriz de diseño almacena las evaluaciones de todas las funciones de base
φ1 , . . . , φn en todos los puntos t1 , . . . , tm . Por lo tanto, si tenemos un problema lineal y
queremos f (ti ) ≈ yi para todo i = 1, . . . , m, estamos buscando un vector de parámetros
x = [x1 , . . . , xn ]t tal que


 x1 φ1 (t1 ) + x2 φ2 (t1 ) + . . . + xn φn (t1 ) = y1
 x1 φ1 (t2 ) + x2 φ2 (t2 ) + . . . + xn φn (t2 ) = y2

.. .. . (5.1)


 . .
 x φ (t ) + x φ (t ) + . . . + x φ (t ) = y
1 1 m 2 2 m n n m m

En forma compacta, este sistema se puede escribir como Ax = y, donde A ∈ Mm×n (R) es
la matriz de diseño, e y = [y1 , . . . , ym ]t . A diferencia de lo que estudiamos en los capı́tulos
2 y 3, este no es un sistema cuadrado; como m > n, en general esperamos que este sistema
sea incompatible2 .
2
Notemos que, si m = n, el problema (5.1) es un problema de interpolación, aunque no necesariamente
de interpolación polinomial.

123
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Dado que en general no tenemos esperanza de resolver el sistema (5.1) en forma exac-
ta, necesitamos dar una noción de solución con la que podamos determinar valores
“satisfactorios” de los parámetros. Dado un vector x ∈ Rn , consideremos el residuo
r := Ax − y ∈ Rm . Parece natural buscar un vector de parámetros x ∈ Rn que minimice
alguna norma del residuo. Para esto, puede ser útil recordar las normas `p que intro-
dujimos en la Sección 2.5.1: apuntar a minimizar las normas `1 o `∞ del residuo tiene
aplicaciones en la práctica y pueden entenderse como problemas de programación lineal.
En este capı́tulo nos vamos a concentrar en el problema de minimizar la norma euclı́dea
(`2 ) del residuo.
Definición 5.1.2 (mı́nimos cuadrados). Dados A ∈ Mm×n (R), y ∈ Rm , decimos que
un vector x∗ ∈ Rn es solución del sistema Ax = y en el sentido de mı́nimos
cuadrados si
x∗ = arg mı́nn kAx − yk22 .
x∈R

Esto es, si consideramos el residuo3 r = Ax − y, entonces x∗ minimiza la función


m m
" n ! #2
X X X
Φ : Rm → R, Φ(x) := ri2 = aij xj − yi .
i=1 i=1 j=1

4
Observación 5.1.1 (cuadrado de la norma). Como seguramente el lector ya se haya encon-
trado en algún curso de cálculo, es fácil comprobar que el punto en el que se minimiza la
norma euclı́dea es el mismo que en el que se minimiza el cuadrado de la norma euclı́dea.
En la definición anterior usamos el cuadrado de la norma euclı́dea simplemente porque es
más cómodo para trabajar. 4
Observación 5.1.2 (mı́nimos cuadrados con pesos). A veces puede ocurrir que queramos
darle más importancia al ajuste de ciertos puntos que a otros. Por ejemplo, esto puede
ocurrir si los {(ti , yi )} corresponden a observaciones experimentales y algunas de estas
observaciones fueron tomadas en condiciones más favorables, o con mejor equipamiento.
En ese caso, se puede tomar w1 , . . . , wm > 0 y apuntar a minimizar la función
m
X
Φw (x) := wi ri2 .
i=1

Esto se llama un problema de mı́nimos cuadrados con pesos. Dado w := [w1 , . . . , wm ]t ,


pasar del sistema correspondiente a un problema sin pesos a uno con pesos es extremada-
mente simple: ensamblamos la matriz diagonal Dw ∈ Mm (R) que tenga w en la diagonal,
y el sistema asociado al problema con pesos es
Dw Ax = Dw y,
donde A ∈ Mm×n (R) e y ∈ Rm son respectivamente la matriz de diseño y el vector de
datos del problema original. 4
3
Observar que el residuo depende de x.

124
Métodos Numéricos Facultad de Ingenierı́a – IMERL

A continuación, en la Sección 5.2, encontramos una caracterización elegante de la solución


de mı́nimos cuadrados, las llamadas ecuaciones normales. Esta caracterización conduce a
resolver un sistema lineal de tamaño n × n, y es una estrategia viable en algunos casos.
Sin embargo, las ecuaciones normales pueden sufrir problemas de condicionamiento, por
lo que no siempre son una buena estrategia computacional. En la Sección 5.3 mostramos
un camino de resolución basado en una factorización particular de la matriz de diseño,
llamada descomposición QR, y estudiamos cómo obtener esta factorización de forma esta-
ble. Finalmente, en la Sección 5.4 analizamos un método para la resolución de problemas
de mı́nimos cuadrados no lineales.

5.2. Ecuaciones normales


En esta sección, hallamos y analizamos una caracterización elegante de las soluciones de
mı́nimos cuadrados, las llamadas ecuaciones normales.
Teorema 5.2.1 (ecuaciones normales). Sean A ∈ Mm×n (R) e y ∈ Rm . Entonces, x∗ ∈
Rn es solución del sistema Ax = y en el sentido de los mı́nimos cuadrados (Definición
5.1.2) si y sólo si
At Ax∗ = At y. (5.2)
A esta fórmula se la conoce como las ecuaciones normales.

Demostración. Consideremos la función Φ : Rn → R,


Φ(x) := kr(x)k22 = kAx − yk22 = (Ax − y)t (Ax − y),
que es la función que queremos minimizar. Desarrollando, encontramos
Φ(x) = xt At Ax − 2xt At y + yt y.
Es fácil verificar que Φ es de clase C ∞ en Rn , ya que es una función polinomial (cuadrática)
en x. En caso de tener un mı́nimo, éste se debe alcanzar en un punto crı́tico, esto es,
debemos hallar x∗ ∈ Rn tal que ∇Φ(x∗ ) = 0. Dado i ∈ {1, . . . , n}, tenemos
n X n
! n X m
!
∂Φ ∂ X ∂ X
(x) = xj (At A)jk xk − 2 xj (At )jk yk
∂xi ∂xi j=1 k=1 ∂xi j=1 k=1
n
X n
X
t
=2 (A A)ik xk − 2 (At )ik yk = 2(At Ax)i − 2(At y)i .
k=1 k=1

Por lo tanto, deducimos que ∇Φ(x ) = 0 si y solo si At Ax∗ − At y = 0.


Nos resta verificar que tal punto crı́tico efectivamente es un mı́nimo de Φ. Sea x∗ tal que
At Ax∗ = At y y sea z ∈ Rn arbitrario. Usamos la condición de punto crı́tico para escribir
Φ(z) − Φ(x∗ ) = zt At Az − 2zt At y + yt y − x∗t At Ax∗ − 2x∗t At y + yt y


= zt At Az − 2zt At Ax∗ + x∗t At Ax∗ (5.3)


∗ ∗ ∗ ∗ 2
= Az · Az − 2Az · Ax + Ax · Ax = kAz − Ax k2 ≥ 0.

125
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Por lo tanto, x∗ es un mı́nimo de Φ. Concluimos que minimizar Φ es equivalente a que se


satisfaga la condición de punto crı́tico At Ax∗ = At y.

Observación 5.2.1 (unicidad). Remarcamos que el Teorema 5.2.1 no indica que el problema
de mı́nimos cuadrados tenga solución única. De hecho, esto solamente ocurre si A es de
rango completo (esto es, rg(A) = n): en ese caso, At A ∈ Mn (R) también tendrı́a que
tener rango igual a n, lo que implica que debe ser invertible y por lo tanto las ecuaciones
normales tienen solución única. En este caso tenemos que At A es definida positiva e incluso
podrı́amos usar el criterio de la Hessiana para clasificar el único punto crı́tico de Φ: basta
con notar que D2 Φ(x) = At A para todo x ∈ Rn .
En caso de que A sea de rango deficiente (esto es, rg(A) < n), entonces At A no es inverti-
ble, y las ecuaciones normales constituyen un sistema indeterminado. En la Sección 6.2.2
del Capı́tulo 6 analizamos este tipo de problemas. Por el momento, solamente comenta-
mos que en este caso tenemos que At A es semidefinida positiva y por lo tanto el uso del
criterio de la Hessiana en la demostración del Teorema 5.2.1 requerirı́a algo de cuidado
adicional. En cambio, enfatizamos que el argumento que hicimos en (5.3) para probar que
Φ alcanza un mı́nimo en x∗ es válido aún en este caso.
4
Observación 5.2.2 (ortogonalidad). La condición At Ax∗ = At y es equivalente a que Ax∗ −
y sea ortogonal al espacio de columnas de A. En efecto, las ecuaciones normales se pueden
escribir como
At (Ax∗ − y) = 0.
Esto implica que, para toda fila de At (esto es, para toda columna A(i) de A), se tiene
A(i) · (Ax∗ − y) = 0. 4
Observación 5.2.3 (mı́nimos cuadrados como proyección ortogonal). Supongamos que m >
n y que rg(A) = n. El espacio de columnas de A (col(A)) es un subespacio de Rm
de dimensión n. Descomponemos Rm como la suma directa entre este subespacio y su
complemento ortogonal,
Rm = col(A) ⊕ col(A)⊥ .
La observación anterior nos asegura que y − Ax∗ ∈ col(A)⊥ , mientras que es evidente que
Ax∗ ∈ col(A). Por lo tanto, la solución de mı́nimos cuadrados es el único vector x∗ ∈ Rn
que nos permite descomponer

Ax∗ + y − Ax∗ .
y = |{z}
| {z }
∈col(A) ∈col(A)⊥

Esto implica que Ax∗ es la proyección ortogonal (ver Definición A.4.2) del
vector y sobre col(A). 4

Ejemplo 5.2.1 (ajuste lineal). Consideremos los datos de la siguiente tabla:

126
Métodos Numéricos Facultad de Ingenierı́a – IMERL

t y
0 -1
1 1
2 2
3 9/2

Queremos hacer un ajuste lineal a los mismos, esto es, escribir y(t) = x1 t + x2 con x1 , x2
a determinar. Usamos las funciones de base φ1 (t) = t, φ2 (t) = 1, y escribimos nuestro
problema como Ax = y, donde
   
0 1 −1  
1 1  1  x
A=   , y =  , x = 1 .
  (5.4)
2 1  2 x2
3 1 9/2

Por lo tanto, logramos el mejor ajuste en el sentido de mı́nimos cuadrados si resolvemos


el sistema dado por las ecuaciones normales,
    
t t 14 6 x1 37/2
A Ax = A y ⇒ = .
6 4 x2 13/2

La solución de este último sistema es x∗ = [7/4, −1]t . La Figura 5.2 muestra los datos y
el gráfico de la función lineal y(t) = 7t/4 − 1 que obtuvimos. 4

Figura 5.2: Ajuste lineal de datos.

Observación 5.2.4 (condicionamiento). Las ecuaciones normales son una herramienta po-
derosa para trabajar en la teorı́a de problemas de mı́nimos cuadrados. A primera vista,
incluso parecen interesantes en la práctica: estamos convirtiendo el problema de resolver
el sistema Ax = y, con A ∈ Mm×n (R) en el de resolver un sistema cuadrado cuya matriz
es At A ∈ Mn (R). En caso de que m  n, esto puede ser un buen beneficio respecto
al tamaño del sistema resultante. Sin embargo, las ecuaciones normales no siempre

127
Métodos Numéricos Facultad de Ingenierı́a – IMERL

son una buena opción práctica, y esto se debe a que pueden presentar pro-
blemas de condicionamiento. Para sistemas pequeños, esto puede no ser demasiado
problemático (a menos que tengamos un ejemplo patológico como el que mostramos a
continuación).
Sin embargo, dado que los datos de entrada en general están sujetos a errores (en particu-
lar, si corresponden a observaciones empı́ricas o datos experimentales), en problemas de
mı́nimos cuadrados es especialmente importante reducir la magnificación del error. Por
ello, en la Sección 5.3 y el Capı́tulo 6 vamos a estudiar métodos para resolver problemas
de mı́nimos cuadrados que no requieran el uso de la matriz At A. 4
Ejemplo 5.2.2 (condicionamiento de ecuaciones normales). Dado δ > 0, consideremos
 
1 1
A = δ 0 ∈ M3×2 (R).
0 δ

Es fácil verificar que  


t 1 + δ2 1
AA=
1 1 + δ2.
Supongamos
p que usamos aritmética de punto flotante con precisión doble y que εM /2 ≤
δ < εM /2 ≈ 10−8 : en ese caso, computacionalmente A tiene rango 2 (porque sus
columnas son linealmente independientes) pero At A es singular.
p
Incluso si δ ≥ εM /2 y el sistema no es computacionalmente singular, las ecuaciones
normales pueden no ser un buen camino. Recordando la Definición 2.5.3 de número de
condición y calculando
 
t −1 1 1 + δ2 −1
(A A) = 4 ,
δ + 2δ 2 −1 1 + δ 2
(2+δ 2 )2 2
tenemos que κ(At A, k · k∞ ) = κ(At A, k · k1 ) = δ 4 +2δ 2
≈ δ2
para δ pequeño. 4

5.3. Descomposición QR
Aquı́ analizamos una alternativa para resolver problemas de mı́nimos cuadrados que no
implique utilizar las ecuaciones normales. Consideramos la ecuación Ax = y con A ∈
Mm×n (R), m > n. Como punto de partida, retomamos la Observación 5.2.3: hallar la
solución del sistema en el sentido de los mı́nimos cuadrados es equivalente a computar la
proyección ortogonal de y sobre el espacio de columnas de A. Esto motiva a los llamados
métodos de ortogonalización para resolver nuestro problema.
El lector debe haberse encontrado con el concepto de matriz ortogonal en los cursos de
Geometrı́a y Álgebra Lineal. Aquı́ hacemos un breve repaso de propiedades clave para
nuestro análisis.

128
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Definición 5.3.1 (matriz ortogonal). Sea Q ∈ Mn (R). Decimos que Q es una matriz
ortogonal si sus columnas {Q(1) , . . . , Q(n) } forman una base ortonormal de Rn (recordar
la Definición A.4.1). 4
Observación 5.3.1 (propiedades de matrices ortogonales). Mencionamos algunas propie-
dades que vamos a utilizar sobre matrices ortogonales.

1. Las transformaciones lineales dadas por matrices ortogonales preservan norma. Esto
es, si Q ∈ Mn (R) es ortogonal, entonces se tiene
kQxk2 = kxk2 ∀x ∈ Rn .

2. Si Q ∈ Mm×n (R) con m > n, y las n columnas de Q forman un conjunto ortonormal


en Rm , entonces se pueden agregar m − n vectores a las columnas de Q de modo de
obtener una base ortogonal de Rm . La matriz cuadrada m × m que ası́ se obtiene es
ortogonal.
3. Una matriz Q ∈ Mn (R) es ortogonal si y sólo si es invertible y su inversa es su
traspuesta. Esto es, si y sólo si se cumple
Qt Q = QQt = In .
Además, si Q es ortogonal entonces Qt también lo es.

4
Teorema 5.3.1 (descomposición QR). Dada A ∈ Mm×n (R) con m ≥ n tal que rg(A) =
n, existen

una matriz Q ∈ Mm×n (R) cuyas columnas forman un conjunto ortonormal en Rm ,


una matriz triangular superior e invertible R ∈ Mn (R),

tales que
A = QR. (5.5)

Bosquejo de la demostración. Como A es de rango completo, las columnas de A, que


denotamos por A(1) , . . . , A(n) , forman una base de col(A), y podemos aplicar el Teorema
A.4.1 a ellas. En particular, el proceso de ortonormalización de Gram-Schmidt produce
un conjunto ortonormal {u1 , . . . , un } ⊂ Rm tal que [u1 , . . . , un ] = col(A).
Definimos Q ∈ Mm×n (R) como la matriz que se forma “colgando” estos vectores, esto es,
tal que Q(j) := uj para j = 1, . . . , n. Además, definimos R = (rij ) ∈ Mn (R) mediante
 (j)
A · ui si i ≤ j,
rij =
0 si i > j.
Es claro que, por construcción, Q es ortogonal y R es triangular superior. Siguiendo la
demostración del Teorema A.4.1 se deduce que se cumple la igualdad (5.5).

129
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Observación 5.3.2 (versiones económica y completa). La factorización del Teorema 5.3.1


es la llamada descomposición QR económica, en la que Q es una matriz rectangular y
R es cuadrada. Existe también la llamada descomposición QR completa, que consiste en
tomar Q ∈ Mm (R) ortogonal y R ∈ Mm×n (R) de modo que valga (5.5). La factorización
completa se puede lograr completando las columnas de la matriz ortogonal dada por la
económica de acuerdo al punto 2 en la Observación 5.3.1, y a la matriz R se le agregan
ceros desde la fila n + 1 en adelante.
Sean Q, R las matrices dadas por una descomposición completa de una matriz A ∈
Mm×n (R). Denotamos por Q(1:n) ∈ Mm×n (R) y Q(n+1:m) ∈ Mm×(m−n) (R) a las matrices
que corresponden a tomar las primeras n y las últimas m − n columnas de Q respectiva-
mente, y por R(1:n) ∈ Mn (R) y R(n+1:m) ∈ M(m−n)×n (R) a las matrices que corresponden
a tomar las primeras n y las últimas m − n filas de R respectivamente. Como R es trian-
gular superior, tiene que ser R(n+1:m) = O(m−n)×n , la matriz nula en M(m−n)×n (R). Por
lo tanto, tenemos
 
R (1:n)
= Q(1:n) R(1:n) .
 (1:n) 
A = QR = Q Q(n+1:m)
O(m−n)×n
Deducimos, entonces, que la submatriz Q(n+1:m) no juega ningún papel en el producto QR,
lo que muestra que la descomposición QR completa no es única. De hecho, la factorización
A = Q(1:n) R(1:n) es precisamente la descomposición QR económica de A. 4
En Octave, la función qr computa una descomposición completa de la matriz que le
ingresemos como entrada. Opcionalmente, se puede ingresar el argumento ‘econ’, que
permite computar la descomposición económica.

5.3.1. Aplicación de QR a mı́nimos cuadrados


Con el Teorema 5.3.1 a mano, nos preguntamos cómo se lo puede usar para resolver pro-
blemas de mı́nimos cuadrados. Consideramos un sistema Ax = y, donde A ∈ Mm×n (R),
m > n, rg(A) = n, y supongamos que ya tenemos una descomposición completa A = QR.
En particular, como R ∈ Mm×n (R) es triangular superior, la podemos escribir como
 
R(1:n)
R= ,
O(m−n)×n
donde R(1:n) ∈ Mn (R) es triangular superior y cuadrada, y O(m−n)×n denota la matriz
nula en M(m−n)×n (R). Dado x ∈ Rn , escribimos el cuadrado de la norma euclı́dea del
residuo, usamos la factorización QR de A y el hecho de que Q ∈ Mm (R) es una matriz
ortogonal (Observación 5.3.1),
krk22 = kAx − yk22 = kQRx − yk22 = kQt (QRx − y)k22 = kRx − Qt yk22 . (5.6)
A continuación, dado un vector z ∈ Rm , lo descomponemos como
 
z(1:n)
z= ,
z(n+1:m)

130
Métodos Numéricos Facultad de Ingenierı́a – IMERL

donde z(1:n) ∈ Rn y z(n+1:m) ∈ Rm−n , esto es, z(1:n) tiene las primeras n coordenadas de z
y z(n+1:m) las últimas m − n. Es simple verificar que4
kzk22 = kz(1:n) k22 + kz(n+1:m) k22 .
En particular, observemos que al aplicar esta forma de descomponer vectores nos da
(Rx)(1:n) = R(1:n) x y (Rx)(n+1:m) = O(m−n)×n x = 0 y por lo tanto, volviendo a (5.6),
tenemos
krk22 = kRx − Qt yk22 = kR(1:n) x − (Qt y)(1:n) k22 + k(Qt y)(n+1:m) k22 . (5.7)
Esto quiere decir que el cuadrado de la norma euclı́dea del residuo –cantidad que queremos
minimizar– se puede escribir como la suma de dos términos: el primero depende del vector
de parámetros x, pero el segundo no. Por lo tanto, la solución del problema de mı́nimos
cuadrados es aquel x∗ ∈ Rn que logre que k(Rx)(1:n) − (Qt y)(1:n) k22 sea lo menor posible.
Sin embargo, el sistema
R(1:n) x = (Qt y)(1:n)
es un sistema cuadrado y triangular superior: lo podemos resolver usando una sustitución
hacia atrás (Sección 2.2.1) sin pasar por ningún problema de condicionamiento. Resolver
este sistema nos da la solución x∗ ∈ Rn .
En resumen, dada la factorización A = QR de una matriz de rango completo, para hallar
x∗ = arg mı́nn kAx − yk22 ,
x∈R

procedemos de la siguiente manera:

computamos el vector Qt y;
resolvemos el sistema Rx = (Qt y)(1:n) usando sustitución hacia atrás para hallar la
solución de mı́nimos cuadrados x∗ ;
si nos interesa el valor mı́nimo de la norma euclı́dea del residuo, ésta es igual a
k(Qt y)(n+1:m) k2 .
Ejemplo 5.3.1 (ajuste lineal con QR). Volvemos a hacer el Ejemplo 5.2.1, pero esta
vez aplicando el método que recién describimos. Usamos el comando [Q,R] = qr(A) en
Octave5 para obtener
   
0 −0,8367 −0,3858 −0,3888 −3,7417 −1,6036
−0,2673 −0,4781 0,2246 0,8060   0 −1,1952
Q= −0,5345 −0,1195 0,7082 −0,4455
, R =  .
 0 0 
−0,8018 0,2390 −0,5470 0,0283 0 0
Por lo tanto, podemos hallar la solución de nuestro problema con los comandos
4
Con la sutileza de que las tres normas que aparecen en la igualdad son en espacios distintos: la
primera es en Rm , la segunda en Rn , y la tercera en Rm−n .
5
En la Sección 5.3.2 estudiamos cómo computar esta factorización en forma estable.

131
Métodos Numéricos Facultad de Ingenierı́a – IMERL

>> z = Q’*y;
>> x = R(1:2, 1:2) \ z(1:2);

La solución es x = [1.7500; -1.0000], que coincide con la que hallamos anteriormente.


Como verificación de la fórmula (5.7), computando el residuo
q Ax - y obtenemos el vector
3
[0,0000; −0,2500; 0,5000; −0,2500], cuya norma euclı́dea es 8
≈ 0,6124. Si escribimos el
comando norm(z(3:4)), obtenemos este mismo resultado. 4

Observación 5.3.3 (problemas con rango deficiente). Si rg(A) < n en el Teorema 5.3.1,
aún ası́ existe la factorización QR, pero naturalmente en ese caso no podemos esperar que
R sea invertible. De acuerdo a lo que comentamos en la Observación 5.2.1, un problema
de mı́nimos cuadrados que involucre a la matriz A no tiene solución única. En la práctica,
el rango de una matriz no es algo tan claro; una matriz que con aritmética real es de
rango completo, no tiene por qué serlo en aritmética de punto flotante. Si un problema de
mı́nimos cuadrados está cerca de ser de rango deficiente, en la práctica se pueden utilizar
variantes al método de computar la factorización QR como realizar pivoteo por columnas.
No vamos a tratar ese tipo de métodos en este curso, y para problemas de rango deficiente
o casi de rango deficiente proponemos aplicar la factorización SVD que describiremos en
el Capı́tulo 6. 4

5.3.2. Transformaciones de Householder


La sección anterior describió cómo se puede aprovechar la descomposición de QR para
resolver problemas de mı́nimos cuadrados de rango completo en forma estable y eficiente.
Una pregunta natural y que no hemos abordado aún es cómo computar la factorización
QR de una matriz dada. La demostración del Teorema 5.3.1 sugiere usar el método de
ortogonalización de Gram-Schmidt. Sin embargo, una aplicación directa del método tal
como lo describimos en la Sección A.4 no es satisfactoria desde el punto de vista compu-
tacional: la ortogonalidad entre los vectores computados se pierde fácilmente debido a
errores de redondeo. Existe una versión modificada del algoritmo que permite corregir
este problema [Hea02, Sección 3.5.3], pero aquı́ en cambio vamos a discutir otro método
de ortogonalización para resolver problemas de mı́nimos cuadrados y, de paso, computar
factorizaciones QR. Comenzamos con una definición clave.

Definición 5.3.2 (reflexión de Householder). Dado u ∈ Rm \{0}, la reflexión (o trans-


formación) de Householder asociada a u es una matriz H ∈ Mm (R) de la forma

H := I − ρuut , (5.8)

donde ρ := 2/kuk22 . 4

En forma un tanto vaga, vamos a usar la expresión reflexión de Householder para referirnos
tanto a la transformación lineal T : Rm → Rm dada por T x = Hx como a su matriz

132
Métodos Numéricos Facultad de Ingenierı́a – IMERL

asociada H. Las reflexiones de Householder son, entonces, matrices que se pueden escribir
uut
como la resta de la matriz identidad en Mm (R) menos la matriz 2 kuk 2 , que es de rango
2
6 u u
uno , y que también se suele escribir como 2 kuk2 ⊗ kuk2 .
Observación 5.3.4. En este punto, puede ser instructivo computar las imágenes de algunos
vectores por una transformación de Householder. Sea H la transformación de Householder
asociada a un cierto vector u ∈ Rm . Podemos calcular imágenes usando la definición (5.8).
Por un lado, vectores de la forma v = αu con α ∈ R se transforman en

Hv = (I − ρuut )v = αu − ρuαkuk22 = αu − 2αu = −v.

Por otro lado, si v ∈ Rm es un vector ortogonal a u, esto es, hu, vi = ut v = 0, entonces

Hv = (I − ρuut )v = v − ρuut v = v.

Por lo tanto, parece que la transformación de Householder asociada a u es una simetrı́a


respecto al complemento ortogonal de u: todo vector que sea colineal con u es enviado a su
opuesto, mientras que todo vector que sea ortogonal a u permanece inafectado por H. La
Figura 5.3 da una interpretación gráfica de este hecho, que a continuación demostramos
con mayor rigurosidad. 4

Lema 5.3.2 (simetrı́a y ortogonalidad). Dado u ∈ Rm \ {0}, la matriz H definida por


(5.8) es simétrica y ortogonal.

Demostración. Sea H ∈ Mn (R) dada por (5.8). Comenzamos verificando la simetrı́a de


H, y para ello notamos que (uut )t = (ut )t ut = uut y por lo tanto

H t = I t − (ρuut )t = I − ρ(uut )t = I − ρuut = H.

Para probar que H es ortogonal, utilizamos la caracterización que nos da el punto 3. de


la Observación 5.3.1 y computamos

H t H = HH t = HH = (I − ρuut )(I − ρuut ) = I − 2ρuut + ρuut ρuut .

Analicemos el último término en la fórmula anterior. Como ρ ∈ R, podemos agrupar los


factores en ρ, y tenemos ρ2 = 4/kuk42 Además, ut u = kuk22 , por lo que este factor también
es un número real,
4 4
ρuut ρuut = ρ2 u(ut u)ut = 4
kuk22 uut = uut = 2ρuut .
kuk2 kuk22

Concluimos entonces que H es invertible y que H −1 = H t , por lo que es una matriz


ortogonal.
6
Que esta matriz es de rango uno se deduce fácilmente del hecho de que cada fila es un múltiplo de
t
u o de que cada columna es un múltiplo de u.

133
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Una consecuencia inmediata del lema anterior y de la Observación 5.3.1 es que si H ∈


Mm (R) es de Householder, entonces vale la propiedad

kHxk2 = kxk2 ∀x ∈ Rm .

Dada H como en (5.8) y x ∈ Rm , ¿cómo calculamos Hx? Aquı́ es importante recordar


la noción de proyección ortogonal (Definición A.4.2); dado u ∈ Rm \ {0}, denotamos por
U := [u] al subespacio de Rm generado por u. Entonces, tenemos
uut x hu, xi
Hx = (I − ρuut )x = x − 2 = x − 2 u,
kuk22 hu, ui
hu,xi
donde usamos que ut x = hu, xi ∈ R. Luego, como PU (x) = hu,ui
u, encontramos la
identidad
Hx = x − 2PU (x).
La Figura 5.3 ilustra la situación: al hacer Hx tomamos el vector x, le restamos una
vez PU (x), lo que nos llevarı́a a la proyección sobre U ⊥ , y al resultado nuevamente le
restamos PU (x), lo que da lugar al vector simétrico a x respecto a U ⊥ . Esto justifica el
uso de la palabra reflexión: la reflexión de Householder con vector u es la simetrı́a
respecto al subespacio U ⊥ .

−PU (x)

u x − PU (x)

U ⊥ = [u]⊥ −PU (x)

Hx = x − 2PU (x)

Figura 5.3: La imagen de un vector x mediante una reflexión de Householder con vector
u es la simetrı́a de x respecto al subespacio [u]⊥ .

Controlando la imagen de un vector dado

Las reflexiones de Householder ofrecen una alternativa computacionalmente estable para


computar la factorización QR de una matriz dada A. El método de ortogonalización de
Gram-Schmidt, que describimos en la demostración del Teorema A.4.1, se enfoca en ir
construyendo secuencialmente las columnas de la matriz Q, y la matriz R se obtiene a par-
tir de los coeficientes obtenidos. En cambio, al usar las transformaciones de Householder

134
Métodos Numéricos Facultad de Ingenierı́a – IMERL

nos vamos a enfocar en construir secuencialmente las columnas de R, y esta construcción


nos permitirá obtener la matriz Q.
Comencemos con el siguiente problema: dado un vector x ∈ Rm , buscamos un vector
u ∈ Rm tal que la reflexión de Householder asociada a u logre que Hx esté en uno de los
ejes coordenados. Para fijar ideas, pongamos que queremos
Hx = αek , para algún k ∈ {1, . . . , m}, α ∈ R.
Como H preserva la norma euclı́dea, necesariamente tiene que ser kxk2 = kHxk2 =
kαek k2 = |α|. Por otra parte, necesitamos que u bisecte uno de los ángulos formados por
[x] y el eje [ek ]: veamos que basta con tomar u = x + σek , donde σ = ±kxk2 . En efecto,
definamos τ := ρut x, de modo que Hx = x − τ u. Por un lado, calculamos
kuk22 = hx + σek , x + σek i = kxk22 + 2σxk + σ 2 = 2σ(σ + xk ), xk := hx, ek i,
y por lo tanto
2 1
ρ= 2
= .
kuk2 σ(σ + xk )
Por otro lado,
ut x = hx + σek , xi = kxk22 + σxk = σ(σ + xk ).
Deducimos que τ = 1 y, en consecuencia, Hx = x − u = x − (x + σek ) = −σek .
Naturalmente, tenemos dos posibles elecciones de σ que logran que Hx esté en el eje
k-ésimo. Para reducir posibles problemas de cancelación, en la práctica se suele preferir
σ de modo que sgn σ = sgn xk : con esto, al tomar u = x + σek , en la coordenada k-ésima
tenemos dos sumandos de igual signo.

Aplicación para obtener una factorización QR

Ahora estamos en condiciones de describir cómo utilizar las reflexiones de Householder


para tratar problemas de mı́nimos cuadrados lineales. Para fijar ideas, pensemos en que
dada A ∈ Mm×n (R) con m > n, queremos hallarle una factorización QR completa. La idea
es aplicar una sucesión de reflexiones de Householder para construir matrices ortogonales
y simétricas H1 , . . . , Hn ∈ Mm (R) de forma que
Hn . . . H1 A =: R sea triangular superior. (5.9)
Como el producto e inversa de matrices ortogonales es una matriz ortogonal, tenemos
A = QR con
Q := (Hn . . . H1 )−1 = H1−1 . . . Hn−1 = H1t . . . Hnt = H1 . . . Hn .

Dada A ∈ Mm×n (R) con m ≥ n, consideremos su primera columna A(1) ∈ Rm . Definimos


H1 ∈ Mm (R) como una reflexión de Householder que cumpla
H1 A(1) = ±kA(1) k2 e1 .

135
Métodos Numéricos Facultad de Ingenierı́a – IMERL

De acuerdo a nuestra discusión anterior, basta con que H1 sea la transformación de Hou-
seholder asociada al vector u := A(1) ± kA(1) k2 e1 , donde el signo del segundo sumando
se suele tomar igual que el del primer elemento de A(1) . Luego, al hacer esta primera
operación, tendremos
   
±kA(1) k2 ∗ ... ∗ ±kA(1) k2 ∗ . . . ∗
 0 ∗ . . . ∗  0 
A2 := H1 A =  = ∈ Mm×n (R).
   
.. .. Ã2 
 . ∗ . . . ∗  . 
0 ∗ ... ∗ 0

Los ∗ arriba denotan elementos que no necesariamente son nulos. Observemos que la
primera columna de A2 solamente tiene un elemento no nulo en su primer entrada, por lo
que es la primera columna de una matriz triangular superior. Sea Ã2 ∈ M(m−1)×(n−1) (R)
la matriz que se obtiene al quitar la primera fila y la primera columna de A2 .
A continuación, consideramos una transformación de Householder H̃2 ∈ Mm−1 (R) que
mande la primera columna de Ã2 en el primer vector de la base canónica de Rm−1 ,

(1) (1)
H̃2 Ã2 = ±kÃ2 k2 e1 ,

y definimos H2 ∈ Mm (R) mediante


 
1 0 ... 0
 0 
H2 :=  .
 
.. H̃2 
 . 
0

Remarcamos que H̃2 es de Householder, pero H2 no lo es. De todos modos, es sencillo


verificar que H2 es una matriz ortogonal y simétrica.
De este modo, logramos

±kA(1) k2

∗ ∗ ... ∗
(1)

 0 kÃ2 k2 ∗ . . . ∗ 

A3 := H2 H1 A = 
 0 0 ,

 .. .. 
 . . Ã3 
0 0

con Ã3 ∈ M(m−2)×(n−2) (R). Notemos que las dos primeras columnas en A3 se correspon-
den a las primeras dos columnas de una matriz triangular superior. Siguiendo con este
procedimiento, luego de n pasos se obtiene (5.9). Concretamente, en el paso k-ésimo,

136
Métodos Numéricos Facultad de Ingenierı́a – IMERL

tenemos  
±kA(1) k2 . . . ∗ ∗ ... ∗
 ... 
 0 ∗ ∗ ... ∗ 
(1)
 
 0 . . . kÃk−1 k2 ∗ . . . ∗ 
Ak :=  ,

 0 ... 0 

.. ..
Ãk
 
 . . 
0 ... 0
y tomamos la matriz ortogonal y simétrica
 
Ik−1 O(k−1)×(m−k+1)
Hk := ,
O(k−1)×(m−k+1) H̃k

donde H̃k ∈ Mm−k+1 (R) es la transformación de Householder que manda la primera


columna de Ãk en el primer vector de la base canónica de Rm−k+1 .

Aplicación a la resolución de problemas de mı́nimos cuadrados lineales

En problemas de mı́nimos cuadrados de rango completo, podemos usar las transformacio-


nes de Householder para resolver los sistemas en forma estable y sin necesidad de computar
la factorización QR de la matriz del problema. En efecto, dada A ∈ Mm×n (R), si tene-
mos el problema Ax = y al que queremos resolver en el sentido de mı́nimos cuadrados,
aplicamos las n reflexiones de Householder que nos llevan a (5.9) y tenemos

Ax = y ⇒ Hn . . . H1 Ax = Hn . . . H1 y =: z ⇒ Rx = z.

La matriz R ∈ Mm×n (R) resultante es triangular superior, por lo que estamos nuevamente
en una situación como en la Sección 5.3.1: para hallar x, nos basta con restringirnos a
las primeras n filas del sistema anterior y hacer una sustitución hacia atrás. La norma
euclı́dea del residuo mı́nimo es igual a la norma euclı́dea del vector formado por las últimas
n − m + 1 entradas de z.

Ejemplo 5.3.2 (transformaciones de Householder). La matriz de diseño A del Ejemplo


5.2.1/5.3.1 está dada por (5.4). Consideramos su primera columna,
 
0
1 √
A(1) 2 ,
=  kA(1) k2 = 14.
3

Por lo tanto, tomamos H1 como la transformación de Householder asociada al vector7


7

En este caso, como el primer elemento de A(1) es nulo, es igualmente válido tomar u := A(1) − 14 e1 .

137
Métodos Numéricos Facultad de Ingenierı́a – IMERL


u := A(1) + 14e1 , esto es,
 
0 −0,2673 −0,5345 −0,8018
2uut  −0,2673 0,9286 −0,1429 −0,2143 .

H1 := I − =
kuk22 −0,5345 −0,1429 0,7143 −0,4286
−0,8018 −0,2143 −0,4286 0,3571
Al hacer H1 A en Octave, obtenemos la matriz
 
−3,7417 −1,6036
−0,0000 0,3042 
A2 = 
−0,0000
.
−0,3917
−0,0000 −1,0875
Notamos que, a menos de errores de redondeo (las entradas son del orden de 10−15 ), la
primera columna de esta matriz se corresponde a la de una matriz triangular superior.
A continuación, consideramos la matriz
 
0,3042
Ã2 := −0,3917 ;
−1,0875
(1)
en este caso, esta matriz tiene una única columna. Computamos kÃ2 k2 = 1,1952, consi-
(1)
deramos la transformación de Householder H̃2 asociada al vector u := Ã2 + kÃ2 k2 e1 , y
consideramos
  
1 0 ... 0

1 0 0 0
 0
 0 −0,2545 0,3277 0,9099 
 
H2 :=  .. = .

 . H̃2  0 0,3277 0,9144 −0,2377
0 0 0,9099 −0,2377 0,3401

Haciendo H2 A2 = H2 H1 A en Octave, obtenemos la matriz


 
−3,7417 −1,6036
−0,0000 −1,1952
R= −0,0000 −0,0000 .

−0,0000 −0,0000
A menos de errores de redondeo, esta es la misma matriz R que obtuvimos en el Ejemplo
5.3.1, y es un factor de la descomposición QR de A.
Por otra parte, si computamos z := H2 H1 y para el vector y de datos que definimos en el
Ejemplo 5.2.1 y corresponde al lado derecho del sistema, tenemos
 
−4,9443
 1,1952 
z= −0,4347 .

0,4313

138
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Por lo tanto, para hallar la solución x ∈ R2 al problema de mı́nimos cuadrados, nos basta
con resolver el sistema triangular superior
    
−3,7417 −1,6036 x1 −4,9443
= .
−0,0000 −1,1952 x2 1,1952
 
1,7500
Es inmediato verificar que la solución es x = . Remarcamos que la obtuvimos
−1,0000
sin necesidad de computar la factorización QR de la matriz A. 4

5.4. Mı́nimos cuadrados no lineales


Volvemos a nuestra discusión de la Sección 5.1. Como vimos en el Ejemplo 5.1.1, nos po-
demos encontrar con problemas de ajustar parámetros en los que la dependencia respecto
a éstos es no lineal8 . En esta sección, vamos a analizar un método para tratar este tipo
de problemas.
Tenemos un conjunto de datos {(ti , yi )}i=1,...,m ⊂ R2 y asumimos que existe una función
f : R → R, que depende de ciertos parámetros x1 , . . . , xn , tal que

yi ≈ f (ti ; x), donde x = [x1 , . . . , xn ]t ∈ Rn .

Nuestro problema consiste en elegir “el mejor” conjunto de parámetros, y nuevamente


vamos a interpretar esto como un problema de minimización de la norma euclı́dea del
vector residuo. Asumimos que la función f depende de forma tan regular de los parámetros
x1 , . . . , xn como sea necesario.
Definición 5.4.1 (residuo). Dado un vector x ∈ Rn , definimos el residuo r = r(x) ∈ Rm
como el vector tal que
ri := f (ti ; x) − yi , i = 1, . . . m.
4

En analogı́a con la Definición 5.1.2, nos proponemos hallar

x∗ = arg mı́nn kr(x)k22 . (5.10)


x∈R

Si bien en general no esperamos que r(x∗ ) = 0, razonemos como si esto pudiese ocurrir, y
planteemos el método de Newton-Raphson para esta función. Comenzamos de un iterado
inicial x0 ∈ Rn . Luego, dado xk ∈ Rn , linealizamos la función residuo en dicho vector,
esto es, aproximamos
r(x) ≈ r(xk ) + Jr (xk )(x − xk ).
8
Aquı́, estamos usando la expresión “no lineal” para indicar “no necesariamente lineal”. El método
que presentamos es aplicable al caso en que la dependencia respecto a algunos parámetros es lineal y
respecto a otros no lo es, como en varios de los modelos que mencionamos en el Ejemplo 5.1.1.

139
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Notemos que la función residuo r(xk ) es la resta de un término que depende de xk y otro
que no, por lo que Jr (xk ) = Jf (xk ), donde f : Rn → Rm es tal que

fi (x) := f (ti ; x), i = 1, . . . m.

Para definir los iterados, igualamos la linealización del residuo al vector nulo: tomamos
xk+1 tal que
r(xk ) + Jr (xk )(xk+1 − xk ) = 0.

En otras palabras, esto nos conduce a definir xk+1 mediante

Jf (xk )dk = −r(xk ),


(5.11)
xk+1 := xk + dk .

Este es el llamado método de Gauss-Newton. Como r : Rn → Rm , tenemos Jr (xk ) ∈


Mm×n (R) y, por lo tanto, en cada paso (5.11) implica que el incremento dk es la solución
de un problema de mı́nimos cuadrados lineal. En otras palabras, el método de Gauss-
Newton propone aproximar la solución de un problema de mı́nimos cuadrados no lineal
mediante una sucesión de problemas de mı́nimos cuadrados lineales, en la que tanto las
matrices como los vectores de datos se deben ir actualizando en cada paso. El Algoritmo
5.1 muestra un pseudo-código que lo implementa.
Algoritmo 5.1: Pseudo-código: Gauss-Newton.
Datos: {(ti , yi )}i=1,...,m ⊂ R2 con yi ≈ f (ti ; x) para x ∈ Rn , tol> 0, max it> 0
Resultado: vector x que satisface el criterio de parada que impongamos
x ← x0 ;
mientras [criterio de parada] ≥ tol & k < max it hacer
b ← y − f (x) % notar que b = -r(x) ;
A ← Jf (x);
d ← solución del problema de mı́nimos cuadrados lineal Ad = b;
x ← x + d;
k ← k + 1;
fin

Como en cada paso debemos resolver un problema de mı́nimos cuadrados lineal, podemos
usar cualquiera de los métodos que analizamos en las secciones anteriores de este capı́tulo.
Al ser un método de tipo Newton-Raphson, en caso de que el problema (5.10) tenga
solución, se puede probar la convergencia si el iterado inicial está lo suficientemente cerca
de dicha solución. Asimismo, se podrı́an considerar variantes en el espı́ritu de las que
describimos en la Sección 4.8.3, como introducir amortiguamientos, evitar computar las
jacobianas en cada paso, o ir haciendo actualizaciones de rango bajo.

Ejemplo 5.4.1 (Gauss-Newton). Consideramos los siguientes datos:

140
Métodos Numéricos Facultad de Ingenierı́a – IMERL

t y
0 2
1 0.7
2 0.3
3 0.1

Queremos ajustarlos mediante un modelo de la forma


y ≈ f (t; x) = x1 etx2 ,
con parámetros x = [x1 , x2 ]t . Comenzamos con el iterado inicial x0 = [1, 0]t , y mostramos
cómo se computa x1 . Siguiendo los pasos delineados en el Algoritmo 5.1, computamos el
vector
   0 t1 xO     
2 x1 e 2 2 − 1e0 1
0
0,7 x01 et2 xO2  0,7 − 1e0  −0,3
b := −r(x ) = y − f (x) =  0,3 − x0 et3 xO2  = 0,3 − 1e0  = −0,7 .
      
1
0,1 O
x01 et4 x2 0,1 − 1e0 −0,9

Por otra parte, computamos la matriz


 ∂f ∂f
  O
0 0 t1 xO
(t ; x ) (t ; x ) et1 x2 t1 xO
  
1 e 1 0
1 1 2
∂x ∂x
 ∂f1 (t ; x0 ) ∂f2 (t ; x0 )  t2 xO2 O t2 xO
 1 2 ∂x2 2  e t2 x1 e 2
 = 1
  1
A = Jf (x0 ) =  ∂x
∂f 0 ∂f 0  =  t3 xO O t3 xO  1
,
 ∂x1 (t3 ; x ) ∂x2 (t3 ; x ) e 2 t3 x1 e 2 2
∂f ∂f O O t4 xO
0
(t ; x ) ∂x2 (t4 ; x ) 0
et4 x2 t4 x1 e 2 1 3
∂x1 4

y debemos resolver el problema de mı́nimos cuadrados Ad = b. La solución de este pro-


blema es d = [0,69, −0,61]t , por lo que el siguiente iterado es x1 = x0 + d = [1,69, −0,61]t .
Implementamos en Octave el Algoritmo 5.1 con el criterio de parada kdk2 < 10−6 y comen-
zando de x0 = [1, 0]t . El algoritmo termina en 7 pasos, y computa xk = [1,9950, −1,0095]t .
La Figura 5.4 muestra los datos y el ajuste resultante, f (t) = 1,9950 · e−1,0095 t .

Figura 5.4: Solución mediante el método de Gauss-Newton a un problema de mı́nimos


cuadrados no lineal.

141
Métodos Numéricos Facultad de Ingenierı́a – IMERL

142
Capı́tulo 6

Descomposición SVD

Como ya vimos en los capı́tulos 2 y 5, las descomposiciones matriciales juegan un papel


preponderante en el álgebra lineal numérica, y permiten computar soluciones a diferentes
problemas de forma eficiente y estable. En la Sección 2.3, discutimos la descomposición
LU, que permite descomponer matrices no singulares, y en la Sección 5.3, la factori-
zación QR, que usamos para descomponer matrices A ∈ Mm×n (R), con m ≥ n tales
que rg(A) = n (es decir, de rango completo). En caso de considerar matrices de rango
deficiente (aquellas que cumplen rg(A) < n), debemos recurrir a otra factorización: la
descomposición en valores singulares (SVD, por sus siglas en inglés).
Recordamos que el Teorema Espectral indica que cualquier matriz simétrica S ∈ Mn (R)
puede descomponerse como S = P DP t donde D es diagonal y P es ortogonal. Por otra
parte la Observación 2.5.3 afirma que dada una matriz A ∈ Mm×n (R), la matriz At A es
simétrica y semidefinida positiva. Por lo tanto, existen matrices P ∈ Mn (R) ortogonal y
D ∈ Mn (R) diagonal tales que
At A = P DP t .
Además, que At A sea semidefinida positiva implica que sus valores propios λ1 , . . . , λn son
mayores o iguales a cero.

Definición 6.0.1
√ (valores singulares). Con la notación de arriba, los valores singulares
de A son σi := λi , i = 1, . . . , n. 4

Observación 6.0.1 (rango y valores singulares). Si A ∈ Mm×n (R) tiene rango r ≤


mı́n{m, n}, entonces como rg(At A) = rg(A), deducimos que A tiene r valores singula-
res estrictamente positivos. En particular, si A ∈ Mn (R) es cuadrada y tiene al menos
un valor singular nulo, entonces A es singular. 4

El siguiente teorema, que no vamos a demostrar, indica que cualquier matriz A ∈


Mm×n (R) se puede descomponer como un producto entre matrices ortogonales (no nece-
sariamente iguales) y una matriz diagonal que contiene a los valores singulares de A.

143
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Teorema 6.0.1 (descomposición SVD). Dada A ∈ Mm×n (R), con rg(A) = r, existen
U ∈ Mm (R), V ∈ Mn (R) ortogonales y Σ ∈ Mm×n (R) diagonal tales que

A = U ΣV t (6.1)

y Σ es de la forma
 
σ1 0 . . . 0
. .
 0 σ2 . . .. 
 
Σr Or×(n−r)

Σ= , con Σr =  . .  ∈ Mr (R),
O(m−r)×r O(m−r)×(n−r)  .. .. ... 0 
0 . . . 0 σr

y σ1 ≥ . . . σr > 0 son los valores singulares no nulos de A.

No vamos a probar la existencia de dicha factorización, ni entrar en detalles sobre cómo


computarla explı́citamente. El lector interesado puede consultar [GVL13, Sección 2.4]
para una demostración del Teorema 6.0.1, y [QSS10, Sección 5.8.3] para una técnica que
permite computar la descomposición.
Observación 6.0.2 (no unicidad). En la factorización (6.1), los elementos de Σ están única-
mente determinados por A, y se los suele escribir en orden descendiente. De todos modos,
aún si usamos la convención de ordenar los elementos de la diagonal de Σ, las matrices
U, V en la factorización SVD no son únicas. 4

Interpretemos la descomposición SVD geométricamente. Dada A ∈ Mm×n (R), el producto


Ax toma un vector x ∈ Rn y produce un vector y = Ax ∈ Rm . Ahora, si tomamos la
descomposición SVD de A, A = U ΣV t , tenemos que Ax = U ΣV t x. Si nos centramos en
los vectores x en la esfera unitaria, esto es, con ||x||2 = 1, la ortogonalidad de V implica
que
kV t xk2 = hV t x, V t xi = (V t x)t (V t x) = xt V t V x = xt x = 1.
Por lo tanto, para todo vector x en la esfera unitaria, también se tiene que V t x está en
la esfera unitaria. Si llamamos z := V t x y le aplicamos Σ, observamos que
     0
σ1 0 σ1 z1 x1
.. ..   .. 

 .  
 z1

 .  .

σ   ..  σr zr  x0r 
     
r
Σz =   .  =   =  .

 0   0  0
 zn
...   .  .
 ..   .. 


0 0 0 0
 0 2  0 2
x1
Ahora, como z tiene norma 1, + · · · + σxrr
σ1
= 1, y por lo tanto los vectores
de la esfera en R son transformados a vectores en un elipsoide r-dimensional en Rm .
n

Finalmente, como U es otra matriz ortogonal, observamos que no cambiará el tamaño

144
Métodos Numéricos Facultad de Ingenierı́a – IMERL

y solamente causará otro cambio de base. En resumen, si A ∈ Mm×n (R), entonces A


aplicada a la esfera unitaria en Rn resulta en un elipsoide r-dimensional rotado en Rm ,
de semiejes σ1 , . . . , σr , y los σi son los valores singulares no nulos de A.
La Figura 6.11 ilustra esta interpretación en R2 : la matriz A transforma el cı́rculo unitario
en una elipse, y se indica cómo se transforman los vectores de la base canónica de R2 .

Figura 6.1: Factorización SVD.

6.1. Aplicaciones de SVD


La factorización SVD tiene numerosas aplicaciones interesantes en diversas áreas de la in-
genierı́a, desde procesamiento de señales hasta aprendizaje automático. Aquı́ comentamos
algunas de las más relevantes. Recomendamos el video [Mol20] para ver una perspectiva
histórica y conocer otras aplicaciones.

6.1.1. Computar rangos, espacios de columnas y núcleos de ma-


trices.
El rango de una matriz es coincide con la cantidad de valores singulares no nulos que
tiene, y la factorización SVD proporciona un método excelente para computar rangos.
Sin embargo, en la práctica, si queremos determinar computacionalmente el rango de una
cierta matriz dada, los errores asociados a la aritmética de punto flotante hacen que esto
no sea tan claro. Para calcular rangos, la función de Octave rank considera nulos todos
aquellos valores singulares que estén por debajo de un cierto umbral.
1
Adaptada de Georg-Johann, CC BY-SA 3.0, via Wikimedia Commons.

145
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Contar con la factorización SVD (6.1) de una cierta matriz A ∈ Mm×n (R) también
permite determinar de forma elegante y eficiente los espacios col(A) y ker(A). En efecto,
si rg(A) = r, entonces el espacio de columnas de A (o equivalentemente, la imagen de A)
está generado por las primeras r columnas de U ,

col(A) = [U (1) , . . . , U (r) ],

e incluso ese conjunto nos da una base ortonormal de col(A). Por otra parte, el núcleo de
A está dado por las últimas n − r columnas de V ,

ker(A) = [V (n+1−r) , . . . , V (n) ],

y este conjunto es una base ortonormal de ker(A). Las funciones de Octave orth y null
usan la factorización SVD para devolver respectivamente estas bases ortonormales del
espacio de columnas y del núcleo de A.

6.1.2. Aproximaciones de rango bajo.


Otra forma de escribir la factorización (6.1) es como una suma,

A = U ΣV t = σ1 E1 + . . . + σn En , (6.2)

donde Ei = U (i) (V (i) )t ∈ Mm×n (R) es una matriz de rango 1. La expresión (6.2) permite
realizar aproximaciones de rango bajo de la matriz A al tomar algunos de los sumandos.
De hecho, teniendo en cuenta nuestra convención de ordenar los valores singulares en
forma decreciente, esto produce una mejor aproximación en el siguiente sentido.

Teorema
Pk 6.1.1 (Eckhart-Young). Dados A ∈ Mm×n (R) y k < r := rg(A), sea Ak :=
σ E
i=1 i i definida a partir de tomar los primeros k sumandos en (6.2). Entonces,

mı́n kA − Bk2 = kA − Ak k2 = σk+1 ,


B∈Mm×n (R), rg(B)=k

donde k · k2 denota la norma operador en Mm×n (R) asociada a la norma euclı́dea (Defi-
nición 2.5.1).

Este teorema tiene diversas aplicaciones. Como primer ejemplo, consideremos la compre-
sión de imágenes. Digitalmente, una imagen en blanco y negro se suele representar como
una matriz de dimensiones m × n. Cada entrada de dicha matriz representa un pı́xel,
y suele tomar valores entre 0 (negro) y 255 (blanco). La figura 6.2 muestra un ejemplo
simple de representación matricial de una imagen. El Teorema 6.1.1 nos brinda una forma
de comprimir nuestra imagen al hacer aproximaciones de rango bajo. La Figura 6.3 nos
muestra un ejemplo.

146
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Figura 6.2: Representación matricial de una imagen en blanco y negro.

Figura 6.3: Compresión de una imagen: la original (1440 × 1920 pı́xeles) está abajo a la
derecha. Mostramos las aproximaciones dadas por el Teorema 6.1.1 de rangos k = 10
(arriba izquierda), k = 50 (arriba derecha) y k = 200 (abajo izquierda).

6.1.3. Análisis de componentes principales.


El Análisis de componentes principales (o Principal Component Analysis) es una técnica
estadı́stica para reducir la dimensionalidad de un conjunto de datos; hoy en dı́a encuen-
tra numerosas aplicaciones en ciencia de datos y en machine learning, por ejemplo en
visualización de datos, clustering, o detección de anomalı́as. No vamos profundizar sobre
esta técnica; brevemente, indicamos que permite describir dicho conjunto de datos en
función de nuevas variables no correlacionadas, llamadas componentes principales. Estas

147
Métodos Numéricos Facultad de Ingenierı́a – IMERL

componentes principales son un conjunto de k vectores unitarios, donde el vector i-ésimo


se toma como el que produce el mejor ajuste a los datos entre todos los vectores que son
ortogonales al espacio generado por los primeros i − 1 vectores. En términos de la SVD, si
tenemos una matriz A ∈ Mm×n (R), a la que factorizamos A = U ΣV t , sus componentes
principales son las columnas de V .
El análisis de componentes principales se utiliza para crear modelos predictivos, o para
reducir la dimensionalidad de los datos: esto se logra proyectando cada dato solamente
en las primeras componentes principales, y permite obtener un conjunto de datos de
dimensiones inferiores que “mejor aproxima” al conjunto de datos original. Ilustramos sus
capacidades con un ejemplo muy sencillo.
Ejemplo 6.1.1 (análisis de componentes principales). La siguiente tabla muestra la al-
tura, peso, y perı́metro cefálico de un conjunto de 10 bebés de 1 año.

# Bebé Peso (kg) Altura (cm) Per. cefálico (cm)


1 10.91 79.2 48.7
2 9.94 77.5 45.9
3 9.34 72.4 44.2
4 10.11 76.0 45.8
5 9.59 76.7 45.3
6 9.67 73.5 44.9
7 11.58 78.9 48.2
8 9.94 75.9 43.8
9 10.39 75.4 47.5
10 8.84 72.7 42.8

Visualizar estos datos como puntos en R3 no necesariamente serı́a de mucha ayuda para
interpretarlos. Parece claro que las tres mediciones deben estar correlacionadas de alguna
forma: deberı́a haber una componente, llamémosla el tamaño, que permita explicar buena
parte de las diferencias entre el peso, altura y perı́metro cefálico de cada bebé. Colocamos
nuestros datos en una matriz, la centramos y hacemos que tenga varianza 1 en cada fila2
para obtener una matriz A ∈ M3×10 (R), a la que le aplicamos la factorización SVD,
A = U ΣV t . Obtenemos los valores singulares
σ1 = 4,9085, σ2 = 1,4182, σ3 = 0,9463.
Como σ1 es bastante mayor que los otros dos valores singulares, parece que buena parte
de la variabilidad de nuestros datos puede ser explicada por un solo factor (el tamaño).
Tomamos esta componente principal, es decir, la primer columna de V , y, para facilitar
la interpretación de los resultados, la normalizamos para que tenga norma infinito igual
a 1. Obtenemos el siguiente vector:
tamano = [0,90, 0,14, −0,67, 0,05, −0,09, −0,40, 1,00, −0,24, 0,27, −0,95].
2
Este paso es para evitar las distorsiones que nos podrı́a producir el hecho de que distintas mediciones
estén tomadas en unidades distintas y son de magnitudes distintas.

148
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Ası́, parece ser que los bebés número 7 y 1 son los de mayor tamaño, que el último es
el que tiene menor tamaño, y si queremos ver a un bebé de tamaño “medio”, deberı́amos
buscar al número 4 o al 53 . Si queremos hacer un modelo explicativo usando solamente la
variable tamaño, consideramos la aproximación de rango 1 de nuestra matriz de datos,
E1 = σ1 U (1) (V (1) )t .
La Figura 6.4 muestra las mediciones junto a las columnas correspondientes de la matriz
E1 , que nos indica los valores predichos de acuerdo al tamaño de cada bebé. En azul se
muestran las mediciones y en rojo los valores predichos por el tamaño de cada bebé. Por
ejemplo, vemos que para nuestro modelo el bebé número 7 pesa más y mide menos de lo
que predice su tamaño, o que el bebé 9 es un poco cabezón para su tamaño.

Figura 6.4: Datos del Ejemplo 6.1.1. En azul, se representan las mediciones de cada bebé
(de arriba a abajo: peso, altura, perı́metro cefálico), y en anaranjado los valores predichos
de acuerdo al tamaño computado de cada bebé.

Además, podemos aprovechar nuestro análisis para predecir nuevos valores a partir de los
datos que obtuvimos: si conocemos una medida de un bebé, por ejemplo su peso, podemos
calcular su tamaño y luego predecir las otras mediciones. Por ejemplo, si tenemos un bebé
que pesa 10 kg, luego de restar la media de la muestra y normalizar obtenemos que tiene
un peso normalizado de −0,0401. Esta cantidad −0,0401 serı́a la primera entrada en los
datos, y como estamos haciendo una aproximación de rango 1, conocer una entrada de una
columna es suficiente para extrapolar las demás entradas. Ası́, predecimos que el tamaño
de nuestro bebé es
tamaño estimado = −0,0401/U (1, 1) = −0,0681.
3
Para nuestro conjunto de datos, el peso medio es de 10.03 kg, la altura media es de 75.8 cm, y el
perı́metro cefálico medio es de 45.7 cm.

149
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Luego, podemos “completar” los datos faltantes (en unidades normalizadas) haciendo

altura estimada = −0,0681 ∗ U (2, 1) = −0,0384,


per. cefálico estimado = −0,0681 ∗ U (3, 1) = −0,0395,

lo que, al deshacer la normalización nos devuelve una altura estimada de 75.73 cm y un


perı́metro cefálico estimado de 45.64 cm. 4

6.1.4. SVD en sistemas de recomendación


Desde hace algunos años, los sistemas de recomendación forman parte de nuestra vida
cotidiana: los encontramos, por ejemplo, en plataformas de streaming o en tiendas online.
Como caso ilustrativo, supongamos que tenemos una plataforma de pelı́culas, y almace-
namos las calificaciones de nuestros m usuarios a n pelı́culas distintas. Las calificaciones
pueden ser de 1 a 5, y son 0 si el usuario aún no vio una pelı́cula. Una forma sencilla de
modelar esto es generar una matriz A ∈ Mm×n (R), en la que la entrada aij nos indica
qué puntaje le asigna el usuario i a la pelı́cula j.
Como dueños de la plataforma tenemos dos posibilidades claras para usar estos datos,
dependiendo de nuestro modelo de negocio:

Recomendar al usuario. Dado un usuario, determinar qué pelı́cula que no vio le


podrı́a gustar más.

Vender una pelı́cula (o sistemas pay per view ). Dada una pelı́cula, determinar a qué
usuario que no la vio le podrı́a gustar.

Centrémonos en el primer escenario, la recomendación a usuarios, donde la principal he-


rramienta son los datos históricos de valoraciones. Usando éstos deseamos generar nuestras
nuevas recomendaciones. Esto se conoce como filtrado colaborativo.
Dado que algunos usuarios son generosos con las valoraciones y otros estrictos, comen-
zamos ajustando el sesgo: podemos estudiar la desviación del promedio de valoraciones
por usuario en vez de los puntajes asignados por éstos. La matriz normalizada que se
obtiene permite entender más claramente cuánto le gustó (o disgustó) una pelı́cula a un
usuario, tomando en cuenta su sesgo personal. A partir de estra matriz normalizada Ã,
describimos cómo implementar un filtrado colaborativo básico.
Consideremos a los valores de las filas i y j de la matriz à como vectores ui , uj ∈ Rn ,
que corresponden a las valoraciones normalizadas de los usuarios i y j, respectivamente.
Si queremos encontrar usuarios con gustos similares usando ideas geométricas, una forma
sencilla serı́a estudiar la distancia entre vectores: cuanto más cercanos dos vectores, más
similares serán las valoraciones asignadas por los usuarios. El problema con esta idea
radica en que, si un usuario vio una pelı́cula y el otro no, la distancia entre ellos será
grande aunque sus puntuaciones en las demás pelı́culas coincidan. Una forma de mitigar

150
Métodos Numéricos Facultad de Ingenierı́a – IMERL

este problema serı́a considerar únicamente las pelı́culas que ambos puntuaron. Como
queremos un sistema de recomendación, esto no parece una alternativa razonable.
Para remediar esto, podemos usar la regla del coseno en lugar de la distancia. Definimos
la similaridad s entre los usuarios i y j como

uti uj
s(i, j) := ,
kui k × kuj k

donde ui y uj son los vectores de puntajes de los usuarios i y j respectivamente. Con


esta definición, dos usuarios estarán “cerca” en gustos si los puntajes normalizados de las
pelı́culas que fueron vistas por ambos son similares. Para predecir si a un usuario i le
gustará una pelı́cula p, podemos encontrar los k usuarios más similares a i que valoraron
la pelı́cula p, y computar el promedio (ponderando con respecto a la similaridad entre ellos
e i) de sus valoraciones de p. Finalmente, para ver qué pelı́cula recomendar al usuario i,
podemos identificar las pelı́culas que aún no ha puntuado, predecir los puntajes de esta
manera y luego recomendar aquellas con puntajes predichos más altos.
Este filtrado colaborativo básico, si bien intuitivo, tiene la desventaja de escalar muy mal
con sistemas de gran tamaño: si tenemos millones de usuarios y miles de pelı́culas, encon-
trar qué pelı́culas recomendar resulta demasiado costoso. Sin embargo, existe una forma
sencilla y más eficiente de atacar el problema: usar la descomposición SVD. Ilustramos
cómo puede usarse con una implementación concreta.
Dado un conjunto de datos con m usuarios y n pelı́culas, comenzamos creando la matriz
A de valoraciones como antes, donde el lugar ij de la matriz corresponde con el puntaje
que el usuario i le otorga a la pelı́cula j. Para este ejemplo, supongamos que tenemos la
siguiente matriz:

%%Crear la matriz de valoraciones


% Filas = usuarios, Columnas = ı́tems
% Valoraciones de 1-5, 0 = valoración faltante
matriz_valoraciones = [
5 4 0 1 3 2 0 1 0 3; % Usuario 1
4 0 0 1 0 0 2 0 0 0; % Usuario 2
1 1 0 5 1 1 0 2 0 4; % Usuario 3
2 0 0 4 3 5 0 0 1 3; % Usuario 4
1 1 5 0 0 2 0 0 0 0; % Usuario 5
2 1 5 4 0 0 0 0 0 0; % Usuario 6
0 1 3 0 1 1 3 2 4 3; % Usuario 7
0 5 5 3 4 3 2 0 0 2; % Usuario 8
];

% Guardamos variables auxiliares


[num_usuarios, num_items] = size(matriz_valoraciones);

151
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Procedemos ahora como antes, normalizando las valoraciones de acuerdo al puntaje pro-
medio asignado por cada usuario.

%% PASO 2: Normalizar las valoraciones


% Calculamos el promedio de cada usuario (ignorando los 0s)
promedios_usuarios = sum(matriz_valoraciones, 2) ./...
sum(matriz_valoraciones ~= 0, 2);

% Centramos los datos restando el promedio de cada usuario


matriz_normalizada = matriz_valoraciones - promedios_usuarios .*...
(matriz_valoraciones ~= 0);

Ahora estamos en condiciones de aplicar una reducción de dimensionalidad usando la


descomposición SVD. Para esto, fijamos un k > 0, que serán las componentes principales a
preservar, y truncamos las matrices de forma que la información preservada es únicamente
la relacionada a las k componentes principales como en la Subsección 6.1.2.

%% PASO 3: Descomposición SVD


% Realizamos la descomposición en valores singulares
[U, S, V] = svd(matriz_normalizada);

% Número de componentes principales a conservar


k = 2;

% Truncamos las matrices para quedarnos con las k componentes principales


U_k = U(:, 1:k); % Componentes latentes de usuarios
S_k = S(1:k, 1:k); % Valores singulares (matriz diagonal)
V_k = V(:, 1:k); % Componentes latentes de pelı́culas

disp(’Valores singulares principales:’);


disp(diag(S_k)’);

La salida en nuestro ejemplo resulta:

>>Valores singulares principales:


>> 6.1306 4.3081

Una vez aplicada la reducción de dimensionalidad, reconstruimos la matriz de valoraciones


reducida. Aquı́ tenemos que asegurarnos que los puntajes estarán entre 1 y 5.

152
Métodos Numéricos Facultad de Ingenierı́a – IMERL

%% PASO 4: Reconstruir la matriz de valoraciones


% Reconstruimos la matriz con la aproximación de rango reducido
matriz_reconstruida = U_k * S_k * V_k’;

% Volvemos a la escala original sumando los promedios de los usuarios


matriz_predicha = matriz_reconstruida + promedios_usuarios;

% Aseguramos que las predicciones estén en el rango [1,5]


matriz_predicha = max(min(matriz_predicha, 5), 1);

disp(’Matriz de valoraciones predichas:’);


disp(matriz_predicha);

Observamos que la construcción de la matriz predicha se hace en O(1) operaciones, dado


que k está fijo. Ahora, por ejemplo, podemos comparar la primera fila de la matriz A
original con la primera fila de la matriz predicha:

%Usuario 1 en la matriz original


5 4 0 1 3 2 0 1 0 3;
%Predicción del modelo para el usuario 1
>> 4.6528 3.8528 2.3187 1.0000 2.9755 1.9860 2.6238 2.1256 3.4945

Notamos que con solamente usar dos valores principales, la primer fila se ya se recons-
truye razonablemente bien en los casos donde el usuario asignó valoraciones. Ahora que
tenemos nuestras predicciones, procedemos a generar recomendaciones para los usuarios.
Recomendaremos las pelı́culas que predecimos puntuarán más alto y que cada usuario no
miró.

%% PASO 5: Generar recomendaciones para cada usuario


for usuario = 1:num_usuarios
% Encontrar ı́tems no valorados por este usuario
items_no_valorados = find(matriz_valoraciones(usuario, :) == 0);

if ~isempty(items_no_valorados)
% Ordenar los ı́tems no valorados (de mayor a menor)
valores_predichos = matriz_predicha(usuario, items_no_valorados);
[ratings_ordenados, indices] = sort(valores_predichos, ’descend’);
items_recomendados = items_no_valorados(indices);

%Mostrar las 3 mejores recomendaciones (o menos si no hay suficientes)


fprintf(’\nRecomendaciones para el usuario %d:\n’, usuario);
for i = 1:min(3, length(items_recomendados))
fprintf(’Ítem %d: rating predicho %.2f\n’, ...
items_recomendados(i), ratings_ordenados(i));

153
Métodos Numéricos Facultad de Ingenierı́a – IMERL

end
else
fprintf(’\nEl usuario %d ya ha valorado todos los ı́tems\n’, usuario);
end
end

Como ejemplo de salida, obtenemos

>>Recomendaciones para el usuario 1:


Ítem 9: rating predicho 3.49
Ítem 7: rating predicho 2.62
Ítem 3: rating predicho 2.32

Recomendaciones para el usuario 2:


Ítem 2: rating predicho 2.98
Ítem 9: rating predicho 2.73
Ítem 5: rating predicho 2.49

y ası́ sucesivamente.
De esta forma, luego de obtener la factorización SVD, el resto de los pasos se pueden
calcular a orden constante. Esta es la principal ventaja de del acercamiento a través de la
desomposición en valores singulares: escala mejor con respecto a la cantidad de datos, y
comparado al filtrado colaborativo (FC) básico que descibimos antes, resulta más eficiente
si tenemos una base de usuarios y pelı́culas grande. Resumimos las diferencias entre ambos
enfoques en la siguiente tabla.

FC Básico SVD
2
Complejidad de Preprocesamiento O(m n) O(mı́n(mn2 , m2 n))
Complejidad de Predicción O(m log m) O(k)
Complejidad de Recomendación O(mn log n) O(mn log n)
Almacenamiento Requerido O(m2 + mn) O(k(m + n))
Escalabilidad Limitada (por m2 ) Alta (con k chico)
Mejor caso de uso Pocos datos Muchos datos

Cuadro 6.1: Comparación entre el algoritmo FC básico y el algoritmo que aplica SVD.

El problema de usar datos para sistemas de recomendación de forma eficiente es un área


de investigación activa. En su momento, por hacer esto lo suficientemente bien, Netflix
pagó un premio de un millón de dólares4 .
4
Una explicación amigable del algoritmo ganador, que explica otras ventajas prácticas de usar algo-
ritmos de factorización matricial relacionados con la SVD, se puede encontrar en este artı́culo.

154
Métodos Numéricos Facultad de Ingenierı́a – IMERL

6.2. Aplicación de SVD a mı́nimos cuadrados


En esta sección, revisitamos el problema estudiado en el capı́tulo anterior, y aplicamos
la factorización SVD para resolver problemas de mı́nimos cuadrados. Dividimos esta dis-
cusión en dos partes: primero tratamos problemas de rango completo, y luego de rango
deficiente.

6.2.1. Mı́nimos cuadrados de rango completo


Dado el problema
x∗ = arg mı́nn kAx − yk22 ,
x∈R

con A ∈ Mm×n (R), m ≥ n y rg(A) = n, podemos considerar la descomposición SVD


(6.1) de A, y escribir el problema como

x∗ = arg mı́nn kU ΣV t x − yk22 = arg mı́nn kΣV t x − U t yk22 .


x∈R x∈R

Definimos el vector auxiliar z := U t y, y comenzamos resolviendo el problema de mı́nimos


cuadrados
w∗ = arg mı́nn kΣw − zk22 .
w∈R

Este es un problema extremadamente simple, ya que Σ es una matriz diagonal: basta con
restringirnos a los primeros n elementos de z y dividirlos por los valores singulares de A.
Una vez que hallamos w∗ := V t x∗ , la solución de nuestro problema es x∗ = V w∗ .
La justificación de este procedimiento es análoga a la que hicimos en la Sección 5.3.1. En
efecto, usando A = U ΣV t podemos escribir la norma euclı́dea al cuadrado del residuo en
un vector x ∈ Rn como

krk22 = kAx − yk22 = kU ΣV t x − yk22 = kΣV t x − U t yk22 ,

donde en el último paso usamos que U es ortogonal. Como Σ ∈ Mm×n (R) es diagonal,
tenemos que sus últimas m − n filas son todas nulas, por lo que

krk22 = kΣ(1:n) V t x − z(1:n) k22 + kz(n+1:m) k22 . (6.3)

Ası́, la solución al problema de mı́nimos cuadrados es el único5 vector x∗ ∈ Rn que hace


que la primera norma del lado derecho se anule.

Ejemplo 6.2.1 (ajuste lineal con SVD). Volvemos al Ejemplo 5.2.1/5.3.1, al que esta vez
tratamos mediante la factorización SVD de A.
5
Como rg(A) = n, sus valores singulares son todos positivos y por lo tanto Σ(1:n) es invertible.

155
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Usamos el comando [U,S,V] = svd(A) en Octave, y obtenemos


   
−0,1035 −0,8302 −0,3858 −0,3888 4,1000 0
−0,3243 −0,4414 0,2246 0,8060   0 1,0908
U = −0,5452 −0,0525 0,7082 −0,4455 , S =  0
  ,
0 
−0,7661 0,3364 −0,5470 0,0283 0 0
 
−0,9056 0,4242
V = .
−0,4242 −0,9056

Hallamos la solución al problema de mı́nimos cuadrados con los comandos

>> z = U’*y;
>> w = S(1:2, 1:2) \ z(1:2);
>> x = V*w;

Nuevamente encontramos la solución x = [1.7500; -1.0000]. 4

6.2.2. Mı́nimos cuadrados lineales con rango deficiente


A continuación, analizamos una nueva aplicación de la descomposición SVD: problemas de
mı́nimos cuadrados lineales con rango deficiente. Concretamente, analizamos el problema
de mı́nimos cuadrados lineal x∗ = arg mı́nx∈Rn kAx−yk22 , donde A ∈ Mm×n (R) con m > n
y r := rg(A) < n. Remarcamos que, incluso en este caso, el Teorema 5.2.1 permanece
válido: la dificultad está en que el problema de minimizar la norma euclı́dea del residuo
no tiene solución única. Nuestro objetivo es encontrar un criterio significativo que nos
permita seleccionar una de esas soluciones.
Comencemos con una perspectiva sobre casos más simples: si A fuese una matriz cuadrada
e invertible, entonces la solución al problema de mı́nimos cuadrados serı́a x = A−1 y. En
cambio, si A fuese rectangular pero de rango completo, podrı́amos hallar la solución
al problema de mı́nimos cuadrados a partir de las ecuaciones normales, esto es, x =
(At A)−1 At y. En este último caso no podemos invertir A, pero sı́ podemos considerar la
matriz (At A)−1 At como un reemplazo “razonable” para la inversa de A. A tal reemplazo
razonable le vamos a llamar pseudoinversa de A. Notemos que si A ∈ Mm×n (R) con
m > n es de rango completo, entonces

[(At A)−1 At )]A = (At A)−1 (At A) = In ,

por lo que (At A)−1 At es una inversa a izquierda de A. Sin embargo, esta matriz en general
no es una inversa a derecha, pues

A[(At A)−1 At ] 6= Im .

Esto se deduce del hecho de que la matriz de la izquierda tiene rango menor o igual que
n, mientras que la de la derecha tiene rango igual a m > n.

156
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Para generalizar la noción de inversa de una matriz, comenzamos con el caso escalar: dado
x ∈ R \ {0}, su inverso respecto al producto es x1 . En caso de que x = 0, obviamente no
tiene inverso. Vamos a llamar pseudoinverso de x al número

+ 1/x si x 6= 0,
x :=
0 si x = 0.

En caso de que tengamos una matriz D diagonal (y posiblemente rectangular), vamos


a llamar su pseudoinversa a la matriz D+ que se obtiene al trasponer D y tomar el
pseudoinverso escalar de los elementos de la diagonal. Esto es, si
 
d1 0 ... 0
 .. ..   + 
0
 d2 . . d1 0 ... ... ... 0
 .. .. ..  .
+
. . . .. 

. 0 . .  ∈ Mm×n (R) ⇒ D+ =  0 d2
 0 ...
D=
 .. ..  .. . . . . ..  ∈ Mn×m (R).


. . 0 dn   . . . 0 . . . .
 .. .. .. ..  0 . . . . . . d+
 
. n ... 0
. . .
0 ... ... 0

Definición 6.2.1 (pseudoinversa6 ). Dada A ∈ Mm×n (R), consideremos su descomposi-


ción SVD, A = U ΣV t . La pseudoinversa (o pseudoinversa de Moore-Penrose) de
A es la matriz A+ ∈ Mn×m (R) dada por

A+ := V Σ+ U t .

Observación 6.2.1 (no dependencia de SVD). Se puede demostrar que la Definición 6.2.1
no depende de la factorización SVD de la matriz A. 4

Esta definición nos permite recuperar los casos conocidos en que la matriz es invertible o
en problemas de mı́nimos cuadrados con rango completo.

Proposición 6.2.1 (pseudoinversa en casos conocidos). Si A ∈ Mn (R) es invertible,


entonces A+ = A−1 . Más en general, si A ∈ Mm×n (R) con m ≥ n cumple rg(A) = n,
entonces
A+ = (At A)−1 At .

Demostración. Nos basta con probar la segunda afirmación, pues la primera se deduce
de ella y del hecho de que si A ∈ Mn (R) es invertible, entonces At también lo es y
(At )−1 = (A−1 )t .
6
Esta no es la definición más habitual de pseudoinversa. Se la suele definir como la única matriz
que satisface las llamadas condiciones de Moore-Penrose; referimos a [GVL13, Sección 5.5.2] para más
detalles.

157
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Consideremos una descomposición SVD de A, A = U ΣV t . Como At = (U ΣV t )t = V Σt U t


y U es ortogonal, tenemos
At A = V Σt ΣV t .
Sean σ1 , . . . , σn los valores singulares de A (Definición 6.0.1); como At A es invertible, estos
valores singulares son estrictamente positivos. Observamos que Σ∗ := Σt Σ ∈ Mn (R) es
una matriz diagonal, y que los elementos en su diagonal son σ12 , . . . , σn2 . Por lo tanto,
(At A)−1 = (V Σ∗ V t )−1 = V Σ−1
∗ V
t
⇒ (At A)−1 At = V Σ−1 t t
∗ Σ U .

Como A+ = V Σ+ U t , para terminar la demostración nos basta con verificar que Σ+ =


Σ−1 t
∗ Σ . Las dos matrices tienen el mismo tamaño (n × m) y son diagonales, por lo que
basta con observar que las dos tienen los mismos elementos en la diagonal. Esto es sencillo
de comprobar, pues la diagonal de Σ+ tiene los pseudoinversos escalares de los valores
singulares de A, y como éstos son todos positivos, tenemos σi+ = σi−1 para i = 1, . . . , n.
−1
Por otra parte, la diagonal de Σ−1 t 1
∗ Σ tiene los elementos σ 2 σi = σi para i = 1, . . . , n.
i

La proposición anterior nos indica que, si tenemos un problema de mı́nimos cuadrados


de rango completo x∗ = arg mı́nx∈Rn kAx − yk22 , entonces su solución se puede escribir
formalmente como x∗ = A+ y. Notamos que esta expresión incluso tiene sentido para
problemas que no son de rango completo, por lo que la vamos a usar como definición de
solución en dicho caso. En esos problemas, en los que no tenemos unicidad de soluciones,
computar A+ y nos da la solución que tiene la menor norma euclı́dea.
Proposición 6.2.2 (mı́nimos cuadrados con pseudoinversa). Sean A ∈ Mm×n (R) e y ∈
Rm . Entonces, el vector x∗ := A+ y es la solución del sistema Ax = y en el sentido de los
mı́nimos cuadrados que tiene la menor norma euclı́dea.

Demostración. Ya sabemos que la proposición es verdadera en caso de que A sea de rango


completo, pues en dicho caso la solución al sistema es única y la Proposición 6.2.1 nos
garantiza que se puede escribir como x = A+ y.
Supongamos, entonces, que el problema es de rango deficiente: rg(A) = r < n. En ese
caso, la matriz de valores singulares en la descomposición SVD de A es de la forma
 
Σr Or×(n−r)
Σ := .
O(m−r)×r O(m−r)×(n−r)
Arriba, Σr ∈ Mr (R) es una matriz diagonal e invertible, que en su diagonal tiene los
r valores singulares no nulos de A, y las demás submatrices son nulas y los subı́ndices
indican sus tamaños. El mismo razonamiento que hicimos para llegar a (6.3) nos permite
llegar aquı́ a que en este caso la norma euclı́dea del residuo se puede escribir como
krk22 = kΣr w(1:r) − z(1:r) k22 + kz(r+1:m) k22 ,
donde w := V t x y z = U t y. Las soluciones al problema de mı́nimos cuadrados se obtienen
resolviendo w(1:r) = Σ−1
r z(1:r) , eligiendo libremente las entradas w(r+1:n) , y luego tomando
x = V w.

158
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Para demostrar la proposición, debemos probar que x∗ := A+ y cumple esta condición y


que es el vector de menor norma euclı́dea que lo hace. Usando la definición de pseudoin-
versa y cómo definimos el vector z, tenemos

x∗ = A+ y = V Σ+ U t y = V Σ+ z.

La pseudoinversa de Σ es

Σ−1
 
+ r Or×(m−r)
Σ := ∈ Mn×m (R),
O(n−r)×r O(n−r)×(m−r)

por lo que (Σ+ z)(1:r) = Σ−1 ∗


r z(1:r) . Esto muestra que x es solución del problema de mı́ni-
mos cuadrados. Finalmente, observamos que (Σ+ z)(r+1:n) = 0, que kx∗ k2 = kV Σ+ zk2 =
kΣ+ zk2 y, para cualquier otro vector x que sea solución del sistema tenemos

kxk22 = kV t xk22 = kw(1:r) k22 + kw(r+1:n) k22 = kΣ−1 2 2


r z(1:r) k2 + kw(r+1:n) k2
= kΣ+ zk22 + kw(r+1:n) k22 = kx∗ k22 + kw(r+1:n) k22 ≥ kx∗ k22 .

Concluimos que x∗ es la solución del sistema Ax = y en el sentido de los mı́nimos


cuadrados que tiene la menor norma euclı́dea.

6.2.3. Comparación de métodos para la resolución de problemas


de mı́nimos cuadrados
Hemos visto varios métodos para resolver problemas de mı́nimos cuadrados lineales de la
forma
x∗ = arg mı́nn kAx − yk22 .
x∈R

En la práctica, la elección de cuál utilizar depende de nuestros requerimientos de precisión,


e implica balancearlos con el costo y la confiabilidad de cada método.
Las ecuaciones normales son muy sencillas de implementar. Pasamos de un sistema
rectangular m × n con m > n a uno cuadrado y de tamaño n × n, lo que puede ser intere-
sante cuando m  n. El sistema resultante tiene la propiedad de tener la matriz simétrica
y semidefinida positiva At A (definida positiva si rg(A) = n), por lo que incluso se pueden
utilizar métodos como la factorización de Cholesky que tratamos en el Práctico 2. La gran
desventaja que tiene el uso de las ecuaciones normales es el posible mal condicionamiento
del problema resultante, lo que puede afectar a la calidad de la solución computacional
que obtengamos.
Los métodos de ortogonalización están basados en llevar la matriz A a una forma
triangular superior mediante una sucesión de transformaciones ortogonales. Esto está
cercanamente relacionado con la factorización QR de la matriz A7 . Este tipo de métodos
7
En la misma forma en que, como vimos en la Sección 2.3, llevar A a una forma triangular superior
mediante el proceso de escalerización gaussiana está relacionado con la factorización LU .

159
Métodos Numéricos Facultad de Ingenierı́a – IMERL

son por lo general más costosos computacionalmente que usar las ecuaciones normales,
especialmente si m  n. El método clásico de ortogonalización de Gram-Schmidt que
aprendimos en Geometrı́a y Álgebra Lineal 2 no es estable computacionalmente; el método
más extendido de ortogonalización, por ser el más eficiente y preciso en general, es el de
Householder.
Finalmente, usar la factorización SVD es la opción computacionalmente más cara. Su
elevado costo viene a cambio de una gran precisión y confiabilidad en problemas delicados:
en particular, usar SVD nos permite encontrar una solución elegante en problemas de
rango deficiente.
A pesar de que no profundizamos en este punto, indicamos como referencia algunas es-
timaciones de costos computacionales de resolver un sistema con A ∈ Mm×n (R) con
distintos métodos:

mn2 n3
ecuaciones normales + método directo (Cholesky) ∼ 2
+ 3
f lops;
2n3
transformaciones de Householder + sustitución hacia atrás ∼ 2mn2 − 3
f lops;
9n3
computar SVD8 + sistema diagonal ∼ 2m2 n + 4mn2 + 2
f lops.

8
Usando el método que se describe en [QSS10, Sección 5.8.3].

160
Capı́tulo 7

Integración numérica

7.1. Motivación y reglas de Newton-Cotes básicas


Este capı́tulo trata sobre el problema de integración numérica de funciones reales. Con-
cretamente, dada una función f : [a, b] → R integrable, nos preguntamos de qué forma
podemos estimar Z b
I(f ) := f (x) dx.
a
Si conocemos una primitiva de f , la Regla de Barrow nos permite computar I a partir de
evaluar dicha primitiva en los extremos del intervalo. Cuando no conocemos una primitiva
de f , en el curso de CDIV aprendimos que se puede aproximar I mediante sumas de Rie-
mann; recordar la Sección 1.2.1. En principio, tal como hicimos en esa sección, podrı́amos
encerrar el valor de I entre una sucesión de sumas inferiores y otra de sumas superiores,
y tomar particiones tan finas como sea necesario para nuestro requerimiento de precisión.
En este capı́tulo vamos a proponer y analizar otros métodos para tratar con el problema
de integración numérica.
Genéricamente, un regla de integración numérica (o una regla de cuadratura) es
Rb
un método que, para aproximar el valor de a f , utiliza combinaciones lineales de valores
de f en ciertos puntos. Esto es, aproxima
Z b Xn
f (x) dx ≈ wi f (xi ), (7.1)
a i=0

donde a w0 , . . . , wn ⊂ R se les suele llamar pesos de la regla, y a x0 , . . . , xn ⊂ [a, b] se


los llama nodos de la regla.
Comenzamos por usar ideas de interpolación para introducir las llamadas reglas de
Newton-Cotes.
Definición 7.1.1 (conjuntos cerrado y abierto de nodos de Newton-Cotes). Sea [a, b] ⊂
R un intervalo. Dado un número entero n ≥ 1, un conjunto cerrado de nodos de

161
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Newton-Cotes es {xi }ni=0 tal que


i (b − a)
xi = a + , i = 0, . . . , n.
n
Por otra parte, dado un número entero n ≥ 0, un conjunto abierto de nodos de
Newton-Cotes es {xi }ni=0 tal que
(i + 1) (b − a)
xj = a + , i = 0, . . . , n.
n+2
4

En otras palabras, la Definición 7.1.1 indica que un conjunto cerrado de n + 1 nodos


de Newton-Cotes consiste en los nodos que resultan al hacer una partición uniforme
del intervalo [a, b] en n subintervalos. En cambio, un conjunto abierto de n + 1 nodos
de Newton-Cotes hace una partición uniforme en n + 2 subintervalos pero le quita los
extremos a y b.
Definición 7.1.2 (reglas de Newton-Cotes). Dada f : [a, b] → R, sea x0 < . . . < xn
un conjunto (cerrado o abierto) de nodos de Newton-Cotes. Consideramos el polinomio
interpolante pn de f por el conjunto de puntos elegidos (recordar la Definición 3.2.1), y
aproximamos Z b Z b
f (x) dx ≈ pn (x) dx := Q.
a a
Rb
A esta aproximación se la llama regla de Newton-Cotes para aproximar a
f. 4
Observación 7.1.1 (los pesos no dependen de f ). Consideremos una regla de
Rb
Newton-Cotes para aproximar a f . Si escribimos el polinomio interpolante pn por
(x0 , f (x0 )), . . . , (xn , f (xn )) en la forma de Lagrange (3.8), tenemos
Xn Z b Xn Z b
i
pn (x) = f (xi )Ln (x) ⇒ Q = pn (x) dx = f (xi ) Lin (x) dx.
i=0 a i=0 a

Por lo tanto, teniendo en cuenta la expresión (7.1), observamos que los pesos de la regla de
Rb
cuadratura son wi = a Lin (x) dx para todo i = 0, . . . , n: los pesos solamente dependen
de la elección de los nodos de la regla, pero no dependen de la función cuya
integral queremos aproximar. 4
A continuación, damos algunos ejemplos básicos de reglas de Newton-Cotes.

Regla del punto medio. Esta es la regla de Newton-Cotes abierta más sencilla: co-
rresponde a tomar un único punto, el punto medio del intervalo [a, b], e interpolar f por
ese punto. Obviamente, el polinomio interpolante aquı́ es la constante
 
a+b
p0 (x) := f .
2

162
Métodos Numéricos Facultad de Ingenierı́a – IMERL

La regla del punto medio consiste en aproximar


Z b  
M a+b
I(f ) ≈ Q (f ) := p0 (x) dx = f (b − a). (7.2)
a 2
a+b
Con la notación (7.1), estamos tomando x0 := 2
y w0 = b − a.

Regla del trapecio. En una regla de Newton-Cotes cerrada, necesariamente los dos
extremos del intervalo tienen que ser nodos. Por lo tanto, la regla de Newton-Cotes cerrada
más sencilla utiliza solamente los puntos (a, f (a)), (b, f (b)) y considera la interpolante
lineal por ellos,  
f (b) − f (a)
p1 (x) := f (a) + (x − a).
b−a
La regla del trapecio consiste en la aproximación
Z b  
T f (a) + f (b)
I(f ) ≈ Q (f ) := p1 (x) dx = (b − a). (7.3)
a 2
b−a
Usando la notación (7.1), tenemos x0 := a, x1 := b, y w0 = w1 := 2
.

Regla de Simpson. Se trata de una regla de Newton-Cotes cerrada, que consiste en


realizar la interpolación polinomial por tres puntos: los dos extremos del intervalo y el
punto medio. Esto da lugar a una interpolante cuadrática, que llamaremos p2 y, tal como
probamos en el Práctico 3,
Z b    
S a+b (b − a)
I(f ) ≈ Q (f ) := p2 (x) dx = f (a) + 4f + f (b) . (7.4)
a 2 6
a+b
Esta es la llamada regla de Simpson, en la que los nodos son x0 := a, x1 := 2
, y
x2 := b, y los pesos son w0 = w2 := b−a
6
, w1 := 2(b−a)
3
.
La Figura 7.1 ilustra las reglas del punto medio, del trapecio, y de Simpson.

Definición 7.1.3 (orden de una regla de cuadratura). Decimos que el orden de una regla
de integración numérica es el menor grado del polinomio que la regla no integra exacta-
mente. Esto es, una regla tiene orden m si integra exactamente a todos los polinomios de
grado menor o igual a m − 1 pero hay un polinomio de grado m tal que la regla no integra
exactamente. 4

Ejemplo 7.1.1 (órdenes de las reglas del punto medio, del trapecio, y de Simpson). Es
evidente que una regla de Newton-Cotes que use n + 1 puntos tiene que ser de orden por
lo menos igual a n + 1, ya que si f es un polinomio de grado n, al interpolarlo por n + 1
puntos obtenemos pn = f . Por lo tanto, la regla del punto medio tiene orden al menos 1,
la del trapecio tiene orden al menos 2, y la de Simpson tiene orden por lo menos 3.

163
Métodos Numéricos Facultad de Ingenierı́a – IMERL

4 4 4

3 3 3

2 2 2

1 1 1

0 0 0
0 0,5 1 1,5 2 0 0,5 1 1,5 2 0 0,5 1 1,5 2

Figura 7.1: Ilustración de las reglas del punto medio (7.2) (izquierda), del trapecio (7.3)
(centro), y de Simpson (7.4) (derecha): en ellas se aproxima la integral de la función
graficada en negro por la del polinomio interpolante graficado en rojo.

Sin embargo, no es necesario interpolar exactamente una función para obtener


una aproximación exacta a su integral. En efecto, supongamos que Rf es lineal en
b
[a, b]. Como muestra la Figura 7.2, la regla del punto medio para aproximar a f es exacta,
pues Z b  
(f (b) + f (a)) a+b
f (x)dx = (b − a) = f (b − a) = QM (f ).
a 2 2
Por lo tanto, la regla del punto medio es de orden mayor o igual a 2. En forma similar, se
4

0
0 0,5 1 1,5 2

Figura 7.2: Las regla del punto medio Rtiene orden por lo menos igual a 2: si f es lineal en
b
[a, b], por simetrı́a tenemos QM (f ) = a f .

puede demostrar que la regla de Simpson es capaz de integrar polinomios de grado 3 en


forma exacta, por lo que tiene orden por lo menos 4. 4
Observación 7.1.2 (otra forma de entender la regla de Simpson). El ejemplo anterior
muestra que las reglas del punto medio y del trapecio son de orden por lo menos 2. Es
sencillo verificar que son de orden igual a 2: para
R 1 ello, consideremos la función cuadrática
f (x) = x en el intervalo [0, 1]. Tenemos I = 0 x dx = 31 , pero usando (7.2) y (7.3),
2 2

   
M 1 1 T f (0) + f (1) 1
Q (f ) = f = , Q (f ) = = .
2 4 2 2

164
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Como integran exactamente a funciones lineales pero no a la función cuadrática f , dedu-


cimos que las reglas del punto medio y del trapecio son de orden igual a 2.
Más aún, observamos que QM (f ) < I(f ) < QT (f ) y que los errores son QM (f ) − I(f ) =
1
− 12 , QT (f ) − I(f ) = 61 . En este caso, la regla del punto medio es el doble de precisa que
la regla del trapecio. Como los errores tienen signos opuestos, podrı́amos considerar una
nueva regla de cuadratura que combine a las del punto medio con la del trapecio,
2 1
Q∗ (f ) := QM (f ) + QT (f ).
3 3
Esta nueva regla es capaz de integrar exactamente a las funciones lineales (porque las
reglas del punto medio y del trapecio lo son) y a la función f (x) = x2 ; por lo tanto, es de
orden mayor que 2. Escribiendo explı́citamente los pesos y nodos de esta nueva regla, nos
encontramos con
     
∗ 2 1 1 f (0) + f (1) 1 2 1 1
Q (f ) = f + = f (0) + f + f (1).
3 2 3 2 6 3 2 6
Por lo tanto, ésta no es otra que la regla de Simpson (7.4). 4
Ejercicio 7.1. Demostrar que la regla de Simpson es de grado 4.
Sugerencia: para demostrar que es de orden mayor o igual a 4 sin hacer demasiadas cuentas,
considerar f un polinomio de grado 3 arbitrario en [a, b], e interpolarlo por los nodos a, b, a+b2
y z, con z ∈ [a, b] cualquiera (z 6= a, b, a+b
2 ). Como estamos interpolando al polinomio cúbico f
por 4 puntos, la interpolante coincide con f . Escribir la interpolante en la forma de Newton (es
importante que z sea el último nodo), y observar que la interpolante por los primeros 3 puntos
coincide con la que se usa para definir la regla de Simpson. Por lo tanto, para demostrar que la
regla de Simpson es de orden mayor o igual a 4, basta con demostrar que
Z b  
a+b
(x − a)(x − b) x − dx = 0.
a 2
Por otra parte, para demostrar que el orden es exactamente 4, basta con verificar que si f (x) = x4
entonces Z 1
1 5
= f (x) dx 6= QS (f ) = .
5 0 24

Una pregunta esencial que nos abocamos a responder a continuación es qué podemos decir
respecto a los errores cometidos por estas reglas de cuadratura básicas.
Teorema 7.1.1 (errores en reglas de cuadratura). Sean f : [a, b] → R integrable, I(f ) =
Rb
a
f y QM (f ), QT (f ), QS (f ) definidas por (7.2), (7.3), y (7.4), respectivamente.

a) Si f ∈ C 2 , entonces
(b − a)3 00
|QM (f ) − I(f )| ≤ kf kL∞ (a,b) , (7.5)
24
y
(b − a)3 00
|QT (f ) − I(f )| ≤ kf kL∞ (a,b) . (7.6)
12
165
Métodos Numéricos Facultad de Ingenierı́a – IMERL

b) Si f ∈ C 4 , entonces

(b − a)5 (4)
|QS (f ) − I(f )| ≤ kf kL∞ (a,b) . (7.7)
2880

Demostración. Vamos a demostrar solamente (7.5) y (7.6). Escribimos xM := a+b 2


el punto
2
medio del intervalo [a, b]. Como f ∈ C , podemos hacer un desarrollo de Taylor de primer
orden de f alrededor de xM usando la forma de Lagrange para el resto (Teorema A.1.2):
para todo x ∈ [a, b], existe θx entre x y xM (y por lo tanto θx ∈ (a, b)) tal que

f 00 (θx )
f (x) = f (xM ) + f 0 (xM )(x − xM ) + (x − xM )2 .
2
Integramos
Rb de los dos lados de esta igualdad respecto a x, y reconocemos que
a
f (x M ) dx = f (xM )(b − a) = QM (f ), para obtener
b b
f 00 (θx )
Z Z
M 0
I(f ) = Q (f ) + f (xM )(x − xM ) dx + (x − xM )2 dx.
a a 2
Rb
La primer integral del lado derecho es nula, pues a (x − xM ) dx = 0; esta es justamente
la simetrı́a que identificamos en el Ejemplo 7.1.1. Por lo tanto,
Z b 00 Z b 00
M f (θx ) 2 f (θx )
|I(f ) − Q (f )| = (x − xM ) dx ≤ (x − xM )2 dx.
a 2 a 2

Como la única información que tenemos sobre θx es que está en el intervalo (a, b), acotamos
Rb 3
|f 00 (θx )| ≤ kf 00 kL∞ (a,b) . Finalmente, es sencillo verificar que a (x − xM )2 dx = (b−a)
12
, y se
concluye (7.5).
Para demostrar (7.6), notamos que la regla del trapecio resulta de integrar la interpolante
lineal p1 por (a, f (a)), (b, f (b)), por lo que podemos usar la cota (3.13):

|(x − a)(x − b)| kf 00 kL∞ ([a,b])


|p1 (x) − f (x)| ≤ ∀x ∈ [a, b].
2
Rb
Integramos esta desigualdad de los dos lados, y observamos que a
|(x − a)(x − b)| dx =
(b−a)3
6
, de donde
b b
(b − a)3 kf 00 kL∞ ([a,b])
Z Z
T
|Q (f ) − I(f )| = (p1 (x) − f (x)) dx ≤ |p1 (x) − f (x)| dx ≤ .
a a 12

Es claro que las reglas de Newton-Cotes en la forma en que discutimos hasta aquı́ son de
poco uso en la práctica: si el intervalo [a, b] no es muy pequeño, entonces en general no
podemos esperar que las reglas del punto medio, del trapecio, o de Simpson produzcan una

166
Métodos Numéricos Facultad de Ingenierı́a – IMERL

buena aproximación a la integral de f en [a, b]. Esto es análogo a usar una interpolante de
grado bajo en un intervalo grande: seguramente dé una aproximación de poca calidad a la
función que queremos interpolar. Una opción que puede resultar natural es aumentar el
grado polinomial; sin embargo, si recordamos nuestra discusión en la Sección 3.3.2 sobre
el fenómeno de Runge, rápidamente caemos en la cuenta de que hacer interpolaciones de
Newton-Cotes –que usan nodos equiespaciados– no es una buena idea a menos que las
funciones cuyas integrales queremos estimar sean “buenas”, como la del Ejemplo 3.3.1.
Otra propiedad que vuelve no deseable a las reglas de Newton-Cotes de orden alto es
que en ellas suele haber pesos con signo negativo. Esto puede conducir a sumas largas en
las que hay varios términos de signos opuestos y, en consecuencia, las hacen pasibles de
cancelaciones numéricas.
Podemos considerar las mismas alternativas que en la Sección 3.3.2: o elegimos mejor
los nodos de cuadratura o nos mantenemos con una interpolación de grado bajo pero
dividimos [a, b] en subintervalos pequeños. Respecto a la primer alternativa, una opción
relacionada con los nodos de Chebyschev es la llamada cuadratura de Clenshaw-Curtis,
sobre la que no vamos a profundizar; otra opción, que exploramos en la Sección 7.4, es la
llamada cuadratura gaussiana. La segunda alternativa da lugar a las reglas compuestas,
que describimos a continuación.

7.2. Reglas compuestas


La idea detrás de las reglas deRcuadratura compuestas es análoga a la que usamos en
b
la Sección 3.4: para aproximar a f , en vez de usar una única regla para todo el intervalo
[a, b], consideramos una partición de dicho intervalo y usamos la regla en cada uno de los
subintervalos definidos. Por simplicidad, nos vamos a restringir a las tres reglas básicas
que tratamos en la Sección 7.1: del punto medio, del trapecio, y de Simpson.
Concretamente, elegimos una de las tres reglas, partimos a R= x0 < . . . < xn = b y, en
x
cada intervalo [xi , xi+1 ], aplicamos la regla para aproximar xii+1 f . Fijemos un poco de
notación. Para cada i = 0, . . . , n − 1, llamamos

hi := xi+1 − xi

y, para ∗ ∈ {M, T, S}1 , ponemos Q∗i (f ) al valor resultante de aplicar la regla de cuadratura
∗ en el intervalo [xi , xi+1 ]. Como las integrales son aditivas respecto a los intervalos,
tenemos
Z b n−1 Z xi+1
X n−1
X
I(f ) = f (x) dx = f (x) dx ≈ Q∗i (f ) =: Q∗,c (f ).
a i=0 xi i=0

1
Esta notación solamente quiere indicar que vamos a considerar las reglas del punto medio, del trapecio,
y de Simpson.

167
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Por ejemplo, si aplicamos la regla del trapecio en cada subintervalo, tendremos


 
T f (xi ) + f (xi+1 )
Qi (f ) = hi (7.8)
2
y por lo tanto la regla compuesta del trapecio es
n−1   n−1  
T,c
X f (xi ) + f (xi+1 ) h0 X hi−1 + hi hn−1
Q (f ) = hi = f (a) + f (xi ) + f (b).
i=0
2 2 i=1
2 2

Si usamos la notación (7.1), tenemos que los nodos de la regla son x0 , . . . , xn , y los pesos
son w0 = h20 , wi = hi−12+hi para i = 1, . . . , n − 1, y wn = hn−1
2
.
Observación 7.2.1 (notación). Nuestra notación para integrales compuestas no hace re-
ferencia a la partición que hayamos tomado, pero obviamente el valor que calculemos
depende de ella. 4
Teorema 7.2.1 (errores de reglas compuestas). Sean f : [a, b] → R integrable, a = x0 <
Rb
. . . < xn = b, hi = xi+1 − xi (i = 0, . . . , n − 1). Llamamos I(f ) = a f y QM,c (f ),
QT,c (f ), QS,c (f ) a las reglas del punto medio, del trapecio, y de Simpson compuestas,
respectivamente.

a) Si f ∈ C 2 , entonces
n−1 3
X h
|Q M,c
(f ) − I(f )| ≤ i
kf 00 kL∞ (xi ,xi+1 ) ,
i=0
24

y
n−1 3
X h
|Q T,c
(f ) − I(f )| ≤ i
kf 00 kL∞ (xi ,xi+1 ) . (7.9)
i=0
12

b) Si f ∈ C 4 , entonces
n−1
X h5i
|QS,c (f ) − I(f )| ≤ kf 00 kL∞ (xi ,xi+1 ) .
i=0
2880

Demostración. Las tres desigualdades se deducen de las desigualdades correspondientes en


el Teorema 7.1.1, integrando en cada subintervalo, y usando la aditividad de las integrales
respecto a las particiones.

En caso de que las particiones sean uniformes, podemos escribir una cota de error en
forma más compacta.
Corolario 7.2.2 (particiones uniformes). En las mismas hipótesis que en el Teorema
7.2.1, si asumimos además que hi = h := (b−a)
n
para todo i = 0, . . . , n, tenemos:

168
Métodos Numéricos Facultad de Ingenierı́a – IMERL

a) Si f ∈ C 2 , entonces

(b − a)h2 00
|QM,c (f ) − I(f )| ≤ kf kL∞ (a,b) ,
24
y
(b − a)h2 00
|QT,c (f ) − I(f )| ≤ kf kL∞ (a,b) .
12
b) Si f ∈ C 4 , entonces

(b − a)h4 (4)
|QS,c (f ) − I(f )| ≤ kf kL∞ (a,b) .
2880
Demostración. Las desigualdades se deducen inmediatamente del teorema anterior, usan-
do que para todo i = 0, . . . , n − 1 y toda función g : [a, b] → R, se cumple kgkL∞ (xi ,xi+1 ) ≤
kgkL∞ (a,b) , y que
n−1
(b − a) X b−a
h= ⇒ 1=n= .
n i=0
h

Ejemplo 7.2.1. Sea f : [−1, 1] → R la función de Runge,


1
f (x) = .
1 + 25x2
Como una primitiva de f es F (x) = 15 arctan(5x), tenemos
Z 1
1 1 2
I(f ) = f (x) dx = arctan(5x) = arctan 5 ' 0,5494.
−1 5 −1 5
Consideramos la regla del trapecio compuesta asociada a una partición uniforme del in-
tervalo [−1, 1] con n + 1 nodos, esto es,
2i 2
xi := −1 + , i = 0, . . . , n ⇒ h= .
n n
Recordemos, del Ejemplo 3.4.1, que kf 00 kL∞ (−1,1) = 50. Por lo tanto, para la regla com-
puesta del trapecio podemos acotar el error mediante

2(2/n)2 00 100
|I(f ) − QT,c (f )| ≤ kf kL∞ (a,b) = 2 .
12 3n
Por ejemplo, si queremos garantizar que el error en nuestra aproximación sea menor que
10−4 , basta con tomar n tal que se cumpla

100 103
< 10−4 ⇒ n > √ ' 577,35,
3n2 3

169
Métodos Numéricos Facultad de Ingenierı́a – IMERL

por lo que alcanza con tomar n = 578 subintervalos. Al implementar la regla del trapecio
compuesta en Octave, nos encontramos con que el error en ese caso es aproximadamente
1,48 × 10−7 . Si bien esto está de acuerdo con la teorı́a, ya que demostramos que tomar 578
subintervalos es suficiente para que el error de integración sea menor que 10−4 , da la sensa-
ción de que nuestra cota no es muy precisa. Tomando 578 subintervalos estamos refinando
mucho más de lo necesario. De hecho, experimentando en Octave, uno se encuentra con
que basta con solamente tomar n = 14 para que el error de integración satisfaga nuestro
requerimiento de precisión: en ese caso, el error es aproximadamente 6,06 × 10−5 . 4

7.3. Adaptatividad
Sigamos interpretando los resultados del Ejemplo 7.2.1. Analizando un poco más en detalle
cómo llegamos a las estimaciones del Corolario 7.2.2, observamos que acotamos la norma
L∞ de derivadas de f (en el ejemplo, las derivadas segundas) en cada subintervalo por la
norma L∞ de dicha derivada en todo el intervalo [a, b]. La Figura 7.3 muestra el gráfico
de la derivada segunda de la función de Runge en el intervalo [0, 1] (notar que f 00 es una
función par): la cota |f 00 (x)| ≤ 50 es relevante solamente para x cercano al origen. Ya
cuando x ≈ 1/2, tenemos |f 00 (x)| ≈ 2. Tomar subintervalos tan pequeños para x ≥ 1/2 es
demasiado para el requerimiento de precisión que tenemos. En este ejemplo es claro porque
conocemos y podemos graficar la derivada segunda de f y sabemos que f es “mucho más
lineal” cuando x está alejado de 0 que cuando está cerca.

Figura 7.3: Valor absoluto de la segunda derivada de la función de Runge en el intervalo


[0, 1].

En esta sección, mostramos algunas ideas sobre adaptatividad: nuestro objetivo es ha-
cer reglas de cuadratura compuestas que de alguna forma puedan determinar cuándo es

170
Métodos Numéricos Facultad de Ingenierı́a – IMERL

necesario tomar intervalos pequeños y cuándo no vale la pena hacerlo. El objetivo es,
dada una cierta tolerancia, computar la integral de f sobre el intervalo [a, b] con esa to-
lerancia y de forma eficiente. Para ilustrar las ideas principales, vamos a fijar una regla
de cuadratura: solamente vamos a considerar que nuestra aproximación se hace mediante
la regla del trapecio compuesta. El desafı́o está en encontrar una partición del intervalo
[a, b] que nos permita alcanzar nuestro objetivo.
Supongamos que implementamos una regla del trapecio compuesta sobre una partición
a = x0 < . . . < xn = b. Descomponemos el error de integración numérica como la suma
de los errores locales, asociados a la integración en cada subintervalo:
n−1
X
T,c
Q (f ) − I(f ) = QTi (f ) − Ii (f ),
i=0
Rx
donde QTi (f ) está dado por (7.8) e Ii (f ) := xii+1 f . Sea ε nuestra tolerancia: queremos
que sea |QT,c (f ) − I(f )| ≤ ε, e idealmente no mucho menor, ya que si lo fuera querrı́a
decir que seguramente nuestro algoritmo refinó al intervalo más de lo necesario.
En principio, no sabemos cómo ni en cuántas partes tenemos que partir el intervalo [a, b]
para que el error de integración sea menor o igual a ε. Para empezar, supongamos que
podemos calcular los errores locales exactamente. Si comenzamos nuestro algoritmo con
una regla del trapecio en todo el intervalo [a, b], entonces podemos comparar si el error es
menor a ε o no. Si lo es, terminamos; si no lo es, tenemos que seguir partiendo nuestro
intervalo. Si partimos el intervalo [a, b] a la mitad, ahora tendremos dos subintervalos:
¿cómo deberı́a ser el error local en cada uno de esos subintervalos para que el algoritmo
termine? Una respuesta es que en cada uno de esos subintervalos el valor absoluto del
error local sea menor que ε/2: como tenemos dos subintervalos,
|QT,c (f ) − I(f )| = |(QT0 (f ) − I0 (f )) + (QT1 (f ) − I1 (f ))|
≤ |QT0 (f ) − I0 (f )| + |QT1 (f ) − I1 (f )| < ε.
El factor 1/2 multiplicando a ε en esta tolerancia local está relacionado con el hecho de
que los dos subintervalos miden la mitad que el intervalo [a, b]. En efecto, si logramos que
el error local en un subintervalo sea como ε multiplicado por la proporción del intervalo
[a, b] que el subintervalo cubre, entonces habremos terminado: si para cada i = 0, . . . , n−1,
se tiene
hi
|QTi (f ) − Ii (f )| ≈ ε, (7.10)
b−a
entonces
n−1 n−1 n−1
X X ε X
|QT,c (f ) − I(f )| = QTi (f ) − Ii (f ) ≤ |QTi (f ) − Ii (f )| ≈ hi = ε,
i=0 i=0
b − a i=0
Pn−1
porque i=0 hi = b − a. La estimación de arriba es lo mejor que podemos lograr si no
tenemos un control sobre los signos de los errores, lo que es bastante difı́cil de lograr en
la práctica.

171
Métodos Numéricos Facultad de Ingenierı́a – IMERL

De este modo, comenzamos a delinear cómo serı́a una cuadratura adaptativa usando la
regla del trapecio compuesta: dadas una función f : [a, b] → R integrable una tolerancia
ε > 0, y un intervalo I ⊂ [a, b] de longitud `,

1. se parte el intervalo en dos subintervalos de longitud `/2;


2. en cada uno de los dos subintervalos nuevos,
a) se aplica la regla del trapecio y se computa el error cometido,
`
b) si el error es menor que b−a ε (esto es, si se cumple (7.10)), entonces se sale de
`
este subintervalo y se va al siguiente; si el error es mayor que b−a ε, entonces se
toma I como este nuevo subintervalo y se vuelve a comenzar.
Observación 7.3.1 (terminación). Si f es una función continua en [a, b], entonces el algo-
ritmo que describimos arriba termina. Esto se puede deducir a partir de la continuidad
uniforme de f en [a, b]. 4
Un detalle importante que omitimos hasta ahora es que, en general, no podemos computar
exactamente los errores de integración locales: asumir que podemos estimarlos es esencial-
mente asumir que podemos integrar a f “a mano”. En la práctica, se suele reemplazar el
error local por una estimación del error local. Concretamente, en cada intervalo [xi , xi+1 ]
se considera una regla de cuadratura más precisa que la que se está usando para calcular
la integral: en nuestro caso, que estamos considerando la regla del trapecio en cada subin-
tervalo, podrı́amos usar la regla de Simpson o una regla del trapecio compuesta dentro del
subintervalo. Para esta regla más precisa, que denotamos por ∗, esperamos que se cumpla

|Q∗i (f ) − Ii (f )|  |QTi (f ) − Ii (f )|.


Además, la cantidad |QTi (f ) − Q∗ (f )| es computable, y la podemos usar como una esti-
mación del error, pues
|QTi (f ) − Ii (f )| ≤ |QTi (f ) − Q∗i (f )| + |Q∗i (f ) − Ii (f )|

⇒ |QTi (f ) − Ii (f )| ≈ |QTi (f ) − Q∗i (f )|.
|QTi (f ) − Q∗i (f )| ≤ |QTi (f ) − Ii (f )| + |Ii (f ) − Q∗i (f )|

Remarcamos que usar la condición


hi
|QTi (f ) − Q∗i (f )| ≈ ε,
b−a
en lugar de (7.10) implica que al final de nuestro algoritmo esperamos que el
error de integración numérica sea menor que ε, pero no podemos garantizarlo.
Observación 7.3.2. Por lo general, las funciones de Octave/Matlab para computar inte-
grales (por ejemplo, quad o integral), usan algoritmos adaptativos. En particular, quad
usa la regla de Simpson para el cálculo de integrales y una regla de Newton-Cotes de
5 puntos (también conocida como regla de Simpson de 5 puntos) para la estimación de
errores. 4

172
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Ejemplo 7.3.1. Implementamos nuestro Algoritmo adaptativo usando la regla del tra-
pecio compuesta a la función que consideramos en la Sección 1.2.1: queremos computar
Z 1
I= esen x dx.
0

Ponemos una tolerancia ε = 10−4 . La Figura 7.4 (izquierda) muestra el gráfico del inte-
grando f (x) = esen x en el intervalo y los puntos en los que el algoritmo hizo subdivisiones.
En total, se utilizaron 57 nodos, y obtuvimos el valor

I ≈ 1,6319.

Este valor es consistente con lo que estimamos en el Ejemplo 1.2.1 usando sumas de

R1
Figura 7.4: Cuadratura adaptativa. Izquierda: cálculo de 0 esen x dx con tolerancia ε =
R5 3x
10−4 ; derecha: cálculo de 0 2x−sen
1+x5
dx con tolerancia ε = 10−2 .

Riemann, pero con bastante más particiones del intervalo. En este ejemplo, notamos que
el gráfico de f (x) parece ser “bastante lineal”2 por lo que los subintervalos tomados son
bastante uniformes.
El efecto adaptativo de nuestro algoritmo es más evidente cuando consideramos integran-
dos cuya derivada segunda
R 5 varı́a mucho. La Figura 7.4 (derecha) muestra los intervalos
3x
tomados para calcular 0 2x−sen
1+x5
dx con una tolerancia ε = 10−2 . La partición es mucho
más fina cuando x está aproximadamente entre 1/2 y 1 que para x cercano a 5. 4

7.4. Cuadratura gaussiana


Consideremos una regla de cuadratura como (7.1). Al definir reglas de Newton-Cotes,
asumimos que los nodos están equiespaciados. Si asumimos que los nodos de la cuadratura
están dados, entonces el problema de diseñar reglas de cuadratura se reduce a encontrar
2
Esto simplemente quiere decir que |f 00 | es bastante pequeña en [0, 1].

173
Métodos Numéricos Facultad de Ingenierı́a – IMERL

conjuntos satisfactorios de pesos. El problema se reduce a resolver un sistema de ecuaciones


lineales, porque la expresión (7.1) es lineal en w0 , . . . , wn .
Más precisamente, supongamos que tenemos dados n + 1 puntos x0 , . . . , xn , queremos
una regla como (7.1) y le pedimos que sea exacta para polinomios de grado lo más alto
posible. Como tenemos n + 1 puntos, nos basta con hallar el polinomio interpolante pn
por esos puntos; esto es exacto siempre que el integrando sea un polinomio de grado
menor o igual a n. Por lo tanto, nuestra regla de cuadratura será exacta para cualquier
polinomio de grado menor o igual que n. Incluso podrı́a ser posible que fuese exacta para
algún polinomio de grado mayor, como ocurre con la regla del punto medio –que usa un
interpolante de grado 0 y es exacta para funciones lineales–, pero esto dependerá de la
ubicación de los nodos. En general, si tenemos dados x0 , . . . , xn , no tiene sentido esperar
que la regla (7.1) sea exacta para polinomios de grado mayor que n.
Las reglas de cuadratura gaussiana consisten en dejar los x0 , . . . , xn como grados de
libertad. Si tenemos 2n + 2 grados de libertad, que se corresponden con n + 1 nodos y
n + 1 pesos, en principio podrı́amos esperar que la regla que obtengamos sea exacta para
polinomios de grado menor o igual a 2n + 1. La dificultad radica en que el sistema de
ecuaciones que se obtiene es no lineal. Ilustramos este punto con un ejemplo.

Ejemplo 7.4.1. Consideramos la regla de cuadratura


Z 1
f (x) dx ' w1 f (x1 ) + w2 f (x2 ),
−1

y buscamos w1 , w2 ∈ R, x1 , x2 ∈ [−1, 1] tales que la regla sea exacta para todos los
polinomios de grado menor o igual que 3. Para este fin, basta con elegir nuestra base
favorita del espacio de polinomios de grado menor o igual que 3, imponer que la regla sea
exacta en cada polinomio de dicha base, y resolver el problema resultante. Tomamos la
base monomial {1, x, x2 , x3 }, y queremos que se cumplan:
Z 1
2= 1 dx = w1 1 + w2 1 ⇒ w1 + w2 = 2,
−1
Z 1
0= x dx = w1 x1 + w2 x2 ⇒ w1 x1 + w2 x2 = 0,
−1
Z 1 (7.11)
2/3 = x2 dx = w1 x21 + w2 x22 ⇒ w1 x21 + w2 x22 = 2/3,
−1
Z 1
0= x3 dx = w1 x31 + w2 x32 ⇒ w1 x31 + w2 x32 = 0.
−1

Tenemos que resolver el sistema (7.11). Multiplicamos la segunda ecuación por x22 y se la
restamos a la última para obtener

w1 x31 − w1 x1 x22 = 0 ⇒ w1 = 0, o x1 = 0, o |x1 | = |x2 |.

174
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Si w1 = 0, entonces la primera ecuación en (7.11) implicarı́a w2 = 2, y se llega rápidamente


a una contradicción: la segunda ecuación darı́a que x2 = 0, y sustituyendo en la tercera
nos encontramos con que 0 = 2/3. Si fuera x1 = 0, se tiene una contradicción similar entre
la segunda y la tercera ecuación en (7.11): tendrı́amos w2 x2 = 0 y w2 x22 = 2/3.
Por lo tanto, necesariamente tiene que ser |x1 | = |x2 |. Podemos descartar que x1 = x2
fácilmente usando las dos primeras fórmulas en (7.11), de modo que concluimos x1 =
−x2 6= 0 (recordemos que x1 = 0 ya está descartado). Sustituimos en la segunda fórmula
y tenemos w1 = w2 ; reemplazando esta identidad en la primera, obtenemos w1 = w2 = 1.
Finalmente, para obtener los valores de x1 y x2 , utilizamos la tercera fórmula en (7.11) y
concluimos3
1 1
x1 = − √ , w1 = 1, x2 = √ , w2 = 1.
3 3
En resumen, la regla de cuadratura
Z 1    
1 1
f (x) dx ' f − √ +f √ (7.12)
−1 3 3
es exacta para polinomios de grado menor o igual a 3 lo que, en términos de la Definición
7.1.3, implica que es de orden mayor o igual a 4. Notar que solamente usa dos nodos. 4

Ejercicio 7.2. Comprobar que la regla (7.12) es de grado igual a 4.

Observación 7.4.1. El Ejemplo 7.4.1 es un caso pequeño y que podemos tratar a mano.
Para problemas más grandes, podemos utilizar métodos iterativos para resolver numéri-
camente los sistemas de ecuaciones resultantes, como los que discutimos en la Sección 4.8.
La cuadratura gaussiana está relacionada con la teorı́a de polinomios ortogonales y exis-
ten algoritmos que explotan este vı́nculo para computar pesos y nodos en forma eficiente
y estable. Al lector interesado en el tema, le referimos a [QSS10, Capı́tulo 10] para más
detalles. 4
Observación 7.4.2 (otros intervalos). Las cuadraturas gaussianas se suelen expresar sobre
el intervalo [−1, 1]. Cualquier integral sobre un intervalo [a, b] se la puede llevar a una
integral sobre el intervalo [−1, 1] mediante un cambio de variables afı́n, y los pesos y
nodos cambian correspondientemente, como se discutirá en el práctico. 4
Observación 7.4.3 (pesos son positivos). Desde el punto de vista computacional, una
propiedad importante de la cuadratura gaussiana es que, en general, los pesos que se
obtienen son positivos. Se puede encontrar una demostración en [SM03, Sección 10.2]. 4

Una variante que es relevante en algunas aplicaciones es considerar reglas de cuadratura


para integrales del tipo Z 1
f (x) ρ(x) dx,
−1

3
Formalmente, también existe la solución x1 = √13 , w1 = 1, x2 = − √13 , w2 = 1, pero es claro que
esta solución da lugar a la misma regla de cuadratura que la que escribimos arriba.

175
Métodos Numéricos Facultad de Ingenierı́a – IMERL

donde ρ : [−1, 1] → R es una función no negativa y tal que


R 1ρ(x) > 0 en todo el intervalo
[−1, 1] excepto en un conjunto finito de puntos, y cumple −1 p(x) ρ(x) dx < ∞ para todo
polinomio p. En particular, la que hemos analizado hasta ahora corresponde a ρ ≡ 1 y
se la conoce como cuadratura de Gauss-Legendre. Si buscamos una regla de cuadratura
gaussiana con n + 1 puntos y escribimos el sistema de ecuaciones resultante,
R1
I0 (ρ, f ) := −1 1 ρ(x) dx = ni=0 wi
 P

 R1
I1 (ρ, f ) := −1 x ρ(x) dx = ni=0 wi xi

 P
.. ,


 .
R1
I2n+1 (ρ, f ) := −1 x2n+1 ρ(x) dx = ni=0 wi xi2n+1
 P

observamos que el problema se reduce a resolver un sistema de la forma


f (x0 , . . . , xn , w0 , . . . , wn ) = [I0 (ρ, f ), . . . , I2n+1 (ρ, f )]t ,
donde f : R2n+2 → R2n+2 es tal que fj (x0 , . . . , xn , w0 , . . . , wn ) = ni=0 wi xj−1
P
i para j =
1, . . . , 2n + 2. Notamos que la función f no depende de ρ, por lo que una vez que se
tiene una implementación para hallar los nodos y los pesos para una cierta ρ, resulta muy
simple adaptar la implementación para otra función ρ.
Ejemplo 7.4.2. Sea a > 0. Buscamos diseñar una regla de cuadratura gaussiana de dos
puntos tal que Z a
f (x) ex/a dx ' w1 f (x1 ) + w2 f (x2 ) (7.13)
0
sea exacta para polinomios de grado menor o igual a 3. Comenzamos asumiendo que
a = 1, y para resolver el problema en el intervalo [0, 1], procedemos como en el Ejemplo
7.4.1, imponiendo que la regla sea exacta en los monomios {1, x, x2 , x3 }. Esto nos conduce
al sistema de ecuaciones
Z 1
e−1= ex dx = w1 + w2 ,
Z 10
1= x ex dx = w1 x1 + w2 x2 ,
Z 01 (7.14)
2 x 2 2
e−2= x e dx = w1 x1 + w2 x2 ,
0
Z 1
6 − 2e = x3 ex dx = w1 x31 + w2 x32 .
0

Si bien los términos del lado derecho en (7.14) son iguales a los de (7.11), la resolución de
este sistema parece más compleja, y no parece claro que los nodos y pesos se deban dis-
tribuir simétricamente como en el Ejemplo 7.4.1. Implementamos en Octave el método de
Newton-Raphson que describimos en la Sección 4.8.2, y obtenemos los valores numéricos
x̂1 ' 0,2476, x̂2 ' 0,8192, ŵ1 ' 0,7131, ŵ2 ' 1,0051.

176
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Usamos el sı́mbolo de tilde ˆ para denotar que estos nodos y pesos son los correspondientes
al intervalo [0, 1]. Si queremos una regla para (7.13) en el intervalo [0, a], simplemente
hacemos el cambio de variables x̂ = x/a y aplicamos la regla de cuadratura hallada a la
función fˆ(x̂) := f (ax̂),
Z a Z 1 Z 1
x/a
f (x) e dx = a x̂
f (ax̂) e dx = a fˆ(x̂) ex̂ dx
0
0 0
ˆ ˆ
' a ŵ1 f (x̂1 ) + ŵ2 f (x̂2 ) = aŵ1 f (ax̂1 ) + aŵ2 f (ax̂2 ).

Esto muestra que los nodos y pesos en (7.13) son

x1 = ax̂1 , x2 = ax̂2 , w1 = aŵ1 , w2 = aŵ2 .

177
Métodos Numéricos Facultad de Ingenierı́a – IMERL

178
Capı́tulo 8

Ecuaciones diferenciales ordinarias

8.1. Introducción. Nociones generales.


Las ecuaciones diferenciales ordinarias aparecen en modelos en diversas áreas de la cien-
cia, ingenierı́a, y economı́a. En concreto, las ecuaciones diferenciales ofrecen un lenguaje
matemático para expresar un cambio continuo. Sin embargo, muchas veces ocurre que
este tipo de ecuaciones tienen soluciones que no se pueden expresar en forma cerrada.
Los métodos numéricos ofrecen una alternativa ampliamente usada para hallar soluciones
aproximadas: algunas preguntas relevantes aquı́ son cómo diseñar métodos eficientes y
precisos, cómo estimar qué tan lejos está la solución numérica de la solución exacta, o de
qué forma lograr que el método preserve alguna propiedad de interés que pueda tener el
modelo.
Una ecuación diferencial ordinaria es una ecuación cuya incógnita es una función
y(t) en la que aparecen derivadas de dicha función incógnita. Por comodidad, nos vamos
a referir a la variable independiente t como el tiempo. Una ecuación diferencial de primer
orden es una ecuación de la forma
F(t, y(t), y0 (t)) = 0, (8.1)
donde y : R → Rn es la función incógnita, y F : R × Rn × Rn → Rn es un dato1 . La
forma (8.1) es bastante general, y nos permitirı́a escribir ecuaciones muy complicadas y
no lineales en y0 , como por ejemplo (para n = 1)
0
p
sen(ty 0 (t)) + y(t)ey (t) = t, o 1 + |y 0 (t)|2 = y(t).
En este capı́tulo, vamos a trabajar con ecuaciones de la forma
y0 (t) = f (t, y(t))), (8.2)
1
Puede ocurrir que las soluciones y(t) que estemos buscando solamente estén definidas en un intervalo
I ⊂ R, y obviamente el dominio de la función F no tiene por qué ser todo R × Rn × Rn . A los efectos
de este curso, no nos vamos a detener en este aspecto, que se estudia con mayor detalle en el curso de
Ecuaciones Diferenciales.

179
Métodos Numéricos Facultad de Ingenierı́a – IMERL

y supondremos conocida f : R × Rn → Rn . Observemos que para n = 1 esto nos da una


única ecuación escalar, mientras que para n > 1 obtenemos un sistema de ecuaciones.
Remarcamos que asumir que nuestra ecuación diferencial es de primer orden no es algo
tan restrictivo. Por ejemplo, si tenemos una ecuación diferencial de orden n de la forma

y (n) (t) = f (t, y(t), y 0 (t), . . . , y (n−1) (t)), (8.3)

entonces podemos definir las n variables auxiliares y1 (t) = y(t), y2 (t) = y 0 (t) = y10 (t), . . . ,
0
yn (t) = yn−1 (t), y la ecuación (8.3) puede escribirse como una ecuación de primer orden
para la función vectorial y : R → Rn , de la forma
   
y10 (t) y2 (t)
 y0 (t)   y3 (t) 
 2  
y0 (t) =  ..  =   =: f (t, y(t)).

..
 .   . 
0
yn (t) f (t, y1 (t), y2 (t), . . . , y(n−1) (t))

En el Ejemplo 8.1.3 aplicamos esta idea a una ecuación diferencial de segundo orden
proveniente de aplicar las leyes de Newton.
A continuación mostramos algunos ejemplos relevantes de ecuaciones diferenciales.

Ejemplo 8.1.1 (problema test). Consideremos f (t, y(t)) = λy(t) en (8.2), donde λ ∈ R
es un dato. Nuestra ecuación diferencial tiene entonces la forma y 0 (t) = λy(t). Es sencillo
verificar que, para todo C ∈ R, la función

y(t) = Ceλt

satisface la ecuación (8.2). 4

Ejemplo 8.1.2 (ecuación logı́stica). La llamada ecuación logı́stica se utiliza en biologı́a


como un modelo simple de crecimiento de poblaciones. En ella, la incógnita es una función
y : R → R que cumple

y 0 (t) = ay(t)(1 − y(t)), donde a > 0.

Si pensamos en y(t) como la proporción (respecto a una cierta población máxima) de


un cierto animal ocupando el hábitat en un tiempo t, entonces 1 − y(t) representa la
“capacidad ociosa” de ese hábitat. Cuando y ≈ 0 tenemos y 0 ≈ ay y esperamos que
la solución muestre un crecimiento exponencial como en el Ejemplo 8.1.1. Esto quiere
decir que si hay abundancia de recursos disponibles en el hábitat, la población tiene la
capacidad de crecer exponencialmente. En cambio, una vez que y ≈ 1, la ecuación se
vuelve y 0 ≈ 1 − y y la velocidad de crecimiento de la población se hace cada vez menor a
medida que se va saturando la capacidad del hábitat, esto es, cuando y → 1− . 4

Ejemplo 8.1.3 (sistema masa-resorte). Consideremos un sistema masa-resorte sin roza-


miento, como en la Figura 8.1. Sean m > 0 la masa, k > 0 la constante elástica del resorte,

180
Métodos Numéricos Facultad de Ingenierı́a – IMERL

y x(t) el desplazamiento de la masa respecto a la posición de equilibrio en el instante t.


Asumimos que la fuerza que ejerce el resorte sobre la masa es proporcional a qué tan
estirado/comprimido esté2 , por lo que las leyes de Newton nos dicen que x(t) satisface la
ecuación diferencial
mx00 (t) = −kx(t). (8.4)
Notemos que esta no es una ecuación como (8.2), sino de segundo orden, porque aparecen

Figura 8.1: Sistema masa-resorte.

las derivadas segundas de x. Sin embargo, podemos escribirla en la forma (8.2) de un modo
sencillo. Consideremos la velocidad horizontal de la masa, y(t) := x0 (t). Como y 0 (t) =
x00 (t), podemos reescribir (8.4) usando ambas variables (desplazamiento y velocidad) como
 0
x (t) = y(t),
y 0 (t) = − m
k
x(t).
 
2 x(t)
Luego, podemos definir una función incógnita vectorial y : R → R , y(t) := y
y(t)
escribir nuestra ecuación diferencial como

0 0 1
y (t) = Ay(t), donde A = k .
−m 0

Esta ecuación sı́ es de la forma (8.2), con n = 2 y f (t, y(t)) = Ay(t).


Por otra parte, podemos incorporar una fuerza de rozamiento en nuestro sistema. Inclui-
mos la fuerza de fricción de la masa con el piso, que suponemos de magnitud proporcional
a la velocidad de la masa y sentido opuesto a ésta. Con esta adición en nuestro modelo,
(8.4) toma la forma
mx00 (t) = −kx(t) − µx0 (t), con µ > 0.
 
0 x(t)
Si volvemos a definir y(t) = x (t) e y(t) = , esta última ecuación es de la forma
y(t)
 
0 0 1
y (t) = Ay(t), donde A = k µ .
−m −m

4
2
Esta es la llamada ley de Hooke.

181
Métodos Numéricos Facultad de Ingenierı́a – IMERL

8.1.1. Problemas de valores iniciales.


Una ecuación diferencial y0 (t) = f (t, y(t)) no es suficiente para determinar una solución
única, ya que la ecuación en sı́ solamente define los valores de las pendientes y0 (t) de
la solución. En general, hay una cantidad infinita de funciones y(t) que satisfacen la
ecuación. Para poder distinguir una en particular de las demás, y ası́ tener un problema
bien definido, necesitamos especificar el valor de la solución en un determinado punto. Se
suele llamar a ese punto t0 y denotar por y0 al valor de la solución en ese punto. Ası́, se
complementa a (8.2) con el dato
y(t0 ) := y0 , (8.5)
donde t0 e y0 son asumidos conocidos. Bajo ciertas hipótesis bastante generales (ver el
Teorema 8.1.1 abajo), esta condición permite asegurar la existencia de una única solución
a nuestro problema localmente en el tiempo. Como la variable t muchas veces representa
un tiempo, se suele pensar en t0 como un tiempo inicial, y a (8.5) como una condición
inicial en la solución.

Definición 8.1.1 (problema de valores iniciales). Llamamos un problema de valores


iniciales (o problema de Cauchy) al problema definido por (8.2) y (8.5). Esto es, dados
f : R × Rn → Rn , t0 ∈ R, e y0 ∈ Rn , un problema de valores iniciales consiste en hallar
una función y : I → Rn , donde I es un intervalo de la forma I = [t0 , Tmax ) o I = [t0 , ∞),
tal que (
y0 (t) = f (t, y(t)),
(8.6)
y(t0 ) = y0 .

Ejemplo 8.1.4 (problema de valores iniciales). Volvemos al Ejemplo 8.1.1. Sabemos que
las funciones que cumplen la ecuación diferencial y 0 (t) = ay(t) son de la forma

y(t) = Ceat , con C ∈ R.

Si imponemos además que y(t0 ) = y0 , con t0 e y0 dados, entonces debe cumplirse

y0 = y(t0 ) = Ceat0 ⇒ C = y0 e−at0 ,

y encontramos la solución
y(t) = y0 ea(t−t0 ) .
4

El siguiente resultado, que se demuestra en el curso de Ecuaciones Diferenciales, nos da


una condición suficiente para asegurar la existencia y unicidad de soluciones localmente
en el tiempo.

182
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Teorema 8.1.1 (Picard). Sea D ⊂ R × Rn un conjunto abierto que contiene a (t0 , y0 ).


Si f : D → Rn es una función continua y Lipschitziana con respecto a y, esto es, existe
L > 0 tal que

kf (t, y1 ) − f (t, y2 )k ≤ Lky1 − y2 k ∀(t, y1 ), (t, y2 ) ∈ D, (8.7)

entonces existe  > 0 tal que el problema (8.6) tiene una solución única en I := [t0 , t0 + ).
Ejemplo 8.1.5 (necesidad de la hipótesis de ser Lipschitziana). Consideremos el problema
de valores iniciales ( p
y 0 (t) = |y(t)|,
y(0) = 0.
Es sencillo verificar que las funciones

 0 si t ≤ 0
y1 (t) ≡ 0 e y2 (t) = t2
 si t > 0
4
son soluciones del problema,
p y por lo tanto no tenemos unicidad. Esto se justifica porque
la función f (t, y) = |y| no está en las hipótesis del Teorema de Picard. 4

En lo que sigue, vamos a asumir que los problemas que estamos tratando están en las
hipótesis del Teorema de Picard. Vamos a asumir que nuestros problemas tienen solución
única y que ésta está definida en algún intervalo I conocido.
En la teorı́a de las ecuaciones diferenciales, se suele usar la palabra estabilidad para indicar
un concepto para el que en nuestro curso hemos empleado el término condicionamiento:
informalmente, esta noción corresponde a que pequeños cambios en el valor inicial y0
induzcan pequeños cambios en los valores de y(t) para todo t ≥ t0 .
Definición 8.1.2 (estabilidad de una solución de un problema de valores iniciales). La
solución y(t) del problema de valores iniciales (8.6) se dice estable (en el futuro) si para
todo  > 0 existe δ > 0 tal que si ŷ(t) satisface la misma ecuación diferencial pero con
condición inicial ŷ(t0 ) = ŷ0 con kŷ0 − y0 k ≤ δ, entonces

kŷ(t) − y(t)k ≤  para todo t > t0 .

Esta definición de estabilidad refiere a la solución exacta de un problema de valores ini-


ciales dado y nos dice que si una solución es estable y perturbamos un poco la condición
inicial, la nueva solución que obtenemos permanece cerca de la solución original. En nues-
tro contexto, esta noción es importante porque nos da la pauta de qué podemos esperar
respecto a los errores de redondeo: si la solución que queremos aproximar no es estable, ya
cualquier error de representación que tengamos en el valor inicial será propagado al avan-
zar t, incluso si somos capaces de resolver la ecuación diferencial exactamente. A partir de

183
Métodos Numéricos Facultad de Ingenierı́a – IMERL

nuestra experiencia en este curso y en particular del Capı́tulo 1, sabemos que los errores
de redondeo son una parte de la historia, y que otra parte fundamental son los errores de
truncamiento, asociados a la aproximación de la ecuación diferencial mediante métodos
numéricos. En la Sección 8.3 damos nociones de estabilidad de métodos numéricos para
la resolución de problemas de valores iniciales, que contemplan el comportamiento de los
errores de truncamiento.
Comencemos nuestro análisis de métodos numéricos para la aproximación de soluciones.
Consideremos un problema de valores iniciales de la forma (8.6),
(
y0 (t) = f (t, y(t))
.
y(t0 ) = y0

Nuestro objetivo es encontrar una secuencia {(tk , yk )}k≥1 (que puede ser finita o infinita,
dependiendo de si en (8.6) es I = [t0 , Tmax ) o I = [t0 , ∞)) de forma tal que yk ≈ y(tk )
para todo k. Los pasos hk := tk+1 − tk pueden ser elegidos a priori o ser determinados a
partir de ciertos requisitos de tolerancia en la solución computada.
El teorema fundamental del cálculo muestra que, si y es solución al problema de valores
iniciales (8.6), entonces debe satisfacer
Z t+h
y(t + h) = y(t) + f (s, y(s)) ds.
t

Para el caso especial en el que f no depende de y, la expresión (8.1.1) nos permite escribir
Z tn+1
yn+1 = yn + f (s) ds,
tn

y por lo tanto, obtenemos los valores de {yk } resolviendo por cuadraturas mediante cual-
quiera de los métodos vistos en el Capı́tulo 7. Sin embargo, no podemos usar cuadraturas
directamente para resolver este problema si la función f depende de y, dado que no cono-
cemos la función y(s) y, por lo tanto, no podemos evaluar el integrando. Para determinar
{yk } en el caso general, se reemplaza la ecuación diferencial por una o varias ecuaciones
algebraicas. La diferencia entre los diferentes métodos de resolución de ecuaciones ordina-
rias radica precisamente en qué forma toman las ecuaciones algebraicas para determinar
los iterados.
En la Sección 8.2 comenzamos el estudio teórico de los métodos numéricos para problemas
de valores iniciales con los métodos más básicos, los llamados métodos de Euler. La Sección
8.3 introduce los conceptos fundamentales para el análisis de métodos numéricos: consis-
tencia, estabilidad y convergencia. Aplicamos estos conceptos a un nuevo método, el del
trapecio, en la Sección 8.4. Posteriormente, en la Sección 8.5 consideramos y mostramos
cómo se construye una familia de métodos, los llamados de Runge-Kutta; estos métodos
tienen ciertas caracterı́sticas que hacen que sean la base de un buen número de los solvers
de Matlab/Octave, y explicamos las ideas clave del funcionamiento de uno de ellos. La

184
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Sección 8.6 muestra un sencillo y extendido procedimiento de combinación de dos métodos


para producir uno nuevo, los llamados esquemas predictores-correctores. A continuación,
la Sección 8.7 pone en práctica varios de los métodos trabajados anteriormente. En esa
sección, explicamos el uso de algunos paquetes numéricos de Octave/Matlab, llamados
solvers, y el manejo de los llamados eventos, que permiten detectar ciertos fenómenos de
interés de forma automática. Finalmente, la Sección 8.8 trata con el concepto de rigidez
de un problema de valores iniciales, que es de importancia a la hora de elegir con qué
algoritmo se lo va a discretizar.

8.2. Métodos de Euler


En esta sección comenzamos el análisis teórico de métodos numéricos para tratar proble-
mas de valores iniciales de la forma (8.6). Nuestro primer paso es estudiar dos métodos
simples y clásicos, los llamados métodos de Euler.

Método de Euler hacia adelante

Supongamos que y(tk ) = yk y queremos determinar yk+1 . Podemos hacer un desarrollo


de Taylor de primer orden de la función y en tk para obtener

y(tk+1 ) = y(tk + hk ) = y(tk ) + hk y0 (tk ) + O(h2k ). (8.8)

Como (8.6) nos da y0 (tk ) = f (tk , yk ), tenemos que

y(tk+1 ) = yk + hk f (tk , yk ) + O(h2k ).

El método de Euler hacia adelante (o método de Euler explı́cito, o incluso a veces


llamado método de Euler, a secas) consiste en aproximar y(tk+1 ) descartando el término
O(h2k ) arriba, esto es, tomar

yk+1 := yk + hk f (tk , yk ). (8.9)

Ası́, el método de Euler hacia adelante consiste en lo siguiente: dada la sucesión t0 , t1 , . . . ,


para aproximar la solución de (8.6) tomamos el valor de y0 ∈ Rn y luego aplicamos la
iteración (8.9) para k ≥ 0.

Método de Euler hacia atrás

En forma análoga a (8.8), consideremos ahora un desarrollo de Taylor de primer orden de


la función y en tk+1 , evaluado en tk :

yk = y(tk+1 − hk ) = y(tk+1 ) − hk y0 (tk+1 ) + O(h2k ) = y(tk+1 ) − hk f (tk+1 , y(tk+1 )) + O(h2k ).

185
Métodos Numéricos Facultad de Ingenierı́a – IMERL

El método de Euler hacia atrás (o método de Euler implı́cito) consiste en descar-


tar el término O(h2k ) arriba y reemplazar y(tk+1 ) mediante el valor yk+1 , que es el que
queremos determinar. Concretamente, se define yk+1 como solución de la ecuación

yk = yk+1 − hk f (tk+1 , yk+1 ).

Luego, para resolver el problema (8.6) numéricamente con el método de Euler hacia atrás,
tomamos y0 ∈ Rn y luego realizamos la iteración

yk+1 = yk + hk f (tk+1 , yk+1 ). (8.10)

Observación 8.2.1 (una diferencia fundamental). Si bien los métodos (8.9) y (8.10) son en
apariencia muy similares, tienen diferencias fundamentales. A primera vista, es claro que si
conocemos yk entonces para determinar el iterado siguiente yk+1 con el método de Euler
hacia adelante, basta con reemplazar los valores conocidos de tk , yk en el lado derecho
de (8.9). Esto justifica la denominación de explı́cito para ese método. En cambio, para
determinar yk+1 con el método de Euler hacia atrás, nos encontramos con una ecuación
que debemos resolver. Dependiendo de cómo sea la función f , es posible que debamos usar
alguno de los métodos para ecuaciones no lineales que tratamos en el Capı́tulo 4. Ası́, en
el método de Euler hacia atrás en general el iterado yk+1 queda definido implı́citamente.
En un método numérico para discretizar ecuaciones diferenciales ordinarias, la diferencia
entre ser explı́cito o implı́cito tiene consecuencias tanto prácticas como analı́ticas. Desde el
punto de vista práctico, en general es mucho más sencillo computar iterados con métodos
explı́citos, y el costo computacional de agregar una resolución de una ecuación no lineal en
cada paso puede ser prohibitiva en varias aplicaciones. Sin embargo, los métodos implı́citos
por lo general gozan de mejores propiedades de estabilidad que los explı́citos, lo que a su
vez permite tomar pasos más largos y, en consecuencia, tomar menos pasos. Profundizamos
sobre este último punto en la Sección 8.3.3. 4

Ejemplo 8.2.1 (métodos de Euler). Consideremos el problema de valores iniciales para


la ecuación logı́stica (
y 0 (t) = ay(t)(1 − y(t)),
(8.11)
y(t0 ) = y0 ∈ (0, 1).
Aquı́, tenemos f (t, y) = ay(1 − y). Como f no depende de t, se dice que la ecuación
es autónoma. Esto implica que las soluciones no dependen de t0 : si z satisface la misma
ecuación diferencial pero z(t0 + ∆t) = y0 , entonces z(t) = y(t + ∆t) para todo t ≥ t0 . Es
decir, si se cambia el tiempo inicial, basta con trasladar la solución original acordemente.
Para este problema, el método de Euler hacia adelante (8.9) nos da la iteración

yk+1 = yk + ayk (1 − yk )hk = yk [1 + a(1 − yk )hk ] .

Notamos que, en esta iteración, podemos tomar los pasos sin mayor dificultad: dado yk ,
basta con evaluar el producto que tenemos del lado derecho para determinar yk+1 .

186
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Por otra parte, si aplicamos el método de Euler hacia atrás (8.10) para este problema,
obtenemos
yk+1 = yk + ayk+1 (1 − yk+1 )hk . (8.12)
Aquı́ observamos que no podemos evaluar el lado derecho directamente, sino que yk+1 está
dado implı́citamente. En este caso, como obtenemos una función cuadrática, podemos
despejar
p
2 −(1 − ah k ) ± (1 − ahk )2 + 4ahk yk
ahk yk+1 + (1 − ahk )yk+1 − yk = 0 ⇒ yk+1 = .
2ahk

En principio, el paso yk+1 no está únicamente definido. ¿Cómo determinamos cuál de


las dos soluciones tomar? Aquı́ debemos tener en cuenta el problema que estamos anali-
zando: si en algún instante τ la solución exacta del problema valiera y(τ ) = 0, entonces
tendrı́amos y(t) = 0 para todo t ≥ τ . Por lo tanto, las soluciones de nuestro problema no
cambian de signo. A los efectos de nuestro método numérico, esto quiere decir que si yk
es positivo, entonces yk+1 también debe serlo. Si reescribimos la expresión que obtuvimos
para yk+1 multiplicando y dividiendo por el conjugado del numerador y simplificamos,
llegamos a
2y
yk+1 = p k . (8.13)
(1 − ahk ) ± (1 − ahk )2 + 4ahk yk
Luego, si ahk < 1, la única forma de que yk+1 sea positivo es que la raı́z cuadrada en el
denominador esté sumando.
Si fijamos a = 1, y0 = 0,1, t0 = 0, la solución exacta a nuestro problema de valores
iniciales es
et
y(t) := t . (8.14)
e +9
La Figura 8.2 compara esta solución en el intervalo [0, 5] con las discretizaciones por los
métodos de Euler hacia adelante y hacia atrás con paso constante hk = h = 0,1. 4

Observación 8.2.2 (iteraciones). En el Ejemplo anterior, al considerar el método de Euler


hacia atrás pudimos despejar yk+1 . Como ya remarcamos, en general no esperamos que
esto sea posible y en cambio debemos buscar soluciones de una ecuación no lineal en cada
paso.
Una opción popular es realizar el siguiente método iterativo. Dado yk , queremos hallar
0
yk+1 que sea solución de (8.10). Se define yk+1 := yk y se usa la función de iteración
g(y) = yk + f (tk+1 , y)hk , esto es,
j+1 j
yk+1 := yk + f (tk+1 , yk+1 )hk , j ≥ 0.

Tı́picamente se hacen solamente unas pocas iteraciones en j antes de dar el siguiente paso
∂f ∂f
en k. Observamos que Jg (y) = hk ∂y (tk+1 , y), donde ∂y denota la matriz de derivadas
parciales de f respecto a la variable y. Por lo tanto, si hk es lo suficientemente pequeño,

187
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Figura 8.2: Solución a (8.11) para a = 1, y0 = 0,1, t0 = 0. En negro se representa la


solución exacta, mientras que las aproximaciones por los métodos de Euler hacia adelante
y hacia atrás con paso h = 0,1 están en azul y en rojo, respectivamente. Si bien las
soluciones numéricas solamente generan puntos {(tk , yk )}, representamos la interpolación
lineal a trozos para facilitar la visualización.

podemos garantizar que ρ(Jg (y)) < 1 y tendremos que la iteración es localmente con-
vergente. Además, a menos que y varı́e dramáticamente rápido, el iterado inicial yk va a
estar cerca de yk+1 .
Por ejemplo, apliquemos esta iteración a (8.12) para tomar el primer paso con los valores
de parámetros a = 1, y0 = 0,1, t0 = 0, y paso constante h = 0,1. Nuestra iteración toma
y10 = 0,1, e
y1j+1 = y0 + ay1j (1 − y1j )h1 = 0,1 + 0,1y1j (1 − y1j ), j ≥ 0.
Esto da lugar a los iterados

y11 = 0,1090, y12 = 0,1097119, y13 ≈ 0,1097675, y14 ≈ 0,1097719.

Para comparación, usando (8.13) obtenemos y1 ≈ 0,1097722. También remarcamos que el


primer iterado y11 es justamente el valor que toma el método de Euler hacia adelante. 4

8.3. Elementos de los métodos numéricos aplicados a


ecuaciones diferenciales ordinarias

8.3.1. Un poco de nomenclatura


A continuación, damos dos definiciones que son útiles para distinguir ciertas caracterı́sticas
de los métodos numéricos aplicados a ecuaciones diferenciales ordinarias. Si bien hasta

188
Métodos Numéricos Facultad de Ingenierı́a – IMERL

aquı́ consideramos métodos que para generar yk+1 solamente hacen uso del valor de yk ,
en principio es posible también utilizar la información respecto a iterados anteriores. Esto
conduce a la primera definición.

Definición 8.3.1 (métodos de un paso y multipaso). Un método numérico para resolver


el problema (8.6) se dice de un paso (o de paso simple) si, para todo k, el valor de
yk+1 solamente depende de yk y no depende de ningún otro iterado anterior. En caso de
depender de (uno o más) iterados anteriores a yk , se dice que el método es multipaso. 4

La segunda definición formaliza nuestra discusión de la Observación 8.2.1.

Definición 8.3.2 (métodos implı́citos y explı́citos). Un método numérico para resolver el


problema (8.6) se dice explı́cito si, para todo k, el valor de yk+1 se puede computar direc-
tamente en función de (uno o varios) iterados anteriores yj , j ≤ k. En cambio, un método
se dice implı́cito si en cada paso el valor de yk+1 queda determinado implı́citamente a
través de f . 4

Observación 8.3.1 (métodos de Euler). Los métodos de Euler (8.9) y (8.10) son ambos de
paso simple. El método de Euler hacia adelante es explı́cito y el de Euler hacia atrás es
implı́cito, tal como adelantamos en la Observación 8.2.1. 4

De aquı́ en adelante, solamente vamos a considerar métodos de un paso. Existen varios


métodos multipaso muy relevantes en la práctica, como los métodos de Adams (los de
Adams-Bashforth son explı́citos, y los de Adams-Moulton son implı́citos), pero su análisis
requiere algunas modificaciones respecto a los métodos de paso simple. En el práctico
consideramos el llamado método leapfrog de dos pasos,

yk+1 = yk−1 + (hk+1 + hk ) f (tk , yk ).

Este es un método multipaso porque para determinar yk+1 requerimos los valores de yk
e yk−1 , y es un método explı́cito porque para calcular yk+1 basta con reemplazar con los
valores de yk e yk−1 y operar.

8.3.2. Consistencia
Al analizar qué tan cerca está la solución que obtenemos mediante un método numérico
de la solución exacta de un problema de valores iniciales, hay dos nociones de error rele-
vantes. Una ecuación diferencial ordinaria admite una familia de soluciones y, al fijar una
condición inicial –esto es, al considerar un problema de valores iniciales–, seleccionamos
una de ellas. En nuestro método numérico para un problema de valores iniciales, al ir
haciendo pasos, a menos que el valor que encontremos sea exacto nos iremos cambiando
de solución dentro de esa familia. La Figura 8.3 ilustra este hecho: comenzando de (t0 , y0 ),
que se encuentra sobre la curva solución, al tomar el primer paso obtenemos un punto
(t1 , y1 ) que está sobre una curva distinta de la familia de soluciones. Al tomar otro paso,

189
Métodos Numéricos Facultad de Ingenierı́a – IMERL

nos vamos a mover a otra curva distinta, y ası́ sucesivamente. En el instante t3 , nuestro
método computa un valor y3 . Nos interesa conocer la discrepancia entre y3 e y(t3 ), la
distancia entre los puntos en rojo y verde hacia la derecha de la figura. Como el análisis
de los métodos se suele realizar considerando lo que ocurre al tomar solamente un paso, va
a ser útil considerar la discrepancia entre y3 y la solución exacta al problema que tiene la
misma ecuación diferencial pero condición inicial y(t2 ) = y2 en el instante t3 : tal solución
exacta es lo que llamamos u(t3 ) y marcamos con un punto en azul en la figura.

y(t3 )

u(t3 )
y3 y3

y2
y1

y0

t0 t1 t2 t3

Figura 8.3: Algunos pasos en un método numérico. El error global en el paso 3 es la


diferencia entre y3 e y(t3 ), mientras que el error de truncamiento en dicho paso es la
diferencia entre y3 y u(t3 ).

Definición 8.3.3 (errores global y local). Sea {(tk , yk )} dado por un método numérico
para aproximar el problema (8.6), cuya solución denotamos por y. Los errores globales
son {ek } dados por
ek := yk − y(tk ). (8.15)
Por otra parte, los errores locales de truncamiento (o errores de consistencia) {``k }
se definen de la siguiente manera: ` 0 = 0 y, para todo k ≥ 0,

` k+1 := yk+1 − u(tk+1 ), (8.16)

donde u es la solución del problema de valores iniciales


(
u0 (t) = f (t, u(t))),
u(tk ) = yk .

4
Definición 8.3.4 (consistencia). Diremos que un método numérico es consistente si
para todo k ≥ 0 se cumple
`k+1
→ 0 con hk = tk+1 − tk → 0.
hk

190
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Decimos que un método consistente es de orden p ≥ 1 si, cuando la solución y es de clase


C p+1 , se tiene
` k = O (hk )p+1 .

(8.17)
Remarcamos (recordar la Definición 0.0.1) que esto significa que existe una constante
C > 0, que no depende de hk , tal que

k``k k ≤ C (hk )p+1 .

La elección de qué norma usar aquı́ es irrelevante porque todas las normas en Rn son
equivalentes. 4

Observación 8.3.2 (no es un error de tipeo). Puede parecer llamativo que, en la definición
anterior, para referirnos a un método de orden p, en la fórmula (8.17) aparece un exponente
p + 1. La razón es que para definir el orden de un método usamos los errores locales de
truncamiento. La cantidad que nos interesa es en realidad el error global y, en el pasaje de
local a global tendremos un efecto de acumulación de error que, en el mejor de los casos,
nos hace perder un orden (ver (8.20) más abajo). 4

Ejemplo 8.3.1 (los métodos de Euler son de primer orden). Analicemos los errores de
consistencia para los métodos de Euler explı́cito e implı́cito. Para ello, dado yk , debemos
estudiar los errores de truncamiento dados por (8.16).
Para el método de Euler hacia adelante (8.9) tenemos

` k+1 = yk+1 − u(tk+1 ) = yk + f (tk , yk )hk − u(tk+1 ).

Esta diferencia es justamente lo que estimamos en (8.8) haciendo un desarrollo de Taylor:


tenemos
u(tk+1 ) = yk + hk y0 (tk ) + O(h2k ) = yk + f (tk , yk )hk + O(h2k ),
porque u0 (tk ) = f (tk , yk ) = y0 (tk ). Por lo tanto, ` k+1 = O(h2k ) y deducimos que el método
de Euler hacia adelante es consistente y es de primer orden.
Un razonamiento similar permite probar que el método de Euler hacia atrás es de primer
orden, y queda como ejercicio en el práctico. 4

8.3.3. Cero-estabilidad
La noción de estabilidad de un método numérico para resolver una ecuación diferencial
ordinaria es análoga a la de estabilidad de soluciones: queremos que pequeñas pertur-
baciones en un determinado instante no generen que la solución que obtengamos crezca
indefinidamente en tiempos posteriores.
El concepto de cero-estabilidad garantiza que en un intervalo acotado fijo pequeñas pertur-
baciones de los datos producen perturbaciones acotadas de la solución numérica, cuando
la longitud del paso máximo tiende a 0. El requerimiento de estabilidad de un método

191
Métodos Numéricos Facultad de Ingenierı́a – IMERL

aparece, en primer lugar, de la necesidad de mantener bajo control los errores introducidos
al estar utilizando aritmética de punto flotante. En efecto, si un método numérico no es
cero-estable, los errores de redondeo tanto al tomar y0 como en el proceso de evaluar f
harı́an que la solución computada fuera completamente inútil.

Definición 8.3.5 (cero-estabilidad). Consideremos un método numérico de un paso que


discretiza la ecuación diferencial y0 (t) = f (t, y(t)). Decimos que el método es cero-estable
si, para todo T > t0 , si tomamos t0 < t1 < . . . < tK = T arbitrarios y consideramos
{(tk , yk )}k=1,...,K , {(tk , zk )}k=1,...,K las soluciones numéricas a problemas de valores iniciales
con condiciones iniciales y0 y z0 respectivamente, entonces existen C > 0, H > 0 tal que
si hk := tk+1 − tk < H ∀k = 0, . . . , K, entonces

kyk − zk k ≤ Cky0 − z0 k ∀k = 0, . . . , K.

El nombre de cero-estabilidad proviene del hecho de que la definición anterior no depende


del problema de valores iniciales considerado, y basta con verificar la definición en el
sencillo problema y 0 (t) = 0. No vamos a profundizar en este concepto, pero señalamos el
siguiente resultado [QSS10, Sección 11.3].

Proposición 8.3.1. Consideremos el problema de valores iniciales (8.6) sobre un interva-


lo de la forma I = [t0 , Tmax ], con f en las hipótesis del Teorema de Picard 8.1.1. Entonces,
todo método de un paso para resolver dicho problema que sea consistente también es cero-
estable.

8.3.4. Convergencia
La pregunta de convergencia refiere a qué ocurre cuando en nuestro método numérico
hacemos que la longitud de todos los pasos tienda a 0. Tı́picamente, en la práctica, incluso
cuando el problema (8.6) esté definido en un intervalo no acotado I = [t0 , ∞), al resolverlo
numéricamente y hacer que la longitud máxima del paso tienda a 0 nos interesa controlar
los errores hasta algún tiempo máximo finito. Por lo tanto, en esta sección vamos a
trabajar con problemas sobre intervalos finitos I = [t0 , Tmax ).

Definición 8.3.6 (convergencia). Diremos que un método numérico para resolver el pro-
blema (8.6) es convergente si, para todo T ∈ (t0 , Tmax ) fijo, si tomamos t0 < t1 < . . . <
tK = T arbitrarios y llamamos h := máxk=0,...,K−1 hk = máxk=0,...,K−1 tk+1 − tk , tenemos

lı́m eK = lı́m yK − y(tK ) = 0.


h→0 h→0

En palabras, la convergencia de un método quiere decir que, para todo tiempo fijo T , al
hacer que los largos del paso tiendan a 0, se tiene que el valor computado por el método
en tiempo T converge al valor de la solución en dicho tiempo. 4

192
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Un resultado central en la teorı́a de métodos numéricos para aproximar ecuaciones dife-


renciales es el siguiente.

Teorema 8.3.2 (de equivalencia de Lax-Richtmyer). Todo método consistente es conver-


gente si y sólo si es cero-estable.

El teorema anterior tiene un significado preciso en el contexto que hemos discutido hasta
ahora, pero su significado “filosófico” también es válido en otros contextos. Muchas veces,
la convergencia de métodos numéricos (que el lı́mite de lo que computamos sea la función
buscada) es equivalente a alguna forma de consistencia (que las ecuaciones que se quiere
aproximar se verifiquen en el lı́mite en que los parámetros de discretización tienden a
cero) más alguna forma de estabilidad (que el método no magnifique descontroladamente
los errores de redondeo y de aproximación numérica).
Recordamos que los métodos de un paso consistentes son cero-estables, por lo que el
Teorema 8.3.2 establece su convergencia. Podemos hacer más preciso el contenido de ese
teorema en ese caso, vinculando los errores de truncamiento y globales.

Teorema 8.3.3 (errores locales y globales). Si tenemos un método de un paso consistente


{(tk , yk )}k=0,...,K para el problema de valores iniciales (8.6) sobre un intervalo de la forma
I = [t0 , Tmax ], con f en las hipótesis del Teorema de Picard 8.1.1, entonces existe una
constante C > 0 tal que para cada k = 0, . . . , K se tiene
k
X
kek k ≤ C k``j k. (8.18)
j=1

La constante C aquı́ depende de la constante L de Lipschitz de f respecto a y (ver (8.7)),


de kf 00 kL∞ (I) , y de T .

La fórmula (8.18) permite deducir órdenes de convergencia. En efecto, consideremos


un tiempo T > t0 , en el que asumimos que la solución del problema (8.6) está bien definida,
y en el que queremos estimar la discrepancia entre la solución y nuestras aproximaciones
numéricas con largos de paso tendiendo a 0.
Usamos el Teorema 8.3.2 sobre el intervalo I = [t0 , T ] con un método que produce
{(tk , yk )}k=0,...,K ; notar que tK = T . Si el método que estamos considerando es consis-
tente de orden p, entonces tenemos k``j k ≤ C̃hp+1 j−1 para todo j = 1, . . . , K para alguna
constante fija C̃ > 0. Si reemplazamos en (8.18) y combinamos las constantes que apare-
cen, tenemos
XK K
X
keK k = kyK − y(T )k ≤ C k``j k ≤ C hp+1
j−1 . (8.19)
j=1 j=1

Tal como hicimos en la Definición 8.3.6, denotamos h := máxk=0,...,K−1 hk =


máxk=0,...,K−1 tk+1 − tk al paso máximo. Con esta notación, llegamos a que el error en

193
Métodos Numéricos Facultad de Ingenierı́a – IMERL

el tiempo T se puede acotar por


K K
!
X X
keK k ≤ C hp+1
j−1 ≤ C hj−1 hp = C(T − t0 )hp . (8.20)
j=1 j=1

Concluimos que si el método es consistente de orden p, entonces el error en T


es O(hp ).

8.3.5. Estabilidad absoluta


La cero-estabilidad trata con lo que ocurre con las soluciones numéricas en intervalos de
tiempo acotados al hacer que el paso máximo h → 0. Aquı́ consideramos una pregunta
análoga pero con los roles del intervalo del tiempo y del paso temporal invertidos: ¿qué
ocurre computacionalmente al resolver (8.6) sobre I = [t0 , Tmax ] cuando Tmax → ∞ y el
paso máximo h está fijo? En ese caso, fórmulas como (8.20) pierden sentido: una vez que
fijamos un paso máximo h, el lado derecho en (8.20) tiene una cantidad no acotada, ya
que podrı́amos tomar T arbitrariamente grande. Por lo tanto, nos interesan los métodos
que sean capaces de aproximar la solución en intervalos de tiempo arbitrariamente largos,
incluso con pasos relativamente “grandes”.
Esta forma de estabilidad, llamada estabilidad absoluta, nos da una pauta del comporta-
miento práctico de los métodos: en aplicaciones, es claro que cuanto menor sea h, más
pasos debemos dar y por lo tanto mayor es el costo computacional del algoritmo que
usemos. Por lo tanto, es deseable que el método no requiera que los pasos sean demasiado
pequeños para producir una buena aproximación a la solución del problema de valores
iniciales.
Para definir la estabilidad absoluta se utiliza el problema test que introdujimos en el
Ejemplo 8.1.1. En concreto, para λ < 0, consideramos el problema de valores iniciales
(
y 0 (t) = λy(t),
(8.21)
y(0) = 1.

La solución de este problema es y(t) = eλt , que cumple y(t) → 0 con t → ∞ porque
λ < 0. Consideremos un método numérico con paso fijo h > 0, que produce una sucesión
{(tk , yk )}. Deseamos que yk → 0 con k → ∞: si esto ocurre, decimos que el método es
absolutamente estable3 para ese paso.
Analicemos la estabilidad de los métodos de Euler, comenzando por el explı́cito. Si apli-
camos (8.9) a (8.21), nos encontramos con que, para cada k ≥ 0,

yk+1 = yk + hλyk = (1 + hλ)yk .


3
También se puede encontrar la expresión estable a secas para referirse a la estabilidad absoluta.

194
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Como y0 = 1, deducimos que


yk = (1 + hλ)k ∀k ≥ 0.
Para tener yk → 0 con k → ∞, necesitamos entonces que sea
|1 + hλ| < 1 ⇔ −1 < 1 + hλ < 1.
Como h > 0 y λ < 0, la segunda desigualdad de arriba se cumple trivialmente. Sin
embargo, para que valga la primera es necesario que sea
2
h< . (8.22)
|λ|
En conclusión, el método de Euler explı́cito solamente es absolutamente estable si el paso h
satisface la condición (8.22): se trata de un método condicionalmente absolutamente
estable.
Consideremos ahora el método de Euler hacia atrás. Al discretizar (8.21) con dicho méto-
do, nos encontramos con que y0 = 1 e
yk
yk+1 = yk + hλyk+1 ⇒ yk+1 = .
1 − hλ
Esto implica que
1
yk = ∀k ≥ 0.
(1 − hλ)k
Como 1 − hλ > 1, tenemos yk → 0 independientemente de la longitud del paso h. Esto
significa que el método de Euler hacia atrás es incondicionalmente absolutamente
estable.
Observación 8.3.3 (por qué usamos el problema test). Remarcamos que el hecho de ser o no
absolutamente estable se verifica usando el problema test (8.21). Justifiquemos brevemente
el uso de dicho problema para el caso escalar (n = 1). Si la solución y(t) que estamos
obteniendo es una perturbación de otra solución ŷ(t) a la misma ecuación diferencial
y 0 (t) = f (t, y(t)), entonces debemos analizar qué ocurre con su diferencia w := y − ŷ, que
verifica
w0 (t) = y 0 (t) − ŷ 0 (t) = f (t, y(t)) − f (t, ŷ(t)).
Si hacemos un desarrollo de Taylor para f , tenemos
f (t, y(t)) = f (t, ŷ(t)) + fy (t, ŷ(t))(y(t) − ŷ(t)) + O((y(t) − ŷ(t))2 )
= f (t, ŷ(t)) + fy (t, ŷ(t)) w(t) + O((w(t))2 ),
por lo que podemos aproximar
w0 (t) = f (t, y(t)) − f (t, ŷ(t)) ≈ fy (t, ŷ(t)) w(t).
Observamos que la perturbación w satisface una ecuación como la del problema test, pero
con un factor fy (t, ŷ(t)) en lugar de λ. Nuestro análisis de estabilidad absoluta se basa en
suponer que las perturbaciones son pequeñas, lo que nos permite linealizar, y en tomar
λ < 0 es arbitrario, lo que nos permite “cubrirnos” de qué valores tome la derivada parcial
de f respecto a y. 4

195
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Observación 8.3.4 (estabilidad en el plano complejo). En la literatura, es habitual con-


siderar λ ∈ C en el problema test para definir una región de estabilidad absoluta sobre
el plano complejo. Esto se debe a que, para sistemas de ecuaciones, debemos reemplazar
fy en la observación anterior por la matriz jacobiana de f respecto a y, y se llega a una
ecuación para perturbaciones lineales de la forma

w0 (t) ≈ Jf (t, ŷ(t)) w(t).

Para que w → 0 con t → ∞, necesitamos que el radio espectral de esta matriz jacobiana
sea menor que 1. Como los valores propios de una matriz real en general son complejos,
es matemáticamente más correcto permitir λ ∈ C en el problema test para definir una
región de estabilidad en lugar de un intervalo.
Formalmente, para el problema test y 0 = eλy , la región de estabilidad es el conjunto

A := {z := hλ ∈ C : |yk | → 0}.

Luego, se dice que un método es A-estable si A ∩ C− = C− , donde C− := {z ∈


C : Re(z) < 0} es el conjunto de números complejos con parte real negativa. 4

Ejemplo 8.3.2 (métodos de Euler aplicados al problema test). Tomamos λ = −2 en el


problema test (8.21), e implementamos los métodos de Euler hacia adelante y hacia atrás
con distintos pasos h. Notamos que, para la estabilidad del método de Euler explı́cito, la
condición (8.22) indica que debemos tomar h < 1. Computamos soluciones al problema
en el intervalo I = [0, 20] con 50, 30, 20 y 15 pasos uniformes, lo que corresponde a h =
2/5, 2/3, 1, 4/3, respectivamente. La primera fila muestra las soluciones para el método de
Euler explı́cito, mientras que la segunda muestra las soluciones para el método implı́cito.
Los resultados confirman nuestro análisis anterior. Para el método de Euler hacia adelante,
cuando h < 1, las soluciones decrecen en magnitud al aumentar k; cuando h = 1, la
solución numérica oscila entre y2k = 1 e y2k+1 = −1; cuando h > 1 la solución numérica
aumenta en magnitud al aumentar k. En cambio, para el método de Euler hacia atrás,
independientemente de la longitud del paso se tiene que las soluciones numéricas decrecen
al aumentar k.
4

Observación 8.3.5 (estabilidad de métodos explı́citos). El hecho de que el método de Euler


hacia adelante sea condicionalmente estable es consecuencia de un resultado más general,
que dice que ningún método explı́cito es incondicionalmente absolutamente esta-
ble. En otras palabras, si un método es incondicionalmente estable, entonces es implı́cito.
Sin embargo, no todos los métodos implı́citos son incondicionalmente estables. 4

196
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Figura 8.4: Solución a (8.21) para λ = −2 en I = [0, 20]. En rojo se representa la solución
exacta, mientras que en azul se muestran las soluciones producidas por los métodos de
Euler hacia adelante (primera fila) y de Euler hacia atrás (segunda fila). En todos los
casos se tomaron pasos uniformes, con valores h = 2/5, h = 2/3, h = 1 y h = 4/3, de
izquierda a derecha.

8.4. Método del trapecio


Hasta aquı́ solamente hemos trabajado con los métodos de Euler, que son de primer orden.
En esta sección introducimos un nuevo método, el llamado método del trapecio4 , que

4
En el contexto de ecuaciones en derivadas parciales, este método también recibe el nombre de método
de Crank-Nicolson.

197
Métodos Numéricos Facultad de Ingenierı́a – IMERL

resulta al combinar los métodos de Euler. En efecto, para el problema de valores iniciales
(8.6), este método consiste en aproximar y(tk+1 ) por
 
f (tk , yk ) + f (tk+1 , yk+1 )
yk+1 := yk + hk . (8.23)
2
En otras palabras, los iterados del método del trapecio se calculan poniendo del lado
derecho la mitad de la suma entre los lados derechos correspondientes a los iterados de
los métodos de Euler hacia adelante y de Euler hacia atrás.
A partir de la definición (8.23), se infiere inmediatamente que el método del trapecio es
implı́cito.
Proposición 8.4.1. El método del trapecio es incondicionalmente absolutamente estable
y es de segundo orden.

Demostración. Comenzamos por la estabilidad. Aplicando (8.23) al problema test (8.21),


tenemos y0 = 1 e

yk+1 = yk + (yk + yk+1 ) , k ≥ 0.
2
Esto da lugar a
!k  k
1 + hλ2 2 + hλ
yk = = .
1 − hλ2
2 − hλ
Por lo tanto, para que el método del trapecio sea A-estable, requerimos
|2 + hλ| < |2 − hλ|.
Como λ < 0, es sencillo verificar que esta condición se satisface para todo h > 0.
A continuación demostramos que el método del trapecio es de segundo orden. Dado yk ,
sea u la solución del problema
(
u0 (t) = f (t, u(t))),
u(tk ) = yk .

Queremos probar que el error de truncamiento cumple ` k+1 = yk+1 − u(tk+1 ) = O(h3k ),
asumiendo que u es de clase C 3 . Para ello, hacemos un desarrollo de Taylor alrededor de
tk , evaluado en tk+1 :
h2k 00
u(tk+1 ) = u(tk ) + hk u0 (tk ) + u (tk ) + O(h3k )
2 (8.24)
h2k 00 3
= yk + hk f (tk , yk ) + u (tk ) + O(hk ).
2
00
Para tratar el término u (tk ), recordamos de la Sección 1.5.3 que la aproximación por
diferencias hacia adelante es de primer orden, esto es,
00 u0 (tk+1 ) − u0 (tk )
u (tk ) = + O(hk ).
hk

198
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Combinando estas identidades y usando que u0 (t) = f (t, u(t))), obtenemos

h2k 00
u(tk+1 ) = yk + hk f (tk , yk ) + u (tk ) + O(h3k )
2
hk
= yk + hk f (tk , yk ) + [f ((tk+1 , u(tk+1 )) − f (tk , yk )] + O(h3k )
2
hk
= yk + [f ((tk+1 , u(tk+1 )) + f (tk , yk )] + O(h3k ).
2
Teniendo en cuenta la definición (8.23) de los iterados con el método del trapecio, obte-
nemos
hk
` k+1 = [f (tk+1 , yk+1 ) − f (tk+1 , u(tk+1 ))] + O(h3k ). (8.25)
2
Como f es Lipschitziana respecto a la segunda variable, existe una constante C > 0 tal
que
kf (tk+1 , yk+1 ) − f ((tk+1 , u(tk+1 ))k ≤ Ckyk+1 − u(tk+1 )k = Ck``k+1 k.
Por lo tanto, tomando normas en (8.25) y usando la desigualdad triangular, deducimos
hk
k``k+1 k ≤ C k``k+1 k + O(h3k ).
2
Como queremos hacer hk → 0, podemos asumir que hk < 2/C para la constante que
aparece en la desigualdad anterior, y esto implica que k``k+1 k = O(h3k ).

8.5. Métodos de Runge-Kutta


A continuación, describimos una familia de métodos un poco más general que los que
hemos considerado hasta el momento. Los métodos de Runge-Kutta son una clase de
métodos de un paso que permiten alcanzar órdenes superiores al realizar varias evalua-
ciones de la función f en cada intervalo [tk , tk+1 ].
En forma general, los iterados en los métodos de Runge-Kutta se escriben como
s
X
yk+1 := yk + hk bi K i , (8.26)
i=1

donde !
s
X
Ki := f tk + ci hk , yk + hk aij Kj , (8.27)
j=1

y aij , bi , ci ∈ R son a determinar. Al número s se le llama la cantidad de etapas del


método.
Los números Ki corresponden a evaluaciones de f en puntos “intermedios” entre (tk , yk )
y (tk+1 , yk+1 ). Observemos que si aij = 0 para todo j ≥ i, entonces los valores de los Ki

199
Métodos Numéricos Facultad de Ingenierı́a – IMERL

se pueden determinar en forma explı́cita y, en consecuencia, el método de Runge-Kutta


(8.26) resultante es explı́cito. En cambio, si hay algún valor de aij con j ≥ i que no sea
nulo, entonces Ki queda implı́citamente determinado y por lo tanto el método resultante
es implı́cito.
Observación 8.5.1 (los métodos conocidos son de Runge-Kutta). La familia de métodos
de Runge-Kutta incluye a los métodos que ya hemos discutido. Por ejemplo5 :

si en (8.26)–(8.27) fijamos s = 1, c1 = 0, a11 = 0, b1 = 1, obtenemos el método de


Euler hacia adelante;

si en (8.26)–(8.27) fijamos s = 1, c1 = 1, a11 = 1, b1 = 1, obtenemos el método de


Euler hacia atrás;

si en (8.26)–(8.27) fijamos s = 2, c1 = 0, c2 = 1, a11 = a12 = 0, a21 = a22 = 1/2,


b1 = b2 = 1/2, obtenemos el método del trapecio.

8.5.1. Construcción de métodos de Runge-Kutta


Para una determinada cantidad de etapas s, se eligen valores de los coeficientes aij , bi , ci
en (8.26) y (8.27) de modo que el error de truncamiento sea de un determinado orden;
muchas veces, se busca que el método resultante sea del mayor orden posible. Para ilustrar
ideas, fijemos s = 2 y busquemos métodos de Runge-Kutta explı́citos y de segundo orden.
Tales métodos se pueden escribir como

yk+1 = yk + hk (b1 K1 + b2 K2 ),

donde
K1 = f (tk + c1 hk , yk ) , K2 = f (tk + c2 hk , yk + hk a21 K1 ) .
Por lo tanto, debemos hallar valores de los cinco parámetros b1 , b2 , c1 , c2 , a21 que logren
que el error de truncamiento sea ` k+1 = O(h3k ). Comenzamos, como ya en este punto el
lector podrá sospechar, por el desarrollo de Taylor (8.24):

h2k 00
u(tk+1 ) = yk + hk f (tk , yk ) + u (tk ) + O(h3k ).
2
Para alivianar la notación, pondremos f := f (tk , yk ), ft = ∂f (t , yk ), fy =
∂t k
∂f
(t , yk );
∂y k
las
dos primeras cantidades son vectoriales y la última es matricial. Como
d
u00 (tk ) = f (t, y(t)) t=tk
= ft + fy y0 (tk ) = ft + fy f ,
dt
5
El primer punto es elemental de verificar. La verificación de los dos últimos no es tan directa como
parece.

200
Métodos Numéricos Facultad de Ingenierı́a – IMERL

podemos escribir
h2k h2
u(tk+1 ) = yk + hk f + ft + k fy f + O(h3k ). (8.28)
2 2
Dejamos esta fórmula en pausa y buscamos una expresión análoga para el paso del método
de Runge-Kutta. Para simplificar el análisis, asumimos que c1 = 0, lo que implica K1 = f .
Además, un desarrollo de Taylor para f nos da
K2 = f (tk + c2 hk , yk + hk a21 K1 ) = f + c2 hk ft + fy hk a21 K1 + O(h2k ).
Con estas dos expresiones, obtenemos
yk+1 = yk + hk b1 K1 + hk b2 K2
= yk + hk b1 f + hk b2 [f + c2 hk ft + fy hk a21 f + O(h2k )] (8.29)
= yk + hk (b1 + b2 )f + h2k b2 c2 ft + h2k a21 b2 fy f + O(h3k ).
Para lograr un método cuyo error local de truncamiento sea O(h3k ), basta con comparar los
desarrollos (8.28) y (8.29) e imponer igualdades término a término en los lados derechos:

 b1 + b2 = 1
b2 c2 = 12 . (8.30)
1
a21 b2 = 2

Enfatizamos que cualquier elección de b1 , b2 , c2 , a21 que sea solución de este sistema da
lugar a un método de Runge-Kutta explı́cito de segundo orden. Es sencillo observar que el
sistema de arriba tiene infinitas soluciones, que se pueden parametrizar como b2 = α 6= 0,
1
b1 = 1 − α, c2 = a21 = 2α . Mencionamos a continuación dos ejemplos clásicos.

Método de Heun. Corresponde a tomar α = 1/2, esto es, b1 = b2 = 1/2, c2 = a21 = 1


en (8.30). Ası́, dado yk , el iterado yk+1 para el método de Heun se determina calculando
K1 = f (tk , yk ) ,
K2 = f (tk + hk , yk + hk K1 ) ,
hk
yk+1 = yk + (K1 + K2 ).
2
Los cálculos en cada paso se deben realizar en el orden que escribimos arriba, y es cla-
ro que el método resultante es explı́cito. Por diseño, se tiene que es de segundo orden.
Naturalmente, también podemos escribir el iterado en forma compacta (aunque no muy
agradable):
hk
yk+1 = yk + (f (tk , yk ) + f (tk + hk , yk + hk f (tk , yk ))). (8.31)
2
El método de Heun es condicionalmente absolutamente estable. En efecto, si lo aplicamos
al problema test (8.21) con paso constante h > 0, se llega a que
k
(hλ)2

yk = 1 + hλ + y0 . (8.32)
2

201
Métodos Numéricos Facultad de Ingenierı́a – IMERL

(hλ)2
Por lo tanto, necesitamos que valga |1 + hλ + 2
| < 1. Operando elementalmente,
concluimos la condición de estabilidad absoluta

2
h< .
|λ|

Es interesante observar que esta condición es la misma que la que obtuvimos para el
método de Euler (8.22). Remarcamos, sin embargo, que si el análisis se hace sobre el
plano complejo, en el espı́ritu de la Observación 8.3.4, entonces se obtiene una región de
estabilidad que contiene estrictamente a la del método de Euler.

Ejercicio 8.1. Demostrar la identidad (8.32).

Método de Euler modificado (o del punto medio explı́cito). Corresponde a tomar


α = 1, esto es, b1 = 0 , b2 = 1, c2 = a21 = 1/2 en (8.30). Esto da lugar a un iterado

K1 = f (tk , yk ) ,
 
hk hk
K2 = f tk + , yk + K1 ,
2 2
yk+1 = yk + hk K2 ,

o, en forma compacta,
 
hk hk
yk+1 = yk + hk f tk + , yk + f (tk , yk ) .
2 2

Por diseño, es un método de segundo orden. Además, es condicionalmente absolutamente


estable, con condición de estabilidad idéntica a la del método de Heun,

2
h< .
|λ|

8.5.2. El método de Runge-Kutta

La construcción de la sección anterior es generalizable a mayores cantidades de etapas


y, por ende, permite obtener métodos de mayor orden. En la medida que aumentamos
la cantidad de etapas, el procedimiento se vuelve más engorroso. Sin embargo, existe un
método de Runge-Kutta explı́cito de 4 etapas que es extremadamente popular, al punto
que muchas veces se lo denomina como el método de Runge-Kutta. Dicho método consiste

202
Métodos Numéricos Facultad de Ingenierı́a – IMERL

en tomar
K1 = f (tk , yk ),
 
hk hk
K2 = f tk + , yk + K1 ,
2 2
 
hk hk
K3 = f tk + , yk + K2 , (8.33)
2 2
K4 = f (tk + hk , yk + hk K3 ) ,
hk
yk+1 = yk + (K1 + 2K2 + 2K3 + K4 ) .
6
Este es un método de cuarto orden y es condicionalmente absolutamente estable.

Ejemplo 8.5.1 (métodos de Runge-Kutta). Para ilustrar las implicancias prácticas de


usar métodos de alto orden, comparamos los métodos de Euler explı́cito (8.9), de Heun
(8.31) y de Runge-Kutta de 4 pasos (8.33) para la ecuación logı́stica (8.11). Al igual que
en el Ejemplo 8.2.1, consideramos a = 1, y0 = 0,1, I = [0, 5]. La Figura 8.5 muestra las
soluciones obtenidas con los métodos mencionados con paso constante h = 1. La solución

Figura 8.5: Solución a (8.11) en el intervalo [0, 5], para a = 1, y0 = 0,1, con paso constante
h = 1. La solución exacta se representa con la curva en negro, mientras que los las
aproximaciones por los métodos de Euler hacia adelante (azul), de Heun (rojo) y de
Runge-Kutta de 4 pasos (verde) se representan con puntos.

a este problema en tiempo T = 5 vale (recordar (8.14))

0,1e5
y(5) = ≈ 0,9428.
0,1e5 + 1 − 0,1

203
Métodos Numéricos Facultad de Ingenierı́a – IMERL

La siguiente tabla muestra la evolución de los errores en T = 5 para los tres métodos al
tomar pasos de longitud constante e ir reduciendo la longitud del paso a la mitad.

h Euler Heun RK4


1 2,3 × 10−2 −3,2 × 10−2 −9,6 × 10−4
1/2 8,4 × 10−3 −6,3 × 10−3 −5,0 × 10−5
1/4 3,8 × 10−3 −1,5 × 10−3 −2,9 × 10−6
1/8 1,8 × 10−3 −3,5 × 10−4 −1,8 × 10−7
1/16 8,8 × 10−4 −8,8 × 10−5 −1,1 × 10−8

Es interesante observar cómo evolucionan los errores: a grosso modo, cuando se divide h
por la mitad, para el método de Euler el error se reduce a la mitad, para el de Heun en un
factor de 4, y para el de Runge-Kutta de 4 etapas en un factor de 16. Esto es coherente
con los hechos de que el método de Euler es de primer orden, el de Heun de es de segundo
orden, y el de Runge-Kutta de 4 etapas es de cuarto orden.
En general, usar métodos de orden más alto tiene sentido en la medida en que la solución
buscada sea suave y sus derivadas de orden alto no crezcan demasiado rápidamente. 4

8.6. Esquemas predictores-correctores


En esta sección comentamos brevemente sobre los llamados esquemas predictores-
correctores y, en cierta forma, esta discusión complementa a la Observación 8.2.2. Esa
observación trata sobre que cuando consideramos un método implı́cito para resolver un
problema de valores iniciales, muchas veces nos enfrentamos a que debemos resolver ecua-
ciones algebraicas no lineales para poder computar los iterados, y se plantea como opción
hacer iteraciones de punto fijo usando como iterado inicial el valor de la solución en el
paso anterior.
Muchas veces, se pueden obtener mejores iterados iniciales usando un paso de un método
explı́cito. De hecho, se puede demostrar que si se tiene yk y se quiere computar yk+1 con
un método implı́cito de orden p, entonces haciendo una iteración de punto fijo usando
como iterado inicial un paso de un método explı́cito de orden (al menos) p − 1 se consigue
1
que, en un paso, la aproximación yk+1 sea del mismo orden que el “iterado correcto” yk+1 .
En esto consisten los esquemas predictores-correctores: dado yk , se usa un método
(P )
explı́cito para predecir un valor yk+1 , y luego se utiliza dicho valor en un paso de corrección
que aplica un método implı́cito. Este procedimiento da lugar a un método explı́cito y de
orden p.

Ejemplo 8.6.1 (otra forma de entender el método de Heun). Dado el problema (8.6),
hacemos un par predictor-corrector usando el método de Euler hacia adelante (8.9) como

204
Métodos Numéricos Facultad de Ingenierı́a – IMERL

predictor y el del trapecio (8.23) como corrector,


(P )
yk+1 := yk + hk f (tk , yk ),
(P )
!
f (tk , yk ) + f (tk+1 , yk+1 )
yk+1 := yk + hk .
2

Enfatizamos que la diferencia entre la segunda fórmula arriba y (8.23) está en que aquı́,
(P )
del lado derecho no aparece el valor desconocido yk+1 sino el valor ya computado yk+1 .
Hemos obtenido el iterado
 
f (tk , yk ) + f (tk+1 , yk + hk f (tk , yk ))
yk+1 := yk + hk ,
2
que es exactamente igual a (8.31): el método de Heun es el esquema predictor-corrector
que surge al combinar los métodos de Euler hacia adelante con el del trapecio. 4
Ejemplo 8.6.2. Construimos el par predictor-corrector usando el método de Euler hacia
adelante (8.9) como predictor y el de Euler hacia atrás (8.10) como corrector. Para cada
k ≥ 0, dado yk , procedemos en dos etapas:
(P )
yk+1 := yk + hk f (tk , yk ) (paso predictor),
(P )
yk+1 := yk + hk f (tk+1 , yk+1 ) (paso corrector).
(P )
Podemos reemplazar el valor de yk+1 en la segunda fórmula, lo que da lugar a

yk+1 := yk + hk f (tk+1 , yk + hk f (tk , yk )).

No nos hemos encontrado con este método directamente, pero podemos interpretarlo
como un método de Runge-Kutta de dos etapas, en las que en (8.26)–(8.27) se toma
s = 2, c1 = 0, c2 = 1, a11 = a12 = a22 = 0, a21 = 1, b1 = 0, b2 = 1. Como este conjunto de
parámetros no satisface (8.30), este método no es de segundo orden. Dejamos al lector la
tarea de verificar que es de primer orden. Este método no tiene mayor interés práctico. 4

8.7. Solvers
Tanto Matlab como Octave tienen incorporados varios solvers, que permiten obtener su-
cesiones {(tk , yk )} utilizando distintos métodos. Naturalmente, distintos métodos pueden
tener diferentes ventajas o desventajas, ser más o menos precisos, o más o menos deman-
dantes computacionalmente. La elección de qué método usar puede depender de nuestros
requerimientos como también de algunas caracterı́sticas del problema que queremos re-
solver.
Los solvers de ecuaciones diferenciales ordinarias son funciones de Octave/Matlab cuyo
nombre es del tipo odeNNX. La sigla ode proviene del inglés ordinary differential equation,

205
Métodos Numéricos Facultad de Ingenierı́a – IMERL

NN es un par de números que indican el orden del método que el solver utiliza, y X es un
conjunto (posiblemente vacı́o) de caracteres que indica alguna caracterı́stica especial de
dicho método. Todavı́a no hemos definido qué es el orden de un método (ver la Definición
8.3.4 más abajo) pero, por el momento, basta con considerar que el orden es un indicador
de precisión.
Una caracterı́stica importante de estos solvers es que utilizan pasos variables, esto es,
dada una cierta tolerancia de error, intentan tomar los pasos lo mayor posible de modo
que la solución computada sea aceptable para dicha tolerancia y que pueda ser computada
de forma económica. La determinación de los pasos se hace usando estimadores de error:
explicamos algunas ideas sobre el tema en la Sección 8.7.1.
A continuación, damos una lista de algunos solvers que podemos utilizar y una breve
descripción como referencia.

ode45 usa un par de métodos de Runge-Kutta explı́citos, uno de orden 4 y otro de


orden 5: es el llamado par de Dormand-Prince. El método de orden 4 es utilizado
para computar los iterados, mientras que el de orden 5 se usa principalmente para
estimar el error y determinar el largo del paso. De acuerdo con la documentación
de Matlab, éste “es el primer solver que deberı́a probar para solucionar la mayorı́a
de problemas.”

ode23 también usa un par de métodos de Runge-Kutta explı́citos, pero uno de orden
2 y otro de orden 3. En forma similar a ode45, los iterados se computan usando el
método de orden 2 y el de orden 3 se usa principalmente para estimar el error y
determinar el largo del paso. Puede ser más eficiente que ode45 para tolerancias de
error grandes o en problemas moderadamente rı́gidos.

ode23s usa un par de métodos de Runge-Kutta, pero la letra s al final de su nombre


nos indica que es un solver diseñado para problemas rı́gidos6 . Es apropiado para
problemas de este tipo en los que tengamos requerimientos bajos de precisión.

ode15s también es un solver para problemas rı́gidos, pero de mayor orden que
ode23s.

En la lista de arriba aparecieron varios términos que aún no hemos definido. En las si-
guientes secciones vamos a profundizar sobre éstas y otras nociones relacionadas a la
aproximación numérica de ecuaciones diferenciales ordinarias. El siguiente ejemplo mues-
tra cómo se utilizan los solvers en la práctica.

Ejemplo 8.7.1 (predador-presa). El modelo de Lotka-Volterra de predador-presa se usa


para describir dinámicas en ecologı́a en las que dos especies interactúan, una como presa
y otra como depredador. Consideremos un ecosistema en el que solamente hay conejos y
zorros: asumimos que los conejos tienen acceso ilimitado a comida, mientras que los zorros
6
En inglés, rigidez se dice stiffness.

206
Métodos Numéricos Facultad de Ingenierı́a – IMERL

solamente pueden comer conejos. Modelamos este ecosistema con un par de ecuaciones
diferenciales no lineales acopladas,
 0

 c (t) = 2c(t) − αc(t)z(t),
 z 0 (t) = −z(t) + αc(t)z(t),

(8.34)

 c(t0 ) = c0 ,

z(t0 ) = z0 .

Aquı́, la variable t representa el tiempo, c(t) (resp. z(t)) es la población de conejos (resp.
zorros) en el instante t, y α > 0 es una constante que indica la probabilidad de encuen-
tro entre zorros y conejos. Se puede probar que las soluciones del problema (8.34) son
periódicas, con un perı́odo que depende de las condiciones iniciales. Esto es, dados c0 , z0 ,
existe un tiempo T tal que

c(t + T ) = c(t), z(t + T ) = z(t), para todo t ≥ t0 . (8.35)

Para resolver numéricamente el sistema (8.34), introducimos la función y(t) = [c(t); z(t)],
y escribimos las ecuaciones compactamente,
   
2y1 (t) − αy1 (t)y2 (t) c
0
y (t) = f (t, y(t)) := , y(t0 ) = y0 := 0 .
−y2 (t) + αy1 (t)y2 (t) z0

Buscamos resolver el sistema para t0 = 0, con c0 = 100, z0 = 10 y α = 0,02. En Octave,


introducimos los valores de estas constantes y definimos la función f ,

alpha = 0.02;
y0 = [100 10];
f = @(t,y) [2*y(1) - alpha*y(1)*y(2); -y(2)+alpha*y(1)*y(2)];

Para resolver el problema computacionalmente usando uno de los solvers que mencionamos
más arriba, basta con llamarlo. Por ejemplo, para usar ode23 para resolver el sistema en
el intervalo de tiempo [0, 10], escribimos

[tiempos, poblaciones] = ode23(f,[0 10],y0);

La Figura 8.6 muestra dos tipos de gráficas. En la primera, representamos c y z como


funciones del tiempo. La segunda es un diagrama de fase, en el que c está en el eje de las
x y z en el de las y. Las soluciones obtenidas con los solvers ode23, ode45 y ode23s se ven
prácticamente iguales, aunque no lo son. Por ejemplo, para este intervalo de tiempo, ode23
hace 101 pasos, ode45 hace 117, y ode23s hace 96. De todos modos, en este problema no
vemos grandes diferencias entre las distintas soluciones computadas. 4

207
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Figura 8.6: Solución al modelo de Lotka-Volterra usando los solvers ode23 (izquierda),
ode45 (centro), ode23s (derecha). En la fila de arriba, graficamos las poblaciones de cone-
jos (azul) y zorros (rojo) en función del tiempo. La fila de abajo representa conjuntamente
las poblaciones de conejos y zorros.

Eventos
En el Ejemplo 8.7.1, las soluciones son periódicas. Si queremos determinar el perı́odo
de estas soluciones, esto es, el menor T que cumple (8.35), podrı́amos intentar hacerlo
visualmente a partir de la Figura 8.6: para los valores de los parámetros que tomamos,
parece que T es un poco mayor que 6. Naturalmente, podrı́amos determinar T de forma
un poco más precisa si usamos los valores de poblaciones obtenidos.
Una caracterı́stica interesante de los solvers son los eventos. Uno puede indicar a la
función que tome determinadas acciones si ocurren situaciones de interés. Como primer
ejemplo, pongamos que buscamos el primer tiempo tal que la población de conejos es
igual a 200. Para ello, creamos una nueva función, que en este caso llamaremos parar:

function [val,isterm,dir] = parar(t,y)


val = y(1)-200;
isterm = 1;
dir = [];

La primera salida, val, es el valor que queremos que sea cero. Fijando la segunda salida
isterm a 1 se indica que el solver debe terminar una vez que val es igual a cero. Poner
que la tercera salida, dir, sea la matriz nula, indica que el cero que estamos buscando
puede ser alcanzado desde cualquier dirección, desde valores positivos o negativos.
Con esto, modificamos nuestro código para llamar al solver como se describe a continua-
ción.

alpha = 0.02;
y0 = [100 10];
F = @(t,y) [2*y(1) - alpha*y(1)*y(2); -y(2)+alpha*y(1)*y(2)];
opts = odeset(’events’,@parar);

208
Métodos Numéricos Facultad de Ingenierı́a – IMERL

[t,y,tfinal] = ode23(F,[0 10],y0,opts);


plot(t, y,’-o’, ’LineWidth’,2)

La imagen a la izquierda en la Figura 8.7 muestra la salida. Observamos que, a pesar de


que al llamar a ode23 pusimos el intervalo de tiempo [0, 10], el solver se detuvo antes,
cuando y(1) = 200. La variable tfinal tiene almacenado ese instante de tiempo, y en
este caso obtuvimos tfinal = 0.4034.

Figura 8.7: Solución al modelo de Lotka-Volterra utilizando eventos. Izquierda: el solver


se detiene cuando y(1) = 200. Derecha: se detiene luego de un perı́odo.

Un ejemplo un poco más sofisticado de evento es el de determinar perı́odos. Consideremos


la solución computada en el Ejemplo 8.7.1. Debemos indicarle a Octave que nos interesa
el instante en el que el vector posiciones repite las condiciones iniciales. Detectar esto
puede ser bastante delicado, ya que como se puede observar haciendo zoom en la fila
inferior de la Figura 8.6, si bien la solución exacta de nuestro problema es periódica,
las soluciones numéricas no lo son. Si modificamos nuestra función parar, cambiando la
condición de parada por val = y(1)-100 y modificando el valor de la salida dir a 1
(lo que indica que queremos que y(1) se aproxime al valor 100 por abajo), obtenemos
un gráfico como se muestra en la parte derecha de la Figura 8.7, y obtenemos tfinal =
6.2844, lo que nos da una estimación del perı́odo de esta órbita.

8.7.1. El algoritmo BS23 y ode23


Una caracterı́stica importante de los solvers de Matlab/Octave es que, dada una tolerancia
(que puede ser ingresada por el usuario o la dada por defecto), adaptan las longitudes de
los pasos de modo que la solución numérica sea aceptable de acuerdo con dicha tolerancia.
En principio, parecerı́a que para hacer adaptatividad deberı́a ser necesario conocer la
solución exacta del problema que uno busca: en cada iteración, se podrı́a comparar la
solución obtenida con la solución computada y si el error tiene norma lo suficientemente
pequeña, entonces el paso dado es aceptable. Si no lo es, entonces se deberı́a descartar el

209
Métodos Numéricos Facultad de Ingenierı́a – IMERL

iterado computado y volver a intentar con un paso más corto. En la práctica, sin embargo,
uno no tiene a mano la solución exacta del problema, y se suele reemplazar el error por
una cantidad computable: se usa un paso con un método más preciso (tı́picamente de
mayor orden) como solución aproximada y se usa la discrepancia entre las dos soluciones
computadas como estimador del error.
Los métodos de un paso permiten adaptar las longitudes de los pasos de forma relativa-
mente sencilla, porque uno simplemente puede ir cambiando los hk de un paso al siguiente.
Debido a que la de Runge-Kutta es una familia de métodos de un paso que pueden ser
de orden arbitrario, estos métodos son la base de una buena parte de los solvers de
Matlab/Octave. Aquı́ vamos a comentar algunas ideas clave relacionadas al algoritmo
BS237 , que es la base del solver ode23. Para simplificar la notación, vamos a considerar
un problema de valores iniciales (8.6) escalar, esto es, con n = 1. En el caso vectorial, se
trabaja coordenada a coordenada y se debe reemplazar los valores absolutos por normas.
El algoritmo BS23 usa dos métodos de Runge-Kutta combinados, uno de orden 3 y otro
de orden 2. El método de orden 3 es de 3 etapas, mientras que el de orden 2 utiliza las
mismas 3 etapas y le agrega una cuarta; sin embargo, el algoritmo usa el llamado enfoque
FSAL8 , que implica que en la práctica se tengan que hacer 3 evaluaciones de f en cada
paso.
Concretamente, dadas tolerancias de error relativo rtol y absoluto atol, el iterado yk , y
un paso tentativo hk , para determinar el iterado siguiente yk+1 el algoritmo BS23 comienza
computando
K1 := f (tk , yk ) ,
 
hk hk
K2 := f tk + , yk + K1 ,
2 2

3hk 3hk
 (8.36)
K3 := f tk + , yk + K2 ,
4 4
hk
yk+1 := yk + (2K1 + 3K2 + 4K3 ) .
9
El valor de yk+1 obtenido corresponde a un método de Runge-Kutta de tercer orden. A
continuación, se reutilizan los valores K1 , K2 , K3 ya computados para generar un método
de segundo orden. Para ello, se agrega el valor

K4 := f (tk + hk , yk+1 ) ;

notar que en caso de que el paso que se propone sea aceptado, este valor de K4 es el valor
de K1 del paso siguiente. Se calcula un paso estimado
hk
ỹk+1 := yk + (7K1 + 6K2 + 8K3 + 3K4 ) .
24
7
Bogacki, P. y Shampine, L. F. , A 3(2) pair of Runge–Kutta formulas, Applied Mathematics Letters,
2 (1989), pp. 1–9.
8
First Same As Last, “primero igual al último”.

210
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Este valor ỹk+1 corresponde a un método de Runge-Kutta de segundo orden y de cuatro


etapas. Finalmente, se compara la discrepancia entre los valores obtenidos: se computa
hk
ε := yk+1 − ỹk+1 = (−5K1 + 6K2 + 8K3 − 9K4 ) .
72
En la práctica no es necesario computar ỹk+1 para evaluar ε, por lo que no se lo suele
hacer. La cantidad ε es un estimador del error absoluto en el paso. A partir de este valor
y las tolerancias relativas y absolutas, se determina una cantidad err > 0, que tiene que
ver con el error relativo y que se usa para decidir si el paso es aceptable o no. Si err es
suficientemente pequeña, entonces se acepta el valor de yk+1 computado. En cambio, si
err no lo es, entonces se redefine hk ← h2k , se vuelve a (8.36) y se recalculan yk+1 y el
estimador ε para este nuevo paso de longitud menor.
Una vez que se acepta el iterado yk+1 , se debe elegir la longitud del paso siguiente hk+1 : si
err es mucho menor que rtol, entonces tenemos margen para ser ambiciosos e intentar
tomar un paso más largo. Si err/rtol está muy cercano a 1, entonces conviene intentar
con un paso hk+1 similar a hk . En la práctica, el algoritmo BS23 –y en consecuencia el
solver ode23– utiliza una fórmula ad hoc,
(  1/3 )
4 rtol
hk+1 := hk mı́n 5, .
5 err

Los factores de 5 y de 4/5 arriba son para prevenir cambios excesivos de longitud entre
pasos consecutivos, y la potencia 1/3 está relecionada con que el método de Runge-Kutta
utilizado es de orden 3.

8.8. Rigidez
Esta sección trata sobre un concepto sutil e importante en la resolución numérica de
ecuaciones diferenciales ordinarias: la llamada rigidez. Consideremos la siguiente variante
sencilla del problema test (8.21):
(
y 0 (t) = λ(y(t) − g(t)) + g 0 (t),
(8.37)
y(0) = y0 ,

donde g es una función conocida y regular, y λ < 0. Se puede verificar que la solución de
este problema es
y(t) = (y0 − g(0))eλt + g(t).
Notemos que, si λ  0, entonces el primer término del lado derecho arriba es despreciable
cuando t es grande: la solución se acerca a g(t) exponencialmente rápido respecto a t. Sin
embargo, si usamos varios de los métodos que hemos discutido hasta ahora para resolver
este problema, nos vamos a encontrar con algunas dificultades. Para que los métodos
explı́citos sean estables se requiere que los pasos sean extremadamente pequeños.

211
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Para fijar ideas, tomamos λ = −10, g(t) = t, y0 = 1, y resolvemos (8.37) sobre el intervalo
[0, 10]. Si usamos el método de Euler hacia adelante o el de Heun con paso constante,
estamos en serios problemas: para que sean estables vamos a necesitar que los pasos
sean menores9 que h = 2/10. La Figura 8.8 muestra soluciones con paso constante y
usando 51 (estable), 50 (lı́mite de estabilidad) y 49 (inestable) pasos, respectivamente. El
comportamiento que observamos es similar al de la primera fila en la Figura 8.4. A pesar
de que la solución es prácticamente lineal para t & 1, con los métodos de Euler y de Heun
no podemos dar pasos muy largos sin perder el control de las soluciones numéricas.

Figura 8.8: Solución a (8.37) en el intervalo [0, 10], para λ = −10, g(t) = t, y0 = 1, con
paso constante. La primera columna muestra las soluciones con el método de Euler y la
segunda columna con el método de Heun, tomando h = 10/51 (arriba), h = 1/5 (centro),
y h = 10/49 (abajo). La solución exacta se representa con las curvas en rojo, mientras
que las aproximaciones numéricas se muestran en azul.

Para este problema, incluso los solvers ode23 y ode45, que usan métodos de Runge-
Kutta explı́citos, están en dificultades. Si bien la solución de nuestro problema es suave,
no podemos usar pasos de tiempo largos. Para mayor dramatismo, cambiamos el intervalo
de resolución a [0, 100] y tomamos λ = −100 en (8.37). La Figura 8.9 muestra la solución
computada con el solver ode45 con los mismos parámetros pero sobre el intervalo [0, 100],
y un zoom en el intervalo [95, 100]. Para este problema, ode45 tomó 12089 pasos para
9
No vamos a entrar en el detalle de por qué se tiene esta condición de estabilidad, pero mencionamos
que se deduce de un razonamiento como el de la Observación 8.3.3. A los efectos de la discusión sobre
rigidez, basta con tener en cuenta que estos métodos son condicionalmente estables y que por lo tanto
hay una longitud de paso máximo admisible.

212
Métodos Numéricos Facultad de Ingenierı́a – IMERL

asegurarse de estar dentro de su tolerancia de error por defecto10 .

Figura 8.9: Solución a (8.37) en el intervalo [0, 100], para λ = −100, g(t) = t, y0 = 1, con
el solver ode45. En la izquierda, vemos la solución en todo el intervalo (se ve como una
curva gruesa debido a la enorme cantidad de puntos que se representan), y a la derecha
el detalle para t ∈ [95, 100].

Estamos ante un problema que parece ser sencillo pero que resulta costoso de resolver con
métodos que no sean incondicionalmente estables. En particular, en virtud de la Obser-
vación 8.3.5, cualquier método explı́cito de paso simple va a darnos dolores de cabeza en
esta situación. A problemas de este tipo se los suele llamar rı́gidos. No hay una definición
rigurosa de rigidez, aunque tı́picamente refiere al hecho de que se busca una solución que
varı́a lentamente (es suave), pero que está rodeada por soluciones que varı́an rápidamente.
Esto hace que, si se le aplican métodos no absolutamente estables con control de pasos, los
pasos deban ser extremadamente cortos para obtener resultados satisfactorios. La rigidez
es una cuestión de eficiencia.
Para tratar con problemas rı́gidos, se suelen usar métodos implı́citos. La letra s en los
nombres de solvers como ode23s u ode15s hace referencia precisamente a que usan al-
goritmos adecuados para problemas rı́gidos. Para comparación, la Figura 8.10 muestra
la solución obtenida con el solver ode23s con los mismos parámetros que usamos para
producir la Figura 8.9. En este caso, el solver solamente toma 47 pasos en todo el intervalo
[0, 100], y de esos 47 pasos, 36 se encuentran concentrados en el intervalo [0, 1].

10
Por defecto, en ode45 la tolerancia de error relativa es 10−3 y la absoluta es 10−6 .

213
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Figura 8.10: Solución a (8.37) en el intervalo [0, 100], para λ = −100, g(t) = t, y0 = 1,
con el solver ode23s.

214
Apéndice A

Preliminares y repaso

Este capı́tulo contiene un repaso (parcial) de conceptos y herramientas fundamentales


para el seguimiento del curso. Su contenido corresponde a los cursos de Geometrı́a y
Álgebra Lineal y Cálculo Diferencial e Integral en una y varias variables. En caso de tener
dudas, recomendamos fuertemente consultar los materiales de dichos cursos, y en cada
sección incluimos una referencia para repasar conceptos.

A.1. Desarrollo de Taylor y resto de Lagrange

A.1.1. En una variable


Lectura recomendada: T. Apostol. Calculus vol. I, Capı́tulo 7 (“Aproximación de
funciones por polinomios”).

Sea k ∈ N. Recordemos que una función f se dice de clase C k (y escribimos f ∈ C k ) si es


derivable k veces, y su derivada k-ésima es continua.
Teorema A.1.1 (Taylor). Consideremos una función f : D ⊂ R → R de clase C k . Para
todo punto a interior a D existe una función rk , denominada resto o error, tal que
f 00 (a) f (k) (a)
f (x) = f (a) + f 0 (a)(x − a) + (x − a)2 + . . . + (x − a)k + rk (x − a)
2! k!
y
rk (x − a)
lı́m = 0. (A.1)
x→a (x − a)k
Observación A.1.1 (otra forma de expresar el desarrollo de Taylor). A veces puede ser
útil escribir el desarrollo de Taylor en términos de la variación en x respecto de a, definda
como h := x − a. Para esto, basta con reemplazar x = a + h en el Teorema de Taylor:
f 00 (a) 2 f (k) (a) k
f (a + h) = f (a) + f 0 (a)h + h + ... + h + rk (h).
2! k!
215
Métodos Numéricos Facultad de Ingenierı́a – IMERL

rk (h)
Con esta notación, el lı́mite (A.1) se puede reescribir como lı́mh→0 hk
= 0. 4
Definición A.1.1 (polinomio de Taylor). El polinomio involucrado en el Teorema A.1.1
se denomina polinomio de Taylor de orden k de la función f en el punto a y lo
denotamos por Tk f 1 ,
f 00 (a) f (k) (a)
Tk f (x) := f (a) + f 0 (a)(x − a) + (x − a)2 + . . . + (x − a)k .
2! k!
4
Observación A.1.2. Una noción intuitiva sobre el polinomio de Taylor Tk f (x; a) es que es
el polinomio de grado k que “mejor aproxima” a f alrededor del punto a. Concretamente,
usando el Teorema A.1.1 y en particular la fórmula (A.1), tenemos
|f (x) − Tk f (x; a)| = |rk (x − a)| = o((x − a)k ).

Se puede demostrar, mediante un argumento de inducción, que Tk f (x; a) es el único


polinomio de grado k con esta propiedad. Veamos la demostración para el caso k = 1. Sea
`(x) := α + β(x − a) una función lineal2 tal que f (x) − `(x) = o(x − a). Queremos probar
que entonces tiene que ser ` = T1 f .
Del hecho de que f (x) − `(x) = o(x − a) se deduce, en particular, que la diferencia entre
f y ` tiende a 0 cuando x → a,
0 = lı́m f (x) − `(x) = lı́m f (x) − (α + β(x − a)).
x→a x→a

Como x − a → 0 y f es continua en a, deducimos que necesariamente tiene que ser


α = f (a). A continuación, usamos nuevamente el hecho de que f (x) − `(x) = o(x − a)
para ahora afirmar que la diferencia entre f y ` tiende a 0 más rápido que x − a cuando
x → a,
f (x) − `(x) f (x) − (f (a) + β(x − a)) f (x) − f (a)
0 = lı́m = lı́m = lı́m − β.
x→a x−a x→a x−a x→a x−a
Como f es derivable en a, deducimos que necesariamente tiene que ser β = f 0 (a). Por lo
tanto,
`(x) = α + β(x − a) = f (a) + f 0 (a)(x − a) = T1 f (x; a).
4
En muchos casos, nos va a ser útil considerar polinomios de Taylor de orden uno, esto es,
reemplazar una función f por la función lineal que “mejor la aproxima” alrededor de un
cierto punto a.
1
La notación Tk f no especifica cuál es el punto a. En caso de existir ambigüedad respecto a de qué
punto se trata, en vez de Tk f (x) escribiremos Tk f (x; a).
2
El lector podrı́a estar considerando escribir una función lineal arbitraria como `(x) := α̃ + b̃x. Es
claro que las dos formas son equivalentes, ya que tendrı́amos β̃ = β y α̃ = α − aβ, pero escribir ` de la
forma en que lo hacemos nos permite simplificar un poco las cuentas.

216
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Definición A.1.2 (linealización). Sea f : D ⊆ R → R y a un punto interior a D.


Linealizar la función f alrededor de a consiste en reemplazar f por su polinomio de
Taylor de primer orden en dicho punto. Concretamente, es reemplazar f por la función
lineal
p1 (x) := T1 f (x; a) = f (a) + f 0 (a)(x − a).
4

El Teorema A.1.1 nos da el polinomio que “mejor aproxima” a una cierta función f
alrededor de un cierto punto a en el sentido de que se cumple (A.1). Sin embargo, ese
teorema no nos indica ninguna forma de expresar el resto rk . Concluimos esta sección con
un resultado útil al respecto3 .
Teorema A.1.2 (forma de Lagrange del resto). Si f ∈ C k+1 , entonces, para todo x ∈ R
existe un punto θx entre a y x (esto es, θx ∈ [a, x] si x > a o θx ∈ [x, a] si x < a) tal que
el resto de Taylor se puede expresar como
f (k+1) (θx )
rk (x − a) = (x − a)k+1 .
(k + 1)!
Observación A.1.3. El Teorema A.1.2 nos asegura que el resto de Taylor se puede escribir
de forma análoga que los demás términos en el desarrollo de Taylor, pero con la derivada
(k + 1)-ésima evaluada en un cierto punto θx entre a y x. Es importante notar que θx
depende tanto de x como de a (y obviamente de la función f ), y que el teorema anterior
no nos brinda su valor exacto. 4
Retomamos brevemente el tema de desarrollos de Taylor en una variable en el Capı́tulo 1
de las notas del curso.

A.1.2. En varias variables


Lectura recomendada: M. Fiori. Notas del curso de CDIVV, Capı́tulo 6 (“Dife-
renciabilidad”).

Vamos a considerar únicamente el desarrollo de Taylor de primer orden para funciones


de Rn en Rm (n, m ≥ 1). Éste involucra a la matriz jacobiana, que juega el papel de la
derivada primera en el contexto multivariado.
Definición A.1.3 (matriz jacobiana). Sean f : D ⊂ Rn → Rm , una función diferenciable
y a un punto interior a D. Si f = (f1 , f2 , . . . , fm ), la matriz jacobiana de f en a es
 
∇f1 (a)
 ∇f2 (a) 
Jf (a) :=   ∈ Mm×n (R),
 
..
 . 
∇fm (a)
3
Remarcamos que existen otras formas de caracterizar el resto de Taylor.

217
Métodos Numéricos Facultad de Ingenierı́a – IMERL

donde ∇fi denota el gradiente de la función coordenada fi ,


 
∂fi ∂fi ∂fi
∇fi := , ,..., , i = 1, . . . , m.
∂x1 ∂x2 ∂xn

El siguiente es una generalización del Teorema A.1.1 (con k = 1) al caso multivariado: dice
que una función diferenciable se puede aproximar, en cada punto de su dominio, con una
transformación lineal afı́n –su polinomio de Taylor de primer grado en varias variables– y
que esta aproximación tiende a cero (en cada coordenada) más rápido que kx − ak.

Teorema A.1.3 (Taylor de primer orden). Sean f : D ⊂ Rn → Rm una función dife-


renciable y a un punto interior a D. Entonces, existe una función r, denominada resto o
error, tal que

kr(x − a)k
f (x) = f (a) + Jf (a)(x − a) + r(x − a), y lı́m = 0.
x→a kx − ak

Definición A.1.4 (polinomio de Taylor de primer orden). El polinomio de Taylor


de orden uno de la función diferenciable f : Rn → Rm en el punto a ∈ Rn es
T1 f : Rn → Rm ,
T1 f (x) := f (a) + Jf (a)(x − a).
4

A.2. Teoremas de valores medios


Lectura recomendada: Notas de CDIV sobre Lı́mites y continuidad, Sección 2.3
(“Valores intermedios”) para el Teorema de Bolzano, y T. Apostol. Calculus vol. I,
Sección 4.14 (“Teorema del valor medio para derivadas”) para el Teorema de Rolle.
El Teorema de Bolzano nos da una condición suficiente sencilla para asegurar que una
función real tenga una raı́z: que sea continua y que su dominio contenga un intervalo en
el que “cambia de signo”.

Teorema A.2.1 (Bolzano). Sea f : D ⊂ R → R y [a, b] ⊂ D. Si f es continua en [a, b],


y f (a)f (b) < 0, entonces existe c ∈ (a, b), tal que f (c) = 0.

Observación A.2.1. La condición f (a)f (b) < 0, equivale a decir que f toma valores con
signo distinto en los puntos a y b. Esto es, o bien f (a) > 0 y f (b) < 0, o bien f (a) < 0 y
f (b) > 0. 4

Por otra parte, el Teorema de Rolle es un resultado de valor medio para derivadas: nos
da una condición para que la derivada de una función tenga una raı́z.

218
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Teorema A.2.2 (Rolle). Sea f : D ⊂ R → R y [a, b] ⊂ D. Si f es continua en [a, b],


derivable en (a, b), y f (a) = f (b), entonces existe c ∈ (a, b), tal que f 0 (c) = 0.

Los teoremas de Bolzano y de Rolle se generalizan a valores intermedios arbitrarios. Estas


generalizaciones son los llamados Teorema del Valor Intermedio (también conocido como
Teorema de Darboux) y Teorema del Valor Medio (también conocido como Teorema de
Lagrange), respectivamente.

Teorema A.2.3. Sea f : D ⊂ R → R, [a, b] ⊂ D y supongamos f es continua en [a, b].

Darboux: Para todo λ entre f (a) y f (b), existe c ∈ (a, b) tal que f (c) = λ.
f (b)−f (a)
Lagrange: Si f es derivable en (a, b), existe c ∈ (a, b) tal que f 0 (c) = b−a
.

A.3. Valores y vectores propios


Lectura recomendada: Libro rojo de GAL 2, Capı́tulo 2 (“Diagonalización”).

Definición A.3.1 (vector y valor propio). Sea A ∈ Mn (R). Decimos que v 6= 0 es un


vector propio de A, asociado al valor propio λ ∈ K, si se cumple

Av = λv.

Aquı́, K es el cuerpo con el que estamos trabajando. En este curso utilizamos principal-
mente el cuerpo de los reales K = R, aunque por momentos consideraremos el cuerpo de
los complejos K = C. 4

Una forma de hallar los valores propios de una matriz es encontrando las raı́ces de su
polinomio caracterı́stico. Este polinomio se define de la siguiente forma.

Definición A.3.2 (polinomio caracterı́stico). Sea A ∈ Mn (R). Su polinomio carac-


terı́stico es el polinomio pA de grado n dado por

pA (λ) := det (A − λI) .

Teorema A.3.1. Los valores propios de A son las raı́ces del polinomio caracterı́stico de
A en el cuerpo K. Esto es, λ es un valor propio si y sólo si se cumple pA (λ) = 0.

Una vez que se tienen los valores propios de la matriz A, podemos buscar los vectores
propios asociados a cada valor propio.

219
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Teorema A.3.2. Los vectores propios de A asociados al valor propio λ son todos aquellos
vectores v 6= 0 que son solución del sistema lineal (compatible indeterminado)

Av = λv (⇔ (A − λI) v = 0).

En otras palabras, los vectores propios de A asociados al valor propio λ son aquellos
vectores no nulos que pertenecen al núcleo de la matriz A − λI.

Definición A.3.3 (subespacio propio). Los vectores propios de A ∈ Mn (R) asociados a


un valor propio λ, junto con el vector nulo, forman un subespacio vectorial de Rn . Éste
se denomina subespacio propio asociado a λ, y se lo denota Sλ ,

Sλ := {v ∈ Rn : Av = λv}.

Definición A.3.4 (matriz diagonalizable). Decimos que A ∈ Mn (R) es diagonalizable


si existen una matriz diagonal D ∈ Mn (R) y una matriz invertible P ∈ Mn (R), tales que

A = P DP −1 .

Teorema A.3.3. Una matriz A ∈ Mn (R) es diagonalizable si y sólo si existe una base
de Rn formada por vectores propios de A. En ese caso, la matriz diagonal D tiene a los
valores propios de A en su diagonal, y la matriz P tiene como columnas a la base de
vectores propios.

A.4. Ortogonalidad
Lectura recomendada: Libro rojo de GAL 2, Capı́tulo 4 (“Producto interno y
norma”).

Consideramos el producto interno usual en Rn : dados u = (u1 , . . . , un )t , v =


(v1 , . . . , vn )t , tenemos
n
X
hu, vi := ui vi .
i=1

Este producto interno induce una norma en Rn , la llamada norma euclı́dea,


p
kvk := hv, vi.

Además de permitirnos definir normas, los productos internos nos permiten hablar de
ángulos entre vectores. En particular, podemos generalizar la noción de perpendicularidad.

220
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Definición A.4.1 (ortogonalidad y ortonormalidad). Decimos que dos vectores u, v ∈ Rn


son ortogonales si hu, vi = 0.
Decimos que un conjunto C ⊂ Rn es ortogonal si sus elementos son ortogonales dos a
dos, esto es, si hu, vi = 0 para todos u 6= v ∈ C.
Decimos que un conjunto C ⊂ Rn es ortonormal si es ortogonal y todos sus elementos
tienen norma igual a 1. 4

Dado un vector v ∈ Rn y un subespacio S ⊂ Rn , podemos descomponer v de forma


única como la suma de un vector en S y un vector ortogonal a S. Esto nos conduce a la
definición de proyección ortogonal sobre S.
Definición A.4.2 (proyección ortogonal). Sea S un subespacio de Rn , y sea {u1 , . . . , uk }
una base ortonormal de S. Dado v ∈ Rn , se define su proyección ortogonal sobre S
como el vector
Xk
PS (v) := hv, ui iui .
i=1
4
Observación A.4.1. Se puede verificar que PS (v) ∈ S, y que la definición anterior no
depende de la base ortonormal dePkS escogida. Además, el vector v − PS (v) es ortogonal
a todo vector de S: sea w := i=1 ci ui ∈ S un vector arbitrario, entonces usando la
linealidad del producto interno tenemos
* k k
+
X X
hv − PS (v), wi = v − hv, ui iui , cj uj
i=1 j=1
k k k
!
X X X
= cj hv, uj i − hv, ui i cj hui , uj i .
j=1 i=1 j=1

Como {u1 , . . . , uk } es un conjunto ortonormal, tenemos hui , uj i = 0 si i 6= j y hui , ui i = 1


para todo i, y por lo tanto
k
X k
X
hv − PS (v), wi = cj hv, uj i − ci hv, ui i = 0.
j=1 i=1

4
n
Observación A.4.2. Sea S ⊂ R un subespacio vectorial. Si {w1 , . . . , wk } es una base
ortogonal (pero no ortonormal) de S, entonces podemos normalizarla tomando ui :=
wi
kwi k
= √ wi y tendremos, para v ∈ Rn ,
hwi ,wi i

k k
* + k
X X wi w X hv, wi i
PS (v) = hv, ui iui = v, p p i = wi .
i=1 i=1 hwi , wi i hwi , wi i i=1
hwi , wi i
4

221
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Definición A.4.3 (subespacio generado). Dado un conjunto de vectores C ⊂ Rn , el


subespacio generado por C, que denotaremos por [C], es el conjunto4 de vectores que
pueden ser escritos como combinaciones lineales de vectores en C. Por ejemplo, si tenemos
un conjunto formado por k vectores v1 , . . . , vk , entonces
( k
)
X
[v1 , . . . , vk ] := w := ci v i : c1 , . . . , c k ∈ R .
i=1

Un resultado clave para nosotros va a ser que todo subespacio S ⊂ Rn tiene una base
ortonormal.

Teorema A.4.1. Sea {v1 , . . . , vm } una base de un subespacio S ⊂ Rn . Entonces, existe


B = {u1 , . . . , um } tal que B es una base ortonormal de S y [v1 , . . . vk ] = [u1 , . . . uk ] para
todo k = 1, . . . , m.

Demostración. Incluimos aquı́ la demostración de este teorema porque la haremos usando


el llamado método de ortonormalización de Gram-Schmidt.
Comenzamos tomando w1 = v1 , de modo que obviamente [w1 ] = [v1 ]. A continuación,
definimos w2 como la diferencia entre v2 y su proyección ortogonal sobre [w1 ],

hv2 , w1 i
w2 = v2 − w1 .
hw1 , w1 i

Esto da lugar a [w1 , w2 ] = [v1 , v2 ] y además {w1 , w2 } es un conjunto ortogonal, pues


 
hv2 , w1 i hv2 , w1 i
hw1 , w2 i = w1 , v2 − w1 = hw1 , v2 i − hw1 , w1 i = 0.
hw1 , w1 i hw1 , w1 i

Se sigue este proceso inductivamente: dados w1 , . . . , wk−1 , se define wk como la diferencia


entre vk y su proyección ortogonal sobre [w1 , . . . , wk−1 ],

k−1
X hvk , wi i
wk := vk − wi ,
i=1
hwi , wi i

y se obtiene un conjunto ortogonal {w1 , . . . , wk } que genera el mismo subespacio de Rn


wi
que {v1 , . . . , vk }. Finalmente, normalizamos nuestra base ortogonal: tomamos ui = kw ik
para cada i = 1, . . . , m.
4
Se debe probar que [C] es efectivamente un subespacio de Rn .

222
Métodos Numéricos Facultad de Ingenierı́a – IMERL

A.5. Ecuaciones diferenciales ordinarias


Lectura recomendada: E. Catsigeras. Notas de Ecuaciones Diferenciales para
CDIVV.

Una ecuación diferencial ordinaria es una igualdad en la que:

La incógnita es una función y(t) definida y derivable hasta orden k para todo t ∈
I ⊂ R. Nuestro objetivo es hallar esta función.

Aparece en la ecuación alguna de las derivadas de la función y: la derivada primera


y 0 (t), y/o la derivada segunda y 00 (t), hasta la derivada de orden k.

El orden de la ecuación diferencial ordinaria es el orden de la derivada de mayor orden


de y que aparezca en la ecuación. Por ejemplo:

y 00 (t)y 0 (t) + sin(y(t)) = 3 es de orden 2,


0
y 000 (t) = 4ey (t) es de orden 3.

En este material solamente mencionamos formas para resolver analı́ticamente ciertas ecua-
ciones de primer y segundo orden.

A.5.1. Ecuaciones de primer orden de variables separables


Las ecuaciones de primer orden de variables separables son aquellas que se pueden
escribir de la forma
y 0 (t) = A(y)B(t), (A.2)
donde A, B son funciones conocidas y suficientemente regulares. Observemos que si existe
algún y0 tal que A(y0 ) = 0, entonces la función constante y(t) = y0 satisface (A.2). Si
buscamos soluciones tales que A(y(t)) 6= 0, entonces podemos pasar A(y) dividiendo y
tomar primitivas para obtener

y 0 (t)
Z Z
dt = B(t) dt + C.
A(y(t))

Notar que la igualdad vale a menos de una constante aditiva C ∈ R. Haciendo el cambio
de variable t 7→ y(t) en la integral de la izquierda, tenemos
Z Z
1
dy = B(t) dt + C. (A.3)
A(y)

Si podemos calcular ambas integrales, podremos escribir y en función de t; notemos que


no siempre podremos despejar y(t) explı́citamente.

223
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Ejemplo A.5.1. Consideremos la ecuación diferencial ordinaria


t
y 0 (t) = .
sen(y(t))
Procediendo como describimos arriba, el paso (A.3) toma la forma
Z Z
sen(y) dy = t dt + C,

y se puede verificar que todas las funciones y(t) que cumplan


t2
− cos(y(t)) = + C, C∈R
2
satisfacen la ecuación diferencial. 4

A.5.2. Ecuaciones lineales


Se llama ecuación diferencial lineal a aquella en que la dependencia en y(t) es lineal.
En general, podemos escribir las ecuaciones diferenciales ordinarias lineales de primer
orden como
y 0 (t) + a(t)y(t) = f (t), (A.4)
y las de segundo orden como
y 00 (t) + a(t)y 0 (t) + b(t)y(t) = f (t). (A.5)
Aquı́, las funciones a, b, f son datos. Cuando f = 0, estas ecuaciones se dicen ho-
mogéneas.
El conjunto de soluciones a ecuaciones diferenciales lineales tiene una estructura relati-
vamente sencilla. Para problemas homogéneos, el conjunto de soluciones es un espacio
vectorial de dimensión igual al orden de la ecuación. En cambio, para problemas no ho-
mogéneos, el conjunto de soluciones es un conjunto afı́n: en otras palabras, toda solución
de (A.4) o (A.5) en el caso no homogéneo se puede escribir como una solución particu-
lar más una solución del correspondiente problema homogéneo. Esto motiva el siguiente
resultado.
Teorema A.5.1 (Solución general). Consideremos (A.4) o (A.5), y sea yP una solución
particular de esa ecuación. Entonces, toda otra solución de la ecuación se puede escribir
de la forma
y(t) = yH (t) + yP (t),
donde yH es una solución de la ecuación homogenea asociada (poniendo f = 0 en (A.4)
o (A.5), respectivamente).

Esto sugiere el siguiente procedimiento para tratar con (A.4) o (A.5): primero se busca
la solución general del problema homogéneo, y luego se busca una solución particular de
la ecuación no homogénea. Una forma de lograr esto último es mediante el método de
variación de constantes o el método de selección.

224
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Ecuaciones de coeficientes constantes

Cuando a es constante en (A.4), o cuando a, b lo son en (A.5), esas ecuaciones se dicen de


coeficientes constantes. Escribimos la solución general de los problemas homogéneos
asociados y marcamos algún método para hallar una solución particular de la ecuación
no homogénea.
Para la ecuación de primer orden (A.4), el problema homogéneo toma la forma y 0 (t) +
ay(t) = 0, y es sencillo verificar que la solución general es

yH (t) = Ce−at , con C ∈ R.

Para buscar una solución particular, el método de variación de constantes propone buscar
una solución del tipo
yP (t) = C(t)e−at ,
donde ahora C(t) es una función desconocida. Derivando e imponiendo que yP satisfaga
(A.4), nos encontramos con la condición

C 0 (t)e−at = f (t).

Basta con hallar una función C que cumpla esta ecuación para tener nuestra solución
particular.

Ejemplo A.5.2. Encontremos todas las soluciones de la ecuación diferencial

y 0 (t) + 2y(t) = et . (A.6)

La solución general de la ecuación homogénea es yH (t) = Ce−2t , y si buscamos soluciones


particulares de la forma yP (t) = C(t)e−2t tenemos que tiene que cumplirse

C 0 (t)e−2t = et .

Por lo tanto, tiene que ser C 0 (t) = e3t e integrando encontramos la solución particular
3t t
yP (t) = e3 e−2t = e3 . Concluimos que todas las soluciones de (A.6) se pueden escribir
como
et
y(t) = Ce−2t + , con C ∈ R.
3
4

Para hallar la solución general del problema homogéneo asociado a la ecuación de se-
gundo orden (A.5), se considera la ecuación caracterı́stica

p(λ) := λ2 + aλ + b. (A.7)

Conociendo las raı́ces de este polinomio asociado, se puede hallar la solución general de
la ecuación homogénea.

225
Métodos Numéricos Facultad de Ingenierı́a – IMERL

Teorema A.5.2 (Solución general homogénea). Sean λ1 y λ2 las raı́ces del polinomio
(A.7). Entonces, la solución general de la ecuación homogénea asociada a (A.5) es

 C 1 e λ1 t + C 2 e λ2 t , λ1 6= λ2 , λ1 , λ2 ∈ R,
yH (t) = (C1 + C2 t) eλ1 t , λ1 = λ2 ∈ R,
 αt
e (C1 cos (βt) + C2 sin (βt)) , λ1 = α + iβ = λ2 ∈ C.

Arriba, C1 , C2 ∈ R son arbitrarios.

La búsqueda de soluciones particulares para ecuaciones lineales de segundo orden es más


engorrosa, y muchas veces se apela al método de selección. Referimos a las notas de
Ecuaciones Diferenciales para CDIVV para detalles al respecto.

226
Bibliografı́a

[GVL13] G. Golub and C. Van Loan. Matrix computations. Johns Hopkins University
Press, 2013.

[Hea02] M. Heath. Scientific Computing. McGraw-Hill, 2002.

[Mol04] C. Moler. Numerical computing with MATLAB. SIAM, 2004. Capı́tulos dispo-
nibles gratuitamente en [Link]

[Mol20] C. Moler. How the SVD saves the universe? Video de charla. Dis-
ponible en [Link]
Matematick%C3%A9probl%C3%A9mynematematik%C5%AF, 2020.

[Ngu21] Trung Nguyen. The convergence of the regula falsi method. arXiv preprint
arXiv:2109.03523, 2021.

[Pic] J. Piccini. Complemento sobre ecuaciones no lineales. Disponible en la página


del curso.

[QS06] A. Quarteroni and F. Saleri. Cálculo cientı́fico con MATLAB y Octave. Springer,
2006.

[QSS10] A. Quarteroni, R. Sacco, and F. Saleri. Numerical mathematics, volume 37.


Springer, 2010.

[Sau12] T. Sauer. Numerical Analysis. Pearson, 2012.

[SM03] E. Süli and D. Mayers. An Introduction to Numerical Analysis. Cambridge


University Press, 2003.

227

También podría gustarte