Tesis Doctoral Computación de Altas Prestaciones para el

Transcription

Tesis Doctoral Computación de Altas Prestaciones para el
Departamento de Sistemas Informáticos y
Computación
Universidad Politécnica de Valencia
Tesis Doctoral
Computación de Altas Prestaciones para el Cálculo
de Funciones de Matrices y su Aplicación a la
Resolución de Ecuaciones Diferenciales
presentado por:
J. Javier Ibáñez González
Director:
Dr. D. Vicente Hernández García
Valencia, 2006
Resumen
La presente memoria se enmarca dentro de la línea de investigación de Computación de
Altas Prestaciones para el Cálculo de Funciones de Matrices y su Aplicación a la
Resolución de Ecuaciones Diferenciales. Este campo de investigación está teniendo un
gran auge en los últimos años, ya que proporciona soluciones a cuestiones muy diversas
como son la simulación de fenómenos físicos o la resolución de problemas de control.
La tesis se centra, fundamentalmente, en el desarrollo de métodos y la implementación
de algoritmos que calculan Funciones de Matrices, y su aplicación a la resolución de
Ecuaciones Diferenciales Ordinarias (EDOs) y Ecuaciones Diferenciales Matriciales de
Riccati (EDMRs).
El punto de partida del trabajo desarrollado ha sido el estudio del estado del arte de cada
una de esas áreas, proponiéndose nuevos métodos y algoritmos que, de algún modo,
mejoran los ya existentes.
También se han explorado diversos campos de aplicación de este tipo de
aproximaciones. Uno de ellos, la propagación de rayos luminosos en fibras de cristal
fotónico y la posibilidad de controlar su comportamiento usando medios periódicos, está
siendo una de las perspectivas más prometedoras en la búsqueda de alternativas a la
tecnología de los semiconductores. En este sentido, la Computación de Altas
Prestaciones permite, mediante la simulación, conocer el comportamiento de la luz en
esos medios, dando soporte experimental a las cuestiones teóricas que en la actualidad
se están investigando.
Para obtener un software de calidad, se ha utilizado un paradigma de ciclo de vida de
tipo semiautomático. Además, se han realizado numerosas pruebas que han permitido
determinar, por un parte, los parámetros óptimos de los algoritmos implementados y,
por otra, analizar la precisión y eficiencia del código implementado.
Resum
La present memòria s’emmarca dins la línia d’investigació de Computació d’Altes
Prestacions per al Càlcul de Funcions de Matrius i la seua Aplicació a la Resolució
d’Equacions Diferencials. Este camp d’investigació està tenint una gran expansió en els
últims anys, ja que proporciona solucions a qüestions molt diverses com són la
simulació de fenòmens físics o la resolució de problemes de control.
La tesi se centra, fonamentalment, en el desenvolupament de mètodes i la
implementació de algoritmes que calculen Funcions de Matrius, i la seua aplicació a la
resolució d’Equacions Diferencials Ordinàries (EDOs) i Equacions Diferencials
Matricials de Riccati (EDMRs).
El punt de partida del treball realitzat ha sigut l’estudi de l’estat de l’art de cada una
d’eixes àrees, proposant-se nous mètodes i algoritmes que, d’alguna manera, milloren
els ja existents.
També s’han explorat diversos camps d’aplicació d’esta tipus d’aproximacions. Un
d’ells, la propagació de rajos lluminosos en fibres de cristall fotònic i la possibilitat de
controlar el seu comportament usant medis periòdics, està sent una de les perspectives
més prometedores en la busca d’alternatives a la tecnologia dels semiconductors. En
este sentit, la Computació d’Altes Prestacions permet, per mitjà de la simulació,
conéixer el comportament de la llum en eixos medis, donant suport experimental a les
qüestions teòriques que en l’actualitat s’estan investigant.
Per a obtindre un software de qualitat, s’ha utilitzat un paradigma de cicle de vida de
tipus semiautomàtic. A més, s’han realitzat nombroses proves que han permés
determinar, per una part, els paràmetres òptims dels algoritmes implementats i, d’una
altra, analitzar la precisió i eficiència del codi implementat.
Abstract
The present memory is framed in the research field of High-Performance Computing of
Matrix Functions and its Application to the Solution of Differential Equations. This
research field is having an important growth in the last years, since it provides solutions
to very diverse questions, such the simulation of physical phenomena or the treatment of
control problems.
The thesis is focused, fundamentally, on the development of methods and the
implementation of algorithms that compute Matrix Functions, and its application to the
solution of Ordinary Differential Equations (ODEs) and Differential Matrix Riccati
Equations (DMREs).
The starting point of the developed work has been the study of the state-of-the-art of
each one of those areas, setting out new methods and algorithms that, in some way,
improve the existing ones.
Diverse fields of application of this type of approaches have also been explored. One of
them, the propagation of light beams in photonic crystal fibers and the possibility of
controlling their behaviour using periodic means, is one of the most promising
perspectives in the search of alternatives to the semiconductors technology. In this
sense, the High-Performance Computing allows, by means of the simulation, to know
the behaviour of the light in those means, giving experimental support to the theoretical
questions that at the present time are the subject of research.
In order to obtain quality software, a semiautomatic life cycle has been used. In
addition, numerous tests have been carried out, which have allowed, on the one hand, to
the determine optimal values for the parameters of the implemented algorithms and, on
the other hand, to analyze the precision and efficiency of the implemented code.
Agradecimientos
Al llegar al final de un largo viaje, uno contempla todo el camino recorrido, y recuerda
cada una de las etapas por las que ha ido pasando; en especial, suele recordar como
comenzó y como ha llegado a esa meta final. Todo ese trayecto ha trascurrido por
numerosas dificultades, pero gracias a la familia, amigos y compañeros de trabajo, ha
llegado a buen término. Por todo ello quiero expresar mi más profundo agradecimiento
a todos aquellos, que de alguna manera, han contribuido a este feliz desenlace.
En primer lugar quiero agradecer especialmente toda la ayuda y apoyo que he recibido
durante todo este tiempo a mi director de tesis Dr. Vicente Hernández García. De él
quiero destacar su profundo conocimiento de las materias desarrolladas en la tesis, su
rigurosidad científica, su clara visión de los aspectos que pudieran ser novedosos y
sobre todo por la paciencia y confianza que siempre ha depositado en mí.
Agradezco también a mis compañeros de viaje Enrique Arias y Jesús Peinado, por sus
constantes apoyos y compartir con ellos tareas de investigación; a mi compañero de
despacho Juan Garayoa, por todo lo compartido en los muchos años que nos conocemos
y por la ayuda que siempre he tenido de él; a Pedro López, por su constante apoyo y
sabios consejos; a Pedro Ruiz, por el camino que hemos iniciado y el que nos queda por
recorrer; a mis compañeros de la asignatura de CNU Victor García e Ignacio Blanquer,
por toda la ayuda que en numerosas ocasiones me han brindado. Tampoco quiero
olvidar a mis compañeros del grupo de investigación Antonio Vidal, Vicente Vidal, José
E. Román, David Guerrero, José Miguel Alonso, Fernando Alvarruiz, Gabriel García,
Germán Vidal, etc., por todos los consejos y ayudas que en muchas ocasiones he
recibido de ellos. En general, quiero agradecer a todos los compañeros del
Departamento de Sistemas Informáticos y Computación de la Universidad Politécnica
de Valencia por la ayuda que en algún momento me hayan podido dar.
Quiero agradecer también toda la ayuda y colaboración de Albert Ferrando, Pedro
Fernández de Córdoba y Mario Zacarés, que me ha permitido conocer un área de
investigación tan importante como la Fotónica en la que aplicar los algoritmos de
cálculo de Funciones de Matrices desarrollados en esta Tesis .
Muchas gracias, como no podía ser menos, a mis amigos Dolores, Javier, Neri, Amalia,
Miguel, Rosa, Pablo, José, Laura, Vicente, Juan, Manoli, Abelardo, Gloria, etc., por
esos momentos que hemos compartido juntos y que espero sigamos disfrutando.
Muchas gracias a mis padres Jacinto y Gloria por darme la vida, y todo el cariño y
afecto que, de manera desinteresada, siempre me han mostrado. Gracias también a mi
hermana Gloria, por todas las cosas compartidas y por el mutuo afecto que nos tenemos.
Agradezco también la comprensión y ánimo que siempre me ha dado mi familia más
cercana Pepe, Emilia, Pepe, Eli, Miguel, Cristina, Carlos, Lourdes, Carol, Toni, Andrés,
Ani, Maria Jesús, Guillermo, Miguel Ángel, Maria José, Marivi, Silvia, Bernabé, etc., y
mis sobrinos Isabel, Carlos, Patricia, Victor, Adrián, Javier, Maria Jesús, Guillermo.
Por último, gracias a Mari, amiga, esposa y compañera por todo el cariño compartido
desde nuestra adolescencia, y por todo el apoyo, paciencia y comprensión que siempre
ha tenido conmigo, y a mis hijos Jorge y Álvaro, por el cariño que siempre recibo de
ellos.
ÍNDICE GENERAL
Capítulo 1
Introducción......................................................................... 1
1.1
Resumen de Contenidos.................................................................................... 1
1.2
Objetivos y Aportaciones de la Tesis................................................................ 1
1.3
Metodología...................................................................................................... 4
1.4
Estructura de la Tesis....................................................................................... 7
Capítulo 2
Estado del Arte .................................................................. 11
2.1
Resumen de Contenidos.................................................................................. 11
2.2
Funciones de Matrices ................................................................................... 11
2.2.1
Definiciones y Propiedades ................................................................................................11
2.2.2
Funciones de Matrices más Usuales ...................................................................................14
2.2.2.1
Función Exponencial.................................................................................................14
2.2.2.2
Función Signo ...........................................................................................................15
2.2.2.3
Función Raíz Cuadrada .............................................................................................16
2.2.2.4
Función Raíz p-ésima................................................................................................19
2.2.2.5
Función Logaritmo....................................................................................................21
2.2.2.6
Funciones Seno y Coseno .........................................................................................22
2.2.3
Métodos Numéricos para el Cálculo de Funciones de Matrices .........................................23
2.2.3.1
Función Exponencial.................................................................................................23
2.2.3.1.1 Métodos Basados en las Series de Taylor ............................................................23
2.2.3.1.2 Métodos Basados en los Aproximantes de Padé ..................................................23
2.2.3.1.3 Métodos Basados en Integración Numérica .........................................................27
2.2.3.1.4 Métodos Polinomiales ..........................................................................................29
2.2.3.1.5 Métodos Basados en la Descomposición de Matrices ..........................................32
2.2.3.1.6 Métodos Basados en los Subespacios de Krylov..................................................36
2.2.3.2
Función Signo ...........................................................................................................37
2.2.3.3
Función Raíz Cuadrada .............................................................................................39
2.2.3.4
Función Raíz p-ésima de una Matriz.........................................................................41
2.2.3.5
Función Logaritmo....................................................................................................43
2.2.3.6
Función Coseno.........................................................................................................45
2.2.3.7
Caso General.............................................................................................................46
2.2.4
Software de Funciones de Matrices ....................................................................................47
2.2.4.1
Expokit......................................................................................................................47
2.2.4.2
Proyecto “Parallel Computation of Matrix Functions” .............................................47
2.2.4.3
Proyecto “Numerical Analysis of Matrix Functions” ...............................................48
2.3
Ecuaciones Diferenciales Ordinarias (EDOs) ............................................... 48
2.3.1
Definiciones y Propiedades ................................................................................................48
2.3.2
Métodos Numéricos para la Resolución de EDOs..............................................................49
2.3.3
Métodos de un solo Paso ....................................................................................................49
2.3.3.1
Métodos Basados en las Series de Taylor .................................................................49
2.3.3.2
Métodos de Runge-Kutta ..........................................................................................50
2.3.3.3
Métodos Multipaso Lineales .....................................................................................52
2.3.3.3.1 Métodos de Adams...............................................................................................52
2.3.3.3.2 Métodos BDF .......................................................................................................54
2.3.4
Linealización a Trozos de EDOs ........................................................................................55
2.3.5
Software para la Resolución de EDOs................................................................................56
2.4
Ecuaciones Diferenciales Matriciales de Riccati (EDMRs) .......................... 58
2.4.1
Definiciones y Propiedades ................................................................................................58
2.4.2
Métodos de Resolución de EDMRs....................................................................................60
2.4.2.1
Integración Directa....................................................................................................60
2.4.2.2
Métodos de Linealización .........................................................................................60
VII
2.4.2.2.1 Método de Davison-Maki.....................................................................................61
2.4.2.2.2 Procedimiento Iterativo Matricial ASP (Automatic Synthesis Program) .............62
2.4.2.3
Método BDF .............................................................................................................62
2.4.3
Métodos de Resolución de EDMRs Simétricas ..................................................................64
2.4.3.1
Métodos de Linealización .........................................................................................64
2.4.3.1.1 Método de la Exponencial no Negativa................................................................64
2.4.3.1.2 Método de Schur ..................................................................................................65
2.4.3.2
Método de Chandrasekhar.........................................................................................66
2.4.3.3
Algoritmo de Particionado Numérico (APN)............................................................68
2.4.3.4
Método Basado en la Ecuación Algebraica de Riccati (EAR) ..................................70
2.4.3.5
Método de Leipnik ....................................................................................................71
2.4.3.6
Método de la Raíz Cuadrada .....................................................................................72
2.4.3.7
Método de Rusnak ....................................................................................................73
2.4.3.8
Métodos Conservativos y Métodos Simplécticos .....................................................74
2.4.3.9
Métodos BDF para EDMRs de gran Escala..............................................................76
2.4.4
Aplicaciones .......................................................................................................................78
2.4.4.1
Problemas del Control Óptimo..................................................................................78
2.4.4.2
Problemas de Filtrado y Estimación..........................................................................79
2.4.4.3
Sistemas de Parámetros Distribuidos ........................................................................80
2.4.4.4
Reducción de Orden y Desacoplamiento ..................................................................81
2.4.4.5
Resolución de Problemas de Contorno .....................................................................82
2.4.5
Software para la Resolución de EDMRs ............................................................................83
2.5
Conclusiones................................................................................................... 84
Capítulo 3
Cálculo de Funciones de Matrices ................................... 87
3.1
Resumen de Contenidos.................................................................................. 87
3.2
Algoritmos Basados en los Aproximantes Diagonales de Padé..................... 90
3.2.1
Esquema General................................................................................................................90
3.2.2
Determinación de los Polinomios de la Aproximación Diagonal de Padé .........................92
3.2.3
Funciones Polinómicas y Racionales..................................................................................94
3.2.4
Cálculo de Funciones de Matrices ......................................................................................96
3.2.4.1
Función Exponencial.................................................................................................97
3.2.4.2
Función Potencia Fraccionaria ..................................................................................99
3.2.4.3
Función Logaritmo..................................................................................................102
3.2.4.4
Función Coseno.......................................................................................................104
3.2.4.5
Función Seno ..........................................................................................................106
3.3
Algoritmos Basados Descomposición Real de Schur de una matriz ............ 108
3.3.1
Esquema General..............................................................................................................108
3.3.2
Algoritmo Basado en la Reducción a una Forma Diagonal por Bloques..........................109
3.3.3
Algoritmos Basados en la Resolución de la Ecuación Conmutante .................................112
3.3.3.1
Algoritmos Orientados a Columnas y a Diagonales................................................113
3.3.3.1.1 Algoritmo Orientado a Columnas ......................................................................117
3.3.3.1.2 Algoritmo Orientado a Diagonales.....................................................................118
3.3.3.2
Algoritmos Orientados a Bloques ...........................................................................119
3.3.3.3
Algoritmo con Agrupación de Valores Propios Cercanos ......................................121
3.3.4
Algoritmo Basado en los Aproximantes Diagonales de Padé...........................................124
3.4
Conclusiones................................................................................................. 125
Capítulo 4
Linealización a Trozos .................................................... 129
4.1
Resumen de Contenidos................................................................................ 129
4.2
Métodos de Linealización a Trozos para EDOs........................................... 131
4.2.1
EDOs no Autónomas ........................................................................................................131
4.2.1.1
Método Basado en los Aproximantes Diagonales de Padé .....................................135
4.2.1.2
Método Basado en la Ecuación Conmutante...........................................................142
VIII
4.2.1.3
Método Basado en los Subespacios de Krylov .......................................................145
4.2.2
EDOs Autónomas .............................................................................................................149
4.2.2.1
Método Basado en los Aproximantes Diagonales de Padé .....................................151
4.2.2.2
Método Basado en la Ecuación Conmutante...........................................................153
4.2.2.3
Método Basado en los Subespacios de Krylov .......................................................155
4.3
Métodos de Linealización a Trozos de EDMRs ........................................... 158
4.3.1
Resolución de EDMRs con Coeficientes Variables..........................................................158
4.3.1.1
Método Basado en los Aproximantes Diagonales de Padé .....................................160
4.3.1.2
Método Basado en la Ecuación Conmutante...........................................................167
4.3.1.3
Método Basado en los Subespacios de Krylov .......................................................172
4.3.2
Resolución de EDMRs con Coeficientes Constantes .......................................................175
4.3.2.1
Método Basado en los Aproximantes Diagonales de Padé .....................................177
4.3.2.2
Método Basado en la Ecuación Conmutante...........................................................181
4.3.2.3
Método Basado en los Subespacios de Krylov .......................................................184
4.4
Conclusiones................................................................................................. 186
Capítulo 5
Resultados Experimentales ............................................ 189
5.1
Resumen de Contenidos................................................................................ 189
5.2
Cálculo de Funciones de Matrices ............................................................... 190
5.2.1
Funciones Polinómicas y Racionales................................................................................190
5.2.1.1
Resultados Funciones Polinómicas .........................................................................191
5.2.1.2
Resultados Funciones Racionales ...........................................................................194
5.2.2
Rutinas Basadas en los Aproximantes Diagonales de Padé..............................................200
5.2.3
Rutinas Basadas en la Descomposición real de Schur de una matriz ...............................210
5.3
5.3.1
5.3.2
5.3.3
5.3.4
5.4
5.4.1
5.4.2
5.5
5.5.1
5.5.2
5.6
Propagación de Ondas Monocromáticas en Fibras de Cristal Fotónico .... 214
Algoritmo Basado en la Diagonalización de una Matriz ..................................................216
Algoritmo Basado en los Aproximantes Diagonales de Padé...........................................217
Algoritmo Basado en la Iteración DB y en los Aproximantes Diagonales de Padé .........218
Resultados.........................................................................................................................218
Resolución de EDOs..................................................................................... 220
EDOs Autónomas .............................................................................................................222
EDOs no autónomas .........................................................................................................237
Resolución de EDMRs .................................................................................. 246
EDMRs con Coeficientes Constantes ...............................................................................249
EDMRs con Coeficientes Variables .................................................................................266
Conclusiones................................................................................................. 280
Capítulo 6
Conclusiones y Líneas Futuras de Investigación ......... 285
6.1
Resumen de Contenidos................................................................................ 285
6.2
Conclusiones Finales.................................................................................... 285
6.2.1
6.2.2
6.2.3
6.2.4
Funciones de Matrices ......................................................................................................285
Aplicación de las Funciones de Matrices .........................................................................286
Resolución de EDOs.........................................................................................................287
Resolución de EDMRs .....................................................................................................288
6.3
Publicaciones en el Marco de la Tesis ......................................................... 290
6.4
Líneas Futuras de Investigación .................................................................. 292
Apéndice A.
Conceptos Básicos y Notaciones ................................. 295
Apéndice B.
MATLAB...................................................................... 307
IX
Resolución de EDOs .......................................................................................................................307
Funciones de Matrices ....................................................................................................................308
Apéndice C.
BLAS y LAPACK........................................................ 311
BLAS 312
Convenciones en el BLAS .........................................................................................................312
Estructura del BLAS ..................................................................................................................313
LAPACK ........................................................................................................................................315
Estructura del LAPACK ............................................................................................................315
Tratamiento de Errores en el LAPACK .....................................................................................316
Equilibrado y Condicionamiento en LAPACK..........................................................................319
Proyector Espectral y Separación de Matrices ...........................................................................320
Otras Características del LAPACK............................................................................................322
Argumentos Matriciales ........................................................................................................322
Matrices de Trabajo...............................................................................................................322
Argumento Info .....................................................................................................................322
Determinación del Tamaño de Bloque Óptimo .....................................................................322
Prestaciones del LAPACK.........................................................................................................323
Apéndice D.
SGI Altix 3700 .............................................................. 325
Arquitectura ....................................................................................................................................325
Software..........................................................................................................................................325
Compiladores .............................................................................................................................326
Librerías .....................................................................................................................................326
Bibliografía .............................................................................................. 327
X
Capítulo 1: Introducción
Capítulo 1 Introducción
1.1 Resumen de Contenidos
Esta memoria se enmarca dentro de la línea de investigación de Computación de Altas
Prestaciones para el Cálculo de Funciones de Matrices y su aplicación a la resolución de
problemas que aparecen en ingeniería y en otras áreas de aplicación. Entre los
problemas tratados en esta tesis se encuentran la Resolución de Ecuaciones
Diferenciales Ordinarias (EDO), la Resolución de Ecuaciones Diferenciales Matriciales
de Riccati (EDMRs) y la Simulación de la Propagación de Ondas en Fibras de Cristal
Fotónico. Para ello, se han diseñado nuevos métodos y algoritmos, escritos en
MATLAB y FORTRAN, que resuelven los problemas citados. La implementación de
dichos algoritmos se ha realizado de manera eficiente y portable, desde un punto de
vista computacional, al haber utilizado librerías optimizadas de BLAS (Basic Linear
Algebra Subroutines) y LAPACK (Linear Algebra PACKage), hoy por hoy, los
estándares más ampliamente utilizados en el desarrollo de software numérico de Altas
Prestaciones.
Este capítulo está estructurado en cuatro secciones. En la segunda sección se enumeran
los objetivos que han servido de guía en el desarrollo de la tesis, describiendo además
las aportaciones más relevantes de la misma.
La tercera sección describe la metodología utilizada en el desarrollo del software. Para
obtener un software de calidad es necesario utilizar metodologías procedentes de la
Ingeniería del Software. Para ello se han aplicado métodos y técnicas que proceden de
dicha disciplina, adaptándolos convenientemente para el desarrollo de Software de
Computación Numérica de Altas Prestaciones.
La última sección está dedicada a detallar el contenido de cada uno de los capítulos que
conforman esta tesis, describiendo brevemente el contenido de los mismos.
1.2 Objetivos y Aportaciones de la Tesis
Los objetivos generales que se han pretendido alcanzar al desarrollar esta tesis han sido:
• Estudiar las propiedades numéricas de las Funciones de Matrices más usuales y
así desarrollar nuevos algoritmos para su cálculo.
• Resolver EDOs y EDMRs mediante técnicas que involucran Funciones de
Matrices, desarrollando nuevos métodos y algoritmos.
• Análisis y resolución de problemas reales en los que es necesario el cálculo de
Funciones de Matrices.
• Desarrollar un software de computación numérica de calidad, es decir, eficiente,
de altas prestaciones, portable, robusto y correcto, para la resolución de los
problemas citados.
Todos estos objetivos se han alcanzado, como a continuación se detalla.
1
Capítulo 1: Introducción
La necesidad de calcular Funciones de Matrices aparece en una gran variedad de
aplicaciones, constituyendo una herramienta básica en el diseño de sistemas de control,
problemas de convección difusión, estudio de fluidos, etc. En algunas de estas
aplicaciones se requiere un tiempo de cálculo muy elevado, al aparecer en la resolución
del problema matrices de gran dimensión, mientras que en otras es necesario realizar
muchos cálculos por unidad de tiempo para, por ejemplo, poder interactuar sobre un
sistema físico en tiempo real. En esta tesis se ha realizado un estudio completo de las
funciones matriciales más utilizadas, proponiéndose la utilización de metodologías
generales para el cálculo de las mismas. En la actualidad el paquete de software
MATLAB tiene implementadas un amplio conjunto de Funciones de Matrices; sin
embargo, únicamente se dispone de un reducido número de rutinas escritas en lenguajes
de alto nivel que calculan algunas de las funciones matriciales más usuales. Entre las
contribuciones de esta tesis para el cálculo de Funciones de Matrices se encuentran las
siguientes:
• Desarrollo de algoritmos, basados en metodologías generales, para el cálculo de
Funciones de Matrices: algoritmos basados en los aproximantes diagonales de
Padé de una función y algoritmos basados en la descomposición real de Schur de
una matriz.
•
Se ha diseñado nuevos algoritmos basados en los aproximantes diagonales de
Padé que permiten el cálculo eficiente de Funciones de Matrices como, por
ejemplo, la potencia fraccionaria de una matriz (Algoritmo 3.7) o la función seno
matricial (Algoritmo 3.10).
•
Se han diseñado nuevos algoritmos que utilizan la descomposición real de Schur
de una matriz para calcular Funciones de Matrices. Entre estos algoritmos se
encuentran el basado en la forma diagonal a bloques (Algoritmo 3.13 ), los
basados en la Ecuación Conmutante (Algoritmo 3.15, Algoritmo 3.16, Algoritmo
3.17, Algoritmo 3.18), el basado en la agrupación en clusters de los valores
propios cercanos de un matriz (Algoritmo 3.22) y el basado en los aproximantes
diagonales de Padé (Algoritmo 3.23).
• Diseño e implementación de funciones/rutinas escritas en MATLAB y
FORTRAN, para el cálculo de Funciones de Matrices, basadas en las rutinas
anteriores.
• Estudio, diseño e implementación de rutinas de altas prestaciones que permiten la
simulación de la propagación de ondas en fibras de cristal fotónico.
Para la mayoría de las EDOs no lineales se desconoce su solución analítica y hay que
utilizar técnicas numéricas para obtener soluciones aproximadas. Estas técnicas se basan
en la transformación, mediante fórmulas de diferenciación o de integración numérica,
de un problema continuo en otro discreto, siendo hasta ahora los métodos Runge-Kutta
o BDF (Backward Differentiation Formulae) los más ampliamente utilizados. En esta
tesis se propone resolver EDOs mediante la técnica de linealización a trozos. Esta
técnica consiste en dividir el intervalo considerado en subintervalos más pequeños, de
manera que en cada uno de ellos se realiza una aproximación lineal de la función que
define a la EDO. Entre las aportaciones realizadas en esta tesis para la resolución de
EDOs se encuentran las siguientes:
• Demostración del Teorema 4.1 que permite resolver EDOs mediante la técnica de
linealización a trozos de la función que define a la EDO, y en donde no se
requiere que la matriz Jacobiana sea invertible.
2
Capítulo 1: Introducción
• Desarrollo de dos nuevos métodos, basados en el teorema anterior, para la
resolución de EDOs:
− Método basado en el cálculo de la exponencial de una matriz a bloques,
asociada al problema, mediante aproximantes diagonales de Padé.
− Método basado en el cálculo del producto de la exponencial de una matriz a
bloques por un vector mediante una aproximación basada en subespacios de
Krylov.
• Desarrollo de un método para la resolución de EDOs basado en la linealización a
trozos y en la Ecuación Conmutante. En esta aproximación es necesario que la
matriz Jacobiana sea invertible.
• Para cada uno de los métodos anteriores se han desarrollo algoritmos para la
resolución de EDOs no autónomas (Algoritmo 4.5, Algoritmo 4.7, Algoritmo
4.11) y para la resolución de EDOs autónomas (Algoritmo 4.14, Algoritmo 4.16 y
Algoritmo 4.18).
• Implementación de los algoritmos anteriores en MATLAB y FORTRAN,
determinando los parámetros característicos de los diferentes métodos y
optimizando sus costes espacial y temporal.
Una de las ecuaciones diferenciales no lineales más usadas en el ámbito científico es la
Ecuación Diferencial Matricial de Riccati (EDMR). Esta ecuación juega un papel
fundamental en problemas de control óptimo y filtrado. Una de las técnicas
ampliamente utilizadas para resolver dicha ecuación consiste en aplicar el método BDF.
Este método está especialmente indicado para resolver EDMRs de tipo rígido. Otro de
los métodos que se pueden aplicar en la resolución de EDMRs consiste en la
vectorización de ecuaciones diferenciales matriciales, que permite convertir una EDMR
en una EDO. En esta tesis se han desarrollado varios métodos de resolución de EDMRs
que consisten en aplicar la linealización a trozos a la EDO anterior, utilizando técnicas
especiales para la resolución eficiente de la misma. Entre las aportaciones relativas a la
resolución de EDMRs se encuentran las siguientes:
• Desarrollo de una nueva metodolgía para la resolución de EDMRs basada en la
técnica de linealización a trozos. Esta metodología consiste, básicamente, en
transformar la EDMR en una EDO de gran dimensión y aplicarle la linealización
a trozos.
• Desarrollo de tres métodos basados en la linealización a trozos.
− Método basado en los aproximantes diagonales de Padé. El primer método
consiste en calcular la solución aproximada de una EDMR en un instante
determinado mediante el cálculo de dos exponenciales de matrices definidas a
bloques. De este modo, se pasa de un problema vectorial de gran dimensión a
otro matricial de menor dimensión. Este método está basado en dos teoremas
desarrollados en el ámbito de esta tesis, Teorema 4.3 y Teorema 4.5, que se
aplican, respectivamente, a EDMRs con coeficientes variables y a EDMRs
con coeficientes constantes.
− Método basado en la Ecuación Conmutante. Para el segundo método se han
demostrado dos teoremas, uno para EDMRs con coeficientes variables
(Teorema 4.4) y otro para EDMRs con coeficientes constantes (Teorema
4.6), que permiten transformar un problema vectorial de resolución de una
3
Capítulo 1: Introducción
EDO de gran dimensión en otro matricial, consistente en resolver ecuaciones
matriciales de Sylvester.
− Método basado en los subespacios de Krylov. El tercer método está basado en
el cálculo del producto de la exponencial de una matriz definida a bloques,
obtenida en el proceso de vectorización, por un vector, utilizando para ello los
subespacios de Krylov.
• A partir de los métodos anteriores se han desarrollado seis nuevos algoritmos
(Algoritmo 4.21, Algoritmo 4.23, Algoritmo 4.26, Algoritmo 4.29, Algoritmo
4.31, Algoritmo 4.33) y sus correspondientes implementaciones.
A partir de las pruebas realizadas en el Capítulo 5, se puede comprobar que el coste
computacional de las implementaciones basadas en los métodos de linealización a
trozos resultan ser menores que las implementaciones basadas en el método BDF
([Diec92]), siendo además algo más precisas. Además, tienen un buen comportamiento
cuando se aplican a EDMRs de tipo rígido.
Hay que destacar que actualmente no se dispone de funciones escritas en MATLAB que
resuelvan EDMRs y, en el caso de rutinas escritas en FORTRAN, tan sólo se dispone
del paquete DRSOL (), pero únicamente para datos en simple precisión.
Debido al gran número de algoritmos desarrollados e implementados, ha sido necesario
utilizar una notación que permitiese conocer a partir del nombre de un algoritmo la
finalidad del mismo y el método empleado. La nomenclatura utilizada para los
algoritmos es txxyyyzzz, donde t indica el tipo de dato utilizado, xx indica el tipo de
matriz, yyy indica el problema que se resuelve y zzz el método utilizado. Los valores de
los tres primeros caracteres son:
• t: tipo de dato utilizado.
− t=s, datos reales de simple precisión;
− t=d, datos reales de doble precisión;
− t=c, datos complejos de simple precisión;
− t=z, datos complejos de doble precisión.
• xx: tipo de matriz.
− xx=ge, indica matrices generales;
− xx=ct, indica matrices casi triangulares superiores.
La misma nomenclatura ha sido utilizada para nombrar a las funciones de MATLAB y a
las rutinas en FORTRAN, de manera que para cada algoritmo se tiene una función en
MATLAB y una rutina en FORTRAN con el mismo nombre.
1.3 Metodología
Así como las metodologías para el desarrollo del software de gestión están muy
avanzadas, el software científico adolece en la actualidad de herramientas que cubran
todas las etapas para el desarrollo completo de una aplicación. Las técnicas más
empleadas para el desarrollo del software de gestión no se pueden aplicar debido,
fundamentalmente, a la propia naturaleza de las aplicaciones del cálculo científico que,
en general, poseen muy pocas características en común. En esta tesis se aboga por
4
Capítulo 1: Introducción
utilizar un ciclo de vida semiautomático consistente, básicamente, en dos etapas que a
continuación se describen.
Para la primera etapa se utiliza MATLAB pues dispone de un lenguaje de programación
que permite expresar y desarrollar, de forma sencilla, algoritmos numéricos,
disponiendo además de numerosas funciones del algebra matricial y de una potente
herramienta de depuración de código que facilita el desarrollo de los mismos.
En la segunda etapa se utiliza un lenguaje de alto nivel (FORTRAN) junto con las
librerías BLAS y LAPACK. Estas librerías implementan, por una parte, las operaciones
más comunes entre vectores y matrices y, por otra, disponen de numerosas rutinas que
resuelven los problemas más comunes que aparecen en el algebra matricial. Esto
posibilita escribir los programas en FORTRAN (o C) de forma modular, centrando la
atención en los aspectos algorítmicos y no en los detalles del propio lenguaje utilizado.
Otra ventaja adicional es que la mayor parte de los sistemas informáticos utilizados en
computación disponen de librerías optimizadas de BLAS y LAPACK, con el
consiguiente rendimiento de los códigos que utilizan a esas rutinas.
De este modo, la combinación de estas herramientas posibilita la creación de software
numérico robusto y de altas prestaciones de forma sistemática y sencilla. En la siguiente
figura se muestra el ciclo de vida utilizado en el desarrollo del software numérico.
Formulación del
problema (1)
Ajuste de los
parámetros del
algoritmo 1 (4)
Descripción
matemática del
método (2)
Ajuste de los
parámetros del
código (7)
Algoritmo 1
Algoritmo 2
MATLAB (3)
MATLAB (5)
Código en
lenguaje de
alto nivel (6)
Figura 1.1: Ciclo de vida utilizado en el desarrollo del software.
En (1) se tiene claramente definido el problema que se quiere resolver. En (2) se realiza
una descripción matemática del método que se va a implementar, partiendo de un
estudio teórico de la viabilidad del mismo. En (3) se realiza un primer algoritmo, escrito
en MATLAB, que implementa el método desarrollado en (2). A través de sucesivas
pruebas se determinan, mediante (4), los valores óptimos de los parámetros
característicos del método aplicado. Una vez se ha realizado este ajuste, se tiene un
primer algoritmo escrito en MATLAB. Como paso intermedio para la codificación del
algoritmo anterior en un lenguaje de alto nivel, se desarrolla un segundo algoritmo en
(5) mediante la traducción del primer algoritmo, de manera que las operaciones que
aparecen en él corresponden a operaciones básicas del BLAS y del LAPACK. En (6) se
hace una codificación en un lenguaje de alto nivel en el que se hace una traducción del
algoritmo desarrollado en (5) utilizando llamadas a BLAS o a LAPACK. La etapa (7) es
necesaria, fundamentalmente, cuando se usan algoritmos orientados a bloques, en los
que es necesario optimizar los accesos a memoria.
5
Capítulo 1: Introducción
En la siguiente figura se muestra un ejemplo en el que aparece la codificación de un
fragmento de un algoritmo según la metodología considerada.
(3)
G= A21+A22*X-X*A11-X*A12*X;
(5)
G=A21;
G=A22*X+G;
G=-X*A11+G;
W=X*A12;
G=-W*X+G;
C
C
$
C
$
C
$
C
$
(6)
G=A21
CALL DCOPY(MN,WORK(NA21),1,WORK(NG),1)
G=A22*X+G
CALL DGEMM('N','N',M,N,M,ONE,WORK(NA22),M,X,M,
ONE,WORK(NG),M)
G=-X*A11+G
CALL DGEMM('N','N',M,N,N,-ONE,X,M,WORK(NA11),N,
ONE,WORK(NG),M)
W=X*A12;
CALL DGEMM('N','N',M,M,N,ONE,X,M,WORK(NA12),N,
ZERO,WORK(NWORK),M)
G=-W*X+G;
CALL DGEMM('N','N',M,N,M,-ONE,WORK(NWORK),M,X,M,
ONE,WORK(NG),M)
Figura 1.2: Codificación de un fragmento de un algoritmo en las etapas (3), (5) y (6).
Como se puede observar, el código de la etapa (3) se desglosa en varias líneas de código
correspondiente al algoritmo de la etapa (5). El código obtenido en (6) es una
traducción, línea a línea, del código de la etapa (5).
Para las etapas (3) y (6) se ha dispuesto de un numeroso conjunto de pruebas que
permiten validar el código desarrollado. Estas baterías de pruebas provienen, en algunos
casos, de problemas reales y, en otros, de pruebas especiales que permiten comprobar la
bondad de los algoritmos desarrollados. Entre las baterías de pruebas utilizadas se
encuentran las siguientes:
• Cálculo de Funciones de Matrices.
− The Matrix Computation Toolbox for MATLAB ([High02]). Contiene una
colección de funciones escritas en MATLAB para la generación de matrices
de prueba, el cálculo de factorizaciones matriciales, la visualización de
matrices, etc.
− Además del anterior paquete, se han diseñado y utilizado, dentro del marco de
la tesis, numerosas funciones/rutinas escritas en MATLAB y FORTRAN que
6
Capítulo 1: Introducción
generan matrices especiales, idóneas para el estudio de Funciones de Matrices
como, por ejemplo, matrices casi triangulares superiores, matrices de
Hessenberg, matrices con valores propios múltiples, etc.
• Resolución de EDOs.
− Test Set for Initial Value Problems Solvers ([LiSw98]). Contiene una
colección de problemas de valores iniciales para EDOs, Ecuaciones
Diferenciales Implícitas (EDIs) y Ecuaciones Diferenciales Algebraicas
(EDAs), escritos en FORTRAN y procedentes de problemas reales.
• Resolución de EDMRs.
− Time-Varying Riccati Differential Equations with Known Analytic Solutions
([Choi92]). Se trata de un artículo aparecido en la revista IEEE Transactions
on Automatic Control, en el que se definen problemas de EDMRs con
solución analítica conocida, ideales para su utilización en pruebas.
− Numerical Integration of the Differential Riccati Equation and Some Related
Issues ([Diec92]). Contiene una recopilación de varios problemas de EDMRs
que provienen de problemas reales, además de una de las aproximaciones del
método de resolución BDF más ampliamente utilizada.
1.4 Estructura de la Tesis
El contenido de esta tesis se estructura en seis capítulos. El primero corresponde al
actual capítulo, en el que se ha realizado una breve descripción de los objetivos
planteados en esta tesis, se han enumerado las aportaciones realizadas y se ha explicado
la metodología utilizada en el desarrollo e implementación de los algoritmos
desarrollados.
En el segundo capítulo se realiza una descripción del estado del arte correspondiente al
cálculo de Funciones de Matrices y a la resolución de EDOs y EDMRs. En el caso de
las Funciones de Matrices se describen algunas de las definiciones de función de una
matriz, se enumeran sus propiedades más importantes y se describen los métodos más
usuales para su cálculo. Para la resolución de EDOs se detallan únicamente aquellos
aspectos de interés que posteriormente se utilizarán en el desarrollo e implementación
de los nuevos métodos basados en la linealización a trozos. Por último, se realiza una
descripción detallada del estado del arte correspondiente a la resolución de EDMRs,
haciendo una breve exposición de sus principales propiedades, describiendo los
métodos numéricos más destacados que se han ido utilizando a lo largo del tiempo y
enumerando algunas de sus aplicaciones.
El tercer capítulo está dedicado a describir los algoritmos desarrollados en esta tesis
para el cálculo de Funciones de Matrices. Para ello se han desarrollado dos
metodologías generales: una basada en los aproximantes diagonales de Padé y otra que
utiliza la reducción a la forma real de Schur de una matriz. La primera metodología
consiste, básicamente, en las siguientes etapas: 1.- minimizar la norma de la matriz
considerada; 2.-determinar un polinomio de Taylor apropiado de la función; 3.- calcular,
a partir del polinomio de Taylor, los polinomios de la aproximación diagonal de Padé de
la función; 4.- obtener la aproximación diagonal de Padé de la función; y 5.- calcular la
función de la matriz, teniendo en cuenta la reducción de la norma realizada en la
primera etapa. Una vez realizada esta descripción se particulariza, dicho algoritmo
general, al cálculo de algunas Funciones de Matrices: exponencial, logarítmica, potencia
7
Capítulo 1: Introducción
fraccionaria, seno y coseno. La segunda metodología utiliza la forma real de Schur de
una matriz para calcular, a partir de ella, la función de la matriz original. Los algoritmos
que utilizan esta metodología suelen ser muy precisos y razonablemente eficientes.
Entre estos algoritmos se encuentran los basados en la Ecuación Conmutante sin
agrupación de valores propios (algoritmos orientados a columnas, a diagonales y a
bloques), el algoritmo basado en la agrupación de valores propios cercanos, el algoritmo
basado en la diagonalización a bloques de una matriz y el basado en el cálculo de
Funciones de Matrices casi triangulares superiores mediante los aproximantes
diagonales de Padé.
El cuarto capítulo está dedicado a la resolución de EDOs y EDMRs mediante la técnica
de linealización a trozos. En el caso de EDOs se demuestra el Teorema 4.1 y se
presentan tres métodos, basados en él, que permiten resolver eficientemente EDOs:
Método basado en los aproximantes diagonales de Padé, método basado en la Ecuación
Conmutante y método basado en los subespacios de Krylov.
Para la resolución de EDMRS se ha desarrollado una metodología consistente en
transformar la EDMR en una EDO y aplicar a esta ecuación diferencial la técnica de
linealización a trozos desarrollada para EDOs. Al aplicar la linealización a trozos, se
obtiene una Ecuación Diferencial Lineal (EDL) de gran dimensión en cada subintervalo,
por lo que se hace necesaria la aplicación de métodos especiales para su resolución. En
este caso, en lugar de aplicar los métodos desarrollados para EDOs, se han desarrollado
tres nuevos métodos: Método basado en los aproximantes diagonales de Padé, método
basado en la Ecuación Conmutante y método basado en los subespacios de Krylov
Todos los anteriores métodos se han particularizado para resolver EDOs autónomas y
EDMRs con coeficientes constantes de modo que se han reducido los costes
computacionales y de almacenamiento.
En el quinto capítulo se detallan y analizan todas las pruebas realizadas. En primer lugar
se describen brevemente los componentes software y hardware que, de algún modo, se
han utilizado en el desarrollo e implementación de los algoritmos descritos en esta tesis.
A continuación se describen las pruebas realizadas para el cálculo de Funciones de
Matrices, comenzando con el cálculo de funciones polinómicas y racionales,
continuando con el cálculo de funciones trascendentes mediante los aproximantes
diagonales de Padé y mediante la descomposición real de Schur de una matriz. Para
cada prueba se determinan los valores óptimos de los parámetros característicos de cada
implementación. En tercer lugar se presenta un problema consistente en la simulación
de la propagación de ondas monocromáticas en fibras de cristal fotónico. El interés del
estudio es analizar dicha propagación sin hacer uso de experimentos reales con las
consiguientes ventajas que esto supone. Para ello se analizan e implementan los
métodos numéricos más adecuados para su simulación. A continuación se describen las
pruebas realizadas para la resolución de EDOs, presentando el problema a resolver y sus
orígenes. Para cada problema se comparan las funciones/rutinas implementadas,
habiendo determinado previamente los valores óptimos de los parámetros característicos
de cada función/rutina. Para esa comparación, se han realizado diversas pruebas en las
que se varía el incremento de tiempo utilizado en la linealización a trozos, el tiempo
final y el tamaño de problema. Del mismo modo, se realiza un estudio similar para la
resolución de EDMRs.
En el sexto capítulo se exponen las conclusiones de todo el trabajo realizado, se
enumeran las publicaciones realizadas en el marco de esta tesis y se perfilan las posibles
líneas de investigación futuras que se abren con la misma.
8
Capítulo 1: Introducción
Al final de la tesis se han añadido cuatro apéndices que a continuación se detallan. En el
primer apéndice se describen las definiciones, propiedades y teoremas que, de algún
modo, se han utilizado en esta tesis, así como la notación empleada en la misma. En el
segundo apéndice se realiza una descripción de MATLAB, como entorno de desarrollo
y programación de algoritmos. En el tercer apéndice se describen BLAS y LAPACK,
por ser las librerías utilizadas en el desarrollo eficiente y portable de software numérico
de altas prestaciones. En el cuarto anexo se describen los componentes software y
hardware que se han utilizado en el desarrollo e implementación de los algoritmos
descritos en esta tesis: la máquina SGI Altix 3700, el compilador FORTRAN de Intel y
las librerías SGI SCL (Scientific Computing Software Library) que contienen el BLAS
y el LAPACK.
9
Capítulo 2: Estado del Arte
Capítulo 2 Estado del Arte
2.1 Resumen de Contenidos
En este capítulo se hace una revisión de las propiedades y métodos más relevantes para
el cálculo de Funciones de Matrices, y la resolución de Ecuaciones Diferenciales
Ordinarias (EDOs) y Ecuaciones Diferencial Matriciales de Riccati (EDMRs).
Este capítulo se ha estructurado en cinco secciones. La segunda sección comienza con
un estudio completo de las funciones matriciales más utilizadas, indicando sus orígenes
y aplicaciones, haciendo además una breve descripción de los métodos que se han ido
utilizando desde sus comienzos hasta nuestros días. Junto a la descripción de estos
métodos se realiza un estudio comparativo de los mismos, para deducir cuáles son las
mejores estrategias para el cálculo de Funciones de Matrices. La finalidad de este
estudio es encontrar metodologías generales que permitan calcular eficientemente
Funciones de Matrices, sin dejar de lado cada caso particular (tipo de función y matriz).
En la tercera sección se describen únicamente aquellos aspectos de interés en la
resolución de EDOs que, de alguna manera, se utilizan en los siguientes capítulos,
especialmente los relacionados con el desarrollo e implementación de los nuevos
métodos basados en la linealización a trozos.
En la cuarta sección se comienza con una breve descripción de las principales
propiedades de las EDMRs, detallando a continuación los métodos de resolución de
EDMRs más conocidos, para finalizar con algunos ejemplos de aplicaciones de las
mismas.
En la última sección se exponen las conclusiones de este capítulo.
2.2 Funciones de Matrices
2.2.1 Definiciones y Propiedades
De una manera informal, dada una función compleja de variable compleja f (z )
definida sobre el espectro de una matriz cuadrada A , la matriz f ( A) se puede obtener
sustituyendo la variable z por la matriz A en la expresión que define a f ( z ) . Desde un
punto de vista formal, f ( A) se puede definir utilizando diferentes aproximaciones. En
[Rine78], Rinehart demostró la equivalencia entre ocho definiciones de funciones de
matrices; quizás la más elegante de ellas, aunque no la más útil desde el punto de vista
computacional, es la que se presenta en primer lugar.
Definición 2.1 ([GoVa96], capítulo11).
Sea A una matriz cuadrada definida en el conjunto de los números complejos C y
f (z ) una función analítica definida en un abierto U ⊂C que contiene al espectro de
A . Si Γ ⊂ U es una curva rectificable que rodea al espectro de A , entonces la matriz
f ( A) se puede definir como
11
Capítulo 2: Estado del Arte
f ( A) =
1
f ( z )( Iz − A) −1 dz .
2πi ∫Γ
Según esta definición, el elemento (k , j ) de la matriz f ( A) viene dado por
f kj =
1
−1
f ( z )ekT (Iz − A) e j dz ,
∫
2πi Γ
siendo ek y e j , respectivamente, la k-ésima y la j-ésima columna de la matriz identidad
I . Esta definición proviene del teorema integral de Cauchy, por lo que se trata de una
definición independiente de la curva Γ .
Una de las definiciones más utilizadas ([Gant90], [LaMi85]) es la basada en la forma
canónica de Jordan de una matriz y en el polinomio de interpolación de grado mínimo
de una función.
Definición 2.2 ([Gant90], capítulo 5).
Dada una función analítica f ( z ) definida en un abierto U ⊂C
espectro de A ∈C nxn , se define la matriz f ( A) como
que contiene al
f ( A) = p( A) ,
siendo p( z ) el polinomio de grado mínimo que interpola a la función f ( z ) en el
espectro de la matriz A ; es decir,
p ( j ) (λi ) = f ( j ) (λi ) , j = 0,1,L, ni − 1 , i = 1,2,L, s ,
con s el número de valores propios distintos de A y ni la mayor de las dimensiones de
los bloques de Jordan que contienen al valor propio λi .
A partir de estas definiciones se pueden demostrar propiedades que permiten calcular y
definir, de otras formas, las funciones de matrices.
Propiedad 2.1
Dada A ∈C nxn y f ( z ) función analítica definida en un abierto U ⊂C que contiene al
espectro de A , entonces f ( A) es solución de la ecuación
( 2.1 )
AX = XA ,
denominada ecuación conmutante.
Propiedad 2.2
Sea A ∈C nxn y f ( z ) función analítica definida en un abierto U ⊂C que contiene al
espectro de A . Si A = XBX −1 entonces
f ( A) = Xf ( B) X −1 .
12
Capítulo 2: Estado del Arte
Propiedad 2.3
Sea A ∈C
nxn
y f (z ) función analítica definida en un abierto U ⊂C que contiene al
espectro de A . Si A = diag ( A1 , A2 ,L, Ar ) , con Ai ∈ C ni xni , i = 1,2,L, r ,
r
∑n
i =1
i
= n,
entonces
f ( A) = diag( f ( A1 ), f ( A2 ), L , f ( Ar )) .
Corolario 2.1.
Sea A ∈C nxn y f ( z ) una función analítica definida en un abierto U ⊂C que contiene
al espectro de A . Si
A = QSQ*
es la descomposición de Schur de A , entonces
f ( A) = Qf ( S )Q * .
Corolario 2.2.
Sea A ∈C nxn y f ( z ) una función analítica definida en un abierto U ⊂C que contiene
al espectro de A . Si
A = Xdiag( J λ1 , J λ2 , L , J λr ) X −1
( 2.2 )
es la descomposición canónica de Jordan de la matriz A , entonces
f ( A) = Xdiag( f ( J λ1 ), f ( J λ2 ), L , f ( J λr )) X −1 ,
( 2.3 )
siendo
( )
( 2.4 ) f J λi
⎡
⎢ f (λi )
⎢
⎢
⎢ 0
=⎢
⎢ M
⎢ 0
⎢
⎢ 0
⎣
f (1) (λi )
L
1!
f (λi )
L
O
O
f ( ni − 2) (λi )
(ni − 2)!
f ( ni −3) (λi )
(ni − 3)!
M
L
O
f (λ i )
L
L
0
(λi ) ⎤
⎥
(ni − 1)! ⎥
f ( ni − 2) (λi ) ⎥
(ni − 2)! ⎥ ∈C
⎥
M
⎥
f (1) (λi ) ⎥
⎥
1!
f (λi ) ⎥⎦
f
( ni −1)
ni xni
, i = 1,2,L, r .
Otros autores definen las funciones de matrices a partir del concepto de función
matricial primaria.
Definición 2.3 ([HoJo91]).
Sea A ∈C nxn y f ( z ) una función analítica definida en un abierto U ⊂C que contiene
al espectro de A . Si ( 2.2 ) es la descomposición canónica de Jordan de la matriz A , se
define la función matricial primaria de la matriz A como la matriz f ( A) obtenida a
partir de las expresiones ( 2.3 ) y ( 2.4 ).
13
Capítulo 2: Estado del Arte
Una última aproximación proviene de la definición de una función como suma de una
serie de potencias. El siguiente teorema muestra la manera de definir funciones de
matrices a partir de sumas de series de potencias de matrices.
Teorema 2.1.
Dada una matriz A ∈C nxn y f ( z ) una función analítica definida en un abierto U ⊂C
que contiene al espectro de A , definida por
∞
f ( z ) = ∑ ck z k ,
k =0
entonces la serie de potencias
∞
∑c A
k =0
k
k
,
es convergente, cumpliéndose además ([Rine78] que
∞
f ( A) = ∑ ck Ak .
k =0
2.2.2 Funciones de Matrices más Usuales
2.2.2.1 Función Exponencial
Entre las diferentes funciones de matrices, la función exponencial tiene una especial
importancia debido a su relación con la resolución de sistemas de ecuaciones
diferenciales lineales ([Bell83], [MoVa78]) que aparecen en la resolución de diversos
modelos asociados a fenómenos físicos, químicos, biológicos, económicos, etc.
([Karl59], [Varg62]). Por ejemplo, la solución de la Ecuación Diferencial Lineal (EDL)
([Bell53])
dx(t )
= Ax(t ) + b(t ) , t ≥ 0
dt
con x(0) = x0 , siendo A ∈ ℜ nxn y b ∈ ℜ n , viene dada por
t
v(t ) = e At x(0) + ∫ e A( t − s ) b( s )ds .
0
Una forma sencilla de definir la exponencial de una matriz consiste en considerar la
serie de potencias
∞
1 k
z ,
k = 0 k!
ez = ∑
y definir la exponencial de la matriz A como
∞
1 k
A .
k = 0 k!
eA = ∑
Esta serie resulta ser convergente para cualquier matriz cuadrada A .
14
Capítulo 2: Estado del Arte
2.2.2.2 Función Signo
La función signo matricial, junto a la exponencial de una matriz, resulta ser una de las
funciones matriciales que durante más tiempo y con mayor profundidad se ha
investigado. Una de las primeras referencias acerca de la función signo matricial se
encuentra en el trabajo realizado por Zolotarjov en el año 1877, en el que se
caracterizaban las mejores aproximaciones racionales de la función signo escalar
mediante el uso de funciones del tipo seno elíptico. Si embargo, el verdadero auge de
esta función se encuentra en el trabajo desarrollado por Roberts. En 1971 Roberts
realizó un informe técnico ([Robe71]) en el que se definía esta función y se describían
sencillos algoritmos para el cálculo de la misma. En este trabajo también se desarrolló el
escalado y la estimación del número de condición asociados a la función signo
matricial. Este informe técnico no fue muy conocido por la comunidad científica hasta
su publicación como artículo, en el año 1980, en la revista International Journal of
Control [Robe80].
En 1971 Abramov ([Abra71]) también utilizó un método basado en el cálculo de la
función signo matricial para revolver ciertos problemas de contorno asociados a la
resolución de EDOs.
Fruto del trabajo pionero de Roberts ha sido el desarrollo de numerosos campos de
investigación relacionados con la función signo matricial:
• Aproximación y condicionamiento de las funciones de matrices.
• Aplicaciones en control como, por ejemplo, la resolución de la Ecuación
Algebraica Matricial de Lyapunov (EAML) y la resolución de la Ecuación
Algebraica Matricial de Riccati (EAMR).
• Teoría de sistemas y cálculo matricial, aplicándose, por ejemplo, en el cálculo de
subespacios invariantes.
• Descomposiciones que aparecen en el cálculo de valores propios de una matriz.
• Cálculo de la raíz cuadrada de una matriz.
• Cálculo de la función sector de una matriz.
A continuación se define la función signo matricial tal como aparece en [Robe80]. La
función signo escalar se define como
⎧+ 1 si Re( z ) > 0
sign ( z ) = ⎨
.
⎩− 1 si Re( z ) < 0
Si A ∈C nxn no tiene valores propios imaginarios puros, entonces existe la función signo
matricial de A y se puede definir a partir de la descomposición canónica de Jordan de
A , como a continuación se detalla.
Si
A = Xdiag( J λ1 , J λ2 , L , J λr ) X −1
es la descomposición canónica de Jordan de la matriz A , entonces la función signo
matricial de A se define como
sign ( A) = Xdiag(sign( J λ1 ), sign( J λ2 ), L , sign( J λr )) X −1 .
Al cumplirse que
15
Capítulo 2: Estado del Arte
d
(sign ( z ) ) = 0 ,
dz
z = λi
y teniendo en cuenta ( 2.4), entonces
( )
sign J λi
0
⎡sign (λi )
⎢ 0
sign (λi )
⎢
=⎢ M
M
⎢
0
⎢ 0
⎢⎣ 0
0
⎤
L
0
0 ⎥⎥
O
M
M ⎥ , i = 1,2,L, r .
⎥
sign (λi )
0 ⎥
L
0
sign (λi )⎥⎦
0
L
0
Es fácil comprobar que la función signo matricial cumple las siguientes propiedades.
Propiedad 2.4.
Si A ∈C
nxn
, entonces [sign ( A)]2 = I n .
Propiedad 2.5.
Si A ∈C
nxn
, entonces sign (cA) = sign (c)sign ( A) .
Propiedad 2.6.
Los valores propios de la matriz sign ( A) , A ∈C
nxn
, son ± 1 .
2.2.2.3 Función Raíz Cuadrada
Uno de los métodos más usuales para calcular funciones de matrices consiste en realizar
un escalado previo de la matriz, pues permite reducir su norma y así se pueden aplicar
técnicas generales para el cálculo de funciones de matrices como, por ejemplo, las
aproximaciones de tipo polinómico (aproximaciones de Taylor) o las aproximaciones de
tipo racional (aproximantes de Padé). Por ejemplo, el escalado utilizado en el cálculo de
la función logarítmica, se puede realizar utilizando la identidad
log A = 2 j log A1 / 2 , j = 1,2,L ,
j
en la que aparecen raíces cuadradas de matrices.
Para definir la raíz cuadrada de una matriz es necesario que sea consistente con la
definición correspondiente al caso escalar. Dada una matriz A ∈C nxn , una solución
X ∈C nxn de la ecuación matricial cuadrática
X 2 = A,
se llama raíz cuadrada de A .
Por ejemplo, fácilmente se puede comprobar que la matriz
⎡0 1 ⎤
A=⎢
⎥
⎣0 0⎦
no tiene raíces cuadradas, sin embargo, la matriz
16
Capítulo 2: Estado del Arte
⎡1 0⎤
A=⎢
⎥
⎣0 0 ⎦
admite como raíces cuadradas a las matrices
⎡1 0⎤
⎡ − 1 0⎤
X1 = ⎢
, X2 = ⎢
⎥
⎥.
⎣0 0 ⎦
⎣ 0 0⎦
Según esto, puede no existir la raíz cuadrada de A , o existir una o más raíces de ella.
El siguiente teorema caracteriza las raíces cuadradas de una matriz cuadrada compleja y
determina cuáles de ellas corresponden a funciones de matrices en el sentido de la
Definición 2.2.
Lema 2.1 ([Hig287]).
Si λi ∈C es distinto de cero, entonces el bloque de Jordan
⎡λ i
⎢0
⎢
J λi = ⎢ M
⎢
⎢0
⎢⎣ 0
1
λi
M
0
0
0⎤
O 0 0 ⎥⎥
O O M ⎥ ∈C
⎥
L λi 1 ⎥
L 0 λi ⎥⎦
L
0
ni xni
,
tiene precisamente dos raíces cuadradas que son funciones de J λi en el sentido de la
Definición 2.2,
( )
( 2.5 ) f j J λi
⎡
⎢ f j (λ i )
⎢
⎢
⎢ 0
=⎢
⎢ M
⎢
⎢ 0
⎢
⎢⎣ 0
( ni − 2 )
(1 )
f j (λ i )
fj
(λ i )
1!
L
f (λ i )
L
O
O
(ni − 3)!
M
0
L
f j (λ i )
0
L
0
(ni − 2)!
( ni − 3 )
f j (λ i )
(λ i ) ⎤
⎥
(ni − 1)! ⎥
( ni − 2 )
fj
(λ i ) ⎥
⎥
(ni − 2)! ⎥ ∈C
⎥
M
(1)
f j (λ i ) ⎥
⎥
⎥
1!
f j (λi ) ⎥⎦
fj
( ni −1)
ni xni
, j = 1,2 ,
donde f j (λ ) = λ denota una de las dos ramas de la función raíz cuadrada en el
entorno de λi .
Teorema 2.2 ([Hig287]).
Sea A ∈C
nxn
una matriz no singular con la descomposición de Jordan
A = XJX −1 = Xdiag( J λ1 , J λ2 , L , J λr ) X −1 ,
donde J λi ∈C
r
ni xni
,
∑n
i =1
i
= n , y s ( s ≤ r ) el número de valores propios distintos de A .
Se verifican entonces las siguientes propiedades:
17
Capítulo 2: Estado del Arte
1. A tiene precisamente 2 s raíces cuadradas que son funciones de A en el sentido
de la Definición 2.2, dadas por
F j = Xdiag( f j1 ( J λ1 ), f j2 ( J λ2 ), L , f jr ( J λr )) X −1 , j = 1,2,L,2 s ,
correspondientes a todas las posibles elecciones de j1 , j2 ,L, jr ( ji ∈ {1,2},
i = 1,2,L, r ), sujetas a la restricción de que jk = jl si λk = λl .
2. Si s < r , entonces A tiene raíces cuadradas que no son funciones de A en el
sentido de la Definición 2.2. Estas raíces forman familias parametrizadas
F j (U ) = XUdiag( f j1 ( J λ1 ), f j2 ( J λ2 ), L , f jr ( J λr ))U −1 X −1 ,
2 s + 1 ≤ ji ≤ 2r , i = 1,2,L, r , siendo U una matriz no singular arbitraria que
conmuta con diag( J λ1 , J λ2 , L , J λr ) , y para cada j existen unos índices k y l ,
dependientes de j , de manera que λk = λl y jk ≠ jl .
Corolario 2.3 ([Hig287]).
Si λk ∈C es distinto de cero, entonces las únicas raíces cuadradas de la matriz J λk
del Lema 2.1 son las que aparecen en ( 2.5 ).
Corolario 2.4 ([Hig287]).
Si cada valor propio de A ∈C nxn aparece en un solo bloque de Jordan de la forma
canónica de Jordan de A , entonces A tiene precisamente 2 r raíces cuadradas, todas
ellas funciones de A en el sentido de la Definición 2.2.
Corolario 2.5 ([Hig287]).
Toda matriz hermítica y definida positiva tiene una única raíz cuadrada hermítica y
definida positiva.
A continuación se detallan varios teoremas acerca de la existencia de raíces de matrices
cuadradas reales.
Teorema 2.3 ([HoJo91], página 473).
Sea una matriz A ∈ ℜ nxn . Existe una matriz B ∈ ℜ nxn , raíz cuadrada de A , si y solo si
se cumplen las siguientes condiciones:
1. Dados los enteros r0 = n , rk = rango( A k ) , para k = 0,1,2,L , entonces la
secuencia {rk − rk +1} para k = 0,1,2,L , no contiene dos apariciones consecutivas
del mismo entero par y si además r0 − r1 es par, entonces r0 − 2r1 + r2 ≥ 1 .
2. Si
⎡λ i
⎢0
⎢
J λi = ⎢ M
⎢
⎢0
⎢⎣ 0
1
λi
M
0
0
0⎤
O 0 0 ⎥⎥
O O M ⎥ ∈C
⎥
L λi 1 ⎥
L 0 λi ⎥⎦
L
0
ni xni
18
Capítulo 2: Estado del Arte
es un bloque de Jordan de A , con λi un valor propio real negativo de A ,
entonces A tiene un número par de bloques de Jordan de igual tamaño ni
incluido J λi .
Teorema 2.4 ([High87]).
Sea A ∈ ℜ nxn una matriz no singular. Existe una matriz B ∈ ℜ nxn , raíz cuadrada real de
la matriz A , si y solo si cada bloque de Jordan de la matriz A correspondiente a un
valor propio real negativo, aparece un número impar de veces.
La comprobación de la existencia de raíces cuadradas de una matriz, a partir de los
teoremas anteriores, es complicada de manejar, fundamentalmente porque es necesario
conocer la descomposición canónica de Jordan de la matriz considerada. El siguiente
teorema, cuya demostración está basada en la descomposición real de Schur de una
matriz, permite una comprobación más sencilla de la existencia de raíces cuadradas de
matrices reales.
Teorema 2.5 ([High87]).
Sea A ∈ ℜ nxn una matriz no singular. Si A tiene un valor propio real negativo,
entonces A no tiene raíces cuadradas que son funciones de A en el sentido de la
Definición 2.2. Si A no tiene valores propios reales negativos, entonces existen
exactamente 2 r + c raíces cuadradas reales que son funciones de A en el sentido de la
Definición 2.2, siendo r el número de valores propios reales de A y c el número de
pares de valores propios complejos conjugados.
2.2.2.4 Función Raíz p-ésima
Dada una matriz A ∈C
matriz A si cumple
nxn
, se dice que la matriz X ∈C
X
p
nxn
es una raíz p-ésima de la
= A.
Entre las aplicaciones que requieren el cálculo de las raíces p-ésimas de una matriz se
encuentra el cálculo de la función sector definida por
sec( A) = ( A p ) −1/ p A ([KoBa95], [ShTs84]).
Otra posible aplicación aparece en el escalado de una matriz para el cálculo del
logaritmo de una matriz. En este caso, se determina un entero positivo p de manera que
log A = p log A1 / p ,
con || A1/ p || menor que un cierto valor ([ChHi01], [KeL289]).
Al igual que ocurre en el caso particular de raíces cuadradas, la raíz p-ésima de una
matriz puede no existir o tener una o más soluciones. Si A es no singular, entonces
admite al menos una raíz p-ésima; en caso contrario, la matriz A admite raíces p-ésimas
dependiendo de la estructura de los divisores elementales de A correspondientes a los
valores propios nulos ([Gant90], sección 8.7).
19
Capítulo 2: Estado del Arte
Definición 2.4 ([Smit03]).
Sea A ∈C nxn una matriz no singular con valores propios λi , i = 1,L , n , de manera
que arg(λi ) ≠ π , i = 1,L, n . La raíz p-ésima principal de A , denotada por
A1 / p ∈C
nxn
, se define como la matriz que satisface las dos condiciones siguientes:
1. ( A1 / p ) p = A .
2. Los argumentos de los valores propios de la matriz A1 / p se encuentran en el
intervalo ] − π / p, π / p[ .
El siguiente teorema, generalización del Teorema 2.2, permite caracterizar las raíces pésimas de una matriz cuadrada compleja a partir de su descomposición de Jordan, y
determina cuáles de ellas corresponden a funciones de matrices según la Definición 2.2.
Lema 2.2 ([Smit03]).
Si λi ∈C es distinto de cero, entonces el bloque de Jordan
⎡λ i
⎢0
⎢
J λi = ⎢ M
⎢
⎢0
⎢⎣ 0
0⎤
O 0 0 ⎥⎥
O O M ⎥ ∈C
⎥
L λi 1 ⎥
L 0 λi ⎥⎦
1
0
L
λi
M
0
0
ni xni
,
tiene precisamente p raíces p-ésimas que son funciones de J λi , definidas como
( )
f j J λi
⎡
⎢ f j (λ i )
⎢
⎢
⎢ 0
=⎢
⎢ M
⎢
⎢ 0
⎢
⎢⎣ 0
( ni − 2 )
(1 )
f j (λ i )
fj
(λ i )
1!
L
f (λ i )
L
O
O
(ni − 3)!
M
0
L
f j (λ i )
0
L
0
(ni − 2)!
( ni − 3 )
f j (λ i )
(λ i ) ⎤
⎥
(ni − 1)! ⎥
( ni − 2 )
(λ i ) ⎥
fj
⎥
(ni − 2)! ⎥ ∈C
⎥
M
(1)
f j (λ i ) ⎥
⎥
⎥
1!
f j (λi ) ⎥⎦
fj
( ni −1)
ni xni
, j = 1,2,L, p ,
donde f j (λ ) = λ denota una de las p ramas de la función raíz p-ésima en el entorno
p
de λi .
Teorema 2.6 ([Smit03]).
Sea A ∈C
nxn
una matriz no singular con la descomposición de Jordan
(
)
A = Xdiag J λ1 , J λ2 ,L, J λr X −1 ,
donde J λi ∈C
r
ni xni
,
∑n
i =1
i
= n , y s ( s ≤ r ) el número de valores propios distintos de A
Se verifican entonces las siguientes propiedades:
20
Capítulo 2: Estado del Arte
1. A tiene precisamente p s raíces de índice p , dadas por
F j = Xdiag( f j1 ( J λ1 ), f j2 ( J λ2 ), L , f jr ( J λr )) X −1 , j = 1,2,L, p s ,
correspondientes a todas las posibles elecciones de j1 , j 2 ,L , j r , ji ∈ {1,2,L, p},
i = 1,2,L, r , sujetas a la restricción de que jk = jl si λk = λl .
2. Si s < r , entonces A tiene raíces p-ésimas que no son funciones de A . Estas
raíces forman familias parametrizadas
F j (U ) = XUdiag( f j1 ( J λ1 ), f j2 ( J λ2 ), L , f jr ( J λr ))U −1 X −1 ,
p s + 1 ≤ ji ≤ p r ,
donde ji ∈ {1,2,L, p}, i = 1,2,L, r , siendo U una matriz no singular arbitraria
que conmuta con diag J λ1 , J λ2 ,L , J λr , y para cada j existen k y l ,
(
)
dependientes de j , de manera que λk = λl y jk ≠ jl .
2.2.2.5 Función Logaritmo
Los logaritmos de matrices aparecen en algunos campos de la ingeniería, como los
relacionados con la teoría de control. Por ejemplo, para un sistema físico gobernado por
la EDL
x& (t ) = Ax(t ) , x(0) = x 0 ,
en la que A ∈ ℜ nxn es una matriz desconocida, es posible determinar esta matriz A a
partir de n observaciones, x1 , x 2 ,L, x n , del vector de estados x(t ) , producidas por n
vectores de condiciones iniciales ([AlPr81], [SiSp76]). Puesto que la solución de la
ecuación diferencial anterior es
x(t ) = e At x0 ,
particularizando esta expresión para t = 1 y considerando como estados iniciales las
columnas de la matriz identidad, se obtiene que
B = eA ,
y, por tanto, A = log B , siendo B = [ x1 , x 2 , L, x n ] .
El siguiente teorema caracteriza las condiciones de existencia del logaritmo de una
matriz.
Teorema 2.7 ([HoJo91], página 475).
1. Si A ∈C nxn es no singular, entonces existe al menos un matriz X ∈C nxn que
verifica e X = A y es polinomial en A ; es decir, existe un polinomio p( z ) de
manera que X = p( A) .
2. Si A ∈C
eX = A.
nxn
es singular, entonces no existe ninguna matriz X ∈C
nxn
tal que
3. Si A ∈ ℜ nxn , entonces existe X ∈ ℜ nxn de manera que e X = A si y solo si se
cumplen las dos condiciones siguientes:
21
Capítulo 2: Estado del Arte
a. A es no singular.
b. Si
⎡ λi
⎢0
⎢
J λi = ⎢ M
⎢
⎢0
⎢⎣ 0
0⎤
O 0 0 ⎥⎥
O O M ⎥ ∈ C ni xni ,
⎥
L λi 1 ⎥
L 0 λi ⎥⎦
1
L
λi
M
0
0
0
es un bloque de Jordan de A , con λi un valor propio real negativo de A ,
entonces A tiene un número par de bloques de Jordan de igual tamaño ni ,
incluido J λi .
4. Si A ∈ ℜ nxn tiene algún valor propio real negativo, entonces ninguna solución
real de e X = A puede ser polinomial en A o función matricial primaria de A .
Como consecuencia de este teorema se tiene que si A ∈ ℜnxn no tiene valores
propios reales negativos, entonces tiene un logaritmo real; es decir, existe una
matriz L ∈ ℜ nxn de manera que e L = A . Pueden existir diferentes matrices que
proporcionen el logaritmo de una matriz, pero sólo una de ellas tiene las partes
imaginarias de sus valores propios en el intervalo ] − π , π [ . Esta matriz se
denomina logaritmo principal de A y se denota con log A .
2.2.2.6 Funciones Seno y Coseno
Las funciones matriciales trigonométricas juegan un papel fundamental en los sistemas
diferenciales lineales de segundo orden. Por ejemplo, el problema
d 2x
+ Ax = 0 , x(0) = x 0 , x' (0) = x0' ,
dt 2
con A ∈ ℜ nxn , tiene como solución
x(t ) = cos( At ) y 0 + ( At ) −1 sen ( At ) x0' .
Problemas más generales de este tipo, en los que aparece un término f (t ) en la parte
derecha de la ecuación diferencial, proceden de la semidiscretización de la ecuación de
ondas y de los sistemas mecánicos sin amortiguamiento. En tales casos, las soluciones
pueden expresarse en función de términos que involucran senos y cosenos de matrices
([Serb79]).
Las definiciones más usuales de la funciones seno y coseno de una matriz están basadas
en las series de Taylor
∞
sen A = ∑ (−1) k
k =0
A 2 k +1
(2k + 1)!
y
∞
A2k
cos A = ∑ (−1)
.
(2k )!
k =0
k
22
Capítulo 2: Estado del Arte
2.2.3 Métodos Numéricos para el Cálculo de Funciones de
Matrices
2.2.3.1 Función Exponencial
2.2.3.1.1 Métodos Basados en las Series de Taylor
Sea f ( z ) una función analítica definida sobre el espectro de A ∈C
nxn
∞
f ( z ) = ∑ ck z k .
k =0
Según el Teorema 2.1, la matriz f ( A) se puede hallar mediante la expresión
∞
f ( A) = ∑ ck Ak .
k =0
El valor aproximado de f ( A) se puede obtener truncando adecuadamente la serie
anterior. Para ello se calculan los términos de la serie hasta que se encuentra un número
natural L , de manera que la representación en coma flotante de la matriz S L sea igual a
la representación en coma flotante de S L +1 ; es decir, fl ( S L ) = fl ( S L +1 ) , siendo
L
S L = ∑ ck Ak .
k =0
El valor aproximado de f ( A) será, por lo tanto, fl ( S L ) .
Este método puede producir un resultado inexacto debido, fundamentalmente, a los
errores de redondeo causados cuando se desprecian los términos de la serie a partir de
un cierto orden, y al problema de la cancelación de dígitos significativos que se produce
cuando se suman y restan números del mismo orden de magnitud. Además, a medida
que A  es mayor o la dispersión de los valores propios de la matriz A aumenta, se
tiene que los errores de redondeo y los costes computacionales aumentan.
Se han diseñado diversos algoritmos basados en las aproximaciones de Taylor
([PChK91], [GoVa96]), que intentan evitar esos problemas, haciendo uso de la
identidad
e A = (e A / m ) .
m
El método de escalado y potenciación consiste en seleccionar un valor m como
potencia de 2, m = 2 j , de manera que e A / m pueda calcularse con precisión y eficiencia,
y entonces calcular (e A / m ) mediante potenciación repetida.
m
2.2.3.1.2 Métodos Basados en los Aproximantes de Padé
Los aproximantes de Padé de orden ( p, q ) de f ( z ) = e z son funciones racionales
definidas como
R pq ( z ) = N pq ( z ) / D pq ( z ) ,
donde
23
Capítulo 2: Estado del Arte
( p + q − k )! p! k
z
k = 0 ( p + q )! k!( p − k )!
p
N pq ( z ) = ∑
y
( p + q − k )!q!
( −z ) k .
k = 0 ( p + q )! k!( q − k )!
q
D pq ( z ) = ∑
En particular, R p 0 ( z ) coincide con el polinomio de Taylor de grado p de la función
ez .
Los aproximantes de Padé permiten calcular aproximadamente la exponencial de una
matriz A ∈C nxn mediante la expresión
[
e A ≅ R pq ( A) = D pq ( A)
] [N
−1
pq
]
( A) .
El problema es que únicamente proporcionan buenas aproximaciones en un entorno del
origen, tal como revela la igualdad
1
e A = R pq ( A) +
(−1) q
A p+ q +1 D pq ( A) −1 ∫ u p (1 − u ) q e A(1−u ) du ([GoVa96], capítulo 11).
( p + q )!
0
Una manera de evitar el problema anterior consiste en utilizar el método de escalado y
potenciación, eligiendo para ello el menor entero positivo j de manera que
|| A || / m < 1 , siendo m = 2 j .
Con este criterio, e A / m puede calcularse mediante los aproximantes de Taylor o de
Padé. Esta última aproximación ha sido tratada por numerosos autores entre los que
cabe destacar, por su análisis de errores, a Ward [Ward77], Kammler [Kamm76],
Kallstrom [Kall73], Scraton [Scra71] y Shah [Shah71].
En [MoVa78] Moler y Van Loan demostraron que si
|| A ||∞ 1
≤ ,
2j
2
siendo A ∈C
nxn
, entonces existe E ∈C
nxn
tal que
R pq = e A + E ,
AE = EA ,
|| E ||∞ ≤ ε ( p, q ) || A ||∞ ,
ε ( p , q ) = 23 − ( p + q )
p!q!
.
( p + q )!( p + q + 1)!
Estos resultados permiten controlar el error que se puede cometer al calcular e A pues
|| e A − R pq ||∞
|| e ||∞
A
≤ ε ( p, q ) || A ||∞ eε ( p ,q )|| A||∞ .
Existen varias razones para utilizar los aproximantes diagonales de Padé ( p = q ) en
lugar de los no diagonales ( p ≠ q ). Si p < q , entonces, aproximadamente, 2qn 3 flops
24
Capítulo 2: Estado del Arte
son necesarios para calcular la aproximación de Padé de orden p + q , R pq ( A) . Sin
embargo, la misma cantidad de flops son necesarios para calcular la aproximación de
orden 2q > p + q , Rqq ( A) . La conclusión es análoga para p > q .
Existen otros motivos para la utilización de aproximantes diagonales de Padé. Por
ejemplo, si todos los valores propios de A están en el semiplano Re( z ) < 0 , entonces
los aproximantes calculados con p > q suelen tener errores de redondeo más elevados
debido a problemas de cancelación, mientras que con p < q se suelen producir mayores
errores de redondeo debido al mal condicionamiento del denominador D pq ( A) .
Existen ciertas aplicaciones donde la determinación de p y q se basan en el
comportamiento de
lim R pq (tA).
t →∞
Si todos los valores propios de A están en el semiplano complejo izquierdo abierto,
entonces
lim e At = 0 ,
t →∞
y también
lim R pq (tA) = 0 , si q > p.
t →∞
Cuando q < p (incluyendo el caso q = 0 ) resulta que los aproximantes de Padé están
acotados para valores de t elevados. Si p = q entonces los aproximantes están acotados
cuando t tiende a infinito.
En [MoVa78] se proponen los valores óptimos de q ( p = q ) y j en las
aproximaciones de Padé y Taylor, en función de la norma de la matriz A . Esos valores
están representados en la tabla que se presenta a continuación.
(p,q)
|| A ||∞=10-2
|| A ||∞=10-1
|| A ||∞=100
|| A ||∞=101
|| A ||∞=102
|| A ||∞=103
Tabla 2.1:
ε=10-3
(1,0)
(3,0)
(2,1)
(5,1)
(2,5)
(4,5)
(2,8)
(4,8)
(2,11)
(5,11)
(1,0)
(3,0)
ε=10-6
(2,0)
(4,0)
(3,1)
(7,1)
(3,5)
(6,5)
(3,8)
(5,9)
(3,11)
(7,11)
(2,0)
(4,0)
ε=10-9
(3,0)
(4,2)
(4,1)
(6,3)
(4,5)
(8,5)
(4,8)
(7,9)
(4,11)
(6,13)
(3,0)
(4,2)
ε=10-12
(4,0)
(4,4)
(5,1)
(8,3)
(5,5)
(7,7)
(5,8)
(9,9)
(5,11)
(8,13)
(4,0)
(4,4)
ε=10-15
(4,0)
(5,4)
(6,1)
(7,5)
(6,5)
(9,7)
(6,8)
(10,10)
(6,11)
(8,14)
(4,0)
(5,4)
Parámetros óptimos de escalado y potenciación, en
los aproximaciones de Padé y Taylor.
25
Capítulo 2: Estado del Arte
Dada un pareja de valores ε y || A ||∞ , entonces el par de arriba muestra los valores
(q, j ) óptimos asociados a la aproximación de Padé
[R (A / 2 )]
2j
j
qq
,
y el de abajo especifica la elección más eficiente de (k , j ) correspondiente a la
aproximación de Taylor
[T (A / 2 )]
j
2j
k
.
A continuación se presenta un algoritmo ([GoVa96]) que calcula la exponencial de una
matriz mediante aproximantes diagonales de Padé.
F = dgeexp( A, δ ) .
Entradas: Matriz A ∈ ℜ nxn , tolerancia δ ∈ ℜ + .
Salida:
1
2
3
Matriz F = e A + E ∈ ℜ nxn de manera que || E ||∞ ≤ δ || A ||∞ .
j = max(0,1 + floor(log 2 || A ||∞ ))
A = A/ 2 j
Calcular q de manera que sea el menor entero positivo tal que
ε ( p , q ) = 23 − ( p + q )
4
5
6
p!q!
≤δ
( p + q)!( p + q + 1)!
D = In ; N = In ; X = In ; c = 1
Para k = 1 : q
c(q − k + 1)
c=
5.1
(2q − k + 1)k
X = AX ; N = N + cX ; D = D + (−1) k cX
5.2
Para k = 1 : j
F = F2
6.1
Algoritmo 2.1: Calcula la exponencial de una matriz mediante aproximantes
diagonales de Padé.
El coste del algoritmo anterior es 2(q + j + 1 / 3)n3 flops.
En el capítulo 11 de [GoVa96] se señala la necesidad de utilizar técnicas especiales,
basadas en el método de Horner y variantes, que permiten reducir el coste
computacional de este método. Si, por ejemplo, q = 8 y se define D = Dqq ( A) y
N = N qq ( A) , entonces
N qq ( A) = U + AV y Dqq ( A) = U − AV ,
donde
U = c0 I n + c2 A2 + (c4 I n + c6 A2 + c8 A4 ) A4 ,
y
V = c1 I n + c3 A2 + (c5 I n + c7 A2 ) A4 ,
26
Capítulo 2: Estado del Arte
siendo ci , 0 ≤ i ≤ 8 , los coeficientes del polinomio N .
Recientemente, Higham ([High04]) ha realizado una revisión del cálculo de
exponenciales de matrices mediante aproximantes de Padé. En ese artículo Higham
argumenta y justifica que la mejor elección del valor de los aproximantes de Padé es el
de p = q = 13 , en lugar de los valores de 6 y 8 que otros autores anteriormente habían
señalado. Además, para reducir el coste computacional, Higham utiliza técnicas de
anidamiento para el cálculo de las matrices U y V ([PaSt73]).
2.2.3.1.3 Métodos Basados en Integración Numérica
Como e At y e At x0 son soluciones de la EDL que tiene a la matriz A como matriz de
coeficientes, es natural considerar métodos basados en la integración numérica. Los
algoritmos de este tipo pueden tener un control del tamaño del paso automático,
variando automáticamente el orden de la aproximación. Los métodos basados en
fórmulas de un solo paso, fórmulas multipaso y fórmulas multipaso implícito (apartado
2.3.2) presentan ciertas ventajas. Son fáciles de utilizar para el cálculo de e At , sin
embargo, requieren un alto coste computacional.
Puesto que la ecuación de estados de un sistema dinámico lineal continuo es un caso
particular de la EDO no lineal,
x' (t ) = f (t , x(t ), u (t )), x(0) = x0 ,
su solución puede hallarse mediante métodos de integración numérica para este tipo de
ecuaciones.
Una desventaja de esta aproximación es la gran cantidad de operaciones necesarias,
pues no hacen uso de la naturaleza especial del problema. Sin embargo, la
implementación de un algoritmo que resuelva una EDO es necesaria en el caso de
ecuaciones de estado o de problemas control con coeficientes variables. Los métodos
numéricos para resolver la EDO
x' (t ) = f (t , x(t )), x(0) = x0 ,
son discretos; es decir, son métodos que calculan una secuencia de aproximaciones
x k = x(t k ) para un conjunto de puntos
tk +1 = tk + ∆tk , k = 0,1,L, n − 1 ,
en donde el tamaño de paso ∆t k puede variar. En general, la aproximación x k +1 se
calcula a partir de los valores previos x k , x k −1 , L, x0 .
Los errores en la solución numérica de una EDO son el resultado del proceso de
discretización (llamado error de truncamiento) y de los errores de redondeo. El error de
discretización local es el error producido en un paso dado, considerando que son exactos
los valores previos y que no hay errores de redondeo en los cálculos. Este error se puede
determinar de la siguiente forma. Sea la función y k (t ) que satisface
yk' (t ) = f (t , yk (t )) , yk (t k ) = xk .
Entonces el error local d k está dado por
d k = x k +1 − y k (t k +1 ) .
27
Capítulo 2: Estado del Arte
De esta forma el error local es la diferencia entre la aproximación calculada y la
solución teórica definida por la misma condición inicial en el instante t k +1 .
El error de discretización global ek en el paso k es la diferencia entre la aproximación
calculada x k (sin tener en cuenta los errores de redondeo) y la solución exacta x(t k )
determinada por la condición inicial x0 , es decir,
ek = xk − x(t k ) .
Claramente, el error global depende de todos los errores locales producidos en los pasos
previos.
Prácticamente, todos los códigos actuales que resuelven EDOs controlan el error local
en cada instante, y no intentan controlar directamente el error global. Sin embargo, las
propiedades de los errores de redondeo no son estudiadas en profundidad, en parte
porque la exactitud requerida en el algoritmo de resolución de la EDO es menor que la
precisión de la máquina.
Métodos de Propósito General
Muchas librerías que resuelven problemas de valores iniciales en EDOs, permiten
calcular e At , para diferentes valores de t ∈ ℜ . El problema de utilizar estas librerías es
que no se aprovecha la linealidad de la ecuación asociada al problema del cálculo de
e At , y que los coeficientes que aparecen en ella son constantes.
Métodos de Paso Único
Dos técnicas clásicas para la resolución de ecuaciones diferenciales son los métodos de
Taylor y Runge-Kutta de cuarto orden. Si se considera un tamaño de paso ∆t constante,
entonces para la aproximación de Taylor de orden cuatro, se obtienen las ecuaciones
xi +1
⎛
∆t 4 4 ⎞
⎜
A ⎟⎟ xi = T4 (∆tA) xi ,
= ⎜ I + ∆tA + ... +
4
!
⎠
⎝
y para el método de Runge-Kutta de orden cuatro
1
1
1
1
xi +1 = xi + k1 + k 2 + k3 + k 4 ,
6
3
3
6
siendo
k1 = ∆tAxi , k 2 = ∆tA( xi + k1 / 2) ,
k 3 = ∆tA( xi + k 2 / 2), k 4 = ∆tA( xi + k 3 ) .
En este caso, se puede comprobar que los dos métodos producirían idénticos resultados,
si no fuese por los errores de redondeo. Como el tamaño del paso es fijo, la matriz
T4 (∆tA) únicamente se calcula una vez. En tal caso, xi +1 se puede obtener a partir de xi
con solo realizar un producto matriz-vector. El método de Runge-Kutta requiere cuatro
de estos productos por paso.
Considérese x(t ) para un valor particular de t , por ejemplo t = 1 . Si ∆t = 1 / m ,
entonces
x(1) = x(m∆t ) ≅ xm = [T4 (∆tA)] x0 .
m
28
Capítulo 2: Estado del Arte
Consecuentemente, existe una conexión cercana entre este método y la aproximación de
Taylor con escalado y potenciación antes comentada ([Mast69], [Whit69]). El escalado
de ∆tA y su exponencial están aproximados por T4 (∆tA) . Sin embargo, incluso si m es
una potencia de 2, [T4 (∆tA)]
repetida.
m
no se obtiene normalmente mediante potenciación
Métodos Multipaso
Como es sabido, la posibilidad de aplicar métodos específicos multipaso para resolver
problemas lineales con coeficientes constantes, tal como los basados en las fórmulas de
Adams-Bashforth, no ha sido estudiada con detalle. Estos métodos no equivalen a los
métodos que utilizan escalado y potenciación, puesto que la solución aproximada, para
un tiempo dado, está definida en términos de soluciones aproximadas de varios tiempos
anteriores. El algoritmo dependería de cómo se obtuviesen los vectores de comienzo y
de cómo se determinasen el tamaño del paso y el orden.
2.2.3.1.4 Métodos Polinomiales
Sea
n −1
c( z ) = det( zI − A) = z n − ∑ ck z k ,
k =0
el polinomio característico de la matriz A ∈C
nxn
.
Según el teorema de Cayley-Hamilton, se tiene que c( A) = 0 , y por lo tanto
A n = c0 I + c1 A + L + cn−1 A n−1 .
Luego cualquier potencia de A puede expresarse en términos de I , A,L, A n −1 ,
n −1
A k = ∑ β kj A j ,
j =0
por lo que e At es polinomial en A con coeficientes analíticos que dependen de t ,
∞
n −1
⎞ n −1 ⎛ ∞
t k Ak
t k ⎛ n−1
tk ⎞
= ∑ ⎜⎜ ∑ β kj A j ⎟⎟ = ∑ ⎜⎜ ∑ β kj ⎟⎟ A j = ∑ α j A j .
k! ⎠
k = 0 k!
k = 0 k! ⎝ j = 0
j =0
⎠ j =0 ⎝ k =0
∞
( 2.6 ) e At = ∑
Los siguientes métodos utilizan el polinomio característico para calcular la exponencial
de una matriz.
Método de Cayley-Hamilton
Si se calcula una aproximación de
( 2.7 )
∞
α j (t ) = ∑ β kj
k =0
tk
,
k!
entonces e At se puede obtener, de manera aproximada, a partir de la expresión ( 2.6 ).
Los coeficientes β kj de ( 2.7 ) se pueden calcular del siguiente modo,
29
Capítulo 2: Estado del Arte
δ kj
si
⎧
⎪
cj
si
⎪
β kj = ⎨
c0 β k −1,n−1
si
⎪
⎪⎩c j β k −1,n−1 + β k −1, j −1 si
k < n,
k = n,
k > n, j = 0,
k > n , j > 0.
Una dificultad es que estas fórmulas recursivas son muy propensas a errores de
redondeo. Por ejemplo, si A = (α ) es una matriz de orden 1, entonces
β k0 = α k
y
(αt ) k
k!
k =0
∞
α0 = ∑
resulta ser el desarrollo de Taylor de eαt , con lo cual existen los mismos problemas que
se comentaron en el método de aproximaciones de Taylor.
Otra dificultad de este método es que se debe conocer el polinomio característico de la
matriz. Si λ1 , λ2 ,L, λn son los valores propios de una matriz cuadrada A , entonces el
polinomio característico c( z ) se puede calcular a partir de
n
c( z ) = ∏ ( z − λi ) .
i =1
Aunque los valores propios pueden calcularse de forma estable, no está claro si los
coeficientes ci son aceptables. Otros métodos para el cálculo de c( z ) están descritos
por Wilkinson en [Wilk92]. En este artículo, Wilkinson afirma que los métodos basados
en fórmulas que obtienen los coeficientes ci a partir de funciones simétricas son
inestables y costosos de implementar. Las técnicas basadas en transformaciones de
semejanza fallan cuando A está próxima a ser derogatoria.
En el método de Cayley-Hamilton, e At se expande en función de las matrices
I , A,L, A n −1 . Si {A0 , A1 ,L, An } es un conjunto de matrices que generan el mismo
subespacio, entonces existen funciones analíticas β j (t ) tales que
n −1
e At = ∑ β j (t ) A j .
j =0
La viabilidad de esta aproximación depende de la facilidad de generar A j y β j (t ) .
Si se conocen los valores propios λ1 , λ2 ,L, λn de A , entonces se pueden aplicar
cualquiera de los métodos que se presentan a continuación.
Método de Interpolación de Lagrange
Se basa en la expresión
n
e At = ∑ e
j =1
λ jt
n
∏
k =1
k≠ j
A − λk I n
.
λ j − λk
30
Capítulo 2: Estado del Arte
Método de Interpolación de Newton
En este método la expresión utilizada es
n
j −1
j =2
k =1
e At = e λ1t I n + ∑ [λ1 , λ2 ,L, λ j ]∏ ( A − λ k I n ) .
Las diferencias [λ1 , λ2 ,L, λ j ] dependen de t y se definen recursivamente mediante las
expresiones
e λ1t − e λ 2 t
,
[λ1 , λ2 ] =
λ1 − λ2
[λ1 , λ2 , L , λk +1 ] =
[λ1 , λ2 ,L, λk ] − [λ2 , λ3 ,L, λk +1 ]
, k ≥ 2.
λ1 − λk +1
En [Macd56] se analizan estas fórmulas cuando la matriz A tiene valores propios
múltiples.
Método de Vandermonde
Existen otros métodos para calcular las matrices
n
Aj = ∏
k =1
k≠ j
A − λk I n
, j = 1,2,L, n ,
λ j − λk
que son necesarias en el método de interpolación de Lagrange. Uno de estos métodos se
basa en la determinación de la matriz de Vandermonde
⎡ 1
⎢ λ
⎢ 1
V =⎢ M
⎢ n−2
⎢λ1
⎢⎣ λ1n −1
1
λ2
L 1
L λn −1
M
O
λ
λ
L λ
n−2
2
n −1
2
M
n −1
n −1
n
n −1
λ
1 ⎤
λn ⎥⎥
M ⎥.
n −1 ⎥
λn ⎥
λnn −1 ⎥⎦
Si v jk es el elemento ( j , k ) de V −1 , entonces
n
A j = ∑ v jk Ak −1
k =1
y
( 2.8 )
n
e At = ∑ e j A j .
λ t
j =1
Cuando A tiene valores propios múltiples se puede utilizar la correspondiente matriz de
Vandermonde para el cálculo de las matrices A j que aparecen en la expresión ( 2.8 ).
Estos métodos polinomiales tienen un coste computacional elevado, O(n 4 ) , por lo que
no son apropiados a menos que el valor de n sea pequeño. Si se almacenan las matrices
A1 , A2 , L , An , entonces el coste de almacenamiento es del orden O(n 3 ) , mayor que el
coste de almacenamiento necesario en los métodos no polinomiales.
31
Capítulo 2: Estado del Arte
Los siguientes métodos no requieren el uso de los valores propios de A y, por lo tanto,
desaparece el problema asociado a la multiplicidad de los mismos. Sin embargo, otras
dificultades de la misma importancia aparecen en los algoritmos basados en estos
métodos.
Método Basado en Transformaciones Inversas de Laplace
Si L[ ] representa a la transformada de Laplace, entonces los elementos de la matriz
L[e At ] = ( sI n − A) −1 ,
son funciones racionales de s . En efecto,
s n−k −1
Ak ,
k =0 c ( s )
n −1
( sI n − A) −1 = ∑
donde
n −1
c( s ) = det( sI n − A) = s n − ∑ ck s k ,
k =0
siendo
cn −k =
− traza ( Ak −1 A)
, k = 1,2,L, n ,
k
Ak = Ak −1 A − cn − k I n , k = 1,2,L, n ,
A0 = I n .
Estas recurrencias, demostradas por Leverrier y Faddeeva [Fadd59], pueden utilizarse
para evaluar e At mediante la expresión
⎡ s n−k −1 ⎤
= ∑L ⎢
⎥ Ak ,
k =0
⎣ c( s) ⎦
n −1
e
At
−1
donde las trasformadas inversas
⎡ s n − k −1 ⎤
L ⎢
⎥
⎣ c( s) ⎦
−1
pueden expresarse como series de potencias en t .
Los problemas de este método son su elevado coste computacional, O(n 4 ) , y la gran
influencia que tienen en él los errores de redondeo.
2.2.3.1.5 Métodos Basados en la Descomposición de Matrices
Todos los métodos de descomposición están basados en hallar transformaciones de
semejanza
A = XBX −1 ,
de manera que el cálculo de f (B ) sea más sencillo que el de f ( A) , puesto que
entonces, al aplicar la Propiedad 2.2, se tiene que
f ( A) = Xf ( B) X −1 .
32
Capítulo 2: Estado del Arte
Estos métodos resultan ser muy eficientes en problemas que involucran a matrices de
dimensión elevada; además, si A es una matriz simétrica, entonces estos métodos
proporcionan algoritmos simples y efectivos. El problema de estos métodos es que si la
matriz X está mal condicionada, entonces se pueden producir errores de redondeo
considerables.
Métodos Basados en la Diagonalización de una Matriz
Si A ∈C nxn tiene un conjunto de vectores propios {v1 , v2 , L , vn } linealmente
independientes y se considera la matriz V = [v1 , v2 , L , vn ] , entonces se verifica la
ecuación matricial
AV = VD ,
siendo
D = diag(λ1 , λ2 ,L, λn ) ,
con λ1 , λ2 ,L , λn los n valores propios de la matriz A . Por lo tanto,
e A = Vdiag(eλ1 , e λ2 ,L, e λ n )V −1 .
Si A es defectiva o está cerca de serlo, entonces cualquier error en A , incluyendo los
errores de redondeo producidos en su cálculo y los errores de redondeo producidos en el
cálculo de los vectores propios, pueden conducir a errores elevados en el cálculo de e At .
Una forma de medir la cercanía a la defectividad es el cálculo del número de condición
asociado a la matriz de vectores propios V
cond(V ) =|| V || || V −1 || .
Cuanto mayor sea este número más cerca se encuentra A de ser defectiva.
Como el conjunto de matrices simples es un subconjunto denso del conjunto de matrices
cuadradas, la mayoría de las matrices que aparecen en problemas de control o en otras
áreas suelen ser simples. Además, se puede equilibrar la matriz A de manera que se
minimice cond(V ) , con lo cual este método no es demasiado restrictivo.
Si A tiene valores propios complejos y se desea evitar la aritmética compleja, es
posible obtener la descomposición
A = Vdiag( D1 , D2 ,L, Dr )V −1 ,
siendo Di , i = 1,2,L, r , bloques diagonales de dimensión 1x1 o 2x2 correspondientes a
valores propios reales o a valores propios complejos conjugados, respectivamente.
Aplicando la Propiedad 2.2 y la Propiedad 2.3, se tiene que
e A = Vdiag(e D1 , e D2 ,L, e Dr )V −1 .
Método de la Matriz Compañera
Sea A ∈ ℜ nxn y B ∈ ℜ nxn la matriz compañera asociado al polinomio característico de
A . Al ser B dispersa (véase Propiedad 6.2), pequeñas potencias de B tienen un coste
menor que los usuales n 3 flops. Consecuentemente, se podría implementar el algoritmo
de escalado y potenciación con un reducido coste computacional.
Por otra parte, si A no es derogatoria, entonces se tiene que
33
Capítulo 2: Estado del Arte
A = YBY −1 ,
por lo que al aplicar la Propiedad 2.2, se tiene
e A = YeBY −1 .
El problema de este método es que los algoritmos utilizados en la reducción de la matriz
A a la forma compañera son extremadamente inestables y se deben evitar [Wilk92].
Si la ecuación diferencial original consiste en una sola ecuación lineal de orden n ,
escrita como un sistema lineal de ecuaciones de primer orden, entonces la matriz
coeficiente del sistema está en la forma de matriz compañera. Consecuentemente, la
reducción anterior no es necesaria. Por lo tanto, se podría utilizar eficazmente el método
de la matriz compañera.
A continuación se detalla un método para calcular e H , con H una matriz de
Hessenberg inferior (las matrices compañeras son un caso particular de este tipo de
matrices). Puesto que toda matriz A es similar a una matriz de Hessenberg inferior
mediante una transformación ortogonal
A = QHQ T , Q T Q = I n ,
entonces
e A = Qe H Q T .
Para cualquier función analítica f (z ) definida sobre el espectro de una matriz A , se
tiene que A y f ( A) conmutan, en particular
He H = e H H .
Igualando las columnas k-ésimas en la igualdad anterior, se tiene que
Hf k =
n
∑h
i = k −1
ik
fi , k ≥ 2 ,
donde f k representa la columna k-ésima de e H . Si ninguno de los elementos
superdiagonales de la matriz H es cero, entonces una vez se conoce f n las otras
columnas se obtienen a partir de la expresión
f k −1 =
n
⎤
1 ⎡
−
Hf
hik f i ⎥ , k = 2,3, L , n .
∑
k
⎢
hk −1k ⎣
i=k
⎦
Puesto que f n es igual a x(1) , siendo x(t ) la solución de la EDO
x' (t ) = Hx(t ), x(0) = [0, 0, L ,0 , 1]T ,
entonces se puede utilizar uno de los métodos basados en la resolución de EDOs,
comentados en 2.2.3.1.3, para el cálculo de f n .
El problema de este método se presenta cuando se tiene un valor pequeño pero no
despreciable de hk −1k . En este caso, los errores de redondeo producidos en el cálculo de
1 / hk −1k pueden producir un cálculo inexacto de e H .
En resumen, los métodos para calcular e A que involucran la reducción de A a las
formas de matriz compañera o de Hessenberg no resultan ser eficientes.
34
Capítulo 2: Estado del Arte
Método Basado en la Forma Canónica de Jordan
Según el Corolario 2.2, si una matriz A ∈C
Jordan
nxn
admite la descomposición canónica de
A = Xdiag( J λ1 , J λ2 , L , J λr ) X −1 ,
entonces
e A = Xdiag(e λ1 , e
J
J λ2
L, e
J λr
) X −1 .
La dificultad de este método es que la forma canónica de Jordan no se puede calcular
utilizando aritmética en coma flotante. Un simple error de redondeo puede producir que
algunos valores propios múltiples se conviertan en distintos, o viceversa, alterando toda
la estructura de diag( J λ1 , J λ2 , L , J λr ) y de X . En [GoWi76] y [KaRu74] se describen
éstas y otras dificultades del método.
Un algoritmo eficiente que calcula la forma canónica de Jordan de una matriz cuadrada
compleja, se puede encontrar en [KaRu74]. En este artículo se modifica la definición de
forma canónica de Jordan para que sea aplicable en el caso de trabajar con aritmética de
precisión finita. Con esta definición se muestra la manera de realizar un algoritmo
preciso y estable que calcule valores propios y cadenas de vectores principales
asociados. Este algoritmo está basado en el cálculo de una secuencia de
transformaciones de semejanza y sucesivas separaciones de rangos de subespacios
nulos.
Métodos Basados en la Descomposición real de Schur de una matriz
Sea A ∈ ℜ nxn . Según el Teorema 6.7, A admite la descomposición real de Schur
A = QSQ T ,
siendo Q ∈ ℜ nxn matriz ortogonal y S ∈ ℜ nxn una matriz casi triangular superior.
Aplicando la Propiedad 2.2, se tiene que f ( A) se puede obtener a partir de la expresión
f ( A) = Qf ( S )Q T .
El problema ahora es el cálculo de f (S ) . Diversos métodos se pueden utilizar para
dicho cálculo como, por ejemplo, los basados en la ecuación conmutante ( 2.1 ) (véanse
[MaHI92], [Ibañ97]). Estos métodos se pueden aplicar de manera inmediata para
A ∈C nxn ([DaH103]).
Método Basado en la Diagonalización a Bloques de una Matriz
Este método consiste en encontrar una transformación de semejanza de la matriz
A ∈ ℜ nxn
A = XBX −1 ,
siendo X ∈ ℜ nxn una matriz bien condicionada y B ∈ ℜ nxn una matriz diagonal por
bloques, en la que cada bloque diagonal es casi triangular superior con valores propios
cercanos o incluso múltiples. El tamaño de cada bloque debe ser tan pequeño como sea
posible, manteniendo alguna cota superior para cond( S ) como, por ejemplo,
cond( S ) < 100 .
35
Capítulo 2: Estado del Arte
En este caso resulta que
f ( A) = Xf ( B) X −1 ,
donde la matriz f (B ) tiene una estructura diagonal por bloques, tal como se representa
en la Figura 2.1. Cada bloque diagonal de f (B ) se puede obtener a partir del
correspondiente bloque de B , aplicando cualquiera de los métodos vistos
anteriormente.
Figura 2.1: Estructura a bloques de la matriz f (B) .
Métodos de Separación
Es conocido que la propiedad aditiva de la función exponencial no se verifica en el caso
matricial, a menos que las matrices conmuten, es decir,
e Bt e Ct = e ( B +C )t ⇔ BC = CB .
Sin embargo, las exponenciales de las matrices B y C están relacionadas con la
exponencial de la matriz B + C mediante, por ejemplo, la fórmula de Trotter [Trot59]
(
e B +C = lim e B / m e C / m
m →∞
)
m
.
Si las exponenciales de las matrices B y C se pueden calcular eficientemente, entonces
se puede utilizar la aproximación
e A ≅ (e B / m eC / m )
m
para obtener la exponencial de la matriz A = B + C . Por ejemplo, si se definen la
matrices B = ( A + AT ) / 2 y C = ( A − AT ) / 2 , entonces B es simétrica y C
antisimétrica, por lo que se pueden calcular eficientemente e B y e C .
2.2.3.1.6 Métodos Basados en los Subespacios de Krylov
Como se describió en el subapartado 2.2.2.1, la solución del problema de valores
iniciales
( 2.9 )
x& (t ) = Ax(t ) , x(0) = x0 ,
está dada por
x(t ) = e At x0 .
36
Capítulo 2: Estado del Arte
En muchas ocasiones puede ser interesante calcular el producto e At x 0 sin hallar
expresamente la matriz e At . A menudo, la matriz A es de gran dimensión y dispersa,
como puede ocurrir, por ejemplo, en la discretización espacial de una ecuación en
derivadas parciales.
Una serie de métodos que calculan el producto e At v , A ∈ ℜ nxn y v ∈ ℜ n , están basados
en los denominados subespacios de Krylov. Estos métodos consisten, básicamente, en
obtener una aproximación de e At v a partir del subespacio de Krylov generado por los
vectores {v, Av, A2 v, L , A p−1v} , siendo p un número entero positivo relativamente
pequeño con relación a la dimensión de la matriz A . Entre estos métodos se encuentran
el método de Lanczos, para el caso en que A sea simétrica, y el método de Arnoldi,
para el caso en que A no sea simétrica. En este último método los valores propios de la
matriz se aproximan mediante los valores propios de una matriz de Hessenberg de
dimensión p . A partir del vector v se obtiene la reducción parcial de Hessenberg
AV p = V p H p + h p +1, p v p +1e Tp ,
donde V p tiene p columnas ortonormales, H p es una matriz de Hessenberg superior
de dimensión p , e p es la columna p-ésima de la matriz I n , y v p +1 es un vector unitario
que satisface V pT v p +1 = 0 . La aproximación que se realiza es
e At v ≅ βV p e
H pt
e1T ,
siendo β =|| v ||2 y e1 la primera columna de la matriz I n .
Se pueden obtener muy buenas aproximaciones con valores de p relativamente
pequeños, incluso se pueden disponer de cotas del error cometido en la aproximación.
Por lo tanto, un problema de gran dimensión y disperso (cálculo de e At ), se reemplaza
H t
por un problema denso de pequeña dimensión (cálculo de e p ).
Existen diversos artículos en los que se analizan estos métodos, entre los que cabe
destacar [Kniz91] ,[GaSa92], [Saad92], [StLe96], [HoLS97] y [DrGr98].
2.2.3.2 Función Signo
La Propiedad 2.4 indica que la función signo matricial de una matriz coincide con la
raíz cuadrada de la matriz identidad del mismo orden. Esta observación permitió a
Roberts ([Robe71]) calcular el valor de la función signo matricial aplicando el método
de Newton a la ecuación matricial
X 2 −I = 0.
Al aplicar este método, se obtiene la iteración
X0 = A,
X k +1 = 0.5( X k + X k−1 ) , k = 0,1,2,L ,
la cual converge cuadráticamente a la matriz sign ( A) , siempre que la matriz A no
tenga valores propios imaginarios puros y la iteración anterior esté bien definida.
Resultados más precisos pueden obtenerse si en lugar de utilizar la iteración anterior se
utiliza la iteración
37
Capítulo 2: Estado del Arte
X0 = A,
X k +1 = X k − 0.5( X k − X k−1 ) , k = 0,1,2,L .
Higham y Schreiber ([HiSh90]) sugieren utilizar una iteración que evita el cálculo de
inversas. Esta iteración se obtiene a partir de la iteración anterior y de la aproximación
de Schulz
X k−1 ≅ X k + ( I n − X k2 ) X k .
La iteración que se obtiene es
X k +1 = 0.5 X k (3I n − X k2 ) , k = 0,1,2,L ,
la cual converge cuadráticamente a la matriz sign ( A) siempre que || I n − A2 ||< 1 y se
cumplan además las condiciones necesarias de existencia de dicha función matricial.
Pandey, Kenney y Laub ([PaKL90]) deducen una iteración, basada en una forma
fraccionaria parcial explícita, definida por
( 2.10 )
X k +1 =
p
1
1
X k ∑ ( X k2 + α i2 I n ) −1 , X 0 = A ,
p
i =1 ξ i
siendo
⎛
ξ i = 0.5⎜⎜1 + cos
⎝
(2i − 1)π
2p
⎞
1
⎟⎟ , α i2 = − 1 , i = 1,L, p .
ξi
⎠
Kenney y Laub presentan en [KeLa91] una familia de iteraciones, basadas en la
−1 / 2
aproximación de Padé de la función escalar f ( x) = (1 − x ) , definidas mediante la
expresión
X k +1 = X k pr ( X k2 )qs ( X k2 ) −1 , X 0 = A ,
donde p r y qs son polinomios de grados r y s , respectivamente.
Aunque los métodos anteriores convergen cuadráticamente, esta convergencia no está
asegurada en la práctica a causa de los errores cometidos en cada una de las iteraciones.
Una técnica que mejora las iteraciones anteriores consiste en el escalado de las matrices
que aparecen en cada iteración. Kenney y Laub presentan en [KeLa92] varios tipos de
escalado que permiten mejorar las iteraciones del método de Newton sin escalado si y
solo si los factores de escalado se encuentran entre el cuadrado del factor de escalado
óptimo y 1. A continuación se presenta una definición del factor de escalado óptimo y
una breve explicación de estas técnicas.
La finalidad del método de Newton con escalado consiste en encontrar γ 1 ,L, γ k , L , de
manera que la iteración
X0 = A,
X k +1 = 0.5[γ k X k + (γ k X k ) −1 ] , k = 0,1,2,L .
converja hacia una matriz con valores propios ± 1 (véase [Balz80]). Los valores
óptimos de escalado, llamados factores de escalado óptimos, se obtienen a partir del
siguiente teorema.
38
Capítulo 2: Estado del Arte
Teorema 2.8 ([KeLa92]).
{
Sean λ1( k ) , L, λ(mk )
} los
iθ
valores propios de la matriz X k . Si λ(jk ) = ± ρ j e j , donde
ρ j > 0 , θ j < π / 2 , 1 ≤ j ≤ m , entonces el factor de escalado óptimo γ k* verifica
(γ )
* 2
k
( 2.11 )
=
1 ⎛⎜ ρ i cos θ i − ρ j cos θ j
ρ i ρ j ⎜⎝ ρ i cos θ j − ρ j cos θ i
⎞
⎟,
⎟
⎠
para una cierta pareja de valores i y j .
El problema de encontrar los factores de escalado óptimos del Teorema 2.8 es que es
necesario el conocimiento completo de los valores propios de la matriz X k , para
k = 0,1,2,L , y además conocer la pareja de índices (i, j ) de la expresión ( 2.11 ). Por
este motivo, Kenney y Laub desarrollaron en [KeLa92] una familia de métodos de
escalado que son óptimos con respecto a una información incompleta de los valores
propios de una matriz. Esta familia incluye métodos de escalado óptimos y semióptimos
basados en la estimación de los valores propios dominantes de la matriz X k y de su
inversa, vía el método de potencias ([GoVa96], página 330) y seleccionando los valores
de escalado óptimo para esos valores propios según la expresión ( 2.11 ).
Otras estrategias para la determinación de factores de escalado se basan en la
determinación de factores de escalado en la descomposición polar de una matriz
([HoJo91], capítulo 6). Entre ellas cabe destacar
⎛ || X k−1 ||2 ⎞
⎟⎟ ([Barr79]),
• γ kB = ⎜⎜
⎝ || X k ||2 ⎠
1/ 4
• γ
1,∞
k
⎛ || X k−1 ||1|| X k−1 ||∞ ⎞
⎟⎟
= ⎜⎜
||
X
||
||
X
||
k 1
k ∞ ⎠
⎝
• γ k = det ( X k )
• γ
F
k
−1 / n
⎛ || X k−1 || F
= ⎜⎜
⎝ || X k || F
([High86]),
, siendo n la dimensión de la matriz X k ([Byer87]),
1/ 2
⎞
⎟⎟
⎠
, siendo || || F norma de Frobenius ([KeLa92]).
2.2.3.3 Función Raíz Cuadrada
Uno de los primeros intentos para el cálculo de raíces cuadradas de un matriz aparece en
[BjHa83]. En este artículo Björck y Hammarling describen un método rápido y estable
que calcula la raíz cuadrada de una matriz compleja mediante la descomposición real de
Schur de una matriz. Aunque este método se puede aplicar a matrices reales con
únicamente valores propios reales, fracasa cuando la matriz real tiene valores propios
complejos.
Higham propone en [Hig287] extender el método de Björck y Hammarling para
matrices reales con valores propios reales o complejos que evita la aritmética compleja.
Varios autores han utilizado el método de Newton para implementar algoritmos que
calculan raíces cuadradas de una matriz. A continuación se describen algunos de ellos.
Sea A ∈ C nxn y la ecuación matricial
39
Capítulo 2: Estado del Arte
F(X ) = X 2 − A = 0.
Aplicando el método de Newton, se obtiene la recurrencia
X k +1 = X k − F ' ( X k ) −1 F ( X k ) , k = 0,1,2,... ,
donde F ' es la derivada de Fréchet ([Grif81]) de la función F . Mediante el cálculo de
la derivada de Fréchet se llega a la recurrencia
X k H k + H k X k = A − X k2 ⎫
⎬, k = 0,1,2,L ,
X k +1 = X k + H k
⎭
siendo X 0 una matriz previamente seleccionada que suele coincidir con la propia matriz
A o con la matriz identidad. Esta iteración converge cuadráticamente a una raíz
cuadrada de A siempre que || X − X 0 || sea suficientemente pequeño y la
transformación lineal F ' ( X ) sea no singular.
El problema de la iteración anterior es que en cada iteración es necesario resolver una
ecuación matricial de Sylvester para matrices densas, lo cual requiere la utilización del
método de Bartels-Stewart ([BaSt71]) con el consiguiente alto coste computacional.
Una posible mejora consiste en suponer que las matrices H k y X k conmutan, con lo
que se pueden deducir las iteraciones
Yk +1 = 0.5(Yk + Yk−1 A) ,
Z k +1 = 0.5( Z k + AZ k−1 ) ,
las cuales, en caso de converger, lo hacen hacia una raíz cuadrada de la matriz A .
El problema de estas dos iteraciones es que son numéricamente inestables tal como se
demuestra en [High84]. En este mismo artículo Higham demuestra que si se utilizan las
iteraciones acopladas
Y0 = A , Z 0 = I n ,
Yk +1 = 0.5(Yk + Z k−1 ) ⎫⎪
⎬, k = 0,1,2, L ,
Z k +1 = 0.5( Z k + Yk−1 )⎪⎭
basadas en las iteraciones de Denman-Beavers (DB) ([DeBe76]), entonces se obtiene un
algoritmo numéricamente estable. Si la matriz A no tiene valores propios reales
negativos y todas las iteraciones están bien definidas, se puede demostrar que
Yk → A1 / 2 , Z k → A −1 / 2 , cuando k → ∞ .
Posteriormente en [Hig297], Higham establece nuevas iteraciones basadas en
iteraciones utilizadas para la función signo matricial:
• Un par de esas iteraciones acopladas, basadas en la iteración de Schulz de la
función signo matricial, evitan el cálculo de inversas. Estas iteraciones se definen
mediante las expresiones
Y0 = A , Z 0 = I n ,
40
Capítulo 2: Estado del Arte
Yk +1 = 0.5Yk (3I n + Z k Yk ) ⎫
⎬, k = 0,1,2, L .
Z k +1 = 0.5(3I n + Z k Yk )Yk ⎭
Si || diag( A − I n , A − I n ) ||< 1 , entonces Yk y Z k convergen cuadráticamente a A1 / 2
y A −1 / 2 , respectivamente.
• Otro par de iteraciones acopladas están basadas en la iteración ( 2.10 ). Estas
iteraciones son
Y0 = A , Z 0 = I n ,
⎫
⎪
⎪
⎬ , k = 0,1,2,L.
p
−1 ⎪
1
1
2
Z k +1 = Z k ∑ Yk Z k + α i I n
⎪⎭
p i =1 ξi
Yk +1 =
( 2.12 )
(
p
1
1
Yk ∑ Z kYk + α i2 I n
p i =1 ξi
(
)
−1
)
Si A no tiene valores propios reales negativos, entonces las iteraciones Yk y Z k
definidas en ( 2.12 ) convergen a A1 / 2 y A−1 / 2 , respectivamente.
Al igual que ocurre con la función signo matricial, es conveniente utilizar técnicas de
escalado que aceleren la convergencia de los métodos descritos anteriormente. Estas
técnicas aplicadas a la iteración DB se pueden expresar como
Yk +1 = 0.5[γ k Yk + (γ k Z k ) −1 ] ⎫⎪
⎬, k = 0,1,2, L .
Z k +1 = 0.5[γ k Z k + (γ k Yk )]−1 ⎪⎭
De igual modo, se pueden utilizar técnicas del escalado para las iteraciones ( 2.12 ).
Basándose en la técnica de escalado de la función signo matricial descrita en [Byer87],
Higham, en ([Hig294], determina factores de escalado para el cálculo de raíces
cuadradas de una matriz. En este artículo propone utilizar el factor de escalado
γ k = det(Yk ) det( Z k )
−1 /( 2 n )
,
De este modo, la descomposición LU se puede utilizar tanto para hallar las inversas de
las matrices Yk y Z k como para determinar el factor γ k .
Otra estrategia utilizada por Hoskins y D. J. Walton en [HoWa78] consiste en estimar el
radio espectral ([HoJo91], capítulo 1) de las matrices Pk , Pk−1 , Qk y Qk−1 .
2.2.3.4 Función Raíz p-ésima de una Matriz
En [HoWa79], Hoskins y Walton proponen la iteración
X0 = A,
X k +1 =
1
[( p − 1) X k + AX k1− p ] ,
p
basada en el método de Newton, que permite calcular la raíz p-ésima de una matriz A
simétrica y definida positiva. Sin embargo, como se demuestra en [Smit03], dicha
iteración es inestable, a menos que A esté extremadamente bien condicionada. Además,
41
Capítulo 2: Estado del Arte
esa iteración generalmente no converge para otros tipos de matrices que admiten raíces
p-ésimas.
En [TsSY88], Tsai, Shieh y Yates definen iteraciones cuya velocidad de convergencia
es un parámetro. Las iteraciones acopladas que permiten una convergencia cuadrática a
una raíz p-ésima se definen mediante las expresiones
G0 = A , R0 = I n ,
Gk +1 = Gk [(2 I n + ( p − 2)Gk )( I n + ( p − 1)Gk ) −1 ] p ⎫⎪
⎬ , k = 0,1,2,L ,
Rk +1 = Rk (2 I n + ( p − 2)Gk ) −1 ( I n + ( p − 1)Gk ) ⎪⎭
cumpliéndose que
Gk → I n y Rk → A1 / p , cuando k → ∞ .
La expresión integral
1/ p
A
=
psen (π / p)
π
∞
A∫ (x p + A) dx ,
−1
0
puede deducirse a partir de una identidad estándar en el campo complejo ([Bhat97],
[MaHI92]). En [HaHS00], M. Hasan, J. Hasan y L. Scharenroich proponen calcular
aproximadamente la integral anterior mediante cuadratura Gaussiana.
En [Smit03], Smith muestra un método basado en la descomposición real de Schur de
una matriz para el cálculo de raíces p-ésimas de una matriz que es estable
numéricamente. A continuación se detalla ese método. Según el Teorema 6.7, dada una
matriz A ∈ ℜ nxn , entonces existe una matriz casi triangular superior S ∈ ℜ nxn y una
matriz ortogonal Q ∈ ℜ nxn de manera que
A = QSQ T .
Para calcular la raíz p-ésima U ∈ ℜ nxn de la matriz S , se siguen los siguientes pasos:
1
Determinar U ii y Rii(q ) ( i = 1,2,L, m , q = 1,2,L, p − 2 ) mediante las siguientes
expresiones
U ii = S ii1/ p , Rii(1) = U ii2 , L , Rii( p −2 ) = U iip −1 , i = 1,2,L, m .
2
Para k = 1 : n − 1
2.1
Para i = 1 : n − k
2.1.1 Calcular U i ,i + k , resolviendo las ecuaciones
p −1
p −2
h =0
m =0
S ij = ∑ U iip −1−hU ijU hjj + ∑ U iip −2−m Bij( m ) ,
siendo Bij( m ) =
(q)
i ,i + k
2.1.2 Calcular R
j −1
∑U
k = i +1
ik
Rij( m ) .
, q = 1,2,L, p − 2 mediante las expresiones
q
q −1
h =0
m =0
Rij( q ) = ∑ U iiq − hU ijU hjj + ∑ U iiq −1− m Bij( m ) .
42
Capítulo 2: Estado del Arte
Una vez se ha determinado la matriz U ∈ ℜ nxn , la raíz p-ésima X se obtiene a partir de
la expresión
X = QUQ T .
Recientemente en [BiHM04], Bini, Higham y Meini han presentado una variedad de
fórmulas que permiten calcular la raíz p-ésima de una matriz mediante técnicas de
integración numérica.
2.2.3.5 Función Logaritmo
El logaritmo de una matriz A ∈C nxn cercana a la matriz identidad de orden n , puede
encontrarse fácilmente utilizando la serie de Taylor
log A = log( I n − B) = − B − B 2 / 2 − B 3 / 3 − L ,
siendo B = I n − A . Desafortunadamente, si A no se encuentra cerca de la matriz
identidad, entonces los métodos basados en esta serie o no convergen o lo hacen muy
lentamente.
Una forma de solucionar este problema consiste en utilizar la igualdad
( 2.13 )
log A = 2 k log A1 / 2 ,
k
pues al hacer k → ∞ se tiene que A1 / 2 → I n , y así se evita el problema comentado
anteriormente. Este método, desarrollado por Kenney y Laub ([KeL289]), tiene como
nombre “método inverso de escalado y potenciación”, puesto que se trata del proceso
inverso al método de escalado y potenciación utilizado en el cálculo de la exponencial
de una matriz. En ese artículo Kenney y Laub proponen calcular las raíces cuadradas
mediante el método basado en la descomposición real de Schur de una matriz que se
describe en [BjHa83] y [Hig287].
k
Los métodos de cálculo de funciones de matrices basados en la descomposición real de
Schur de una matriz tienen el problema de no funcionar bien cuando los valores propios
de la matriz están cercanos entre sí ([BjHa83], [Parl76]). En [KeLa98] Kenney y Laub
presentan un método, basado en esa descomposición, que evita este problema utilizando
para ello una nueva expresión de la derivada de Fréchet ([Grif81]) del logaritmo en
términos de la función τ ( x) = tanh( x) / x , junto a una aproximación de Padé de la
función τ .
En [ChHi01], Cheng, Higham, Kenney y Laub utilizan una variante del método inverso
de escalado y potenciación en la que las raíces cuadradas se aproximan mediante una
iteración matricial y ciertos parámetros se eligen dinámicamente para minimizar el coste
computacional, y de este modo alcanzar la precisión necesaria. Para ello utilizan la
fórmula
log A = 2 s log Y ( s ) − E1 − 2 E 2 − L − 2 s −1 E s , Ei = log Y ( i ) Z ( i ) ,
donde Y (i ) y Z (i ) son los valores finales de una iteración del tipo DB aplicada a Y ( i −1) .
Esta iteración está definida por las expresiones
M k +1 = 0.5[ I n + 0.5( M k + M k−1 )] , M 0 = Y (i −1)
Yk +1 = 0.5Yk ( I n + M k−1 ) , Y0 = Y ( i −1) ,
43
Capítulo 2: Estado del Arte
Z k +1 = 0.5Z k ( I n + M k−1 ) , Z 0 = I ,
siendo M k = Yk Z k .
Tanto el método descrito en [KeL289] como el descrito en [ChHi01] deben evaluar un
aproximante diagonal de Padé
rm ( x) = p m ( x) / q m ( x) = log(1 + x) + O( x 2 m +1 ) ,
sobre matrices cuadradas A que cumplen la condición || A ||< 1 , siendo m ≤ 16 y || . ||
cualquier norma matricial subordinada.
En los dos métodos anteriores la forma de calcular rm (x) está basada en el método de
Horner modificado para el caso de funciones matriciales racionales. Sin embargo, varias
alternativas se han realizado a la hora de calcular rm (x ) , como las propuestas por Dieci
y Papini en [DiPa00]. Estos autores argumentan que para calcular aproximantes
diagonales de Padé es preferible utilizar fórmulas de cuadratura, y de este modo evitar
el mal condicionamiento que tienen las matrices que aparecen en el denominador de la
expresión matricial de los aproximantes de Padé.
Más recientemente Higham ([High01]) ha realizado un estudio de diversos métodos
basados en los aproximantes de Padé, en las fracciones continuas y en las fracciones
parciales:
• Para los aproximantes de Padé, Higham analiza los métodos de Horner, PatersonStockmeyer-Van Loan ([Pate73]) y Van Loan ([VanL79]).
• Para las fracciones continuas, Higham considera la fracción continua ([BaGr96])
rm ( x) =
c1 x
c2 x
c3 x
1+
1+
L
1+
,
c2 m −1 x
1 + c2 m x
donde
c1 = 1 , c 2 j =
j
j
, c 2 j +1 =
, j = 1,2, L .
2(2 j − 1)
2(2 j + 1)
• Para fracciones parciales, Higham define
α (j m ) x
,
rm ( x) = ∑
( m)
j =1 1 + β j x
m
)
)
los pesos y β (m
los nodos de la regla de cuadratura de Gausssiendo α (m
j
j
Legendre en el intervalo [0,1] .
Los resultados de este estudio confirman que los métodos basados en los aproximantes
de Padé y el método basado en fracciones continuas sufren de una cierta inestabilidad
cuando la norma de la matriz tiene un valor cercano a 1 y m es grande.
Desde el punto de vista computacional, las mejores elecciones corresponden a las
aproximaciones basadas en Padé y la correspondiente a la expansión en fracciones
44
Capítulo 2: Estado del Arte
parciales; pero esta última implementación, junto con la versión de los aproximantes de
Padé vía Paterson-Stockmeyer-Van Loan, son más ricas en operaciones del nivel 3 de
BLAS. Desde el punto de vista de coste de almacenamiento, la elección del método de
Padé vía Paterson-Stockmeyer-Van Loan es el peor, aunque para valores habituales de
m ( m ≤ 16 ) el coste de almacenamiento puede ser admisible. El método basado en la
expansión en fracciones parciales es fácilmente paralelizable y además no sufre de la
inestabilidad cuando se tienen matrices con norma cercana a 1 y valores de m grandes.
Finalmente, Higham concluye que, en términos generales, el mejor método es el de
expansión en fracciones parciales, aunque en casos especiales, como por ejemplo
cuando se utilizan máquinas de altas prestaciones en las que los productos de matrices
son más rápidos que las inversiones y se dispone de suficiente memoria, el método de
Paterson-Stockmeyer-Van Loan puede ser la mejor elección, siempre que || A || sea
significativamente menor que uno.
2.2.3.6 Función Coseno
El siguiente método calcula el coseno de una matriz A ∈C nxn mediante la
aproximación de Padé. Aunque el algoritmo original se encuentra en [SeBl80], en este
subapartado se describe una mejora de él ([Hig203]). Este algoritmo consta,
básicamente, de cuatro etapas:
Etapa 1: Reducir la norma de la matriz.
Se aplican sucesivamente tres técnicas para reducir la norma de la matriz A :
• En primer lugar se aplica una transformación de bajo coste que explota la relación
de periodicidad de la función coseno,
cos( A − πqI n ) = (−1) q cos( A) , q ∈ Z .
El entero q se elige de manera que minimice el valor de || A − πqI n || . Este valor
no es sencillo de calcular, a menos que se haga algún tipo de aproximación como
la que se apunta en el citado artículo. Esta aproximación consiste en determinar el
entero q más cercano a t = traza ( A) / n que minimice el valor de || A1 || , siendo
A1 = A − πqI n .
• A continuación se aplican técnicas de equilibrado sobre la matriz A1 obtenida en
el paso anterior. El equilibrado de A1 consiste en encontrar una matriz diagonal
D , de manera que la matriz A2 = D −1 A1D cumpla que para cada valor i ,
i = 1,2,L, n , la 1-norma de su i-ésima fila y la 1-norma de su i-ésima columna
sean de magnitud semejante.
• Por último, se realiza el escalado de la matriz A2 . Para ello se determina el valor
de un entero j que cumpla
2 − j || A2 ||∞ ≤ 1 < 2 − j +1 || A2 ||∞ ,
y se define la matriz
A3 = A2 / m ,
siendo m = 2 j .
45
Capítulo 2: Estado del Arte
Etapa 2:
Calcular la aproximación de Padé.
El cálculo de los coeficientes de los polinomios que aparecen en la aproximación de
Padé se realiza utilizando computación simbólica (Maple y Matemática). Con los
valores calculados se obtiene la matriz
B3 = R pq ( A3 ) ≅ cos A3 .
Etapa 3:
etapa.
Aplicar las transformaciones inversas a las realizadas en la primera
La transformación inversa del escalado consiste en determinar B2 = cos A2 a partir de
B3 = cos A3 . Para ello, se utiliza el siguiente código:
B2 = B3
Para i = 0 : j − 1
B2 = 2 B22 − I n .
2.1
1
2
Como se puede observar, el cálculo realizado en el bucle está basado en la identidad
cos 2 B = 2 cos 2 B − I n , B ∈C
nxn
.
Las otras dos transformaciones inversas consisten en determinar B1 a partir de B2 y B
a partir de B1 , utilizando para ello las expresiones
B1 = DB2 D −1
y
B = (−1) q B1 .
Esta última fórmula está basada en la identidad
cos A = (−1) q cos( A − πqI n ) , A ∈C
nxn
.
2.2.3.7 Caso General
En ([DaH103]), se detalla un método general para calcular funciones de matrices
complejas basado en la forma de Schur. Este método utiliza la siguiente propiedad.
Propiedad 2.7 ([Parl74]).
Si S = [ S ij ] tiene una estructura triangular superior por bloques, entonces F = f (S )
tiene la misma estructura por bloques F = [ Fij ] , cumpliéndose que para i < j ,
j −1
S ii Fij − Fij S jj = ∑ Fik S kj −
( 2.14 )
k =i
j
∑S
k =i +1
ik
Fkj .
El algoritmo básicamente se divide en cuatro etapas:
• Obtener la descomposición de Schur de la matriz A ,
A = QSQ * ,
con S ∈C
nxn
triangular superior y Q ∈C
nxn
unitaria.
46
Capítulo 2: Estado del Arte
• Reordenar la forma de Schur de la matriz A , agrupando los valores propios
cercanos. Para ello se calcula una transformación bien condicionada definida por
una matriz V ∈ C nxn de manera que la matriz S = VSV −1 tenga los valores propios
cercanos en el mismo cluster. Esta matriz puede estructurarse en bloques
( F = [ Fij ]mxm ) de tal modo que los bloques diagonales correspondan a los clusters
de valores propios cercanos.
• Calcular F = f (S ) , hallando los bloques diagonales, Fii = f ( S ii ) mediante la
aproximación de Taylor adaptada a matrices triangulares superiores con valores
propios cercanos, y los bloques no diagonales mediante la expresión ( 2.14 ).
• Hallar B = f ( A) , calculando B = QV −1 FVQ * .
A continuación se presenta el algoritmo de Schur-Parlet aparecido en [DaH103].
Entradas: Matriz A ∈C
Salida:
1
2
3
nxn
y f (z ) función analítica.
Matriz B = f ( A) ∈C
nxn
.
[Q, S ] = schur( A)
[V , S ] = reorschur( S )
Calcular F = f (S ) :
3.1
Para i = 1 : m
3.1.1 Fii = f ( S ii )
3.1.2 Para j = i − 1 : −1 : 1
3.1.2.1 Calcular Fij resolviendo la ecuación matricial de
Sylvester
j −1
S ii Fij − Fij S jj = ∑ S ik Fkj −
k =i
4
j
∑F
k =i +1
ik
S kj
B = QV −1 FVQ *
Algoritmo 2.2: Algoritmo de Schur-Parlett.
2.2.4 Software de Funciones de Matrices
El software disponible para el cálculo de funciones de matrices es escaso, salvo el
disponible en entornos comerciales de desarrollo como MATLAB.
2.2.4.1 Expokit
Se trata de un paquete de software numérico para el cálculo de exponenciales de
matrices densas o dispersas, reales o complejas, escrito en FORTRAN y MATLAB, y
disponible en http://www.maths.uq.edu.au/expokit/. Más concretamente, Expokit
permite calcular exponenciales de matrices de pequeño tamaño, mediante
aproximaciones de Chebyshev y de Padé, y productos de la forma e At v para A matriz
dispersa y v vector, mediante un algoritmo basado en los subespacios de Krylov
(procesos de Arnoldi y Lanczos).
2.2.4.2 Proyecto “Parallel Computation of Matrix Functions”
Fruto de un proyecto de investigación denominado “Parallel Computation of Matrix
Functions”, y desarrollado durante los años 1998 y 2001, se publicaron diversos
47
Capítulo 2: Estado del Arte
artículos y se desarrollaron un conjunto de rutinas escritas en FORTRAN, denominado
“LogPack”, que calculan logaritmos de matrices basados en el método de escalado
inverso y potenciación ([ChHi01]). Estas rutinas se encuentran disponibles en la
dirección de Internet http://www.ma.man.ac.uk/~higham/PCMF/.
2.2.4.3 Proyecto “Numerical Analysis of Matrix Functions”
El proyecto de investigación “Numerical Analysis of Matrix Functions”, desarrollado
durante los años 2001 y 2004, y auspiciado por la agencia de investigación
“Engineering and Physical Sciences Research Council” (EPSRC), ha permitido un
notable desarrollo teórico y práctico del cálculo de funciones de matrices:
• Método general para el cálculo de funciones de matrices complejas ([DaH103]).
• Métodos para calcular funciones trascendentes y raíces p-ésimas.
• Técnicas que permiten obtener f ( A)b , siendo f ( z ) función analítica, A matriz
cuadrada y b vector, sin calcular explícitamente f ( A) ([DaH203]).
• Teoría de la perturbación y números de condición asociados al cálculo de
funciones de matrices ([Davi04]).
• Teoría y métodos para las funciones matriciales no primarias ([HiMN03],
[HiMN03], [DaSm02]).
El software disponible (http://www.maths.man.ac.uk/~higham/NAMF/), consiste en un
conjunto de ficheros de tipo “M” y de tipo “MEX” de MATLAB, para el cálculo de
funciones de matrices basados en el Algoritmo 2.2.
2.3 Ecuaciones Diferenciales Ordinarias (EDOs)
2.3.1 Definiciones y Propiedades
La forma general de una EDO con valores iniciales es
x' (t ) = f (t , x(t )) , t 0 ≤ t ≤ t f ,
( 2.15 )
x(t 0 ) = x0 ,
siendo x(t ) ∈ ℜ n y f una función vectorial.
Definición 2.5
Se dice que una función f (t , x) satisface la condición de Lipschitz con respecto a la
variable x en el dominio [t 0 , t f ]xℜ n , si verifica que existe una constante K > 0 ,
denominada constante de Lipschitz de la función f (t , x) , de manera que
|| f (t , x1 ) − f (t , x2 ) ||≤ K || x1 − x2 || , ∀(t , x) ∈ [t 0 , t f ]xℜ n .
Teorema 2.9 [Flet80])
Sea f (t , x) continua y lipschitziana en el dominio [t 0 , t f ]xℜ n , entonces la EDO de
valores iniciales ( 2.15 ) tiene una única solución en [t 0 , t f ]xℜ n .
48
Capítulo 2: Estado del Arte
Cuando se aplican métodos numéricos para la resolución de EDOs es necesario, en
ocasiones, exigir a f (t , x) condiciones más fuertes que la continuidad y ser
lipschitziana. Por ejemplo, exigir que f (t , x) sea analítica o que sea diferenciable hasta
un cierto orden.
Un concepto muy utilizado en la resolución numérica de EDOs es el de problemas de
tipo rígido (“stiff” en inglés). Aunque no existe una definición de tal concepto, cada
autor sugiere una aproximación de su significado intuitivo. Esto es así porque, aún no
siendo posible dar su definición rigurosa y que ésta sea aplicada en teoremas o
propiedades, su uso es muy útil cuando se trata de analizar las propiedades numéricas de
un determinado método de resolución de EDOs. Dos aproximaciones se presentan a
continuación. Una de ellas fue la primera que introdujo este concepto aplicado a
cualquier tipo de ecuaciones diferenciales y la segunda a EDOs.
•
“Las ecuaciones diferenciales de tipo rígido son aquellas ecuaciones donde ciertos
métodos implícitos, en particular los métodos BDF, funcionan mejor, normalmente
mucho mejor, que los métodos explícitos” (Curtiss y Hirschfelder, 1985).
•
“Se dice que una EDO es rígida si su solución numérica para algunos métodos
requiere (quizás en una porción del intervalo donde está definida la solución) una
disminución del tamaño de paso para evitar la inestabilidad” ([Iser98]).
2.3.2 Métodos Numéricos para la Resolución de EDOs
Los métodos numéricos más utilizados para la resolución de la EDO ( 2.15 ) se suelen
clasificar en dos grandes grupos (véase [AsPe91]): métodos de un solo paso, como el
método de Euler, los θ-métodos y los métodos de Runge-Kutta, y métodos de varios
pasos o multipaso como los métodos de Adams-Basforth, Adams-Moulton y BDF.
Estos métodos conducen a una ecuación en diferencias, representada por un sistema de
ecuaciones algebraicas, cuya solución permite obtener valores aproximados a la
solución del problema original en un conjunto discreto de puntos. Si se desean
aproximaciones continuas en un intervalo, la solución en los puntos discretos puede ser
interpolada, aunque también se han desarrollado métodos de Runge-Kutta continuos
capaces de proporcionar soluciones aproximadas en los puntos intermedios.
2.3.3 Métodos de un solo Paso
Estos métodos se caracterizan por utilizar únicamente información del paso anterior. Un
paso típico de estos métodos consiste en obtener una aproximación xn ≅ x(t n ) a partir
de la aproximación xn−1 obtenida en el paso anterior.
2.3.3.1 Métodos Basados en las Series de Taylor
Si se trunca el desarrollo en serie de Taylor de la función x(t ) alrededor del punto t n−1 ,
se tiene
( 2.16 )
xn = xn −1 + hxn' −1 +
h 2 ''
h p p)
xn −1 + L +
xn −1 ,
p!
2!
siendo h = t n − t n−1 .
Si las derivadas parciales con respecto a x y a t se evalúan en el punto (t n−1 , y n−1 ) ,
entonces
49
Capítulo 2: Estado del Arte
xn' −1 = f (t n−1 , xn−1 ) ≡ f ,
xn'' −1 = f t + f y f ,
xn'''−1 = f tt + 2 f ty f + f y f t + f yy f 2 + f y2 f , etc.
La sustitución de las expresiones anteriores en ( 2.16 ) permite obtener el valor de xn .
Aunque el error cometido en un paso puede ser muy pequeño, el problema es que se
deben conocer las derivadas parciales de la función f (t , x) hasta un cierto orden.
2.3.3.2 Métodos de Runge-Kutta
Definición 2.6
Un método de Runge-Kutta de s etapas se define a partir de las siguientes expresiones
s
X i = xn−1 + h∑ aij f (t n−1 + c j h, X j ) , 1 ≤ i ≤ s ,
j =1
s
xn = xn−1 + h∑ bi f (t n−1 + ci h, X i ) .
i =1
Los métodos de Runge-Kutta se pueden representar a partir de los coeficientes aij y bi ,
como
c1
c2
M
cs
a11
a21
M
a s1
b1
L a1s
L a2 s
O M ,
L a ss
L bs
a12
a22
M
as 2
b2
siendo
s
ci = ∑ aij , i = 1,2, L , s .
j =1
Definición 2.7
El método de Runge-Kutta se dice explícito si aij = 0 para todo j ≥ i .
Algunos ejemplos clásicos de los métodos de Runge-Kutta se muestran a continuación.
•
Método de Euler hacia adelante.
0 0
1
•
.
Familia uniparamétrica de métodos de segundo orden.
0
0
α
α
1−
1
2α
0
0 .
1
2α
50
Capítulo 2: Estado del Arte
• Método trapezoidal explícito ( α = 1 ).
• Método del punto medio explícito ( α = 1 / 2 ).
•
Familia uniparamétrica de métodos de tercer orden de tres etapas.
0
2
3
2
3
•
0
2
3
2 1
−
3 4α
1
4
0
0
0
0
1
.
0
4α
3
−α α
4
Método de Runge-Kutta clásico de cuarto orden.
0
1
2
1
2
1
0
1
2
0
0
0
0
0
0
0
0.
1
1
3
0
1
6
1
2
0
1
3
0
0
1
6
Definición 2.8
El método de Runge-Kutta se dice implícito si aij ≠ 0 para algún j ≥ i .
La mayor parte de los métodos de Runge-Kutta implícitos provienen de métodos
basados en fórmulas de cuadratura, algunos de los cuales se presentan a continuación.
•
Métodos de Gauss.
• Método del punto medio implícito.
1
2
•
1
2.
1
Métodos de Radau: Corresponden a fórmulas de orden 2 s − 1 que provienen de
fórmulas de cuadratura donde uno de los extremos está incluido ( c1 = 0 o cs = 0 ).
• Método de Euler hacia atrás.
1 1
1
•
.
Método de Lobatto: Corresponden a fórmulas de orden 2 s − 2 que provienen de
fórmulas de cuadratura en las que la función es muestreada en ambos lados del
intervalo.
• Método trapezoidal.
51
Capítulo 2: Estado del Arte
0
1
0
1
2
1
2
0
1
.
2
1
2
• Método de Lobatto para s = 3 .
0
1
2
1
0
5
24
1
6
1
6
0
1
3
2
3
2
3
0
1
−
24
1 .
6
1
6
2.3.3.3 Métodos Multipaso Lineales
Definición 2.9
Un método multipaso lineal de k pasos se define a partir de la expresión
( 2.17 )
k
k
j =0
j =0
∑ α j xn− j =h∑ β j f n− j ,
siendo
f n − j = f (tn − j , xn − j ) ,
y α j y β j , para j = 0,1, L , k , parámetros característicos del método.
En la expresión anterior se supone que α 0 ≠ 0 (para evitar el escalado se elige α 0 = 1 )
y | α k | + | β k |≠ 0 .
Definición 2.10
Un método multipaso se dice explícito si β 0 = 0 . En caso contrario, se dice que el
método es implícito.
2.3.3.3.1 Métodos de Adams
Si se integra la EDO ( 2.15 ), se tiene que
x(tn ) = x(tn −1 ) +
tn
∫ f (t , x(t ))dt .
t n −1
En estos métodos, el integrando f (t , x(t )) se aproxima mediante un polinomio
interpolador utilizando como puntos base algunos valores f (ti , xi ) calculados
previamente. Según esto, los valores de los parámetros α j en los métodos Adams son
α 0 = 1 , α1 = −1 y α j = 0 para j > 1 .
52
Capítulo 2: Estado del Arte
Los métodos de Adams explícitos, denominados también métodos de Adams-Bashforth,
se obtienen interpolando f (t , x) a partir de los valores previos de f (t , x) en los
instantes t n−1 , t n−2 , L , t n−k . Estos métodos se definen a partir de la fórmula
k
xn = xn−1 + h∑ β j f n− j ,
j =1
donde
⎛ i ⎞
⎟⎟γ i ,
i = j −1⎝ j − 1⎠
k −1
β j = (−1) j −1 ∑ ⎜⎜
⎛− s⎞
⎟ds .
i ⎟⎠
0⎝
1
γ i = (−1) ∫ ⎜⎜
i
Esta fórmula corresponde a un método de k pasos puesto que utiliza información de los
k instantes anteriores t n−1 , t n−2 , L , t n−k .
El método de Adams-Bashforth de un paso corresponde al método de Euler hacia
delante. Si se considera k = 2 , γ 0 = 1 y γ 1 = 1 / 2 , se obtiene la fórmula de AdamsBashforth de dos pasos
1
⎛3
⎞
xn = xn−1 + h⎜ f n−1 − f n−2 ⎟ .
2
⎝2
⎠
La fórmula de Adams-Bashforth de tres pasos viene dada por
16
5
⎛ 23
⎞
xn = xn −1 + h⎜
f n −1 −
f n−2 +
f n −3 ⎟ .
12
12
⎝ 12
⎠
En la siguiente tabla vienen reflejados los valores característicos de las fórmulas de
Adams-Bashforth hasta seis pasos.
β=1
k
β=2
β=3
β=4
β=5
β=6
1
1
2
3/2
-1/2
3
23/12
-16/12
5/12
4
55/24
-59/24
37/24
-9/24
5
1901/720
-2774/720
2616/720
-1274/720
251/720
6
4277/1440 -7923/1440
9982/1440
-7298/1440
2877/1440 -475/1440
Tabla 2.2:
Coeficientes del método de Adams-Bashforth.
Los métodos de Adams implícitos, denominados también métodos de Adams-Moulton,
se caracterizan por interpolar la función f (t , x) en puntos base de instantes anteriores, y
53
Capítulo 2: Estado del Arte
por tanto con valores conocidos, y en el correspondiente al instante t n , con valor
desconocido. La fórmula que los define viene dada por
k
xn = xn−1 + h∑ β j f n− j .
j =0
En la siguiente tabla vienen reflejados los valores característicos de las fórmulas de
Adams-Moulton hasta seis pasos.
β1
β2
β3
β4
β5
β6
r=1 k=1 1
r=2 k=1 1/2
1/2
r=3 k=2 5/12
8/12
-1/12
r=4 k=3 9/24
19/24
-5/24
1/24
r=5 k=4 251/720
646/720
-264/720
106/720
-19/720
-482/1440
-173/1440
r=6 k=5 475/1440 1427/1440 -798/1440
Tabla 2.3:
27/1440
Coeficientes del método de Adams-Moulton,
siendo r el orden del método.
2.3.3.3.2 Métodos BDF
Se trata de la familia de métodos más utilizada para problemas de tipo rígido. Los
métodos BDF se caracterizan porque f (t , x) se evalúa únicamente en el extremo de la
derecha del paso (tn , xn ) . Estos métodos se obtienen al derivar el polinomio que
interpola los valores anteriores de x , e igualar la derivada de x en t n a f (tn , xn ) . La
fórmula que define al método BDF de orden r ≥ 1 es
( 2.18 )
r
xn = ∑ α j xn − j + hβ f (tn , xn ) .
j =1
Los coeficientes α j , para j = 1,2, L , r , y β se muestran en la siguiente tabla.
54
Capítulo 2: Estado del Arte
β
α1
r =1
1
1
r=2
2/3
4/3
-1/3
r =3
6/11
18/11
-9/11
2/11
r=4
12/25
48/25
-36/25
16/25
r =5
60/137 300/137 -300/137 200/137 -75/137 12/137
Tabla 2.4:
α2
α3
α4
α5
-3/25
Coeficientes del método BDF.
2.3.4 Linealización a Trozos de EDOs
La resolución de EDOs que se presenta en este apartado ([Garc98]), se basa en la
aproximación, en cada subintervalo, de la ecuación diferencial no lineal por una
Ecuación Diferencial Lineal (EDL).
Sea la EDO con valores iniciales
x' (t ) = f (t , x(t )) , t ∈ [t 0 , t f ] ,
( 2.19 )
x(t0 ) = x0 ∈ ℜ n ,
cumpliendo f (t , x) las condiciones necesarias para que el problema anterior tenga
solución y además sea única.
Dada una partición t 0 < t1 < L < t l −1 < t l = t f , es posible aproximar la EDO ( 2.19 )
mediante el conjunto de EDLs resultantes de la aproximación lineal de f (t , x(t )) en
cada subintervalo, es decir,
( 2.20 ) y ' (t ) = f i + J i ( y (t ) − yi ) + gi (t − ti ) , t ∈ [t i , t i +1 ] , y (t i ) = yi , i = 0,1,L, l − 1 ,
siendo
f i = f (ti , yi ) ∈ ℜ n ,
Ji =
∂f
(ti , yi ) ∈ ℜ nxn la matriz Jacobiana de la función f (t , x) evaluada en (t i , y i ) ,
∂x
gi =
∂f
(ti , yi ) ∈ ℜ n el vector gradiente de la función f (t , x) evaluado en (t i , yi ) .
∂t
Para resolver la EDO ( 2.19 ), en primer lugar se resuelve la EDL asociada al primer
subintervalo
y ' (t ) = f 0 + J 0 ( y (t ) − y0 ) + g 0 (t − t0 ) , t ∈ [t 0 , t1 ] ,
con valor inicial y (t 0 ) = y0 = x(t 0 ) = x0 .
La solución viene dada por
55
Capítulo 2: Estado del Arte
t
y (t ) = y0 + ∫ e J 0 ( t −τ ) [ f 0 + g 0 (τ − t 0 )]dτ , t ∈ [t 0 , t1 ] ,
t0
lo que permite calcular y1 = y (t1 ) .
A continuación se resuelve la EDL asociada al segundo subintervalo
y ' (t ) = f1 + J1 ( y (t ) − y1 ) + g1 (t − t1 ) , t ∈ [t1 , t 2 ] ,
con valor inicial y (t1 ) = y1 , obteniéndose la solución
t
y (t ) = y1 + ∫ e J1 ( t −τ ) [ f1 + g1 (τ − t1 )]dτ , t ∈ [t1 , t 2 ] .
t1
En general, la solución de la EDL asociada al i-ésimo subintervalo
( 2.21 )
y ' (t ) = f i + J i ( y (t ) − yi ) + gi (t − ti ) , t ∈ [ti , ti +1 ] , 0 ≤ i < l ,
con valor inicial y (t i ) = yi , resulta ser
t
( 2.22 )
y (t ) = yi + ∫ e J i (t −τ ) [ f i + g i (τ − t i )]dτ , t ∈ [ti , ti +1 ] .
ti
Si J i es invertible, entonces y (t ) se puede obtener mediante la expresión
( 2.23 )
y (t ) = yi − J i−1[ f i + g i (t − t i ) − J i−2 g i + e J i (t −ti ) ( J i−1 f i + J i−2 g i )] .
Teorema 2.10 ([Garc98]).
Dada la EDO con valores iniciales
x' (t ) = f (t , x(t )) ,
x(t 0 ) = x0 ,
con x = x(t ) ∈ ℜ n , t ∈ [t 0 , t f ] . Si las derivadas parciales de segundo orden de f (t , x)
están acotadas en [t 0 , t f ]xℜ n , entonces el método de linealización a trozos es
convergente, verificándose además que
[
]
C∆t 2 Kn∆t
x(t n ) − y n ≤
e
−1 ,
K
siendo y n la solución aproximada obtenida mediante el método de linealización a
trozos en el instante t n , ∆t = max(∆ti ) , ∆t i = t i +1 − t i , con K y C constantes
0≤i <l
dependientes del problema.
2.3.5 Software para la Resolución de EDOs
Existe en la actualidad una gran cantidad de software que permite resolver EDOs para
problemas rígidos y no rígidos, así como para problemas de pequeña y gran dimensión.
Este software se puede dividir en cuatro grupos:
• Entornos de programación comerciales como MATLAB (www.mathworks.com),
Mathematica (www.wolfram.com) y Maple (www.maplesoft.com). La ventaja de
56
Capítulo 2: Estado del Arte
estos programas es su fiabilidad, facilidad de uso, el disponer de numerosas
herramientas y tener un excelente control de calidad y soporte.
• Entornos de programación de dominio público como Scilab (www.scilab.org) y
Octave (www.octave.org). Se trata de paquetes de software con algunas de las
ventajas anteriores, siendo además gratuitos.
• Librerías de software numérico, como el desarrollado por la empresa NAG
(Numerical Algorithms Group, www.nag.co.uk) o IMSL de la empresa Absoft
Corporation (www.absoft.com). Estas librerías, escritas en FORTRAN y en C,
contienen numerosas rutinas que permiten resolver problemas numéricos muy
diversos entre los que se encuentra la resolución de EDOs. Las ventajas de estos
códigos son su fiabilidad, rapidez y el control de calidad y soporte que supone
tener el respaldo de dos grandes empresas.
• Colecciones de códigos de libre distribución. En este grupo se encuentran varios
paquetes disponibles en www.netlib.org/ode (NETLIB) como los que a
continuación se describen.
• ODEPACK. Es uno de los paquetes de software más difundido para la
resolución de EDOs. Desarrollado por Alan C. Hindmarsh ([Hind83],
[RaHi93], [BrHi89]), este paquete tiene sus orígenes en 1976 fruto del esfuerzo
por obtener una colección de rutinas que resolviesen EDOs con valores
iniciales, y la finalidad de establecer un estándar para este tipo de problemas.
Consta de un código básico, llamado LSODE, y ocho variantes de él,
denominados LSODES, LSODA, LSODAR, LSODPK, LSODKR, LSODI,
LSOIBT, y LSODIS, que permiten resolver problemas rígidos o no rígidos de
EDOs, tanto en forma explícita ( x' (t ) = f (t , x) ), como en forma lineal
implícita ( A(t , x) x' (t ) = f (t , x) ). LSODE utiliza métodos de Adams, para la
resolución de EDOs de tipo no rígido, y métodos BDF y Gear, para la
resolución de EDOs rígidas.
• RKSUITE. Desarrollado por R. W. Brankin, I. Gladwell y L. F. Shampine,
contiene un conjunto de rutinas escritas en FORTRAN basadas en métodos
Runge-Kutta ([BrGS92]).
• Rutinas epsode.f, vode.f, svode, svodpk.f, vode.f y vodpk.f. Rutinas escritas en
FORTRAN y desarrolladas por Peter N. Brown y Alan C. Hindmarsh, que
resuelven problemas de valores iniciales de EDOs de tipo rígido o no rígido
mediante algoritmos basados en el método BDF ([ByHi75], [HiBy75],
[Hind74]).
• Rutinas ode.f, sderoot.f y sode.f. Desarrolladas por Shampine y Gordon,
resuelven problemas de valores iniciales de EDOs mediante métodos de Adams
([ShGo75]).
• Rutinas rkf45.f y srkf45.f. Rutinas desarrolladas por H. A. Watts y L. F.
Shampine, resuelven problemas de valores iniciales de EDOs mediante el
método Runge-Kutta-Fehlberg (4,5) ([Fehl69], [ShWD76].
57
Capítulo 2: Estado del Arte
2.4 Ecuaciones
(EDMRs)
Diferenciales
Matriciales
de
Riccati
2.4.1 Definiciones y Propiedades
Se conoce con el nombre de Ecuación Diferencial Matricial de Riccati (EDMR) a una
ecuación diferencial matricial cuadrática de primer orden
( 2.24 )
X ' (t ) = Q(t ) + X (t ) A(t ) + B(t ) X (t ) − X (t ) R(t ) X (t ) , t0 ≤ t ≤ t f ,
X (t 0 ) = X 0 ∈ ℜ mxn ,
siendo A(t ) ∈ ℜ nxn , B(t ) ∈ ℜ mxm , Q(t ) ∈ ℜ mxn , R (t ) ∈ ℜ nxm y X (t ) ∈ ℜ mxn .
Teorema 2.11: Existencia y unicidad de la solución.
Sea F (t , X (t )) la función definida por la parte derecha de la EDMR ( 2.24 ),
F (t , X (t )) = Q(t ) + X (t ) A(t ) + B (t ) X (t ) − X (t ) R(t ) X (t ) ,
( 2.25 )
y los vectores x(t ) = vec( X (t )) y f (t , x(t )) = vec( F (t , X (t ))) , entonces si
f ij y
∂f ij
∂x pq
, para i, p = 1,2, L , m y j , q = 1,2, L , n ,
son funciones continuas en la región [t0 , t f ] × ℜ , entonces la EDMR ( 2.24 ) tiene una
única solución en una cierta región incluida en [t0 , t f ] × ℜ mxn que contiene al punto
(t0 , X 0 ) .
Existe una importante conexión entre las EDMRs y las Ecuaciones Diferenciales
Matriciales Lineales (EDMLs), como lo demuestra el siguiente teorema.
Teorema 2.12 ([AnMo71]).
Sea la EDMR
( 2.26 )
X ' (t ) = Q(t ) + X (t ) A(t ) + B(t ) X (t ) − X (t ) R(t ) X (t ) , t0 ≤ t ≤ t f ,
−1
con la condición inicial X (t 0 ) = V0U 0 ,
y la EDML
( 2.27 )
d ⎡U (t )⎤ ⎡− A(t ) R(t )⎤ ⎡U (t )⎤
=
, t0 ≤ t ≤ t f ,
dt ⎢⎣V (t ) ⎥⎦ ⎢⎣ Q(t ) B(t )⎥⎦ ⎢⎣V (t ) ⎥⎦
con condición inicial
⎡U (t0 )⎤ ⎡U 0 ⎤
⎢V (t ) ⎥ = ⎢ V ⎥ ,
⎣ 0 ⎦ ⎣ 0⎦
siendo U 0 ,U (t ) ∈ ℜ nxn ( U 0 invertible) y V0 ,V (t ) ∈ ℜ mxn .
Suponiendo que la solución de ( 2.26 ) existe y es única en el intervalo [t 0 , t f ] ,
entonces la solución de ( 2.27 ) tiene la propiedad de que U (t ) es invertible y que
58
Capítulo 2: Estado del Arte
X (t ) = V (t )U −1 (t ) , t ∈[t0 , t f ] .
( 2.28 )
Recíprocamente, si la solución de ( 2.27 ) tiene la propiedad de que U (t ) es invertible
en el intervalo [t 0 , t f ] , entonces la única solución de ( 2.26 ) está dada por ( 2.28 ).
Un tipo especial de EDMRs son las denominadas EDMRs simétricas que se presentan a
continuación.
Definición 2.11
Una EDMR se dice simétrica, si se puede expresar como
( 2.29 )
X ' (t ) = Q(t ) + X (t ) A(t ) + AT (t ) X (t ) − X (t ) R(t ) X (t ) , t0 ≤ t ≤ t f ,
X (t0 ) = X 0 ,
siendo Q(t ), A(t ), R(t ) ∈ ℜ nxn , con Q(t ) y R(t ) simétricas.
Algunos de los métodos de resolución de EDMRs se basan en el siguiente teorema.
Teorema 2.13 ([Lain76])
Sea la EDMR simétrica
( 2.30 )
∂X (t , t0 )
= Q(t ) + X (t , t0 ) A(t ) + AT (t ) X (t , t0 ) − X (t , t0 ) R(t ) X (t , t0 ) , t0 ≤ t ≤ t f ,
∂t
X (t0 , t0 ) = X 0 ∈ ℜ nxn .
La solución de la EDMR simétrica ( 2.30 ) puede obtenerse a partir de la resolución del
Sistema de Ecuaciones en Derivadas Parciales (SEDP)
( 2.31 )
∂X (t , t0 )
= −Φ (t , t0 ) X (t 0 , t 0 )Φ T (t , t0 ) , X (t 0 , t 0 ) = X 0 , t ≥ t 0 ,
∂t 0
y
( 2.32 )
[
]
∂Φ(t , t0 )
= AT (t ) − X (t , t 0 ) R(t ) Φ(t , t0 ) , Φ(t0 , t0 ) = I n ,
∂t
donde
( 2.33 )
X (t 0 , t 0 ) =
∂X (t , t 0 )
= Q(t 0 ) + X 0 A(t 0 ) + AT (t 0 ) X 0 − X 0 R (t 0 ) X 0 .
∂t 0 t =t
0
Para EDMRs con coeficientes constantes, se cumple que
X (t , t 0 ) = X (t − t 0 ) = X (t ) ,
Φ(t , t 0 ) = Φ (t − t 0 ) = Φ(t ) ,
y el sistema formado por las ecuaciones ( 2.31 ) y ( 2.32 ) se reduce al Sistema de
Ecuaciones Diferenciales Ordinarias (SEDO)
dX (t )
= Φ (t ) X (t 0 , t 0 )Φ T (t ) , X (t 0 ) = X 0 , t ≥ t 0 ,
dt
59
Capítulo 2: Estado del Arte
[
]
dΦ(t )
= AT (t ) − X (t ) R Φ(t ) , Φ (t 0 ) = I n , t ≥ t 0 .
dt
El siguiente teorema demuestra que la solución de la EDMR simétrica ( 2.30 ) se
expresa en términos de la solución de la misma EDMR pero con una condición inicial
diferente. La solución X (t , t 0 ) cuando se expresa en términos de otra EDMR se
denomina solución particionada generalizada.
Teorema 2.14 ([Lain76])
La solución X (t , t 0 ) de la EDMR ( 2.30 ) se puede expresar como
( 2.34 )
[
X (t , t 0 ) = X n (t , t 0 ) + Φ n (t , t 0 ) Ο n (t , t 0 ) + X r−1
]
−1
Φ Tn (t , t 0 ) ,
donde
∂Ο n (t , t 0 )
= Φ Tn (t , t 0 ) R(t )Φ n (t , t 0 ) , Ο n (t 0 , t 0 ) = 0 ,
∂t
[
]
∂Φ n (t , t0 )
= AT (t ) − X n (t , t0 ) R(t ) Φ n (t , t0 ) , Φ n (t 0 , t 0 ) = I n ,
∂t
siendo
X (t 0 , t 0 ) = X n + X r .
La matriz X n (t , t 0 ) es la solución de la EDMR ( 2.30 ) pero con una condición inicial
distinta, es decir, X n (t , t 0 ) es la solución de la EDMR
∂X n (t , t 0 )
= Q(t ) + X n (t , t 0 ) A(t ) + A(t )T X n (t , t 0 ) − X n (t , t 0 ) R(t ) X n (t , t 0 ) ,
∂t
X n (t 0 , t 0 ) = X n .
2.4.2 Métodos de Resolución de EDMRs
2.4.2.1 Integración Directa
La forma más simple de resolver EDMRs consiste en convertir la ecuación ( 2.24 ) en el
sistema de ecuaciones diferenciales vectoriales de tamaño mn
( 2.35 )
x'ij = qij + X i A j + Bi X j − X i RX j , para i = 1, L , m y j = 1, L, n ,
donde X i y Bi representan, respectivamente, las filas i-ésimas de las matrices X y B ,
y X j y A j , las columnas j-ésimas de las matrices X y A .
El problema de este método es que el tamaño de este sistema de ecuaciones
diferenciales es excesivamente grande cuando m y n son elevados; además, si el
sistema es rígido, entonces la complejidad computacional es muy elevada.
2.4.2.2 Métodos de Linealización
Estos métodos se basan en el Teorema 2.12 para convertir una EDMR en una EDML. Si
en la fórmula ( 2.28 ) se consideran X (t 0 ) = X 0 , U 0 = I n y V0 = X 0 , y la matriz
fundamental Φ de la EDMR se divide a bloques
60
Capítulo 2: Estado del Arte
⎡ Φ (t , t ) Φ12 (t , t 0 ) ⎤
Φ (t , t 0 ) = ⎢ 11 0
⎥,
⎣Φ 21 (t , t 0 ) Φ 22 (t , t 0 )⎦
conforme a la matriz
⎡− A(t ) R(t )⎤
M =⎢
⎥,
⎣ Q(t ) B(t )⎦
entonces, según el Teorema 2.12, se tiene que la solución de la EDMR ( 2.24 ) es
( 2.36 )
X (t ) = [Φ 21 (t , t0 ) + Φ 22 (t , t0 ) X 0 ][Φ11 (t , t0 ) + Φ12 (t , t0 ) X 0 ] .
−1
2.4.2.2.1 Método de Davison-Maki
En el caso de EDMRs con coeficientes constantes se puede considerar, sin pérdida de
generalidad, que t0 = 0 . En tal caso, la solución X (t ) de la expresión ( 2.36 ) puede
obtenerse fácilmente teniendo en cuenta que matriz fundamental Φ(t ) coincide con la
exponencial de la matriz Mt .
En [DaMa73], Davison y Maki proponen calcular X (t ) utilizando un tamaño de paso
constante
∆t =
tf
, k∈N ,
2k
de manera que se produzca un error de truncamiento menor que una cierta cota positiva
elegida previamente, siguiendo el siguiente esquema:
•
Calcular la exponencial matricial Φ (∆t ) = e M∆t mediante, por ejemplo, las
aproximaciones de Padé.
•
En los siguientes pasos, se calcula Φ(2i +1 ∆t ) a partir de Φ(2i ∆t ) mediante las
expresiones
Φ (2 i +1 ∆t ) = Φ(2 i ∆t )Φ(2 i ∆t ) , i = 0,1, L , k − 1 .
En [KeLe85], Kenney y Leipnik proponen utilizar un tamaño de paso constante
∆t =
tf
k
, k∈N ,
de manera que se produzca un error de truncamiento menor que una cierta cota positiva
elegida previamente, siguiendo el siguiente esquema:
•
•
Calcular la exponencial matricial Φ (∆t ) = e M∆t mediante, por ejemplo, las
aproximaciones de Padé.
En los siguientes pasos, se calcula Φ((i + 1)∆t ) a partir de Φ(i∆t ) mediante las
expresiones
Φ((i + 1)∆t ) = Φ(i∆t )Φ(∆t ) , i = 1,2, L , k − 1 .
61
Capítulo 2: Estado del Arte
2.4.2.2.2 Procedimiento Iterativo Matricial ASP (Automatic Synthesis
Program)
Este método, debido a Kalman y Englar ([KaEn66]), fue posteriormente utilizado por
Kenney y Leipnik (KeLe85]), bajo el nombre de método de Davison-Maki modificado,
para resolver EDMRs con t 0 = 0 . Como la matriz fundamental tiene estructura de
semigrupo con el producto de matrices, entonces
Φ(t k +1 ,0) = Φ (t k +1 , t k )Φ (t k ,0) ,
por lo que
⎡ I n ⎤ ⎡ Φ11 (t k +1 , tk ) Φ12 (tk +1 , tk ) ⎤ ⎡U (tk )⎤
⎡U (t k +1 )⎤
⎡ In ⎤
⎢V (t ) ⎥ = Φ (tk +1 ,0) ⎢ X ⎥ = Φ (tk +1 , t k )Φ (tk ,0) ⎢ X ⎥ = ⎢Φ (t , t ) Φ (t , t )⎥ ⎢V (t ) ⎥ .
22 k +1 k ⎦ ⎣
k ⎦
⎣ k +1 ⎦
⎣ 0⎦
⎣ 0 ⎦ ⎣ 21 k +1 k
Por lo tanto,
(2.37)
X (tk +1 ) = V (tk +1 )U −1 (tk +1 )
= [Φ 21 (tk +1 , tk ) + Φ 22 (tk +1 , tk ) X (tk )][Φ11 (tk +1 , tk ) + Φ12 (tk +1 , tk ) X (tk )]−1.
Si la EDMR tiene coeficientes constantes y se considera un tamaño de paso constante
∆t , entonces X (t k +1 ) se puede obtener fácilmente puesto que los valores de Φ ij (t k +1 , t k )
son independientes de k .
En este método se pueden destacar las siguientes cuestiones:
• Al contrario de lo que ocurre con el método de Davison-Maki, en el método ASP
no hace falta actualizar la exponencial matricial.
• Para pequeños valores de ∆t , se tiene que
Φ 11 (.,.) → I n , Φ 12 (.,.) → 0 nxm ,
Φ 21 (.,.) → 0 mxn , Φ 22 (.,.) → I m ;
por lo tanto, la matriz Φ 11 (t k +1 , t k ) + Φ 12 (t k +1 , t k ) X (t k ) está bien condicionada.
• Aunque en principio hay que calcular la exponencial de una matriz de orden 2n ,
se puede modificar el método para que sólo hagan falta calcular exponenciales de
matrices de orden igual a n (véase subapartado 2.4.3.5).
2.4.2.3 Método BDF
En el subapartado 2.3.3.3.2 se comentó la resolución de EDOs mediante el método
BDF. Este método se puede adaptar para resolver eficientemente EDMRs, resultando
ser especialmente útil cuando se trata de resolver problemas de tipo rígido. Existen
varios algoritmos basados en este método entre los que cabe destacar el desarrollado en
[Diec92]. Si en la ecuación ( 2.24 ) se define F (t , X ) como la parte derecha de la
misma, es decir,
F (t , X ) = Q(t ) + XA(t ) + B (t ) X − XR(t ) X ,
y se realiza una partición del intervalo de tiempo [t 0 , t f ] , entonces la solución
aproximada en el instante t k ( X k ) se obtiene mediante la resolución de la ecuación
implícita
62
Capítulo 2: Estado del Arte
r
X k = ∑ α j X k − j + hβF (tk , X k ) ,
( 2.38 )
j =1
donde α j , j = 1,2,L, r , y β son los coeficientes que aparecen en la Tabla 2.4, siendo
r el orden del método BDF.
Si se sustituye el valor de F (t , X ) en la ecuación ( 2.38 ), entonces se obtiene la
Ecuación Algebraica Matricial de Riccati (EAMR)
( 2.39 )
r
− X k + ∑ α j X k − j + hβ [Q(t k ) + X k A(t k ) + B(t k ) X k − X k R (t k ) X k ] .
j =1
Aplicando el método de Newton a la ecuación anterior, se tiene que
( 2.40 )
r
Gˆ ('l ) ( X k( l +1) − X k( l ) ) = − X k( l ) + hβ F (tk , X k( l ) ) + ∑ α j X k − j ,
j =1
donde Gˆ (' l ) es una aproximación de la derivada de Fréchet ([Grif81], página 310) G('l ) .
A partir de la ecuación ( 2.40 ), se obtiene la ecuación matricial de Sylvester
( 2.41 )
Cˆ 22Yk( l +1) − Yk( l +1) Cˆ11 = H k( l ) ,
con
Cˆ 22 = C 22 − X k( l ) C12 ∈ R mxm ,
Cˆ11 = C11 + C12 X k(l ) ∈ R nxn ,
r
H k( l ) = − X k( l ) + hβF (t k , X k(l ) ) + ∑ α j X k − j ∈ R mxn ,
j =1
y
Yk( l +1) = X k( l +1) − X k( l ) ∈ R mxn ,
siendo
C11 = −hβA(t k ) + 0.5 I n ,
C12 = hβR(t k ) ,
r
C 21 = hβQ(t k ) + ∑ α j X k − j ,
j =1
C 22 = hβB (t k ) − 0.5I m .
Por lo tanto, para encontrar la solución en un cierto instante es necesario resolver varias
veces la ecuación ( 2.41 ) hasta que se alcance la convergencia de Yk( l ) . Esta ecuación se
puede resolver mediante el algoritmo de Bartels-Stewart [BaSt72].
63
Capítulo 2: Estado del Arte
2.4.3 Métodos de Resolución de EDMRs Simétricas
2.4.3.1 Métodos de Linealización
2.4.3.1.1 Método de la Exponencial no Negativa
En [Vaug69], Vaughan señala que el cálculo de X (t ) mediante la expresión ( 2.36 )
puede dar lugar a un método inestable para valores elevados de t , proponiendo un
método que puede evitar ese problema para el caso de EDMRs simétricas con
coeficientes constantes. La EDML asociada a la EDMR simétrica ( 2.29 ) es
( 2.42 )
d ⎡U (t )⎤ ⎡− A R ⎤ ⎡U (t )⎤
=
, t0 ≤ t ≤ t f ,
dt ⎢⎣V (t ) ⎥⎦ ⎢⎣ Q AT ⎥⎦ ⎢⎣V (t ) ⎥⎦
⎡U (t0 )⎤ ⎡ I n ⎤
⎢V (t ) ⎥ = ⎢ X ⎥ ,
⎣ 0 ⎦ ⎣ 0⎦
siendo
⎡− A R ⎤
M =⎢
,
T⎥
⎣Q A ⎦
( 2.43 )
una matriz Hamiltoniana (Definición 6.24). Por lo tanto, si λ es un valor propio de M ,
entonces − λ también lo es. Sea W la matriz no singular que diagonaliza a la matriz
M,
⎡D 0 ⎤
W −1MW = ⎢
⎥,
⎣ 0 − D⎦
donde D es la forma canónica de Jordan correspondiente a los valores propios que se
encuentran en el semiplano complejo derecho.
Realizando el cambio de variable
( 2.44 )
⎡U ⎤ ⎡W11 W12 ⎤ ⎡U ⎤
⎡U ⎤
⎢V ⎥ = W ⎢ ⎥ = ⎢W W ⎥ ⎢ ⎥ ,
⎣ ⎦
22 ⎦ ⎣V ⎦
⎣V ⎦ ⎣ 21
la ecuación ( 2.42 ) se convierte en
( 2.45 )
d ⎡U (t )⎤ ⎡ D 0 ⎤ ⎡U (t )⎤
⎢
⎥=
⎢
⎥,
dt ⎣V (t ) ⎦ ⎢⎣ 0 − D ⎥⎦ ⎣V (t ) ⎦
⎡ In ⎤
⎡U (t0 )⎤
−1
⎢
⎥ = W ⎢X ⎥ .
⎣V (t0 ) ⎦
⎣ 0⎦
Las soluciones de este sistema desacoplado son
U (t ) = e DtU (t 0 ) , V (t ) = e − DtV (t 0 ) .
A partir de la condición inicial de ( 2.45 ), se tiene que
I n = W11U (t 0 ) + W12V (t 0 ) ,
X 0 = W21U (t 0 ) + W22V (t 0 ) ,
por lo que
V (t 0 ) = RU (t 0 ) ,
64
Capítulo 2: Estado del Arte
donde
R = −[W22 − X 0W12 ] [W21 − X 0W11 ] ,
−1
por lo tanto
V (t )U −1 (t ) = e − Dt Re − Dt .
De la ecuación ( 2.44 ), se tiene que
U (t ) = W11U (t ) + W12V (t ) ,
V (t ) = W21U (t ) + W22V (t ) ,
y por lo tanto
X (t ) = V (t )U −1 (t ) = [W21 + W22V (t )U −1 (t )][W11 + W12V (t )U −1 (t )]−1
= [W21 + W22 e −tD Re −tD ][W11 + W12 e − Dt Re − Dt ]−1 .
De este método se pueden destacar los siguientes aspectos:
• Al tender t a infinito, no hay crecimiento exponencial en la fórmula que define a
X (t ) y, por tanto, se evita los problemas que aparecen en el método de DavisonMaki.
−1
• La solución estable puede obtenerse fácilmente pues resulta ser igual a W21W11 .
• Un problema de este método es que el cálculo de la matriz de trasformación W
puede estar mal condicionado.
2.4.3.1.2 Método de Schur
Este método es aplicable a EDMRs simétricas con coeficientes constantes. La matriz
Hamiltoniana M de la expresión ( 2.43 ) se puede reducir, mediante transformaciones
de semejanza ortogonales definidas por una matriz K , a una forma triangular superior a
bloques
⎡S
K T MK = ⎢ 11
⎣0
S12 ⎤
,
S 22 ⎥⎦
de manera que los valores propios S11 se encuentran en el semiplano complejo derecho,
y los valores propios de S 22 en el semiplano complejo izquierdo.
Si se considera la transformación
⎡U (t )⎤
⎡U (t )⎤
⎥,
⎢V (t ) ⎥ = K ⎢
⎣
⎦
⎣V (t ) ⎦
entonces la EDML ( 2.42 ) queda como
( 2.46 )
d ⎡U (t )⎤ ⎡ S11
⎢
⎥=
dt ⎣V (t ) ⎦ ⎢⎣ 0
S12 ⎤ ⎡U (t )⎤
,
S 22 ⎥⎦ ⎢⎣V (t ) ⎥⎦
I
⎡U (t0 )⎤
T⎡ n ⎤
⎢
⎥ = K ⎢ ⎥.
⎣X0⎦
⎣V (t0 ) ⎦
A partir de ( 2.46 ) se obtiene la EDML
65
Capítulo 2: Estado del Arte
dV (t )
= S 22V (t ) ,
dt
cuya solución es
V (t ) = e S22tV (t 0 ) ,
( 2.47 )
así como la EDML
dU (t )
= S11U (t ) + S12e S 22 tV (t0 ) ,
dt
cuya solución viene dada por
t
( 2.48 )
U (t ) = e U (t0 ) + ∫ e S11 ( t −τ ) S12e S 22τ V (t0 )dτ .
S11t
t0
Si se realiza una división a bloques de la matriz K , conforme a la división a bloques de
la matriz M , entonces K se puede expresar como
⎡K
K = ⎢ 11
⎣ K 21
K12 ⎤
.
K 22 ⎥⎦
Teniendo en cuenta la EDML ( 2.46 ), se tiene que
( 2.49 )
V (t0 ) = RU (t 0 ) ,
siendo
R = −[ K 22 − X 0 K12 ]−1[ K 21 − X 0 K11 ] .
Teniendo en cuenta las expresiones ( 2.47 ), ( 2.48 ) y ( 2.49 ), se deduce que
−1
( 2.50 )
X (t ) = V (t )U (t ) −1 = e S22t
t
⎡
⎤
S ( t −τ )
S τ
−S t
⎢ I n + R ∫ e 11 S12 e 22 dτ ⎥ Re 11 ,
⎢⎣
⎥⎦
t0
por lo que X (t ) se obtiene a partir de X (t ) mediante la expresión
X (t ) = V (t )U (t ) −1 = [ K 21 + K 22 X (t )][ K11 + K12 X (t )]−1 .
De este método se pueden destacar los siguientes aspectos:
• La ventaja de este método es que la matriz ortogonal K se puede calcular
mediante un método estable.
• Una forma efectiva de calcular la integral que aparece en ( 2.50 ) puede
encontrarse en [VanL78].
2.4.3.2 Método de Chandrasekhar
Este método es particularmente útil en problemas de control óptimo y filtrado puesto
que, en estos casos, la matriz R(t ) de la EDMR simétrica ( 2.29 ) se expresa como el
producto
R (t ) = H T (t ) R1−1 (t ) H (t ) ,
66
Capítulo 2: Estado del Arte
donde H (t ) ∈ ℜ pxn , R1 (t ) ∈ ℜ pxp .
El método de Chandrasekhar se basa en el Teorema 2.13 y en el lema que aparece a
continuación.
Lema 3 ([Lain76]).
Si W ∈ ℜ nxn es una matriz simétrica de rango r , entonces existen unas matrices
L1 ∈ ℜ nxl y L2 ∈ ℜ nx ( r −l ) , siendo l el número de valores propios positivos de la matriz
W , de manera que
W = L1 LT1 − L2 LT2 .
Si se aplica el lema anterior a la matriz simétrica X (t 0 , t 0 ) de la ecuación ( 2.33 ), se
tiene que
⎡I
( 2.51 ) X (t0 , t0 ) = [L1 (t 0 ) L2 (t 0 )] ⎢ m
⎣0
0 ⎤
[L1 (t0 ) L2 (t0 )]T = L(t0 ) SLT (t0 ) ,
⎥
− I r −m ⎦
donde r es el rango de X (t 0 , t 0 ) , L1 (t0 ) ∈ ℜnxl y L2 (t0 ) ∈ ℜ nx ( r − l ) .
Sustituyendo ( 2.51 ) en ( 2.31 ) y multiplicando a la derecha de esta ecuación por
H T (t ) R1−1 (t ) , se tiene que
( 2.52 )
∂K (t , t0 )
= −ΥK (t , t0 ) SYKT (t , t0 ) H T (t ) R1−1 (t ) ,
∂t0
K (t 0 , t 0 ) = X 0 H T (t 0 ) R1−1 (t 0 ) ,
donde
K (t , t 0 ) = X (t , t 0 ) H T (t ) R1−1 (t ) ∈ ℜ nxp ,
( 2.53 )
ΥK (t , t 0 ) = Φ k (t , t 0 ) L(t 0 ) ∈ ℜ nxr .
Derivando la ecuación anterior respecto de t y haciendo uso de la ecuación ( 2.32 ), se
obtiene
( 2.54 )
∂ΥK (t , t 0 )
= [ AT (t ) − K (t , t 0 ) H (t )]ΥK (t , t 0 ) ,
∂t
ΥK (t 0 , t 0 ) = L(t 0 ) .
Por lo tanto, las matrices K (t , t0 ) y ΥK (t , t0 ) se pueden calcular resolviendo las
ecuaciones diferenciales ( 2.52 ) y ( 2.54 ).
La solución X (t , t0 ) puede obtenerse a partir de ( 2.31 ) utilizando una fórmula de
cuadratura en la ecuación diferencial
( 2.55 )
∂X (t , t 0 )
= −ΥK (t , t 0 ) SΥKT (t , t 0 ) .
∂t 0
Las ecuaciones en derivadas parciales dadas en ( 2.52 ) y ( 2.54 ) no se pueden resolver
con facilidad para EDMRs con coeficientes variables, incluso en el caso en que el
67
Capítulo 2: Estado del Arte
número de ecuaciones sea significativamente pequeño. Para el caso de EDMRs con
coeficientes constantes, las EDPs se reducen a EDOs puesto que K y ΥK se pueden
considerar funciones de t − t 0 . Por lo tanto,
∂K (t , t0 ) ∂K (t − t 0 )
∂K (t − t 0 )
dK (t )
=
,
=−
=−
∂t 0
dt
∂t0
∂t
luego ( 2.52 ) y ( 2.54 ) se convierten en
dK (t )
= ΥK (t ) SYKT (t ) H T R −1 , K (t 0 ) = P0 H T R −1 ,
dt
[
]
dΥK (t )
= AT − K (t ) H ΥK (t ) , ΥK (t 0 ) = L(t 0 ) ,
dt
y X (t ) se puede obtener integrando ΥK (t ) SYKT (t ) .
En este método se puede destacar que:
•
Si X 0 = 0 , entonces la matriz X (t 0 , t 0 ) = Q es semidefinida positiva y la matriz S
de la ecuación ( 2.55 ) es igual a la matriz identidad de rango r , siendo r el rango
de la matriz Q .
•
Si se utiliza un método directo de integración, entonces el número total de
ecuaciones a integrar es n( p + r ) puesto que K ∈ ℜ nxp y ΥK ∈ ℜ nxr . Si
p + r << (n + 1) / 2 , entonces el número de ecuaciones en este método es mucho
menor que los obtenidos mediante un método directo de integración. La desigualdad
es satisfecha si tanto el parámetro p como el parámetro r son pequeños
comparados con n . De este modo, sólo para algunas clases especiales de EDMRs es
interesante utilizar este método.
En la implementación de un filtro de Kalman únicamente es necesario conocer la
matriz de ganancia K (t , t 0 ) , no siendo imprescindible calcular la matriz X (t , t 0 ) .
•
2.4.3.3 Algoritmo de Particionado Numérico (APN)
Este método, basado en el Teorema 2.14, fue sugerido por Lainiotis ([Lain76]) para
resolver EDMRs simétricas. Supóngase que el intervalo de integración se divide en k
subintervalos [t 0 , t1 ],L, [t k −1 , t f ] . Las soluciones en los nodos están dadas por las
siguientes fórmulas recursivas obtenidas a partir de la ecuación ( 2.34 ):
( 2.56 ) X (t i +1 , t 0 ) = X n (t i +1 , t i ) + Φ n (t i +1 , t i )[Ο n (t i +1 , t i ) + X r−1 (t i +1 , t 0 )] −1 Φ Tn (t i +1 , t i ) .
De acuerdo con el Teorema 2.14, X n (t i +1 , t i ) , Φ n (t i +1 , t i ) y Ο n (t i +1 , t i ) se obtienen
mediante la integración de las siguientes ecuaciones diferenciales
( 2.57 )
∂Ο n (t , t i )
= Φ Tn (t , t i ) R(t )Φ n (t , t i ) , Ο n (ti , ti ) = 0n ,
∂t
( 2.58 )
∂Φ n (t , ti )
= [ AT (t ) − X n (t , ti ) R(t )]Φ n (t , ti ) , Φ n (ti , ti ) = I n ,
∂t
( 2.59 )
∂X n (t , ti )
= Q(t ) + X n (t , ti ) A(t ) + AT (t ) X n (t , ti ) − X n (t , ti ) R (t ) X n (t , ti ),
∂ti
68
Capítulo 2: Estado del Arte
X n (t i , t i ) = X ni ,
en cada uno de los subintervalos [ti , ti +1 ] .
La condición inicial X ni en la última ecuación se elige de manera que la matriz
X r (ti , t 0 ) = X (ti , t 0 ) − X ni
sea no singular.
Para calcular eficientemente las matrices X n (ti +1 , ti ) , Φ n (ti +1 , ti ) y Ο n (ti +1 , ti ) se puede
aplicar el Teorema 2.13 a X n (t , ti ) y Φ n (t , ti ) . En cuyo caso, ( 2.57 ), ( 2.58 ) y ( 2.59 )
se convierten en las ecuaciones
∂Ο n (t , ti )
= Φ Tn (t , ti ) R(t )Φ n (t , ti ) , Ο n (t i , t i ) = 0 ,
∂t
∂Φ n (t , ti )
= [ AT (t ) − X n (t , ti ) R(t )]Φ n (t , ti ) , Φ n (t i , t i ) = I n ,
∂t
∂X n (t , ti )
= Φ n (t , ti ) X n (ti , ti )Φ Tn (t , ti ) , X n (ti , ti ) = X ni ,
∂ti
donde
X n (t i , t i ) =
∂X n (t , t i )
∂t i
t =t
i
= Q(t i ) + X n (t i , t i ) A(t i ) + AT (t i ) X n (t i , t i ) − X n (t i , t i ) R(t i ) X n (t i , t i ).
Si se elige convenientemente la condición inicial X ni , entonces las ecuaciones
anteriores pueden resolverse mediante el método de Chandrasekhar.
Respecto de este método se pueden destacar las siguientes cuestiones:
•
•
La integración en cada subintervalo [ti , ti +1 ] es independiente de la integración en
los otros subintervalos; por lo tanto, estas integraciones se pueden realizar en
paralelo. Las soluciones vienen dadas por las operaciones recursivas de las
soluciones elementales de la ecuación ( 2.56 ).
Este método se puede aplicar a EDMRs con coeficientes periódicos ([SpGu79]). Si
la longitud de los subintervalos es múltiplo del periodo y se elige la misma
condición inicial X ni para cada subintervalo, entonces únicamente es necesario
calcular X n (t , ti ) , Φ n (t , ti ) y Ο n (t , ti ) en el primer subintervalo. La solución en los
siguientes subintervalos están dados por la siguiente fórmula recursiva
( 2.60 )
X ((i + 1)∆ ) = X n (∆ ) +Φ n (∆ )[I n + X (i∆ )Ο n (∆)] X (i∆ )Φ T (∆) ,
−1
siendo X (k∆ ) = X (k ,0 ) y ∆ = t k +1 − t k .
•
La ecuación anterior se puede aplicar también a EDMRs con coeficientes
constantes.
69
Capítulo 2: Estado del Arte
•
Desde un punto de vista computacional, el cálculo de X n (t , ti ) , Φ n (t , ti ) y Ο n (t , ti )
es costoso puesto que se debe resolver un sistema de ecuaciones en derivadas
parciales no lineal.
2.4.3.4 Método Basado en la Ecuación Algebraica de Riccati (EAR)
Este método ([AnMo71]) se aplica a la EDMR simétrica
X ' = G T G + XA + AT X − XHH T X , t ≥ 0 ,
( 2.61 )
X (0) = X 0 ,
siendo ( A, H ) estabilizable, (G, A) observable y X 0 matriz definida positiva.
Lema 4 ([Wonh68])
Si ( A, H ) es estabilizable y (G, A) es completamente observable, entonces la EAR
Q + XA + AT X − XRX = 0
( 2.62 )
tiene una única solución definida positiva de manera que el sistema en bucle cerrado
definido por
K = A − RX
es asintóticamente estable.
Si se aplica el lema anterior, considerando X la solución definida positiva de la EAR
G T G + XA + AT X − XHH T X = 0 ,
( 2.63 )
entonces, utilizando las ecuaciones ( 2.61 ) y ( 2.63 ) y llamando A = A − HH T X , se
tiene que
( 2.64 )
d
( X − X ) = ( X − X ) A + A T ( X − X ) − ( X − X ) HH T ( X − X ) .
dx
Si X − X es no singular y se define Z (t ) = ( X − X ) −1 , entonces
⎡d
⎤
Z ' = −( X − X ) −1 ⎢ ( X − X )⎥ ( X − X ) −1 ,
⎣ dx
⎦
por lo que la ecuación ( 2.64 ) se reduce a
( 2.65 )
− Z ' = A Z + ZA T − HH T , Z (0) = ( X 0 − X ) −1 , t > 0 .
Puesto que A es estable, entonces existe una única solución definida positiva de la
Ecuación Algebraica Matricial de Lyapunov (EAML)
0 = A Z + ZA T − HH T .
( 2.66 )
Restando las ecuaciones ( 2.66 ) y ( 2.65 ), se obtiene la Ecuación Diferencial Matricial
de Lyapunov (EDML)
−
d
(Z − Z ) = A (Z − Z ) + (Z − Z ) A T , t > 0
dt
con ( X 0 − X ) −1 − Z como condición inicial. Por lo tanto,
70
Capítulo 2: Estado del Arte
[
]
[
]
Z − Z = e − A t ( X 0 − X ) −1 − Z e − A t ,
T
luego
(
)
−Z) e
X = X + Z + e − A t ( X 0 − X ) −1 − Z e − A
( 2.67 )
(
= X + e A t e A t Z e A t + ( X 0 − X ) −1
T
T
T
t
−1
−1
At
.
Una desventaja de este método es el elevado coste computacional del cálculo de X , Z
y de la exponencial matricial que aparece en la ecuación ( 2.67 ). Una versión de este
método puede encontrase en [Laub82].
2.4.3.5 Método de Leipnik
Este método, debido a Leipnik ([Leip85]), permite resolver EDMRs simétricas con
coeficientes constantes.
Lema 5 ([Leip85])
Sean C y D matrices cuadradas y
⎡C D ⎤
N =⎢
⎥ ( N matriz bisimétrica),
⎣D C ⎦
entonces
⎡E
Nn = ⎢
⎣F
F⎤
,
E ⎥⎦
siendo
E = 0.5[(C + D) n + (C − D) n ] ,
F = 0.5[(C + D) n − (C − D) n ] .
Sea la EDMR simétrica con coeficientes constantes
( 2.68 )
X ' = Q + XA + AT X − XRX , X (0) = X 0 , t ≥ 0 ,
siendo X 0 matriz definida positiva.
Si se realiza la transformación
( 2.69 )
X = Z T X 1Z + H ,
siendo H simétrica, entonces ( 2.68 ) queda como
( 2.70 )
X 1' = Q1 + X 1 A1 + A1T X 1 − X 1 R1 X 1 , X 1 (0) = Z −T ( X 0 − H ) Z −1 , t > 0 .
siendo
A1 = Z ( A − RH ) Z −1 ,
R1 = ZRZ T ,
Q1 = Z −T (Q + HA + AT H − HRH ) Z −1 .
71
Capítulo 2: Estado del Arte
Como consecuencia de una propiedad descrita en [Copp74], se tiene que si el par ( A, R )
es controlable, entonces existen la solución maximal X + y la solución minimal X − de
la EAR asociada a la EDMR ( 2.68 ). Eligiendo Z y H de manera que
ZTZ =
H=
1
(X + − X −) ,
2
1
(X + + X −) ,
2
entonces
A1T = − A1 , R1 = Q1 .
Por lo tanto, la ecuación ( 2.70 ) se reduce a
( 2.71 )
X 1' = − A1 X 1 + X 1 A1 − X 1R1 X 1 , X 1 (0) = Z −T ( X 0 − H ) Z −1 , t > 0 .
Utilizando el Teorema 2.12, se tiene que el EDML asociado a la EDMR anterior es
( 2.72 )
d ⎡U ⎤ ⎡ A1 − R1 ⎤ ⎡U ⎤
,
=
dt ⎢⎣V ⎥⎦ ⎢⎣− R1 A1 ⎥⎦ ⎢⎣V ⎥⎦
⎡U (0)⎤ ⎡ I n ⎤
⎢V (0) ⎥ = ⎢ X (0)⎥ .
⎣
⎦ ⎣ 1 ⎦
Puesto que la matriz coeficiente de la ecuación ( 2.72 ) es bisimétrica, entonces se puede
aplicar el Lema 5, con lo que
e
⎡ A1
⎢
⎣ − R1
− R1 ⎤
⎥t
A1 ⎦
⎡ E (t ) E 2 (t )⎤
=⎢ 1
⎥,
⎣ E 2 (t ) E1 (t ) ⎦
donde
[
]
[
]
E1 (t ) =
1 ( A1 + R1 ) t
e
+ e( A1 − R1 )t ,
2
E 2 (t ) =
1 ( A1 − R1 ) t
e
− e ( A1 + R1 ) t .
2
La solución X 1 se obtiene a partir de la fórmula ( 2.28 ) y X a partir de ( 2.69 ).
Una ventaja de este método es que la solución X se puede obtener calculando
exponenciales de matrices de tamaño n . Sin embargo, este método requiere el cálculo
de las soluciones maximal y minimal de una EAR. Además, si estas soluciones están
cercanas entre sí, entonces la matriz Z puede estar mal condicionada.
2.4.3.6 Método de la Raíz Cuadrada
Este método, debido a Morf, Ley y Kailath ([MoLK78]), es aplicable a la EDMR con
coeficientes variables
( 2.73 ) X ' (t ) = G T (t )G (t ) + X (t ) A(t ) + AT (t ) X (t ) − X (t ) H (t ) H T (t ) X (t ) , t 0 ≤ t ≤ t f ,
X (0) = X 0 ,
72
Capítulo 2: Estado del Arte
siendo X 0 matriz definida positiva. En tal caso, la solución X (t ) se puede comprobar
que es definida positiva (véase subapartado 2.4.3.8). Luego dicha solución se puede
expresar como
X (t ) = S T (t ) S (t ) ,
( 2.74 )
y la condición inicial como
X (t 0 ) = S T (t 0 ) S (t 0 ) ,
donde S (t ) (no singular) se puede elegir de manera que sea triangular inferior con
elementos positivos en la diagonal principal (factorización de Cholesky).
La EDMR ( 2.73 ) se convierte entonces en la ecuación
X ' (t ) = S 'T (t ) S (t ) + S T (t ) S ' (t )
= G T (t )G (t ) + S T (t ) S (t ) A(t ) + AT (t ) S T (t ) S (t ) − S T (t ) S (t ) H (t ) H T (t ) S T (t ) S (t ).
Multiplicando la ecuación anterior a la izquierda por S −T (t ) y a la derecha por S −1 (t ) ,
se obtiene
S −T (t ) S 'T (t ) + S ' (t ) S −1 (t ) = C (t ) ,
donde
C (t ) = G T (t )G (t ) + A (t ) + A T (t ) + H (t ) H T (t ) ,
siendo
A (t ) = S (t ) A(t ) S −1 (t ) , H (t ) = S (t ) H (t ) , G (t ) = G (t ) S −1 (t ) .
Puesto que S (t ) es triangular inferior, entonces S ' (t ) S −1 (t ) se puede elegir de manera
que coincida con la parte triangular inferior de la matriz C (t ) , es decir,
1
⎡
⎤
S ' (t ) = ⎢C L (t ) + C D (t )⎥ S (t ) , S (t 0 ) = S 0 ,
2
⎣
⎦
siendo C L (t ) la parte estrictamente triangular inferior de la matriz C (t ) y C D (t ) la
diagonal de la matriz C (t ) .
Una vez se ha calculado S (t ) , por ejemplo, mediante integración directa, X (t ) se puede
calcular a partir de la expresión ( 2.74 ).
Este método puede mejorar el condicionamiento del la EDMR ( 2.73 ), sin embargo,
puede tener problemas si la matriz S (t ) está mal condicionada.
2.4.3.7 Método de Rusnak
Este método, debido a Rusnak ([Rusn88]), se aplica a la EDMR con coeficientes
constantes definida por ( 2.61 ), suponiendo que ( A, H ) es estabilizable y (G, A)
detectable. La solución analítica de la ecuación ( 2.61 ) viene dada por la expresión
−1
t
⎡
⎤
T
K ( t −t o )
( 2.75 ) X (t ) = X + e
( X 0 − X ) ⎢ I n + ∫ e K (τ −t0 ) Re K (τ −t0 ) dτ ( X 0 − X )⎥ e K (t −to ) , t ≥ t 0 ,
⎢⎣
⎥⎦
t0
T
73
Capítulo 2: Estado del Arte
donde X es la única solución semidefinida positiva de la EAR ( 2.63 ) y K = A − RX .
Si se considera un tamaño de paso constante e igual a ∆t , entonces, teniendo en cuenta
( 2.75 ), se obtiene la siguiente fórmula recursiva
T
Xˆ l +1 = e K ∆t Xˆ l ( I n + DXˆ l ) −1 e K∆t , l = 0,1,2,L ,
siendo
Xˆ 0 = X 0 − X ,
Xˆ n = X (t n ) − X
y
∆t
D = ∫ e Kτ Re K τ dτ .
T
0
Respecto de este método se pueden realizar dos puntualizaciones:
•
Puesto que la matriz D → 0 a medida que ∆t → 0 , entonces la matriz I n + DXˆ l
está bien condicionada para pequeños valores de ∆t .
•
Es necesario calcular la solución X de la EAMR ( 2.63 ) para poder obtener la
solución X (t ) de la ecuación ( 2.61 ).
2.4.3.8 Métodos Conservativos y Métodos Simplécticos
Más que un método, se trata de una familia de métodos que tienen en común la
conservación de la simetría y el carácter semidefinido positivo de la solución.
Teorema 2.15 ([DiEi94])
Sea la EDMR simétrica
( 2.76 ) X ' (t ) = A(t ) X (t ) + X (t ) AT (t ) − X (t ) B(t ) X (t ) + C (t ) , X (0) = X 0 , t ≥ 0 ,
en donde la condición inicial X 0 es una matriz simétrica semidefinida positiva,
entonces la solución X (t ) es simétrica y semidefinida positiva para todo t > 0 .
Además, si X ( s ) o C ( s) son definidas positivas para un cierto s ≥ 0 , entonces X (t ) es
definida positiva para todo t ≥ s .
Lo que se busca en estos métodos es aplicar algoritmos que preserven la propiedad de
que las soluciones encontradas para instantes de tiempo t > 0 conserven la propiedad de
ser definidas o semidefinidas positivas. En [DiEi94] se proponen varios de estos
métodos. El primero de ellos está basado en el método de linealización de EDMRs. Por
el Teorema 2.12, se tiene que la EDML asociada a la EDMR ( 2.76 ) es
( 2.77 )
C (t ) ⎤ ⎡Y (t ) ⎤
⎡Y ' (t ) ⎤ ⎡ A(t )
=
⎢ Z ' (t )⎥ ⎢ B(t ) − AT (t )⎥ ⎢ Z (t )⎥ ,
⎣
⎦ ⎣
⎦⎣
⎦
⎡Y (0) ⎤ ⎡ X 0 ⎤
⎢ Z (0)⎥ = ⎢ I ⎥ ,
⎣
⎦ ⎣ ⎦
con
( 2.78 )
X (t ) = Y (t ) Z −1 (t ) ,
la solución de la EDMR ( 2.76 ).
74
Capítulo 2: Estado del Arte
Una aproximación consiste en utilizar métodos de discretización para resolver la EDML
( 2.77 ), y calcular entonces X (t ) mediante la expresión ( 2.78 ). Por ejemplo, si se
utilizan métodos de Gauss (aproximantes diagonales de Padé), entonces sus coeficientes
satisfacen ([Sanz92])
M ij = bi aij + b j a ji − bi b j = 0 , ∀i, j = 1, L , k ,
( 2.79 )
por lo que se trata de métodos Runge-Kutta simplécticos, siendo b j ≥ 0 .
Teorema 2.16 ([DiEi94])
La aplicación de un método Runge-Kutta que satisfaga ( 2.79 ) con b j ≥ 0 a la EDML
definida en ( 2.77 ) produce soluciones aproximadas que son simétricas y semidefinidas
positivas.
Otro método que se encuentra en [DiEi94] consiste en expresar la EDMR ( 2.76 ) como
X ' (t ) = [ A(t ) − 0.5 X (t ) B(t )] X (t ) + X (t )[ A(t ) − 0.5 X (t ) B(t )]T + C (t ) .
La solución de la ecuación anterior es
t
( 2.80 )
X (t ) = Φ (t , s ) X ( s )Φ T (t , s ) + ∫ Φ (t ,τ )C (τ )Φ T (t ,τ )dτ ,
s
siendo Φ(t ,τ ) la solución de la EDML
( 2.81 )
∂Φ (t ,τ )
= [A(t ) − 0.5 X (t ) B(t )]Φ (t ,τ ) , Φ (τ ,τ ) = I n .
∂t
Para obtener una solución aproximada X k +1 que sea definida positiva, a partir de otra
X k que sea definida positiva, se pueden seguir los siguientes pasos:
•
•
•
Aplicar cualquier método para resolver ( 2.81 ).
Obtener las correspondientes soluciones, utilizando cualquier otro método.
Utilizar una fórmula en la que los pesos para la integración de ( 2.80 ) sean
positivos.
Si se resuelve la ecuación ( 2.81 ) por la regla implícita del punto medio y se utiliza la
regla trapezoidal para calcular X (t ) en ( 2.80 ), se obtiene un método de segundo grado.
La regla del punto medio para ( 2.81 ) requiere una aproximación de Ο(h 2 ) para
X (t k + h / 2) . El esquema resultante es
−1
Φ k +1 / 2
⎡
h⎛
1
h⎛
1
⎞⎤ ⎡
⎞⎤
= ⎢ I − ⎜ Ak − Bk X k ⎟⎥ ⎢ I n + ⎜ Ak − Bn X k ⎟⎥ ,
4⎝
2
4⎝
2
⎠⎦ ⎣
⎠⎦
⎣
h ⎤
h
⎡
X k +1 / 2 = Φ k +1 / 2 ⎢ X k + C k ⎥ Φ Tk +1 / 2 + C k +1 / 2 ,
4 ⎦
4
⎣
−1
⎡
1
1
h⎛
h⎛
⎞⎤ ⎡
⎞⎤
Φ k = ⎢ I − ⎜ Ak +1 / 2 − Bk +1 / 2 X k +1 / 2 ⎟⎥ ⎢ I + ⎜ Ak +1 / 2 − Bk +1 / 2 X k +1 / 2 ⎟⎥ ,
2⎝
2
2⎝
2
⎠⎦ ⎣
⎠⎦
⎣
75
Capítulo 2: Estado del Arte
h ⎤
h
⎡
X k +1 = Φ k ⎢ X k + C k ⎥ Φ Tk + C k +1 .
2 ⎦
4
⎣
Un estudio más completo sobre métodos simplécticos y su aplicación a la resolución de
EDMRs que conserven la simetría y la positividad de la solución pueden encontrarse en
[SaCa94] o [Mart99].
2.4.3.9 Métodos BDF para EDMRs de gran Escala
En [BeMe04] se sugiere resolver EDMRs de gran escala mediante el método NewtonADI (Alternating Directions Implicit) de rango pequeño ([Benn02], [Benn02]). Estas
ecuaciones proceden de la semidiscretización de problemas de control óptimo de
ecuaciones en derivadas parciales de tipo parabólico hiperbólico como, por ejemplo, la
ecuación de calor, la ecuación de ondas, etc.
Sea la EDMR simétrica
X ' (t ) = Q(t ) + X (t ) A(t ) + AT (t ) X (t ) − X (t ) RX (t ) , t0 ≤ t ≤ t f ,
X (t0 ) = X 0 .
Aplicando el método BDF y reagrupando adecuadamente los términos de la ecuación,
se tiene obtiene la EAMR
r
( 2.82 ) hβ Qk + ∑ α j X k − j + (hβAk − 0.5 I n )T X k + X k (hβ Ak − 0.5 I n ) − X k (hβ Rk ) X k = 0 .
j =1
Suponiendo que
Qk = CkT Ck , Ck ∈ ℜ pxn ,
Rk = Bk BkT , Bk ∈ ℜnxm ,
X k = Z k Z kT , Bk ∈ ℜ nxz k ,
la EAMR ( 2.82 ) se puede escribir como
( 2.83 )
Cˆ kT Cˆ k + Aˆ kT Zˆ k Zˆ kT + Zˆ k Zˆ kT Aˆ k − Zˆ k Zˆ kT Bˆ k Bˆ kT Zˆ k Zˆ kT = 0 ,
siendo
Aˆ k = hβAk − 0.5 I n ,
Bˆ k = hβ Bk ,
Cˆ k = [ hβ Ck , α1 Z k −1 ,L, α r Z k − r ] .
Si, por simplicidad de notación, la ecuación ( 2.83 ) se escribe como
0 = F ( P) = C T C + AT P + PA − PBBT P = 0 ,
y se aplica el método de Newton, se tiene que
X l +1 = X l + N l ,
siendo
N l = ( F 'Pl ) −1 F ( Pl ) ,
76
Capítulo 2: Estado del Arte
con F 'Pl la derivada de Fréchet en la dirección Pl , definida como
F 'P : Q ⎯
⎯→( A − BBT P)Q + Q( A − BBT P)T .
Un paso de la iteración de Newton, partiendo de una matriz P0 , quedaría como
1
Al = A − BBT Pl .
2
3
Calcular N l resolviendo la ecuación de Lyapunov AlT N l + N l Al = − F ( Pl ) .
Pl +1 = Pl + N l .
Eligiendo un valor suficientemente pequeño del incremento de tiempo y eligiendo
P0 = X k −1 , se puede conseguir que Ai , i ≥ 0 , sean estables y que Pl converja
cuadráticamente a P* = X k +1 ≅ X (t k +1 ) .
Para que este método sea aplicable en problemas de gran escala es necesario utilizar un
método que resuelva ecuaciones de Lyapunov, de manera que explote la estructura
dispersa y de rango pequeño de las matrices Al .
En primer lugar, la ecuación de Lyapunov del paso se puede escribir como
AlT Pl +1 + Pl +1 Al = −C T C − Pl BBT Pl := −WlWlT .
Suponiendo Pl = Z l Z lT para rango( Z l ) << n y observando que rango(Wl ) ≤ m + p << n ,
entonces basta utilizar un método numérico que resuelva la ecuación de Lyapunov
anterior como, por ejemplo, una versión modificada del método ADI para ecuaciones de
Lyapunov que tengan la forma
FQ + QF T = −WW T ,
con F estable y W ∈ ℜ nxnw .
La iteración ADI se puede escribir como ([Wach88])
( F T + p j I n )Q j −1 = −WW T − Q j −1 ( F − p j I n ) ,
2
( F T + p j I n )QTj = −WW T − Q j −1 ( F − p j I n ) ,
2
donde p denota el complejo conjugado de p ∈C . Si los parámetros p j se eligen de
manera apropiada, entonces
lim Q j = Q
j →∞
con un razón de convergencia superlineal.
Comenzando la iteración anterior con Q0 = 0n y observando que para F estable,
entonces Q es semidefinida positiva, se tiene que
Q j = Y jY jT
para una cierta matriz Y j ∈ ℜ
nxr j
.
Sustituyendo esta factorización en la iteración anterior, reagrupando los términos y
combinando los dos pasos de la iteración, se obtiene una iteración ADI factorizada de
77
Capítulo 2: Estado del Arte
manera que en cada paso de la iteración se obtienen nw columnas de un factor de rango
completo Q , como a continuación se muestra:
V1 = − 2real( p1 ) ( F T + p1 I n ) −1W ; Y1 = V1
Para j = 2,3,....
1
2
real( p j )
2.1
Vj =
2.2
Y j = [Y j −1 V j ] .
real( p j −1 )
[ I n − ( p j + p j −1 )( F T + p j I n ) −1 ]V j −1
Si en la iteración anterior se alcanza la convergencia después de jmax pasos, entonces
Y jmax = [V1 , V2 , L , V jmax ] ∈ ℜ nxjmax nw ,
donde V j ∈ ℜnxnw .
Para un valor grande de n y uno pequeño de nw , se puede esperar que rj = jmax nw << n ,
de manera que se ha obtenido una aproximación Y j max de rango pequeño de un factor Y
de la solución, es decir, Q = YY T ≈ Y j max Y jTmax . En el caso en que rj = jmax nw sea grande,
se puede aplicar técnicas de compresión ([GuSA03]) para reducir el número de
columnas de la matriz Y j max , sin añadir un error significativo.
2.4.4 Aplicaciones
Las EDMRs tienen numerosas aplicaciones en ingeniería y en ciencias aplicadas como,
por ejemplo, control óptimo, filtrado óptimo, problemas de valores de contorno,
perturbaciones singulares, etc. En este apartado se describen algunas de ellas.
2.4.4.1 Problemas del Control Óptimo
En este subapartado se describe la aplicación de EDMRs al problema del sistema de
regulador óptimo lineal cuadrático.
Sea la EDL de orden n
x' (t ) = A(t ) x(t ) + B(t )u (t ) , x(t 0 ) = x0 , t 0 ≤ t ≤ t f ,
y el índice de coste cuadrático
tf
1
1
J = ∫ [ xT (t )Q(t ) x(t ) + u T (t ) R(t )u (t )]dt + x T (t f ) Sx(t f ) ,
2 t0
2
siendo
• x(t ) ∈ ℜ n , el vector de estados;
• A(t ) ∈ ℜ nxn , la matriz de estados;
• B(t ) ∈ ℜ nxm , la matriz de entradas (controles);
• u (t ) ∈ ℜ m , el vector de entradas (controles);
• J ∈ ℜ , el índice de coste;
78
Capítulo 2: Estado del Arte
• Q(t ) ∈ ℜ nxn semidefinida positiva, la matriz de pesos correspondientes a los
estados;
• R (t ) ∈ ℜ mxm definida positiva, la matriz de pesos correspondientes a los
controles;
y
• S ∈ ℜ nxn semidefinida positiva, la matriz de pesos correspondientes al valor
final.
El objetivo es determinar el control óptimo u (t ) que minimice el valor de J . Puede
demostrarse ([Kalm61]) que la ley de control óptimo u (t ) viene dada por
u (t ) = − R −1 (t ) B T (t ) P(t ) x(t ) , t 0 ≤ t ≤ t f ,
( 2.84 )
y que la matriz del sistema en bucle cerrado resulta ser
( 2.85 )
K (t ) = A(t ) − B(t ) R −1 (t ) B T (t ) P(t ) , t 0 ≤ t ≤ t f ,
donde P(t ) satisface la EDMR
( 2.86 ) P' (t ) = − AT (t ) P(t ) − P(t ) A(t ) + P(t ) B(t ) R −1 (t ) BT (t ) P(t ) − Q(t ) , t 0 ≤ t ≤ t f
P (t f ) = S .
2.4.4.2 Problemas de Filtrado y Estimación
En este subapartado se describe la aplicación de EDMRs al problema de estimación de
mínimos cuadrados de sistemas lineales en tiempo continuo. En este caso x(t ) ∈ ℜ n es
un vector generado aleatoriamente por la EDL
x' (t ) = F (t ) x(t ) + G (t )u (t ) , E [x(t0 )] = x0 ,
siendo E [x ] el valor esperado de x(t ) , y la señal observada z (t ) ∈ ℜ p viene dada por
z (t ) = H (t ) x(t ) + v(t ) .
Los vectores u (t ) ∈ ℜ m y v(t ) ∈ ℜ p corresponden a ruidos blancos independientes con
medias igual a 0 y matrices de covarianza definidas por las expresiones
cov[u (t ), u (τ )] = Q(t )δ (t − τ ) ,
cov[v(t ), v(τ )] = R (t )δ (t − τ ) ,
cov[u (t ), v(τ )] = 0 ,
para todo t y τ , siendo Q(t ) ∈ ℜ nxn semidefinida positiva y R (t ) ∈ ℜ nxn definida
x (t1 | t ) de x(t1 ) a partir de los datos
positiva. El objetivo es encontrar una estimación ~
observados {z (τ ), t 0 ≤ t ≤ t} , de manera que
E[|| x(t1 ) − ~
x (t1 | t ) || 22 ] , t1 ≥ t ,
tenga un valor mínimo.
79
Capítulo 2: Estado del Arte
x (t | t ) está
Para t1 = t puede demostrarse ([KaBu61]) que la estimación óptima ~
generada por el sistema lineal dinámico
d~
x (t | t )
= F (t ) ~
x (t | t ) + K (t ) ~
z (t | t ) , ~
x (t 0 | t 0 ) = x0 ,
dt
~z (t | t ) = z (t ) − H (t ) ~
x (t | t ) .
La matriz de ganancias K (t ) viene dada por la expresión
K (t ) = P(t ) H T (t ) R −1 (t ) ,
siendo
P (t ) = cov[x(t ) − ~
x (t | t ), x(t ) − ~
x (t | t )]
la solución de la EDMR
P' (t ) = F (t ) P(t ) − P(t ) F T (t ) − P(t ) H T (t ) R −1 (t ) H (t ) P(t ) + G (t )Q(t )G T (t ) ,
P (t 0 ) = P0 = cov[x(t 0 ) − x0 , x(t 0 ) − x0 ] , t ≥ t 0 .
2.4.4.3 Sistemas de Parámetros Distribuidos
El siguiente ejemplo muestra la aplicación de EDMRs al problema de control óptimo en
sistemas de parámetros distribuidos ([Hunt79]). Sea el sistema parabólico de parámetros
distribuidos
∂x( y, t ) ∂ 2 x( y, t )
=
+ u ( y, t ) , t 0 ≤ t ≤ t f , 0 ≤ y ≤ L ,
∂y
∂y 2
con condiciones de contorno
∂x(0, t )
∂x( L, t )
= 0,
= 0,
∂t
∂y
y la condición inicial
x( y,0) = f ( y ) .
El objetivo es encontrar un control óptimo u (t ) de manera que el funcional
tf L
J=
(
)
1
qx 2 ( y, t ) + ru 2 ( y, t ) dydt ,
∫
∫
200
tenga un valor mínimo.
Si se utiliza una fórmula en diferencias centrales que aproxime
∂2x
y se considera
∂y 2
∆y = L /(n + 1) , se obtiene la EDL
( 2.87 )
x' (t ) = Ax(t ) + u (t ) ,
donde
80
Capítulo 2: Estado del Arte
0
⎡− 2 2
⎢ 1 −2 1
⎢
⎢0
1 −2
1 ⎢
A=
M
M
M
(∆y ) 2 ⎢
⎢0
0
0
⎢
0
0
⎢0
⎢0
0
0
⎣
L
O
O
L
L
L
0
0
0⎤
0
0
0 ⎥⎥
0
0
0⎥
⎥
O M
M ⎥ ∈ ℜ ( n+ 2) x ( n + 2) .
−2 1
0⎥
⎥
1 −2 1 ⎥
0
2 − 2⎥⎦
El vector de estados x(t ) es igual a
[ x0 (t ), x1 (t ),L, xn +1 (t )]T ,
donde x i (t ) = x(i∆y, t ) , i = 0,1, L , n + 1 .
El vector de control u (t ) es igual a
[u0 (t ), u1 (t ),L, un +1 (t )]T ,
donde ui (t ) = u (i∆y, t ) , i = 0,1, L , n + 1 .
Con la aproximación anterior y utilizando la regla trapezoidal para la integración de y ,
el funcional de coste se convierte en
tf
( 2.88 )
∆y
J=
[ xT (t )Qx(t ) + u T (t ) Ru (t )]dt ,
∫
2 0
donde
Q R
= = diag (0.5, 1, L, 1, 0.5) .
q r
El procedimiento estándar de optimización para ( 2.87 ) y ( 2.88 ) consiste en resolver
hacia atrás la EDMR ( 2.86 ), siendo P(t f ) = 0 . El control óptimo y la trayectoria de
estado óptima están gobernados por las ecuaciones ( 2.84 ) y ( 2.85 ), respectivamente.
2.4.4.4 Reducción de Orden y Desacoplamiento
La reducción de orden y desacoplamiento de sistemas lineales, vía transformaciones de
Riccati ([Chan69], [Sibu66], [SBIK76]), ha demostrado ser una potente herramienta
analítica utilizada en matemáticas e ingeniería. Sea la EDL
( 2.89 )
d ⎡u (t )⎤ ⎡− A(t ) R(t )⎤ ⎡u (t )⎤ ⎡ f (t )⎤
=
+
,
dt ⎢⎣ v(t ) ⎥⎦ ⎢⎣ Q(t ) B(t )⎥⎦ ⎢⎣ v(t ) ⎥⎦ ⎢⎣ g (t ) ⎥⎦
donde u (t ) ∈ ℜ n , v(t ) ∈ ℜ m ,
Q(t ) ∈ ℜ mxn y B (t ) ∈ ℜ mxm .
f (t ) ∈ ℜ n ,
⎡u (t0 )⎤ ⎡u0 ⎤
⎢ v(t ) ⎥ = ⎢ v ⎥ , t ≥ t 0 ,
⎣ 0 ⎦ ⎣ 0⎦
g (t ) ∈ ℜ m ,
A(t ) ∈ ℜ nxn ,
R (t ) ∈ ℜ nxm ,
Esta ecuación se puede reducir a un sistema triangular superior a bloques
( 2.90 )
0 nxm ⎤ ⎡ f (t )⎤
R (t )
⎤ ⎡uˆ (t )⎤ ⎡ I n
d ⎡uˆ (t )⎤ ⎡ R (t ) X (t ) − A(t )
,
+⎢
=⎢
⎥
⎢
⎥
⎥
⎢
0
B (t ) − X (t ) R (t )⎦ ⎣ vˆ(t ) ⎦ ⎣ X (t ) I m ⎥⎦ ⎢⎣ g (t ) ⎥⎦
dt ⎣ vˆ(t ) ⎦ ⎣
81
Capítulo 2: Estado del Arte
0 nxm ⎤ ⎡u0 ⎤
⎡uˆ (t 0 )⎤ ⎡ I n
=
⎢ vˆ(t ) ⎥ ⎢− X (t ) I ⎥ ⎢ v ⎥ , t ≥ t 0 ,
0
m ⎦⎣ 0 ⎦
⎣ 0 ⎦ ⎣
mediante la transformación
0 nxm ⎤ ⎡uˆ (t )⎤
⎡u (t )⎤ ⎡ I n
=
⎢ v(t ) ⎥ ⎢ X (t ) I ⎥ ⎢ vˆ(t ) ⎥ ,
m ⎦⎣
⎦
⎦ ⎣
⎣
siendo X (t ) la solución de la EDMR
X ' (t ) = Q(t ) + X (t ) A(t ) + B(t ) X (t ) − X (t ) R(t ) X (t ) , t0 ≤ t ≤ t f ,
X (t 0 ) = X 0 ,
donde la condición inicial X 0 se puede elegir arbitrariamente.
Por otra parte, la ecuación ( 2.90 ) puede reducirse a la ecuación
( 2.91 )
0 nxm
⎤ ⎡u (t )⎤
d ⎡u (t )⎤ ⎡ R (t ) X (t ) − A(t )
=⎢
⎢
⎥
0 mxn
B (t ) − X (t ) R (t )⎥⎦ ⎢⎣ v (t ) ⎥⎦
dt ⎣ v (t ) ⎦ ⎣
⎡ I + S (t ) X (t ) − S (t )⎤ ⎡ f (t )⎤
+⎢ n
, t ≥ t0 ,
I m ⎥⎦ ⎢⎣ g (t ) ⎥⎦
⎣ − X (t )
( 2.92 )
⎡u (t 0 )⎤ ⎡ I m + S (t 0 ) X (t0 ) − S (t 0 )⎤ ⎡u0 ⎤
,
⎢ v (t ) ⎥ = ⎢
− X (t0 )
I n ⎥⎦ ⎢⎣ v0 ⎥⎦
⎣ 0 ⎦ ⎣
mediante la transformación
⎡uˆ (t )⎤ ⎡ I n
⎢ vˆ(t ) ⎥ = ⎢0
⎦ ⎣ mxn
⎣
S (t )⎤ ⎡u (t )⎤
.
I m ⎥⎦ ⎢⎣ v (t ) ⎥⎦
La matriz S (t ) resulta ser la solución de la Ecuación Diferencial Matricial de Sylvester
(EDMS)
S ' (t ) = R(t ) + [− A(t ) + R(t ) X (t )]S (t ) − S (t )[ B(t ) − X (t ) R(t )] , t0 ≤ t ≤ t f ,
S (t 0 ) = S 0 ,
donde S 0 puede elegirse de manera arbitraria. Este proceso puede adicionalmente
llevarse a cabo desacoplando los sistemas diagonales a bloques individuales del sistema
desacoplado ( 2.91 ). El precio pagado por esta reducción es el cálculo de la solución de
las anteriores ecuaciones matriciales diferenciales de Sylvester y Riccati.
2.4.4.5 Resolución de Problemas de Contorno
Sea el problema de contorno definido como
( 2.93)
⎡ y1' (t ) ⎤ ⎡ A11
⎢ ' ⎥=⎢
⎣ y2 (t )⎦ ⎣ A21
[B11
A12 ⎤ ⎡ y1 (t ) ⎤
, t0 ≤ t ≤ t f ,
A22 ⎥⎦ ⎢⎣ y2 (t )⎥⎦
⎡ y (t ) ⎤
B12 ] ⎢ 1 0 ⎥ = β1 ,
⎣ y 2 (t 0 )⎦
82
Capítulo 2: Estado del Arte
donde A11 ∈ ℜ nxn , A12 ∈ ℜ nxm , A21 ∈ ℜ mxn , A22 ∈ ℜ mxm , B11 ∈ ℜ mxn , B12 ∈ ℜ mxm ,
B21 ∈ ℜ nxn , B22 ∈ ℜ nxm , β 1 ∈ ℜ m , β 2 ∈ ℜ n , y1 ∈ ℜ n y y 2 ∈ ℜ m .
Este problema de contorno se puede desacoplar en un problema de valores iniciales y
otro de valores finales mediante el cambio de variable definido como
⎡ w1 (t ) ⎤
⎡ y1 (t ) ⎤
−1
⎢ w (t )⎥ = S (t ) ⎢ y (t )⎥ ,
⎣ 2 ⎦
⎣ 2 ⎦
siendo
0 nxm ⎤
⎡ I
∈ ℜ ( n + m ) x ( n + m ) , X (t ) ∈ ℜ mxn ,
S (t ) = ⎢ n
⎥
⎣ X (t ) I m ⎦
de manera que
⎡ w1' (t ) ⎤
⎡ w1 (t ) ⎤
⎢ ' ⎥ = A (t ) ⎢
⎥,
w
t
(
)
w
t
(
)
⎣ 2 ⎦
⎣ 2 ⎦
( 2.94 )
con
⎡ A + A12 X (t )
A (t ) = S −1 (t ) AS (t ) − S −1 (t ) S ' (t ) = ⎢ 11
0 mxn
⎣
A12
⎤
.
A22 − X (t ) A12 ⎥⎦
Para que esto sea posible (véase [KeLe82], [DESS82]) es necesario que X (t ) sea la
solución de la EDMR
( 2.95 )
X ' (t ) = A21 + A22 X (t ) − X (t ) A11 − X (t ) A12 X (t ) , t0 ≤ t ≤ t f ,
X 0 = X (t 0 ) = − B12−1 B11 ,
siendo
( 2.96 )
[0
B12 ]w(t 0 ) = β1 , [ B21 + B22 X (t f ) B22 ]w(t f ) = β 2 .
Por lo tanto, para resolver el problema de contorno ( 2.93 ) se siguen los siguientes
pasos:
1.
2.
Resolver la EDMR ( 2.95 ).
A partir de ( 2.94 ) se tiene las EDOs
w2' (t ) = [ A22 − X (t ) A12 ]w2 (t ) ,
w1' (t ) = [ A11 + A12 X (t )]w1 (t ) + A12 w2 (t ) .
Teniendo en cuenta las condiciones dadas en (2.97), se calcularía w2 desde t0
hasta t f y, a continuación, w2 (t ) desde t f hasta t0 .
3.
Calcular y (t ) = S (t ) w(t ) .
2.4.5 Software para la Resolución de EDMRs
En la actualidad, el único paquete de dominio público disponible para la resolución de
EDMRs es DRESOL (Differential Riccati Equations SOLver).
83
Capítulo 2: Estado del Arte
DRESOL se compone de un conjunto de subrutinas escritas en FORTRAN 77 para
datos de simple precisión. Básicamente, utiliza el método BDF ([Diec92]) de manera
que en cada paso del mismo se resuelve una Ecuación Algebraica Matricial de Riccati
(EAMR) mediante el método de Newton. Al utilizar el método de Newton es necesario
resolver una Ecuación Algebraica Matricial de Lyapunov (EAML) o de Sylvester
(EAMS), según sea simétrica o no simétrica la EDMR considerada. Basado en el
paquete LSODE ([Hind83]), DRSOL presenta mejoras sobre el anterior, respetando
algunos aspectos del mismo, como los heurísticos utilizados a la hora de elegir el orden
del método, la estimación del error local o la elección automática del tamaño de paso.
Este paquete data del año 1992, por lo que, en cierto modo, se encuentra actualmente
desfasado al utilizar la librería EISPACK ([SBDG76]) en lugar de la librería LAPACK,
sucesora de la anterior y con notables mejoras sobre la primera. En esta tesis se ha
realizado una implementación basada en este paquete ([AHIP05]), que aunque no
presenta los heurísticos anteriormente comentados en cuanto a la selección del orden del
método y del tamaño del paso, presenta notables mejoras al utilizar los núcleos
computaciones BLAS y LAPACK (véanse el Algoritmo 5.6 y el Algoritmo 5.7).
2.5 Conclusiones
En este capítulo se ha realizado una revisión del estado del arte concerniente,
fundamentalmente, a las tres áreas de investigación tratadas en esta tesis: cálculo de
Funciones de Matrices, resolución de EDOs y resolución de EDMRs.
En la primera sección se han descrito los métodos más relevantes para el cálculo de las
funciones matriciales más usuales. Posiblemente pueden existir otros métodos pero no
tienen la importancia de los descritos en esa sección. No se puede asegurar cual es el
mejor método, pues la eficiencia y precisión de cualquiera de ellos depende de la matriz
y de la función considerada. Como se puede fácilmente observar, los métodos son muy
dependientes de la función considerada aunque emergen dos métodos que se aplican en
muchas ocasiones y que, en general, suelen presentar buenas cualidades numéricas:
métodos basados en la descomposición real de Schur de una matriz y métodos basados
en las aproximaciones racionales de Padé. Se puede constatar, por todo el estudio
realizado, que en la actualidad se dispone de un número muy reducido de rutinas que
implementan funciones de matrices, a excepción de las funciones incorporadas en
MATLAB.
En la segunda sección se ha descrito brevemente la resolución de EDOs. Más que un
estado del arte se ha pretendido dar una visión general de su problemática, describiendo
aquellos métodos más usuales en la resolución de EDOs. Además, se ha presentado una
metodología de resolución de EDOs, basada en la linealización a trozos, que no siendo
muy utilizada en la actualidad parece que puede llegar a ser una alternativa fiable a los
métodos clásicos de resolución de EDOs. En la actualidad se dispone de numeroso
software para la resolución de EDOs tanto de dominio público como comercial.
En la última sección se ha realizado un exhaustivo estudio de los métodos de resolución
de EDMRs. Entre ellos se pueden destacar los métodos BDF, que pueden utilizarse
tanto en el caso general como en el caso de EDMRs simétricas, y los métodos
simplécticos, que solo se pueden utilizar para EDMRs simétricas. De hecho, las
aportaciones en los últimos años se dirigen, fundamentalmente, en esos dos caminos
aunque no hay que descartar las modificaciones de métodos clásicos de resolución de
EDMRs, sobre todo los que utilizan la linealización de EDMRs. No se dispone apenas
84
Capítulo 2: Estado del Arte
de software para la resolución de EDMRs, a pesar de que existen numerosos métodos
dedicados a ellas.
Es razonable pensar, por todo lo comentado en este capítulo, que es posible desarrollar
un software de calidad y de altas prestaciones que cubra las numerosas lagunas que en
la actualidad existen en relación al cálculo de Funciones de Matrices y la resolución de
EDOs y EDMRs.
85
Capítulo 3: Cálculo de Funciones de Matrices
Capítulo 3 Cálculo de Funciones de Matrices
3.1 Resumen de Contenidos
En este capítulo se describen los algoritmos desarrollados en esta tesis para el cálculo de
Funciones de Matrices. Estos algoritmos se basan en las dos metodologías más
utilizadas para abordar este tipo de problemas: aproximaciones de Padé y la
descomposición real de Schur de una matriz. El interés de aplicar metodologías
generales de resolución de problemas computacionales reside en utilizar el mismo
código para diferentes tipos de problemas; en nuestro caso, utilizar el mismo código
para el cálculo de diferentes Funciones de Matrices. Por tanto, es necesario diseñar
algoritmos, basados en estas metodologías, que permitan calcular Funciones de
Matrices cualesquiera.
Como se ha descrito en el Capítulo 2, las aproximaciones de Padé son muy utilizadas en
el cálculo de Funciones de Matrices: función exponencial, función logarítmica y función
coseno. El algoritmo general basado en esta metodología consiste, básicamente, en
reducir adecuadamente la norma de la matriz, determinar el polinomio de Taylor de
grado 2l + 1 de la función, determinar los polinomios de grado l asociados a la
aproximación diagonal de Padé, aplicar el algoritmo básico de Padé a la matriz obtenida
en el primer paso y, por último, aplicar las transformaciones inversas de las aplicadas en
la primera etapa. Se podría pensar que lo que es apropiado, desde un punto de vista
computacional, para unas funciones (o matrices) también lo es para otras. Esto es así en
numerosas ocasiones pero no siempre. Por ello, es necesario adecuar algunas de las
etapas de estos algoritmos a la función (o matriz) considerada.
La otra metodología se basa en la forma real de Schur de una matriz. Los algoritmos
basados en esta metodología se caracterizan por ser, en general, muy precisos y
razonablemente eficientes. Estos algoritmos constan básicamente de dos etapas:
determinación de la descomposición real de Schur de la matriz y el cálculo de la función
de la matriz considerada a partir de su forma real de Schur.
Los algoritmos que se describen en este capítulo se han desarrollado para matrices
reales. La adaptación de los algoritmos basados en las aproximaciones diagonales de
Padé para matrices complejas es inmediata. La formulación de los algoritmos basados
en la forma de Schur de una matriz compleja es más sencilla que la correspondiente a la
forma real de Schur de matrices reales, pues en la primera se obtiene una matriz
triangular superior y en la segunda una matriz casi triangular superior.
Este capítulo está estructurado en cuatro secciones. En la segunda sección se describe,
en primer lugar, un algoritmo general para el cálculo de Funciones de Matrices basado
en los aproximantes diagonales de Padé. En segundo lugar se muestra la manera de
obtener los polinomios de la aproximación diagonal de Padé a partir del polinomio de
Taylor de grado 2l + 1 de la función considerada. En tercer lugar se analizan los
métodos más eficientes para calcular funciones racionales de matrices. Esta etapa
corresponde a una de las partes más costosas del algoritmo. Entre estos métodos se
analizan versiones de los métodos de Horner y Paterson-Stockmeyer-Van Loan. Se
87
Capítulo 3: Cálculo de Funciones de Matrices
utilizan dos descomposiciones de matrices para resolver el sistema lineal que aparece en
esos métodos: la descomposición LU y la descomposición QR. En cuarto lugar se aplica
el algoritmo general para el cálculo de las funciones matriciales exponencial,
logarítmica, potencia fraccionaria, seno y coseno. Para cada una de ellas se adapta
adecuadamente cada una de las etapas de algoritmo general.
En la tercera sección se describen los algoritmos para el cálculo de Funciones de
Matrices basados en la descomposición real de Schur de una matriz. Se comienza
describiendo un esquema genérico de los algoritmos basados en esa metodología. Estos
algoritmos obtienen f ( A) , con A matriz cuadrada real, realizando la descomposición
real de Schur de la matriz A y calculando a continuación f ( A) a partir de f (S ) ,
siendo S la forma real de Schur de A . Los algoritmos desarrollados para esa
metodología han sido:
• Algoritmo basado en la forma diagonal por bloques. Obtiene, a partir de la forma
real de Schur de la matriz A , una matriz B , diagonal por bloques, de manera que
los valores propios de bloques diagonales distintos están suficientemente
separados. La matriz f (B ) se obtiene calculando el valor de f sobre cada uno de
los bloques diagonales de B siendo, por tanto, f (B) también diagonal por
bloques. Finalmente, el valor de f ( A) se obtiene a partir de f (B) .
• Algoritmos basados en la Ecuación Conmutante orientados a columnas y a
diagonales. Estos algoritmos calculan f (S ) columna a columna o diagonal a
diagonal, determinando, por una parte, los bloques diagonales f ( S ii ) a partir de
los correspondientes S ii , y los no diagonales f ( S ij ) mediante la resolución de
una ecuación matricial de Sylvester.
• Algoritmos basados en la Ecuación Conmutante orientados a bloques. En este
caso se realiza una división a bloques de la matriz S utilizando esquemas
similares a los descritos en el caso anterior, pero teniendo en cuenta que los
bloques pueden tener ahora cualquier dimensión.
• Algoritmo basado en la agrupación en cluster de los valores propios de la matriz.
Cuando la matriz A , y por tanto la matriz S , tienen valores propios cercanos
entre sí, es conveniente agruparlos de manera que la resolución de la Ecuación
Conmutante se realice con precisión. Este algoritmo realiza reordenaciones en los
elementos de la matriz S , mediante transformaciones ortogonales de semejanza,
de manera que los valores propios cercanos se encuentren en un mismo bloque
diagonal. De este modo, la matriz S se puede estructurar por bloques y aplicar un
esquema semejante al utilizado en los algoritmos orientados a bloques.
• Algoritmo basado en los aproximantes diagonales de Padé. En este algoritmo se
calcula f ( S ) mediante la adaptación de los aproximantes diagonales de Padé a
matrices casi triangulares superiores.
La última sección está dedicada a resaltar los aspectos de mayor interés de los
algoritmos descritos, comentando brevemente las características de los mismos y
comparándolos de manera teórica.
Como ya se mencionó en la sección 1.1 del tema de introducción, la nomenclatura
utilizada para los algoritmos desarrollados en esta tesis es txxyyyzzz, donde t indica el
tipo de dato utilizado, xx indica el tipo de matriz, yyy indica el problema que resuelve y
88
Capítulo 3: Cálculo de Funciones de Matrices
zzz el método utilizado. El significado de los seis últimos caracteres para los algoritmos
que calculan Funciones de Matrices es:
• yyy: función considerada.
− Para los algoritmos que resuelven la Ecuación Conmutante por columnas,
diagonales, bloques de columnas y bloques de diagonales se tiene que yyy=fun
de manera que la función es pasada como argumento de entrada de la rutina.
− Para el resto de algoritmos se utiliza la siguiente nomenclatura:
ƒ yyy=fex, indica la función e A ;
ƒ yyy=fax, indica la función a A ;
ƒ yyy=fcs, indica la función cos A ;
ƒ yyy=fsn, indica la función sen A ;
ƒ yyy=fln, indica la función ln A ;
ƒ yyy=flg, indica la función log a A ;
ƒ yyy=fpt, indica la función Aa ;
ƒ yyy=fpf, indica la función
ƒ yyy=frc, indica la función
p
Aq , q / p ≠ 1/ 2 ;
A.
• zzz: método utilizado.
− dbe: indica que se utiliza el método DB (Denman and Beavers) con escalado
optimizado para el cálculo de la raíz cuadrada de una matriz;
− psv: indica que se utiliza el método de Paterson-Stockmeyer-Van Loan para el
cálculo de la aproximación diagonal de Padé;
− hlu: indica que se utiliza el método de Horner y la descomposición LU con
pivotamiento parcial de filas para la resolución del sistema de ecuaciones
lineales que aparece en la aproximación diagonal de Padé;
− hqr: indica que se utiliza el método de Horner y la descomposición QR para la
resolución del sistema de ecuaciones lineales que aparece en la aproximación
diagonal de Padé;
− plu: indica que se utiliza el método de Paterson-Stockmeyer-Van Loan y la
descomposición LU con pivotamiento parcial de filas para la resolución del
sistema de ecuaciones lineales que aparece en la aproximación diagonal de
Padé;
− pqr: indica que se utiliza el método de Paterson-Stockmeyer-Van Loan y la
descomposición QR para la resolución del sistema de ecuaciones lineales que
aparece en la aproximación diagonal de Padé.
− scc: algoritmo basado en la descomposición real de Schur de una matriz y en la
resolución de la ecuación conmutante orientada a columnas;
− scd: algoritmo basado en la descomposición real de Schur de una matriz y en la
resolución de la ecuación conmutante orientada a diagonales;
89
Capítulo 3: Cálculo de Funciones de Matrices
− sbc: algoritmo basado en la descomposición real de Schur de una matriz y en la
resolución de la ecuación conmutante orientada a bloques de columnas;
− sbd: algoritmo basado en la descomposición real de Schur de una matriz y en la
resolución de la ecuación conmutante orientada a bloques de diagonales;
− scl: algoritmo basado en la descomposición real de Schur de una matriz y en la
resolución de la ecuación conmutante, con agrupación de valores propios en
clusters;
− sph: algoritmo basado en la descomposición real de Schur de una matriz y en
los aproximantes diagonales de Padé, utilizando el método de Horner;
− spp: algoritmo basado en la descomposición real de Schur de una matriz y en
los aproximantes diagonales de Padé, utilizando el método de PatersonStockmeyer-Van Loan;
− sdb: algoritmo basado en la descomposición real de Schur de una matriz y en la
diagonalización a bloques de la matriz.
3.2 Algoritmos Basados en los Aproximantes Diagonales
de Padé
3.2.1 Esquema General
En este apartado se describe un esquema general, basado en los aproximantes
diagonales de Padé, que permite calcular funciones de matrices f ( A) , siendo A ∈ ℜ nxn
y f (z ) una función analítica definida sobre el espectro de A . Esta metodología se
puede aplicar a funciones analíticas entre las que se encuentran las siguientes:
• función exponencial,
• función logarítmica,
• potencias de exponente fraccionario,
• funciones trigonométricas seno y coseno.
Las etapas básicas de ese esquema se presentan a continuación:
1. Reducir la norma de la matriz.
Cuando se utilizan aproximantes de Padé es conveniente transformar la matriz A en
otra matriz A de norma más pequeña. Esto está motivado por el hecho de que los
desarrollos en serie de Taylor de la función y, por consiguiente, el desarrollo
correspondiente de Padé, están centrados en cero. En el caso de funciones de matrices,
los aproximantes diagonales de Padé permiten buenas aproximaciones siempre y
cuando la norma de la matriz A sea pequeña. Existen numerosos artículos en los que se
utiliza esta técnica:
•
Exponencial: [MoVa78], [MoVa03].
•
Logaritmo: [KeL289], [High01].
•
Coseno: [SeBl80].
90
Capítulo 3: Cálculo de Funciones de Matrices
2. Determinar los coeficientes del desarrollo de Taylor de la función.
En esta etapa se determina el polinomio de Taylor correspondiente a la función
considerada. Si se desea obtener una aproximación diagonal de Padé de orden (l , l ) ,
entonces el grado del polinomio de Taylor debe ser 2l + 1 .
3. Determinar los polinomios de la aproximación diagonal de Padé.
Hay muchos motivos que justifican el interés de utilizar aproximantes diagonales de
Padé ([MoVa78], [KeL289], [High01]), fundamentalmente porque permiten calcular
funciones de matrices con una precisión semejante a la de otros métodos pero con un
menor coste computacional. Aunque hay ciertos estudios sobre cuál puede ser el grado
óptimo de los polinomios de la aproximación de Padé, éste depende de la matriz y de la
función considerada. Como se comentó en el Capítulo 2, recientemente se han revisado
criterios teóricos, que hace algunos años se consideraban válidos, en cuanto a la
elección de ese grado para la exponencial de una matriz. Por ello, se ha considerado más
apropiado hacer variable ese grado para poder determinar de manera experimental cuál
puede ser su valor óptimo.
4. Aplicar el algoritmo básico de Padé a la matriz A obtenida en la primera etapa.
En esta etapa se aplica el método clásico de aproximantes de Padé, utilizando técnicas
que minimizan el número de operaciones (véase por ejemplo [PaSt73] o [VanL79]). El
aproximante diagonal de Padé aplicado a la matriz A se define como
r ( A ) = [q( A )]−1 p( A ) ,
siendo p y q los polinomios de grado l obtenidos a partir del polinomio de Taylor
a(x) de la función f (x) . En definitiva, f ( A ) se puede calcular aproximadamente
mediante la expresión
f ( A ) ≅ r ( A ) = [q( A )]−1 p( A ) .
5. Aplicar las transformaciones inversas de las aplicadas en la primera etapa.
En esta etapa se aplican las transformaciones necesarias a la matriz obtenida en la cuarta
etapa, de manera que se tengan en cuenta las transformaciones aplicadas sobre la matriz
A.
A continuación se presenta el algoritmo general que calcula funciones de matrices
mediante aproximantes diagonales de Padé. Para cada etapa del algoritmo se detalla la
el resultado obtenido después de haber aplicado los pasos necesarios.
91
Capítulo 3: Cálculo de Funciones de Matrices
Entradas: Matriz A ∈ ℜ nxn , grado l ∈ Z + de los polinomios de la aproximación
diagonal de Padé, función analítica f ( x) .
Salida:
1
2
3
4
5
Matriz B = f ( A) ∈ ℜ nxn .
Aplicar transformaciones que disminuyan || A || : A .
Encontrar el polinomio de Taylor de grado 2l + 1 de la función f ( x) : a( x) .
Encontrar los polinomios de grado l de la aproximación diagonal de Padé:
p ( x) , q ( x) .
Calcular la aproximación de Padé r ( x) = p( x) / q( x) sobre la matriz A :
B = r( A) .
Aplicar las transformaciones inversas de las aplicadas en la etapa 1 sobre la
matriz B : B .
Algoritmo 3.1: Algoritmo general para el cálculo de funciones de matrices basado en
los aproximantes diagonales de Padé.
3.2.2 Determinación de los Polinomios de la Aproximación
Diagonal de Padé
En este apartado se describe la manera de calcular los polinomios de grado l de la
aproximación diagonal de Padé de una función analítica f ( x) . Sea f ( x) una función
real que admite el desarrollo en series de potencias
∞
f ( x) = ∑ a k x k
k =0
con radio de convergencia R , y la aproximación racional de f (x)
r ( x) =
p ( x)
,
q ( x)
siendo
l
p( x) = p0 + p1 x + L + pl x l = ∑ pi x i ,
i =0
l
q ( x) = q0 + q1 x + L + ql x l = ∑ q j x j
j =0
y
f k ) (0) = r k ) (0) , k = 0,1,L,2l .
Considerando la función
z ( x) = f ( x)q ( x) − p ( x) =
⎞ l
⎛ 2l
⎞⎛ l
= ⎜ ∑ ak x k + s2l +1 ( x) ⎟⎜⎜ ∑ q j x j ⎟⎟ − ∑ pi x i =
⎝ k =0
⎠⎝ j = 0
⎠ i =0
l
⎞ l
⎛ 2l
⎞⎛ l
= ⎜ ∑ ak x k ⎟⎜⎜ ∑ q j x j ⎟⎟ − ∑ pi x i + s2l +1 ( x)∑ q j x j ,
j =0
⎝ k =0
⎠⎝ j = 0
⎠ i =0
92
Capítulo 3: Cálculo de Funciones de Matrices
se obtiene la expresión
( 3.1 )
l
⎞ l
⎛ 2l
⎞⎛ l
⎜ ∑ ak x k ⎟⎜⎜ ∑ q j x j ⎟⎟ − ∑ pi x i + s2l +1 ( x)∑ q j x j = z ( x) ,
j =0
⎝ k =0
⎠⎝ j = 0
⎠ i =0
cumpliéndose además que z k ) (0) = 0 , k = 0,1, L,2l .
Sustituyendo x por 0, se obtiene la ecuación
a0 q0 − p0 = 0 .
( 3.2 )
Derivando la expresión ( 3.1 ) l veces y sustituyendo x por 0, se obtienen las
ecuaciones
a1q0 + a0 q1 − p1 = 0,
( 3.3 )
M
al −1q0 + al −2 q1 + L + a1ql −2 + a0 ql −1 − pl −1 = 0,
al q0 + al −1q1 + L + a1ql −1 + a0 ql − pl = 0.
La ecuación ( 3.2 ) y las ecuaciones ( 3.3 ) se pueden expresar en forma matricial como
( 3.4 )
⎡ p 0 ⎤ ⎡ a0
⎢ p ⎥ ⎢a
⎢ 1⎥ ⎢ 1
⎢ M ⎥=⎢ M
⎢
⎥ ⎢
⎢ pl −1 ⎥ ⎢al −1
⎢⎣ pl ⎥⎦ ⎢⎣ al
0
a0
L
L
0
0
M
O
M
al − 2 L a 0
al −1 L a1
0 ⎤ ⎡ q0 ⎤
0 ⎥⎥ ⎢⎢ q1 ⎥⎥
M ⎥⎢ M ⎥ .
⎥⎢ ⎥
0 ⎥ ⎢ql −1 ⎥
a0 ⎥⎦ ⎢⎣ ql ⎥⎦
Hallando las derivadas de órdenes l + 1,L,2l de la expresión ( 3.1 ) y sustituyendo x
por 0, se tiene el sistema de ecuaciones lineales
al +1q0 + al q1 + al −1q2 + L + a2 ql −1 + a1ql = 0
⎫
al + 2 q0 + al +1q1 + al q2 + L + a3 ql −1 + a2 ql = 0 ⎪⎪
⎪
M
⎬.
a2l −1q0 + a2l −2 q1 + a2l −3 q2 + L + al ql −1 + al −1ql = 0⎪
⎪
a2l q0 + a2l −1q1 + a2l −2 q2 + L + al +1ql −1 + al ql = 0 ⎪⎭
Como se tienen l ecuaciones con l + 1 incógnitas, es necesario dar un valor a una de las
incógnitas. Tomando q 0 = 1 , entonces el sistema anterior se expresa en forma matricial
como
( 3.5 )
⎡ al
⎢a
⎢ l +1
⎢ M
⎢
⎢ a2l −2
⎢⎣ a2l −1
al −1
L
a2
al
L
a3
M
O
L
M
al
a 2 l −3
a2l −2 L al +1
a1 ⎤ ⎡ q1 ⎤ ⎡ − al +1 ⎤
a2 ⎥⎥ ⎢⎢ q2 ⎥⎥ ⎢⎢ − al + 2 ⎥⎥
M ⎥⎢ M ⎥ = ⎢ M ⎥ .
⎥⎢ ⎥ ⎢
⎥
al −1 ⎥ ⎢ql −1 ⎥ ⎢− a2l −1 ⎥
al ⎥⎦ ⎢⎣ ql ⎥⎦ ⎢⎣ − a2l ⎥⎦
Por lo tanto, los coeficientes de los polinomios p( x) y q( x) se obtienen resolviendo la
ecuación matricial ( 3.5 ) y realizando el producto que aparece en la expresión ( 3.4 ). El
algoritmo correspondiente a esta etapa se presenta a continuación.
93
Capítulo 3: Cálculo de Funciones de Matrices
[ p, q ] = dlacp(a)
Entrada: Vector a ∈ ℜ2l +1 que contienen a los coeficientes del polinomio de Taylor
a ( x) de grado 2l + 1 de f ( x) .
Salidas: Vectores p, q ∈ ℜ l +1 que contienen a los coeficientes de los polinomios
p( x) y q( x) , de grados igual a l , del aproximante diagonal de Padé de
f (x) .
1
2
Resolver la ecuación ( 3.5 ) para encontrar los coeficientes del polinomio q ( x) .
Calcular el producto matriz por vector que aparece en la expresión ( 3.4 ) para
encontrar los coeficientes del polinomio p( x) .
Algoritmo 3.2: Cálculo de los polinomios de la aproximación diagonal de Padé de una
función analítica f ( x) .
El coste aproximado del algoritmo anterior es
8l 3
+ l 2 flops.
3
3.2.3 Funciones Polinómicas y Racionales
En este apartado se detallan dos métodos que permiten calcular funciones racionales de
matrices. Esto es necesario para el cálculo de funciones de matrices basado en los
aproximantes de Padé (cuarta etapa del Algoritmo 3.1). Aunque la descripción se va a
realizar para funciones racionales, es fácil ver su extensión para el caso de funciones
polinómicas.
El primero se obtiene aplicando el método de Horner para funciones racionales.
B = dgefrahor ( p, q, A ) .
Entradas: Matriz A ∈ ℜ nxn , polinomios p( x) y q( x) de grado l ∈ Z + .
Salida:
1
2
3
4
Matriz B = r ( A ) , con r ( x) = p( x) / q( x) .
P = pl I n
Q = ql I n
Para i = l − 1 : −1 : 0
P = A P + pi I n
3.1
Q = A Q + qi I n
3.2
Calcular B resolviendo la ecuación QB = P
Algoritmo 3.3: Cálculo de la función racional de una matriz mediante el método de
Horner.
El coste aproximado del algoritmo anterior es
8⎤ 3
⎡
⎢⎣2(l − 1) + 3 ⎥⎦ n flops.
El segundo método está basado en el anidamiento de productos, denominado método de
Paterson-Stockmeyer-Van Loan, ([PaSt73], [VanL79]).
94
Capítulo 3: Cálculo de Funciones de Matrices
Si
l
p ( A ) = ∑ pi A i ,
i =0
entonces realizando agrupamientos de s términos, se tiene que
l
c
i =0
k =0
p ( A ) = ∑ p i A i = ∑ Bk ( A s ) k ,
( 3.6 )
con c = int(l / s ) y
⎧⎪ p sk I n + L + p sk +1 A + p sk + s −1 A s −1 , k = 0,1,L, c − 1
Bk = ⎨
.
⎪⎩ p sc I n + L + pl −1 A l − sc−1 + pl A l − sc , k = c
Por ejemplo, para l = 7 y s = 3 se tiene la siguiente expresión
p ( A ) = p0 I n + p1 A + p 2 A 2 + p3 A 3 + p 4 A 4 + p5 A 5 + p6 A 6 + p7 A 7
= p0 I n + p1 A + p2 A 2 + [ p3 + p4 A + p5 A 2 + p6 A 3 + p7 A 4 ] A 3
= p0 I n + p1 A + p2 A 2 + [ p3 + p4 A + p5 A 2 + ( p6 I n + p7 A ) A 3 ] A 3 .
De igual modo, para
l
q( A ) = ∑ qi A i
i =0
se obtiene una expresión similar a ( 3.6 ).
El algoritmo asociado a este método es el siguiente.
95
Capítulo 3: Cálculo de Funciones de Matrices
B = dgefrapsv( s, p, q, A ) .
Entradas: Factor s ∈ Z + de agrupamiento, polinomios p(x) y q(x) de grados
iguales a l ∈ Z + , matriz A ∈ ℜ nxn .
Salida:
1
2
3
4
5
6
7
Matriz r ( A ) , con r ( x) = p( x) / q( x) .
c = int(l / s)
r = mod(l , s )
Y1 = A
Para k = 2 : s
Yk = A Yk −1
4.1
Si r ≠ 0
P = pl −r I n + pl −r +1Y1 + L + pl Yr
5.1
5.2
Q = ql −r I n + ql − r +1Y1 + L + ql Yr
Si No
6.1
P = 0n
6.2
Q = 0n
Para k = 1 : c
7.1
P = ps ( c −k ) I n + L + ps ( c −k )+ s −1Ys −1 + Ys P
7.2
8
Q = qs ( c−k ) I n + L + qs ( c−k )+ s −1Ys −1 + Ys Q
Calcular r ( A ) resolviendo la ecuación Qr ( A ) = P .
Algoritmo 3.4: Cálculo de la función racional de una matriz mediante el método de
Paterson-Stockmeyer-Van Loan.
Para calcular Yk , k = 2,3,L, s , son necesarios 2( s − 1)n 3 flops.
Si se supone que s divide a l , entonces el coste del bucle 7 es
[
]
2l
⎡ 2n
⎤
2n 3 + 2sn 2 = 2n 2 l ⎢ + 2⎥ .
s
⎣ s
⎦
Por lo tanto, el coste aproximado del algoritmo anterior es
2nl
⎡ 2n
⎤
⎡
⎤
C ( s ) = 2( s − 1)n 3 + 2n 2 l ⎢ + 2⎥ = 2n 2 ⎢( s − 1)n +
+ 2l ⎥ flops.
s
⎦
⎣ s
⎦
⎣
El valor mínimo de la expresión anterior se obtiene cuando s = 2l .
Si se elige convenientemente el factor s de agrupamiento, se tiene que el algoritmo
basado en el método de Paterson-Stockmeyer-Van Loan tiene un menor coste
computacional que el algoritmo basado en el método de Horner, a costa de aumentar el
coste espacial
3.2.4 Cálculo de Funciones de Matrices
En este apartado se describe la aplicación del esquema descrito en el apartado 3.2.13.1 a
varias funciones de matrices.
96
Capítulo 3: Cálculo de Funciones de Matrices
3.2.4.1 Función Exponencial
Etapa 1: Reducir la norma de la matriz.
Las técnicas de reducción de la norma de una matriz, además de ser eficientes, deben
poderse corregir al final del algoritmo, para así obtener la exponencial de la matriz
inicial. Para la exponencial de una matriz se pueden aplicar tres técnicas que se pueden
utilizar conjuntamente:
• Minimizar la norma de la matriz A ante traslaciones del tipo A − tI n ([Ward77]).
• Equilibrar la matriz ([Ward77]).
• Escalar la matriz ([MoVa78], [MoVa03]).
La primera técnica consiste en minimizar la norma de la matriz A ante todas las
posibles traslaciones del tipo A − tI n . El cálculo que conduce a la obtención de la
traslación que minimiza a la norma de la matriz no es sencillo; sin embargo, se puede
aproximar dicha traslación calculando la media de los valores propios de la matriz.
Como la suma de los valores propios de una matriz coincide con la traza de la matriz,
entonces la media de los valores propios coincide con traza ( A) / n , por lo que se puede
considerar la transformación definida por la matriz A1 = A − tI n , siendo
t=
traza ( A)
.
n
La segunda técnica consiste en minimizar la 1-norma de la matriz A1 , ante todas las
posibles transformaciones de semejanza diagonales. Esta técnica, conocida con el
nombre de equilibrado de la matriz, consiste en encontrar una matriz diagonal D
invertible de manera que la 1-norma de la matriz
A2 = D −1 A1D
tenga el menor valor posible.
La tercera técnica consiste en el escalado de la matriz. Para ello se elige un valor de m
que sea potencia de 2 ( m = 2 j ), de manera que e A2 / m pueda calcularse con precisión y
eficiencia. Un criterio, comúnmente utilizado, consiste en elegir m de manera que la
matriz
A = A2 / m
tenga una norma menor que una cierta cantidad, por ejemplo, menor que 1.
En resumen, en esta etapa se aplican las siguientes transformaciones:
A ⇒ A1 = A − tI n ⇒ A2 = D −1 A1 D ⇒ A = A2 / m .
Etapa 2: Calcular el polinomio de Taylor.
Si se desea obtener una aproximación diagonal de Padé de orden (l , l ) , es necesario que
el polinomio de Taylor sea de grado 2l + 1 . En el caso de la función exponencial resulta
ser el polinomio
( 3.7 )
a ( x) = 1 + x +
1 2 1 3
1
x + x +L+
x 2 l +1 .
2!
3!
(2l + 1)!
97
Capítulo 3: Cálculo de Funciones de Matrices
Etapa 3: Calcular los polinomios de la aproximación diagonal de Padé.
Se aplica el Algoritmo 3.2 para encontrar, a partir del polinomio de Taylor de la
segunda etapa, los polinomios p(x) y q (x) de la función racional de Padé
r ( x) = p ( x) / q ( x) .
Etapa 4: Calcular la aproximación diagonal de Padé de la matriz A .
Se calcula B = r ( A ) utilizando, por ejemplo, el Algoritmo 3.4.
Etapa 5: Aplicar las transformaciones inversas de las realizadas en la etapa 1.
Los pasos que se deben realizar en esta etapa corresponden a las transformaciones
inversas de las aplicadas en la primera etapa; así pues, habrá que determinar las
siguientes transformaciones:
B = e A ⇒ B2 = e A2 ⇒ B1 = e A1 ⇒ B = e A .
La primera transformación consiste en calcular B2 a partir de B :
( )
B2 = e A2 = e mA = e A
m
= Bm , m = 2j .
La segunda transformación consiste en calcular B1 a partir de B2 :
−1
B1 = e A1 = e DA2 D = De A2 D −1 = DB2 D −1 .
Por último, la tercera transformación consiste en calcular B a partir de B1 :
B = e A = e A1 +tI n = e t e A1 = e t B1 , t = traza( A) / n .
El algoritmo que calcula la exponencial de una matriz mediante aproximantes
diagonales de Padé aparece a continuación.
98
Capítulo 3: Cálculo de Funciones de Matrices
B = dgefexpsv( s, l , A) .
Entradas: Factor de agrupamiento s ∈ Z + , grado l ∈ Z + de los polinomios de la
aproximación diagonal de Padé, matriz A ∈ ℜ nxn .
Salida:
1
2
3
4
5
Matriz B = e A ∈ ℜ nxn .
Reducir la norma de la matriz A :
1.1
t = traza ( A) / n
1.2
A1 = A − tI n
1.3
[ A2 , D ] = dgebal ( A1 ) (equilibrado de la matriz A1 )
j = max(0,1 + floor (log 2 || A ||∞ ))
1.4
A = A2 / 2 j
1.5
a = dlaexp(l ) (determina los coeficientes del polinomio de Taylor según la
expresión ( 3.7 ))
[ p, q] = dlacp(a) (determina los polinomios de la aproximación diagonal de
Padé mediante el Algoritmo 3.2)
B = dgefrapsv( s, p, q, A ) (calcula la aproximación diagonal de Padé mediante el
Algoritmo 3.4)
Aplicar las transformaciones inversas a las aplicadas en la primera etapa:
5.1
Calcular B2 = B m , m = 2 j , mediante potenciación sucesiva:
5.1.1 B2 = B
5.1.2 Para k = 1 : j
5.1.2.1 B2 = B22
5.2
B1 = DB2 D −1
5.3
B = e t B1
Algoritmo 3.5: Cálculo de la exponencial de una matriz mediante los aproximantes
diagonales de Padé.
El coste aproximado del algoritmo anterior es
3
2nl
⎤ 8l
⎡
2n 2 ⎢( s − 1)n +
+ l 2 flops.
+ 2l + nj ⎥ +
s
⎦ 3
⎣
3.2.4.2 Función Potencia Fraccionaria
En este subapartado se particulariza el Algoritmo 3.1 a la función
f ( x) = x c / d = d x c ,
con c, d ∈ Z .
Etapa 1: Reducir la norma de la matriz.
Para reducir la norma de A ∈ ℜ nxn se determina un entero positivo j de manera que la
matriz A1 = A1 / m , m = 2 j , tenga una norma cercana a 1. De este modo,
(
Ac / d = d Ac = d A1/ m
)
cm
= d A1
cm
= d (I n + A1 − I n )
cm
= d (I n + A )
cm
= (I n + A ) d ,
cm
99
Capítulo 3: Cálculo de Funciones de Matrices
siendo A = A1 − I n .
La matriz A1 se puede obtener mediante el cálculo sucesivo de raíces cuadradas,
(j
A1 = A1/ m = A1/ 2 = L A ,
j
utilizando la iteración DB con escalado descrita en el subapartado 2.2.3.3.
Resumiendo, en esta etapa se realizan las transformaciones siguientes:
A ⇒ A1 = A1 / m ⇒ A = A1 − I n .
Etapa 2: Calcular el polinomio de Taylor.
El polinomio de Taylor de grado 2l + 1 , que permite calcular la aproximación diagonal
de Padé de orden (l , l ) , de la función
( 3.8 ) a ( x) = 1 +
d
(1 + x )k
= (1 + x) k / d , con k = cm , es
k
k ⎛k
k
⎞ 2l +1
⎞ 2
⎛k
⎞⎛ k
⎞ ⎛k
x+
⎜ − 1⎟ x + L +
⎜ − 1⎟⎜ − 2 ⎟ L ⎜ − 2l ⎟ x .
1! d
2! d ⎝ d
(2l + 1)!d ⎝ d
⎠
⎠⎝ d
⎠ ⎝d
⎠
Etapa 3: Calcular los polinomios de la aproximación diagonal de Padé.
Se aplica el Algoritmo 3.2 para encontrar los polinomios p( x) y q( x) de la
aproximación diagonal de Padé r ( x) = p( x) / q( x) .
Etapa 4: Calcular la aproximación diagonal de Padé de la matriz A .
Se calcula B = r ( A ) utilizando, por ejemplo, el Algoritmo 3.4.
Etapa 5: Aplicar las transformaciones inversas de las realizadas en la etapa 1.
Los pasos que se deben realizar en esta etapa deben corresponder a las transformaciones
inversas de las aplicadas en la primera etapa. Para la potencia fraccionaria se calcula
B = d Ac a partir de B = d ( I n + A ) cm , utilizando las transformaciones B ⇒ B1 ⇒ B .
La primera transformación consiste en calcular B1 a partir de B :
B1 = d A1cm = d ( I n + A ) cm = B .
La segunda transformación consiste en calcular B a partir de B1 :
(
B = d Ac = d A1/ m
)
cm
= d A1
cm
= B1 .
Por lo tanto, se puede eliminar la quinta etapa pues B = B .
En primer lugar se presenta un algoritmo que calcula la raíz cuadrada de una matriz
mediante una variante de la iteración DB con escalado. Este algoritmo se ha optimizado
al resolver un sistema lineal en lugar de calcular las dos matrices inversas que aparecen
en el método DB.
100
Capítulo 3: Cálculo de Funciones de Matrices
B = dgefrcdbe( A, tol , maxiter ) .
Entradas: Matriz A ∈ ℜ nxn , tolerancia tol ∈ ℜ + , número máximo de iteraciones
maxiter ∈ Z + .
Salida:
1
2
3
4
5
6
Matriz B =
A.
M =A
Y=A
Z = In
cont = 1
k =1
Mientras cont == 1
−1 /( 2 n )
6.1
γ = det( M )
1
6.2
W=
6.3
6.4
Calcular X resolviendo la ecuación MX = W
W=X
⎛
1 ⎞
M = 0.25⎜⎜ 2 I n + γ 2 M + W ⎟⎟
γ ⎠
⎝
W = γ In + W
Y = 0.5YW
Z = 0.5ZW
W = M − In
k = k +1
Si || W ||1 < tol o k > maxiter
6.11.1 cont = 0
6.5
6.6
6.7
6.8
6.9
6.10
6.11
γ
In
Algoritmo 3.6: Calcula la raíz cuadrada de una matriz mediante el método DB con
escalado optimizado.
El coste aproximado del algoritmo anterior es
20 3
kn flops,
3
donde k es el número de iteraciones necesarias para alcanzar la convergencia.
El algoritmo que calcula la potencia fraccionaria de una matriz mediante aproximantes
diagonales de Padé aparece a continuación.
101
Capítulo 3: Cálculo de Funciones de Matrices
B = dgefpfpsv( s, l , c, d , A) .
Entradas: Factor de agrupamiento s ∈ Z + , grado l ∈ Z + de los polinomios de la
aproximación diagonal de Padé, c, d ∈ Z que definen la potencia
fraccionaria de exponente c / d , matriz A ∈ ℜ nxn .
Salida:
1
Matriz B = d Ac .
Reducir la norma de la matriz A :
j = max(0,1 + floor (log 2 || A ||∞ ))
1.1
1.2
A1 = A1/ 2 :
1.2.1 A1 = A
1.2.2 Para i = 1 : j
j
A1 = dgefrcdbe( A1 ,10 −15 ,100) (calcula A1 = A1
mediante el Algoritmo 3.6)
a = dlafrp(l ) (determina los coeficientes del polinomio de Taylor según la
expresión ( 3.8))
[ p, q] = dlacp(a) (determina los polinomios de la aproximación diagonal de
Padé mediante el Algoritmo 3.2)
B = dgefrapsv ( s, p, q, A1 ) (calcula la aproximación diagonal de Padé mediante el
Algoritmo 3.4)
1.2.2.1
2
3
4
Algoritmo 3.7: Cálculo de la potencia fraccionaria de una matriz mediante los
aproximantes diagonales de Padé.
El coste aproximado del algoritmo anterior es
2nl
10n ⎤ 8 3 2
⎡
+ 2l +
2n 2 ⎢( s − 1)n +
K j ⎥ + l + l flops,
s
3
⎣
⎦ 3
siendo K j el número total de iteraciones necesarias para calcular las j raíces cuadradas
del bucle 1.2.2.
3.2.4.3 Función Logaritmo
Etapa 1: Reducir la norma de la matriz.
Para reducir la norma de A ∈ ℜ nxn se determina un entero positivo j de manera que la
matriz A1 = A1 / m , m = 2 j , tenga una norma cercana 1. De este modo,
(
)
log A = m log A1 / m = m log( A1 ) = m log(I n + A1 − I n ) = m log(I n + A ) ,
siendo A = A1 − I n .
La matriz A1 se puede obtener mediante el cálculo sucesivo de raíces cuadradas, ya que
(j
A1 = A1/ m = A1/ 2 = L A .
j
Resumiendo, en esta etapa se realizan las transformaciones siguientes:
A ⇒ A1 = A1 / m ⇒ A = A1 − I n .
102
Capítulo 3: Cálculo de Funciones de Matrices
Etapa 2: Calcular el polinomio de Taylor.
El polinomio de Taylor de grado 2l + 1 , que permite calcular el aproximante diagonal
de Padé de orden (l , l ) , de la función log(1 + x) es
( 3.9 )
a ( x) = 1 + x −
1 2 1 3 1 4
1
x + x − x +L+
x 2l +1 .
2
3
4
2l + 1
Etapa 3: Calcular los polinomios de la aproximación diagonal de Padé.
Se aplica el Algoritmo 3.2 para encontrar los polinomios p( x) y q( x) de la
aproximación diagonal de Padé r ( x) = p( x) / q( x) .
Etapa 4: Calcular la aproximación diagonal de Padé de la matriz A .
Se calcula B = r ( A ) utilizando, por ejemplo, el Algoritmo 3.4.
Etapa 5: Aplicar las transformaciones inversas de las realizadas en la etapa 1.
Los pasos que se deben realizar en esta etapa corresponden a las transformaciones
inversas de las aplicadas en la primera etapa. En primer lugar se calcula B = log A a
partir de B = log( I n + A ) , utilizando las transformaciones B ⇒ B1 ⇒ B .
La primera transformación consiste en calcular B1 a partir de B :
B1 = log A1 = log( I n + A ) = B .
La segunda transformación consiste en calcular B a partir de B1 :
B = log A = m log A1/ m = m log A1 = mB1 .
El algoritmo para el cálculo del logaritmo de una matriz aparece a continuación.
103
Capítulo 3: Cálculo de Funciones de Matrices
B = dgeflgpsv( s, l , A) .
Entradas: Factor de agrupamiento s ∈ Z + , grado l ∈ Z + de los polinomios de la
aproximación diagonal de Padé, matriz A ∈ ℜ nxn .
Salida:
1
Matriz B = log A ∈ ℜ nxn .
Reducir la norma de la matriz A :
j = max(0,1 + floor (log 2 || A ||∞ ))
1.1
1.2
A1 = A1 / 2 :
1.2.1 A1 = A
1.2.2 Para i = 1 : j
j
1.2.2.1
2
3
4
5
A1 = dgefrcdbe( A1 ,10 −15 ,100)
mediante el Algoritmo 3.6)
(calcula
A1 = A1
A = A1 − I n .
1.3
a = dlalog (l ) (determina los coeficientes del polinomio de Taylor según la
expresión ( 3.9 ))
[ p, q] = dlacp(a) (determina los polinomios de la aproximación diagonal de
Padé mediante el Algoritmo 3.2)
B = dgefrapsv( s, p, q, A ) (calcula la aproximación diagonal de Padé mediante el
Algoritmo 3.4)
Aplicar las transformaciones inversas a las aplicadas en la primera etapa:
B = mB
5.1
Algoritmo 3.8: Cálculo del logaritmo de una matriz mediante los aproximantes
diagonales de Padé.
El coste aproximado del algoritmo anterior es
2nl
⎛
⎞ 8
+ 2l + 2nK j ⎟ + l 3 + l 2 flops,
2n 2 ⎜ ( s − 1)n +
s
⎝
⎠ 3
siendo K j el número total de iteraciones necesarias para calcular las j raíces cuadradas
del bucle 1.2.2.
3.2.4.4 Función Coseno
El cálculo del coseno de una matriz que se describe a continuación está basado,
fundamentalmente, en el método descrito en el subapartado 2.2.3.6.
Etapa 1: Reducir la norma de la matriz.
Para reducir la norma de la matriz A , mediante transformaciones de bajo coste, se
explota la relación de periodicidad de la función coseno
cos( A − πqI n ) = (−1) q cos A , q ∈ Z ,
siendo q el entero más cercano a traza ( A) / n que hace menor el valor de || A1 || , donde
A1 = A − πqI n .
A continuación se determina una matriz diagonal D de manera que A2 = D −1 A1 D esté
equilibrada.
104
Capítulo 3: Cálculo de Funciones de Matrices
Por último, se elige m = 2 j tal que la matriz
A = A2 / m
tenga una norma menor que 1.
Resumiendo, en esta etapa se realizan las transformaciones siguientes
A ⇒ A1 = A − πqI n ⇒ A2 = D −1 A1 D ⇒ A = A2 / m .
Etapa 2: Cálculo del polinomio de Taylor.
El polinomio de Taylor de grado 2l + 1 que permite calcular el aproximante diagonal de
Padé de orden (l , l ) de la función cos x , es
( 3.10 )
a ( x) = 1 −
1 2
1 2l
x + L + (−1) l
x + 0 ⋅ x 2l +1 .
2!
(2l )!
Etapa 3: Cálculo de los polinomios de la aproximación diagonal de Padé.
Se aplica el Algoritmo 3.2 para encontrar los polinomios p(x) y q(x) de la función
racional de Padé r ( x) = p( x) / q( x) .
Etapa 4: Cálculo de la aproximación diagonal de Padé de la matriz A .
Se calcula B = r ( A ) aplicando, por ejemplo, el Algoritmo 3.4.
Etapa 5: Aplicación de las transformaciones inversas de las realizadas en la
primera etapa.
Las transformaciones que se deben aplicar en esta etapa son:
B = cos A ⇒ B2 = cos A2 ⇒ B1 = cos A1 ⇒ B = cos A .
Como
B2 = cos A2 = cos(2 j A ) ,
entonces B2 se puede obtener aplicando j veces la fórmula del coseno del ángulo
doble para matrices:
B2 = B
Para i = 1 : j
B2 = 2 B22 − I n .
En la segunda transformación se debe calcular B1 = cos A1 a partir de B2 = cos A2 :
B1 = cos A1 = cos( DA2 D −1 ) = D cos( A2 ) D −1 = DB2 D −1 .
En la tercera transformación se debe calcular B = cos A a partir de B1 = cos A1 :
B = cos A = cos( A1 + πqI n ) = (−1) q cos A1 = (−1) q B1 .
105
Capítulo 3: Cálculo de Funciones de Matrices
B = dgefcspsv( s, l , A) .
Entradas: Factor de agrupamiento s ∈ Z + , grado l ∈ Z + de los polinomios de la
aproximación diagonal de Padé, matriz A ∈ ℜ nxn .
Salida: Matriz B = cos A .
1
2
3
4
5
Reducir la norma de la matriz A :
1.1
Determinar el entero q más cercano a traza ( A) / n que minimice
A − πqI n 1
A1 = A − πqI n
1.2
[ A2 , D ] = dgebal ( A1 ) (equilibrado de la matriz A1 )
1.3
1.4
j = max(0,1 + floor(log 2 || A2 || ∞ ))
1.5
A = A2 / 2 j
a = dlacos(l ) (determina los coeficientes del polinomio de Taylor según la
expresión ( 3.10 ))
[ p, q] = dlacp(a) (determina los polinomios de la aproximación diagonal de
Padé mediante el Algoritmo 3.2)
B = dgefrapsv( s, p, q, A ) (calcula la aproximación diagonal de Padé mediante el
Algoritmo 3.4)
Aplicar transformaciones inversas a las aplicadas en la primera etapa:
B2 = cos(2 j A ) :
5.1
5.1.1 B2 = B
5.1.2 Para i = 1 : j
5.1.2.1 B2 = 2 B22 − I n
5.2
5.3
B1 = DB2 D −1
B = (−1) q B1
Algoritmo 3.9: Cálculo del coseno de una matriz mediante los aproximantes diagonales
de Padé.
El coste aproximado del algoritmo anterior es
2nl
⎡
⎤ 8
2n 2 ⎢( s − 1)n +
+ 2l + nj ⎥ + l 3 + l 2 flops.
s
⎦ 3
⎣
3.2.4.5 Función Seno
La aplicación del Algoritmo 3.1 a la función seno resulta complicada debido a que en la
quinta etapa es necesario aplicar la identidad
sen 2 A = 2senA cos A .
En lugar de ello, se puede calcular el seno de una matriz como a continuación se
muestra. Puesto que las matrices
π
2
In y A
conmutan, entonces
106
Capítulo 3: Cálculo de Funciones de Matrices
⎛π ⎞
⎛π ⎞
⎛π
⎞
⎛π ⎞
⎛π ⎞
cos⎜ I n − A ⎟ = cos⎜ I n ⎟ cos A + sen⎜ I n ⎟sen = cos⎜ ⎟ I n cos A + sen⎜ ⎟ I n senA
⎝2⎠
⎝2⎠
⎝2
⎠
⎝2 ⎠
⎝2 ⎠
= sen A.
Por lo tanto, senA se puede obtener mediante una adaptación del Algoritmo 3.9.
B = dgefsnpsv( s, l , A) .
Entradas: Factor de agrupamiento s ∈ Z + , grado l ∈ Z + de los polinomios de la
aproximación diagonal de Padé, matriz A ∈ ℜ nxn .
Salida: Matriz B = sen A .
1
2
3
4
5
6
A=
π
In − A
2
Reducir la norma de la matriz A :
2.1
Determinar q entero más cercano a traza ( A) / n que minimice
A − πqI n 1
2.2
A1 = A − πqI n
2.3
[ A2 , D ] = dgebal ( A1 ) (equilibrado de la matriz A1 )
j = max(0,1 + floor(log 2 || A2 || ∞ ))
2.4
2.5
A = A2 / 2 j
a = dlacos(l ) (determina los coeficientes del polinomio de Taylor según la
expresión ( 3.10 ))
[ p, q] = dlacp(a) (determina los polinomios de la aproximación diagonal de
Padé mediante el Algoritmo 3.2)
B = dgefrapsv( s, p, q, A ) (calcula la aproximación diagonal de Padé mediante el
Algoritmo 3.4)
Aplicar transformaciones inversas a las aplicadas en la primera etapa:
B2 = cos( A2 ) :
6.1
6.1.1 B2 = B
6.1.2 Para i = 1 : j
6.1.2.1 B2 = 2 B22 − I n
6.2
6.3
B1 = DB2 D −1
B = (−1) q B1
Algoritmo 3.10: Cálculo del seno de una matriz mediante los aproximantes diagonales
de Padé.
El coste aproximado del algoritmo anterior es
2nl
⎡
⎤ 8
+ 2l + nj ⎥ + l 3 + l 2 flops.
2n 2 ⎢( s − 1)n +
s
⎣
⎦ 3
107
Capítulo 3: Cálculo de Funciones de Matrices
3.3 Algoritmos Basados Descomposición Real de Schur
de una matriz
3.3.1 Esquema General
Se pueden desarrollar varios algoritmos a partir de la descomposición real de Schur de
una matriz A ∈ ℜ nxn . Conocida dicha descomposición, se determina el valor de la
función sobre la forma real de Schur de la matriz considerada y se calcula f ( A) a partir
de la matriz anterior. A continuación se describe detalladamente el esquema
correspondiente.
Según el Teorema 6.7, A se puede descomponer como
A = QSQ T ,
siendo Q ∈ ℜ nxn ortogonal y S ∈ ℜ nxn casi triangular superior. Por la Propiedad 2.2, se
tiene que si f ( z ) es analítica sobre un abierto que contiene al espectro de A , entonces
f ( A) se puede calcular como
f ( A) = Qf ( S )Q T .
El algoritmo general que calcula funciones de matrices mediante la forma real de Schur
de una matriz se muestra a continuación.
Entrada: Matriz A ∈ ℜ nxn .
Salida:
1
2
3
Matriz B = f ( A) ∈ ℜ nxn .
[Q, S ] = schur ( A) (obtiene la matriz ortogonal Q ∈ ℜ nxn y la matriz casi
triangular S ∈ ℜ nxn de la descomposición real de Schur de la matriz A ).
Calcular F = f (S ) .
Calcular B = QFQ T .
Algoritmo 3.11: Algoritmo general para el cálculo de funciones de matrices basado en la
descomposición real de Schur de una matriz.
El coste del algoritmo anterior es:
• Primera etapa: El cálculo de la forma real de Schur está basado en el algoritmo
iterativo QR de coste estimado de 25n 3 flops (véase [BlDo99]), siendo n la
dimensión de la matriz A . Este coste se ha determinado de forma heurística,
puesto que al ser un método iterativo el número de flops depende de la velocidad
de convergencia de la forma Hessenberg superior a la forma casi triangular
superior de la matriz A .
• Segunda etapa: El coste computacional de F = f (S ) depende del método usado
para su cálculo.
• Tercera etapa: Para obtener B es necesario realizar el producto de una matriz
densa por una matriz casi triangular superior ( B = QF ) y el producto de dos
matrices densas ( B = BQ T ). El coste aproximado de esta etapa es
8 3
n flops.
3
108
Capítulo 3: Cálculo de Funciones de Matrices
Diversos métodos se pueden utilizar para el cálculo de f (S ) , algunos se pueden
encontrar en [Iba97] y [High03], y otros se introducen en este capítulo.
3.3.2 Algoritmo Basado en la Reducción a una Forma Diagonal
por Bloques
Una primera estrategia para calcular f ( S ) consiste en reducir la matriz S a una matriz
diagonal por bloques D , utilizando para ello una transformación no ortogonal de
semejanza definida por una matriz invertible Y ∈ ℜ nxn bien condicionada de manera que
los valores propios cercanos se encuentren en el mismo bloque diagonal, y tal que la
separación entre bloques diagonales distintos sea lo suficientemente grande. De esta
forma, se tiene que
( 3.11 ) S = YDY −1 , D = diag( D1 , D2 , L , D p ) , Di ∈ ℜni xni , 1 ≤ i ≤ p ,
p
∑n
i =1
i
= n,
y entonces f (S ) se puede calcular mediante la expresión
f ( S ) = Yf ( D)Y −1 = Ydiag ( f ( D1 ),L, f ( D p ))Y −1 ,
donde cada bloque diagonal f ( Di ) , i = 1,2,L, p , se puede obtener utilizando, por
ejemplo, aproximantes de Padé.
Si la matriz S se puede dividir en bloques,
( 3.12 )
⎡ S11
⎢0
S=⎢
⎢ M
⎢
⎣⎢ 0
S12 L S1 p ⎤
S 22 L S 2 p ⎥⎥
n xn
, Sij ∈ ℜ i j , 1 ≤ i ≤ j ≤ p ,
M O M ⎥
⎥
0 L S pp ⎦⎥
p
∑n
i =1
i
= n,
de manera que los conjuntos de valores propios de los bloques diagonales,
λ (S11 ), λ (S 22 ),L, λ (S pp ) , sean disjuntos dos a dos, entonces existe una transformación de
semejanza, definida mediante una matriz invertible Y ∈ ℜ nxn , de manera que
( 3.13 )
Y −1 SY = diag( S11 , S 22 ,L, S pp ) ([GoVa96], Teorema 7.1.6).
La forma de obtener la matriz Y se describe a continuación.
En primer lugar, la matriz identidad de orden n se divide en bloques
I n = [ E1 , E2 , L , E p ] , Ei ∈ ℜ nxni , i = 1,L, p , y se definen las matrices Yij ∈ ℜ nxn , como
Yij = I n + Ei Z ij E Tj , 1 ≤ i < j ≤ p ,
siendo Z ij ∈ ℜ
ni xn j
matrices a determinar.
Si se fijan los valores de i y de j , entonces la matriz Yij coincide con la matriz
identidad excepto que su bloque (i, j ) es igual a Z ij , es decir,
109
Capítulo 3: Cálculo de Funciones de Matrices
⎡ I n1
⎢M
⎢
⎢0
⎢
Yij = ⎢ M
⎢0
⎢
⎢M
⎢0
⎣
L 0
O M
L I ni
O M
L 0
O M
L 0
L 0
O M
L Z ij
O M
L In j
O M
L 0
L 0⎤
O M ⎥⎥
L 0⎥
⎥
O M ⎥.
L 0⎥
⎥
O M ⎥
L I n p ⎥⎦
Si se define S = Yij−1SYij , entonces se tiene que Yij S = SYij , es decir,
⎡ I n1
⎢M
⎢
⎢0
⎢
⎢M
⎢0
⎢
⎢M
⎢0
⎣
⎡ S11
⎢M
⎢
⎢0
⎢
=⎢ M
⎢0
⎢
⎢M
⎢0
⎣
L 0
O M
L I ni
O M
L 0
O M
L 0
L 0
O M
L Z ij
O M
L Inj
O M
L 0
L S1i
O M
L Sii
O M
L 0
O M
L
L S1 j
O M
L Sij
O M
L S jj
O M
0
L
0
L 0 ⎤ ⎡ S11
O M ⎥⎥ ⎢⎢ M
L 0 ⎥⎢ 0
⎥⎢
O M ⎥⎢ M
L 0 ⎥⎢ 0
⎥⎢
O M ⎥⎢ M
L I n p ⎥⎦ ⎢⎣ 0
L S1 p ⎤ ⎡ I n1
⎢
O M ⎥⎥ ⎢ M
L Sip ⎥ ⎢ 0
⎥⎢
O M ⎥⎢ M
L S jp ⎥ ⎢ 0
⎥⎢
O M ⎥⎢ M
L S pp ⎥⎦ ⎢⎣ 0
L S1i L S1 j L S1 p ⎤
⎥
O M O M O M ⎥
L S ii L Sij L Sip ⎥
⎥
O M O M O M ⎥
L 0 L S jj L S jp ⎥
⎥
O M O M O M ⎥
L 0 L 0 L S pp ⎥⎦
⎤
⎥
⎥
⎥
⎥
⎥.
⎥
⎥
O M ⎥
L I n p ⎥⎦
L 0
O M
L I ni
O M
L 0
L 0 L
O M O
L Z ij L
O M O
L In j L
O
L
O
L
M
0
M
0
0
M
0
M
0
Por tanto, los bloques de las matrices S y S , se relacionan entre sí mediante las
siguientes igualdades:
• Bloques diagonales,
S kk = S kk , k = 1,2,L, p .
• Bloques no diagonales,
S ij = S ii Z ij − Z ij S jj + S ij , 1 ≤ i < j ≤ p ,
S kj = S ki Z ij + S kj , k = 1,2,L, i − 1 ,
S ik = S ik − Z ij S jk , k = j + 1, j + 2,L, p .
De este modo, el bloque S ij se puede anular si Z ij es solución de la ecuación matricial
de Sylvester
S ii Z ij − Z ij S jj = − S ij ,
donde S ii ∈ ℜ ni xni y S jj ∈ ℜ
n j xn j
son matrices casi triangulares superiores y S ij ∈ ℜ
ni xn j
.
110
Capítulo 3: Cálculo de Funciones de Matrices
Por lo tanto, definiendo la matriz Y como
⎡ I n1
⎢0
p
p
Y = ∏∏ Yij = ⎢
⎢M
i =1 j > i
⎢
⎣⎢ 0
Z12
I n2
M
0
L Z1 p ⎤
L Z 2 p ⎥⎥
,
O M ⎥
⎥
L I n p ⎦⎥
se puede comprobar que Y −1 SY = diag( S11 , S 22 ,L, S pp ) .
A continuación se detalla el algoritmo que permite obtener la transformación de
semejanza definida por la matriz Y .
[Q, S ] = dlasbd (Q, S ) .
Entradas: Matriz casi triangular superior S ∈ ℜ nxn y matriz ortogonal Q ∈ ℜ nxn
procedentes de la descomposición real de Schur de la matriz A ∈ ℜ nxn .
Salidas: Q es sobrescrita por la matriz QY y S es sobrescrita por la matriz
diag( S11 , S 22 ,L, S pp ) , de manera que Q −1 SQ = diag( S11 , S 22 ,L, S pp ) .
1
Para j = 2 : p
1.1
Para i = 1 : j − 1
1.1.1 Calcular Z resolviendo la ecuación matricial de Sylvester
S ii Z − ZS jj = − S ij
1.1.2 Para k = j + 1 : p
1.1.2.1 S ik = S ik − ZS jk
1.1.2.2 Para k = 1 : p
1.1.2.2.1 Qkj = Qki Z + Qkj
Algoritmo 3.12: Reducción a la forma diagonal por bloques de una matriz casi
triangular superior.
El número de flops de este algoritmo depende de los tamaños de los bloques diagonales
de la matriz S .
La elección de la división en bloques de la matriz S determina la sensibilidad de las
ecuaciones matriciales de Sylvester que aparecen en el Algoritmo 3.12. Esto afecta al
número de condición de la matriz Y y a la estabilidad numérica del proceso de
diagonalización por bloques de la matriz S . Esto es debido a que el error relativo de la
~
solución Z obtenida al resolver la ecuación matricial de Sylvester
( 3.14 )
S ii Z − ZS jj = − S ij ,
satisface que
( 3.15 )
~
|| Z − Z || F
|| S || F
≅u
([GoNV79]),
|| Z || F
sep( S ii , S jj )
siendo
111
Capítulo 3: Cálculo de Funciones de Matrices
sep( S ii , S jj ) = min
X ≠0
|| S ii X − XS jj || F
|| X || F
([Varah79]),
la separación que existe entre los bloques diagonales S ii y S jj , y u el error de redondeo
unidad ([GoVa96], página 61).
Si los conjuntos λ ( S ii ) y λ ( S jj ) están muy cercanos, entonces se pueden producir
grandes errores en la obtención de la diagonalización por bloques, puesto que al
cumplirse que
sep( S ii , S jj ) = min
|| S ii X − XS jj || F
|| X || F
X ≠0
≤ min | λ − µ | ,
λ∈λ (Tii )
µ∈λ (T jj )
se tiene que sep( S ii , S jj ) puede ser pequeña, por lo que si Z ij es la solución de la
ecuación ( 3.14 ), entonces Z ij tendrá una gran norma, con lo que la matriz Y estará
mal condicionada por ser el producto de matrices de la forma
⎡ I Z ij ⎤
Yij = ⎢
⎥.
⎣0 I ⎦
Puesto que en la forma real de Schur de una matriz A los valores propios cercanos no
están necesariamente en el mismo bloque diagonal, es necesario reordenar los bloques
diagonales 1x1 o 2x2 mediante transformaciones de semejanza ([NgPa87]) de manera
que los valores propios cercanos estén agrupados. De este modo, la separación entre
bloques será suficientemente grande con la consiguiente disminución del error
cometido.
El siguiente algoritmo calcula funciones de matrices mediante la diagonalización a
bloques de una matriz.
B = dgefunsbd ( f , A) .
Entrada: Función f (x) , matriz A ∈ ℜ nxn .
Salida:
Matriz B = f ( A) ∈ ℜ nxn .
2
3
[Q, S ] = schur ( A) (obtiene las matrices Q y S de la descomposición real de
Schur de la matriz A )
[Q, S ] = dlasbd (Q, S ) (Algoritmo 3.12)
Calcular F = diag( f ( S11 ),L, f ( S pp ))
4
Calcular B = QFQ −1
1
Algoritmo 3.13: Cálculo de funciones de matrices basado en la descomposición real de
Schur de una matriz y en la forma diagonal a bloques.
3.3.3 Algoritmos Basados en la Resolución de la Ecuación
Conmutante
En este apartado se describen varios algoritmos basados en la descomposición real de
Schur de una matriz y en la ecuación conmutante.
112
Capítulo 3: Cálculo de Funciones de Matrices
3.3.3.1 Algoritmos Orientados a Columnas y a Diagonales
Sea
⎡ S11
⎢0
( 3.16 ) S = ⎢
⎢ M
⎢
⎣0
S12 L S1m ⎤
S 22 L S 2 m ⎥⎥
∈ ℜ nxn , S jj ∈ ℜ ó S jj ∈ ℜ 2 x 2 , j = 1,2, L , m ,
M O M ⎥
⎥
0 L S mm ⎦
la forma real de Schur de la matriz A y
⎡ F11
⎢0
( 3.17 ) F = f ( S ) = ⎢
⎢ M
⎢
⎣0
F12 L F1m ⎤
F22 L F2 m ⎥⎥
∈ ℜ nxn , F jj ∈ ℜ ó F jj ∈ ℜ 2 x 2 , j = 1,2, L , m ,
M O M ⎥
⎥
0 L Fmm ⎦
con igual estructura por bloques que la matriz S .
Teniendo en cuenta que las matrices S y F conmutan (Propiedad 2.1), se tienen que
los bloques diagonales F jj , j = 1,2,L, m , se pueden calcular mediante la expresión
F jj = f ( S jj ) ,
( 3.18 )
y el resto de bloques Fij , 1 ≤ i < j ≤ n , resolviendo las ecuaciones matriciales de
Sylvester
j −1
( 3.19 )
Sii Fij − Fij S jj = ∑ Fik S kj −
k =i
j
∑S
k = i +1
ik
Fkj .
Para calcular el bloque Fij es necesario haber calculado previamente los bloques que se
encuentran a su izquierda y debajo de él, tal como se indica en la siguiente figura.
F
Fij
Fik, i ≤k<j
Fkj, i<k≤j
Figura 3.1: Dependencia de datos en el cálculo de Fij , 1 ≤ i < j ≤ m .
En los algoritmos orientados a columnas, filas o diagonales es necesario determinar los
bloques diagonales de orden 2x 2 de la matriz F , correspondientes a valores propios
conjugados de la matriz S (expresión ( 3.18)). A continuación se describe un método
113
Capítulo 3: Cálculo de Funciones de Matrices
descrito en [Ibañ97] que permite calcular la matriz F jj = f ( S jj ) , siendo S jj un bloque
diagonal de orden 2x 2 .
Sea
⎡ s k ,k
S jj = ⎢
⎣ sk +1,k
sk ,k +1 ⎤
,
sk +1,k +1 ⎥⎦
y
⎡ f k ,k
F jj = ⎢
⎣ f k +1,k
f k ,k +1 ⎤
=
f k +1,k +1 ⎥⎦
⎛ ⎡ s k ,k
f ⎜⎢
⎜ sk +1,k
⎝⎣
sk ,k +1 ⎤ ⎞
⎟
sk +1,k +1 ⎥⎦ ⎟⎠
el correspondiente bloque de la matriz F .
Sin pérdida de generalidad, se puede suponer que los bloques diagonales 2x 2 tienen los
elementos diagonales iguales y los no diagonales de igual valor absoluto pero con
distinto signo (véase la función schur de MATLAB y la rutina dgees de LAPACK), es
decir,
sk +1,k +1 = sk ,k , | sk +1,k |=| sk ,k +1 | , sk +1,k sk ,k +1 < 0 .
Si se definen a ≡ sk ,k , b ≡ sk ,k +1 , c ≡ sk +1,k y se considera la descomposición en valores
propios
⎡a b ⎤ ⎡ bc
⎢c a⎥ = ⎢
⎣
⎦ ⎣ c
−1
b ⎤ ⎡ z 0 ⎤ ⎡ bc
⎥ ⎢
⎥⎢
− bc ⎦ ⎣0 z ⎦ ⎣ c
b ⎤
⎥,
− bc ⎦
donde z = a + bc y z el complejo conjugado de z , entonces se cumple que
⎡ f k ,k
⎢f
⎣ k +1,k
f k ,k +1 ⎤
=
f k +1,k +1 ⎥⎦
⎛ ⎡a b ⎤ ⎞ ⎡ bc
f ⎜⎜ ⎢
⎥ ⎟⎟ = ⎢
⎝ ⎣c a⎦ ⎠ ⎣ c
−1
b ⎤ ⎛ ⎡ z 0 ⎤ ⎞ ⎡ bc
⎥ f ⎜⎢
⎥ ⎟⎢
− bc ⎦ ⎜⎝ ⎣0 z ⎦ ⎟⎠ ⎣ c
b ⎤
⎥
− bc ⎦
y
⎛ ⎡ z 0⎤ ⎞ ⎡ f ( z )
f ⎜⎜ ⎢
⎥ ⎟⎟ = ⎢
⎝ ⎣0 z ⎦ ⎠ ⎣ 0
0 ⎤ ⎡ f ( z)
=
f ( z )⎥⎦ ⎢⎣ 0
0 ⎤
.
f ( z )⎥⎦
Luego
⎡ f k ,k
⎢f
⎣ k +1,k
( 3.20 )
⎡ f k ,k
⎢f
⎣ k +1,k
f k ,k +1 ⎤ 1 ⎡ bc
= ⎢
f k +1,k +1 ⎥⎦ bc ⎣ c
b ⎤ ⎡ f ( z)
⎥⎢
− bc ⎦ ⎣ 0
0 ⎤ ⎡ bc
⎢
f ( z )⎥⎦ ⎣ c
b ⎤
⎥,
− bc ⎦
1
⎡
⎤
−
Re( f ( z ))
| bc | Im( f ( z ))⎥
f k ,k +1 ⎤ ⎢
c
=
⎥.
f k +1,k +1 ⎥⎦ ⎢⎢ 1
⎥
−
| bc | Im( f ( z ))
Re( f ( z ))
⎣ b
⎦
Para determinar los bloques no diagonales de la matriz F que aparecen en los
algoritmos orientados a columnas y diagonales que se presentan en este subapartado, es
necesario resolver ecuaciones matriciales casi triangulares superiores de Sylvester. Estas
114
Capítulo 3: Cálculo de Funciones de Matrices
ecuaciones se pueden resolver mediante el método que se presenta a continuación. Sea
la ecuación matricial de Sylvester
AX − XB = C ,
( 3.21 )
donde
⎡ A11
⎢0
A=⎢
⎢ M
⎢
⎣0
Aij ∈ ℜ
mi xm j
A1r ⎤
L A2 r ⎥⎥
∈ ℜ mxm ,
O M ⎥
⎥
L Arr ⎦
A12 L
A22
M
0
, para i, j = 1,L, r , y mi y m j iguales a 1 o 2;
y
⎡ B11
⎢0
B=⎢
⎢ M
⎢
⎣0
Bij ∈ ℜ
ni xn j
B12 L B1s ⎤
B22 L B2 s ⎥⎥
∈ ℜ nxn ,
⎥
M O M
⎥
0 L Bss ⎦
, para i, j = 1, L , s , y ni y n j iguales a 1 o 2; y C ∈ ℜ mxn .
Las matrices C y X se dividen en rxs bloques de tamaños 1x1 o 2x2 de acuerdo a la
división por bloques de las matrices A y B ,
⎡C11 C12
⎢C
C22
C = ⎢ 21
⎢ M
M
⎢
⎣ C r 1 Cr 2
⎡ X 11
⎢X
X = ⎢ 21
⎢ M
⎢
⎣ X r1
siendo Cij , X ij ∈ ℜ
mi xn j
L C1s ⎤
L C2 s ⎥⎥
,
O M ⎥
⎥
L Crs ⎦
X 12 L X 1s ⎤
X 22 L X 2 s ⎥⎥
,
M O M ⎥
⎥
X r 2 L X rs ⎦
, para i = 1, L , s , j = 1, L , r .
El bloque X ij se puede obtener igualando los bloques (i, j ) de la ecuación ( 3.21 ) tal y
como se muestra a continuación.
r
s
k =1
k =1
r
j
k =i
k =1
∑ Aik X kj + ∑ X ik Bkj = Cij ,
∑ Aik X kj + ∑ X ik Bkj = Cij ,
Aii X ij +
r
j −1
k =i +1
k =1
∑ Aik X kj + X ij B jj + ∑ X ik Bkj = Cij ,
115
Capítulo 3: Cálculo de Funciones de Matrices
Aii X ij + X ij B jj = Cij −
( 3.22 )
r
j −1
k =i +1
k =1
∑ Aik X kj − ∑ X ik Bkj .
Aplicando la función vec , se tiene
j −1
r
⎛
⎞
⎜
vec( Aii X ij + X ij B jj ) = vec⎜ Cij − ∑ Aik X kj − ∑ X ik Bkj ⎟⎟ ,
k =i +1
k =1
⎝
⎠
j −1
r
⎛
⎞
( I j ⊗ Aii + B Tjj ⊗ I i )vec( X ij ) = vec⎜⎜ Cij − ∑ Aik X kj − ∑ X ik Bkj ⎟⎟ ,
k =i +1
k =1
⎝
⎠
( 3.23 )
donde I i e I j representan las matrices identidad de dimensiones, respectivamente,
iguales a las de las matrices Aii y B jj .
Basta resolver la ecuación ( 3.23 ) y calcular X ij como
X ij = mat mi xn j ( vec( X ij )) .
A continuación se muestra el algoritmo que resuelve la ecuación casi triangular de
Sylvester ( 3.21 ).
X = dtrsyl ( A, B, C ) .
Entradas: Matrices casi triangulares superiores A ∈ ℜ mxm y B ∈ ℜ nxn , matriz
C ∈ ℜ mxn .
Salida:
Matriz X ∈ ℜ mxn solución de la ecuación matricial casi triangular de
Sylvester AX + XB = C .
1
Dividir la matriz A en r × r bloques de tamaños 1x1 o 2x2 en función de que
los valores propios sean reales o complejos conjugados:
A = [ Aij ] , ( Aij ∈ ℜ o Aij ∈ ℜ 2 x 2 )
2
Dividir la matriz B en s × s bloques de tamaños 1x1 o 2x2 en función de que
los valores propios sean reales o complejos conjugados:
B = [ Bij ] , ( Bij ∈ ℜ o Bij ∈ ℜ 2 x 2 )
3
Dividir la matriz C y X en r × s bloques de tamaños 1x1 o 2x2 en función de
la división por bloques de las matrices A y B :
C = [Cij ] , X = [ X ij ]
4
Para i = r : −1 : 1
4.1
Para j = 1 : s
4.1.1
Cij = Cij −
r
j −1
k =i +1
k =1
∑ Aik X kj − ∑ X ik Bkj
4.1.2
cij = vec(Cij )
4.1.3
M ij = I j ⊗ Aii + B Tjj ⊗ I i
4.1.4 Calcular xij resolviendo la ecuación Mxij = cij
4.1.5
X ij = mat mi xn j ( xij )
Algoritmo 3.14: Resolución de la ecuación casi triangular de Sylvester.
116
Capítulo 3: Cálculo de Funciones de Matrices
El coste computacional aproximado del algoritmo anterior está comprendido entre
1
2
(mn 2 + m 2 n) y (mn 2 + m 2 n) flops.
2
3
3.3.3.1.1 Algoritmo Orientado a Columnas
En este algoritmo se calcula, en primer lugar, el bloque diagonal de la primera columna,
continuando con los bloques que se encuentran en los sucesivos bloques de columnas.
Para cada bloque de columnas se calcula, en primer lugar, el bloque diagonal y, a
continuación, los bloques que se encuentran por encima en sentido ascendente tal como
se indica en la siguiente figura.
F
Figura 3.2: Orden de cálculo de los bloques de la matriz F .
Los bloques de la diagonal principal se obtienen a partir de la expresión ( 3.18 ) y el
resto de los bloques resolviendo la ecuación matricial de Sylvester ( 3.19 ). Para este
algoritmo se puede, o bien calcular el miembro de la derecha en el momento en que se
va a resolver la ecuación matricial de Sylvester, o bien haberlo calculado previamente.
En el algoritmo que se presenta a continuación se ha elegido la primera estrategia.
F = dqtfunscc(S ) .
Entradas: Matriz casi triangular superior S ∈ ℜ nxn .
Salida:
1
2
Matriz casi triangular superior F = f ( S ) ∈ ℜ nxn .
Dividir la matriz S en mxm bloques, de manera que los bloques diagonales sean
1x1 o 2x 2 , correspondientes a valores propios reales o complejos conjugados,
respectivamente.
Para j = 1 : m
2.1
F jj = f ( S jj )
2.2
Para i = j − 1 : −1 : 1
j −1
2.2.1
Fij = ∑ Fik S kj −
k =i
2.2.2
j
∑S
k = i +1
ik
Fkj
Fij = dtrsyl ( Sii ,− S jj , Fij ) (Algoritmo 3.14)
Algoritmo 3.15: Cálculo de la función de una matriz casi triangular superior basado en
la resolución de la ecuación conmutante orientado a columnas.
117
Capítulo 3: Cálculo de Funciones de Matrices
El coste computacional aproximado del algoritmo anterior se encuentra entre
n3 n 2
n3
+
flops.
+ n2 y
3
2
2
3.3.3.1.2 Algoritmo Orientado a Diagonales
En este caso los bloques se calculan por diagonales. Se comienza con la diagonal
principal y se continúa con las diagonales que se encuentran encima de ella. Para cada
diagonal los bloques se calculan de arriba hacia abajo.
F
1
2
3
4
5
Figura 3.3: Orden de cálculo de los bloques de la matriz F .
Los bloques de la diagonal principal se calculan utilizando la expresión ( 3.18 ). Los
bloques del resto de las diagonales se calculan mediante la resolución de la ecuación
matricial de Sylvester ( 3.19 ). Al igual que en el caso anterior, se puede, o bien calcular
el miembro de la derecha en el momento en que se va a resolver la ecuación matricial de
Sylvester, o haberlo calculado previamente. En el algoritmo que se presenta a
continuación se ha elegido esa segunda estrategia. En la siguiente figura se muestra el
bloque que se ha calculado y los bloques que se actualizan a partir de él.
F
Fij
Fik, j<k≤m
Fkj, 1≤k<i
Figura 3.4: Bloques Fik y Fkj que se actualizan a partir de Fij .
A continuación se presenta el algoritmo que calcula funciones de matrices casi
triangulares superiores basado en la resolución de la ecuación conmutante orientada a
diagonales.
118
Capítulo 3: Cálculo de Funciones de Matrices
F = dqtfunscd (S ) .
Entradas: Matriz casi triangular superior S ∈ ℜ nxn .
Salida:
1
2
Matriz casi triangular superior F = f ( S ) ∈ ℜ nxn .
Dividir la matriz S en mxm bloques, de manera que los bloques diagonales sean
1x1 o 2x 2 , correspondientes a valores propios reales o complejos conjugados,
respectivamente.
Para k = 1 : m
2.1
Para j = k : m
2.1.1 i = j − k + 1
2.1.2 Si k > 1
2.1.2.1 Fij = dtrsyl ( Sii ,− S jj , Fij ) (Algoritmo 3.14)
2.1.3 Si no
2.1.3.1 F jj = f ( S jj )
2.1.4 Actualizar los bloques F1 j , L , Fi −1 j
2.1.5 Actualizar los bloques Fij +1 ,L , Fim
Algoritmo 3.16: Cálculo de la función de una matriz casi triangular superior basado en
la resolución de la ecuación conmutante orientado a diagonales.
El coste computacional aproximado del algoritmo anterior se encuentra entre
n3 n 2
n3
+
y
+ n 2 flops.
2
2
3
3.3.3.2 Algoritmos Orientados a Bloques
Sea r el tamaño de bloque elegido. Debido a la presencia de elementos subdiagonales
no nulos en la forma real de Schur de la matriz S , los tamaños de los bloques
diagonales no serán uniformes; es decir, los bloques diagonales de la matriz S podrán
tener dimensiones rxr o (r + 1) x(r + 1) , salvo el bloque diagonal situado en la última
fila y columna de bloques que puede tener una dimensión distinta, como resultado del
encaje final de la división por bloques con la dimensión de la matriz inicial. El resto de
bloques de S se obtienen dividiendo la matriz en bloques rectangulares de acuerdo a los
bloques diagonales; de este modo, la matriz S queda dividida sxs bloques. Para la
matriz F se utiliza la misma estructura de bloques.
Si se identifican los bloques diagonales en la ecuación FS = SF , se obtiene
F jj = f ( S jj ) , j = 1,2,L, s .
Esta ecuación puede resolverse utilizando cualquiera de los algoritmos comentados
anteriormente (orientados a columnas u orientados a diagonales).
Los bloques no diagonales se obtienen resolviendo la ecuación casi triangular superior
de Sylvester
j −1
S ii Fij − S ij T jj = ∑ Fik S kj −
k =i
j
∑S
k =i +1
ik
Fkj .
119
Capítulo 3: Cálculo de Funciones de Matrices
Razonando como en el subapartado anterior, se pueden deducir varios algoritmos:
orientados a filas, orientados a columnas y orientados a diagonales. A continuación se
presenta el algoritmo orientado a columnas de bloques.
F = dqtfunscb(r , S ) .
Entradas: Tamaño de bloque r ∈ Z + , matriz casi triangular superior S ∈ ℜ nxn .
Salida:
1
2
Matriz casi triangular superior F = f ( S ) ∈ ℜ nxn .
Dividir S y F en sxs bloques de tamaños rxr o (r + 1) x(r + 1) (salvo los
bloques S ss y Fss que tendrán las dimensiones adecuadas)
Para j = 1 : s
2.1
F jj = dqtfunsc( S jj ) (Algoritmo 3.15)
2.2
Para i = j − 1 : −1 : 1
j −1
2.2.1
Fij = ∑ Fik S kj −
k =i
2.2.2
j
∑S
k = i +1
ik
Fkj
Fij = dtrsyl ( Sii ,− S jj , Fij ) (Algoritmo 3.14)
Algoritmo 3.17: Calcula la función de una matriz casi triangular superior mediante la
resolución de la ecuación conmutante orientado a columnas de bloques.
El coste computacional aproximado del algoritmo anterior es
⎛ 2 1⎞ 3
⎜ + ⎟n flops.
⎝3 s⎠
El algoritmo orientado a diagonales de bloques se presenta a continuación.
F = dqtfunsdb(S ) .
Entradas: Tamaño de bloque r ∈ Z + , matriz casi triangular superior S ∈ ℜ nxn .
Salida:
1
2
Matriz casi triangular superior F = f ( S ) ∈ ℜ nxn .
Dividir S y F en sxs bloques de tamaños rxr o (r + 1) x(r + 1) (salvo los
bloques S ss y Fss que tendrán las dimensiones adecuadas)
Para k = 1 : s
2.1
Para j = k : s
2.1.1 i = j − k + 1
2.1.2 Si k > 1
2.1.2.1 Fij = dtrsyl ( Sii ,− S jj , Fij ) (Algoritmo 3.14)
2.1.3 Si no
2.1.3.1 Fjj = dtrfunsc ( S jj ) (Algoritmo 3.15)
2.1.4 Actualizar los bloques F1 j ,L, Fi −1 j
2.1.5 Actualizar los bloques Fij +1 ,L, Fis
Algoritmo 3.18: Algoritmo para el cálculo de la función de una matriz casi triangular
superior basado en la resolución de la ecuación conmutante orientado a
diagonales de bloques.
120
Capítulo 3: Cálculo de Funciones de Matrices
El coste computacional aproximado del algoritmo anterior es
⎛ 2 1⎞ 3
⎜ + ⎟n flops.
⎝3 s⎠
3.3.3.3 Algoritmo con Agrupación de Valores Propios Cercanos
En este subapartado se describe el algoritmo que consiste en agrupar en clusters los
valores propios cercanos de la forma real de Schur de una matriz, realizando a
continuación las reordenaciones necesarias de manera que la matriz obtenida quede
dividida en bloques, estando los valores del mismo cluster en el mismo bloque diagonal.
A partir de ahí, se pueden utilizar estrategias similares a las utilizadas en los algoritmos
a bloques descritos en el subapartado 3.3.3.2.
El siguiente algoritmo determina un vector g que contiene los índices de comienzo de
los bloques diagonales de la forma real de Schur S de la matriz A ∈ ℜ nxn .
g = dlagbs (vr , vi)
Entradas: Vectores vr , vi ∈ ℜ n que contienen, respectivamente, la parte real y la
parte imaginaria de los valores propios de la forma real de Schur S ∈ ℜ nxn
de la matriz A ∈ ℜ nxn .
Salida:
1
2
3
4
5
Vector g ∈ ℜm que contiene los índices de los bloques 1x1 o 2x2 de la
matriz S .
m=0
i1 = 1
i2 = i1 + 1
Mientras i1 ≤ n
m = m +1
4.1
g (m) = i1
4.2
4.3
Si vi(i2 ) ≠ 0
4.3.1 i1 = i2 + 1
4.4
Si no
4.4.1 i1 = i2
4.5
i1 = i2 + 1
Si i1 ≤ n
m = m +1
5.1
5.2
g (m) = i1
Algoritmo 3.19: Determina los bloques diagonales de la forma real de Schur de una
matriz.
Una vez se conoce el vector g , se deben determinar los clusters de valores propios.
Estas agrupaciones en clusters se realizan de manera que dos valores propios se
encuentran en el mismo cluster, siempre que disten entre sí un valor menor que un valor
de tolerancia predefinido, no necesariamente pequeño. En el siguiente algoritmo se
121
Capítulo 3: Cálculo de Funciones de Matrices
determina un vector de enteros positivos c ∈ Z p de manera que c(k ) , 1 ≤ k ≤ p , indica
a qué cluster pertenece el grupo de valores propios definidos por g (k ) .
c = dlagc(vr , vi, g , tol ) .
Entradas: Vectores vr , vi ∈ ℜn que contienen, respectivamente, la parte real y la parte
imaginaria de los valores propios de la matriz casi triangular superior
S ∈ ℜnxn , vector g ∈ ℜm que contiene los índices de los bloques de la
expresión ( 6.2 ) y la tolerancia tol ∈ ℜ + .
Salida:
1
2
Vector de enteros positivos c ∈ Z p que contiene los índices de los clusters.
p=0
Para k = 1 : m
2.1
Si c(k ) = 0
2.1.1 p = p + 1
2.1.2 c(k ) = p
2.2
vk = vr ( g (k )) + abs(vi( g (k ))i
2.3
Para j = k + 1 : m
2.3.1 vj = vr ( g ( j )) + abs(vi( g ( j ))i
2.3.2 Si abs(vk − vj ) < tol
2.3.2.1 c( j ) = c(k )
Algoritmo 3.20: Determina los cluster de la forma real de Schur de una matriz.
Conocida la división en clusters de los valores propios de la matriz S , se realizan los
intercambios necesarios de bloques diagonales de manera que los valores propios con el
mismo índice de cluster se encuentren en el mismo bloque diagonal. Estos intercambios
se realizan utilizando transformaciones de semejanza ortogonales. Al final de este
proceso se obtiene una matriz S , divida en bloques conforme a la división en clusters
de los valores propios de S , y una matriz ortogonal Q de modo que S = Q S Q T .
El siguiente algoritmo lleva a cabo el proceso descrito en el párrafo anterior.
122
Capítulo 3: Cálculo de Funciones de Matrices
[ S , Q , g , c] = dlabex( S , Q, g , c) .
Entradas: Matriz casi triangular superior S ∈ ℜnxn , matriz ortogonal Q ∈ ℜ nxn , vector
g ∈ ℜm que contiene los índices de los bloques de la matriz S , vector
c ∈ ℜ p que contiene los índices de los clusters.
Salidas: Matriz casi triangular superior S ∈ ℜnxn con los bloques diagonales
correspondientes a valores propios en el mismo cluster, matriz ortogonal
Q ∈ ℜ nxn ( S = Q S Q T ), vector g ∈ ℜm que contiene los índices de los
bloques de la matriz S , vector c ∈ ℜ p que contiene los índices de los
clusters de la matriz S .
1.
2.
3.
4.
5
6
S =S
Q = In
cont = true
Mientras cont
cont = false
4.1
4.2
Para k = 1 : m − 1
4.2.1 Si c(k ) > c(k + 1)
4.2.1.1 Intercambiar los bloques diagonales de la matriz S
apuntados por g (k ) y g (k + 1) actualizando
adecuadamente la matriz Q y el vector g
4.2.1.2 caux = c(k )
4.2.1.3 c(k ) = c(k + 1)
4.2.1.4 c(k + 1) = caux
4.2.1.5 cont = true
k =1
Para j = 2 : m
6.1
Si c( j ) ≠ c(k )
6.1.1 k = k + 1
6.1.2 g (k ) = g ( j )
6.1.3 c(k ) = c( j )
Algoritmo 3.21: Reordenación de la forma real de Schur para la agrupación en clusters
de los valores propios cercanos.
Una vez se han determinado S y Q se aplica un esquema semejante al utilizado en el
Algoritmo 3.17 o en el Algoritmo 3.18. A continuación se presenta el algoritmo
completo.
123
Capítulo 3: Cálculo de Funciones de Matrices
[ F , Q] = dqtfunscc( S , Q, f , tol ) .
Entradas: Matriz casi triangular superior S ∈ ℜnxn y matriz ortogonal Q ∈ ℜ nxn
procedentes de descomposición real de Schur de la matriz A ∈ ℜ nxn ,
función f ( z ) , tolerancia tol ∈ ℜ + .
Salida:
Matriz casi triangular superior
F = f ( S ) ∈ ℜnxn , matriz ortogonal
actualizada Q ∈ ℜ nxn .
1
2
3
4
g = dlagbs(vr , vi) (Algoritmo 3.19)
c = dlagc(vr , vi, g , tol ) (Algoritmo 3.20)
[ S , Q, g , c] = dlabex( S , Q, g , c) (Algoritmo 3.21)
Para k = 1 : p
4.1
Para j = k : p
4.1.1 i = j − k + 1
4.1.2 Si k > 1
4.1.2.1 Fij = dtrsyl ( Sii ,− S jj , Fij ) (Algoritmo 3.14)
4.1.3 Si no
4.1.3.1 Calcular F jj = f ( S jj ) (se puede utilizar, por
ejemplo, cualquier algoritmo basado en los
aproximantes diagonales de Padé)
4.1.4 Actualizar los bloques F1 j ,L, Fi −1 j
4.1.5 Actualizar los bloques Fij +1 ,L, Fip
Algoritmo 3.22: Calcula funciones de matrices mediante la agrupación en cluster de los
valores propios cercanos de un matriz.
El coste computacional depende del número de reordenaciones realizadas. Si no hubiese
reordenaciones, el coste computacional coincidiría con el correspondiente al algoritmo
orientado a bloques.
3.3.4 Algoritmo Basado en los Aproximantes Diagonales de
Padé
Este método consiste en calcular f ( S ) mediante una variante del método de los
aproximantes diagonales de Padé para matrices casi triangulares superiores. El
algoritmo resultante se presenta a continuación.
124
Capítulo 3: Cálculo de Funciones de Matrices
B = dqtfunspp ( A) .
Entrada: Matriz A ∈ ℜ nxn y función f (x) .
Salida:
1
2
3
Matriz B = f ( A) ∈ ℜ nxn .
[Q, S ] = schur ( A) (obtiene la matriz casi triangular superior S ∈ ℜnxn y matriz
ortogonal Q ∈ ℜ nxn procedentes de descomposición real de Schur de la matriz
A ∈ ℜ nxn )
F = f ( S ) (se puede utilizar, por ejemplo, cualquier algoritmo basado en los
aproximantes diagonales de Padé adaptado a matrices casi triangulares
superiores)
B = QFQT
Algoritmo 3.23: Algoritmo para el cálculo de funciones de matrices basado en la
descomposición real de Schur de una matriz y en los aproximantes
diagonales de Padé.
3.4 Conclusiones
La primera aportación de este capítulo es la implementación de un algoritmo general,
basado en los aproximantes diagonales de Padé, que permite calcular funciones
analíticas de matrices. Aunque hay dos etapas que dependen de la función y de la matriz
considerada (reducción de la norma de la matriz y aplicación de las transformaciones
inversas), siempre es posible utilizar estrategias que lo permitan; por ejemplo, el
escalado y potenciación para las exponenciales, escalado para las funciones logarítmicas
y con radicales, etc. Basta conocer el desarrollo en serie de Taylor de la función, para
así determinar la aproximación diagonal de Padé y de ahí calcular la función matricial
correspondiente.
Esto permite aplicar el método de los aproximantes diagonales de Padé a otras
funciones matriciales distintas de las mencionadas en el Capítulo 2. Por ejemplo, se ha
presentado una forma de calcular potencias fraccionarias de una matriz basada en los
aproximantes diagonales de Padé. También se ha demostrado una fórmula que permite
calcular el seno de una matriz mediante un nuevo algoritmo basado en los aproximantes
diagonales de Padé.
La segunda aportación de este capítulo ha sido el diseño de varios algoritmos para el
cálculo de Funciones de Matrices basados en la forma real de Schur S de una matriz
cuadrada. Las estrategias utilizadas han sido:
1. Diagonalización a bloques de la matriz.
Consiste en obtener una forma diagonal a bloques de la matriz A de manera que
cada bloque contiene a los valores propios que se encuentran próximos entre sí. En
este caso el valor F = f ( A) se obtiene a partir del valor de la función sobre su
forma diagonal a bloques.
2. Ecuación Conmutante.
a.
Sin agrupación de valores propios.
Algoritmo orientado a columnas: De izquierda a derecha, se obtienen
sucesivamente las columnas de bloques de la matriz F . Para cada columna se
calcula, en primer lugar, el bloque diagonal F jj utilizando la expresión
125
Capítulo 3: Cálculo de Funciones de Matrices
F jj = f ( S jj ) , continuando con los bloques que se encuentran por encima de F jj ,
resolviendo para ello ecuaciones matriciales de Sylvester.
Algoritmo orientado a filas: De abajo hacia arriba, se obtienen sucesivamente las
filas de bloques de la matriz F . Para cada fila de bloques se calcula, en primer
lugar, el bloque diagonal F jj utilizando la expresión F jj = f ( S jj ) , continuando
con los bloques que se encuentran a la derecha de F jj , resolviendo para ello
ecuaciones matriciales de Sylvester.
Algoritmo orientado a diagonales: En primer lugar se determinan los bloques
diagonales F jj utilizando la expresión F jj = f ( S jj ) , calculando a continuación
las superdiagonales de abajo hacia arriba resolviendo para ello ecuaciones
matriciales de Sylvester.
Algoritmos orientados a bloques: A partir de un tamaño dado r , la matriz S se
divide en bloques de manera que los valores propios conjugados se deben
encontrar en el mismo bloque diagonal. De este modo, los bloques diagonales
son de tamaño rxr o (r + 1) x(r + 1) , salvo el último bloque que tendrá la
dimensión adecuada. A continuación se obtienen los bloques diagonales
F jj = f ( S jj ) utilizando para ello otros algoritmos para el cálculo de Funciones
de Matrices como, por ejemplo, los aproximantes de Padé o los algoritmos
orientados a columnas o diagonales. Según la forma de calcular los bloques de la
matriz F , se pueden utilizar tres algoritmos: algoritmo orientado a columnas de
bloques, algoritmo orientado a filas de bloques y algoritmo orientado a
diagonales de bloques.
b. Con agrupación de valores propios.
En aquellas ocasiones en que la matriz S tiene valores propios cercanos entre sí,
es conveniente agruparlos de manera que la resolución de la Ecuación
Conmutante se realice con precisión. Para ello se deben realizar reordenaciones
en la matriz S , utilizando transformaciones ortogonales de semejanza, de
manera que los valores propios cercanos se encuentren en un mismo bloque
diagonal. De este modo, la matriz S se puede estructurar por bloques de manera
que los bloques diagonales se encuentren suficientemente separados entre sí.
Estas agrupaciones se deben realizar teniendo en cuenta que el maximizar la
separación entre los bloques diagonales puede conducir a obtener grandes
bloques con valores propios cercanos, con el consiguiente aumento de las
reordenaciones de los valores propios sobre la diagonal de S .
Una vez se ha realizado la división en bloques de la matriz S , los bloques
diagonales F jj = f ( S jj ) se pueden calcular utilizando, por ejemplo, los
algoritmos basados en la aproximación diagonal de Padé.
Según el orden utilizado en el cálculo de bloques, se pueden obtener tres
algoritmos: algoritmo orientado a columnas de bloques, algoritmo orientado a
filas de bloques o algoritmo orientado a diagonales de bloques.
3. Aproximantes de Padé
Este método consiste en calcular f (S ) mediante una variante del método de los
aproximantes diagonales de Padé para matrices casi triangulares superiores.
126
Capítulo 3: Cálculo de Funciones de Matrices
Los algoritmos basados en la descomposición real de Schur de una matriz son
computacionalmente más costosos que los basados en los aproximantes diagonales de
Padé, aunque en muchas ocasiones son más precisos que estos últimos. A continuación
se comparan los algoritmos basados en la descomposición real de Schur de una matriz.
•
Aunque los algoritmos orientados a filas y a columnas tienen una formulación
similar, la forma de acceder a los datos es distinta. Como cabe esperar ([Ibañ97]),
si se utiliza el lenguaje de programación FORTRAN se obtienen mejores
prestaciones al utilizar un algoritmo orientado a columnas, y si el lenguaje
utilizado es C las mejores prestaciones se obtienen un algoritmo orientado a filas.
En este capítulo se han descrito únicamente los algoritmos orientados a columnas
puesto que en las implementaciones se ha utilizado el lenguaje FORTRAN.
•
Los algoritmos orientados a bloques resultan ser habitualmente más eficientes
que los orientados a filas o columnas, pues hacen uso de la memoria caché de los
ordenadores. De este modo, si se elige convenientemente el tamaño de bloque, se
produce una mayor localidad de datos y, por tanto, un menor intercambio de
datos entre la memoria principal y la memoria secundaria.
•
Los algoritmos con un menor coste computacional corresponden a los basados en
la Ecuación Conmutante sin reordenación de valores propios y al basado en los
aproximantes diagonales de Padé. El problema de los primeros es que no se
pueden utilizar si la matriz tiene valores propios cercanos. Para el segundo
método es necesario adaptar, convenientemente, los algoritmos basados en las
aproximaciones de Padé para el caso de matrices casi triangulares superiores.
3. Los algoritmos que tienen un mayor coste computacional corresponden al basado
en diagonalización a bloques de la matriz y al basado en la Ecuación Conmutante
con agrupación en clusters de los valores propios. La ventaja de estos algoritmos,
frente al resto de los algoritmos basados en la Ecuación Conmutante, es que se
pueden aplicar para cualquier matriz incluso si sus valores propios están muy
próximos entre sí.
127
Capítulo 4: Linealización a Trozos
Capítulo 4 Linealización a Trozos
4.1 Resumen de Contenidos
En la formulación de modelos de muchos problemas científicos y técnicos aparecen
EDOs cuya solución analítica no es conocida. Es por ello que la comunidad
investigadora asociada a este campo viene realizando, desde hace tiempo, un gran
esfuerzo en el estudio de métodos numéricos que permitan la resolución aproximada de
las mismas. En los últimos años un gran número de libros y artículos se han ocupado del
estudio de métodos numéricos para la integración de EDOs, especialmente las de tipo
rígido. Los más usados en la práctica son los de tipo implícito, especialmente los
basados en métodos lineales multipaso, como por ejemplo los métodos Backward
Differentiation Formulae (BDF),[HaWa96], por ser muy eficientes para un gran número
de problemas de tipo rígido.
La Ecuación Diferencial Matricial de Riccati (EDMR) aparece frecuentemente en las
ciencias aplicadas y en la ingeniería. Esta ecuación juega un papel fundamental en
problemas de control óptimo, filtrado, estimación, y en la resolución de ciertos
problemas de contorno de ecuaciones diferenciales. Una de las técnicas, ampliamente
utilizadas para resolver dicha ecuación, consiste en aplicar el método BDF. Este método
está especialmente indicado para resolver EDMRs de tipo rígido. Otro de los métodos
que se pueden aplicar en la resolución de EDMRs consiste en la vectorización de
ecuaciones diferenciales matriciales que consiste en convertir una EDMR en otra de tipo
vectorial y aplicar un método de resolución de EDOs. El problema que se plantea en
este caso es la gran dimensión de la EDO vectorial obtenida.
En este capítulo se describen nuevos métodos para la resolución de EDOs y EDMRs. En
esta tesis se ha optado por profundizar en la metodología basada en la linealización a
trozos para el desarrollo de nuevos algoritmos que sean competitivos, en términos
computacionales, frente a otros que se han venido utilizando tradicionalmente
En el caso de EDOs se demuestra un nuevo teorema (Teorema 4.1) que permite utilizar
la técnica de linealización a trozos, aunque la matriz Jacobiana sea singular. Como
consecuencia de este teorema se desarrollan tres nuevos métodos: método basado en los
aproximantes diagonales de Padé, método basado en la Ecuación Conmutante y método
basado en los subespacios de Krylov.
En el caso de EDMRs se ha desarrollado una nueva metodología, no realizada hasta
ahora, basada en la técnica de linealización a trozos. Esta metodología consiste,
básicamente, en transformar la EDMR en una EDO de gran dimensión y aplicarle la
linealización a trozos. Debido a la gran complejidad computacional y la gran cantidad
de memoria necesaria, se han desarrollado métodos especiales para la resolución de la
EDO anterior.
El primero de ellos está basado en un un nuevo teorema (Teorema 4.3) que permite
transformar un problema vectorial de gran dimensión en otro matricial consistente en el
cálculo de una expresión en la que aparecen bloques de las exponenciales de dos
129
Capítulo 4: Linealización a Trozos
matrices. Adaptando convenientemente el método de los aproximantes de Padé para
matrices definidas a bloques, se obtiene un algoritmo eficiente en términos de costes
computacionales y de almacenamiento.
El segundo método es consecuencia de un teorema basado en la Ecuación Conmutante
(Teorema 4.4) que permite transformar el problema vectorial de gran dimensión en otro
matricial consistente la resolución de tres ecuaciones matriciales de Sylvester.
El tercer método consiste en calcular la aproximación de la solución en un cierto
instante de tiempo mediante el producto de la exponencial de una matriz definida a
bloques por un vector, utilizando para ello una adaptación basado en el método de los
subespacios de Krylov.
La naturaleza especial de los métodos de linealización a trozos ha hecho necesario
modificar, adecuadamente, los algoritmos desarrollados para utilizarlos en la resolución
de EDOs autónomas y de EDMRs con coeficientes constantes, explotando las
características de este tipo de ecuaciones para así disminuir los costes computacionales
y de almacenamiento necesarios.
El contenido de este capítulo está estructurado en cuatro secciones. En la segunda
sección se describen los tres métodos de linealización a trozos, anteriormente
comentados, para la resolución de EDOs y la adaptación de los mismos en la resolución
de EDOs autónomas.
De igual modo, en la tercera sección se detallan los tres métodos de resolución de
EDMRs basados en la linealización a trozos y su adaptación a la resolución de EDMRs
con coeficientes constantes.
En la última sección se exponen las conclusiones de este capítulo.
Como se describió en la sección 1.1, la nomenclatura utilizada para los algoritmos
desarrollados en esta tesis es: txxyyyzzz, siendo t el tipo de dato utilizado, xx el tipo de
matriz, yyy el problema que resuelve y zzz el método utilizado. El significado de los seis
últimos caracteres para los algoritmos que resuelven EDOs y EDMRs es:
• yyy: función considerada.
− yyy=edo para los algoritmos que resuelven EDOs;
− yyy=dmr para los algoritmos que resuelven EDMRs.
• zzz: método utilizado.
− bdf: indica que se utiliza el método BDF para la resolución de EDOs;
− lpn: indica que se utiliza el método de linealización a trozos basado en los
aproximantes diagonales de Padé para la resolución de EDOs no autónomas;
− lcn: indica que se utiliza el método de linealización a trozos basado en la
Ecuación Conmutante para la resolución de EDOs no autónomas;
− lkn: indica que se utiliza el método de linealización a trozos basado en los
subespacios de Krylov para la resolución de EDOs no autónomas;
− lpa: indica que se utiliza el método de linealización a trozos basado en los
aproximantes diagonales de Padé para la resolución de EDOs autónomas;
− lca: indica que se utiliza el método de linealización a trozos basado en la
Ecuación Conmutante para la resolución de EDOs autónomas;
130
Capítulo 4: Linealización a Trozos
− lka: indica que se utiliza el método de linealización a trozos basado en los
subespacios de Krylov para la resolución de EDOs autónomas;
− bdv: indica que se utiliza el método BDF para la resolución de EDMRs con
coeficientes variables;
− lpv: indica que se utiliza el método de linealización a trozos basado en los
aproximantes diagonales de Padé para la resolución de EDMRs con
coeficientes variables;
− lcv: indica que se utiliza el método de linealización a trozos basado en la
Ecuación Conmutante para la resolución de EDMRs con coeficientes variables;
− lkv: indica que se utiliza el método de linealización a trozos basado en los
subespacios de Krylov para la resolución de EDMRs con coeficientes
variables;
− bdc: indica que se utiliza el método BDF para la resolución de EDMRs con
coeficientes constantes;
− lpc: indica que se utiliza el método de linealización a trozos basado en los
aproximantes diagonales de Padé para la resolución de EDMRs con
coeficientes constantes;
− lcc: indica que se utiliza el método de linealización a trozos basado en la
Ecuación Conmutante para la resolución de EDMRs con coeficientes
constantes;
− lkc: indica que se utiliza el método de linealización a trozos basado en los
subespacios de Krylov para la resolución de EDMRs con coeficientes
constantes.
4.2 Métodos de Linealización a Trozos para EDOs
4.2.1 EDOs no Autónomas
Sea la EDO con valores iniciales
( 4.1 )
x' (t ) = f (t , x(t )) , t ∈ [t 0 , t f ] ,
x(t0 ) = x0 ∈ ℜ n ,
cumpliendo f (t , x) las hipótesis del Teorema 2.10 (página 56).
Aplicando la técnica de linealización a trozos descrita en el apartado 2.3.4, se tiene que
dada una partición t 0 < t1 < L < t l −1 < t l = t f , es posible aproximar la EDO ( 4.1 )
mediante el conjunto de EDLs resultantes de la aproximación lineal de f (t , x(t )) en
cada subintervalo, es decir,
( 4.2 ) y ' (t ) = f i + J i ( y (t ) − yi ) + gi (t − ti ) , t ∈ [t i , t i +1 ] , y (t i ) = yi , i = 0,1,L, l − 1 ,
siendo
f i = f (ti , yi ) ∈ ℜ n ,
131
Capítulo 4: Linealización a Trozos
Ji =
∂f
(ti , yi ) ∈ ℜ nxn ,
∂x
gi =
∂f
(ti , yi ) ∈ ℜ n .
∂t
Si J i es invertible, entonces la solución de la EDL ( 4.2 ) es
y (t ) = yi − J i−1[ f i + g i (t − t i ) − J i−2 g i + e J i (t −ti ) ( J i−1 f i + J i−2 g i )] .
A continuación se enuncia y demuestra un teorema que permite obtener la solución de la
EDL ( 4.2 ) aunque J i no sea invertible.
Teorema 4.1.
La solución de la EDL ( 4.2 ) se puede expresar como
y (t ) = yi + F12( i ) (t − ti ) f i + F13( i ) (t − ti ) gi ,
donde F12( i ) (t − ti ) y F13( i ) (t − ti ) son, respectivamente, los bloques (1,2) y (1,3) de la
matriz eCi (t − t i ) , con
⎡Ji
C i = ⎢⎢0 n
⎢⎣0 n
0n ⎤
I n ⎥⎥ .
0 n ⎥⎦
In
0n
0n
Demostración.
La solución de la EDL ( 4.2 ) es
t
y (t ) = yi + ∫ e J i (t −τ ) [ f i + g i (τ − t i )]dτ .
ti
Si en la expresión anterior se realiza el cambio de variable
s = τ − ti ,
y se define
θ = t − ti ,
entonces
ds = dτ ,
t − τ = t − s − ti = θ − s ,
por lo tanto
θ
( 4.3 )
y (t ) = yi + ∫ e
0
J i (θ − s )
θ
[ f i + g i s ]ds = yi + ∫ e
0
J i (θ − s )
θ
ds f i + ∫ e J i (θ − s ) sdsg i .
0
Si se considera la matriz triangular superior a bloques definida por
132
Capítulo 4: Linealización a Trozos
⎡Ji
C i = ⎢⎢0 n
⎢⎣0 n
( 4.4 )
In
0n
0n
0n ⎤
I n ⎥⎥ ,
0 n ⎥⎦
entonces la exponencial de la matriz Ciθ , tiene la forma
e Ciθ
( 4.5 )
⎡ F11( i ) (θ ) F12( i ) (θ ) F13(i ) (θ )⎤
⎥
⎢
F22( i ) (θ ) F23(i ) (θ )⎥ ,
= ⎢ 0n
⎢ 0n
F33(i ) (θ )⎥⎦
0n
⎣
siendo F jk(i ) (θ ) , 1 ≤ j ≤ k ≤ 3 , matrices cuadradas de orden n dependientes del
parámetro θ .
Como
de Ciθ
= Ci e Ciθ , e Ciθ
dθ
θ =0
= I 3n ,
entonces
⎡ dF11(i ) (θ )
⎢ dθ
⎢
⎢ 0
n
⎢
⎢
⎢ 0n
⎣
dF12( i ) (θ )
dθ
dF22( i ) (θ )
dθ
0n
dF13( i ) (θ ) ⎤
dθ ⎥⎥ ⎡ J i
dF23( i ) (θ ) ⎥ ⎢
= 0n
dθ ⎥ ⎢
dF33( i ) (θ ) ⎥ ⎢⎣0n
⎥
dθ ⎦
In
0n
0n
0n ⎤ ⎡ F11(i ) (θ ) F12( i ) (θ ) F13( i ) (θ )⎤
⎥
⎢
I n ⎥⎥ ⎢ 0n
F22( i ) (θ ) F23( i ) (θ )⎥
0n ⎥⎦ ⎢⎣ 0n
0n
F33( i ) (θ )⎥⎦
⎡ J i F11( i ) (θ ) J i F12( i ) (θ ) + F22( i ) (θ ) J i F13( i ) (θ ) + F23( i ) (θ )⎤
⎥
⎢
0n
F33(i ) (θ )
= ⎢ 0n
⎥.
⎥
⎢ 0n
0n
0n
⎦
⎣
Igualando los bloques correspondientes en ambos miembros de la expresión anterior, se
obtienen las EDMLs
( 4.6 )
dF11( i )
= J i F11( i ) (θ ) , F11( i ) (0) = I n ,
dθ
( 4.7 )
dF22(i ) (θ )
= 0 , F22( i ) (0) = I n ,
dθ
( 4.8 )
dF33(i ) (θ )
= 0 , F33( i ) (0) = I n ,
dθ
( 4.9 )
dF23( i ) (θ )
= F33( i ) (θ ) , F23( i ) (0) = 0 n ,
dθ
( 4.10 )
dF12( i ) (θ )
= J i F12( i ) (θ ) + F22( i ) (θ ) , F12( i ) (0) = 0 n ,
dθ
( 4.11 )
dF13(i ) (θ )
= J i F13( i ) (θ ) + F23(i ) (θ ) , F13( i ) (0) = 0 n ,
dθ
133
Capítulo 4: Linealización a Trozos
Resolviendo las EDMLs ( 4.6 ), ( 4.7 ) y ( 4.8 ), se tiene que
F11( i ) (θ ) = e J iθ ,
F22( i ) (θ ) = I n ,
F33( i ) (θ ) = I n .
Resolviendo las EDMLs ( 4.9 ) ( 4.10 ) y ( 4.11 ), resulta que
F23( i ) (θ ) = θI n ,
θ
F12( i ) (θ ) = ∫ e J i (θ − s ) ds ,
( 4.12 )
0
θ
F13( i ) (θ ) = ∫ e J i (θ − s ) sds ,
( 4.13 )
0
y por lo tanto
e C iθ
⎡ J iθ
⎢e
⎢
= ⎢ 0n
⎢0
⎢ n
⎢⎣
θ
∫e
J i (θ − s )
θ
ds
0
In
0n
⎤
J i (θ − s )
e
sds
⎥
∫0
⎥
θI n
⎥.
⎥
In
⎥
⎥⎦
Teniendo en cuenta las expresiones ( 4.3 ), ( 4.12 ) y ( 4.13 ) se deduce que la solución
de la EDL ( 4.2 ) viene dada por
y (t ) = yi + F12( i ) (θ ) f i + F13( i ) (θ ) g i .
Como θ = t − t i , entonces
y (t ) = yi + F12( i ) (t − ti ) f i + F13( i ) (t − ti ) gi ,
con lo que queda demostrado el teorema.
Según el teorema anterior, la solución aproximada en el instante ti +1 de la EDO ( 4.1 )
se puede obtener a partir de la solución aproximada en ti , utilizando la expresión
( 4.14 )
yi +1 = yi + F12( i ) (∆ti ) f i + F13( i ) (∆ti ) g i ,
con ∆ti = ti +1 − ti , siendo F12( i ) (∆ti ) y F13( i ) (∆ti ) , respectivamente, los bloques (1,2) y
(1,3) de la matriz e Ci ∆ti , donde
( 4.15 )
⎡ Ji
Ci = ⎢⎢0 n
⎢⎣0 n
In
0n
0n
0n ⎤
I n ⎥⎥ .
0 n ⎥⎦
El siguiente algoritmo calcula, aproximadamente, la solución de la EDO ( 4.1 )
mediante el método de linealización a trozos basado en el cálculo de la exponencial de
la matriz definida a bloques Ci ∆ti .
134
Capítulo 4: Linealización a Trozos
y = dgeedolgn(t , data, x0 )
Entradas: Vector de tiempos t ∈ ℜ l +1 , función data que calcula J (t , x) ∈ ℜ nxn ,
f (t , x) ∈ ℜ n y g (t , x) ∈ ℜ n , vector inicial x0 ∈ ℜ n .
Salidas: Matriz Y = [ y 0 , y1 ,L , y l ] ∈ ℜ nx (l +1) , yi ∈ ℜ n , i = 0,1, L , l .
1
2
y 0 = x0
Para i = 0 : l − 1
2.1
[ J , f , g ] = data (ti , yi ) .
∆t = ti +1 − ti
2.2
2.3
2.4
2.5
⎡J
C = ⎢⎢0 n
⎢⎣0 n
F = eC∆t
yi +1 = yi
In
0n
0n
0n ⎤
I n ⎥⎥
0 n ⎥⎦
+ F12 f + F13 g
Algoritmo 4.1: Resolución de EDOs mediante el método de linealización a trozos
basado en el cálculo de la exponencial de una matriz.
El problema de calcular
yi +1 en el Algoritmo 4.1 son los elevados costes
computacionales y de almacenamiento necesarios para obtener eC∆t .
4.2.1.1 Método Basado en los Aproximantes Diagonales de Padé
En este subapartado se describe la manera de obtener la aproximación yi +1 de la
expresión ( 4.14 ) sin el cálculo explícito de la exponencial de la matriz Ci ∆ti ,
utilizando para ello una adaptación a bloques del método de los aproximantes
diagonales de Padé.
Puesto que el cálculo de la exponencial de una matriz se debe realizar muchas veces, no
hace falta calcular cada vez los coeficientes de los polinomios de la aproximación
diagonal de Padé de la función exponencial. Además, ya que los coeficientes de los
términos de grado cero de los polinomios de la aproximación diagonal de Padé son
iguales a 1, tan sólo hace falta calcular los correspondientes a los términos de grado
mayor que cero. En el siguiente algoritmo se calculan dichos coeficientes.
135
Capítulo 4: Linealización a Trozos
[c1 , c2 ] = dlapex(q )
Entrada: Grado q ∈ Z + de los polinomios de la aproximación diagonal de Padé.
Salida:
1
2
3
Vectores c1 , c2 ∈ ℜ q que contienen los coeficientes de los términos de
grado mayor que 0 correspondientes a los polinomios de la aproximación
diagonal de Padé de la función exponencial.
c1 (1) = 0.5
c2 (1) = −0.5
Para k = 2 : q
3.1
3.2
q − k +1
c1 (k − 1)
(2q − k + 1)k
c2 (k ) = (−1) k c1 (k )
c1 (k ) =
Algoritmo 4.2: Obtiene los polinomios de la aproximación diagonal de Padé de la
función exponencial.
A continuación se presenta una modificación del Algoritmo 2.1 en el que se dan, como
datos de entrada, los coeficientes de los términos de grado mayor que cero de los
polinomios que definen la aproximación diagonal de Padé de la función exponencial.
F = dlaexp( A, c1 ,c 2 ) .
Entradas: Matriz A ∈ ℜ nxn , vectores c1 , c2 ∈ ℜ q que contienen los coeficientes de los
términos de grado mayor que cero de los polinomios que definen la
aproximación diagonal de Padé de la función exponencial.
Salida:
1
2
3
4
5
6
7
8
Matriz F = e A ∈ ℜ nxn .
nor =|| A ||∞
j A = max(0,1 + int(log 2 (nor )))
1
s = jA
2
A = sA
X=A
N = I n + c1 (1) A
D = I n + c2 (1) A
Para k = 2 : q
8.1
X = XA
N = N + c1 (k ) X
8.2
D = D + c2 (k ) X
8.3
9 Calcular F resolviendo la ecuación DF = N
10 Para k = 1 : j A
10.1 F = F 2
Algoritmo 4.3: Calcula la exponencial de una matriz, a partir de los polinomios de la
aproximación diagonal de Padé de la función exponencial.
El coste aproximado del algoritmo anterior es
136
Capítulo 4: Linealización a Trozos
2(q + j A + 1 / 3)n 3 flops,
siendo j A = max(0,1 + int(log 2 (|| A || ∞ ))) .
A continuación se describe la manera de adaptar el algoritmo anterior para calcular
únicamente los bloques (1,2) y (1,3) de la exponencial de la matriz
⎡Ji
A = ⎢⎢0 n
⎢⎣0 n
( 4.16 )
0n ⎤
I n ⎥⎥ .
0 n ⎥⎦
In
0n
0n
Sean
⎡ X 11
X = ⎢⎢ 0 n
⎢⎣ 0 n
⎡ N11
N = ⎢⎢ 0 n
⎢⎣ 0 n
X 13 ⎤
X 23 ⎥⎥ ,
X 33 ⎥⎦
X 12
X 22
0n
N13 ⎤
N 23 ⎥⎥ ,
N 33 ⎥⎦
N12
N 22
0n
⎡ D11
D = ⎢⎢ 0 n
⎢⎣ 0 n
D13 ⎤
D23 ⎥⎥ ,
D33 ⎥⎦
D12
D22
0n
⎡ E11
E = ⎢⎢ 0 n
⎢⎣ 0 n
E13 ⎤
E23 ⎥⎥ ,
E33 ⎥⎦
E12
E22
0n
las matrices que aparecen en el Algoritmo 4.3, cuando éste se aplica a la matriz definida
en ( 4.16 ).
4
A = sA .
⎡ sJ i
A = sA = ⎢⎢ 0 n
⎢⎣ 0 n
sI n
0n
0n
0n ⎤
sI n ⎥⎥ .
0 n ⎥⎦
Haciendo J i = sJ i , se tiene después de este paso
5
⎡Ji
A = ⎢⎢0 n
⎢⎣0 n
sI n
⎡ Ji
X = ⎢⎢0 n
⎢⎣0 n
sI n
0n
0n
0n ⎤
sI n ⎥⎥ .
0 n ⎥⎦
X = A.
0n
0n
0n ⎤
sI n ⎥⎥ .
0 n ⎥⎦
137
Capítulo 4: Linealización a Trozos
6
N = I n + c1 (1) A .
⎡ N11
⎢0
⎢ n
⎢⎣ 0 n
N12
N 22
0n
N13 ⎤ ⎡ I n + c1 (1) J i
0n
N 23 ⎥⎥ = ⎢⎢
0n
N 33 ⎥⎦ ⎢⎣
c1 (1) sI n
In
0n
⎤
c1 (1) sI n ⎥⎥ ,
I n ⎥⎦
0n
luego
N11 = I n + c1 (1) J i ,
N 12 = c1 (1) sI n ,
N13 = 0 n ,
N 22 = I n ,
N 23 = c1 (1) sI n ,
N 33 = I n .
7
D = I n + c2 (1) A .
⎡ D11
⎢0
⎢ n
⎢⎣ 0 n
D12
D22
0n
D13 ⎤ ⎡ I n + c2 (1) J i
0n
D23 ⎥⎥ = ⎢⎢
0n
D33 ⎥⎦ ⎢⎣
c2 (1) sI n
In
0n
⎤
c2 (1) sI n ⎥⎥ ,
I n ⎥⎦
0n
luego
D11 = I n + c2 (1) J i ,
D12 = c 2 (1) sI n ,
D13 = 0 n ,
D22 = I n ,
D23 = c 2 (1) sI n ,
D33 = I n .
8.1
⎡ X 11
⎢0
⎢ n
⎢⎣ 0n
X = XA .
X 12
X 22
0n
X 13 ⎤ ⎡ X 11
X 23 ⎥⎥ = ⎢⎢ 0n
X 33 ⎥⎦ ⎢⎣ 0n
X 12
X 22
0n
X 13 ⎤ ⎡ J i
X 23 ⎥⎥ ⎢⎢0n
X 33 ⎥⎦ ⎢⎣0n
sI n
0n
0n
0 n ⎤ ⎡ X 11 J i
sI n ⎥⎥ = ⎢⎢ 0n
0 n ⎥⎦ ⎢⎣ 0n
sX 11
0n
0n
sX 12 ⎤
0n ⎥⎥.
0n ⎥⎦
Teniendo en cuenta las dependencias de datos, la forma de calcular
X ij , 1 ≤ i ≤ j ≤ 3 , dentro del bucle 8 es
X 13 = sX 12 ,
X 12 = sX 11 ,
X 11 = X 11 J i ,
138
Capítulo 4: Linealización a Trozos
8.2.
siendo X 22 , X 23 y X 33 matrices nulas.
N = N + c1 (k ) X .
⎡ N11
⎢0
⎢ n
⎢⎣ 0 n
N12
N 22
0n
N13 ⎤ ⎡ N11 + c1 (k ) X 11
N 23 ⎥⎥ = ⎢⎢
0n
N 33 ⎥⎦ ⎢⎣
0n
N12 + c1 (k ) X 12
N 22
0n
N13 + c1 (k ) X 13 ⎤
⎥.
N 23
⎥
⎥⎦
N 33
Por lo tanto, las matrices N 22 , N 23 y N 33 no variaran dentro del
bucle, conteniendo el valor previo
N 22 = I n ,
N 23 = c1 (1) sI n ,
N 33 = I n .
8.3. D = D + c2 (k ) X .
⎡ D11
⎢0
⎢ n
⎢⎣ 0n
D12
D22
0n
D13 ⎤ ⎡ D11 + c2 (k ) X 11
D23 ⎥⎥ = ⎢⎢
0n
D33 ⎥⎦ ⎢⎣
0n
D12 + c2 (k ) X 12
D22
0n
D13 + c2 (k ) X 13 ⎤
⎥.
D23
⎥
⎥⎦
D33
Por lo tanto, las matrices D22 , D23 y D33 no variaran dentro del bucle,
conteniendo el valor previo,
D22 = I n ,
D23 = c2 (1) sI n ,
D33 = I n .
9
Calcular F resolviendo ecuación DF = N .
⎡ D11
⎢0
⎢ n
⎢⎣ 0n
D12
In
0n
D13 ⎤ ⎡ F11
c2 (1) sI n ⎥⎥ ⎢⎢ 0n
I n ⎥⎦ ⎢⎣ 0n
F12
F22
0n
F13 ⎤ ⎡ N11
F23 ⎥⎥ = ⎢⎢ 0n
F33 ⎥⎦ ⎢⎣ 0n
N12
In
0n
N13 ⎤
c1 (1) sI n ⎥⎥.
I n ⎥⎦
luego
D11 F11 = N11 ,
D11 F12 + D12 F22 = N12 ,
D11 F13 + D12 F23 + D13 F33 = N13 ,
F22 = I n ,
F23 + c2 (1) sF33 = c1 (1) sI n ,
F33 = I n .
139
Capítulo 4: Linealización a Trozos
Teniendo en cuenta que c1 (1) = 0.5 y c2 (1) = −0.5 , entonces F23 = sI n .
Por lo tanto, las matrices F11 , F12 y F13 se pueden obtener resolviendo las
ecuaciones
D11 F11 = N11 ,
D11 F12 = N12 − D12 ,
D11 F13 = N13 − sD12 − D13 .
Luego sólo basta conocer de los pasos anteriores N11 , N12 , N13 , D11 , D12 y
D13 , para determinar F11 , F12 y F13 en el paso 9.
10.1.
F = F2
Realizando el producto por bloques
⎡ F11
⎢0
⎢ n
⎢⎣ 0 n
F12
F22
0n
F13 ⎤ ⎡ F11
F23 ⎥⎥ = ⎢⎢ 0 n
F33 ⎥⎦ ⎢⎣ 0 n
F12
F22
0n
F13 ⎤ ⎡ F11
F23 ⎥⎥ ⎢⎢ 0 n
F33 ⎥⎦ ⎢⎣ 0 n
F12
F22
0n
F13 ⎤
F23 ⎥⎥ ,
F33 ⎥⎦
e igualando los bloques correspondientes se tiene
F11 = F112 ,
F12 = F11 F12 + F12 F22 ,
F13 = F11 F13 + F12 F23 + F13 F33 ,
F22 = F222 ,
F23 = F22 F23 + F23 F33 ,
F33 = F332 .
Teniendo en cuenta que antes de entrar en el bucle F22 = I n y
F33 = I n , entonces en cualquier paso del bucle se tiene que F22 = I n y
F33 = I n .
Según esto, el valor de F23 es
F23 = F23 + F23 = 2F23 ,
Sabiendo que F23 = sI n antes de entrar en el bucle, entonces al cabo
de k iteraciones resulta
F23 = 2 k sI n .
Atendiendo a la dependencia de datos, la forma de calcular F11 , F12 y
F13 es
F13 = F11 F13 + F12 F23 + F13 ,
F12 = F11 F12 + F12 ,
F11 = F112 .
140
Capítulo 4: Linealización a Trozos
A continuación se muestra la correspondiente adaptación a bloques del Algoritmo 4.3,
según los pasos anteriormente desarrollados.
yi +1 = dlaop3( J , f , g , yi , ∆t , c1 , c2 ) .
Entradas: Matriz
J ∈ ℜ nxn , vector
f ∈ ℜ n , vector
g ∈ ℜ n , vector
yi ∈ ℜ n ,
incremento de tiempo ∆t ∈ ℜ , vectores c1 , c2 ∈ ℜ q que contienen los
coeficientes de los términos de grado mayor que cero de los polinomios de
la aproximación de Padé de la función exponencial.
Salida:
Vector yi +1 ∈ ℜ n de la expresión ( 4.14 ).
1
nor = ∆t || J || ∞
2
j J∆t = max(0,1 + int(log 2 (nor ))) ; s =
3
4
5
6
X 11 = J ; X 12 = sI n ; X 13 = 0 n
∆t
; J i = sJ
2 j J∆t
8
N11 = I n + c1 (1) J ; N12 = c1 (1) sI n ; N13 = 0 n
D11 = I n + c2 (1) J ; D12 = c2 (1) sI n ; D13 = 0 n
Para k = 2 : q
6.1
X 13 = sX 12 ; X 12 = sX 11 ; X 11 = X 11 J i
N11 = N11 + c1 (k ) X 11 ; N12 = N12 + c1 (k ) X 12 ; N13 = N13 + c1 (k ) X 13
6.2
D11 = D11 + c2 (k ) X 11 ; D12 = D12 + c2 (k ) X 12 ; D13 = D13 + c2 (k ) X 13
6.3
Calcular F11 , F12 y F13 , resolviendo las ecuaciones:
D11 F11 = N11
7.1
7.2
D11 F12 = N12 − D12
7.3
D11 F13 = N13 − sD12 − D13
Para k = 1 : j J∆t
9
8.1
F13 = F11 F13 + sF12 + F13 ; F12 = F11 F12 + F12 ; F11 = F112
8.2
s = 2s
yi +1 = yi + F12 f + F13 g
7
Algoritmo 4.4: Calcula la solución aproximada en el instante t i +1 de una EDO no
autónoma mediante la modificación a bloques del Algoritmo 4.3.
El coste aproximado del algoritmo anterior es
1⎞
⎛
2⎜ q + 3 j J∆t + ⎟n 3 flops,
3⎠
⎝
siendo j J∆t = max(0,1 + int(log 2 (|| J∆t || ∞ ))) .
A continuación se presenta el algoritmo que resuelve EDOs mediante el método de
linealización a trozos basado en los aproximantes diagonales de Padé.
141
Capítulo 4: Linealización a Trozos
y = dgeedolpn(t,data, x0 , q) .
Entradas: Vector de tiempos t ∈ ℜl +1 , función data que calcula f (t , x) ∈ ℜ n ,
J (t , x) ∈ ℜ nxn y g (t , x) ∈ ℜ n , vector inicial x0 ∈ ℜ n , grado q ∈ Z + de los
polinomios de la aproximación diagonal de Padé de la función
exponencial.
Salidas: Matriz Y = [ y 0 , y1 ,L , y l ] ∈ ℜ nx (l +1) , yi ∈ ℜ n , i = 0,1, L , l .
1
2
3
[c1 , c2 ] = dlapex(q ) (Algoritmo 4.2)
y 0 = x0
Para i = 0 : l − 1
3.1
[ J , f , g ] = data (ti , yi )
3.2
3.3
∆t = ti +1 − ti
yi +1 = dlaop3( J , f , g , yi , ∆t , c1 , c2 ) (Algoritmo 4.4)
Algoritmo 4.5: Resolución de EDOs no autónomas mediante el método de
linealización a trozos basado en los aproximantes diagonales de Padé.
4.2.1.2 Método Basado en la Ecuación Conmutante
En este subapartado se describe la forma de obtener la solución aproximada yi +1 de la
expresión ( 4.14 ) mediante la ecuación conmutante.
Por la Propiedad 2.1, se tiene que las matrices
⎡Ji
C i = ⎢⎢0 n
⎢⎣0 n
In
0n
0n
0n ⎤
I n ⎥⎥
0 n ⎥⎦
y
e Ci ∆ti
⎡e J i ∆ti
⎢
= ⎢ 0n
⎢ 0n
⎣
F12( i ) (∆ti ) F13( i ) (∆ti )⎤
⎥
In
I n ∆ti ⎥
0n
I n ⎥⎦
conmutan, por lo que
⎡ Ji
⎢0
⎢ n
⎢⎣0n
In
0n
0n
⎡e J i ∆t i
⎢
= ⎢ 0n
⎢ 0n
⎣
0n ⎤ ⎡e J i ∆t i
⎢
I n ⎥⎥ ⎢ 0n
0n ⎥⎦ ⎢⎣ 0n
F12( i ) (∆ti ) F13( i ) (∆ti )⎤
⎥
In
I n ∆ti ⎥
0n
I n ⎥⎦
F12(i ) (∆ti ) F13(i ) (∆ti )⎤ ⎡ J i
⎥
In
I n ∆ti ⎥ ⎢⎢0n
0n
I n ⎥⎦ ⎢⎣0n
In
0n
0n
0n ⎤
I n ⎥⎥.
0n ⎥⎦
Igualando los bloques (1,2) y (1,3) de la expresión anterior, se tiene que
J i F12( i ) (∆ti ) + I n = e J i ∆ti ,
142
Capítulo 4: Linealización a Trozos
J i F13(i ) (∆ti ) + I n ∆ti = F12( i ) (∆ti ) ,
y de aquí las expresiones
( 4.17 )
J i F12(i ) (∆ti ) f i = (e J i ∆ti − I n ) f i ,
( 4.18 )
J i F12(i ) (∆ti ) g i = (e J i ∆ti − I n ) g i ,
( 4.19 )
J i F13(i ) (∆ti ) g i = ( F12( i ) (∆ti ) − I n ∆ti ) g i = F12( i ) (∆ti ) g i − ∆ti g i ,
Por lo tanto,
yi +1 = yi + F12( i ) (∆ti ) f i + F13( i ) (∆ti ) g i
se puede calcular del siguiente modo:
• Calcular xi = F12(i ) (∆ti ) f i resolviendo la ecuación
J i xi = (e J i ∆ti − I n ) f i .
• Calcular zi = F12(i ) (∆ti ) g i resolviendo la ecuación,
J i zi = (e J i ∆ti − I n ) g i .
• Calcular wi = F13( i ) (∆ti ) g i resolviendo la ecuación
J i wi = zi − ∆ti gi .
• Calcular yi +1 = yi + xi + wi .
Supóngase que J i sea invertible. Puesto que se deben resolver tres sistemas de
ecuaciones lineales con la misma matriz de coeficientes, se puede utilizar la
descomposición LU sin pivotamiento, para reducir el coste computacional del cálculo
de yi +1 , tal como se muestra en el siguiente algoritmo. Si J i fuese singular cabría la
posibilidad de realizar una aproximación basada en la descomposición en valores
singulares (Teorema 6.8) de la matriz J i .
143
Capítulo 4: Linealización a Trozos
yi +1 = dlaoc3( J , f , g , yi , ∆t , c1 , c2 ) .
Entradas: Matriz
J ∈ ℜ nxn , vector
f ∈ ℜ n , vector
g ∈ ℜ n , vector
yi ∈ ℜ n ,
incremento de tiempo ∆t ∈ ℜ , vectores c1 , c2 ∈ ℜ q que contienen los
coeficientes de los términos de grado mayor que cero de los polinomios de
la aproximación de Padé de la función exponencial.
Salida:
1
2
3
4
5
6
7
8
9
Vector yi +1 ∈ ℜ n de la expresión ( 4.14 ).
E = dlaexp( J∆t , c1 ,c 2 ) (Algoritmo 4.3)
[ L, U ] = lu ( J )
Calcular x resolviendo el sistema lineal triangular inferior Lx = ( E − I n ) f
Calcular x resolviendo el sistema lineal triangular superior Ux = x
Calcular z resolviendo el sistema lineal triangular inferior Lz = ( E − I n ) g
Calcular z resolviendo el sistema lineal triangular superior Uz = z
Calcular w resolviendo el sistema lineal triangular inferior Lw = z − ∆tg
Calcular w resolviendo el sistema lineal triangular superior Uw = w
yi +1 = yi + x + w
Algoritmo 4.6: Calcula la solución aproximada en el instante t i +1 de una EDO no
autónoma mediante la ecuación conmutante.
El coste computacional aproximado del algoritmo anterior es
2⎞
⎛
2⎜ q + j J∆t + ⎟n 3 flops,
3⎠
⎝
siendo j J∆t = max(0,1 + int(log 2 (|| J∆t || ∞ ))) .
A continuación se muestra el algoritmo que resuelve EDOs no autónomas mediante el
método de linealización a trozos basado en la ecuación conmutante
y = dgeedolcn(t, data, x0 , q) .
Entradas: Vector de tiempos t ∈ ℜ l +1 , función data que calcula f (t , x) ∈ ℜ n ,
J (t , x) ∈ ℜ nxn y g (t , x) ∈ ℜ n , vector inicial x0 ∈ ℜ n , grado q ∈ Z + de los
polinomios de la aproximación diagonal de Padé de la función
exponencial.
Salidas: Matriz Y = [ y 0 , y1 ,L , y l ] ∈ ℜ nx (l +1) , yi ∈ ℜ n , i = 0,1, L , l .
1
2
3
[c1 , c2 ] = dlapex(q ) (Algoritmo 4.2)
y 0 = x0
Para i = 0 : l − 1
3.1
[ J , f , g ] = data (ti , yi ) .
3.2
3.3
∆t = ti +1 − ti
yi +1 = dlaoc3( J , f , g , yi , ∆t , c1 , c2 ) (Algoritmo 4.6)
Algoritmo 4.7: Resolución de EDOs no autónomas mediante el método de
linealización a trozos basado en la ecuación conmutante.
144
Capítulo 4: Linealización a Trozos
4.2.1.3 Método Basado en los Subespacios de Krylov
El vector yi +1 que aparece en ( 4.14 ), solución aproximada en el instante t i +1 de la EDO
( 4.1 ), se puede expresar como
yi +1 = yi + F12(i ) (∆t i ) f i + F13( i ) (∆t i ) g i = yi + e Ci ∆ti vi ,
( 4.20 )
siendo
⎡Ji
C i = ⎢⎢0 n
⎢⎣0 n
In
0n
0n
0n ⎤
I n ⎥⎥ ,
0 n ⎥⎦
⎡0 nx1 ⎤
vi = ⎢⎢ f i ⎥⎥ .
⎢⎣ g i ⎥⎦
El producto e Ci ∆ti vi de la expresión ( 4.20 ) se puede obtener mediante una modificación
del método basado en los subespacios de Krylov que se describe a continuación.
Dados A ∈ ℜ nxn y v ∈ ℜ n , se pretende calcular, de manera aproximada, el vector e A v .
Para ello se trata de obtener una aproximación del tipo
e A v ≈ Pp −1 ( A)v ,
siendo Pp −1 un polinomio de grado p − 1 , con p << n .
Si se considera el subespacio de Krylov K p generado por los vectores v, Av,L , A p −1v ,
entonces se puede obtener una base ortonormal {v1 , v2 , L , v p } de K p aplicando el
método de Arnoldi.
Entradas: Matriz A ∈ ℜ nxn , vector v ∈ ℜ n , dimensión p ∈ Z + del subespacio de
Krylov .
Salida: Base ortonormal {v1 , v2 , L , v p } .
1
2
v1 = v/||v||2
Para j = 1 : p
w = Av j
2.1
2.2
Para i = 1 : j
2.2.1 hij = wT vi
2.2.2
w = w − hij vi
2.3
h j +1 j = w 2
2.4
v j +1 = w / h j +1
Algoritmo 4.8: Método de Arnoldi.
145
Capítulo 4: Linealización a Trozos
Sea V p la matriz cuyas columnas son los vectores de la base ortonormal {v1 , v2 , L , v p }
obtenida en el algoritmo anterior, es decir, V p = [v1 , v2 ,L, v p ] ∈ ℜ nxp . Si vopt = V p xopt es
la mejor aproximación a e A v de un vector perteneciente a K p , entonces se cumple que
|| vopt − e A v ||2 = minn || y − e A v ||2 ,
y∈ℜ
por lo que xopt es la solución del sistema de ecuaciones normales
V pT V p xopt = V pT e A v .
La solución del sistema anterior viene dada por
xopt = (V p V p ) −1V pT e A v = V p e A v ,
T
T
por lo tanto
vopt = V p xopt = V pV p e A v .
T
Si se define β =|| v ||2 , entonces
v = βV p e1 ,
siendo
e1 = [1, 0, L , 0]T ∈ ℜ p ,
por lo que
vopt = β V pV p e AV p e1 .
T
( 4.21 )
Por otra parte, si se considera la matriz H = [hij ] obtenida a partir del método de
Arnoldi, entonces se cumple la siguiente relación
AV p = V p H p + h p +1 p v p +1e Tp ,
siendo H p la matriz de Hessenberg obtenida al considerar las p primeras columnas y
p primeras filas de la matriz H .
Además, por la ortogonalidad de las columnas de la matriz V p , se tiene
H p = V pT AV p ,
por lo que
( 4.22 )
e
Hp
= V pT e AV p .
Finalmente, teniendo en cuenta las expresiones ( 4.21 ) y ( 4.22 ), se obtiene que
e A v ≅ vopt = βV p e p e1 .
H
Este resultado conduce al siguiente algoritmo.
146
Capítulo 4: Linealización a Trozos
w = dlaexpkry( A,v,p,tol , c1 , c2 ) .
Entradas: Matriz A ∈ ℜ nxn , vector v ∈ ℜ n , dimensión p ∈ Z + del subespacio de
Krylov, tolerancia tol ∈ ℜ + , vectores c1 , c2 ∈ ℜ q que contienen los
coeficientes de los términos de grado mayor que cero de los polinomios
que definen la aproximación diagonal de Padé de la función exponencial.
Salida:
1
2
3
4
Vector w = e A v ∈ ℜ n .
β = ||v||2
Si β == 0
w=0
2.1
2.2
Salir del Algoritmo
V (:,1) = v/β
Para j = 1 : p
4.1
w = AV (:, j )
4.2
Para i = 1 : j
4.2.1 H (i, j ) = wT V (:, i )
4.2.2 w = w − H (i, j )V (:, i )
s= w2
4.3
Si s < tol
4.4.1 p = j
4.4.2 Salir del bucle
4.5
H ( j + 1, j ) = s
4.6
V (:, j + 1) = w / s
H (1 : p,1 : p ) = dlaexp( H (1 : p,1 : p ), c1 ,c 2 ) (Algoritmo 4.3)
w = β V (:,1 : p ) H (1 : p,1)
4.4
5
6
Algoritmo 4.9: Calcula el producto de la exponencial de una matriz por un vector,
mediante los subespacios de Krylov.
El siguiente algoritmo permite calcular el vector yi +1 de la expresión ( 4.20 ) mediante
una adaptación a bloques del Algoritmo 4.9, minimizando los costes computacionales y
de almacenamiento.
147
Capítulo 4: Linealización a Trozos
yi +1 = dlaok 3( J , f , g , yi , ∆t , p, tol , c1 , c2 ) .
Entradas: Matriz
J ∈ ℜ nxn , vector
f ∈ ℜ n , vector
g ∈ ℜ n , vector
yi ∈ ℜ n ,
incremento de tiempo ∆t ∈ ℜ , dimensión p ∈ Z + del subespacio de
Krylov, tolerancia tol ∈ ℜ + , vectores c1 , c2 ∈ ℜ q que contienen a los
coeficientes de los términos de grado mayor que cero de los polinomios
que definen la aproximación diagonal de Padé de la función exponencial.
Salida:
1
2
3
4
5
Vector yi +1 ∈ ℜ n de la expresión ( 4.20 ).
V (1 : n,1) = 0 n ; V (n + 1 : 2n,1) = f ; V (2n + 1 : 3n,1) = g
β =|| V (n + 1 : 3n,1) ||2
Si β = = 0
3.1
Salir
V (2n + 1 : 3n,1) = V (2n + 1 : 3n,1) / β
Para j = 1 : p
5.1 w(1 : n) = JV (1 : n, j ) + V (n + 1 : 2n, j ) ; w(n + 1 : 2n) = V (2n + 1 : 3n, j )
5.2 w(1 : 2n) = ∆tw(1 : 2n) ; w(2n + 1 : 3n) = 0 n
5.3
Para i = 1 : j
5.3.1 H (i, j ) = wT V (1 : 3n, i )
5.3.2 w = w − H (i, j )V (1 : 3n, i )
5.4
s= w2
Si s < tol
5.5.1 p = j
5.5.2 Salir del bucle
5.6
H ( j + 1, j ) = s
V (1 : 3n, j + 1) = w / s
5.7
H (1 : p,1 : p ) = dlaexp( H (1 : p,1 : p ), c1 ,c 2 ) (Algoritmo 4.2)
yi +1 = yi + βV (1 : n,1 : p) H (1 : p,1)
5.5
6
7
Algoritmo 4.10: Calcula la solución aproximada en el instante t i +1 de una EDO no
autónoma mediante la modificación a bloques del Algoritmo 4.9.
El coste computacional aproximado del algoritmo anterior es
2n 2 p + 6np( p + 1) + 2(q + j H p + 1 / 3) p 3 flops,
siendo j H p = max(0,1 + int(log 2 (|| H p ||))) .
A continuación se presenta el algoritmo completo para la resolución de EDOs no
autónomas basado en el método de linealización a trozos mediante los subespacios de
Krylov.
148
Capítulo 4: Linealización a Trozos
y = dgeedolkn(t,data, x0 , p, tol , q) .
Entradas: Vector de tiempos t ∈ ℜl +1 , función data que calcula f (t , x) ∈ ℜ n ,
J (t , x) ∈ ℜ nxn y g (t , x) ∈ ℜ n , vector inicial x0 ∈ ℜ n , dimensión p ∈ Z +
del subespacio de Krylov, tolerancia tol ∈ ℜ + , grado q ∈ Z + de los
polinomios de la aproximación diagonal de Padé de la función
exponencial.
Salidas: Matriz Y = [ y 0 , y1 ,L , y l ] ∈ ℜ nx (l +1) , yi ∈ ℜ n , i = 0,1, L , l .
[c1 , c2 ] = dlapex(q ) (Algoritmo 4.2)
y 0 = x0
Para i = 0 : l − 1
3.1
[ J , f , g ] = data (ti , yi ) .
1
2
3
3.2
3.3
∆t = ti +1 − ti
yi +1 = dlaok 3( J , f , g , yi , ∆t , tol , c1 , c2 ) (Algoritmo 4.10)
Algoritmo 4.11: Resolución de EDOs no autónomas mediante el método de
linealización a trozos basado en los subespacios de Krylov.
4.2.2 EDOs Autónomas
Sea la EDO con valores iniciales
( 4.23 )
x' (t ) = f ( x(t )) , t ∈ [t 0 , t f ] ,
x(t0 ) = x0 ∈ ℜ n ,
cumpliendo f (x) las hipótesis del Teorema 2.10 (página 56), es decir, las derivadas
parciales de segundo orden de f (x) están acotadas en ℜ n .
Dada una partición t 0 < t1 < L < t l −1 < t l = t f , entonces la ecuación anterior se puede
aproximar mediante el conjunto de EDLs resultantes de la aproximación lineal de
f ( x(t )) en cada subintervalo, es decir,
( 4.24 )
y ' (t ) = f i + J i ( y (t ) − yi ) , t ∈ [t i , t i +1 ] , y (t i ) = yi , i = 0,1,L, l − 1 ,
siendo
f i = f ( yi ) ∈ ℜ n ,
Ji =
∂f
( yi ) ∈ ℜ nxn .
∂x
La solución analítica de la EDL
y ' (t ) = f i + J i ( y (t ) − yi ) , t ∈ [ti , ti +1 ] , 0 ≤ i < l ,
con valor inicial y (t i ) = yi , resulta ser
t
( 4.25 )
y (t ) = yi + ∫ e J i ( t −τ ) fi dτ , t ∈ [ti , ti +1 ] ,
ti
149
Capítulo 4: Linealización a Trozos
por lo que se pueden obtener las soluciones aproximadas y0 , y1 ,L, yl resolviendo,
sucesivamente, las EDLs en cada uno de los subintervalos [ti , ti +1 ] , i = 0,1,L, l − 1 .
Teorema 4.2.
La solución de la EDL de valores iniciales
( 4.26 )
y ' (t ) = f i + J i ( y (t ) − yi ) , t ∈ [ti , ti +1 ] , y (t i ) = yi ,
es
( 4.27 )
y (t ) = yi + F12(i ) (t − ti ) f i ,
donde F12( i ) (t − ti ) es el bloque (1,2) de la matriz eCi ( t − t i ) , con
( 4.28 )
⎡J
Ci = ⎢ i
⎣0 n
In ⎤
.
0 n ⎥⎦
Demostración.
Basta aplicar el Teorema 4.1, para el caso particular en que gi = 0nx1 ∈ ℜ n .
Según el teorema anterior, la solución aproximada en el instante ti +1 de la EDO ( 4.23 )
se puede obtener a partir de la solución aproximada en ti utilizando la expresión
( 4.29 )
yi +1 = yi + F12(i ) (∆ti ) f i ,
donde ∆ti = ti +1 − ti , siendo F12( i ) (∆ti ) el bloque (1,2) de la matriz
eCi ∆t i ,
con
⎡J
Ci = ⎢ i
⎣0 n
In ⎤
.
0 n ⎥⎦
El siguiente algoritmo calcula la solución de la EDO ( 4.23 ) mediante el método de
linealización a trozos basado en el cálculo de la exponencial de una matriz.
150
Capítulo 4: Linealización a Trozos
y = dgeedolga(t, data, x0 ) .
Entradas: Vector de tiempos t ∈ ℜl +1 , función data que calcula f (t , x) ∈ ℜ n y
J (t , x) ∈ ℜ nxn , vector inicial x0 ∈ ℜ n .
Salidas: Matriz Y = [ y 0 , y1 ,L , y l ] ∈ ℜ nx (l +1) , yi ∈ ℜ n , i = 0,1, L , l .
1
2
y 0 = x0
Para i = 0 : l − 1
2.1
[ J , f ] = data (ti , yi )
2.3
⎡ J In ⎤
C=⎢
⎥
⎣0 n 0 n ⎦
∆t = ti +1 − ti
2.4
2.5
F = eC∆t
Calcular yi +1 = yi + F12 f (expresión ( 4.29))
2.2
Algoritmo 4.12: Algoritmo básico para la resolución de EDOs autónomas mediante el
método de linealización a trozos basado en el cálculo de la exponencial
de una matriz.
El problema de calcular yi +1 son los elevados costes computacionales y de
almacenamiento necesarios para realizar el producto de la exponencial de una matriz de
dimensión 2n por un vector de dimensión 2n .
4.2.2.1 Método Basado en los Aproximantes Diagonales de Padé
El vector yi +1 de la expresión ( 4.29 ), solución aproximada en el instante t i +1 de la
EDO ( 4.23 ), se puede calcular sin obtener explícitamente la exponencial de la matriz
Ci ∆ti mediante una adaptación a bloques del método de los aproximantes diagonales de
Padé. Razonando del mismo modo que el utilizado en la obtención del Algoritmo 4.4, se
tiene el siguiente algoritmo.
151
Capítulo 4: Linealización a Trozos
yi +1 = dlaop 2( J , f , yi , ∆t , c1 , c2 ) .
Entradas: Matriz J ∈ ℜ nxn , vector f ∈ ℜ n , vector yi ∈ ℜ n , incremento de tiempo
∆t ∈ ℜ , vectores c1 , c2 ∈ ℜ q que contienen los coeficientes de los términos
de grado mayor que cero de los polinomios de la aproximación de Padé de
la función exponencial.
Salida:
Vector yi +1 ∈ ℜmxn de la expresión ( 4.29 ).
1
nor = ∆t || J ||∞
2
j J∆t = max(0,1 + int(log 2 (nor ))) ; s =
3
4
5
6
X 11 = J ; X 12 = sI n
7
8
9
∆t
; J = sJ
2j
N11 = I n + c1 (1) J ; N12 = c1 (1) sI n
D11 = I n + c2 (1) J ; D12 = c2 (1) sI n
Para k = 2 : q
X 12 = sX 11 ; X 11 = X 11 J
6.1
N11 = N11 + c1 (k ) X 11 ; N12 = N12 + c1 (k ) X 12
6.2
D11 = D11 + c2 (k ) X 11 ; D12 = D12 + c2 (k ) X 12
6.3
Calcular F11 y F12 resolviendo las ecuaciones (mediante descomposición LU de
D11 ):
D11 F11 = N11
7.1
D11 F12 = N12 − D12
7.2
Para k = 1 : j
F12 = F11 F12 + F12 ; F11 = F112
8.1
s = 2s
8.2
yi +1 = yi + F12 f
Algoritmo 4.13: Calcula la solución aproximada en el instante t i +1 de una EDO
autónoma mediante la modificación a bloques del método de los
aproximantes diagonales de Padé.
El coste aproximado del algoritmo anterior es
1⎞
⎛
2⎜ q + 2 j J∆t + ⎟n 3 flops,
3⎠
⎝
siendo j J∆t = max(0,1 + int(log 2 (|| J∆t || ∞ ))) .
A continuación se presenta el algoritmo que resuelve EDOs autónomas mediante el
método de linealización a trozos basado en los aproximantes diagonales de Padé.
152
Capítulo 4: Linealización a Trozos
y = dgeedolpa(t,data, x0 , q) .
Entradas: Vector de tiempos t ∈ ℜl +1 , función data que calcula f (t , x) ∈ ℜ n y
J (t , x) ∈ ℜ nxn , vector inicial x0 ∈ ℜ n , grado q ∈ Z + de los polinomios de
la aproximación diagonal de Padé de la función exponencial.
Salidas: Matriz Y = [ y 0 , y1 ,L , y l ] ∈ ℜ nx (l +1) , yi ∈ ℜ n , i = 0,1, L , l .
[c1 , c2 ] = dlapex(q ) (Algoritmo 4.2)
y 0 = x0
Para i = 0 : l − 1
3.1
[ J , f ] = data (ti , yi )
1
2
3
3.2
3.3
∆t = ti +1 − ti
yi +1 = dlaop 2( J , f , yi , ∆t , c1 , c2 ) (Algoritmo 4.13)
Algoritmo 4.14: Resolución de EDOs autónomas mediante el método de linealización a
trozos basado en los aproximantes diagonales de Padé.
4.2.2.2 Método Basado en la Ecuación Conmutante
En este subapartado se describe la manera de obtener la solución aproximada yi +1 de la
expresión ( 4.29 ) mediante la ecuación conmutante.
Por la Propiedad 2.1, se tiene que las matrices
⎡J
Ci = ⎢ i
⎣0 n
In ⎤
0 n ⎥⎦
y
⎡e J i ∆ti
e Ci ∆ti = ⎢
⎣ 0n
F12( i ) (∆ti )⎤
⎥
In ⎦
conmutan, por lo que
⎡ Ji
⎢0
⎣ n
I n ⎤ ⎡e J i ∆ti
⎢
0 n ⎥⎦ ⎣ 0 n
F12( i ) (∆ti )⎤ ⎡e J i ∆ti
⎥=⎢
I n ⎦ ⎣ 0n
F12(i ) (∆ti )⎤ ⎡ J i
⎥⎢
I n ⎦ ⎣0 n
In ⎤
.
0 n ⎥⎦
Igualando los bloques (1,2) de la expresión anterior, se tiene que
J i F12( i ) (∆ti ) + I n = e J i ∆ti ,
o bien
( 4.30 )
J i F12(i ) (∆ti ) f i = (e J i ∆ti − I n ) f i .
Si J i es invertible, entonces yi +1 se puede calcular del siguiente modo:
• Calcular xi = F12(i ) (∆ti ) f i resolviendo la ecuación
J i xi = (e J i ∆ti − I n ) f i .
• Calcular yi +1 = yi + xi .
153
Capítulo 4: Linealización a Trozos
A continuación se muestra un algoritmo que calcula el vector yi +1 mediante la ecuación
conmutante.
yi +1 = dlaoc 2( J , f , yi , ∆t , c1 , c2 ) .
Entradas: Matriz J ∈ ℜ nxn , vector f ∈ ℜ n , vector yi ∈ ℜ n , incremento de tiempo
∆t ∈ ℜ , vectores c1 , c2 ∈ ℜ q que contienen los coeficientes de los términos
de grado mayor que cero de los polinomios de la aproximación de Padé de
la función exponencial.
Salida:
1
2
3
4
5
Vector yi +1 ∈ ℜ n de la expresión ( 4.29 ).
E = dlaexp( J∆t , c1 ,c 2 ) (Algoritmo 4.3)
[ L, U ] = lu ( J )
Calcular x resolviendo el sistema lineal triangular inferior Lx = ( E − I n ) f
Calcular x resolviendo el sistema lineal triangular superior Ux = x
yi +1 = yi + x
Algoritmo 4.15: Calcula la solución aproximada en el instante t i +1 de una EDO
autónoma mediante la ecuación conmutante.
El coste computacional aproximado del algoritmo anterior es
2⎞
⎛
2⎜ q + j J∆t + ⎟n 3 flops,
3⎠
⎝
siendo j J∆t = max(0,1 + int(log 2 (|| J∆t || ∞ ))) .
A continuación se presenta el algoritmo que resuelve EDOs mediante el método de
linealización a trozos basado en la ecuación conmutante.
y = dgeedolca(t, data, x0 , q ) .
Entradas: Vector de tiempos t ∈ ℜ l +1 , función data que calcula f (t , x) ∈ ℜ n y
J (t , x) ∈ ℜ nxn , vector inicial x0 ∈ ℜ n , grado q ∈ Z + de los polinomios de
la aproximación diagonal de Padé de la función exponencial.
Salidas: Matriz Y = [ y 0 , y1 ,L , y l ] ∈ ℜ nx (l +1) , yi ∈ ℜ n , i = 0,1, L , l .
1
2
3
[c1 , c2 ] = dlapex(q ) (Algoritmo 4.2)
y 0 = x0
Para i = 0 : l − 1
3.1
[ J , f ] = data (ti , yi )
3.2
3.3
∆t = ti +1 − ti
y i +1 = dlaoc 2( J , f , y i , ∆t , c1 , c 2 ) (Algoritmo 4.15)
Algoritmo 4.16: Resolución de EDOs autónomas mediante el método de linealización a
trozos basado en la ecuación conmutante.
154
Capítulo 4: Linealización a Trozos
4.2.2.3 Método Basado en los Subespacios de Krylov
El vector yi +1 de la expresión ( 4.29 ), solución aproximada en el instante t i +1 de la EDO
( 4.23 ), se puede expresar como
y i +1 = y i + F12( i ) (∆t i ) f i = y i + e Ci ∆ti vi ,
( 4.31 )
donde
⎡J
Ci = ⎢ i
⎣0 n
In ⎤
,
0 n ⎥⎦
⎡0 ⎤
vi = ⎢ nx1 ⎥ .
⎣ fi ⎦
Para calcular yi +1 , según la expresión anterior, es necesario calcular el producto de la
exponencial de una matriz por un vector.
Para calcular e Ci ∆ti vi de forma eficiente se realiza la siguiente adaptación a bloques del
Algoritmo 4.9:
⎡J
A=⎢ i
⎣0 n
1
In ⎤
⎡ J ∆t
∆t i = ⎢ i i
⎥
0n ⎦
⎣ 0n
I n ∆t i ⎤
⎡0 ⎤
, v = ⎢ nx1 ⎥ .
⎥
0n ⎦
⎣ fi ⎦
I n ∆t i ⎤ ⎡ J
=
0 n ⎥⎦ ⎢⎣0 n
β = ||v||2 .
β = ||f i||2 .
3
V (:,1) = v/β .
⎡ V (1 : n,1) ⎤ ⎡ 0 nx1 ⎤
⎢V (n + 1 : 2n,1)⎥ = ⎢ f / β ⎥ .
⎣
⎦ ⎣ i ⎦
4.1
w = AV (:,1) .
⎡ w(1 : n) ⎤ ⎡ J
⎢ w(n + 1 : 2n)⎥ = ⎢0
⎣
⎦ ⎣ n
4.2.1
∆t
∆tI n ⎤ ⎡ 0 nx1 ⎤ ⎡ f i ⎤
⎢
= β ⎥.
⎥
0 n ⎥⎦ ⎢⎣ f i / β ⎥⎦ ⎢
⎣ 0 nx1 ⎦
H (1,1) = wT V (:,1) .
⎡ ∆t
H (1,1) = wT V (:,1) = ⎢ f T
⎣β
⎤ ⎡ 0 ⎤ ⎡0 ⎤
0 nx1 ⎥ ⎢ nx1 ⎥ = ⎢ nx1 ⎥ .
⎦ ⎣ f i / β ⎦ ⎣0 nx1 ⎦
4.2.2
w = w − H (1,1)V (:,1) (no se modifica el vector w ).
4.3
s =|| w || 2 .
s =|| w ||2 =
4.5
∆t
β
|| f i ||2 =
∆t
β
β = ∆t .
H (2,1) = s .
H (2,1) = ∆t .
4.6
V (:,2) = w / s .
155
Capítulo 4: Linealización a Trozos
⎡ ∆t ⎤
⎡ fi / β ⎤
⎡ V (1 : n,2) ⎤
⎢ fi ⎥
⎢V (n + 1 : 2n,2)⎥ = w / s = ⎢ β ⎥ / ∆t = ⎢ 0 ⎥ .
⎣
⎦
⎣ nx1 ⎦
⎣ 0 nx1 ⎦
4.1
w = AV (:, j ) , j > 1 .
⎡ w(1 : n) ⎤ ⎡ J
⎢ w(n + 1 : 2n)⎥ = ⎢0
⎣
⎦ ⎣ n
∆tI n ⎤ ⎡V (1; n, j )⎤ ⎡ JV (1; n, j )⎤
.
=
0 n ⎥⎦ ⎢⎣ 0 nx1 ⎥⎦ ⎢⎣ 0 nx1 ⎥⎦
4.2.1
H (1, j ) = wT V (:, j ) , j > 1 .
4.2.2
⎡V (1 : n,1)⎤
T
01xn ⎢
⎥ = w(1 : n) V (1 : n,1) = 0 .
0
nx1
⎣
⎦
w = w − H (1, j )V (:,1) , j > 1 (no se modifica el vector w ).
4.2.1
H (i, j ) = wT V (:, j ) , i > 1 , j > 1 .
[
]
H (1, j ) = w(1 : n)T
[
H (i, j ) = w(1 : n)T
4.2.2
]
⎡V (1 : n, i )⎤
01xn ⎢
= w(1 : n)T V (1 : n, i ) .
⎥
⎣ 0 nx1 ⎦
w = w − H (i, j )V (:, i ) i > 1 , j > 1 .
⎡V (1 : n, i )⎤ ⎡ w(1 : n) − H (i, j ) JV (1 : n, j )⎤
⎡ w(1 : n) ⎤ ⎡ w(1 : n)⎤
⎥=⎢
⎥.
⎢ w(n + 1 : 2n)⎥ = ⎢ 0 ⎥ − H (i, j ) ⎢ 0
0 nx1
nx1
⎣
⎦ ⎣ n ⎦
⎣
⎦ ⎣
⎦
4.3
s =|| w || 2 .
s =|| w || 2 =|| w(1 : n) || 2 .
4.5
H ( j + 1, j ) = s , j > 1 .
4.6
V (:, j + 1) = w / s , j > 1 .
⎡ w(1 : n) / s ⎤
⎡ V (1 : n, j + 1) ⎤ ⎡ w(1 : n)⎤
⎥.
⎢V (n + 1 : 2n, j + 1)⎥ = ⎢ 0 ⎥ / s = ⎢ 0
n
n
⎣
⎦ ⎣
⎦
⎣
⎦
El siguiente algoritmo calcula el vector yi +1 de la expresión ( 4.31 ) mediante una
adaptación a bloques del Algoritmo 4.9, minimizando los costes computacionales y de
almacenamiento.
156
Capítulo 4: Linealización a Trozos
yi +1 = dlaok 2( J , f , yi , ∆t , p, tol , c1 , c2 ) .
Entradas: Matriz J ∈ ℜ nxn , vector f ∈ ℜ n , yi ∈ ℜ n , incremento de tiempo ∆t ∈ ℜ ,
dimensión p ∈ Z + del subespacio de Krylov, tolerancia tol ∈ ℜ + , vectores
c1 , c2 ∈ ℜ q que contienen los coeficientes de los términos de grado mayor
que cero de los polinomios de la aproximación de Padé de la función
exponencial.
Salida:
1
2
3
4
5
6
7
8
9
Vector yi +1 ∈ ℜ n de la expresión ( 4.31 ).
β =|| f ||2
Si β == 0
2.1
Salir
V (1 : n,1) = 0 n
V (1 : n,2) = f / β
H (1,1) = 0 ; H (2,1) = ∆t
J = J∆t
Para j = 2 : p
w = JV (1 : n, j )
7.1
H (1, j ) = 0
7.2
7.3
Para i = 2 : j
7.3.1 H (i, j ) = wT V (1 : n, i )
7.3.2 w = w − H (i, j )V (1 : n, i )
s =|| w || 2
7.4
7.5
Si s < tol
7.5.1 p = j
7.5.2 Salir del bucle
7.6
H ( j + 1, j ) = s
7.7
V (1 : n, j + 1) = w / s
H (1 : p,1 : p ) = dlaexp( H (1 : p,1 : p ), c1 ,c 2 ) (Algoritmo 4.3)
yi +1 = yi + βV (1 : n,1 : p) H (1 : p,1)
Algoritmo 4.17: Calcula la solución aproximada en el instante t i +1 de una EDO
autónoma mediante la modificación a bloques del Algoritmo 4.9.
El coste computacional aproximado del algoritmo anterior es
2n( p − 1)(n + p) + 2(q + j H p + 1 / 3) p 3 flops,
siendo j H p = max(0,1 + int(log 2 (|| H p ||))) .
A continuación se presenta el algoritmo completo que resuelve EDOs autónomas basada
en la linealización a trozos mediante los subespacios de Krylov.
157
Capítulo 4: Linealización a Trozos
y = dgeedolka(t,data, x0 , p, tol , q) .
Entradas: Vector de tiempos t ∈ ℜ l +1 , función data que calcula f ( y ) ∈ ℜ n y
J (t , y ) ∈ ℜ nxn , vector inicial x0 ∈ ℜ n , dimensión p ∈ Z + del subespacio de
Krylov, tolerancia tol ∈ ℜ + , grado q ∈ Z + de los polinomios de la
aproximación diagonal de Padé de la función exponencial.
Salidas: Matriz Y = [ y 0 , y1 ,L , y l ] ∈ ℜ nx (l +1) , yi ∈ ℜ n , i = 0,1, L , l .
[c1 , c2 ] = dlapex(q ) (Algoritmo 4.2)
y 0 = x0
Para i = 0 : l − 1
3.1
[ J , f ] = data (ti , yi )
1
2
3
3.2
3.3
∆t = ti +1 − ti
yi +1 = dlaok 2( J , f , yi , ∆t , tol , c1 , c2 ) (Algoritmo 4.17)
Algoritmo 4.18. Resolución de EDOs autónomas mediante el método de linealización a
trozos basado en los subespacios de Krylov.
4.3 Métodos de Linealización a Trozos de EDMRs
4.3.1 Resolución de EDMRs con Coeficientes Variables
Sea la EDMR
( 4.32 ) X ' (t ) = A21 (t ) + A22 (t ) X (t ) − X (t ) A11 (t ) − X (t ) A12 (t ) X (t ) , t0 ≤ t ≤ t f ,
con valor inicial
X (t 0 ) = X 0 ∈ ℜ mxn ,
donde A11 (t ) ∈ ℜ nxn , A12 (t ) ∈ ℜ nxm , A21 (t ) ∈ ℜ mxn y A22 (t ) ∈ ℜ mxm .
Al aplicar la función vec a la EDMR ( 4.32 ), se obtiene la EDO
( 4.33 )
x' = f (t , x) , x0 = vec( X 0 ) , x = x(t ) ∈ ℜ mn ,
siendo
( 4.34 )
f (t , x) = vec( A21 (t ) + A22 (t ) X − XA11 (t ) − XA12 (t ) X ) ,
o bien, utilizando la Propiedad 6.7 y la Propiedad 6.8 del producto de Kronecker,
( 4.35 )
f (t , x) = vec( A21 (t )) + [ I n ⊗ A22 (t ) − A11T (t ) ⊗ I m ]x − [ I n ⊗ ( XA12 (t ))]x
o
( 4.36 )
f (t , x) = vec( A21 (t )) + [ I n ⊗ A22 (t ) − A11T (t ) ⊗ I m ]x − [( A12 (t ) X ) T ⊗ I m ]x .
Supóngase que las segundas derivadas de las funciones de matrices Aij (t ) , para
i, j = 1,2 , están acotadas en [t 0 , t f ] . Considerando la partición t 0 < t1 < L < t l −1 < t l = t f
y aplicando la linealización a trozos, se obtiene el conjunto de EDLs resultantes de la
aproximación lineal de f (t , x) en cada subintervalo,
158
Capítulo 4: Linealización a Trozos
( 4.37 ) y ' (t ) = f i + J i ( y (t ) − yi ) + g i (t − t i ) , t ∈ [t i , t i +1 ] , y (t i ) = yi , i = 0,1,L, l − 1 ,
siendo
f i = vec( A21 (ti ) + A22 (ti )Yi − Yi A11 (ti ) − Yi A12 (ti )Yi ) ,
( 4.38 )
(
)
'
'
(ti ) + A22
(ti )Yi − Yi A11' (ti ) − Yi A12' (ti )Yi , Aij' (t ) =
( 4.39 ) g i = vec A21
dAij (t )
dt
, i, j = 1,2 .
t = ti
Según el Teorema 2.10 (página 56), la solución de la EDL ( 4.37 ) es
( 4.40 )
yi +1 = yi + F12( i ) (∆ti ) f i + F13( i ) (∆ti ) g i ,
donde F12( i ) (∆ti ) y F13(i ) (∆ti ) son, respectivamente, los bloques (1,2) y (1,3) de la
exponencial de la matriz e Ci ∆ti , siendo
⎡ Ji
Ci = ⎢⎢0 mn
⎢⎣0 mn
( 4.41 )
I mn
0 mn
0 mn
0 mn ⎤
I mn ⎥⎥ ,
0 mn ⎥⎦
con
( 4.42 )
Ji =
∂f
(ti , yi ) = I n ⊗ Ai − BiT ⊗ I m ,
∂x
Ai = A22 (t i ) − Yi A12 (t i ) ,
Bi = A11 (t i ) + A12 (t i )Yi .
Aplicando el operador mat mxn en la expresión ( 4.40 ), se tiene que la solución
aproximada en el instante t i +1 de la EDMR ( 4.32 ) se puede obtener como
( 4.43 )
Yi +1 = Yi + mat mxn ( F12(i ) (∆ti ) f i + F13( i ) (∆ti ) g i ) .
A continuación se presenta un algoritmo básico que resuelve EDMRs con coeficientes
variables basado en la linealización a trozos.
159
Capítulo 4: Linealización a Trozos
Y = dgedmrlgv(t , data, datad , X 0 )
Entradas: Vector de tiempos t ∈ ℜl +1 , matrices
A11 (t ) ∈ ℜ nxn , A12 (t ) ∈ ℜ nxm , A21 (t ) ∈ ℜ mxn ,
matrices coeficiente de la EDMR
'
'
A21
(t ) ∈ ℜ mxn , A22
(t ) ∈ ℜ mxm , matriz inicial
Salida:
coeficiente de la EDMR
A22 (t ) ∈ ℜ mxm , derivadas de las
A11' (t ) ∈ ℜ nxn , A12' (t ) ∈ ℜ nxm ,
X 0 ∈ ℜ mxn .
Matriz a bloques Y = [Y0 , Y1 , L , Yl ] ∈ ℜ ( m×n )×( l +1) , Yi ∈ ℜ mxn , i = 0,1, L, l .
Y0 = X 0
Para i = 0 : l − 1
2.1
f = vec( A21 (ti ) + A22 (ti )Yi − Yi A11 (ti ) − Yi A12 (ti )Yi )
1
2
2.2
2.3
2.4
'
'
g = vec( A21
(ti ) + A22
(ti )Yi − Yi A11' (ti ) − Yi A12' (ti )Yi )
A = A22 (ti ) − Yi A12 (ti )
B = A11 (ti ) + A12 (ti )Yi
2.5
J = I n ⊗ A − BT ⊗ I m
2.6
2.7
2.8
2.9
I mn
⎡ J
C = ⎢⎢0 mn 0 mn
⎢⎣0 mn 0 mn
∆ti = ti +1 − ti
0 mn ⎤
I mn ⎥⎥
0 mn ⎥⎦
F = e C∆ti
Yi +1 = Yi + mat mxn ( F12 f i + F13 gi ) (véase ( 4.43 ))
Algoritmo 4.19: Resolución de EDMRs con coeficientes variables basada en la
linealización a trozos.
El problema del algoritmo anterior son los elevados costes computacionales y de
almacenamiento necesarios para realizarlo. En los siguientes subapartados se presentan
tres métodos que calculan la matriz Yi +1 de la expresión ( 4.43 ), reduciendo dichos
costes.
4.3.1.1 Método Basado en los Aproximantes Diagonales de Padé
Una forma de resolver la EDMR ( 4.32 ) se basa en el teorema que aparece en este
subapartado.
Lema 4.1 ([Bern05], página 422])
Sean A ∈ ℜ mxm y B ∈ ℜ nxn , entonces
e I n ⊗ A+ B ⊗ I m = e B ⊗ e A .
Teorema 4.3.
La matriz Yi +1 que aparece en la expresión ( 4.43 ), solución aproximada en el instante
ti +1 de la EDMR ( 4.32 ), se puede calcular como
( 4.44 )
Yi +1 = Yi + ( F12(i ) (∆ti ) + H13( i ) (∆ti ))( F22( i ) (∆ti )) −1 ,
160
Capítulo 4: Linealización a Trozos
donde F12( i ) (∆ti ) y F22( i ) (∆ti ) son, respectivamente, los bloques (1,2) y (2,2) de la matriz
e Ci ∆ti , con
⎡ A
Ci = ⎢ i
⎣0 nxm
( 4.45 )
Fi ⎤
,
Bi ⎥⎦
y H 13( i ) (∆t i ) el bloque (1,3) de la matriz e Di ∆ti , con
( 4.46 )
⎡ Ai
Di = ⎢⎢0 nxm
⎢⎣0 nxm
Gi
Bi
0 nxn
0 mxn ⎤
I n ⎥⎥ ,
Bi ⎥⎦
siendo
Fi = A21 (ti ) + A22 (ti )Yi − Yi A11 (ti ) − Yi A12 (ti )Yi ,
'
'
Gi = A21
(ti ) + A22
(ti )Yi − Yi A11' (ti ) − Yi A12' (ti )Yi ,
Ai = A22 (ti ) − Yi A12 (t i ) ,
Bi = A11 (t i ) + A12 (t i )Yi .
Demostración.
Al aplicar la linealización a trozos a la EDMR ( 4.32 ) se obtiene en [t i , t i +1 ] la EDL
y ' (t ) = f i + J i ( y (t ) − yi ) + g i (t − t i ) , y (t i ) = yi
que tiene como solución analítica
t
y (t ) = yi + ∫ e J i ( t −τ ) [ f i + g i (τ − t i )]dτ .
ti
Si se realiza el cambio de variable
s = τ − ti ,
y se define
θ = t − ti ,
entonces
ds = dτ ,
t − τ = t − s − ti = θ − s ,
por lo que, aplicando el lema anterior, se tiene que
161
Capítulo 4: Linealización a Trozos
θ
y (t ) = yi + ∫ e
J i (θ − s )
0
θ
f i ds + ∫ e J i (θ − s ) g i sds
0
θ
= yi + ∫ e ( I n ⊗ Ai − Bi
0
θ
(
= yi + ∫ e
T
⊗ I m )(θ − s )
− BiT (θ − s )
θ
f i ds + ∫ e ( I n ⊗ Ai − Bi
T
⊗ I m )(θ − s )
g i sds
0
⊗e
Ai (θ − s )
0
) f ds + ∫ (e
θ
− BiT (θ − s )
i
)
⊗ e Ai (θ −s ) g i sds.
0
Por tanto, si se define Fi = mat mxn ( f i ) y Gi = mat mxn ( g i ) , entonces, según la Propiedad
6.8, se tiene
( 4.47 )
θ
θ
0
0
Y (t ) = Yi + ∫ e Ai (θ − s ) Fi e − Bi (θ − s ) ds + ∫ e Ai (θ − s ) Gi e − Bi (θ − s ) sds .
Para calcular la primera integral de la expresión anterior, se considera la matriz
triangular superior a bloques definida en ( 4.45 ),
⎡ A
Ci = ⎢ i
⎣0 nxm
Fi ⎤
,
Bi ⎥⎦
y la exponencial de la matriz Ciθ ,
e
Ciθ
⎡ F11(i ) (θ ) F12( i ) (θ )⎤
=⎢
⎥.
F22( i ) (θ )⎦
⎣ 0 nxm
Derivando respecto de θ en ambos miembros de la igualdad anterior, se tiene que
de Ciθ
= Ce Ciθ ,
dθ
por lo que
( 4.48 )
⎡ dF11( i ) (θ )
⎢
⎢ dθ
⎢ 0
nxm
⎣⎢
dF12(i ) (θ ) ⎤
⎥
dθ ⎥ = ⎡ Ai
(i )
dF22 (θ ) ⎥ ⎢⎣0 nxm
dθ ⎦⎥
Fi ⎤ ⎡ F11( i ) (θ ) F12( i ) (θ )⎤
⎢
⎥
Bi ⎥⎦ ⎣ 0 nxm
F22( i ) (θ )⎦
⎡ Ai F11( i ) (θ )
=⎢
⎣ 0 nxm
Ai F12( i ) (θ ) + Fi F22( i ) (θ )⎤
⎥.
Bi F22(i ) (θ )
⎦
Igualando los bloques (1,1), (1,2) y (2,2) de ambos miembros de la ecuación anterior, y
teniendo en cuenta que
e Cθ
θ =0
= I m+n ,
se obtienen las siguientes EDMLs
( 4.49 )
dF11(i ) (θ )
= Ai F11( i ) (θ ) , F11( i ) (0) = I m ,
dθ
( 4.50 )
dF22(i ) (θ )
= Bi F22( i ) (θ ) , F22( i ) (0) = I n ,
dθ
162
Capítulo 4: Linealización a Trozos
( 4.51 )
dF12(i ) (θ )
= Ai F12(i ) (θ ) + Fi F22( i ) (θ ) , F12( i ) (0) = 0 mxn .
dθ
Resolviendo en primer lugar las EDMLs ( 4.49 ) y ( 4.50 ), se tiene que
F11( i ) (θ ) = e Aiθ ,
F22( i ) (θ ) = e Biθ .
Sustituyendo F22( i ) (θ ) = e Biθ en ( 4.51 ), se obtiene la EDML
dF12(i ) (θ )
= Ai F12( i ) (θ ) + Fi e Biθ , F12( i ) (0) = 0 mxn ,
dθ
por lo tanto
θ
F12( i ) (θ ) = ∫ e Ai (θ − s ) Fi e Bi s ds .
( 4.52 )
0
Para calcular la segunda integral que aparece en la expresión ( 4.47 ), se considera la
matriz triangular superior a bloques definida en ( 4.46 ),
⎡ Ai
Di = ⎢⎢0 nxm
⎢⎣0 nxm
0 mxn ⎤
I n ⎥⎥ ,
Bi ⎥⎦
Gi
Bi
0 nxn
y la exponencial de la matriz Diθ ,
e Diθ
( 4.53 )
⎡ H 11( i ) (θ ) H 12( i ) (θ ) H 13(i ) (θ )⎤
⎢
⎥
(i )
(i )
= ⎢ 0 nxm
(θ ) H 23
(θ )⎥ ,
H 22
⎢ 0 nxm
0 nxn
H 33(i ) (θ )⎥⎦
⎣
siendo H (jki ) (θ ) , 1 ≤ j ≤ k ≤ 3 , matrices de dimensiones conformes a la expresión
anterior, dependientes del parámetro θ .
Como
de Diθ
= Ce Diθ , e Diθ
dθ
θ =0
= I m+2 n ,
entonces
⎡ dH 11( i ) (θ )
⎢
⎢ dθ
⎢ 0
nxm
⎢
⎢
⎢ 0 nxm
⎣
dH 12(i ) (θ )
dθ
(i )
dH 22
(θ )
dθ
0 nxn
dH 13( i ) (θ ) ⎤
⎥
dθ ⎥ ⎡ Ai
(i )
dH 23
(θ ) ⎥ ⎢
= 0 nxm
dθ ⎥ ⎢
dH 33( i ) (θ ) ⎥ ⎢⎣0 nxm
⎥
dθ ⎦
⎡ Ai H 11( i ) (θ )
⎢
= ⎢ 0 nxm
⎢ 0 nxm
⎣
Gi
Bi
0 nxn
(i )
Ai H 12( i ) (θ ) + Gi H 22
(θ )
(i )
Bi H 22 (θ )
0 nxn
0 mxn ⎤ ⎡ H 11( i ) (θ ) H 12( i ) (θ ) H 13( i ) (θ )⎤
⎢
⎥
(i )
(i )
I n ⎥⎥ ⎢ 0 nxm
H 22
(θ ) H 23
(θ )⎥
Bi ⎥⎦ ⎢⎣ 0 nxm
H 33( i ) (θ )⎥⎦
0 nxn
(i )
Ai H 13( i ) (θ ) + Gi H 23
(θ )⎤
⎥
(i )
(i )
Bi H 23 (θ ) + H 33 (θ ) ⎥.
⎥
Bi H 33( i ) (θ )
⎦
163
Capítulo 4: Linealización a Trozos
Igualando los bloques correspondientes de ambos miembros de la ecuación anterior, se
tienen las EDMLs
( 4.54 )
dH 11( i ) (θ )
= Ai H 11( i ) (θ ) , H 11( i ) (0) = I m ,
dθ
( 4.55 )
(i )
dH 22
(θ )
(i )
(i )
= Bi H 22
(θ ) , H 22
(0) = I n ,
dθ
( 4.56 )
dH 33( i ) (θ )
= Bi H 33( i ) (θ ) , H 33(i ) (0) = I n ,
dθ
( 4.57 )
dH 12(i ) (θ )
(i )
= Ai H 12( i ) (θ ) + Gi H 22
(θ ) , H 12(i ) (0) = 0 mxn ,
dθ
( 4.58 )
(i )
dH 23
(θ )
(i )
(i )
= Bi H 23
(θ ) + H 33( i ) (θ ) , H 23
(0) = 0 nxn ,
dθ
( 4.59 )
dH 13(i ) (θ )
(i )
= Ai H 13( i ) (θ ) + Gi H 23
(θ ) , H 13( i ) (0) = 0 mxn .
dθ
Resolviendo las EDMLs ( 4.54 ), ( 4.55 ) y ( 4.56 ), se tiene que
H 11( i ) (θ ) = e Aiθ ,
(i )
H 22
(θ ) = e Biθ ,
H 33(i ) (θ ) = e Biθ .
(i )
(θ ) = e Biθ en ( 4.57 ), se obtiene la EDML
Sustituyendo H 22
dH 12( i ) (θ )
= Ai H 12( i ) (θ ) + Gi e Biθ , H 12( i ) (0) = 0 mxn ,
dθ
por lo tanto,
θ
H (θ ) = ∫ e Ai (θ − s ) Gi e Bi s ds .
(i )
12
o
Sustituyendo H 33(i ) (θ ) = e Biθ en ( 4.58 ), se obtiene la EDML
(i )
dH 23
(θ )
(i )
(i )
= Bi H 23
(θ ) + e Biθ , H 23
(θ ) = 0 nxn ,
dθ
por lo que resolviéndola se tiene que
(i )
H 23
(θ ) = e Biθ θ .
(i )
(θ ) = e Biθ θ en ( 4.59 ), se obtiene la EDML
Por último, sustituyendo H 23
dH 13( i ) (θ )
= Ai H 13( i ) (θ ) + Gi e Biθ θ , H 13( i ) (0) = 0 mxn ,
dθ
cuya solución viene dada por
164
Capítulo 4: Linealización a Trozos
θ
( 4.60 )
H (θ ) = ∫ e Ai (θ − s ) Gi e Bi s sds .
(i )
13
0
Teniendo en cuenta las expresiones ( 4.47 ), ( 4.52 ) y( 4.60 ), se tiene que
( 4.61 )
(i )
Y (t ) = Yi + F12( i ) (θ )[ F22( i ) (θ )]−1 + H 13( i ) (θ )[ H 22
(θ )]−1 ,
y como además
(i )
H 22
(θ ) = F22( i ) (θ ) = e Biθ ,
entonces
Y (t ) = Yi + [ F12( i ) (θ ) + H 13( i ) (θ )][ F22( i ) (θ )]−1 .
Por último, si en la expresión ( 4.44 ) se sustituye t por t i +1 , resulta
( 4.62 )
Yi +1 = Yi + [ F12( i ) (∆t i ) + H 13( i ) (∆t i )][ F22( i ) (∆t i )]−1 ,
siendo ∆t i = t i +1 − t i , con lo que queda demostrado el teorema.
Puesto que los bloques diagonales (1,1) y (2,2) de las matrices Ci y Di que aparecen en
las expresiones ( 4.45 ) y ( 4.46 ) son iguales, entonces los bloques diagonales (1,1) y
(2,2) de las matrices e Ci ∆t y e Di ∆t son iguales, por lo que es posible una adaptación a
bloques del Algoritmo 4.3 que permita calcular a la vez F12( i ) (∆ti ) y H 13(i ) (∆ti ) .
Realizando un razonamiento semejante al utilizado en la obtención del Algoritmo 4.4,
se deduce el siguiente algoritmo.
165
Capítulo 4: Linealización a Trozos
Yi +1 = dlabp3( A, B, F , G, Yi , ∆t , c1 , c2 ) .
Entradas: Matriz A ∈ ℜ mxm , matriz B ∈ ℜ nxn , matriz F ∈ ℜ mxn , matriz G ∈ ℜ mxn ,
matriz Yi ∈ ℜ mxn , incremento de tiempo ∆t ∈ ℜ , vectores c1 , c2 ∈ ℜ q
coeficientes de los términos de grado mayor que 0 de los polinomios de la
aproximación diagonal de Padé de la función exponencial.
Salida:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Matriz Yi +1 ∈ ℜ mxn de la expresión ( 4.44 ).
norA =|| A ||∞ ; norB =|| B ||∞ ; norF =|| F ||∞ ; norG =|| G ||∞
nor = max(norA + norG, norB + 1) ; nor = ∆t max(nor , norA + norF )
∆t
j = max(0,1 + int(log 2 (nor ))) ; s = j
2
A = sA ; B = sB ; F = sF ; G = sG
X 11 = A ; X 12 = G ; Y12 = F ; X 22 = B ; X 13 = 0 mxn ; X 23 = sI n
N11 = I m + c1 (1) X 11 ; N12 = c1 (1) X 12 ; M 12 = c1 (1)Y12
N13 = c1 (1) X 13 ; N 22 = I n + c1 (1) X 22 ; N 23 = c1 (1) X 23
D11 = I m + c2 (1) X 11 ; D12 = c2 (1) X 12 ; P12 = c2 (1)Y12
D13 = c2 (1) X 13 ; D22 = I n + c2 (1) X 22 ; D23 = c2 (1) X 23
Para k = 2 : q
X 11 = AX 11 ; X 12 = AX 12 + GX 22 ; Y12 = AX 12 + FX 22
10.1
X 13 = AX 13 + GX 23 ; X 23 = BX 23 + sX 22 ; X 22 = BX 22
10.2
N11 = N11 + c1 (k ) X 11 ; N12 = N12 + c1 (k ) X 12 ; M 12 = M 12 + c1 (k ) X 12
10.3
N13 = N13 + c1 (k ) X 13 ; N 22 = N 22 + c1 (k ) X 22 ; N 23 = N 23 + c1 (k ) X 23
10.4
D11 = D11 + c2 (k ) X 11 ; D12 = D12 + c 2 (k ) X 12 ; P12 = P12 + c2 (k ) X 12
10.5
D13 = D13 + c2 (k ) X 13 ; D22 = D22 + c2 (k ) X 22 ; D23 = D23 + c2 (k ) X 23
10.6
Calcular F11 resolviendo la ecuación D11 F11 = N11
Calcular F22 resolviendo la ecuación D22 F22 = N 22
Calcular F12 resolviendo la ecuación D11 F12 = N12 − D12 F22
Calcular G12 resolviendo la ecuación D11G12 = M 12 − E12 F22
Calcular F23 resolviendo la ecuación D22 F23 = N 23 − D23 F22
Calcular F13 resolviendo la ecuación D11 F13 = N13 − D12 F23 − D13 F22
Para k = 1 : j
17.1 F13 = F11 F13 + F12 F23 + F13 F22 ; F12 = F11 F12 + F12 F22
2
17.2 G12 = X 11G12 + G12 X 22 ; F23 = F22 F23 + F23 F22 ; F11 = F11 ; F22 = F22
18 Calcular Yi +1 resolviendo la ecuación F22Yi +1 = G12 + F13
19 Yi +1 = Yi +1 + Yi
2
Algoritmo 4.20: Calcula la solución aproximada en el instante t i +1 de una EDMR con
coeficientes variables mediante la modificación a bloques del
Algoritmo 4.3.
El coste computacional aproximado del algoritmo anterior es
166
Capítulo 4: Linealización a Trozos
(2m 3 + 4m 2 n + 8mn 2 + 4n 3 )q + (2m 3 + 3m 2 n + 8mn 2 + 6n 3 ) j
2
4
+ m 3 + 2m 2 n − 6mn 2 + m 3 flops.
3
3
El siguiente algoritmo resuelve EDMRs con coeficientes variables mediante el método
de linealización a trozos basado en los aproximantes diagonales de Padé.
Y = dgedmrlpv(t , data, datad , X 0 , q) .
Entradas: Vector de tiempos t ∈ ℜ l +1 , función data(t ) que calcula las matrices
coeficiente de la EDMR A11 (t ) ∈ ℜ nxn , A12 (t ) ∈ ℜ nxm , A21 (t ) ∈ ℜ mxn ,
A22 (t ) ∈ ℜ mxm , función datad (t ) que calcula las derivadas de las matrices
'
(t ) ∈ ℜ mxn ,
coeficiente de la EDMR A11' (t ) ∈ ℜ nxn , A12' (t ) ∈ ℜ nxm , A21
'
A22
(t ) ∈ ℜ mxm , matriz inicial X 0 ∈ ℜ mxn , grado q ∈ Z + de los polinomios
de la aproximación diagonal de Padé.
Salida:
1
2
3
Matriz a bloques Y = [Y0 , Y1 , L , Yl ] ∈ ℜ ( m×n )×( l +1) , Yi ∈ ℜ mxn , i = 0,1, L, l .
[c1 , c2 ] = dlapex(q ) (Algoritmo 4.2)
Y0 = X 0
Para i = 0 : l − 1
3.1
[ A11 , A12 , A21 , A22 ] = data (t )
A22 = A22 − Yi A12
3.2
G = A21 + A22Yi
3.3
G = G − Yi A11
3.4
[ A11 , A12 , A21 , A22 ] = datad (t )
3.5
A22 = A22 − Yi A12
3.6
F = A21 + A22Yi
3.7
F = F − Yi A11
3.8
A11 = A11 + A12Yi
3.9
3.10 ∆t = ti +1 − ti
3.11 Yi +1 = dlabp3( A22 , A11 , F , G, Yi , ∆t , c1 , c2 ) .
Algoritmo 4.21: Resolución de EDMRs con coeficientes variables mediante el método
de linealización a trozos basado en los aproximantes diagonales de
Padé.
El coste aproximado por iteración del algoritmo anterior es
8m 2 n + 6mn 2 +coste( data )+coste( datad )+coste(Algoritmo 4.20) flops.
4.3.1.2 Método Basado en la Ecuación Conmutante
El método que se presenta en este subapartado es consecuencia del siguiente teorema,
cuya demostración está basada en la ecuación conmutante.
167
Capítulo 4: Linealización a Trozos
Teorema 4.4.
Si las matrices Ai y Bi que aparecen en ( 4.42 ) no tienen valores propios en común,
entonces la matriz Yi +1 que aparece en la expresión ( 4.43 ), solución aproximada en el
instante ti +1 de la EDMR ( 4.32 ), se puede calcular como
Yi +1 = Yi + W f + Wg ,
( 4.63 )
siendo W f la solución de la ecuación matricial de Sylvester
AiW f − W f Bi = e Ai ∆t i Fi e − Bi ∆t i − Fi
( 4.64 )
y Wg la solución de la ecuación matricial de Sylvester
AiW g − W g Bi = Wi − Gi ∆t i ,
( 4.65 )
donde Wi es la solución de la ecuación matricial de Sylvester
AiWi − Wi Bi = e Ai ∆t i Gi e − Bi ∆t i − Gi .
( 4.66 )
Demostración.
Por la Propiedad 2.1, las matrices Ci ∆ti (expresión ( 4.41 )) y eCi ∆ti conmutan, luego
⎡ Ji
⎢0
⎢ mn
⎢⎣0 mn
I mn
0 mn
0 mn
0 mn ⎤ ⎡e J i ∆ti
⎢
I mn ⎥⎥ ⎢ 0 mn
0 mn ⎥⎦ ⎢⎣ 0 mn
F12(i )
I mn
0 mn
F13(i ) ⎤ ⎡e J i ∆ti
⎥ ⎢
I mn ∆ti ⎥ = ⎢ 0 mn
I mn ⎥⎦ ⎢⎣ 0 mn
F12( i )
I mn
0 mn
F13(i ) ⎤ ⎡ J i
⎥
I mn ∆ti ⎥ ⎢⎢0 mn
I mn ⎥⎦ ⎢⎣0 mn
I mn
0 mn
0 mn
0 mn ⎤
I mn ⎥⎥ ,
0 mn ⎥⎦
en donde se ha simplificado la notación escribiendo F12( i ) y F13(i ) , en lugar de F12(i ) (∆ti ) y
F13(i ) (∆ti ) , respectivamente.
Igualando los bloques (1,2) de ambos miembros de la ecuación, se obtiene
J i F12(i ) + I mn = e J i ∆ti ,
J i F12( i ) = e J i ∆ti − I mn ,
y de aquí
( 4.67 )
J i F12( i ) f i = e J i ∆ti f i − f i .
De igual modo, igualando los bloques (1,3), resulta que
J i F13(i ) + I mn ∆t i = F12( i ) ,
J i F13(i ) = F12(i ) − I mn ∆t i ,
o bien
( 4.68 )
J i F13(i ) gi = F12( i ) gi − ∆ti gi .
Si se definen
( 4.69 )
w f = F12( i ) fi y W f = mat mxn ( w f ) ,
168
Capítulo 4: Linealización a Trozos
y se desarrolla la parte izquierda de la ecuación ( 4.67 ) se deduce, por la Propiedad 6.8,
que
( 4.70 )
(
)
J i F12(i ) f i = J i w f = I n ⊗ Ai − BiT ⊗ I m w f = vec(AiW f − W f Bi ),
Desarrollando la parte derecha de la ecuación ( 4.67 ), y teniendo en cuenta el Lema 4.1
y la Propiedad 6.8, se obtiene
T
( 4.71 )
(
)
e J i ∆ti f i − f i = e (I n ⊗ Ai − Bi ⊗I m )∆ti f i − f i = e − Bi ∆ti ⊗ e Ai ∆ti f i − f i
(
)
T
= vec e Ai ∆ti Fi e − Bi ∆ti − Fi ,
siendo
Fi = mat mxn ( f i ) .
Teniendo en cuenta ( 4.67 ) y las igualdades ( 4.70 ) y ( 4.71 ), se tiene
(
)
vec(AiW f − W f Bi ) = vec e Ai ∆ti Fi e − Bi ∆ti − Fi ,
por lo que W f se puede calcular resolviendo la ecuación matricial de Sylvester ( 4.64),
AiW f − W f Bi = e Ai ∆t i Fi e − Bi ∆t i − Fi .
De igual modo, si se definen
wi = F12( i ) gi y Wi = mat mxn ( wi ) ,
entonces la matriz Wi se puede calcular mediante la resolución de la ecuación matricial
de Sylvester ( 4.66 ),
AiWi − Wi Bi = e Ai ∆t i Gi e − Bi ∆t i − Gi ,
siendo
Gi = mat mxn ( g i ) .
Realizando un desarrollo similar para la expresión ( 4.68 ), se tiene que si se definen
( 4.72 )
wg = F13(i ) g i y W g = mat mxn ( wg ) ,
entonces Wg se puede obtener resolviendo la ecuación matricial de Sylvester ( 4.65 ),
( 4.73 )
AiW g − W g Bi = Wi − Gi ∆t i .
Teniendo en cuenta las expresiones ( 4.43 ), ( 4.69 ) y ( 4.72 ), se tiene
Yi +1 = Yi + mat mxn ( F12( i ) f i ) + mat mxn ( F13( i ) g i ) = Yi + W f + Wg ,
con lo que queda demostrado el teorema.
Obsérvese que para calcular la matriz Yi +1 del teorema anterior es necesario resolver las
ecuaciones matriciales de Sylvester ( 4.64 ), ( 4.65 ) y ( 4.66 ) con las mismas matrices
coeficiente Ai y Bi . Teniendo en cuenta este hecho, se puede reducir el coste
computacional para calcular Yi +1 del modo que a continuación se muestra.
Sean
169
Capítulo 4: Linealización a Trozos
Ai = Qa Ai QaT ,
Bi = Qb Bi QbT ,
respectivamente, las descomposiciones reales de Schur de las matrices Ai y Bi , con Qa
y Qb matrices ortogonales, y Ai y Bi matrices casi triangulares superiores.
Sustituyendo las expresiones anteriores en la ecuación ( 4.64 ), resulta
Qa Ai QaT W f − W f Qb Bi QbT = Qa e Ai ∆ti QaT Fi Qb e − Bi ∆ti QbT − Fi ,
por lo que
Ai QaT W f Qb − QaT W f Qb Bi = e Ai ∆ti QaT Fi Qb e − Bi ∆ti − QaT Fi Qb .
Llamando
X = QaT W f Qb ,
F = QaT Fi Qb ,
E a = e Ai ∆ti ,
Eb = e − Bi ∆ti .
se obtiene la ecuación casi triangular superior de Sylvester
( 4.74 )
Ai X − XBi = E a FEb − F .
Aplicando los mismos pasos a la ecuación ( 4.66 ), se deduce que
Qa Ai QaT Wi − Wi Qb Bi QbT = Qa e Ai ∆ti QaT Gi Qb e − Bi ∆ti QbT − Gi ,
Ai QaT Wi Qb − QaT Wi Qb Bi = e A1∆ti QaT Gi Qb e − Bi ∆ti − QaT Gi Qb ,
Ai Z − ZBi = E a GEb − G ,
siendo
Z = QaT Wi Qb ,
G = QaT Gi Qb ,
E a = e Ai ∆ti ,
Eb = e − Bi ∆ti .
Por último, la ecuación matricial de Sylvester ( 4.65 ) queda como
Qa Ai QaT Wg − Wg Qb Bi QbT = Wi − Gi ∆ti ,
Ai QaT Wg Qb − QaT Wg Qb Bi = QaT Wi Qb − QaT Gi Qb ∆ti ,
( 4.75 )
AiY − YBi = Z − G∆ti ,
siendo
170
Capítulo 4: Linealización a Trozos
Y = QaT Wg Qb ,
Z = QaT Wi Qb ,
G = QaT Gi Qb .
Por lo tanto
Yi +1 = Yi + W f + Wg = Yi + Qa XQbT + QaYQbT = Yi + Qa ( X + Y )QbT .
El siguiente algoritmo calcula la matriz Yi +1 de la expresión ( 4.63), según el método
descrito en los párrafos anteriores.
Yi +1 = dlabc3( A, B, F , G, Yi , ∆t , c1 , c2 ) .
Entradas: Matriz A ∈ ℜ mxm , matriz B ∈ ℜ nxn , matriz F ∈ ℜ mxn , matriz G ∈ ℜ mxn ,
matriz Yi ∈ ℜ mxn , incremento de tiempo ∆t ∈ ℜ , vectores c1 , c2 ∈ ℜ q que
contienen a los coeficientes de los términos de grado mayor que cero de los
polinomios de la aproximación diagonal de Padé de la función
exponencial.
Salida:
Matriz Yi +1 ∈ ℜ mxn (véase expresión ( 4.63)).
1
2
3
4
[Qa , A] = schur ( A) ( descomposición real de Schur de la matriz A )
[Qb , B ] = schur ( B ) (descomposición real de Schur de la matriz B )
Ea = dqtexppad ( A∆t , c1 , c2 ) (modificación del Algoritmo 2.1)
Eb = dqtexppad ( B∆t , c1 , c2 ) (modificación del Algoritmo 2.1)
5
6
7
8
9
10
11
F = QaT FQb ; F = Ea FEb − F
F = dtrsyl ( A,− B, F ) (Algoritmo 3.14)
G = QaT GQb ; W = G ; G = Ea GEb − G
G = dtrsyl ( A,− B, G ) (Algoritmo 3.14)
G = G − W∆t
G = dtrsyl ( A,− B, G ) (Algoritmo 3.14)
Yi +1 = Yi + Qa (F + G )QbT
Algoritmo 4.22: Calcula la solución aproximada en el instante t i +1 de una EDMR con
coeficientes variables mediante la ecuación conmutante.
Notas:
• La exponencial de una matriz casi triangular superior ( dqtexppad ) se puede
obtener mediante una modificación del Algoritmo 2.1 para el caso de matrices
casi triangulares superiores. Para optimizar el código anterior es necesario que las
operaciones con matrices se hagan de tal modo que se explote la estructura casi
triangular superior de las mismas. De este modo, el coste del cálculo de la
exponencial de una matriz se puede reducir aproximadamente a la mitad, por lo
que el coste aproximado del algoritmo anterior es
27m 3 + 11m 2 n + 11nm 2 + 27n 3 +coste(Algoritmo 2.1) flops.
171
Capítulo 4: Linealización a Trozos
• Si las matrices A y B
Yi +1 = Yi + F∆t + 0.5G (∆t ) 2 .
del algoritmo anterior son nulas, entonces
• Si las matrices A y B del algoritmo anterior tienen algún valor propio muy
cercano, entonces sería conveniente utilizar el Algoritmo 4.20 o el Algoritmo 4.25
que se describe en el siguiente subapartado.
A continuación se muestra el algoritmo completo que resuelve EDMRs mediante el
método de linealización a trozos basado en la ecuación conmutante.
Y = dgedmrlcv(t , data, datad , X 0 , q) .
Entradas: Vector de tiempos t ∈ ℜl +1 , función data (t ) que calcula las matrices
coeficiente de la EDMR A11 (t ) ∈ ℜ nxn , A12 (t ) ∈ ℜ nxm , A21 (t ) ∈ ℜ mxn ,
A22 (t ) ∈ ℜ mxm , función datad (t ) que calcula las derivadas de las matrices
'
(t ) ∈ ℜ mxn ,
coeficiente de la EDMR A11' (t ) ∈ ℜ nxn , A12' (t ) ∈ ℜ nxm , A21
'
A22
(t ) ∈ ℜ mxm , matriz inicial X 0 ∈ ℜ mxn , grado q ∈ Z + de los polinomios
de la aproximación diagonal de Padé.
Salida:
Matriz a bloques Y = [Y0 , Y1 , L , Yl ] ∈ ℜ ( m×n )×( l +1) , Yi ∈ ℜ mxn , i = 0,1, L, l .
[c1 , c2 ] = dlapex(q ) (Algoritmo 4.2)
Y0 = X 0
Para i = 0 : l − 1
3.1
[ A11 , A12 , A21 , A22 ] = data (t i )
1
2
3
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
A22 = A22 − Yi A12
G = A21 + A22Yi
G = G − Yi A11
[ A11 , A12 , A21 , A22 ] = datad (t i )
A22 = A22 − Yi A12
F = A21 + A22Yi
F = F − Yi A11
A11 = A11 + A12Yi
∆t = ti +1 − ti
Yi +1 = dlabc3( A22 , A11 , F , G, Yi , ∆t , c1 , c2 ) (Algoritmo 4.22)
Algoritmo 4.23: Resolución de EDMRs con coeficientes variables mediante el método
de linealización a trozos basado en la ecuación conmutante.
El coste computacional aproximado por iteración del algoritmo anterior es
8m 2 n + 6mn 2 +coste( data )+coste( datad )+coste(Algoritmo 4.22) flops.
4.3.1.3 Método Basado en los Subespacios de Krylov
La matriz Yi +1 de la expresión ( 4.43 ), solución aproximada en el instante t i +1 de la
EDMR ( 4.32 ), se puede expresar como
( 4.76 )
Yi +1 = Yi + mat mxn ( F12(i ) (∆t i ) f i + F13(i ) (∆t i ) g i ) = Yi + mat mxn (e Ci ∆ti vi ) ,
172
Capítulo 4: Linealización a Trozos
siendo
⎡ Ji
Ci = ⎢⎢0 mn
⎢⎣0 mn
I mn
0 mn
0 mn
0 mn ⎤
I mn ⎥⎥
0 mn ⎥⎦
y
⎡0 mnx1 ⎤
vi = ⎢⎢ f i ⎥⎥ .
⎢⎣ g i ⎥⎦
El coste de almacenamiento de la matriz Jacobiana J i (véase expresión ( 4.42 ) es
excesivamente alto, del orden de (mn) 2 números en coma flotante. Teniendo en cuenta
que dicha matriz únicamente es necesaria para calcular el producto matriz por vector
que aparece en los algoritmos basados en los subespacios de Krylov, sería interesante
realizar dicho cálculo sin la formación explícita de la matriz Jacobiana, reduciendo de
esta forma el coste de almacenamiento. El algoritmo que se muestra a continuación
calcula el producto J i vi , con vi ∈ ℜ mn , sin formar explícitamente la matriz Jacobiana.
w = dlapkv( A, B, v) .
Entradas: Matriz A ∈ ℜ mxm , matriz B ∈ ℜ nxn , vector v ∈ ℜ mn .
Salida:
1
(
)
Vector w = I n ⊗ A − B T ⊗ I m v ∈ ℜ mn .
Para i = 1 : n
i1 = (i − 1)m + 1
1.1
i2 = im
1.2
w(i1 : i2 ) = Av(i1 : i2 )
1.3
1.4
Para j = 1 : n
1.4.1 j1 = ( j − 1)m + 1
1.4.2 j2 = jm
1.4.3 w(i1 : i2 ) = − B( j , i )v( j1 : j2 ) + w(i1 : i2 )
Algoritmo 4.24: Cálculo del producto de la matriz Jacobiana de una EDMR por un
vector.
El coste computacional aproximado del algoritmo anterior es 2m 2 n + 2mn 2 flops.
El siguiente algoritmo calcula la matriz Yi +1 de la expresión ( 4.76 ) mediante una
adaptación a bloques del Algoritmo 4.9, minimizando con ello los costes
computacionales y de almacenamiento.
173
Capítulo 4: Linealización a Trozos
Yi +1 = dlabk 3( A, B, F , G, Yi , ∆t , p, tol , c1 , c2 ) .
Entradas: Matriz A ∈ ℜ mxm , matriz B ∈ ℜ nxn , matriz F ∈ ℜ mxn , matriz G ∈ ℜ mn ,
matriz Yi ∈ ℜ mn , incremento de tiempo ∆t ∈ ℜ , dimensión p ∈ Z + del
subespacio de Krylov, tolerancia tol ∈ ℜ + , vectores c1 , c2 ∈ ℜ q que
contienen a los coeficientes de los términos de grado mayor que cero de los
polinomios de la aproximación diagonal de Padé de la función
exponencial.
Salida:
1
2
3
4
5
6
7
8
Matriz Yi +1 ∈ ℜ mxn de la expresión ( 4.76 ).
f = vec( F ) ; g = vec(G )
V (1 : mn,1) = 0 nm ; V (mn + 1 : 2mn,1) = f ; V (2mn + 1 : 3mn,1) = g
β =|| V (:,1) ||2
Si β = = 0 Salir del algoritmo
V (mn + 1 : 3mn) = V (mn + 1 : 3mn) / β
Para j = 1 : p
w(1 : mn) = dlapkv( A, B, V (1 : mn, j )) (Algoritmo 4.24)
6.1
w(1 : mn) = w(1 : mn) + V (mn + 1 : 2mn, j )
6.2
w(mn + 1 : 2mn) = V (2mn + 1 : 3mn, j )
6.3
6.4 w(2mn + 1 : 3mn) = 0 nm ; w(1 : 2mn) = ∆tw(1 : 2mn)
6.5
Para i = 1 : j
6.5.1 H (i, j ) = wT V (1 : 3mn, i ) ; w = w − H (i, j )V (1 : 3mn, i )
s =|| w2 ||
6.6
6.7
Si s < tol
6.7.1 p = j
6.7.2 Salir del bucle
6.8
H ( j + 1, j ) = s
6.9
V (1 : 3mn, j + 1) = w / H ( j + 1, j )
H (1 : p,1 : p ) = dlaexp( H (1 : p,1 : p ), c1 ,c 2 ) (Algoritmo 4.3)
Yi +1 = Yi + βmat mxn (V (1 : mn,1 : p) H (1 : p,1))
Algoritmo 4.25: Calcula la solución aproximada en el instante t i +1 de una EDMR con
coeficientes variables mediante la modificación a bloques del
Algoritmo 4.9.
El coste computacional aproximado del algoritmo anterior es
2m 2 np + 2mn 2 p + 6mnp( p + 1) +coste(Algoritmo 4.3) flops.
El algoritmo completo que resuelve EDMRs con coeficientes variables basado en los
subespacios de Krylov se muestra a continuación.
174
Capítulo 4: Linealización a Trozos
Y = dgedmrlkv(t , data, datad , X 0 , p, tol , q) .
Entradas: Vector de tiempos t ∈ ℜl +1 , función data (t ) que calcula las matrices
coeficiente de la EDMR A11 (t ) ∈ ℜ nxn , A12 (t ) ∈ ℜ nxm , A21 (t ) ∈ ℜ mxn ,
A22 (t ) ∈ ℜ mxm , función datad (t ) que calcula las derivadas de las matrices
'
(t ) ∈ ℜ mxn ,
coeficiente de la EDMR A11' (t ) ∈ ℜ nxn , A12' (t ) ∈ ℜ nxm , A21
'
A22
(t ) ∈ ℜ mxm , matriz inicial X 0 ∈ ℜ mxn , dimensión p ∈ Z + del subespacio
de Krylov, tolerancia tol ∈ ℜ + , grado q ∈ Z + de los polinomios de la
aproximación diagonal de Padé.
Salida:
Matriz a bloques Y = [Y0 , Y1 , L , Yl ] ∈ ℜ ( m×n )×( l +1) , Yi ∈ ℜ mxn , i = 0,1, L, l .
[c1 , c2 ] = dlapex(q ) (Algoritmo 4.2)
Y0 = X 0
Para i = 0 : l − 1
3.1
[ A11 , A12 , A21 , A22 ] = data (ti )
1
2
3
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
A22 = A22 − Yi A12
G = A21 + A22Yi
G = G − Yi A11
[ A11 , A12 , A21 , A22 ] = datad (ti )
A22 = A22 − Yi A12
F = A21 + A22Yi
F = F − Yi A11
A11 = A11 + A12Yi
∆t = ti +1 − ti
Yi +1 = dlabk 3( A22 , A11 , F , G, Yi , ∆t , p, tol , c1 , c2 )
Algoritmo 4.26: Resolución de EDMRs con coeficientes variables mediante el método
de linealización a trozos basado en los subespacios de Krylov.
El coste computacional aproximado por iteración del algoritmo anterior es
8m 2 n + 6mn 2 +coste( data )+coste( datad )+coste(Algoritmo 4.25) flops.
4.3.2 Resolución de EDMRs con Coeficientes Constantes
Sea la EDMR con coeficientes constantes
( 4.77 )
X ' (t ) = A21 + A22 X (t ) − X (t ) A11 − X (t ) A12 X (t ), t0 ≤ t ≤ t f ,
X (t 0 ) = X 0 ∈ ℜ mxn ,
siendo A11 ∈ R nxn , A12 ∈ R nxm , A21 ∈ R mxn , A22 ∈ R mxm .
Aplicando la función vec a la EDMR ( 4.77 ), se obtiene la EDO autónoma
( 4.78 )
x' (t ) = f ( x(t )) , x0 = vec( X 0 ) , x = x(t ) ,
siendo
175
Capítulo 4: Linealización a Trozos
f ( x) = vec( A21 + A22 X − XA11 − XA12 X ) ,
( 4.79 )
o bien, utilizando la Propiedad 6.7 y la Propiedad 6.8 del producto de Kronecker,
f ( x) = vec( A21 ) + [ I n ⊗ A22 − A11T ⊗ I m ]x − [ I n ⊗ ( XA12 )]x
( 4.80 )
o bien
f ( x) = vec( A21 ) + [ I n ⊗ A22 − A11T ⊗ I m ]x − [( A12 X ) T ⊗ I m ]x .
( 4.81 )
Como se cumplen las hipótesis del Teorema 2.10 (página 56), considerando la partición
t 0 < t1 < L < t l −1 < t l = t f y aplicando la linealización a trozos, se obtiene el conjunto de
EDLs resultantes de la aproximación lineal de f (t , x) en cada subintervalo,
( 4.82 )
y ' (t ) = f i + J i ( y (t ) − yi ) , t ∈ [t i , t i +1 ] , y (t i ) = yi , i = 0,1,L, l − 1 .
siendo
( 4.83 )
( 4.84 )
f i = vec( A21 + A22Yi − Yi A11 − Yi A12Yi ) ,
Ji =
∂f
( yi ) = I n ⊗ Ai − BiT ⊗ I m ,
∂x
donde
( 4.85 )
Ai = A22 − Yi A12 , Bi = A11 + A12Yi .
Aplicando el Teorema 4.2, se tiene que la solución de la EDL ( 4.82 ) es
( 4.86 )
y (t ) = yi + F12(i ) (t − ti ) f i ,
siendo F12( i ) el bloque (1,2) de la matriz eCiθ , donde
( 4.87 )
⎡J
Ci = ⎢ i
⎣0 mn
I mn ⎤
.
0 mn ⎥⎦
En particular,
( 4.88 )
yi +1 = yi + F12( i ) (∆t i ) f i ,
siendo ∆ti = ti +1 − ti .
Por lo tanto, la solución aproximada en el instante t i +1 de la EDMR ( 4.77 ) en el
instante ti +1 se puede expresar como
( 4.89 )
Yi +1 = Yi + mat mxn ( F12( i ) (∆t ) vec( F )) .
A continuación se presenta un algoritmo, basado en la linealización a trozos, que
resuelve EDMRs con coeficientes constantes.
176
Capítulo 4: Linealización a Trozos
Y = dgedmrlgc(t , data, X 0 ) .
Entradas: Vector de tiempos t ∈ ℜl +1 , función data que obtiene las matrices
coeficiente de la EDMR A11 ∈ ℜ nxn , A12 ∈ ℜ nxm , A21 ∈ ℜ mxn , A22 ∈ ℜ mxm ,
matriz inicial X 0 ∈ ℜ mxn .
Salida:
Matriz a bloques Y = [Y0 , Y1 , L , Yl ] ∈ ℜ ( m×n )×( l +1) , Yi ∈ ℜ mxn , i = 0,1, L, l .
[ A11 , A12 , A21 , A22 ] = data ()
Y0 = X 0
Para i = 0 : l − 1
3.1
A22 = A22 − Yi A12
1
2
3
3.2
3.3
4.4
3.5
F = A21 + A22Yi
F = F − Yi A11
A11 = A11 + A12Yi
∆t = ti +1 − ti
3.6
Yi +1 = Yi + mat mxn ( F12( i ) (∆t ) vec( F )) (expresión ( 4.89 ))
Algoritmo 4.27: Resolución de EDMRs con coeficientes constantes mediante la
linealización a trozos.
4.3.2.1 Método Basado en los Aproximantes Diagonales de Padé
Una forma de calcular la matriz Yi +1 de la expresión ( 4.89 ) se basa en el teorema que se
presenta a continuación.
Teorema 4.5.
La matriz Yi +1 que aparece en la expresión ( 4.89 ), solución aproximada en el instante
t i +1 de la EDMR con coeficientes constantes ( 4.77 ), se puede calcular utilizando la
expresión
( 4.90 )
Yi +1 = Yi + F12(i ) (∆t i )[ F22( i ) (∆t i )]−1 ,
donde F12(i ) (∆ti ) y F22(i ) (∆ti ) son, respectivamente, los bloques (1,2) y (2,2) de la matriz
e Ci ∆ti , con
( 4.91 )
⎡ A
Ci = ⎢ i
⎣0 nxm
Fi ⎤
,
Bi ⎥⎦
siendo
Fi = A21 + A22Yi − Yi A11 − Yi A12Yi ,
Ai = A22 − Yi A12 ,
Bi = A11 + A12Yi .
Demostración.
Al aplicar la linealización a trozos a la EDMR ( 4.77 ) se obtiene en [t i , t i +1 ] la EDL
177
Capítulo 4: Linealización a Trozos
y ' (t ) = f i + J i ( y (t ) − y i ) , y (t i ) = yi
que tiene como solución analítica
t
y (t ) = yi + ∫ e J i ( t −τ ) f i dτ .
( 4.92 )
ti
Si se realiza el cambio de variable
s = τ − ti
y se define
θ = t − ti ,
entonces
ds = dτ ,
t − τ = t − s − ti = θ − s ,
por lo que, aplicando el Lema 4.1, se tiene que la expresión ( 4.92 ) queda como
t
y (t ) = y i + ∫ e
J i ( t −τ )
(
= y i + ∫ e − Bi
dτ f i = y i + ∫ e
J i (θ − s )
0
ti
θ
θ
T
(θ − s )
θ
f i ds = y i + ∫ e ( I n ⊗ Ai − Bi
T
⊗ I m )(θ − s )
f i ds
0
)
⊗ e Ai (θ − s ) f i ds.
0
Por tanto, si se define Fi = mat mxn ( f i ) , entonces, según la Propiedad 6.8,
θ
( 4.93 )
Y (t ) = Yi + ∫ e Ai (θ − s ) Fi e − Bi (θ − s ) ds
0
es la solución aproximada de la EDMR ( 4.77 ) en el intervalo [t i , t i +1 ] .
Para calcular la integral que aparece en la expresión ( 4.93 ), se considera la matriz
triangular superior a bloques definida en ( 4.91 ),
⎡ A
Ci = ⎢ i
⎣0 mxn
Fi ⎤
,
Bi ⎥⎦
y la exponencial de la matriz Ciθ ,
⎡ F ( i ) (θ ) F12( i ) (θ )⎤
e Ciθ = ⎢ 11
⎥.
F22( i ) (θ )⎦
⎣ 0 nxm
Derivando respecto de θ en ambos miembros de la igualdad anterior, se tiene que
de Ciθ
= Ce Ciθ ,
dθ
por lo que
178
Capítulo 4: Linealización a Trozos
( 4.94 )
⎡ dF11( i ) (θ )
⎢
⎢ dθ
⎢ 0
nxm
⎣⎢
dF12(i ) (θ ) ⎤
⎥
dθ ⎥ = ⎡ Ai
dF22(i ) (θ ) ⎥ ⎢⎣0 nxm
dθ ⎦⎥
Fi ⎤ ⎡ F11( i ) (θ ) F12( i ) (θ )⎤
⎢
⎥
Bi ⎥⎦ ⎣ 0 nxm
F22( i ) (θ )⎦
⎡ A F ( i ) (θ )
= ⎢ i 11
⎣ 0 nxm
Ai F12( i ) (θ ) + Fi F22( i ) (θ )⎤
⎥.
Bi F22(i ) (θ )
⎦
Igualando los bloques (1,1), (1,2) y (2,2) de ambos miembros de la ecuación anterior y
teniendo en cuenta que
e Cθ
θ =0
= I m+ n ,
se obtienen las siguientes EDMLs con valores iniciales:
( 4.95 )
dF11(i ) (θ )
= Ai F11( i ) (θ ) , F11( i ) (0) = I m ,
dθ
( 4.96 )
dF22(i ) (θ )
= Bi F22( i ) (θ ) , F22( i ) (0) = I n ,
dθ
( 4.97 )
dF12(i ) (θ )
= Ai F12(i ) (θ ) + Fi F22( i ) (θ ) , F12( i ) (0) = 0 mxn .
dθ
Resolviendo en primer lugar las EDMLs( 4.95 ) y ( 4.96 ), se tiene que
F11( i ) (θ ) = e Aiθ ,
F22( i ) (θ ) = e Biθ .
( 4.98 )
Sustituyendo F22( i ) (θ ) = e Biθ en ( 4.97 ), se obtiene la EDML
dF12(i ) (θ )
= Ai F12( i ) (θ ) + Fi e Biθ , F12( i ) (0) = 0 mxn ,
dθ
por lo tanto,
(i)
12
F
( 4.99 )
(θ ) =
θ
∫e
Ai ( θ − s )
Fi e Bi s ds .
o
Teniendo en cuenta las expresiones ( 4.93 ), ( 4.98 ) y ( 4.99 ), se tiene que
θ
θ
0
0
(
)
−1
Y (t ) = Yi + ∫ e Ai (θ − s ) Fi e − Bi (θ − s ) ds = Yi + ∫ e Ai (θ − s ) Fi e Bi s dse − Biθ = Yi + F12( i ) (θ ) F22(i ) (θ ) .
Por último, si en la anterior expresión se sustituye t por t i +1 , resulta
( 4.100 )
(
Yi +1 = Yi + F12( i ) (∆ti ) F22(i ) (∆ti )
)
−1
,
siendo ∆t i = t i +1 − t i , con lo que queda demostrado el teorema.
El siguiente algoritmo calcula la matriz Yi +1 de la expresión ( 4.90 ), utilizando una
adaptación a bloques del Algoritmo 4.3.
179
Capítulo 4: Linealización a Trozos
Yi +1 = dlabp 2( A, B, F , Yi , ∆t , c1 , c2 ) .
Entradas: Matriz A ∈ ℜ mxm , matriz B ∈ ℜ nxn , matriz F ∈ ℜ mxn , matriz Yi ∈ ℜ mxn ,
incremento de tiempo ∆t ∈ ℜ , vectores c1 , c2 ∈ ℜ q que contienen a los
coeficientes de los términos de grado mayor que cero de los polinomios de
la aproximación diagonal de Padé de la función exponencial.
Salida:
Matriz Yi +1 ∈ ℜ mxn de la expresión ( 4.100 ).
(
nor = [ A F ]
2
j = max(0,1 + int(log 2 (nor )))
∆t
s= j
2
A = sA ; B = sB ; F = sF
X 11 = A ; X 12 = F ; X 22 = B
N11 = I m + c1 (1) X 11 ; N12 = c1 (1) X 12 ; N 22 = I n + c1 (1) X 22
3
4
5
6
7
8
∞
; nor = ∆t max nor , [ B I n ]
)
1
∞
D11 = I m + c2 (1) X 11 ; D12 = c2 (1) X 12 ; D22 = I n + c2 (1) X 22
Para k = 2 : q
X 12 = AX 12 + FX 22 ; X 11 = AX 11 ; X 22 = BX 22
8.1
8.2 N11 = N11 + c1 (k ) X 11 ; N12 = N12 + c1 (k ) X 12 ; N 22 = N 22 + c1 (k ) X 22
8.3 D11 = D11 + c2 (k ) X 11 ; D12 = D12 + c2 (k ) X 12 ; D22 = D22 + c2 (k ) X 22
9 Calcular X 11 resolviendo la ecuación D11 X 11 = N11
10 Calcular X 22 resolviendo la ecuación D22 X 22 = N 22
11 Calcular X 12 resolviendo la ecuación D11 X 12 = N12 − D12 X 22
12 Para k = 1 : j
12.1 X 12 = X 11 X 12 + X 12 X 22
2
2
12.2 X 11 = X 11 ; X 22 = X 22
13 Calcular Yi +1 resolviendo la ecuación X 22Yi +1 = X 12
14 Yi +1 = Yi +1 + Yi
Algoritmo 4.28: Calcula la solución aproximada en el instante t i +1 de una EDMR con
coeficientes constantes mediante la modificación a bloques del
Algoritmo 4.3.
El coste computacional aproximado en flops del algoritmo anterior es
( 4.101 )
4
2
(2m 3 + 2m 2 n + 2mn 2 + 2n 3 )(q + j ) + m 3 − 2m 2 n + 2mn 2 + n 3 flops.
3
3
El siguiente algoritmo resuelve EDMRs con coeficientes constantes mediante el método
de linealización a trozos con aproximantes diagonales de Padé.
180
Capítulo 4: Linealización a Trozos
Y = dgedmrlpc(t , data, X 0 , q ) .
Entradas: Instantes de tiempo t i ( 0 ≤ i ≤ l ), función data que obtiene las matrices
coeficiente de la EDMR A11 ∈ ℜ nxn , A12 ∈ ℜ nxm , A21 ∈ ℜ mxn , A22 ∈ ℜ mxm ,
matriz inicial X 0 ∈ ℜ mxn , grado q ∈ Z + de los polinomios de la
aproximación diagonal de Padé de la función exponencial.
Salida:
1
2
3
4
Matriz a bloques Y = [Y0 , Y1 , L , Yl ] ∈ ℜ ( m×n )×( l +1) , Yi ∈ ℜ mxn , i = 0,1, L, l .
[c1 , c2 ] = dlapex(q ) (Algoritmo 4.2)
[ A11 , A12 , A21 , A22 ] = data ()
Y0 = X 0
Para i = 0 : l − 1
4.1
A22 = A22 − Yi A12
4.2
4.3
4.4
4.5
4.6
F = A21 + A22Yi
F = F − Yi A11
A11 = A11 + A12Yi
∆t = ti +1 − ti
Yi +1 = dlabp 2( A22 , A11 , F , Yi , ∆t , c1 , c2 ) (Algoritmo 4.28)
Algoritmo 4.29: Resolución de EDMRs con coeficientes constantes mediante el método
de linealización a trozos basado en los aproximantes diagonales de
Padé.
El coste en flops por iteración es
4m 2 n + 4mn 2 +coste(Algoritmo 4.28) flops.
4.3.2.2 Método Basado en la Ecuación Conmutante
El método que se describe en este subapartado es consecuencia del siguiente teorema,
cuya demostración está basada en la ecuación conmutante.
Teorema 4.6.
Si las matrices Ai y Bi que aparecen en ( 4.85 ) no tienen valores propios en común,
entonces la matriz Yi +1 que aparece en la expresión ( 4.89 ), solución aproximada en el
instante t i +1 de la EDMR con coeficientes ( 4.77 ), se puede calcular como
( 4.102 )
Yi +1 = Yi + Wi ,
siendo Wi la solución de la ecuación matricial de Sylvester
( 4.103 )
AiWi − Wi Bi = e Ai ∆t i Fi e − Bi ∆t i − Fi .
Demostración.
Según la Propiedad 2.1, la matriz Ci de la expresión ( 4.87 ) conmuta con la matriz
eCi ∆t i , por lo que
181
Capítulo 4: Linealización a Trozos
⎡ Ji
⎢0
⎣ mn
I mn ⎤ ⎡e J i ∆ti
⎢
0 mn ⎥⎦ ⎣ 0 mn
F12( i ) ⎤ ⎡e J i ∆ti
⎥=⎢
I mn ⎦ ⎣ 0 mn
F12( i ) ⎤ ⎡ J i
⎥⎢
I mn ⎦ ⎣0 mn
I mn ⎤
,
0 mn ⎥⎦
en donde se ha simplificado la notación escribiendo F12( i ) en lugar de F12(i ) (∆ti ) .
Igualando los bloques (1,2) de los dos miembros de la ecuación anterior, se tiene que
J i F12( i ) + I mn = e J i ∆ti ,
con lo que
J i F12( i ) = e J i ∆ti − I mn ,
o bien
J i F12( i ) f i = e J i ∆t i f i − f i .
( 4.104 )
Desarrollando el miembro izquierdo de la ecuación ( 4.104 ), y teniendo en cuenta la
Propiedad 6.8, se tiene que
( 4.105 )
(
)
J i F12( i ) f i = J i wi = I n ⊗ Ai − BiT ⊗ I m wi = vec( AiWi − Wi Bi ) ,
siendo
Wi = mat mxn ( wi ) .
Desarrollando el miembro derecho de la ecuación ( 4.104 ), y tendiendo en cuenta el
Lema 4.1 y la Propiedad 6.8, se tiene que
e J i ∆ti f i − f i = e (I n ⊗ Ai − Bi ⊗I m )∆ti f i − f i
T
( 4.106 )
(
)
(
)
= e − Bi ∆ti ⊗ e Ai ∆ti f i − f i = vec e A∆ti Fi e − B∆ti − Fi ,
T
siendo
Fi = mat mxn ( f i ) .
A partir de ( 4.104 ) y teniendo en cuenta las expresiones ( 4.105 ) y ( 4.106 ), se tiene
(
)
vec( AiWi − Wi Bi ) = vec e Ai ∆ti Fi e − Bi ∆ti − Fi ,
por lo que Wi se obtiene resolviendo la ecuación matricial de Sylvester ( 4.103),
AiWi − Wi Bi = e Ai ∆t i Fi e − Bi ∆t i − Fi ,
con lo que queda demostrado el teorema.
La ecuación matricial de Sylvester ( 4.103) se puede resolver como a continuación se
muestra. Sean
Ai = Qa Ai QaT ,
Bi = Qb Bi QbT ,
respectivamente, las descomposiciones reales de Schur de las matrices Ai y Bi , con Qa
y Qb matrices ortogonales, y Ai y Bi matrices casi triangulares superiores.
Sustituyendo las expresiones anteriores en la ecuación ( 4.103 ), se tiene que
182
Capítulo 4: Linealización a Trozos
Qa AiQaTWi − WiQb BiQbT = Qa e Ai ∆t i QaT FiQb e − Bi ∆t i QbT − Fi ,
y multiplicando la ecuación anterior a la izquierda por QaT y a la derecha Qb , se tiene
AiQaTWiQb − QaTWiQb Bi = e Ai ∆t i QaT FiQb e − Bi ∆t i − QaT FiQb .
Llamando
C = e Ai ∆t i QaT FiQb e − Bi ∆t i − QaT FiQb ,
W1 = QaTWiQb ,
se obtiene la ecuación casi triangular de Sylvester
AiW1 − W1Bi = C ,
con lo que Wi se puede obtener resolviendo la ecuación anterior mediante el Algoritmo
3.14, y calculando
Wi = QaW1QbT .
El siguiente algoritmo calcula la matriz Yi +1 de la expresión ( 4.102 ), según el método
descrito en los párrafos anteriores.
Yi +1 = dlabc 2( A, B, F , Yi , ∆t , c1 , c2 ) .
Entradas: Matriz A ∈ ℜ mxm , matriz B ∈ ℜ nxn , matriz F ∈ ℜ mxn , matriz Yi ∈ ℜ mxn ,
incremento de tiempo ∆t ∈ ℜ , vectores c1 , c2 ∈ ℜ q que contienen a los
coeficientes de los términos de grado mayor que cero de los polinomios de
la aproximación diagonal de Padé de la función exponencial.
Salida:
Matriz Yi +1 ∈ ℜ mxn (véase expresión ( 4.102 )).
1
2
3
4
[Qa , A] = schur ( A) ( descomposición real de Schur de la matriz A )
[Qb , B ] = schur ( B ) ( descomposición real de Schur de la matriz B )
Ea = dqtexppad ( A∆t , c1 , c2 ) (modificación del Algoritmo 2.1)
Eb = dqtexppad ( B∆t , c1 , c2 ) (modificación del Algoritmo 2.1)
5
6
7
8
F = QaT FQb
F = Ea FEb − F
F = dtrsyl ( A,− B, F ) (Algoritmo 3.14)
Yi +1 = Yi + Qa FQbT
Algoritmo 4.30: Calcula la solución aproximada en el instante t i +1 de una EDMR con
coeficientes constantes mediante la ecuación conmutante.
Notas:
• La exponencial de una matriz casi triangular superior ( dqtexppad ) se puede
obtener mediante una modificación del Algoritmo 2.1 para el caso de matrices
casi triangulares superiores. El coste aproximado del algoritmo anterior es
29m 3 + 2m 2 n + 6mn 2 + 25n 3 +coste(Algoritmo 2.1) flops.
183
Capítulo 4: Linealización a Trozos
• Si las matrices A y B del algoritmo anterior son nulas, entonces Yi +1 = Yi + F∆t .
• Si las matrices A y B del algoritmo anterior tienen algún valor propio muy
cercano, entonces sería conveniente utilizar el Algoritmo 4.28 o el Algoritmo 4.32
que se describe en el siguiente subapartado.
Y = dgedmrlcc(t , data, X 0 , q) .
Entradas: Instantes de tiempo t i ( 0 ≤ i ≤ l ), función data que obtiene las matrices
coeficiente de la EDMR A11 ∈ ℜ nxn , A12 ∈ ℜ nxm , A21 ∈ ℜ mxn , A22 ∈ ℜ mxm ,
matriz inicial X 0 ∈ ℜ mxn , grado q ∈ Z + de los polinomios de la
aproximación diagonal de Padé de la función exponencial.
Salida:
1
2
3
4
Matriz a bloques Y = [Y0 , Y1 , L , Yl ] ∈ ℜ ( m×n )×( l +1) , Yi ∈ ℜ mxn , i = 0,1, L, l .
[c1 , c2 ] = dlapex(q ) (Algoritmo 4.2)
[ A11 , A12 , A21 , A22 ] = data ()
Y0 = X 0
Para i = 0 : l − 1
4.1
A22 = A22 − Yi A12
4.2
4.3
4.4
4.5
4.6
F = A21 + A22Yi
F = F − Yi A11
A11 = A11 + A12Yi
∆t = ti +1 − ti
Yi +1 = dlabc 2( A22 , A11 , F , Yi , ∆t , c1 , c2 ) (Algoritmo 4.30)
Algoritmo 4.31: Resolución de EDMRs con coeficientes constantes mediante el método
de linealización a trozos basado en la ecuación conmutante.
El coste aproximado por iteración del algoritmo anterior es
4m 2 n + 4mn 2 +coste(Algoritmo 4.30) flops.
4.3.2.3 Método Basado en los Subespacios de Krylov
La matriz Yi +1 de la expresión ( 4.89 ), solución aproximada en el instante t i +1 de la
EDMR ( 4.77 ), se puede expresar como
( 4.107 )
Yi +1 = Yi + mat mxn ( F12( i ) (∆t ) vec( F )) = Yi + mat mxn (e Ci ∆ti vi ) ,
siendo
⎡J
Ci = ⎢ i
⎣0 mn
I mn ⎤
0 mn ⎥⎦
y
⎡0 ⎤
vi = ⎢ mnx1 ⎥ .
⎣ fi ⎦
184
Capítulo 4: Linealización a Trozos
El siguiente algoritmo calcula la matriz Yi +1 de la expresión ( 4.107 ) mediante una
adaptación a bloques del Algoritmo 4.9, minimizando con ello los costes
computacionales y de almacenamiento.
Yi +1 = dlabk 2( A, B, F , Yi , ∆t , p, tol , c1 , c2 ) .
Entradas: Matriz A ∈ ℜ mxm , matriz B ∈ ℜ nxn , matriz F ∈ ℜ mxn , matriz Yi ∈ ℜ mxn ,
incremento de tiempo ∆t ∈ ℜ , dimensión p ∈ Z + de los subespacios de
Krylov, tolerancia tol ∈ ℜ + , vectores c1 , c2 ∈ ℜ q que contienen a los
coeficientes de los términos de grado mayor que cero de los polinomios de
la aproximación diagonal de Padé de la función exponencial.
Salida:
1
2
3
4
5
6
7
8
Matriz Yi +1 ∈ ℜ mxn de la expresión ( 4.107 ).
f = vec( F )
β =|| f ||2
Si β = = 0
3.1
Salir del algoritmo.
H (1,1) = 0 ; H (2,1) = ∆t
V (:,1) = 0 mn ; V (:,2) = f / β ; A = A∆t ; B = B∆t
Para j = 2 : p
w = dlapkv( A, B, V (:, j )) (Algoritmo 4.24)
6.1
H (i, j ) = 0
6.2
6.3
Para i = 2 : j
6.3.1 H (i, j ) = wT V (:, i )
6.3.2 w = w − H (i, j )V (:, i )
s =|| w ||2
6.4
6.5
Si s < tol
6.5.1 p = j
6.5.2 Salir del bucle
6.6
H ( j + 1, j ) = s
V (:, j + 1) = w / s
6.7
H (1 : p,1 : p ) = dlaexp( H (1 : p,1 : p ), c1 ,c 2 ) (Algoritmo 4.3)
Yi +1 = Yi + βmat mxn (V (:,1 : p) H (1 : p,1))
Algoritmo 4.32: Calcula la solución aproximada en el instante t i +1 de una EDMR con
coeficientes constantes mediante la modificación a bloques del
Algoritmo 4.9.
El coste computacional aproximado en flops del algoritmo anterior es
2mn 2 p + 2n 2 mp + 2mnp( p + 1) +coste(Algoritmo 2.1) flops.
Por último, se presenta el algoritmo que resuelve EDMRs con coeficientes constantes
mediante el método de linealización a trozos basado en los subespacios de Krylov.
185
Capítulo 4: Linealización a Trozos
Y = dgedmrlkc(t , data, X 0 , p, tol , q) .
Entradas: Vector de tiempos t ∈ ℜl +1 , función data que obtiene las matrices
coeficiente de la EDMR A11 ∈ ℜ nxn , A12 ∈ ℜ nxm , A21 ∈ ℜ mxn , A22 ∈ ℜ mxm ,
matriz inicial X 0 ∈ ℜ mxn , dimensión p ∈ Z + del subespacio de Krylov,
tolerancia tol ∈ ℜ + , grado q ∈ Z + de los polinomios de la aproximación
diagonal de Padé.
Salida:
1
2
3
4
Matriz a bloques Y = [Y0 , Y1 , L , Yl ] ∈ ℜ ( m×n )×( l +1) , Yi ∈ ℜ mxn , i = 0,1, L, l .
[c1 , c2 ] = dlapex(q ) (Algoritmo 4.2)
[ A11 , A12 , A21 , A22 ] = data ()
Y0 = X 0
Para i = 0 : l − 1
4.1
A = A22 − Yi A12
4.2
4.3
4.4
4.5
4.6
F = A21 + AYi
F = F − Yi A11
B = A11 + A12Yi
∆t = ti +1 − ti
Yi +1 = dlabk 2( A, B, F , Yi , ∆t , p, tol , c1 , c2 ) (Algoritmo 4.32)
Algoritmo 4.33: Resolución de EDMRs con coeficientes constantes mediante el método
de linealización a trozos basado en los subespacios de Krylov.
El coste aproximado por iteración del algoritmo anterior es
4m 2 n + 4mn 2 +coste(Algoritmo 4.32) flops.
4.4 Conclusiones
En este capitulo se han desarrollado nuevos métodos y algoritmos que resuelven EDOs
y EDMRs basados en la técnica de linealización a trozos.
Para la resolución de EDOs se han desarrollado tres métodos basados en la linealización
a trozos comentada en el apartado 2.3.4. En dos de los métodos desarrollados no es
necesario que la matriz Jacobiana sea invertible. Estos métodos se basan en el Teorema
4.1 que permite obtener la solución aproximada de la EDO en cada subintervalo
mediante el cálculo de la exponencial de la matriz definida a bloques que aparece en
dicho teorema. El primero de ellos está basado en los aproximantes diagonales de Padé
y el segundo en los subespacios de Krylov. Para cada uno de ellos se ha diseñado un
algoritmo que permite resolver eficientemente, en términos de almacenamiento y coste,
EDOs. A partir del Teorema 4.1 también se ha presentado otro método, basado en la
Ecuación Conmutante, que es formalmente equivalente al cálculo de la solución
analítica en cada subintervalo, pero realizando dicho cálculo de manera que se reduce su
coste computacional. En este método es necesario que la matriz Jacobiana sea
invertible.
Para la resolución de EDMRs se ha desarrollado una nueva metodología basada en la
técnica de linealización a trozos. Esta metodología consiste, básicamente, en
transformar la EDMR en una EDO y aplicar a esta ecuación la técnica de linealización a
186
Capítulo 4: Linealización a Trozos
trozos de EDOs. Puesto que la EDL así obtenida es de gran dimensión, se hace
necesaria la aplicación de métodos especiales para su resolución.
El primer método está basado en el Teorema 4.3 que permite transformar el problema
vectorial de gran dimensión en uno de tipo matricial. Este teorema muestra la manera de
calcular la aproximación de la solución en un cierto instante, a partir de la aproximación
en el instante anterior, mediante el cálculo de las dos exponenciales de matrices
definidas a bloques que aparecen en dicho teorema. Por lo tanto, ha sido necesario
desarrollar un algoritmo que calculase, de manera eficiente, dicha aproximación,
realizando para ello una modificación del método de los aproximantes diagonales de
Padé para el cálculo simultáneo de ciertos bloques de las exponenciales de las dos
matrices mencionadas anteriormente.
El segundo método consiste en aplicar la Ecuación Conmutante a la matriz que aparece
al aplicar el Teorema 4.1 tras el proceso de vectorización. Al aplicar la citada ecuación,
se demuestra que, para poder determinar la solución aproximada en un instante de
tiempo, es necesario resolver ecuaciones del tipo Sylvester; de este modo, se ha
trasformado un problema vectorial de gran dimensión a otro de tipo matricial.
Correspondientemente, se ha desarrollado un algoritmo que permite calcular
eficientemente la solución en un cierto instante mediante la resolución de tres
ecuaciones matriciales de Sylvester, reduciendo las matrices coeficiente de estas
ecuaciones matriciales a la forma real de Schur y aplicando, a continuación, una
adaptación del método de Bartels-Stewart.
El tercer y último método calcula el producto de la exponencial de una matriz definida a
bloques, obtenida en el proceso de vectorización, por un vector, aplicando para ello una
adaptación a bloques del método de proyección basado en los subespacios de Krylov.
Tanto para EDOs autónomas como para EDMRs con coeficientes constantes ha sido
necesario adaptar, convenientemente, los anteriores algoritmos, optimizando con ello
los costes computacionales y de almacenamiento.
El coste computacional de los métodos desarrollados (tanto para la resolución de EDOs
como para la resolución de EDMRs) y la precisión de los mismos dependen de ciertos
parámetros característicos que a continuación se citan.
• Métodos basados en los aproximantes diagonales de Padé: grado de los
polinomios de la aproximación diagonal de Padé.
• Métodos basados en Ecuación Conmutante: grado de los polinomios de la
aproximación diagonal de Padé.
• Métodos basados en los subespacios de Krylov: dimensión de los subespacios de
Krylov, grado de los polinomios de la aproximación diagonal de Padé y la
tolerancia.
Como los valores óptimos de los citados parámetros dependen del problema
considerado, es difícil pronosticar, a priori, cuál es el mejor método y cuáles son los
valores óptimos de sus parámetros característicos.
Otro aspecto de interés, nada trivial, es que es posible diseñar una rutina/función
“inteligente” capaz de elegir, en función del problema, el mejor de los tres métodos
desarrollados incluidos los valores adecuados de sus parámetros característicos. Esto es
posible ya que los algoritmos desarrollados tienen la misma estructura, cosa obvia pues
parten de una misma metodología, diferenciándose únicamente en la manera de calcular
la correspondiente aproximación en un cierto instante.
187
Capítulo 4: Linealización a Trozos
Por todo ello, es necesario establecer y realizar una serie de pruebas que permitan “dar
respuesta” a varias de las cuestiones surgidas con estos nuevos métodos.
188
Capítulo 5: Resultados Experimentales
Capítulo 5 Resultados Experimentales
5.1 Resumen de Contenidos
En este capítulo se presentan los resultados experimentales obtenidos en la
resolución de diferentes problemas de test con los algoritmos descritos en el Capítulo
3 y en el Capítulo 4. Las implementaciones de los algoritmos se han realizado
tanto en MATLAB como en FORTRAN.
Las implementaciones en MATLAB se han realizado sobre un ordenador portátil
Toshiba con procesador Intel Movile a 2Ghz y 512 Mb de memoria. En las pruebas
realizadas se han utilizado la versión 7, por poseer potentes herramientas de depuración
de código, y la versión 5.3, por disponer de una función que permite calcular el número
de flops de los códigos escritos en MATLAB. Las implementaciones en FORTRAN se
han realizado sobre un nodo de un SGI Altix 3700 [SGIAltix], utilizando la versión 8.1
del compilador FORTRAN de Intel y la versión 1.5.1 de la librería SCSL para las
llamadas a BLAS y LAPACK, todo ello incluido en el software de esa máquina.
Para cada tipo de prueba se han elegido ejemplos característicos que permitiesen
determinar, por una parte, la precisión de los algoritmos implementados y, por otra,
determinar la eficiencia de los mismos. Hay que destacar tanto la gran cantidad de
pruebas realizadas como la amplia gama de las mismas. Por ejemplo, se han analizado
casos de estudio en los que la solución analítica es conocida y así probar la precisión de
los algoritmos implementados. Se han seleccionado también problemas con altos costes
computacionales eligiendo para ello problemas de gran dimensión. En el caso de la
resolución de EDOs y EDMRs se han utilizado casos de estudio que corresponden a
problemas de tipo rígido y no rígido, comparándolos con métodos establecidos y muy
usados como los basados en el método BDF. Además, para cada prueba realizada se han
determinado los valores óptimos, en cuanto a precisión y eficiencia, de los parámetros
característicos de cada una de las implementaciones de manera que la comparación
reflejase, lo más fielmente posible, el comportamiento de cada uno de los algoritmos
implementados.
El contenido de este capítulo está estructurado en seis secciones. En la segunda sección
se comparan las diferentes implementaciones realizadas en FORTRAN para el cálculo
de Funciones de Matrices. En la tercera sección se analizan los resultados obtenidos en
la simulación de la propagación de ondas en fibras de cristal fotónico. En las secciones
cuarta y quinta se comparan las prestaciones obtenidas por las funciones y rutinas que
resuelven EDOs y EDMRs, tanto a nivel de costes en flops, utilizando MATLAB, como
de tiempos de ejecución, utilizando las implementaciones en FORTRAN. En la sexta
sección se resumen los resultados más destacados de las pruebas realizadas.
La nomenclatura utilizada para las funciones implementadas en MATLAB y las rutinas
implementadas en FORTRAN están descritas en las secciones 1.1, 3.1 y 4.1.
189
Capítulo 5: Resultados Experimentales
5.2 Cálculo de Funciones de Matrices
En esta sección se presentan los resultados correspondientes a las implementaciones en
MATLAB y FORTRAN de los algoritmos que calculan funciones de matrices.
Sea A ∈ ℜ nxn y f una función matricial. Si B ∈ ℜ nxn es la matriz obtenida al utilizar un
algoritmo que calcula f ( A) , se define el error relativo asociado a la 1-norma como
Er =
|| f ( A) − B ||1
.
|| f ( A) ||1
En la mayoría de las ocasiones no es posible determinar dicho error puesto que f ( A)
no es conocida. Por ello, en lugar de obtener dicho error, se considerará el error relativo
cometido en la ecuación conmutante
Ec =
|| AB − BA ||1
.
|| AB) ||1
Este error, como se pone de manifiesto en los resultados obtenidos, guarda una relación
cercana con el error relativo Er .
5.2.1 Funciones Polinómicas y Racionales
En este apartado se muestran los resultados correspondientes a las implementaciones de
en MATLAB y FORTRAN correspondientes a los algoritmos del Capítulo 3 que
calculan funciones polinómicas y racionales de matrices. Para estas implementaciones
se han utilizado los métodos de Horner y Paterson-Stockmeyer-Van Loan. En el caso de
las funciones racionales aparece un sistema lineal q( A) X = p( A) (siendo p y q los
polinomios que definen la función racional), que se resuelve utilizando la
descomposición LU con pivotamiento parcial de filas o la descomposición QR. Las
rutinas que se van analizar son:
•
dgefpohor: Calcula B = p ( A) con p polinomio y A ∈ ℜnxn mediante el método de
Horner.
•
dgefpopsv: Calcula B = p ( A) con p polinomio y A ∈ ℜnxn mediante el método de
Paterson-Stockmeyer-Van Loan.
•
dgefrahlu: Calcula p ( A) / q ( A) con p y q polinomios y A ∈ ℜnxn mediante el
método de Horner, utilizando la descomposición LU con pivotamiento parcial de
filas para la resolución del sistema de ecuaciones lineales q( A) X = p( A) .
•
dgefrahqr: Calcula p ( A) / q( A) con p y q polinomios y A ∈ ℜnxn mediante el
método de Horner, utilizando la descomposición QR para la resolución del sistema
de ecuaciones lineales q( A) X = p( A) .
•
dgefraplu: Calcula p ( A) / q ( A) con p y q polinomios y A ∈ ℜnxn mediante el
método de Paterson-Stockmeyer-Van Loan, utilizando la descomposición LU con
pivotamiento parcial de filas para la resolución del sistema de ecuaciones lineales
q( A) X = p( A) .
190
Capítulo 5: Resultados Experimentales
•
dgefrapqr: Calcula p ( A) / q( A) con p y q polinomios y A ∈ ℜnxn mediante el
método de Paterson-Stockmeyer-Van Loan, utilizando la descomposición QR para
la resolución del sistema de ecuaciones lineales q( A) X = p( A) .
Puesto que el coste computacional y de almacenamiento en los algoritmos basados en el
método de Paterson-Stockmeyer-Van Loan dependen del factor de agrupamiento s y del
grado de los polinomios de la aproximación diagonal de Padé, se ha considerado
conveniente variar esos valores y de este modo comprobar experimentalmente cuáles
son sus valores óptimos en función del tamaño de la matriz.
5.2.1.1
Resultados Funciones Polinómicas
En las pruebas realizadas se ha variado el grado g de los polinomios entre 5 y 14, el
factor de agrupamiento s entre 2 y 8, y la dimensión de la matriz n entre 100 y 1000 en
pasos de 100. Además, los coeficientes de la matriz y del polinomio se han generado
aleatoriamente en el intervalo [-1,1].
Debido a la gran cantidad de resultados obtenidos únicamente se muestran los tiempos
de ejecución correspondientes a matrices aleatorias de dimensiones 500 y 1000. Las
precisiones obtenidas en todos los casos para la ecuación conmutante han sido del orden
de 10 −14 . En la siguiente tabla se presentan los tiempos de ejecución de las rutinas
dgefpohor y dgefpopsv.
Te
g=5
g=6
g=7
g=8
g=9
dgefpohor
0.508 0.508 0.51
0.51
0.513
dgefpopsv s=2 0.444 0.444 0.447 0.449 0.449
dgefpopsv s=3 0.378 0.38
0.382 0.382 0.385
dgefpopsv s=4 0.437 0.439 0.441 0.444 0.446
dgefpopsv s=5 0.435 0.435 0.438 0.44
0.442
dgefpopsv s=6 0.494 0.496 0.496 0.499 0.501
dgefpopsv s=7 0.49
0.493 0.495 0.495 0.497
dgefpopsv s=8 0.549 0.552 0.554 0.556 0.556
Tabla 5.1:
Tiempos de ejecución, en segundos, de las rutinas
dgefpohor y dgefpopsv, para una matriz aleatoria
de dimensión igual a 500, variando el grado g del
polinomio entre 5 y 9, y el factor s de
agrupamiento entre 2 y 8.
191
Capítulo 5: Resultados Experimentales
Te
g=10
g=11
g=12
g=13
g=14
dgefpohor
0.513 0.515 0.515 0.518 0.518
dgefpopsv s=2 0.451 0.453 0.453 0.456 0.458
dgefpopsv s=3 0.387 0.389 0.389 0.392 0.394
dgefpopsv s=4 0.446 0.448 0.45
0.453 0.455
dgefpopsv s=5 0.444 0.447 0.447 0.449 0.451
dgefpopsv s=6 0.503 0.506 0.508 0.51
dgefpopsv s=7 0.5
0.51
0.502 0.504 0.507 0.509
dgefpopsv s=8 0.559 0.561 0.563 0.566 0.568
Tabla 5.2:
Tiempos de ejecución, en segundos, de las rutinas
dgefpohor y dgefpopsv, para una matriz aleatoria
de dimensión igual a 500, variando el grado g del
polinomio entre 10 y 14, y el factor s de
agrupamiento entre 2 y 8.
Te
g=5
g=6
g=7
dgefpohor
3.6434 3.6437 3.6436 3.6431 3.6435
dgefpopsv s=2 3.1991 3.1983 3.199
g=8
g=9
3.1983 3.1986
dgefpopsv s=3 2.7534 2.7537 2.7536 2.7537 2.7532
dgefpopsv s=4 3.1946 3.1941 3.1943 3.1944 3.1946
dgefpopsv s=5 3.1925 3.1924 3.1923 3.1921 3.1922
dgefpopsv s=6 3.6333 3.6334 3.6333 3.633
3.6336
dgefpopsv s=7 3.6311 3.6311 3.6314 3.6314 3.6313
dgefpopsv s=8 4.0722 4.0723 4.0722 4.0719 4.0721
Tabla 5.3:
Tiempos de ejecución, en segundos, de las rutinas
dgefpohor y dgefpopsv, para una matriz aleatoria
de dimensión igual a 1000, variando el grado g del
polinomio entre 5 y 9, y el factor s de
agrupamiento entre 2 y 8.
192
Capítulo 5: Resultados Experimentales
Te
g=10
g=11
g=12
g=13
g=14
dgefpohor
3.6435 3.6434 3.6435 3.6432 3.6433
dgefpopsv s=2 3.1986 3.1983 3.1987 3.1984 3.1988
dgefpopsv s=3 2.7532 2.7537 2.7537 2.7538 2.7535
dgefpopsv s=4 3.1946 3.1945 3.1943 3.1941 3.1945
dgefpopsv s=5 3.1922 3.1924 3.1923 3.1921 3.1924
dgefpopsv s=6 3.6336 3.6334 3.6334 3.633
3.6329
dgefpopsv s=7 3.6313 3.6309 3.6309 3.6314 3.6316
dgefpopsv s=8 4.0721 4.0725 4.0723 4.072
Tabla 5.4:
4.0723
Tiempos de ejecución, en segundos, de las rutinas
dgefpohor y dgefpopsv, para una matriz aleatoria
de dimensión igual a 1000, variando el grado g del
polinomio entre 10 y 14, y el factor s de
agrupamiento entre 2 y 8.
De las anteriores tablas se pueden extraer las siguientes conclusiones:
•
Los menores tiempos de ejecución corresponden a la rutina dgefpopsv con un factor
de agrupamiento igual a 3.
•
El tiempo de ejecución no varía apenas cuando se aumenta el grado del polinomio.
En la siguientes figuras se muestran los tiempos de ejecución de las rutinas dgefpohor y
dgefpopsv (s=3), para matrices de dimensiones 500 y 1000, variando el grado g del
polinomio entre 5 y 14.
193
Capítulo 5: Resultados Experimentales
Dimensión de la matriz n=500
0.7
dgefpohor
dgefpopsv (s=3)
0.65
0.6
Tiempo (segundos)
0.55
0.5
0.45
0.4
0.35
0.3
0.25
0.2
5
6
Figura 5.1:
7
8
9
10
Grado g
11
12
13
14
Tiempos de ejecución, en segundos, de las rutinas
dgefpohor y dgefpopsv (s=3), para una matriz
aleatoria de dimensión igual a 500, variando el
grado g del polinomio entre 5 y 14.
Dimensión de la matriz n=500
5
dgefpohor
dgefpopsv (s=3)
Tiempo (segundos)
4.5
4
3.5
3
2.5
2
5
Figura 5.2:
5.2.1.2
6
7
8
9
10
Grado g
11
12
13
14
Tiempos de ejecución, en segundos, de las rutinas
dgefpohor y dgefpopsv (s=3), para una matriz
aleatoria de dimensión igual a 1000, variando el
grado g del polinomio entre 5 y 14.
Resultados Funciones Racionales
En este estudio se han considerado sólo funciones racionales donde los polinomios del
numerador y del denominador tienen grados iguales. El grado g de los polinomios se ha
variado entre 5 y 9, el factor de agrupamiento s entre 2 y 8 y la dimensión de la matriz
194
Capítulo 5: Resultados Experimentales
entre 100 y 1000 en pasos de 100. Además, los coeficientes de la matriz y de los
polinomios se han generado aleatoriamente en el intervalo [-1,1].
En primer lugar se presentan dos tablas en las que se muestran los errores relativos de la
ecuación conmutante para tamaños de matrices 500 y 1000, correspondientes a las
rutinas dgefrahqr, dgefrahlu, dgefrapqr y dgefraplu.
Ec
g=5
g=6
g=7
g=8
g=9
dgefrahqr
8.29e-10 1.21e-09 2.59e-07 2.44e-06 9.24e-06
dgefrahlu
2.88e-10 1.30e-09 1.76e-07 1.51e-06 2.16e-05
dgefrapqr s=2 8.59e-10 4.14e-09 1.95e-07 4.37e-06 3.59e-06
dgefraplu s=2
1.32e-09 6.99e-09 2.41e-07 4.37e-06 4.25e-06
dgefrapqr s=3 7.72e-10 3.45e-09 3.8e-07
dgefraplu s=3
3.68e-06 1.15e-06
1.12e-09 4.90e-09 3.27e-07 4.46e-06 2.64e-06
dgefrapqr s=4 7.21e-10 4.99e-09 2.32e-07 3.18e-06 6.28e-06
dgefraplu s=4
1.51e-09 5.06e-09 2.94e-07 3.24e-06 3.17e-06
dgefrapqr s=5 5.66e-10 3.23e-09 2.11e-07 2.51e-06 2.20e-06
dgefraplu s=5
9.66e-10 5.12e-09 2.87e-07 3.63e-06 5.80e-06
dgefrapqr s=6 5.54e-10 2.93e-09 3.18e-07 3.05e-06 5.84e-06
dgefraplu s=6
1.00e-09 4.53e-09 3.61e-07 3.76e-06 4.97e-06
dgefrapqr s=7 5.54e-10 2.51e-09 1.96e-07 3.05e-06 8.5e-06
dgefraplu s=7
1.00e-09 5.31e-09 0.20e-07 3.91e-06 3.18e-06
dgefrapqr s=8 5.54e-10 2.51e-09 1.45e-07 2.31e-06 2.53e-06
dgefraplu s=8
Tabla 5.5:
1.00e-09 5.31e-09 4.32e-07 3.27e-06 4.67e-06
Errores relativos cometidos en la ecuación
conmutante, correspondientes a las rutinas
dgefrahqr, dgefrahlu, dgefrapqr y dgefraplu, para
una matriz aleatoria de dimensión igual a 500,
variando el grado g de los polinomios entre 5 y 9,
y el factor s de agrupamiento entre 2 y 8.
195
Capítulo 5: Resultados Experimentales
Ec
g=5
g=6
g=7
g=8
g=9
dgefrahqr
6.93e-09 2.58e-07 1.84e-07 1.42e-4
2.54e-3
dgefrahlu
1.01e-08 6.71e-07 2.12e-07 1.33e-4
4.11e-3
dgefrapqr s=2 5.17e-09 2.22e-07 5.63e-07 2.25e-4
2.82e-3
1.45e-08 5.37e-07 1.36e-06 3.66e-4
3.63e-03
dgefrapqr s=3 5.25e-09 2.05e-07 5.62e-07 1.74 e-4
1.93e-03
1.34e-08 4.99e-07 8.71e-07 3.26e-4
3.40e-03
dgefrapqr s=4 5.46e-09 1.89e-07 4.17e-07 1.43e-4
2.12e-03
dgefraplu s=2
dgefraplu s=3
2.89e-4
3.57e-03
dgefrapqr s=5 4.51e-09 1.71e-07 4.21e-07 1.36e-4
1.47e-03
1.47e-08 4.28e-07 1.47e-06 3.07e-4
3.59e-03
dgefrapqr s=6 4.77e-09 1.42e-07 3.61e-07 1.59e-4
1.93e-03
dgefraplu s=4
dgefraplu s=5
1.47e-08 4.75e-07 1.2e-06
4.83e-07 9.97e-07 3.41e-4
2.83e-03
dgefrapqr s=7 4.77e-09 1.41e-07 3.42e-07 1.25e-4
1.55e-03
dgefraplu s=6
dgefraplu s=7
1.3e-08
1.3e-08
4.85e-07 7.88e-07 3.26e-4
4.23e-03
dgefrapqr s=8 4.77e-09 1.41e-07 3.62e-07 7.98e-05 1.66e-03
dgefraplu s=8
Tabla 5.6:
1.3e-08
4.85e-07 1e-06
2.69e-4
3.30e-03
Errores cometidos en la ecuación conmutante
correspondientes a las rutinas dgefrahqr,
dgefrahlu, dgefrapqr y dgefraplu, para una matriz
aleatoria de dimensión igual a 1000, variando el
grado g del polinomio entre 5 y 9, y el factor s de
agrupamiento entre 2 y 8.
A continuación se presentan dos tablas y dos gráficas en las que aparecen los tiempos de
ejecución correspondientes a las rutinas dgefrahqr, dgefrahlu, dgefrapqr y dgefraplu,
considerando matrices aleatorias de dimensiones 500 y 1000, variando el grado g de los
polinomios entre 5 y 9, y el factor s de agrupamiento entre 2 y 8.
196
Capítulo 5: Resultados Experimentales
Te
g=5
g=6
g=7
g=8
g=9
dgefrahqr
0.934 1.060 1.190 1.320 1.440
dgefrahlu
0.787 0.914 1.040 1.170 1.300
dgefrapqr s=2 0.561 0.685 0.690 0.813 0.818
dgefraplu s=2
0.414 0.537 0.543 0.666 0.671
dgefrapqr s=3 0.503 0.626 0.631 0.636 0.759
dgefraplu s=3
0.355 0.478 0.483 0.488 0.611
dgefrapqr s=4 0.560 0.565 0.569 0.693 0.698
dgefraplu s=4
0.413 0.417 0.422 0.546 0.551
dgefrapqr s=5 0.618 0.624 0.628 0.633 0.638
dgefraplu s=5
0.471 0.476 0.481 0.486 0.491
dgefrapqr s=6 0.558 0.682 0.687 0.692 0.696
dgefraplu s=6
0.411 0.534
0.54 0.545 0.549
dgefrapqr s=7 0.617 0.622 0.745 0.750 0.755
dgefraplu s=7
0.470 0.474 0.598 0.603 0.608
dgefrapqr s=8 0.676 0.681 0.686 0.809 0.814
dgefraplu s=8
Tabla 5.7:
0.529 0.533 0.538 0.662 0.667
Tiempos de ejecución, en segundos, de las rutinas
dgefrahqr, dgefrahlu, dgefrapqr y dgefraplu, para
una matriz aleatoria de dimensión igual a 500,
variando el grado g de los polinomios entre 5 y 9,
y el factor s de agrupamiento entre 2 y 8.
197
Capítulo 5: Resultados Experimentales
Te
g=5
g=6
g=7
g=8
g=9
dgefrahqr
0.934 1.06
1.19
1.32
1.44
dgefrahlu
0.787 0.914 1.04
1.17
1.30
dgefrapqr s=2 0.561 0.685 0.69
dgefraplu s=2
0.813 0.818
0.414 0.537 0.543 0.666 0.671
dgefrapqr s=3 0.503 0.626 0.631 0.636 0.759
dgefraplu s=3
0.355 0.478 0.483 0.488 0.611
dgefrapqr s=4 0.56
dgefraplu s=4
0.565 0.569 0.693 0.698
0.413 0.417 0.422 0.546 0.551
dgefrapqr s=5 0.618 0.624 0.628 0.633 0.638
dgefraplu s=5
0.471 0.476 0.481 0.486 0.491
dgefrapqr s=6 0.558 0.682 0.687 0.692 0.696
dgefraplu s=6
0.411 0.534 0.54
0.545 0.549
dgefrapqr s=7 0.617 0.622 0.745 0.75
dgefraplu s=7
0.47
0.755
0.474 0.598 0.603 0.608
dgefrapqr s=8 0.676 0.681 0.686 0.809 0.814
dgefraplu s=8
Tabla 5.8:
0.529 0.533 0.538 0.662 0.667
Tiempos de ejecución, en segundos, de las rutinas
dgefrahqr, dgefrahlu, dgefrapqr y dgefraplu, para
una matriz aleatoria de dimensión igual a 1000,
variando el grado g de los polinomios entre 5 y 9,
y el factor s de agrupamiento entre 2 y 8.
198
Capítulo 5: Resultados Experimentales
Dimensión de la matriz n=500
1.2
dgefraplu(s=3)
dgefraplu(s=4)
dgefraplu(s=5)
1.1
1
Tiempo (segundos)
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
5
6
Figura 5.3:
7
8
9
10
Grado g
11
12
13
14
Tiempos de ejecución, en segundos, de la rutina
dgefraplu, para una matriz aleatoria de dimensión
igual a 500, variando el grado g de los polinomios
entre 5 y 14, y el factor s de agrupamiento entre 3
y 5.
Dimensión de la matriz n=1000
8
dgefraplu(s=3)
dgefraplu(s=4)
dgefraplu(s=5)
Tiempo (segundos)
7
6
5
4
3
2
5
Figura 5.4:
6
7
8
9
10
Grado g
11
12
13
14
Tiempos de ejecución, en segundos, de la rutina
dgefraplu, para una matriz aleatoria de dimensión
igual a 1000, variando el grado g de los
polinomios entre 5 y 14, y el factor s de
agrupamiento entre 3 y 5.
De las tablas y gráficas anteriores se pueden extraer varias conclusiones:
199
Capítulo 5: Resultados Experimentales
•
Se produce una pérdida de precisión a medida que aumenta el grado del polinomio y
la dimensión de la matriz.
•
Las rutinas que utilizan la descomposición QR tienen un error algo menor que las
rutinas que utilizan la descomposición LU con pivotamiento parcial de filas, aunque
estas últimas son más rápidas que las primeras.
•
Las rutinas basadas en el método de Paterson-Stockmeyer-Van Loan tienen, en
general, un tiempo de ejecución menor que las rutinas que utilizan el método de
Horner, siendo la rutina dgefraplu la que presenta mejores resultados cuando se
eligen factores de agrupamiento s comprendidos entre 3 y 5.
5.2.2 Rutinas Basadas en los Aproximantes Diagonales de Padé
Para el cálculo de funciones de matrices basadas en la aproximación diagonal de Padé,
se han utilizado las siguientes variantes:
•
Resolución del sistema de ecuaciones lineales, que aparece en la aproximación
diagonal de Padé mediante la descomposición LU con pivotamiento parcial de filas
o mediante la descomposición QR.
•
Utilización del método de Horner o del método de Paterson-Stockmeyer-Van Loan.
En función de estas variantes se han obtenido 4 rutinas que implementan la misma
función matricial. En la siguiente figura aparecen las citadas aproximaciones.
⎧
⎧Descomposición LU
⎪Método de Paterson - Stockmeyer - Van Loan ⎨
⎩Descomposición QR
⎪
Cálculo de f(A)⎨
⎪Método de Horner ⎧Descomposición LU
⎨
⎪
⎩Descomposición QR
⎩
Figura 5.5:
Rutinas que calculan funciones de matrices
mediante los aproximantes diagonales de Padé.
Se han realizado pruebas para todas las implementaciones de los algoritmos descritos en
el Capítulo 3, pero únicamente se presentan los resultados correspondientes a la función
exponencial y a la potencia fraccionaria de una matriz.
El grado g de los polinomios de la aproximación diagonal de Padé se ha variado entre 5
y 14, y el factor s de agrupamiento entre 2 y 8. Los coeficientes de las matrices se han
generado aleatoriamente en el intervalo [−10,10] , y sus dimensiones se han variado
entre 100 y 1000 en pasos de 100.
Los errores que se han calculado para cada prueba han sido:
•
Error relativo (Er), comparando la solución obtenida con los métodos basados en los
aproximantes diagonales de Padé con la solución obtenida utilizando un método
basado en la descomposición real de Schur de una matriz (estos métodos son más
precisos que los basados en la aproximación de Padé).
•
Error relativo en la ecuación conmutante (Ec).
En las siguientes tablas se muestran los errores Er y Ec para tamaños de matrices 100,
500 y 1000 correspondientes a las rutinas dgefexhlu. Únicamente se ha tenido en cuenta
el valor de agrupamiento s=2, pues para los otros valores los resultados son semejantes.
200
Capítulo 5: Resultados Experimentales
g=5
g=6
g=7
g=8
g=9
Er .337e-12 .277e-12 .335e-12 .169e-12 .261e-12
Ec .297e-13 .260e-13 .150e-13 .182e-13 .202e-13
Tabla 5.9:
Errores relativos de la rutina dgefexhlu para una
matriz aleatoria de dimensión igual a 100, variando
el grado g de los polinomios de la aproximación
diagonal de Padé entre 5 y 9.
g=10
g=11
g=12
g=13
g=14
Er .177e-12
.384e-12 .101e-12 .291e-12 .259e-12
Ec .252e-13
.204e-13 .150e-13 .146e-13 .234e-13
Tabla 5.10: Errores relativos de la rutina dgefexhlu para una
matriz aleatoria de dimensión igual a 100, variando
el grado g de los polinomios de la aproximación
diagonal de Padé entre 10 y 14.
g=5
g=6
g=7
g=8
g=9
Er .834e-12 .595e-12 .607e-12 .125e-11 .334e-12
Ec .657e-13 .856e-13 .688e-13 .495e-13 .517e-13
Tabla 5.11: Errores relativos de la rutina dgefexhlu para una
matriz aleatoria de dimensión igual a 500, variando
el grado g de los polinomios de la aproximación
diagonal de Padé entre 5 y 9.
g=10
g=11
g=12
g=13
g=14
Er .647e-12 .306e-12 .232e-12 .150e-11 .830e-12
Ec .557e-13 .624e-13 .620e-13 .651e-13 .953e-13
Tabla 5.12: Errores relativos de la rutina dgefexhlu para una
matriz aleatoria de dimensión igual a 500, variando
el grado g de los polinomios de la aproximación
diagonal de Padé entre 10 y 14.
201
Capítulo 5: Resultados Experimentales
g=5
g=6
g=7
g=8
g=9
Er .104e-11 .178e-11 .556e-12 .709e-12 .145e-11
Ec .730e-13 .154e-12 .102e-12 .107e-12 .186e-12
Tabla 5.13: Errores relativos de la rutina dgefexhlu para una
matriz aleatoria de dimensión igual a 1000,
variando el grado g de los polinomios de la
aproximación diagonal de Padé entre 5 y 9.
g=10
g=11
g=12
g=13
g=14
Er .818e-12 .812e-12 .102e-11 .718e-12 .130e-12
Ec .162e-12 .861e-13 .112e-12 .915e-13 .126e-12
Tabla 5.14: Errores relativos de la rutina dgefexhlu para una
matriz aleatoria de dimensión igual a 1000,
variando el grado g de los polinomios de la
aproximación diagonal de Padé entre 10 y 14.
De las tablas anteriores se desprenden las siguientes conclusiones:
•
Los errores relativos Er y Ec aumentan moderadamente a medida que aumenta la
dimensión de la matriz.
•
Los errores relativos Er y Ec son similares, siendo estos últimos algo menores.
•
Con un valor del grado g de la aproximación diagonal igual a 7 se obtiene una
precisión aceptable.
En las siguientes tablas se muestran los tiempos de ejecución de las rutinas dgefexhlu,
dgefexhqr, dgefexplu y dgefexpqr, para tamaños de matrices iguales a 500 y 1000. Estas
rutinas se describen a continuación.
•
dgefexhlu: Calcula la exponencial de una matriz mediante aproximantes
diagonales de Padé, utilizando el método de Horner y la descomposición LU con
pivotamiento parcial de filas en la resolución del sistema de ecuaciones lineales
asociado.
•
dgefexhqr: Calcula la exponencial de una matriz mediante aproximantes
diagonales de Padé, utilizando el método de Horner y la descomposición QR en
la resolución del sistema de ecuaciones lineales que aparece en el método
anterior.
•
dgefexplu: calcula la exponencial de una matriz mediante aproximantes
diagonales de Padé, utilizando el método de Paterson-Stockmeyer-Van Loan y la
descomposición LU con pivotamiento parcial de filas en la resolución del sistema
de ecuaciones lineales asociado.
dgefexpqr: Calcula la exponencial de una matriz mediante aproximantes diagonales de
Padé, utilizando el método de Paterson-Stockmeyer-Van Loan y la descomposición QR
en la resolución del sistema de ecuaciones lineales asociado.
202
Capítulo 5: Resultados Experimentales
Te
g=5
dgefexhlu
1.45 1.57 1.7
dgefexhqr
1.6
dgefexplu s=2
1.15 1.32 1.28 1.41 1.41
dgefexpqr s=2 1.3
dgefexplu s=3
g=6
g=7
g=8
g=9
1.82 1.96
1.73 1.85 1.98 2.16
1.46 1.44 1.58 1.57
1.09 1.22 1.22 1.28 1.35
dgefexpqr s=3 1.25 1.37 1.37 1.38 1.5
dgefexplu s=4
1.15 1.15 1.16 1.28 1.29
dgefexpqr s=4 1.3
dgefexplu s=5
1.31 1.36 1.44 1.45
1.21 1.21 1.23 1.22 1.23
dgefexpqr s=5 1.36 1.36 1.37 1.37 1.38
dgefexplu s=6
1.14 1.27 1.28 1.29 1.28
dgefexpqr s=6 1.29 1.42 1.43 1.44 1.44
dgefexplu s=7
1.2
1.21 1.33 1.34 1.34
dgefexpqr s=7 1.36 1.36 1.49 1.49 1.5
dgefexplu s=8
1.33 1.27 1.27 1.4
1.47
dgefexpqr s=8 1.42 1.42 1.42 1.55 1.55
Tabla 5.15: Tiempos de ejecución, en segundos, de las rutinas
dgefexhlu, dgefexhqr, dgefexplu y dgefexpqr, para
una matriz aleatoria de dimensión igual a 500,
variando el grado g de los polinomios de la
aproximación diagonal de Padé entre 5 y 9, y el
factor de agrupamiento s entre 2 y 8.
203
Capítulo 5: Resultados Experimentales
Te
g=10 g=11 g=12 g=13 g=14
dgefexhlu
2.07
2.2
2.32
2.49
2.59
dgefexhqr
2.23
2.34
2.48
2.59
2.76
dgefexplu s=2
1.55
1.54
1.67
1.67
1.8
1.7
1.82
1.83
1.96
1.36
1.36
1.49
1.49
1.5
dgefexpqr s=3 1.51
1.52
1.64
1.64
1.65
1.3
1.43
1.43
1.43
dgefexpqr s=4 1.45
1.45
1.58
1.58
1.59
1.35
1.36
1.36
1.37
1.37
dgefexpqr s=5 1.51
1.51
1.51
1.52
1.53
1.29
1.29
1.42
1.42
1.43
dgefexpqr s=6 1.46
1.49
1.57
1.58
1.59
1.4
1.36
1.41
1.36
1.56
dgefexpqr s=7 1.5
1.51
1.52
1.51
1.64
1.41
1.41
1.42
1.42
1.42
dgefexpqr s=8 1.56
1.57
1.57
1.66
1.58
dgefexpqr s=2 1.69
dgefexplu s=3
dgefexplu s=4
dgefexplu s=5
dgefexplu s=6
dgefexplu s=7
dgefexplu s=8
1.29
Tabla 5.16: Tiempos de ejecución, en segundos, de las rutinas
dgefexhlu, dgefexhqr, dgefexplu y dgefexpqr, para
una matriz aleatoria de dimensión igual a 500,
variando el grado g de los polinomios de la
aproximación diagonal de Padé entre 10 y 14, y el
factor de agrupamiento s entre 2 y 8..
204
Capítulo 5: Resultados Experimentales
Te
g=5
dgefexhlu
11.2 12
dgefexhqr
12.3 13.2 14.2 14.9 16
dgefexplu s=2
8.95 9.76 9.84 10.7 10.7
dgefexpqr s=2 10
dgefexplu s=3
g=6
g=7
g=8
13
13.9 14.9
10.9 11
8.47 9.3
g=9
11.8 11.8
9.37 9.34 10.3
dgefexpqr s=3 9.55 10.4 10.5 10.5 11.5
dgefexplu s=4
8.89 8.84 8.93 9.77 9.86
dgefexpqr s=4 10.1 10.1 10.1 10.9 11
dgefexplu s=5
9.35 9.31 9.37 9.33 9.39
dgefexpqr s=5 10.6 10.5 10.5 10.5 10.5
8.9
9.73 9.82 9.76 9.84
dgefexpqr s=6 10
10.9 10.9 10.9 10.9
dgefexplu s=6
dgefexplu s=7
9.34 9.27 10.3 10.2 10.3
dgefexpqr s=7 10.4 10.4 11.4 11.3 11.4
dgefexplu s=8
9.79 9.71 9.81 10.6 10.8
dgefexpqr s=8 10.9 10.8 11
11.8 11.8
Tabla 5.17: Tiempos de ejecución, en segundos, de las rutinas
dgefexhlu, dgefexhqr, dgefexplu y dgefexpqr, para
una matriz aleatoria de dimensión igual a 1000,
variando el grado g de los polinomios de la
aproximación diagonal de Padé entre 5 y 9, y el
factor de agrupamiento s entre 2 y 8..
205
Capítulo 5: Resultados Experimentales
Te
g=10 g=11 g=12 g=13 g=14
dgefexhlu
15.6
16.7
17.3
18.4
19.1
dgefexhqr
16.8
17.8
18.4
19.5
20.2
dgefexplu s=2
11.6
11.7
12.4
12.5
13.3
dgefexpqr s=2 12.7
12.8
13.5
13.6
14.4
10.2
10.3
11.1
11.2
11.1
dgefexpqr s=3 11.3
11.4
12.1
12.2
12.2
9.77
9.82
10.6
10.7
10.6
10.9
11.7
11.8
11.7
10.2
10.2
10.2
10.3
10.2
dgefexpqr s=5 11.4
11.3
11.2
11.3
11.3
9.78
9.79
10.6
10.7
10.6
dgefexpqr s=6 10.9
10.9
11.7
11.8
11.7
10.3
10.2
10.2
10.3
11.1
dgefexpqr s=7 11.3
11.3
11.2
11.3
12.1
10.7
10.7
10.6
10.7
10.6
dgefexpqr s=8 11.8
11.7
11.7
11.8
11.7
dgefexplu s=3
dgefexplu s=4
dgefexpqr s=4 11
dgefexplu s=5
dgefexplu s=6
dgefexplu s=7
dgefexplu s=8
Tabla 5.18: Tiempos de ejecución, en segundos, de las rutinas
dgefexhlu, dgefexhqr, dgefexplu y dgefexpqr, para
una matriz aleatoria de dimensión igual a 1000,
variando el grado g de los polinomios de la
aproximación diagonal de Padé entre 10 y 14, y el
factor de agrupamiento s entre 2 y 8.
La rutina más rápida es dgefexplu, siempre que se elija un valor adecuado para su factor
de agrupamiento s (por ejemplo, entre 3 y 6). A continuación se muestran dos gráficas
en las que aparecen los tiempos de ejecución, en segundos, de la rutina dgefexplu, para
matrices aleatorias de dimensiones 500 y 1000, variando el grado g de los polinomios
de la aproximación diagonal de Padé entre 5 y 14, y el factor de agrupamiento s entre 3
y 6.
206
Capítulo 5: Resultados Experimentales
Dimensión de la matriz n=500
1.5
1.45
dgefexplu(s=3)
dgefexplu(s=4)
dgefexplu(s=5)
dgefexplu(s=6)
1.4
Tiempo (segundos)
1.35
1.3
1.25
1.2
1.15
1.1
1.05
1
5
6
Figura 5.6:
7
8
9
10
Grado g
11
12
13
14
Tiempos de ejecución, en segundos, de la rutina
dgefexplu para una matriz aleatoria de dimensión
igual a 500, variando el grado g de los polinomios
de la aproximación diagonal de Padé entre 5 y 14,
y el factor s de agrupamiento entre 3 y 6.
Dimensión de la matriz n=1000
12
dgefexplu(s=3)
dgefexplu(s=4)
dgefexplu(s=5)
dgefexplu(s=6)
11.5
Tiempo (segundos)
11
10.5
10
9.5
9
8.5
8
5
Figura 5.7:
6
7
8
9
10
Grado g
11
12
13
14
Tiempos de ejecución, en segundos, de la rutina
dgefexplu para una matriz aleatoria de dimensión
igual a 1000, variando el grado g de los
polinomios de la aproximación diagonal de Padé
entre 5 y 14, y el factor s de agrupamiento entre 3
y 6.
De las tablas y gráficas anteriores se desprenden las siguientes conclusiones:
207
Capítulo 5: Resultados Experimentales
•
Para un mismo valor de s, el tiempo de ejecución menor corresponde a la rutina
dgefexplu.
•
Los valores de s con menores tiempos de ejecución se encuentran entre 3 y 6.
Por último, se presentan los resultados correspondientes a la rutina dgefpfplu. Esta
rutina calcula potencias fraccionarias de una matriz mediante aproximantes diagonales
de Padé, utilizando el método Paterson-Stockmeyer-Van Loan y la descomposición LU
con pivotamiento parcial de filas en la resolución del sistema de ecuaciones lineales que
aparece en el método. En los resultados que se presentan a continuación se ha
considerado el caso particular de calcular la raíz cúbica de una matriz.
En la siguiente tabla se muestran el error
Er =
|| B 3 − A ||1
|| A ||1
y el error Ec correspondiente a la ecuación conmutante.
g=5
g=6
g=7
g=8
g=9
Er 0.544e-07 0.266e-09 0.893e-12 0.194e-12 0.195e-12
Ec 0.241e-12 0.241e-12 0.241e-12 0.240e-12 0.245e-12
Tabla 5.19: Errores Er y Ec de la rutina dgefpfhlu para una
matriz aleatoria de dimensión igual a 100,
considerando un factor de agrupamiento s igual a 2
y variando el grado g de los polinomios de la
aproximación diagonal de Padé entre 5 y 9.
g=10
g=11
g=12
g=13
g=14
Er 0.195e-12 0.195e-12 0.195e-12 0.195e-12 0.194e-12
Ec 0.241e-12 0.240e-12 0.241e-12 0.242e-12 0.241e-12
Tabla 5.20: Errores Er y Ec de la rutina dgefpfhlu para una
matriz aleatoria de dimensión igual a 100,
considerando un factor de agrupamiento s igual a 2
y variando el grado g de los polinomios de la
aproximación diagonal de Padé entre 10 y 14.
En las siguientes tablas se muestran los tiempos de ejecución de la rutina dgefpfhlu para
una matriz aleatoria de dimensión igual a 100, variando el grado g de los polinomios de
la aproximación diagonal de Padé entre 5 y 9, y el factor de agrupamiento s entre 2 y 8.
208
Capítulo 5: Resultados Experimentales
Te
g=5
g=6
g=7
g=8
g=9
dgefpfplu s=2 3.2186 3.2317 3.2335 3.2162 3.3020
dgefpfplu s=3 3.2170 3.2147 3.2160 3.2155 3.2168
dgefpfplu s=4 3.3049 3.2177 3.2143 3.2947 3.2157
dgefpfplu s=5 3.2174 3.2497 3.2757 3.2169 3.2378
dgefpfplu s=6
3.2310 3.2354 3.2143 3.2892
dgefpfplu s=7
3.2339 3.2322 3.2592
dgefpfplu s=8
3.2190 3.2244
Tabla 5.21: Tiempos de ejecución de la rutina dgefpfhlu, para
una matriz aleatoria de dimensión igual a 100,
variando el grado g de los polinomios de la
aproximación diagonal de Padé entre 5 y 9, y el
factor de agrupamiento s entre 2 y 8.
g=10
g=11
g=12
g=13
g=14
dgefpfplu s=2 3.2500 3.2206 3.2194 3.2202 3.2764
dgefpfplu s=3 3.2327 3.2322 3.2310 3.2352 3.2780
dgefpfplu s=4 3.2298 3.2190 3.2169 3.2177 3.2565
dgefpfplu s=5 3.2608 3.2144 3.2157 3.3472 3.2166
dgefpfplu s=6 3.2164 3.2879 3.5763 3.2243 3.2343
dgefpfplu s=7 3.2725 3.2746 3.2620 3.2612 3.2157
dgefpfplu s=8 3.2540 3.2169 3.2306 3.2347 3.2661
Tabla 5.22: Tiempos de ejecución de la rutina dgefpfhlu , para
una matriz aleatoria de dimensión igual a 100,
variando el grado g de los polinomios de la
aproximación diagonal de Padé entre 10 y 14, y el
factor de agrupamiento s entre 2 y 8.
Varias conclusiones se pueden extraer de estas cuatro últimas tablas:
•
La precisión obtenida es algo menor que la obtenida en el cálculo de la exponencial
de una matriz.
•
Se obtiene una precisión aceptable a partir de los aproximantes diagonales de Padé
de grado 7.
209
Capítulo 5: Resultados Experimentales
•
Los tiempos de ejecución son similares, independientemente del grado de los
polinomios del aproximante diagonal de Padé y del factor de agrupamiento.
•
Los tiempos de ejecución de la rutina dgefpfplu para un tamaño de matriz igual a
100 son mayores que los tiempos de ejecución de la rutina dgefexhlu para un tamaño
de matriz igual a 500.
Las dos últimas conclusiones son consecuencia del mayor coste computacional de la
rutina dgefpfplu, asociado al cálculo de la raíz cuadrada de una matriz, etapa necesaria
para la reducción inicial de la norma de la matriz.
5.2.3 Rutinas Basadas en la Descomposición real de Schur de una
matriz
En este apartado se muestran las pruebas realizadas sobre las rutinas anteriores, salvo
las correspondientes a las rutinas basadas en la agrupación de valores propios (rutinas
dgeyyyscl), debido a que se ha comprobado que a partir de dimensiones de orden
superior a 20, se comete un gran error a menos que se elija una agrupación mayor,
coincidente en la mayoría de los casos con un único bloque. En tales casos es más
eficiente utilizar directamente las rutinas basadas en los aproximantes diagonales de
Padé (rutinas dgeyyysph y dgeyyyspp), puesto que estas rutinas no necesitan
reordenaciones. La justificación de este comportamiento se encuentra en que el error
cometido al resolver una ecuación matricial de Sylvester
Tii X − XT jj = Fij ,
satisface que
~
|| Fij || F
|| X − X || F
≅u
.
| X || F
sep(Tii , T jj )
Por lo tanto, para dimensiones grandes y en funciones del tipo exponencial, el error
puede ser muy grande debido tanto al valor de sep(Tii , T jj ) como al valor de || Fij ||F .
Las pruebas se han realizado para la función exponencial. El motivo es que la precisión
y las prestaciones obtenidas para otras funciones son semejantes, dadas las
características de los algoritmos basados en la descomposición real de Schur de una
matriz, con la única excepción del basado en los aproximantes diagonales de Padé. En
las pruebas realizadas se ha utilizado la rutina dgefexplu (s=3, g=7) para compararla con
las rutinas anteriormente mencionadas.
Una de las medidas utilizadas para determinar la precisión de los algoritmos
implementados es el error relativo cometido. Esto no siempre es posible, puesto que la
solución exacta únicamente se puede conocer en determinados casos y para matrices de
pequeña dimensión, exceptuando, evidentemente, el caso de exponenciales de matrices
diagonales. Por ello, en algunas de las pruebas se han utilizado matrices cuya
exponencial es conocida.
En primer lugar se presentan los resultados obtenidos en cuanto a precisión,
determinando el error relativo en el cálculo de la exponencial y el error relativo en la
ecuación conmutante. Para ello se han generado matrices de la mayor dimensión posible
que pudieran ser calculadas de manera exacta por MATLAB, utilizando las funciones
de MATLAB sym y double que permiten pasar, respectivamente, datos de doble
210
Capítulo 5: Resultados Experimentales
precisión a forma simbólica y datos de forma simbólica a doble precisión. Se han
considerado las matrices
A40 ∈ ℜ
40 x 40
⎧aij = 0, i > j
⎪
⎨aii = i,
⎪a = −1, i < j
⎩ ij
y
A70 ∈ ℜ
70 x 70
⎧aij = 0, i > j
⎪
.
⎨aii = 1,
⎪a = −1, i < j
⎩ ij
Aunque se han realizado pruebas en las que los parámetros característicos de cada una
de ellas se han variado, únicamente se van a presentar aquellos que han obtenido buenos
resultados en cuanto a precisión y coste computacional. Según esto, para las rutinas
orientadas a bloques, dgefunsbc y dgefunsbd, se ha elegido un tamaño de bloque tb
igual a 6 mientras que para las rutinas basadas en los aproximantes diagonales de Padé,
dgefunsph y dgefunspp, se ha elegido un grado g=7 de los polinomios de la
aproximación diagonal de Padé y un factor de agrupamiento s=4 para la rutina
dgefunspp.
En las siguiente tablas se muestran los errores Er y Ec al calcular f ( A40 ) y f ( A70 ) .
Er
Ec
dgefexplu: g=7, s=3
0.31100e-15 0.22725e-13
dgefunscd
0.47810e-16 0.10017e-15
dgefunscc
0.33498e-16 0.50839e-16
dgefunsbd: tb= 6
0.44342e-16 0.93251e-16
dgefunsbc: tb= 6
0.35363e-16 0.48357e-16
dgeexpsdb
0.24563e-16 0.33250e-14
dgeexpsph: g=7
0.17226e-15 0.13560e-13
dgeexpspp: g=7, s=4 0.50249e-15 0.22583e-13
Tabla 5.23: Errores correspondientes al cálculo de f ( A40 )
mediante las rutinas dgefexplu, dgefunscd,
dgefunscc, dgefunsbd, dgefunsbc, dgefunsdb,
dgeexpsph y dgeexpspp.
211
Capítulo 5: Resultados Experimentales
Er
dgefexplu: g=7, s=3
Ec
0.21248e-15 0.45270e-13
dgefunscd
Error
Error
dgefunscc
Error
Error
dgefunsbd: tb= 6
Error
Error
dgefunsbc: tb= 6
Error
Error
dgeexpsdb
0.33016e-15 0.10266e-13
dgeexpsph: g=7
0.33016e-15 0.10266e-13
dgeexpspp: g=7, s=4 0.31550e-15 0.19864e-13
Tabla 5.24: Errores correspondientes al cálculo de f ( A70 )
mediante las rutinas dgefexplu, dgefunscd,
dgefunscc, dgefunsbd, dgefunsbc, dgefunsdb,
dgeexpsph y dgeexpspp.
A continuación se presentan los errores relativos cometidos en la ecuación conmutante
correspondientes a las rutinas que calculan la exponencial de matrices aleatorias de
tamaños 500 y 1000.
Ec
500
1000
dgefexplu: g=7, s=3
0.12378e-13 0.80748e-13
dgefunscd
0.59172e-14 0.98738e-14
dgefunscc
0.59172e-14 0.98738e-14
dgefunsbd: tb= 6
0.59369e-14 0.98059e-14
dgefunsbc: tb= 6
0.59381e-14 0.98646e-14
dgeexpsdb
0.68640e-14 0.15640e-13
dgeexpsph: g=7
0.67320e-14 0.12915e-13
dgeexpspp: g=7, s=4 0.75899e-14 0.15556e-13
Tabla 5.25: Errores cometidos (ecuación conmutante) por las
rutinas
dgefexplu,
dgefunscd,
dgefunscc,
dgefunsbd, dgefunsbc, dgefunsdb, dgeexpsph y
dgeexpspp en el cálculo de la exponencial de dos
matrices aleatorias de dimensiones 500 y 1000.
212
Capítulo 5: Resultados Experimentales
Los algoritmos se pueden clasificar, según su precisión, en tres grupos:
•
Grupo 1: rutina dgefexplu, basada en los aproximantes diagonales de Padé, y rutinas
dgeexpsph y dgefunspp, basadas en la descomposición real de Schur de una matriz y
en los aproximantes diagonales de Padé.
•
Grupo 2: rutinas dgefunscd, dgefunscc, dgefunsbd y dgefunsbc, basadas en la
descomposición real de Schur de una matriz y en la ecuación conmutante.
•
Grupo 3: rutina dgeexpsdb, basada en la diagonalización por bloques de una matriz.
A partir de las tablas anteriores se pueden extraer las siguientes conclusiones:
•
Los errores relativos cometidos en el cálculo de la función de una matriz y en la
ecuación conmutante son similares, aunque este último es algo mayor que el
primero. Esto es especialmente útil cuando no es conocido el valor exacto de la
solución, pues permite conocer, aproximadamente, el error relativo cometido en el
cálculo de funciones de matrices a partir del error cometido en la ecuación
conmutante.
•
Las rutinas del grupo 2 son algo más precisas que las restantes siempre y cuando las
matrices no presenten valores propios cercanos.
•
La rutina del grupo 3 es algo más precisa que las rutinas del grupo 1.
•
Para matrices con valores propios separados, los errores relativos cometidos por las
rutinas de los grupos 2 y 3 son de magnitudes semejantes.
•
Para matrices con valores propios cercanos, las rutinas del grupo 2 presentan un
elevado error.
A continuación se muestran los tiempos de ejecución de las rutinas analizadas.
Te
500
1000
dgefexplu g=7, s=3 1.0618 9.5562
dgefunscd
5.2754 108.28
dgefunscc
5.5376 119.61
dgefunsbd, tb= 6
4.8406 94.051
dgefunsbc, tb= 6
4.9379 98.215
dgefunsdb
5.5266 120.32
dgefunsph,g=7
4.9282 120.10
dgefunspp,g=7,s=4
6.0002 116.56
Tabla 5.26: Tiempos de ejecución, en segundos, de las rutinas
dgefexplu, dgefunscd, dgefunscc, dgefunsbd,
dgefunsbc, dgefunsdb, dgeexpsph y dgeexpspp,
aplicadas al cálculo de la exponencial de dos
matrices aleatorias de dimensiones 500 y 1000.
213
Capítulo 5: Resultados Experimentales
De la tabla anterior se pueden extraer las siguientes conclusiones en cuanto a tiempos de
ejecución:
•
La rutina dgefexplu, basada en los aproximantes diagonales de Padé, es la más
rápida.
•
Las rutinas basadas en la resolución de la ecuación conmutante por bloques
(dgefunsbd, dgefunsbc) se encuentran en segundo lugar.
•
Las rutinas basadas en la resolución de la ecuación conmutante por diagonales y
columnas (dgefunscd, dgefunscc), junto con las rutinas basadas en la
descomposición real de Schur de una matriz y en los aproximantes diagonales de
Padé (dgeexpsph, dgeexpspp) se encuentran en tercer lugar.
•
La rutina basada en la diagonalización por bloques (dgefunsdb) es la más lenta.
La justificación de estos resultados es que los algoritmos basados en los aproximantes
diagonales de Padé son menos costosos que los basados en la descomposición real de
Schur de una matriz y, siempre que se utilizan algoritmos orientados a bloques se
obtienen tiempos de ejecución menores que los correspondientes a columnas o
diagonales, debido a la localidad de los datos.
5.3 Propagación de Ondas Monocromáticas en Fibras de
Cristal Fotónico
En esta sección se desarrolla un estudio completo del uso de funciones de matrices en la
simulación de la propagación de ondas en fibras de cristal fotónico.
Las Fibras de Cristal Fotónico (FCF) fueron propuestas y fabricadas por primera vez en
1996 ([RuBi95]). Desde entonces, el interés sobre esta nueva tecnología ha ido
creciendo debido a sus fascinantes propiedades. Las especiales características de guiado
de la luz de las FCF como son, entre otras, la propagación monomodo o la dispersión
ultraplana en un amplio rango de longitudes de onda, tienen potenciales aplicaciones en
una gran variedad de campos que van desde las comunicaciones ópticas hasta la
fabricación de dispositivos optoelectrónicos. Las propiedades de propagación del campo
electromagnético en estos sistemas vienen determinadas por la configuración particular
de la estructura dieléctrica transversal.
Una FCF está constituida por una fibra delgada de sílice que presenta una distribución
periódica de agujeros de aire que se extienden a lo largo de toda su longitud. Tal y como
se muestra en la siguiente figura, la periodicidad transversal se pierde, en general, por la
ausencia de uno de estos agujeros, lo que conlleva la aparición de un defecto. La ruptura
de la periodicidad genera la localización de la luz en la región del defecto.
214
Capítulo 5: Resultados Experimentales
Sílice
Defecto
Aire
Figura 5.8:
Fibra de cristal fotónico.
La estructura de agujeros de aire constituye una red caracterizada geométricamente por
la separación entre agujeros Λ y el radio a de los mismos. Típicamente Λ oscila entre
2 µm y 3 µm y el radio a entre 0,2 µm y 1,0 µm.
Cuando la potencia incidente en la fibra es suficientemente alta, las propiedades de
propagación se ven modificadas por la presencia de fenómenos de carácter no lineal.
Bajo estas condiciones, las propiedades ya no dependen exclusivamente de las
características de la fibra, sino que también entra en juego el propio campo propagante.
Este régimen de propagación es intrínsecamente más complejo, y en el caso de las FCC,
da lugar a espectaculares fenómenos como la generación de supercontínuo ([Coen01]),
consistente en la formación de un amplio espectro al propagarse pulsos de alta potencia
por el interior de la FCC, o la propagación de solitones espaciales (FeZF03], [FeZF04]),
que consisten en estructuras espaciales localizadas que se propagan no linealmente sin
deformarse.
El problema consiste en modelizar la propagación no lineal de un campo
monocromático en un medio inhomogéneo (la inhomogeneidad se debe a la estructura
periódica de agujeros de aire). La evolución no lineal del campo eléctrico a lo largo de
la fibra, viene descrita por la ecuación diferencial
∂
− i φ ( x, y, z ) = L(φ ( x, y, z ))φ ( x, y, z ) ,
z
( 5.1 )
donde
L = ∇ t2 + k 02 n02 ( x, y ) + 3k 02 γ Χ (3) ∆( x, y ) | φ ( x, y, z ) | 2 ,
siendo
∂2
∂2
+
,
∂x 2 ∂y 2
•
∇ t2 =
•
k 0 = 2π / λ ( λ ≈ 1µm longitud de onda),
•
γ Χ (3) ≈ 10 −3 ,
215
Capítulo 5: Resultados Experimentales
•
⎧1.45 sílice
n0 ( x, y )⎨
(índices de refracción),
aire
⎩1
•
⎧1 sílice
∆ ( x, y ) = ⎨
.
⎩0 aire
Las soluciones estacionarias, o solitones espaciales, de la ecuación diferencial anterior,
vienen dados por la expresión
φ ( x , y , z ) = Φ ( x , y ) e iβ z .
Mediante técnicas iterativas de resolución de problemas de autovalores no lineales, se
ha comprobado que existen dichas soluciones para diversas geometrías de la fibra. Una
propiedad fundamental de estas soluciones es su estabilidad, entendiendo ésta como la
robustez de la estructura espacial frente a perturbaciones. La solución es estable, si tras
perturbar ligeramente el campo y dejarlo evolucionar a través de la fibra, vuelve
asintóticamente al estado estacionario. Así pues, para comprobar la estabilidad, se ha de
simular numéricamente la propagación a lo largo de la fibra mediante la ecuación ( 5.1 )
de la solución solitónica ligeramente perturbada, tanto en amplitud como en fase
φ ( x, y,0) = Φ S ( x, y ) + δΦ .
Realizando una aproximación de grado 0 en la ecuación diferencial ( 5.1 ), se tiene que
el valor aproximado de φ en z + h es
φ ( x, y , z + h ) = e i
L (φ ( x , y , z ))h
φ ( x, y , z ) ,
lo que permite analizar la evolución de φ a lo largo del eje z.
Se trata pues de diseñar algoritmos estables y eficientes que permitan calcular la matriz
ei
Ah
,
siendo A = L(φ ) una matriz compleja densa, no necesariamente simétrica, de elevada
norma, con valores propios múltiples, y donde h muy pequeño del orden 10 −9 .
5.3.1 Algoritmo Basado en la Diagonalización de una Matriz
Se trata de obtener la descomposición
A = VDV −1 ,
siendo
⎡λ1 0
⎢0 λ
2
D=⎢
⎢M M
⎢
⎣0 0
0⎤
L 0 ⎥⎥
,
O M⎥
⎥
L λn ⎦
L
una matriz diagonal, λi , i = 1,2, L , n , los valores propios de la matriz A y V matriz no
singular cuyas columnas coinciden con los vectores propios de A .
A partir de la descomposición anterior se calcula
ei
Ah
= Ve i
V −1 ,
Dh
216
Capítulo 5: Resultados Experimentales
siendo
ei
Dh
⎡e i λ1 h
⎢
0
=⎢
⎢ M
⎢
⎣⎢ 0
⎤
⎥
⎥.
⎥
⎥
i λ h
L e n ⎦⎥
0
e
L
L
O
i λ2 h
M
0
A continuación se presenta el algoritmo que calcula ei
de la matriz A .
0
0
M
Ah
mediante la diagonalización
B = zgefereig( A, h) .
Entradas: Matriz A ∈C
nxn
Matriz B = ei
Ah
Salida:
, tamaño del paso h ∈ ℜ + .
∈C
nxn
.
1
Obtener la matriz V y el vector λ ∈ ℜ n de valores propios de la matriz A de
manera que A = VDV −1 :
1.1
[V , λ ] = zgeev( A)
2
Calcular V = Vdiag (e
2.1
Para j = 1 : n
i λ1 h
,e
i λ2 h
,L, e
i λn h
):
i λ h
3
2.1.1 V (1 : n, j ) = V (1 : n, j )e j
Calcular B resolviendo el sistema de ecuaciones lineales BV = V
Algoritmo 5.1: Cálculo de la función f ( A) = e i
matriz.
Ah
mediante la diagonalización de una
5.3.2 Algoritmo Basado en los Aproximantes Diagonales de Padé
Este algoritmo calcula
f ( A) = e i
Ah
mediante el Algoritmo 3.1 particularizado a la función f ( z ) = e i
zh
.
217
Capítulo 5: Resultados Experimentales
B = zgeferpad ( A, h, l ) .
Entradas: Matriz A ∈C nxn , tamaño del paso h ∈ ℜ + , grado l ∈ Z + de los polinomios
de la aproximación diagonal de Padé.
Salida:
1
2
3
4
Matriz B = ei
Ah
∈C
nxn
.
Aplicar transformaciones que disminuyan || A || :
1.1
Determinar h1 ∈ ℜ + de manera que la matriz A1 = Ah1 tenga una
norma aproximadamente igual a 1, de este modo se tiene que
ih Ah
ih A
ei Ah = e 2 1 = e 2 1 , siendo h2 = h / h1 .
Encontrar el polinomio de Taylor a( x) de grado 2l + 1 de la función
f ( z ) = e i z h2 .
Encontrar los polinomios p(x) y q (x) del aproximante diagonal de Padé de
grado l a partir del polinomio de Taylor a (x) .
Calcular la aproximación de Padé B = r ( A1 ) = p ( A1 ) / q( A1 ) .
Algoritmo 5.2: Cálculo de la función f ( A) = e i
de Padé.
Ah
mediante aproximantes diagonales
5.3.3 Algoritmo Basado en la Iteración DB y en los Aproximantes
Diagonales de Padé
Este algoritmo consta de dos etapas. En la primera etapa se calcula B = A mediante el
método iterativo DB con escalado (véase subapartado 2.2.3.3). En la segunda etapa se
calcula C = e iA1h mediante los aproximantes diagonales de Padé. A continuación se
muestra este algoritmo completo.
B = zgeferdbp( A, h, l ) .
Entradas: Matriz A ∈C nxn , tamaño del paso h ∈ ℜ + , grado l ∈ Z + de los polinomios
del aproximante diagonal de Padé.
Salida:
1
2
Matriz B = ei
Ah
∈C
nxn
.
A1 = dgefrcdbe( A,10 −15 ,100) (calcula A1 = A mediante Algoritmo 3.6 de la
página 101)
B = zgfexppsv( A) (calcula B = eiA1h mediante la adaptación para matrices
complejas del Algoritmo 3.5 de la página 99)
Algoritmo 5.3: Cálculo de la función f ( A) = e i Ah mediante la iteración DB con
escalado y los aproximantes diagonales de Padé.
5.3.4 Resultados
Las matrices utilizadas en la pruebas se han obtenido a partir de los datos del problema
planteado, siendo sus tamaños iguales a 127, 271, 331, 721, 1027, 1261, 1387 y 1951.
Las mejores prestaciones del algoritmo basado en los aproximantes diagonales de Padé
(zgeferpad) se obtienen cuando el grado de los polinomios de la aproximación diagonal
de Padé es igual a 9. En el caso del algoritmo basado en la iteración DB con escalado y
218
Capítulo 5: Resultados Experimentales
en los aproximantes diagonales de Padé (zgeferdbp), las mejoras prestaciones se
obtienen para un grado igual a 3.
Como medida del error cometido en el cálculo de ei Ah se ha considerado el error
relativo correspondiente a la ecuación conmutante, ya que la solución exacta no es
conocida. De las pruebas realizadas se puede concluir que los algoritmos más precisos
han resultado ser el Algoritmo 5.1 (zgefereig) y el Algoritmo 5.3 (zgeferdbp).
En la siguiente tabla se muestran los tiempos de ejecución de las rutinas implementadas.
Te
n=127 n=271 n=331 n=721 n=1027 n=1261 n=1387 n=1951
zgefereig
0.093
0,163
1.469
22.15
64.847
114.53
156.37
402.90
zgeferpad
0.031
0.083
1.417
17.70
51.527
94.32
122.30
331.57
zgeferdbp
0.027
0.064
1.007
10.96
29.703
54.66
70.68
194.25
Tabla 5.27: Tiempos de ejecución, en segundos, de las rutinas
zgefereig, zgeferpad y zgeferdbp.
Como se puede observar en la tabla anterior, la rutina más rápida corresponde al
Algoritmo 5.3 (zgeferdbp).
A continuación se muestran la relación entre los tiempos de ejecución, en segundos, de
las rutinas zgeferpad y zgeferdbp frente a la rutina zgefereig. Para ello se ha dividido el
tiempo de ejecución de la rutina zgefereig (T) entre los tiempos de ejecución de las
rutinas zgeferpad y zgeferdbp (Ti).
T/Ti
n=127 n=271 n=331 n=721 n=1027 n=1261 n=1387 n=1951
zgeferpad
3.000
1,964
1.037
1.251
1.259
1.214
1.279
1.215
zgeferdbp
3.444
2,547
1.459
2.021
2.183
2.095
2.212
2.074
Tabla 5.28: Relación entre el tiempo de ejecución de la rutina
zgefereig (T) y los tiempos de ejecución (Ti) de las
rutinas zgeferpad y zgeferdbp.
219
Capítulo 5: Resultados Experimentales
zgeferpad
zgeferdbp
4,000
3,500
3,000
T/Ti
2,500
2,000
1,500
1,000
0,500
0,000
n=127
n=271
n=331
n=721 n=1027 n=1261 n=1387 n=1951
Dimensión
Figura 5.9:
Relación entre el tiempo de ejecución de la rutina
zgefereig (T) y los tiempos de ejecución (Ti) de las
rutinas zgeferpad y zgeferdbp.
Como conclusión, se puede decir que la rutina que presenta un mejor comportamiento,
en cuanto a precisión y menores tiempos de ejecución, es la correspondiente al
algoritmo basado en la iteración DB con escalado y en los aproximantes diagonales de
Padé (zgeferdbp).
5.4 Resolución de EDOs
En las pruebas realizadas se han comparado los algoritmos descritos en la sección 4.2
con un algoritmo basado en el método BDF (véase subapartado 2.3.3.3.2). Este
algoritmo se muestra continuación.
220
Capítulo 5: Resultados Experimentales
Y = dgeedobdf (data, t , x0 , r , tol , maxiter ) .
Entradas: Función data (t , x) que devuelve la matriz Jacobiana J (t , x) ∈ ℜnxn y el
vector f (t , x) ∈ ℜ n , vector de tiempos t ∈ ℜ l +1 , vector inicial x0 ∈ ℜ n ,
orden r ∈ Z + del método BDF, tolerancia tol ∈ ℜ + del método BDF,
número máximo de iteraciones maxiter ∈ Z + del método BDF.
Salida:
1
2
3
Matriz Y = [ y 0 , y1 ,L , y l ] ∈ ℜ nx (l +1) , yi ∈ ℜ n , i = 0,1, L , l .
Inicializar α y β con los valores dados en la Tabla 2.4 (página 55)
y0 = x0 ; j = 0
Para i = 0 : l − 1
3.1
∆t = ti +1 − ti
3.2 j = j + 1 ; p = min(r , j )
3.3
Para k = p : −1 : 2
3.3.1 X (1 : n, k ) = X (1 : n, k − 1)
3.4 X (1 : n,1) = yi ; f 0 = α p1 X (1 : n,1)
3.5
3.6
3.7
3.8
Para k = 2 : p
3.5.1 f 0 = f 0 + α pk X (1 : n, k )
yi +1 = yi
k =1
Mientras k ≤ maxiter (método de Newton)
3.8.1 [ J , f ] = data(ti , yi +1 )
3.8.2 y = − yi +1 + f 0 β p f
3.8.3
3.9
J = I n − ∆tβ p J
3.8.4 Determinar ∆y resolviendo la ecuación J∆y = y
3.8.5 Si norm(∆y ) < tol
3.8.5.1 Salir fuera del bucle
3.8.6 yi +1 = yi + ∆y
3.8.7 k = k + 1
Si k = = maxiter
3.9.1 error (no hay convergencia)
Algoritmo 5.4: Resolución de EDOs mediante el método BDF.
Una breve descripción de los algoritmos implementados y de sus parámetros
característicos aparece a continuación.
• dgeedobdf: Resuelve EDOs mediante el método BDF.
− r: orden del método BDF.
− tol: tolerancia utilizada en el método de Newton.
− maxiter: Número máximo de iteraciones utilizado en el método de Newton.
• dgeedolpn y dgeedolpa : Resuelven EDOs, no autónomas y autónomas, mediante
el método de linealización a trozos basado en los aproximantes diagonales de
Padé de la función exponencial.
221
Capítulo 5: Resultados Experimentales
− q: grado de los polinomios de la aproximación diagonal de Padé de la función
exponencial.
• dgeedolcn y dgeedolca: Resuelven EDOs, no autónomas y autónomas, mediante
el método de linealización a trozos basado en la ecuación conmutante.
− q: grado de los polinomios de la aproximación diagonal de Padé de la función
exponencial.
• dgeedolkn y dgeedolka: Resuelven EDOs, no autónomas y autónomas, mediante
el método de linealización a trozos basado en los subespacios de Krylov.
− p: dimensión del subespacios de Krylov.
− tol: tolerancia en el método de los subespacios de Krylov.
− q: grado de los polinomios de la aproximación diagonal de Padé de la función
exponencial.
Para cada caso de estudio se han determinado los valores de los parámetros
característicos que ofrecen mayor precisión con un menor coste computacional,
habiéndose realizado hasta tres tipos de pruebas:
•
Fijar el tamaño del problema y el instante de tiempo, variando el incremento de
tiempo.
•
Fijar el tamaño del problema y el incremento de tiempo, variando el instante de
tiempo.
•
Fijar el instante de tiempo y el incremento de tiempo, variando el tamaño del
problema.
Para cada prueba se muestran:
•
Tabla que contiene los errores relativos cometidos.
•
Tabla con los costes computacionales en flops.
•
Tabla en la que se muestra la relación entre el coste computacional, en flops, del
algoritmo basado en el método BDF y los costes computacionales, en flops, de
los algoritmos basados en la linealización a trozos.
•
Gráfica que muestra la relación entre el coste computacional, en flops, del
algoritmo basado en el método BDF y los costes computacionales, en flops, de
los algoritmos basados en la linealización a trozos.
En los casos de estudio que no tienen solución analítica conocida se ha considerado
como solución exacta, en un instante determinado, la obtenida a partir de la función de
MATLAB ode15s (véase Tabla 6.1, página 308).
5.4.1 EDOs Autónomas
Problema 5.1: El primer caso de estudio de una EDO autónoma ([Garc98]),
corresponde a una EDO definida como
x' = −
x3
, t ≥ 0,
2
con la condición inicial
222
Capítulo 5: Resultados Experimentales
x(0) = 1 .
La solución de esta EDO es
x(t ) =
1
1+ t
.
Los valores elegidos para los parámetros característicos se muestran a continuación.
•
dgeedobdf: r=2, tol=1e-6, maxiter=100.
•
dgeedolpa: q=1.
•
dgeedolca: q=1.
•
dgeedolpa: p=2, tol=1e-6, q=1.
En la primera prueba se considera t=5 y se varía el incremento de tiempo ∆t.
∆t=0.1
Er
∆t=0.05
∆t=0.01
∆t=0.005
∆t=0.001
∆t=0.0005
dgeedobdf 3.883e-05 1.306e-05 6.563e-07 1.688e-07 6.905e-09 1.731e-09
dgeedolpa 4.467e-05 1.101e-05 4.353e-07 1.087e-07 4.342e-09 1.085e-09
dgeedolca 4.467e-05 1.101e-05 4.353e-07 1.087e-07 4.342e-09 1.085e-09
dgeedolka 4.467e-05 1.101e-05 4.353e-07 1.087e-07 4.342e-09 1.085e-09
Tabla 5.29: Errores relativos en el instante de tiempo t=5,
variando ∆t.
Flops
∆t=0.1 ∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
dgeedobdf 2958
5058
21998
43998
219998
439998
dgeedolpa 1351
2701
13501
27001
135001
270001
dgeedolca 1051
2101
10501
21001
105001
210001
dgeedolka 3600
7200
36001
72001
360001
720001
Tabla 5.30: Número de flops en el instante de tiempo t=5,
variando ∆t.
223
Capítulo 5: Resultados Experimentales
∆t=0.1 ∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
F/Fi
dgeedolpa 2.189
1.873
1.629
1.629
1.630
1.630
dgeedolca 2.814
2.407
2.095
2.095
2.095
2.095
dgeedolka 0.822
0.703
0.611
0.611
0.611
0.611
Tabla 5.31: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar t=5 y
variar ∆t.
Flops(dgeedobdf)/Flops(dgeedolpa)
Flops(dgeedobdf)/Flops(dgeedolca)
Flops(dgeedobdf)/Flops(dgeedolk a)
2.5
F/Fi
2
1.5
1
0.5
0.1
0.05
0.01
0.005
0.001
0.0005
∆t
Figura 5.10: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar t=5 y
variar ∆t.
En la segunda prueba se considera ∆t=0.1 y se varía el tiempo t.
224
Capítulo 5: Resultados Experimentales
Er
t=10
t=20
t=30
t=40
t=50
t=60
dgeedobdf 2.343e-05 2.540e-05 2.034e-05 1.659e-05 1.392e-05 1.197e-05
dgeedolpa 2.653e-05 1.454e-05 1.001e-05 7.626e-06 6.160e-06 5.167e-06
dgeedolca 2.653e-05 1.454e-05 1.001e-05 7.626e-06 6.160e-06 5.167e-06
dgeedolka 2.653e-05 1.454e-05 1.001e-05 7.626e-06 6.160e-06 5.167e-06
Tabla 5.32: Errores relativos al considerar ∆t=0.1 y variar el
tiempo t.
Flops
t=5
t=10
t=15
t=20
t=25
t=30
dgeedobdf 5158 9558
13958 18358 22758 27158
dgeedolpa 2701 5401
8101
10801 13501 16201
dgeedolca 2101 4201
6301
8401
10501 12601
dgeedolka 7200 14400 21600 28800 36000 43200
Tabla 5.33: Número de flops al considerar ∆t=0.1 y variar el
tiempo t.
F/Fi
t=5
t=10
t=15
t=20
t=25
t=30
dgeedolpa 1.910 1.770 1.723 1.700 1.686 1.676
dgeedolca 2.455 2.275 2.215 2.185 2.167 2.155
dgeedolka 0.716 0.664 0.646 0.637 0.632 0.629
Tabla 5.34: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar ∆t=0.1 y
variar el tiempo t.
225
Capítulo 5: Resultados Experimentales
2.6
Flops(dgeedobdf )/Flops(dgeedolpa)
Flops(dgeedobdf )/Flops(dgeedolca)
Flops(dgeedobdf )/Flops(dgeedolk a)
2.4
2.2
2
F/Fi
1.8
1.6
1.4
1.2
1
0.8
5
10
15
20
25
30
t
Figura 5.11: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar ∆t=0.1 y
variar el tiempo t.
De los resultados obtenidos se pueden extraer las siguientes conclusiones:
• A medida que se incrementa el tiempo, los errores relativos cometidos por los
algoritmos basados en la linealización a trozos son algo menores que los
cometidos por el algoritmo basado en el método BDF (dgeedobdf).
• Los algoritmos de linealización a trozos basados en los aproximantes diagonales
de Padé (dgeedolpa) y en la ecuación conmutante (dgeedolca) tienen un coste
computacional menor que el algoritmo basado en el método BDF (dgeedobdf).
• El mayor coste computacional corresponde al algoritmo de linealización a trozos
basado en los subespacios de Krylov (dgeedolka).
Problema 5.2: El segundo caso de estudio de una EDO autónoma corresponde a la
ecuación logística ([Garc98]) definida como
x' = λx(1 − x) , t ≥ 0 ,
con la condición inicial
x(0) = x 0 .
La solución de esta EDO es
x(t ) =
x0
.
(1 − x0 )e −λt + x0
En las pruebas realizadas se ha considerado λ = 2 y x0 = 2 . Los valores elegidos para
los parámetros característicos se muestran a continuación.
•
dgeedobdf: r=2, tol=1e-6, maxiter=100.
226
Capítulo 5: Resultados Experimentales
•
dgeedolpa: q=1.
•
dgeedolca: q=1.
•
dgeedolpa: p=2, tol=1e-6, q=1.
En la primera prueba se considera t=5 y se varía el incremento de tiempo ∆t.
∆t=0.1
Er
∆t=0.05
∆t=0.01
∆t=0.005
∆t=0.001
∆t=0.0005
dgeedobdf 3.397e-06 7.848e-07 2.876e-08 7.096e-09 2.807e-10 7.013e-11
dgeedolpa 7.486e-07 1.887e-07 7.566e-09 1.892e-09 7.567e-11 1.892e-11
dgeedolca 7.486e-07 1.887e-07 7.566e-09 1.892e-09 7.567e-11 1.892e-11
dgeedolka 7.486e-07 1.887e-07 7.566e-09 1.892e-09 7.567e-11 1.892e-11
Tabla 5.35: Errores relativos en el instante de tiempo t=5,
variando ∆t.
Flops
∆t=0.1 ∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
dgeedobdf 2598
4918
21898
41398
189078
364338
dgeedolpa 1351
2701
13501
27001
135001
270001
dgeedolca 1051
2101
10501
21001
105001
210001
dgeedolka 3601
7201
36001
72001
360001
720001
Tabla 5.36: Número de flops en el instante de tiempo t=5,
variando ∆t.
F/Fi
∆t=0.1 ∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
dgeedolpa 1.923
1.821
1.622
1.533
1.401
1.349
dgeedolca 2.472
2.341
2.085
1.971
1.801
1.735
dgeedolka 0.721
0.683
0.608
0.575
0.525
0.506
Tabla 5.37: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar t=5 y
variar ∆t.
227
Capítulo 5: Resultados Experimentales
Flops(dgeedobdf )/Flops(dgeedolpa)
Flops(dgeedobdf )/Flops(dgeedolca)
Flops(dgeedobdf )/Flops(dgeedolk a)
F/Fi
2
1.5
1
0.5
0.1
0.05
0.01
0.005
0.001
0.0005
∆t
Figura 5.12: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar t=5 y
variar ∆t.
En la segunda prueba se considera ∆t=0.1 y se varía el tiempo t.
Er
t=3
t=6
t=9
t=12
t=15
t=18
dgeedobdf 1.142e-04 5.437e-07 1.933e-09 6.109e-12 1.887e-14 2.220e-16
dgeedolpa 2.472e-05 1.212e-07 4.461e-10 1.460e-12 4.441e-15 2.220e-16
dgeedolca 2.472e-05 1.212e-07 4.461e-10 1.460e-12 4.441e-15 2.220e-16
dgeedolka 2.472e-05 1.212e-07 4.461e-10 1.460e-12 4.441e-15 2.220e-16
Tabla 5.38: Errores relativos al considerar ∆t =0.1 y variar el
tiempo t.
228
Capítulo 5: Resultados Experimentales
t=3
t=15
t=18
dgeedobdf 1718 2978 3698 4418 5138
5858
dgeedolpa 811
1621 2431 3241 4051
4861
dgeedolca 631
1261 1891 2521 3151
3781
Flops
t=6
t=9
t=12
dgeedolka 2161 4321 6481 8641 10801 12961
Tabla 5.39: Número de flops al considerar ∆t=0.1 y variar el
tiempo t.
t=3
F/Fi
t=6
t=9
t=12
t=15
t=18
dgeedolpa 2.118 1.837 1.521 1.363 1.268 1.205
dgeedolca 2.723 2.362 1.956 1.752 1.631 1.549
dgeedolka 0.795 0.689 0.571 0.511 0.476 0.452
Tabla 5.40: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar ∆t=0.1 y
variar el tiempo t.
3
Flops(dgeedobdf )/Flops(dgeedolpa)
Flops(dgeedobdf )/Flops(dgeedolca)
Flops(dgeedobdf )/Flops(dgeedolk a)
2.5
F/Fi
2
1.5
1
0.5
0
2
4
6
8
10
t
12
14
16
18
Figura 5.13: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar ∆t=0.1 y
variar el tiempo t.
229
Capítulo 5: Resultados Experimentales
De los resultados obtenidos se pueden extraer las siguientes conclusiones:
• Los errores relativos cometidos por los algoritmos basados en el método de
linealización son algo menores que los cometidos por el algoritmo basado en el
método BDF (dgeedobdf).
• Los algoritmos de linealización a trozos basados en los aproximantes diagonales
de Padé (dgeedolpa) y en la ecuación conmutante (dgeedolca) tienen costes
computacionales menores que el algoritmo basado en el método BDF
(dgeedobdf).
• El mayor coste computacional corresponde al algoritmo basado en la linealización
a trozos mediante los subespacios de Krylov (dgeedolka).
Problema 5.3: El tercer caso de estudio corresponde a una EDO autónoma no lineal de
orden seis de tipo rígido ([LiSw98]) definida como
x' = f ( x) , t ≥ 0 , x = x(t ) ∈ ℜ 6 , 0 ≤ t ≤ 180 ,
con la condición inicial
x(0) = [0.437, 0.00123, 0, 0, 0, 0.367]T ,
siendo
⎡ − 2r1 + r2 − r3 − r4 ⎤
⎢ − 0 .5 r − r − 0 .5 r + F ⎥
1
4
5
in ⎥
⎢
⎥
⎢
r1 − r2 + r3
f ( x) = ⎢
⎥,
− r2 − r3 − 2r4
⎥
⎢
⎥
⎢
r2 − r3 + 2r5
⎥
⎢
− r5
⎦⎥
⎣⎢
donde ri , i = 1,2,3,4,5 , y Fin son variables auxiliares dadas por
r1 = k1 y14 y 20.5 ,
r2 = k 2 y 3 y 4 ,
r3 =
k2
y1 y5 ,
K
r4 = k 3 y1 y 42 ,
r5 = k 4 y 66 y 20.5 ,
⎛ p(CO2 ) ⎞
Fin = klA⎜
y2 ⎟ .
⎝ H
⎠
Los valores de los parámetros k1 , k 2 , k 3 , k 4 , K , KlA , p (CO2 ) y H son
k1
k2
k3
k4
= 18.7,
= 0.58,
= 0.09,
= 0.42,
K = 34.4,
klA = 3.3,
p (CO2 ) = 3.3
H = 737.
230
Capítulo 5: Resultados Experimentales
El problema proviene del centro de investigación Akzo Novel Central Research de
Arnhem, en el que se modela un proceso químico (para más detalles, véase [LiSw98]).
Puesto que la matriz Jacobiana es en ocasiones singular, no se puede utilizar el método
de linealización a trozos basado en la ecuación conmutante (dgeedolca). En las pruebas
realizadas se comparan los otros tres métodos, siendo los valores elegidos para los
parámetros característicos los que se muestran a continuación.
•
dgeedobdf: r=2, tol=1e-6, maxiter=100.
•
dgeedolpa: q=1.
•
dgeedolka: p=3, tol=1e-6, q=1.
En la primera prueba se considera t=5 y se varía el incremento de tiempo ∆t.
∆t=0.1
Er
∆t=0.05
∆t=0.01
∆t=0.005
∆t=0.001
∆t=0.0005
dgeedobdf 7.418e-05 2.369e-05 1.235e-06 3.239e-07 1.254e-08 2.384e-09
dgeedolpa 1.348e-04 3.640e-05 9.074e-07 2.351e-07 8.720e-09 1.445e-09
dgeedolka 4.615e-04 9.971e-05 4.416e-06 1.130e-06 4.511e-08 1.054e-08
Tabla 5.41: Errores relativos en el instante de tiempo t=5,
variando ∆t.
Flops
∆t=0.1
dgeedobdf 68915
∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
134645
651012
1302056
6510424
13020896
dgeedolpa 231607 373113
964537
1929081
9645449
19290913
dgeedolka 33832
332848
665698
3328477
6656950
66898
Tabla 5.42: Número de flops en el instante de tiempo t=5,
variando ∆t.
F/Fi
∆t=0.1 ∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
dgeedolpa 0.298
0.361
0.675
0.675
0.675
0.675
dgeedolka 2.037
2.013
1.956
1.956
1.956
1.956
Tabla 5.43: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar t=5 y
variar ∆t.
231
Capítulo 5: Resultados Experimentales
2
Flops(dgeedobdf )/Flops(dgeedolpa)
Flops(dgeedobdf )/Flops(dgeedolk a)
F/Fi
1.5
1
0.5
0.1
0.05
0.01
0.005
0.001
0.0005
∆t
Figura 5.14: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar t=5 y
variar ∆t.
En la segunda prueba se considera ∆t=0.01 y se varía el tiempo t.
t=5
Er
t=10
t=15
t=20
t=25
t=30
dgeedobdf 1.236e-06 1.218e-06 1.080e-06 9.033e-07 7.314e-07 5.838e-07
dgeedolpa 9.084e-07 9.398e-07 8.524e-07 7.170e-07 5.791e-07 4.585e-07
dgeedolka 4.417e-06 4.625e-06 4.350e-06 3.961e-06 3.169e-06 2.508e-06
Tabla 5.44: Errores relativos al considerar ∆t=0.01 y variar el
tiempo t.
Flops
t=5
t=10
t=15
t=20
t=25
t=30
dgeedobdf 651012 1301512 1952012 2602668 3253168 3903668
dgeedolpa 964537 1928537 2892537 3856693 4820693 5784693
dgeedolka 332848 665848
998848
1331848 1664848 1997848
Tabla 5.45: Número de flops al considerar ∆t=0.01 y variar el
tiempo t.
232
Capítulo 5: Resultados Experimentales
F/Fi
t=5
t=10
t=15
t=20
t=25
t=30
dgeedolpa 0.675 0.675 0.675 0.675 0.675 0.675
dgeedolka 1.956 1.955 1.954 1.954 1.954 1.954
Tabla 5.46: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar ∆t=0.01 y
variar el tiempo t.
2
1.8
1.6
Flops(dgeedobdf )/Flops(dgeedolpa)
Flops(dgeedobdf )/Flops(dgeedolk a)
F/Fi
1.4
1.2
1
0.8
5
10
15
20
25
30
t
Figura 5.15: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar ∆t=0.01 y
variar el tiempo t.
De los resultados obtenidos se pueden extraer las siguientes conclusiones:
• No se puede utilizar el algoritmo de linealización a trozos basado en la ecuación
conmutante (dgeedolca), por ser la matriz jacobiana no singular.
• Los errores relativos cometidos por los otros tres algoritmos son semejantes,
aunque algo mayores en el caso del algoritmo de linealización a trozos basado en
los subespacios de Krylov (dgeedolka).
• El algoritmo con menor coste computacional es el de linealización a trozos basado
en los subespacios de Krylov (dgeedolka) y el de mayor coste computacional el de
linealización a trozos basado en los aproximantes diagonales de Padé (dgeedolpa).
Problema 5.4: El cuarto caso de estudio proviene de una EDO autónoma no lineal de
tipo rígido ([LiSw98]) definida como
233
Capítulo 5: Resultados Experimentales
x' = f ( x) , t ≥ 0 , x = x(t ) ∈ ℜ 8 , 0 ≤ t ≤ 321.8122 ,
con la condición inicial
x(0) = [1, 0, 0, 0, 0, 0, 0, 0.0057]T ,
siendo
− 1.71 y1 + 0.43 y2 + 8.32 y3 + 0.0007
⎤
⎡
⎥
⎢
1.71 y1 − 8.75 y2
⎥
⎢
⎥
⎢
− 10.03 y3 + 0.43 y4 + 0.035 y5
⎥
⎢
8.32 y2 + 1.71 y3 − 1.12 y4
⎥.
⎢
f ( x) =
⎥
⎢
− 1.745 y5 + 0.43 y6 + 0.43 y7
⎥
⎢
⎢− 280 y6 y8 + 0.69 y4 + 1.71 y5 − 0.43 y6 + 0.69 y7 ⎥
⎥
⎢
280 y6 y8 − 1.81y7
⎥
⎢
− 280 y6 y8 + 1.81y7
⎥⎦
⎢⎣
El problema describe la manera en que la luz se ve envuelta en un proceso de
morfogénesis (para más detalles, véase [LiSw98]).
Puesto que la matriz Jacobiana es en ocasiones singular, no se puede utilizar el método
de linealización a trozos basado en la ecuación conmutante (dgeedolca). En las pruebas
realizadas se comparan los otros tres métodos, siendo los valores elegidos para los
parámetros característicos los que se muestran a continuación.
•
dgeedobdf: r=3, tol=1e-6, maxiter=100.
•
dgeedolpa: q=1.
•
dgeedolka: p=4, tol=1e-6, q=1.
En la primera prueba se considera t=5 y se varía el incremento de tiempo ∆t.
Er
∆t=0.1
∆t=0.05
∆t=0.01
∆t=0.005
∆t=0.001
∆t=0.0005
dgeedobdf 4.247e-04 1.060e-04 4.104e-06 1.021e-06 4.066e-08 1.015e-08
dgeedolpa 4.357e-05 1.526e-05 4.833e-07 1.464e-07 5.852e-09 1.460e-09
dgeedolka 5.783e-05 1.040e-05 5.151e-07 1.366e-07 5.767e-09 1.450e-09
Tabla 5.47: Errores relativos en el instante de tiempo t=5,
variando ∆t.
234
Capítulo 5: Resultados Experimentales
∆t=0.1
Flops
∆t=0.05 ∆t=0.01
∆t=0.005 ∆t=0.001
∆t=0.0005
1807166
18073278
dgeedobdf 103407 198194
903502
dgeedolpa 563229 919485
2320075 3237239
16186679 32373499
dgeedolka 87281
628419
6281415
158617
1256679
9036520
12562747
Tabla 5.48: Número de flops en el instante de tiempo t=5,
variando ∆t.
∆t=0.1 ∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
F/Fi
dgeedolpa 0.184
0.216
0.389
0.558
0.558
0.558
dgeedolka 1.185
1.250
1.438
1.438
1.439
1.439
Tabla 5.49: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar t=5 y
variar ∆t.
Flops(dgeedobdf )/Flops(dgeedolpa)
Flops(dgeedobdf )/Flops(dgeedolk a)
F/Fi
1
0.5
0
0.1
0.05
0.01
0.005
0.001
0.0005
∆t
Figura 5.16: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar t=5 y
variar ∆t.
En la segunda prueba se considera ∆t=0.01 y se varía el tiempo t.
235
Capítulo 5: Resultados Experimentales
Er
t=50
t=100
t=150
t=200
t=250
t=300
dgeedobdf 1.860e-06 2.294e-06 2.989e-06 4.276e-06 7.425e-06 2.406e-05
dgeedolpa 7.245e-07 8.936e-07 1.164e-06 1.665e-06 2.892e-06 9.380e-06
dgeedolka 9.694e-07 1.195e-06 1.556e-06 2.221e-06 3.806e-06 9.309e-06
Tabla 5.50: Errores relativos al considerar ∆t=0.01 y variar el
tiempo t.
Flops
t=50
dgeedobdf 9039384
t=100
t=150
t=200
18079194 27118984 36158864
t=250
t=300
45198754
54238534
dgeedolpa 31963104 58718104 85473104 106785016 122975016 139165016
dgeedolka 3260055
5465055
7670055
9875055
12080055
14285055
Tabla 5.51: Número de flops al considerar ∆t=0.01 y variar el
tiempo t.
F/Fi
t=50
t=100 t=150 t=200 t=250 t=300
dgeedolpa 0.283 0.308 0.317 0.339 0.368 0.390
dgeedolka 2.773 3.308 3.536 3.662 3.742 3.797
Tabla 5.52: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar ∆t=0.01 y
variar el tiempo t.
236
Capítulo 5: Resultados Experimentales
4
3.5
3
Flops(dgeedobdf)/Flops(dgeedolpa)
Flops(dgeedobdf)/Flops(dgeedolk a)
F/Fi
2.5
2
1.5
1
0.5
0
50
100
150
200
250
300
t
Figura 5.17: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar ∆t=0.01 y
variar el tiempo t.
De los resultados obtenidos se pueden extraer las siguientes conclusiones:
• No se puede utilizar el algoritmo de linealización a trozos basado en la ecuación
conmutante (dgeedolca), por ser la matriz jacobiana no singular.
• Los errores relativos cometidos por los otros tres algoritmos son semejantes,
aunque algo mayores en el caso del algoritmo basado en el método BDF
(dgeedobdf).
• El algoritmo con menor coste computacional es el de linealización a trozos basado
en los subespacios de Krylov (dgeedolka), y el de mayor coste computacional el
de linealización a trozos basado en los aproximantes diagonales de Padé
(dgeedolpa).
5.4.2 EDOs no autónomas
Problema 5.5: El primer caso de estudio de una EDO no autónoma ([Garc98])
corresponde a una EDO definida como
x' = (t − x) 2 + 1 , t ≥ 3 ,
con la condición inicial
x(3) = 2 .
237
Capítulo 5: Resultados Experimentales
La solución de esta EDO es
x(t ) = t +
1
.
2−t
Los valores elegidos para los parámetros característicos se muestran a continuación.
•
dgeedobdf: r=2, tol=1e-6, maxiter=100.
•
dgeedolpn: q=1.
•
dgeedolcn: q=1.
•
dgeedolkn: p=3, tol=1e-6, q=1.
En la primera prueba se considera t=4 y se varia el incremento de tiempo ∆t.
Er
∆t=0.1
∆t=0.05
∆t=0.01
∆t=0.005
∆t=0.001
∆t=0.0005
dgeedobdf 3.694e-04 8.889e-05 3.557e-06 8.908e-07 3.570e-08 8.926e-09
dgeedolpn 1.269e-16 1.269e-16 1.269e-16 2.538e-16 1.269e-16 6.344e-16
dgeedolcn 1.269e-16 1.269e-16 7.613e-16
dgeedolkn 1.269e-16 1.269e-16
0
0
3.806e-16 6.344e-16
1.269e-16 7.613e-16 6.344e-16
Tabla 5.53: Errores relativos en el instante de tiempo t=4,
variando ∆t.
Puesto que para un incremento de tiempo igual a 0.1 los métodos de linealización a
trozos presentan un error muy pequeño, solo se van a representar lo resultados
obtenidos para este incremento.
Flops
∆t=0.1
dgeedobdf 2958
dgeedolpn 1351
dgeedolcn 1051
dgeedolkn 3600
Tabla 5.54: Número de flops para t=4 y ∆t=0.1.
238
Capítulo 5: Resultados Experimentales
∆t=0.1
F/Fi
dgeedolpn 2.189
dgeedolcn 2.814
dgeedolkn 0.822
Tabla 5.55: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar t=4 y
∆t=0.1.
En la segunda prueba se considera ∆t=0.1 y se varía el tiempo t.
t=3.5
Er
t=4
t=4.5
t=5
t=5.5
t=6
dgeedobdf 1.463e-03 3.694e-04 1.081e-04 2.951e-05 2.748e-06 6.608e-06
1.269e-16
0
dgeedolcn 1.567e-16 1.269e-16
0
dgeedolkn 1.567e-16 1.269e-16
0
dgeedolpn
0
0
0
1.545e-16
1.903e-16 3.407e-16 1.545e-16
0
0
1.545e-16
Tabla 5.56: Errores relativos al considerar ∆t=0.1 y variar el
tiempo t.
Flops
t=3.5 t=4
t=4.5 t=5
t=5.5 t=6
dgeedobdf 318
638
958
1278 1598 1918
dgeedolpn 166
330
495
660
824
989
dgeedolcn 136
271
406
541
676
811
dgeedolkn 1736 3471 5206 6956 8706 10456
Tabla 5.57: Número de flops al considerar ∆t=0.1 y variar el
tiempo t.
239
Capítulo 5: Resultados Experimentales
F/Fi
t=3.5
t=4
t=4.5
t=5
t=5.5
t=6
dgeedolpn 1.916 1.933 1.935 1.936 1.939 1.939
dgeedolcn 2.338 2.354 2.360 2.362 2.364 2.365
dgeedolkn 0.183 0.184 0.184 0.184 0.184 0.183
Tabla 5.58: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar ∆t=0.1 y
variar el tiempo t.
2.5
2
1.5
F/Fi
Flops(dgeedobdf )/Flops(dgeedolpn)
Flops(dgeedobdf )/Flops(dgeedolcn)
Flops(dgeedobdf )/Flops(dgeedolk n)
1
0.5
0
3.5
4
4.5
5
5.5
6
t
Figura 5.18: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar ∆t=0.1 y
variar el tiempo t.
De los resultados obtenidos se pueden extraer las siguientes conclusiones:
• Los errores relativos cometidos por los algoritmos de linealización a trozos son
mucho menores que los cometidos por el algoritmo basado en el método BDF
(dgeedobdf).
• Los algoritmos de linealización a trozos basados en los aproximantes diagonales
de Padé (dgeedolpn) y en la ecuación conmutante (dgeedolcn) tienen un coste
computacional menor que el algoritmo basado en el método BDF (dgeedobdf).
• El mayor coste computacional corresponde al algoritmo de linealización a trozos
basado en los subespacios de Krylov (dgeedolkn).
240
Capítulo 5: Resultados Experimentales
Problema 5.6: El segundo caso de estudio de una EDO no autónoma ([AsPe91], página
153) corresponde a una EDO definida como
x' = λ ( x − sen t ) + cos t , t ≥ 0 ,
con la condición inicial
x(0) = 1 ,
cuya solución viene dada por la expresión
x(t ) = e λt + sen t .
En las pruebas realizadas se ha considerado λ = 2 , siendo los valores elegidos para los
parámetros característicos los que se muestran a continuación.
•
dgeedobdf: r=3, tol=1e-6, maxiter=100.
•
dgeedolpn: q=1.
•
dgeedolcn: q=1.
•
dgeedolkn: p=3, tol=1e-6, q=1.
En la primera prueba se considera t=5 y se varía el incremento de tiempo ∆t.
∆t=0.1
Er
∆t=0.05
∆t=0.01
∆t=0.005
∆t=0.001
∆t=0.0005
dgeedobdf 4.705e-02 9.254e-03 2.803e-04 6.702e-05 1.996e-03 6.421e-07
dgeedolpn 3.380e-02 8.302e-03 3.301e-04 8.251e-05 1.995e-03 8.250e-07
dgeedolcn 3.380e-02 8.302e-03 3.301e-04 8.251e-05 1.995e-03 8.250e-07
dgeedolkn 3.380e-02 8.302e-03 3.301e-04 8.251e-05 1.995e-03 8.250e-07
Tabla 5.59: Errores relativos en el instante de tiempo t=5,
variando el incremento de tiempo ∆t.
Flops
∆t=0.1
∆t=0.05 ∆t=0.01
∆t=0.005 ∆t=0.001
∆t=0.0005
dgeedobdf
2543
5093
25493
50993
254942
509993
dgeedolpn
1851
3701
18501
37001
184964
370001
dgeedolcn
1301
2601
13001
26001
129975
260001
dgeedolkn
15136
28126
133379
264460
1292732
2555052
Tabla 5.60: Número de flops en el instante de tiempo t=5,
variando el incremento de tiempo ∆t.
241
Capítulo 5: Resultados Experimentales
∆t=0.1 ∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
F/Fi
dgeedolpn 1.374
1.376
1.378
1.378
1.378
1.378
dgeedolcn 1.955
1.958
1.961
1.961
1.961
1.962
dgeedolkn 0.168
0.181
0.191
0.193
0.197
0.200
Tabla 5.61: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar t=5 y
variar el incremento de tiempo ∆t.
F/Fi
1.5
Flops(dgeedobdf)/Flops(dgeedolpn)
Flops(dgeedobdf)/Flops(dgeedolcn)
Flops(dgeedobdf)/Flops(dgeedolk n)
1
0.5
0
0.1
0.05
0.01
0.005
0.001
0.0005
∆t
Figura 5.19: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar t=5 y
variar el incremento de tiempo ∆t.
En la segunda prueba se varía el tiempo t entre 5 y 30. Por problemas de convergencia
en el método BDF, se ha aumentado el número de iteraciones maxiter a 10000. Se ha
comprobado que aunque el incremento de tiempo se disminuyera, el método BDF no
converge para valores de tiempo mayores que 15. En las siguientes tablas se muestran
los resultados obtenidos al considerar ∆t=0.1.
242
Capítulo 5: Resultados Experimentales
t=5
Er
t=10
t=15
t=20
dgeedobdf 4.705e-02 6.383e-02 8.542e-01 Error
t=25
t=30
Error
Error
dgeedolpn 3.380e-02 6.906e-02 1.055e-01 6.464e-02 3.274e-02 2.452e-04
dgeedolcn 3.380e-02 6.906e-02 1.055e-01 6.464e-02 3.274e-02 2.452e-04
dgeedolkn 3.380e-02 6.906e-02 1.055e-01 6.464e-02 3.274e-02 2.444e-04
Tabla 5.62: Errores relativos al considerar ∆t=0.1 y variar el
tiempo t.
t=5
t=10
dgeedobdf 2542
5092
217069 217069 217069 217069
dgeedolpn 1901
3801
5701
7563
9463
11363
dgeedolcn 1351
2701
4051
5374
6724
8074
43510
53860
64210
Flops
t=15
dgeedolkn 12553 22939 33325
t=20
t=25
t=30
Tabla 5.63: Número de flops al considerar ∆t=0.1 y variar el
tiempo t.
F/Fi
t=5
t=10
t=15
t=20
t=25
t=30
dgeedolpn 1.337 1.340 38.076 28.701 22.939 19.103
dgeedolcn 1.882 1.885 53.584 40.392 32.283 26.885
dgeedolkn 0.203 0.222 6.514
4.989
4.030
3.381
Tabla 5.64: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar ∆t=0.1 y
variar el tiempo t.
243
Capítulo 5: Resultados Experimentales
60
50
F/Fi
40
30
20
Flops(dgeedobdf )/Flops(dgeedolpn)
Flops(dgeedobdf )/Flops(dgeedolcn)
Flops(dgeedobdf )/Flops(dgeedolk n)
10
0
5
10
15
20
25
30
t
Figura 5.20: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgeedobdf) y
el número de flops (Fi) de los algoritmos basados
en la linealización a trozos, al considerar ∆t=0.1 y
variar el tiempo t.
De los resultados obtenidos se pueden extraer las siguientes conclusiones:
• El algoritmo basado en el método BDF (dgeedobdf) tiene problemas de
convergencia. En caso de convergencia del método BDF, los errores relativos
cometidos por los cuatro algoritmos son similares.
• Los algoritmos con menor coste computacional corresponden al de linealización a
trozos basado en los aproximante diagonales de Padé (dgeedolpn) y al de
linealización a trozos basado en la ecuación conmutante (dgeedolcn). El algoritmo
con mayor coste computacional corresponde al de linealización a trozos basado en
los subespacios de Krylov (dgeedolkn).
Problema 5.7: El tercer caso de estudio de una EDO no autónoma ([LiSw98]),
corresponde a una EDO de tipo rígido definida como
x' = f (t , x) , x = x(t ) ∈ ℜ 2 N , 0 ≤ t ≤ 20 ,
con la condición inicial
x(0) = [0, v0 , 0, v0 , L ,0, v0 ]T ∈ ℜ 2 N ,
siendo N = 200 .
La función f está definida como
f 2 j −1 = α j
y 2 j +1 − y 2 j −3
2∆ς
+ βj
y 2 j −3 − 2 y 2 j −1 + y 2 j +1
(∆ς ) 2
− ky2 j −1 y 2 j ,
f 2 j = −ky2 j y 2 j −1 ,
244
Capítulo 5: Resultados Experimentales
siendo
αj =
2( j∆ς − 1) 3
,
c2
βj =
( j∆ς − 1) 4
,
c2
Los valores de j se encuentran comprendidos entre 1 y N , ∆ς = 1 / N . y −1 (t ) = φ (t ) ,
y 2 N +1 = y 2 N −1 , siendo
⎧2 , t ∈ (0,5]
.
⎩0, t ∈ (5,20]
φ (t ) = ⎨
Este problema proviene del estudio de la penetración de anticuerpos irradiados en un
tejido que está infectado por un tumor, procedente de los laboratorios de investigación
Akzo Nobel.
Los valores elegidos de k , v 0 y c han sido 100, 1 y 4, respectivamente.
Este caso de estudio es interesante pues permite comparar los algoritmos para EDOs de
gran dimensión. Puesto que la solución analítica no es conocida, se presentan
únicamente los resultados correspondientes a los tiempos de ejecución de las
implementaciones realizadas en FORTRAN, aunque se ha comprobado que las
soluciones dadas por las implementaciones han sido similares. Al ser la matriz
Jacobiana singular, el algoritmo basado en la linealización a trozos mediante la ecuación
conmutante (dgeedolpn) no se puede utilizar. Los valores elegidos para los parámetros
característicos son los siguientes:
•
dgeedobdf: r=2, tol=1e-14, maxiter=100.
•
dgeedolpn: q=1.
•
dgeedolkn: p=2, tol=1e-14, q=1.
En la siguiente tabla se muestran los tiempos de ejecución, en segundos, de las tres
implementaciones en FORTRAN al considerar ∆t=1.0e-6 y variar el tiempo.
Te
t=1.0e-5
t=1.0e-4
t=1.0e-3 t=1.0e-2 t=1.0e-1
dgeedobdf 0.85619
8.5590
74.806
734.80
7333.9
dgeedolpn 0.79621
7.9022
78.901
783.92
7908.3
dgeedolkn 0.45720e-02 0.45450e-01 .45433
4.5451
45.468
Tabla 5.65: Tiempos de ejecución, en segundos, al considerar
∆t=1.0e-6 y variar el tiempo t.
245
Capítulo 5: Resultados Experimentales
Te/Tei
t=1.0e-5 t=1.0e-4 t=1.0e-3 t=1.0e-2 t=1.0e-1
dgeedolpn 1.08
1.08
0.95
0.94
0.93
dgeedolkn 187.27
188.32
164.65
161.67
161.30
Tabla 5.66: Relación entre el tiempo de ejecución (Te) de la
implementación basada en el método BDF
(dgeedobdf) y el tiempo de ejecución (Tei) de las
implementaciones basadas en la linealización a
trozos, al considerar ∆t=1.0e-6 y variar el tiempo t.
De los resultados obtenidos se deduce que la rutina de linealización a trozos basada en
los subespacios de Krylov ha resultado ser, aproximadamente, 160 veces más rápida
que las otras dos rutinas. Este resultado reafirma el hecho de que para problemas de
mediana o gran dimensión, el algoritmo basado en la linealización a trozos mediante los
subespacios de Krylov tiene un coste computacional menor o mucho menor que los
correspondientes al resto de los algoritmos.
5.5 Resolución de EDMRs
En las pruebas realizadas se han comparado los algoritmos descritos en el 4.3 con dos
algoritmos basados en el método BDF (véase subapartado 2.4.2.3, página 62). En estos
algoritmos se debe resolver la ecuación matricial de Sylvester. Aunque MATLAB
dispone de la función lyap, que permite resolver ecuaciones matriciales de Sylvester y
ecuaciones de matriciales Lyapunov, en las pruebas se ha utilizado la función dgesyl,
que a continuación se muestra, por tener un coste computacional menor que la función
lyap.
X = dgesyl ( A, B, C ) .
Entradas: Matrices A ∈ ℜ mxm , B ∈ ℜ nxn y C ∈ ℜ mxn .
Salida:
Matriz X ∈ ℜ mxn
AX + XB = C .
solución de la ecuación matricial de Sylvester
1
2
[Qa , A] = schur ( A)
[Qb , B] = schur ( B)
3
4
5
C = QaT CQb
C = dtrsyl ( A, B, C ) (Algoritmo 3.14, página 116)
C = Qa CQbT
Algoritmo 5.5: Resolución de la ecuación matricial de Sylvester.
A continuación se presentan dos algoritmos que resuelven EDMRs, uno para
coeficientes variables y otro para coeficientes constantes, mediante el método BDF.
246
Capítulo 5: Resultados Experimentales
Y = dgedmrbdv(t , data, X 0 , r , tol , maxiter ) .
Entradas: Vector de tiempos t ∈ ℜl +1 , función data (t ) que calcula las matrices
coeficiente de la EDMR A11 (t ) ∈ ℜ nxn , A12 (t ) ∈ ℜ nxm , A21 (t ) ∈ ℜ mxn ,
A22 (t ) ∈ ℜ mxm , matriz inicial X 0 ∈ ℜ mxn , orden r ∈ Z + del método BDF,
tolerancia tol ∈ ℜ + del método BDF, número máximo de iteraciones
maxiter ∈ Z + del método BDF.
Salida:
1
2
3
Matriz a bloques Y = [Y0 , Y1 , L , Yl ] ∈ ℜ ( m×n )×( l +1) , Yi ∈ ℜ mxn , i = 0,1, L, l .
Inicializar α y β con los valores dados en la Tabla 2.4
Y0 = X 0 ; j = 0
Para i = 0 : l − 1
3.1 ∆t = ti +1 − ti ; j = j + 1 ; p = min(r , j )
3.2
Para k = p : −1 : 2
3.2.1 X (1 : m,1 : n, k ) = X (1 : m,1 : n, k )
3.3 X (1 : m,1 : n,1) = Yi ; C 0 = α p1 X (1 : m,1 : n,1)
3.4
3.5
3.6
3.7
3.8
3.9
Para k = 2 : p
3.4.1 C 0 = C 0 + α pk X (1 : m,1 : n, k )
[ A11 , A12 , A21 , A22 ] = data (t i )
C11 = ∆tβ r A11 + 0.5I n ; C12 = ∆tβ r A12 ; C 22 = ∆tβ r A22 − 0.5I n
k =0
Mientras k < maxiter (método de Newton)
3.8.1 k = k + 1
3.8.2 A = C 22 − Yi C12
3.8.3 B = −C0 + Yi − ∆tβ (r1 )( A21 + A22Yi − Yi A11 − Yi A12Yi )
3.8.4 ∆Y = dgesyl( A, B, C )
3.8.5 Si norm(∆Y ) < tol
3.8.5.1 Salir fuera del bucle
3.8.6 Yi +1 = Yi + ∆Y
Si k = = maxiter
3.9.1 error (no hay convergencia)
Algoritmo 5.6: Resolución de EDMRs con coeficientes variables mediante el método
BDF.
247
Capítulo 5: Resultados Experimentales
Y = dgedmrbdc(t , data, X 0 , r , tol , maxiter ) .
Entradas: Vector de tiempos t ∈ ℜ l +1 , función data (t ) que devuelve las matrices
coeficiente de la EDMR A11 ∈ ℜ nxn , A12 ∈ ℜ nxm , A21 ∈ ℜ mxn , A22 ∈ ℜ mxm ,
matriz inicial X 0 ∈ ℜ mxn , orden r ∈ Z + del método BDF, tolerancia
tol ∈ ℜ + del método BDF, número máximo de iteraciones maxiter ∈ Z +
del método BDF.
Salida:
1
2
3
Matriz a bloques Y = [Y0 , Y1 , L , Yl ] ∈ ℜ ( m×n )×( l +1) , Yi ∈ ℜ mxn , i = 0,1, L, l .
Inicializar α y β con los valores dados en la Tabla 2.4 (página 55)
[ A11 , A12 , A21 , A22 ] = data (t ) ; Y0 = X 0 ; j = 0
Para i = 0 : l − 1
3.1
∆t = ti +1 − ti
3.2 j = j + 1 ; p = min(r , j )
3.3
Para k = p : −1 : 2
3.3.1 X (1 : m,1 : n, k ) = X (1 : m,1 : n, k )
3.4 X (1 : m,1 : n,1) = Yi ; C0 = α p1 X (1 : m,1 : n,1)
3.5
3.6
3.7
3.8
3.9
Para k = 2 : p
3.5.1 C0 = C0 + α pk X (1 : m,1 : n, k )
C11 = ∆tβ r A11 + 0.5I n ; C12 = ∆tβ r A12 ; C 22 = ∆tβ r A22 − 0.5I n
k =0
Mientras k < maxiter (método de Newton)
3.8.1 k = k + 1
3.8.2 A = C 22 − Yi C12
3.8.3 B = −C0 + Yi − ∆tβ (r1 )( A21 + A22Yi − Yi A11 − Yi A12Yi )
3.8.4 ∆Y = dgesyl ( A, B, C )
3.8.5 Si norm(∆Y ) < tol
3.8.5.1 Salir fuera del bucle
3.8.6 Yi +1 = Yi + ∆Y
Si k = = maxiter
3.9.1 error (no hay convergencia)
Algoritmo 5.7: Resolución de EDMRs con coeficientes constantes mediante el método
BDF.
Una breve descripción de los algoritmos implementados y de sus parámetros
característicos aparece a continuación.
• dgedmrbdv y dgedmrbdc: Resuelven EDMRs mediante el método BDF.
− r: orden del método BDF.
− tol: tolerancia utilizada en el método de Newton.
− maxiter: número máximo de iteraciones utilizado en el método Newton.
• dgedmrlpv y dgedmrlpc: Resuelven EDMRs, de coeficientes variables y de
coeficientes constantes, mediante el método de linealización a trozos basado en
los aproximantes diagonales de Padé de la función exponencial.
248
Capítulo 5: Resultados Experimentales
− q: grado de los polinomios de la aproximación diagonal de Padé de la función
exponencial.
• dgedmrlcv y dgedmrlcc: Resuelven EDMRs, de coeficientes variables y de
coeficientes constantes, mediante el método de linealización a trozos basado en la
ecuación conmutante.
− q: grado de los polinomios de la aproximación diagonal de Padé de la función
exponencial.
• dgedmrlkv y dgedmrlkc: Resuelven EDMRs, de coeficientes variables y de
coeficientes constantes, mediante el método de linealización a trozos basado en
los subespacios de Krylov.
− p: dimensión del subespacio de Krylov.
− tol: tolerancia en el método de los subespacio de Krylov.
− q: grado de los polinomios de la aproximación diagonal de Padé de la función
exponencial.
Para cada caso de estudio se han determinado los valores de los parámetros
característicos que ofrecen mayor precisión con un menor coste computacional,
habiéndose realizado tres tipos de pruebas:
•
Fijar el tamaño del problema y el instante de tiempo, variando el incremento de
tiempo.
•
Fijar el tamaño del problema y el incremento de tiempo, variando el instante de
tiempo.
•
Fijar el instante de tiempo y el incremento de tiempo, variando el tamaño del
problema.
Para cada prueba se muestran:
•
Tabla que contiene los errores relativos cometidos.
•
Tabla con los costes computacionales en flops o tiempos de ejecución en
segundos.
•
Tabla en la que se presentan la relación entre el coste computacional del
algoritmo basado en el método BDF y los correspondientes a los algoritmos
basados en la linealización a trozos.
•
Gráfica que muestra la relación entre el coste computacional del algoritmo
basado en el método BDF y los correspondientes a los algoritmos basados en la
linealización a trozos.
5.5.1 EDMRs con Coeficientes Constantes
Problema 5.8: El primer caso de estudio de EDMRs con coeficientes constantes
proviene de un problema de ecuaciones diferenciales con condiciones de contorno que
puede verse en [Prue86]. La EDMR está definida para t ≥ 0 mediante las matrices
coeficiente
0⎤
0⎤
⎡ 0
⎡ 0 1⎤
⎡ 0 1⎤
⎡ 0
A11 = ⎢
, A12 = ⎢
, A21 = ⎢
, A22 = ⎢
⎥
⎥
⎥
⎥,
⎣− 100 − 1⎦
⎣100 0⎦
⎣10 0⎦
⎣− 10 − 1⎦
249
Capítulo 5: Resultados Experimentales
y la condición inicial
⎡ 0 0⎤
X (0) = ⎢
⎥.
⎣ − 1 0⎦
La solución aproximada de la EDMR es
⎡1 0.110⎤
X =⎢
⎥,
⎣0 − 0.1 ⎦
( 5.2 )
siempre que el valor de t sea elevado.
Los valores elegidos para los parámetros característicos se muestran a continuación.
•
dgedmrbdc: r=3, tol=1e-6, maxiter=100.
•
dgedmrlpc: q=1.
•
dgedmrlcc: q=1.
•
dgedmrlkc: p=3, tol=1e-6, q=1.
En la primera prueba se considera t=1 y se varía el incremento de tiempo ∆t.
∆t=0.1
Er
∆t=0.05
∆t=0.01
∆t=0.005
∆t=0.001
∆t=0.0005
dgedmrbdc 2.450e-01 9.783e-02 5.439e-03 1.399e-03 1.338e-04 1.803e-04
dgedmrlpc
1.243e-01 3.284e-02 1.076e-03 2.694e-04 3.883e-05 3.817e-05
dgedmrlcc
1.229e-01 2.857e-02 8.464e-04 2.694e-04 3.883e-05 3.817e-05
dgedmrlkc
7.258e-02 1.727e-02 7.122e-04 1.810e-04 3.831e-05 3.821e-05
Tabla 5.67: Errores relativos en el instante de tiempo t=1,
variando el incremento de tiempo ∆t.
∆t=0.1 ∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
Flops
dgedmrbdc 30498
38816
150240
287912
1214363
2335679
dgedmrlpc
4667
8101
36995
73981
370423
740975
dgedmrlcc
9171
17517
87948
173892
872894
1740458
dgedmrlkc
5899
10705
52840
105742
526430
1037864
Tabla 5.68: Número de flops en el instante de tiempo t=1,
variando el incremento de tiempo ∆t.
250
Capítulo 5: Resultados Experimentales
∆t=0.1 ∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
F/Fi
dgedmrlpc 6.535
4.792
4.061
3.892
3.278
3.152
dgedmrlcc 3.325
2.216
1.708
1.656
1.391
1.342
dgedmrlkc 5.170
3.626
2.843
2.723
2.307
2.250
Tabla 5.69: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
t=1 y variar el incremento de tiempo ∆t.
Flops(dgedmrbdc )/Flops(dgedmrlpc )
Flops(dgedmrbdc )/Flops(dgedmrlcc )
Flops(dgedmrbdc )/Flops(dgedmrlk c )
6.5
6
5.5
5
F/Fi
4.5
4
3.5
3
2.5
2
1.5
1
0.1
0.05
0.01
0.005
0.001
0.0005
∆t
Figura 5.21: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
t=1 y variar ∆t.
En la segunda prueba se considera ∆t=0.1 y se varía el tiempo t.
251
Capítulo 5: Resultados Experimentales
t=5
Er
t=10
t=15
t=20
t=25
t=30
dgedmrbdc 5.727e-03 3.884e-05 9.581e-06 9.581e-06 9.581e-06 9.581e-06
dgedmrlpc
2.556e-03 1.724e-05 1.161e-07 7.812e-10 5.258e-12 3.561e-14
dgedmrlcc
2.523e-03 1.702e-05 1.146e-07 7.713e-10 5.191e-12 3.498e-14
dgedmrlkc
1.417e-03 9.520e-06 6.389e-08 4.290e-10 2.887e-12 1.972e-14
Tabla 5.70: Errores relativos al considerar ∆t=0.1 y variar el
tiempo t.
Flops
t=5
t=10
t=15
t=20
t=25
t=30
dgedmrbdc 94799 159837 200219 231569 262919 294269
dgedmrlpc
22187 44087
65987
87887
dgedmrlcc
44074 88043
132908 176516 219373 262641
dgedmrlkc
20057 35407
50407
68071
109787 131687
97279
126703
Tabla 5.71: Número de flops al considerar ∆t=0.1 y variar el
tiempo t.
F/Fi
t=5
t=10
t=15
t=20
t=25
t=30
dgedmrlpc 4.273 3.625 3.034 2.635 2.395 2.235
dgedmrlcc 2.151 1.815 1.506 1.312 1.199 1.120
dgedmrlkc 4.726 4.514 3.972 3.402 2.703 2.323
Tabla 5.72: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
∆t=0.1 y variar el tiempo t.
252
Capítulo 5: Resultados Experimentales
5
Flops(dgedmrbdc )/Flops(dgedmrlpc )
Flops(dgedmrbdc )/Flops(dgedmrlcc )
Flops(dgedmrbdc )/Flops(dgedmrlk c )
4.5
4
F/Fi
3.5
3
2.5
2
1.5
1
5
10
15
20
25
30
t
Figura 5.22: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
∆t=0.1 y variar el tiempo t.
De los resultados obtenidos se pueden extraer las siguientes conclusiones:
• A medida que se incrementa el tiempo, los errores relativos cometidos por los
algoritmos basados en la linealización son menores que el correspondiente al
algoritmo basado en el método BDF (dgedmrbdc).
• Los algoritmos basados en la linealización a trozos tienen un coste computacional
menor que el correspondiente al método BDF (dgedmrbdc), destacando entre ellos
el basado en los subespacios de Krylov (dgedmrlpc), seguido por el basado en los
aproximantes diagonales de Padé (dgedmrlpc).
Problema 5.9: El segundo caso de estudio de EDMRs con coeficientes constantes
([Meyer73]) consiste en la EDMR definida por
A11 = A22 = 0 n , A12 = A21 = αI n , X 0 = 0 n ,
donde el tamaño del problema puede hacerse tan grande como se quiera, siendo α > 0
un parámetro característico del problema.
La solución a este problema está dada por
[
X (t ) = α ( X 0 + I )eαt − α ( X 0 − I )e −αt
] [α ( X
−1
0
]
+ I )eαt + α ( X 0 − I )e −αt ,
lo que permite determinar los errores cometidos en la resolución de la ecuación.
Los valores elegidos para los parámetros característicos en este caso de estudio se
muestran a continuación.
•
dgedmrbdc: r=2, tol=1e-6, maxiter=100.
•
dgedmrlpc: q=1.
253
Capítulo 5: Resultados Experimentales
•
dgedmrlcc: q=1.
•
dgedmrlkc: p=2, tol=1e-6, q=1.
En la primera prueba se comparan los cuatro algoritmos al considerar n=2 y t=1,
variando el incremento de tiempo ∆t.
∆t=0.1
Er
∆t=0.05
∆t=0.01
∆t=0.005
∆t=0.001
∆t=0.0005
dgedmrbdc 1.551e-03 3.241e-04 3.137e-05 7.862e-06 3.151e-07 7.880e-08
dgedmrlpc
1.552e-03 3.825e-04 1.513e-05 3.779e-06 1.510e-07 3.774e-08
dgedmrlcc
1.552e-03 3.825e-04 1.513e-05 3.779e-06 1.510e-07 3.774e-08
dgedmrlkc
1.845e-03 4.599e-04 1.838e-05 4.595e-06 1.838e-07 4.595e-08
Tabla 5.73: Errores relativos para n=2 y t=1, variando el
incremento de tiempo ∆t.
∆t=0.1 ∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
Flops
dgedmrbdc 13519
26147
87427
174827
874027
1748027
dgedmrlpc
2385
4765
23805
47605
238005
476005
dgedmrlcc
4853
10123
52283
104983
526583
1053583
dgedmrlkc
2874
5734
28614
57214
286014
572014
Tabla 5.74: Número de flops para n=2 y t=1, variando el
incremento de tiempo ∆t.
F/Fi
∆t=0.1 ∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
dgedmrlpc 5.668
5.487
3.673
3.672
3.672
3.672
dgedmrlcc 2.786
2.583
1.672
1.665
1.660
1.659
dgedmrlkc 4.704
4.560
3.055
3.056
3.056
3.056
Tabla 5.75: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
n=2, t=1 y variar el incremento de tiempo ∆t.
254
Capítulo 5: Resultados Experimentales
Flops(dgedmrbdc )/Flops(dgedmrlpc )
Flops(dgedmrbdc )/Flops(dgedmrlcc )
Flops(dgedmrbdc )/Flops(dgedmrlk c )
5.5
5
4.5
F/Fi
4
3.5
3
2.5
2
1.5
0.1
0.05
0.01
0.005
0.001
0.0005
∆t
Figura 5.23: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
∆t=0.1 y variar el tiempo t.
En la segunda prueba se comparan los cuatro algoritmos para n=2 y ∆t=0.1, variando el
instante t de tiempo.
t=5
Er
t=10
t=15
t=20
t=25
t=30
dgedmrbdc 9.511e-06 4.718e-06 4.722e-06 4.722e-06 4.722e-06 4.722e-06
dgedmrlpc
1.228e-06 8.956e-11 5.662e-15 2.220e-16 2.220e-16 2.220e-16
dgedmrlcc
1.228e-06 8.956e-11 5.662e-15 2.220e-16 2.220e-16 2.220e-16
dgedmrlkc
2.994e-06 2.674e-10 1.799e-14 2.220e-16 2.220e-16 2.220e-16
Tabla 5.76: Errores relativos para n=2 y ∆t=0.1, variando el
tiempo t.
255
Capítulo 5: Resultados Experimentales
t=5
Flops
t=10
t=15
t=20
t=25
t=30
dgedmrbdc 54095 82243 104343 126443 148543 170643
dgedmrlpc
11905 23805 35705
47605
59505
dgedmrlcc
25933 52283 78633
104983 131333 157683
dgedmrlkc
14314 28614 42914
57214
71514
71405
85814
Tabla 5.77: Número de flops para n=2 y ∆t=0.1, variando el
tiempo t.
F/Fi
t=5
t=10
t=15
t=20
t=25
t=30
dgedmrlpc 4.544 3.455 2.922 2.656 2.496 2.390
dgedmrlcc 2.086 1.573 1.327 1.204 1.131 1.082
dgedmrlkc 3.779 2.874 2.431 2.210 2.077 1.989
Tabla 5.78: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
n=2, ∆t=0.1 y variar el tiempo t.
5
Flops(dgedmrbdc )/Flops(dgedmrlpc )
Flops(dgedmrbdc )/Flops(dgedmrlcc )
Flops(dgedmrbdc )/Flops(dgedmrlk c )
4.5
4
F/Fi
3.5
3
2.5
2
1.5
1
5
10
15
20
25
30
t
Figura 5.24: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
n=2, ∆t=0.1 y variar el tiempo.
256
Capítulo 5: Resultados Experimentales
En la tercera prueba se comparan los cuatro algoritmos considerando t=1, ∆t=0.1, y
variar el tamaño n del problema.
n=5
Er
n=10
n=15
n=20
n=25
n=30
dgedmrbdc 1.551e-03 1.551e-03 1.551e-03 1.551e-03 1.551e-03 1.551e-03
dgedmrlpc
1.552e-03 1.552e-03 1.552e-03 1.552e-03 1.552e-03 1.552e-03
dgedmrlcc
1.552e-03 1.552e-03 1.552e-03 1.552e-03 1.552e-03 1.552e-03
dgedmrlkc
1.845e-03 1.845e-03 1.845e-03 1.845e-03 1.845e-03 1.845e-03
Tabla 5.79: Errores relativos para t=1 y ∆t=0.1, variando el
tamaño n del problema.
n=5
Flops
n=10
n=15
n=20
n=25
n=30
dgedmrbdc 138530 906335 2830190 6437095 12254050 20808055
dgedmrlpc
25086
170161 540286
1240461 2375686
4050961
dgedmrlcc
48962
314197 972482
2200817 4176202
7075637
dgedmrlkc
23907
153402 478947
1090542 2078187
3531882
Tabla 5.80: Número de flops para t=1 y ∆t=0.1, variando el
tamaño n del problema.
F/Fi
n=5
dgedmrlpc 5.84
n=10 n=15 n=20 n=25 n=30
5.69
5.63
5.60
5.58
5.57
dgedmrlcc 3.16 3.21
3.23
3.23
3.24
3.24
dgedmrlkc 6.48 6.47
6.46
6.45
6.45
6.44
Tabla 5.81: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
t=1, ∆t=0.1 y variar el tamaño n del problema.
257
Capítulo 5: Resultados Experimentales
6
5.5
5
Flops(dgedmrbdc)/Flops(dgedmrlpc)
Flops(dgedmrbdc)/Flops(dgedmrlcc)
Flops(dgedmrbdc)/Flops(dgedmrlkc)
F/Fi
4.5
4
3.5
3
2.5
5
10
15
20
25
30
n
Figura 5.25: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
n=2, ∆t=0.1 y variar el tamaño n del problema.
Para comprobar el comportamiento de los algoritmos cuando el tamaño de la matriz es
elevado, se han realizado pruebas con las implementaciones FORTRAN para tamaños
del problema 500 y 1000. A continuación se presentan los resultados obtenidos en
cuanto a precisión y tiempos de ejecución en segundos.
Er
n=500
n=1000
dgedmrbdc 2.1568E-05 2.1568E-05
dgedmrlpc
1.2019E-05 1.2019E-05
dgedmrlcc
1.2019E-05 1.2019E-05
dgedmrlkc
1.9543E-05 1.9543E-05
Tabla 5.82: Errores relativos para t=1 y ∆t=0.01, variando el
tamaño n del problema.
258
Capítulo 5: Resultados Experimentales
Te
n=500
n=1000
dgedmrbdc 449.07 6544
dgedmrlpc
73.335 498.42
dgedmrlcc
189.91 3128.5
dgedmrlkc
42.062 350.02
Tabla 5.83: Tiempos de ejecución, en segundos, al considerar
t=1, ∆t=0.01 y variar el tamaño n del problema.
Te/Tei
n=500 n=1000
dgedmrlpc 6,12
13,13
dgedmrlcc 2,36
2,09
dgedmrlkc 10,68
18,70
Tabla 5.84: Relación entre el tiempo de ejecución (Te) de la
implementación basada en el método BDF
(dgedmrbdc) y el tiempo de ejecución (Tei) de las
implementaciones basadas en la linealización a
trozos, al considerar t=1, ∆t=0.01 y variar el
tamaño n del problema.
De los resultados obtenidos se pueden extraer las siguientes conclusiones:
• A medida que se incrementa el tiempo, los errores relativos cometidos por los
algoritmos basados en la linealización a trozos se hacen más pequeños que el
correspondiente al método BDF (dgedmrbdc).
• Los algoritmos que utilizan linealización a trozos tienen un coste computacional
menor que el correspondiente al método BDF (dgedmrbdc).
− Cuando se disminuye el incremento de tiempo ∆t, la razón de flops de esos
algoritmos respecto al basado en el método BDF va disminuyendo hasta llegar
a un incremento de 0.01, a partir del cual dicha razón apenas varía.
− Cuando se aumenta el tiempo, la razón de flops de esos algoritmos respecto al
basado en el método BDF va disminuyendo, a costa de alcanzar una mayor
precisión.
− Cuando se aumenta el tamaño del problema, la razón de flops de esos
algoritmos respecto al basado en el método BDF es prácticamente constante.
− Para tamaños elevados del problema, los algoritmos que utilizan la
linealización a trozos tienen tiempos de ejecución menores que el
correspondiente al método BDF.
• El menor coste computacional corresponde al algoritmo basado en la linealización
a trozos mediante los subespacios de Krylov (dgedmrlkc), seguido de cerca por el
259
Capítulo 5: Resultados Experimentales
algoritmo basado en la linealización a trozos mediante los aproximantes
diagonales de Padé (dgedmrlpc).
• El menor tiempo de ejecución corresponde a la implementación basada en
linealización a trozos mediante los subespacios de Krylov (dgedmrlkc), seguida
muy de cerca por la implementación basada en la linealización a trozos mediante
los aproximantes diagonales de Padé (dgedmrlpc). Los tiempos de ejecución de
dichas rutinas han sido mucho menores que el tiempo de ejecución de la
implementación basada en el método BDF (dgedmrbdc).
Problema 5.10: El tercer caso de estudio de EDMRs con coeficientes constantes
([ChAL90]) corresponde a una EDMR no simétrica definida como
X ' (t ) = X (t ) + T2k X (t ) − X (t )T2k X (t ) + k 2T2k ; X (0) = I 2k , t ≥ 0.
siendo X (t ) , T2k ∈ ℜ 2 k y a ∈ ℜ . La matriz T2k se define inductivamente
⎡− 1 1⎤
T2 = ⎢ 2 ⎥ ,
⎣ a 1⎦
⎡ − T k −1
T2k = ⎢ 2 2
⎣a T2k −1
T2k −1 ⎤
, k ≥ 2.
T2k −1 ⎥⎦
La solución analítica de la ecuación anterior es
X (t ) = I 2 k +
donde ω = (a 2 + 1)
k +1
2
(a 2 + 1)
ω
tanh(ωt )T2 k ,
.
Los valores elegidos para los parámetros característicos se muestran a continuación.
•
dgedmrbdc: r=2, tol=1e-6, maxiter=100.
•
dgedmrlpc: q=1.
•
dgedmrlcc: q=1.
•
dgedmrlkc: p=2, tol=1e-6, q=2.
En la primera prueba se comparan los cuatro algoritmos al considerar n=2, t=1 y variar
el incremento de tiempo ∆t.
∆t=0.1
Er
∆t=0.05
∆t=0.01
∆t=0.005
∆t=0.001
∆t=0.0005
dgedmrbdc 3.547e-04 2.993e-05 1.545e-07 1.029e-08 4.109e-09 1.043e-09
dgedmrlpc
2.657e-05 7.145e-06 2.846e-07 7.088e-08 2.825e-09 7.060e-10
dgedmrlcc
2.755e-05 7.190e-06 2.846e-07 7.088e-08 2.825e-09 7.060e-10
dgedmrlkc
3.139e-05 1.649e-05 7.038e-07 1.763e-07 7.057e-09 1.764e-09
Tabla 5.85: Errores relativos para n=2 y t=1, variando el
incremento de tiempo ∆t.
260
Capítulo 5: Resultados Experimentales
∆t=0.1 ∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
Flops
dgedmrbdc 19664
29578
120215
228289
992986
1985986
dgedmrlpc
2790
5102
27035
57801
321771
648317
dgedmrlcc
4940
10228
53422
117426
653121
1285987
dgedmrlkc
2987
5735
28615
57215
286015
572015
Tabla 5.86: Número de flops para n=2 y t=1, variando el
incremento de tiempo ∆t.
∆t=0.1 ∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
F/Fi
dgedmrlpc 7.048
5.797
4.447
3.950
3.086
3.063
dgedmrlcc 3.981
2.892
2.250
1.944
1.520
1.544
dgedmrlkc 6.583
5.157
4.201
3.990
3.472
3.472
Tabla 5.87: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
n=2, t=1 y variar el incremento de tiempo ∆t.
Flops(dgedmrbdc )/Flops(dgedmrlpc )
Flops(dgedmrbdc )/Flops(dgedmrlcc )
Flops(dgedmrbdc )/Flops(dgedmrlk c )
7
6.5
6
5.5
F/Fi
5
4.5
4
3.5
3
2.5
2
1.5
1
0.1
0.05
0.01
0.005
0.001
0.0005
∆t
Figura 5.26: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
∆t=0.1 y variar el tiempo t.
261
Capítulo 5: Resultados Experimentales
En la segunda prueba se comparan los cuatro algoritmos al considerar n=2 y ∆t=0.1, y
variar el tiempo t.
t=5
Er
t=10
t=15
t=20
t=25
t=30
dgedmrbdc 1.067e-07 1.067e-07 1.067e-07 1.067e-07 1.067e-07 1.067e-07
dgedmrlpc
9.233e-18 9.233e-18 9.233e-18 9.233e-18 9.233e-18 9.233e-18
dgedmrlcc
7.648e-18 7.648e-18 7.648e-18 7.648e-18 7.648e-18 7.648e-18
dgedmrlkc
3.376e-18 3.376e-18 3.376e-18 3.376e-18 3.376e-18 3.376e-18
Tabla 5.88: Errores relativos para n=2 y ∆t=0.1, variando el
tiempo t.
Flops
t=5
t=10
t=15
t=20
t=25
t=30
dgedmrbdc 43800 69100 94400 119700 145000 170300
dgedmrlpc
12692 24542 36392 48242
60092
dgedmrlcc
26198 52548 78898 105248 131598 157948
dgedmrlkc
12703 17953 23203 28453
33703
71942
38953
Tabla 5.89: Número de flops para n=2 y ∆t=0.1, variando el
tiempo t.
F/Fi
t=5
t=10
t=15
t=20
t=25
t=30
dgedmrlpc 3.451 2.816 2.594 2.481 2.413 2.367
dgedmrlcc 1.672 1.315 1.196 1.137 1.102 1.078
dgedmrlkc 3.448 3.849 4.068 4.207 4.302 4.372
Tabla 5.90: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
n=2, ∆t=0.1 y variar el tiempo t.
262
Capítulo 5: Resultados Experimentales
4.5
4
3.5
Flops(dgedmrbdc )/Flops(dgedmrlpc )
Flops(dgedmrbdc )/Flops(dgedmrlcc )
Flops(dgedmrbdc )/Flops(dgedmrlk c )
F/Fi
3
2.5
2
1.5
1
5
10
15
20
25
30
t
Figura 5.27: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
n=2, ∆t=0.1 y variar el tiempo.
En la tercera prueba se comparan los cuatro algoritmos al considerar t=1 y ∆t=0.1, y
variar el tamaño n del problema.
n=2
Er
n=4
n=8
n=16
n=32
dgedmrbdc 3.547e-04 7.562e-05 1.749e-05 8.870e-06 1.197e-08
dgedmrlpc
2.657e-05 5.455e-10 7.497e-18 2.057e-17 5.686e-17
dgedmrlcc
2.755e-05 5.377e-10 3.193e-17 2.010e-17 5.395e-17
dgedmrlkc
3.139e-05 5.377e-10 3.192e-17 2.000e-17 5.542e-17
Tabla 5.91: Errores relativos para t=1 y ∆t=0.1, variando el
tamaño n del problema.
263
Capítulo 5: Resultados Experimentales
n=2
Flops
n=4
n=8
n=16
n=32
dgedmrbdc 19664 161923 1426730 13748067 124472608
dgedmrlpc
2790
23548
273024
3062132
32756918
dgedmrlcc
4940
30462
224468
1646839
13805349
dgedmrlkc
2987
13907
83587
576243
4265235
Tabla 5.92: Número de flops para t=1 y ∆t=0.1, variando el
tamaño n del problema.
n=2
n=8
n=16
n=32
dgedmrlpc 7.048 6.876
5.226
4.490
3.800
dgedmrlcc 3.981 5.316
6.356
8.348
9.016
F/Fi
n=4
dgedmrlkc 6.583 11.643 17.069 23.858 29.183
Tabla 5.93: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
t=1, ∆t=0.1 y variar el tamaño n del problema.
30
25
20
F/Fi
Flops(dgedmrbdc)/Flops(dgedmrlpc)
Flops(dgedmrbdc)/Flops(dgedmrlcc)
Flops(dgedmrbdc)/Flops(dgedmrlkc)
15
10
5
0
0
5
10
15
20
25
30
35
n
Figura 5.28: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdc)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
n=2, ∆t=0.1 y variar el tamaño n del problema.
264
Capítulo 5: Resultados Experimentales
Para comprobar el comportamiento de las implementaciones en FORTRAN cuando el
tamaño de la matriz es elevado, se han realizado pruebas con un tamaño del problema
igual a 512. A continuación se presentan los resultados obtenidos en cuanto a precisión
y tiempos de ejecución en segundos.
n=512
Er
dgedmrbdc 5.8356e-07
dgedmrlpc
1.9944e-15
dgedmrlcc
9.6766e-15
dgedmrlkc
9.9517e-15
Tabla 5.94: Errores relativos para t=1, ∆t=0.1 y n=512.
Te
n=512
dgedmrbdc 47870.00
dgedmrlpc
579.98
dgedmrlcc
456.08
dgedmrlkc
136.17
Tabla 5.95: Tiempos de ejecución en segundos, considerando
t=1, ∆t=0.1 y n=512.
Te/Tei
n=512
dgedmrlpc 82,54
dgedmrlcc 104,96
dgedmrlkc 351,55
Tabla 5.96: Relación entre el tiempo de ejecución (Te) de la
implementación basada en el método BDF
(dgedmrbdc) y el tiempo de ejecución (Tei) de las
implementaciones basadas en la linealización a
trozos, al considerar t=1, ∆t=0.01 y n=512.
De los resultados obtenidos se pueden extraer las siguientes conclusiones:
• Los errores relativos cometidos por algoritmos basados en la linealización a
trozos, son mucho menores que los errores relativos cometidos por el algoritmo
basado en el método BDF (dgedmrbdc).
265
Capítulo 5: Resultados Experimentales
− A medida que se incrementa el tiempo, los errores relativos cometidos por los
algoritmos basados en la linealización a trozos se hacen más pequeños que los
errores relativos cometidos por el algoritmo basado en el método BDF
(dgedmrbdc).
− A medida que se aumenta el tamaño del problema, los errores relativos
cometidos por los algoritmos basados en la linealización a trozos se hacen más
pequeños que los errores relativos cometidos por el algoritmo basado en el
método BDF (dgedmrbdc).
• Los algoritmos que utilizan linealización a trozos tienen un coste computacional
menor que el correspondiente al método BDF (dgedmrbdc).
− Cuando se disminuye el incremento de tiempo, la razón de flops de esos
algoritmos respecto al basado en el método BDF, va disminuyendo hasta
llegar a un incremento de 0.001, a partir del cual dicha razón apenas varía.
− Cuando se aumenta el tiempo, la razón de flops del algoritmo de linealización
basado en los subespacios de Krylov con respecto al basado en el método
BDF, aumenta. Para los otros dos algoritmos de linealización esa razón
disminuye ligeramente.
− Cuando se aumenta el tamaño del problema, la razón de flops de los
algoritmos de linealización basados en los subespacios de Krylov (dgedmrlkc)
y en la ecuación conmutante (dgedmrlpc), con respecto al basado en el método
BDF, aumentan. Para el otro algoritmo de linealización (dgedmrlcc) esa razón
disminuye ligeramente.
• Los tiempos de ejecución de las implementaciones basadas en la técnica de
linealización a trozos han sido mucho menores que el tiempo de ejecución de la
implementación basada en el método BDF (dgedmrbdc). Entre estas
implementaciones destaca la basada en los subespacios de Krylov (dgedmrlkc),
pues su tiempo de ejecución es mucho menor que la implementación del método
BDF (la relación de tiempos es aproximadamente igual a 351 para una dimensión
igual a 512).
5.5.2 EDMRs con Coeficientes Variables
Problema 5.11: El primer caso de estudio de EDMRs con coeficientes variables
corresponde a un problema de tipo test, ampliamente utilizado, conocido como “knee
problem” ([DEES82]). Se trata de una EDMR definida como
εx' = ε − tx + x 2 , 0 < ε << 1 , x(−1) = −1 ,
asociada a la matriz de coeficientes variables
⎡ a (t ) a12 (t ) ⎤ ⎡t / ε
A(t ) = ⎢ 11
⎥=⎢
⎣a 21 (t ) a 22 (t )⎦ ⎣ 1
− 1/ ε ⎤
, n = m = 1, −1 ≤ t ≤ 1 .
0 ⎥⎦
La solución x = t es estable para valores anteriores a 0 y la solución x ≅ 0 es estable a
partir de tiempos mayores o iguales a 0.
En las pruebas realizadas se ha considerado un valor ε igual a 1e-4. Los valores de los
parámetros característicos de cada método aparecen a continuación.
•
dgedmrbdv: r=2, tol=1.0e-6, maxiter=100.
266
Capítulo 5: Resultados Experimentales
•
dgedmrlpv: q=1.
•
dgedmrlcv: q=1.
•
dgedmrlkv: p=3, tol=1.0e-5, q=1.
En la primera prueba se comparan los cuatro algoritmos considerando t=1 y variando el
incremento de tiempo entre 0.1 y 0.05, ya que para valores menores la precisión
obtenida es la misma.
∆t=0.1
Er
∆t=0.05
dgedmrbdv 5.001e-05 5.001e-05
dgedmrlpv
Error
4.917e-05
dgedmrlcv
4.391e-05 4.988e-05
dgedmrlkv
4.326e-05 4.988e-05
Tabla 5.97: Errores relativos para t=1, variando el incremento
de tiempo ∆t.
Flops
∆t=0.1 ∆t=0.05
dgedmrbdv 7203
12140
dgedmrlpv
3426
8145
dgedmrlcv
5049
9704
dgedmrlkv
18728
35018
Tabla 5.98: Número de flops para t=1, variando el incremento
de tiempo ∆t.
F/Fi
∆t=0.1 ∆t=0.05
dgedmrlpv 2.102
1.490
dgedmrlcv 1.427
1.251
dgedmrlkv 0.385
0.347
Tabla 5.99: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdv)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
t=1 y variar el incremento de tiempo ∆t.
267
Capítulo 5: Resultados Experimentales
Flops(dgedmrbdv)/Flops(dgedmrlpv)
Flops(dgedmrbdv)/Flops(dgedmrlcv)
Flops(dgedmrbdv)/Flops(dgedmrlk v)
2
F/Fi
1.5
1
0.5
0.1
0.05
∆t
Figura 5.29: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdv)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
t=1 y variar el incremento de tiempo ∆t.
En la segunda prueba se comparan los cuatro algoritmos para ∆t=0.001, variando el
instante t de tiempo.
t=5
Er
t=10
t=15
t=20
t=25
t=30
dgedmrbdv 1.054e-05 5.538e-06 3.538e-06 2.538e-06 2.538e-06 2.538e-06
dgedmrlpv
1.000e-05 5.000e-06 3.333e-06 2.500e-06 2.000e-06 1.667e-06
dgedmrlcv
1.000e-05 5.000e-06 3.333e-06 2.500e-06 2.000e-06 1.667e-06
dgedmrlkv
1.000e-05 5.000e-06 3.333e-06 2.500e-06 2.000e-06 1.667e-06
Tabla 5.100: Errores relativos considerando
variando el tiempo t.
∆t=0.001
y
268
Capítulo 5: Resultados Experimentales
t=5
Flops
t=10
t=15
t=20
t=25
t=30
dgedmrbdv 767164
1252569 1737731 2222812
2707812
3192812
dgedmrlpv
830433
1698033 2623233 3593233
4563233
5603633
dgedmrlcv
1380595 2566392 3762989 4967989
6172989
7391186
dgedmrlkv
2700889 5365589 8127489 10964989 14303381 17818899
Tabla 5.101: Número de flops considerando ∆t=0.001 y
variando el tiempo t.
F/Fi
t=5
t=10
t=15
t=20
t=25
t=30
dgedmrlpv 0.924 0.738 0.662 0.619 0.593 0.570
dgedmrlcv 0.556 0.488 0.462 0.447 0.439 0.432
dgedmrlkv 0.284 0.233 0.214 0.203 0.189 0.179
Tabla 5.102: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdv)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
∆t=0.001 y variar el tiempo t.
1
Flops(dgedmrbdv)/Flops(dgedmrlpv)
Flops(dgedmrbdv)/Flops(dgedmrlcv)
Flops(dgedmrbdv)/Flops(dgedmrlk v)
0.9
0.8
0.7
F/Fi
0.6
0.5
0.4
0.3
0.2
0.1
5
10
15
20
25
30
t
Figura 5.30: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdv)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
∆t=0.001 y variar el tiempo t.
269
Capítulo 5: Resultados Experimentales
A partir de las tablas anteriores se pueden extraer las siguientes conclusiones:
• Los algoritmos con menor error relativo corresponden al algoritmo basado en el
método BDF (dgedmrbdv), y a los algoritmos basados en la linealización a trozos
mediante los subespacios de Krylov (dgedmrlkv) y mediante la ecuación
conmutante (dgedmrlcv). En el algoritmo basado en la linealización a trozos
mediante los aproximantes diagonales de Padé (dgedmrlpv) se produce un error
cuando el incremento de tiempo considerado es igual a 0.1.
• Los menores costes computacionales corresponden al algoritmo basado en el
método BDF (dgedmrbdv).
• Los algoritmos más rápidos corresponden a los basados en la linealización a
trozos mediante los aproximantes diagonales de Padé (dgedmrlpv) y mediante la
educación conmutante (dgedmrlcv).
Problema 5.12: El segundo caso de estudio de EDMRs con coeficientes variables
([BrLo87]) proviene de un problema de tipo rígido con valores de contorno. La
correspondiente EDMR tiene como matrices coeficiente a
⎡− t / 2ε
A11 (t ) = ⎢
⎣ 0
0 ⎤
0⎤
⎡1 / 2 1⎤
⎡0 t / 2ε ⎤
⎡1 / ε
, A21 (t ) = ⎢
, A22 (t ) = ⎢
, A12 (t ) = ⎢
,
⎥
⎥
⎥
0⎦
0 ⎥⎦
⎣ 0 1⎦
⎣0
⎣ 0 1/ ε ⎦
siendo 0 < ε << 1 , t ≥ −1 , con valor inicial
⎡0 0 ⎤
X0 = ⎢
⎥.
⎣0 0 ⎦
A medida que t se aleja del cero, la solución se aproxima a la matriz
⎡t / 2
X (t ) = ⎢
⎣ 0
ε⎤
⎥.
ε⎦
En las pruebas realizadas se ha considerado un valor ε igual a 1e-4. Los valores de los
parámetros característicos de cada método aparecen a continuación.
•
dgedmrbdv: r=3, tol=1.0e-14, maxiter=100.
•
dgedmrlpv: q=3.
•
dgedmrlcv: q=1.
•
dgedmrlkv: p=5, tol=1.0e-14, q=1.
En la primera prueba se comparan los cuatro algoritmos al considerar t=1 y variar el
incremento de tiempo.
270
Capítulo 5: Resultados Experimentales
∆t=0.1
∆t=0.05
∆t=0.01
dgedmrbdv 1.414
1.414
2.221e-16 1.112e-16 9.811e-18 2.088e-14
dgedmrlpv
Error
Error
1.511e-07 7.592e-08 9.814e-09 5.285e-09
dgedmrlcv
6.296e-08 2.220e-16 1.110e-16 1.110e-16 1.112e-16 1.119e-16
dgedmrlkv
6.283e-08 4.577e-16
Er
0
∆t=0.005
∆t=0.001
∆t=0.0005
2.047e-16 3.261e-16 7.625e-16
Tabla 5.103: Errores relativos para t=1, variando el incremento
de tiempo ∆t.
∆t=0.1 ∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
Flops
dgedmrbdv
429587
789544
3587274
6860624
dgedmrlpv
324533
570077
1982885
3257621
dgedmrlcv
23235
46671
229231
454631
2240655
4453399
dgedmrlkv
95517
168559
575794
1068339
3986117
7035878
Tabla 5.104: Número de flops para t=1, variando el incremento
de tiempo ∆t.
F/Fi
∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
dgedmrlpv 1.324
1.385
1.809
2.106
dgedmrlcv 1.874
1.737
1.601
1.541
dgedmrlkv 0.746
0.739
0.900
0.975
Tabla 5.105: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdv)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
t=1 y variar el incremento de tiempo ∆t.
271
Capítulo 5: Resultados Experimentales
Flops(dgedmrbdv)/Flops(dgedmrlpv)
Flops(dgedmrbdv)/Flops(dgedmrlcv)
Flops(dgedmrbdv)/Flops(dgedmrlk v)
2
F/Fi
1.5
1
0.01
0.005
0.001
0.0005
∆t
Figura 5.31: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdv)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
t=1 y variar el incremento de tiempo ∆t.
En la segunda prueba se comparan los cuatro algoritmos al considerar n=2, ∆t=0.001 y
variar el tiempo t.
t=0.1
Er
t=0.2
t=0.3
t=0.4
t=0.5
t=0.6
dgedmrbdv 1.776e-06 1.693e-15 1.693e-15 2.772e-16 1.964e-14 5.013e-15
dgedmrlpv
8.942e-05 1.971e-06 1.971e-06 1.490e-06 1.197e-06 2.502e-07
dgedmrlcv
4.671e-12
dgedmrlkv
3.226e-12 1.154e-16 1.154e-16 1.059e-15 2.220e-16 3.706e-15
0
0
1.386e-16 6.933e-18 1.849e-16
Tabla 5.106: Errores relativos para n=2 y ∆t=0.001, variando el
tiempo t.
272
Capítulo 5: Resultados Experimentales
t=0.1
Flops
t=0.2
t=0.3
t=0.4
t=0.5
t=0.6
dgedmrbdv 246065 292485 292485 315695 336187 354867
dgedmrlpv
170291 199275 199275 215825 232375 250493
dgedmrlcv
125493 148329 148329 159835 171357 182879
dgedmrlkv
388879 428862 428862 447606 469102 487842
Tabla 5.107: Número de flops para n=2 y ∆t=0.001, variando el
tiempo t.
t=0.1
F/Fi
t=0.2
t=0.3
t=0.4
t=0.5
t=0.6
dgedmrlpv 1.445 1.468 1.468 1.463 1.447 1.417
dgedmrlcv 1.961 1.972 1.972 1.975 1.962 1.940
dgedmrlkv 0.633 0.682 0.682 0.705 0.717 0.727
Tabla 5.108: Relación entre el número de flops (F) del algoritmo
basado en el método BDF (dgedmrbdv) y el
número de flops (Fi) de los algoritmos basados en
la linealización a trozos, al considera n=2,
∆t=0.001 y variar el tiempo t.
2
1.8
Flops(dgedmrbdv)/Flops(dgedmrlpv)
Flops(dgedmrbdv)/Flops(dgedmrlcv)
Flops(dgedmrbdv)/Flops(dgedmrbk v)
1.6
F/Fi
1.4
1.2
1
0.8
0.1
0.15
0.2
0.25
0.3
0.35
t
0.4
0.45
0.5
0.55
0.6
Figura 5.32: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdv)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
n=2, ∆t=0.001 y variar el tiempo t.
273
Capítulo 5: Resultados Experimentales
A partir de las tablas anteriores se pueden extraer las siguientes conclusiones:
• Los algoritmos con menor error relativo corresponden a los basados en la
linealización a trozos mediante los subespacios de Krylov (dgedmrlkv) y mediante
la ecuación conmutante (dgedmrlcv).
− En el algoritmo basado en el método BDF (dgedmrbdv) se producen grandes
errores para incrementos de tiempo iguales a 0.1 y a 0.05.
− En el método de linealización a trozos basado en los aproximantes diagonales
de Padé (dgedmrlpv) se producen elevados errores cuando los incrementos de
tiempo son iguales a 0.1 y a 0.05, debido a que la norma de la matriz
Jacobiana es elevada, por lo que el cálculo de su exponencial produce un error
de overflow.
• Los algoritmos con menores costes corresponden a los basados en la linealización
a trozos mediante la ecuación conmutante (dgedmrlcv) y mediante los
aproximantes diagonales de Padé (dgedmrlpv).
•
El algoritmo basado en la linealización a trozos mediante los subespacios de
Krylov (dgedmrlkv) tiene un coste computacional mayor que el basado en el
método BDF (dgedmrbdv).
Problema 5.13: El tercer caso de estudio de EDMRs con coeficientes variables
([Choi92]), corresponde a una EDMR definida como
X ' (t ) = − X (t )T2 k (t ) + T2 k (t ) X (t ) − b(t ) X 2 (t ) − b(t ) I 2 k ; X (0) = I 2 k , t ≥ 0.
donde X (t ) ∈ ℜ 2 , y T2 k ∈ ℜ2 está definida como
k
k
⎡ a(t ) b(t ) ⎤
T2 = ⎢
⎥,
⎣− b(t ) a(t )⎦
T2 k = T2 ⊗ I 2 k −1 + I 2 ⊗ T2 k −1 , k ≥ 2 ,
siendo a (t ) = cos t y b(t ) = sen t .
La solución analítica de la ecuación anterior es
X (t ) =
1 + tan(cos t − 1)
I k.
1 − tan(cos t − 1) 2
Los valores de los parámetros característicos de cada método aparecen a continuación.
•
dgedmrbdv: r=3, tol=1.0e-14, maxiter=100.
•
dgedmrlpv: q=2.
•
dgedmrlcv: q=2.
•
dgedmrlkv: p=3, tol=1.0e-14, q=1.
En la primera prueba se comparan los cuatro algoritmos al considerar n=4 (k=2), t=1 y
variar el incremento de tiempo ∆t.
274
Capítulo 5: Resultados Experimentales
∆t=0.1
Er
∆t=0.05
∆t=0.01
∆t=0.005
∆t=0.001
∆t=0.0005
dgedmrbdv 2.018e-02 4.726e-03 2.066e-04 5.217e-05 2.103e-06 5.269e-07
dgedmrlpv
5.335e-03 1.174e-03 5.061e-05 1.277e-05 5.147e-07 1.289e-07
dgedmrlcv
7.419e-02 2.240e-02 1.554e-03 4.563e-04 2.437e-05 6.751e-06
dgedmrlkv
4.718e-03 1.023e-03 4.386e-05 1.106e-05 4.457e-07 1.117e-07
Tabla 5.109: Errores relativos para n=2 y t=1, variando el
incremento de tiempo ∆t.
∆t=0.1
Flops
∆t=0.05 ∆t=0.01
dgedmrbdv 433518 744608
109554
∆t=0.005 ∆t=0.001
∆t=0.0005
2817685 5650073
28126108 55959494
575795
5820995
dgedmrlpv
57102
dgedmrlcv
119068 226544
1254024 2529762
12931608 26110356
dgedmrlkv
48163
477419
4818236
91570
1158595
959731
11654823
9646194
Tabla 5.110: Número de flops para n=4 y t=1, variando el
incremento de tiempo ∆t.
F/Fi
∆t=0.1 ∆t=0.05 ∆t=0.01 ∆t=0.005 ∆t=0.001 ∆t=0.0005
dgedmrlpv 7.592
6.797
4.894
4.877
4.832
4.801
dgedmrlcv 3.641
3.287
2.247
2.233
2.175
2.143
dgedmrlkv 9.001
8.132
5.902
5.887
5.837
5.801
Tabla 5.111: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdv)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
n=4, t=1 y variar el incremento de tiempo ∆t.
275
Capítulo 5: Resultados Experimentales
Flops(dgedmrbdv)/Flops(dgedmrlpv)
Flops(dgedmrbdv)/Flops(dgedmrlcv)
Flops(dgedmrbdv)/Flops(dgedmrlk v)
9
8.5
8
7.5
7
F/Fi
6.5
6
5.5
5
4.5
4
3.5
3
2.5
2
0.1
0.05
0.01
0.005
0.001
0.0005
∆t
Figura 5.33: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdv)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
n=4, ∆t=0.1 y variar el incremento de tiempo ∆t.
En la segunda prueba se comparan los cuatro algoritmos para n=4 (k=2), ∆t=0.1,
variando el instante t de tiempo.
t=5
Er
t=10
t=15
t=20
t=25
t=30
dgedmrbdv 7.687e-02 1.466e-02 1.245e-02 1.836e-02 9.549e-03 2.215e-02
dgedmrlpv
1.153e-02 1.081e-03 7.964e-04 3.157e-04 4.040e-03 1.190e-02
dgedmrlcv
5.057e-01 2.223e-01 2.455e-01 8.954e-01 3.474e-01 7.782e-01
dgedmrlkv
8.781e-03 2.464e-03 5.066e-04 4.081e-05 3.526e-03 1.072e-02
Tabla 5.112: Errores relativos para n=4 y ∆t=0.1, variando el
tiempo t.
276
Capítulo 5: Resultados Experimentales
t=5
Flops
t=10
t=15
t=20
t=25
t=30
dgedmrbdv 1934113 3797375 5680701 7503707 9382353 11245258
dgedmrlpv
296418
594418
885286
dgedmrlcv
584064
1078179 1505781 1938668 2438424 2957326
dgedmrlkv
241197
482487
723781
1178658 1477726 1776762
960212
1201523 1442843
Tabla 5.113: Número de flops para n=4 y ∆t=0.1, variando el
tiempo t.
F/Fi
t=5
t=10
t=15
t=20
t=25
t=30
dgedmrlpv 6.525 6.388 6.417 6.366 6.349 6.329
dgedmrlcv 3.311 3.522 3.773 3.871 3.848 3.803
dgedmrlkv 8.019 7.870 7.849 7.815 7.809 7.794
Tabla 5.114: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdv)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
n=2, ∆t=0.1 y variar el tiempo t.
9
Flops(dgedmrbdv)/Flops(dgedmrlpv)
Flops(dgedmrbdv)/Flops(dgedmrlcv)
Flops(dgedmrbdv)/Flops(dgedmrlk v)
8
F/Fi
7
6
5
4
3
5
10
15
20
25
30
t
Figura 5.34: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdv)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
n=4, ∆t=0.1 y variar el tiempo t.
277
Capítulo 5: Resultados Experimentales
En la tercera prueba se comparan los cuatro algoritmos considerando t=1 y ∆t=0.1,
variando el tamaño n del problema.
n=2
Er
n=4
n=8
n=16
n=32
n=64
dgedmrbdv 2.018e-02 2.018e-02 2.018e-02 2.018e-02 2.018e-02 2.018e-02
dgedmrlpv
5.374e-03 5.335e-03 5.303e-03 5.326e-03 5.497e-03 4.523e-03
dgedmrlcv
3.004e-02 7.419e-02 1.359e-01 2.153e-01 3.126e-01 4.283e-01
dgedmrlkv
4.718e-03 4.718e-03 4.718e-03 4.718e-03 4.718e-03 4.718e-03
Tabla 5.115: Errores relativos para t=1 y ∆t=0.1, variando el
tamaño n del problema.
n=2
Flops
n=4
n=8
n=16
n=32
n=64
dgedmrbdv 28919 433518 1331590 8717740 61494024 463083648
dgedmrlpv
10027 57102
376523
2714671 20575955 194870615
dgedmrlcv
15390 119068 480837
2834634 20135747 149904917
dgedmrlkv
11863 48163
1525323 10347743 75449843
250743
Tabla 5.116: Número de flops para t=1 y ∆t=0.1, variando el
tamaño n del problema.
F/Fi
n=2
n=4
n=8
n=16
n=32
n=64
dgedmrlpv 2.884 7.592 3.537 3.211 2.989 2.376
dgedmrlcv 1.879 3.641 2.769 3.075 3.054 3.089
dgedmrlkv 2.438 9.001 5.311 5.715 5.943 6.138
Tabla 5.117: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdv)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
t=1, ∆t=0.1 y variar el tamaño n del problema.
278
Capítulo 5: Resultados Experimentales
10
Flops(dgedmrbdv)/Flops(dgedmrlpv)
Flops(dgedmrbdv)/Flops(dgedmrlcv)
Flops(dgedmrbdv)/Flops(dgedmrlk v)
9
8
7
F/Fi
6
5
4
3
2
1
0
10
20
30
40
50
60
70
n
Figura 5.35: Relación entre el número de flops (F) del
algoritmo basado en el método BDF (dgedmrbdv)
y el número de flops (Fi) de los algoritmos
basados en la linealización a trozos, al considerar
t=1, ∆t=0.1 y variar el tamaño n del problema.
Para comprobar el comportamiento de las rutinas implementadas cuando el tamaño de la
matriz es elevado, se han realizado pruebas con las implementaciones FORTRAN para
tamaños del problema 512 y 1024.
Los valores elegidos para los parámetros característicos se muestran a continuación.
•
dgedmrbdv: r=2, tol=1e-13, maxiter=100.
•
dgedmrlpv: q=2.
•
dgedmrlcv: q=3.
•
dgedmrlkv: p=3, tol=1e-13, q=1.
A continuación se presentan los resultados obtenidos en cuanto a precisión y tiempos de
ejecución en segundos.
Er
n=512
n=1024
dgedmrbdv 1.1616E-04 1.1616E-04
dgedmrlpv
5.3723E-05 5.4718E-05
dgedmrlcv
5.2306E-03 5.4516E-03
dgedmrlkv
4.4898E-04 44898E-05
Tabla 5.118: Errores relativos para t=1 y ∆t=0.01, variando el
tamaño n del problema.
279
Capítulo 5: Resultados Experimentales
Te
n=512
n=1024
dgedmrbdv 1666.5 65757
dgedmrlpv
194.61 1501.4
dgedmrlcv
2834.5 29099
dgedmrlkv
181.12 1460.3
Tabla 5.119: Tiempos de ejecución en segundos, considerando
t=1, ∆t=0.01 y variar el tamaño n del problema.
Te/Tei
n=512 n=1024
dgedmrlpc 8.56
43.80
dgedmrlcc 0.59
2.26
dgedmrlkc 9.20
45.03
Tabla 5.120: Relación entre el tiempo de ejecución (Te) de la
implementación basada en el método BDF
(dgedmrbdv) y el tiempo de ejecución (Tei) de las
implementaciones basadas en la linealización a
trozos, al considerar t=1, ∆t=0.01 y variar el
tamaño n del problema.
De los resultados obtenidos se pueden extraer las siguientes conclusiones:
•
Los algoritmos con menor error relativo corresponden a los algoritmos basados en la
linealización a trozos mediante los subespacios de Krylov (dgedmrlkv) y mediante
aproximantes diagonales de Padé, seguidos muy de cerca por el algoritmo basado en
el método BDF (dgedmrbdv). Los peores resultados se obtienen para el caso de
linealización a trozos mediante la ecuación conmutante (dgedmrlcv).
•
Los menores costes computacionales corresponden al método de linealización a
trozos basado en los subespacios de krylov (dgedmrlkv), seguido muy de cerca por
el basado en los aproximantes diagonales de Padé (dgedmrlpv). Los mayores costes
computacionales corresponden al algoritmo basado en el método BDF (dgedmrbdv).
•
Para tamaños elevados del problema, las implementaciones basadas en los
algoritmos que utilizan la linealización a trozos tienen tiempos de ejecución mucho
menores que la implementación basada en el método BDF (dgedmrbdv), destacando
la basada en los subespacios de krylov (dgedmrlkv) y la basada los aproximantes
diagonales de Padé (dgedmrlpv).
5.6 Conclusiones
Como se ha podido comprobar a lo largo del desarrollo de este capítulo, se han
realizado un gran número de pruebas para comparar los algoritmos implementados,
280
Capítulo 5: Resultados Experimentales
determinando para cada algoritmo los valores óptimos de sus parámetros característicos.
A continuación se sintetizan los resultados más destacables de las pruebas realizadas.
• Funciones de matrices.
− Los algoritmos basados en los aproximantes diagonales de Padé presentan una
buena precisión. En cuanto a eficiencia destacan las implementaciones
basadas en el método de Paterson-Stockmeyer-Van Loan, eligiendo para ello
un factor adecuado de agrupamiento comprendido entre 3 y 5.
− Los algoritmos basados en la descomposición real de Schur de una matriz son,
en general, más precisos que los métodos basados en aproximantes diagonales
de Padé. En cuanto a eficiencia destacan la implementación que utiliza los
aproximantes diagonales de Padé y la implementación basada en la resolución
por bloques de la Ecuación Conmutante.
− Las implementaciones basadas en los aproximantes diagonales de Padé son
más rápidas que las implementaciones basadas en la descomposición real de
Schur de una matriz.
• Resolución de EDOs.
− Los valores óptimos de los parámetros característicos han sido, en la mayoría
de los casos, valores pequeños. A modo de resumen, se citan a continuación
los valores más habituales.
ƒ
ƒ
ƒ
ƒ
dgeedobdf: r=2, 3; tol=1e-6; maxiter=100.
dgeedolpa-dgeedolpn: q=1.
dgeedolca-dgeedolcn: q=1.
dgeedolpa- dgeedolpn: p=2, 3, 4; tol=1e-6; q=1.
− En las pruebas realizadas sobre EDOs autónomas se ha podido comprobar que
los errores relativos cometidos por los algoritmos basados en los métodos de
linealización a trozos son similares a los cometidos por el algoritmo basado en
el método BDF, aunque en el caso del algoritmo basado en la linealización a
trozos mediante la Ecuación Conmutante este sólo se puede utilizar si la
matriz Jacobiana es invertible y está bien condicionada.
− En las pruebas realizadas sobre EDOs autónomas siempre ha sido posible
encontrar un algoritmo basado en la linealización a trozos que tuviese un coste
computacional menor que el basado en el método BDF. Para problemas de
pequeña dimensión destacan los algoritmos basados en los aproximantes
diagonales de Padé y en la Ecuación Conmutante. Para problemas de mayor
dimensión destaca la implementación basada en los subespacios de Krylov,
por tener un coste computacional menor que los costes computacionales
correspondientes al resto de algoritmos.
− En las pruebas realizadas sobre EDOs no autónomas, se tiene que los errores
relativos cometidos por los algoritmos basados en los métodos de linealización
a trozos son algo menores que los cometidos por el algoritmo basado en el
método BDF, exceptuando el caso del algoritmo basado en el método de
linealización a trozos mediante la Ecuación Conmutante, por necesitar que la
matriz Jacobiana sea invertible y esté bien condicionada.
281
Capítulo 5: Resultados Experimentales
− En las pruebas realizadas sobre EDOs no autónomas siempre ha sido posible
encontrar un método basado en la linealización a trozos que tuviese un coste
computacional menor que el basado en el método BDF. Para problemas de
pequeña dimensión destacan el algoritmo basado en los aproximantes
diagonales de Padé y el basado en la Ecuación Conmutante. Para problemas de
mayor dimensión destaca el algoritmo basado en los subespacios de Krylov.
Cabe destacar, en este sentido, los resultados obtenidos en el tercer caso de
estudio de EDOs no autónomas, al tener que el tiempo de ejecución de la
implementación basada en los subespacios de Krylov es mucho menor que la
implementación basada en los otros métodos.
− Tanto los algoritmos basados en los métodos de linealización a trozos como el
basado en el método BDF presentan un buen comportamiento en problemas de
tipo rígido.
• Resolución de EDMRs.
− Los valores óptimos de los parámetros característicos han sido, en la mayoría
de los casos, valores pequeños. A modo de resumen, se citan a continuación
los valores más habituales.
ƒ
ƒ
ƒ
ƒ
dgedmrbdc: r=2, 3; tol=1e-6, 1e-14; maxiter=100.
dgedmrlpc-dgedmrlpv: q=1,2.
dgedmrlcc-dgedmrlcv: q=1,2,3.
dgedmrlpc-dgedmrlpv: p=2, 3, 5; tol=1e-6, 1e-14; q=1,2.
− En las pruebas realizadas sobre EDMRs con coeficientes constantes se tiene
que los errores relativos cometidos por los cuatro algoritmos son similares,
salvo el segundo caso de estudio en el que el algoritmo basado en el método
BDF y el basado en la linealización a trozos mediante los aproximantes
diagonales de Padé presentan grandes errores, si el incremento de tiempo es
del orden de décimas.
− En las pruebas realizadas sobre EDMRs con coeficientes constantes ha
resultado que los algoritmos basados en la linealización a trozos tienen un
coste computacional menor que el basado en el método BDF. Entre ellos
destacan los algoritmos basados en los aproximantes diagonales de Padé y en
los subespacios de Krilov, sobresaliendo este último cuando se consideran
problemas de gran dimensión.
− El tiempo de ejecución del método de linealización a trozos basado en los
subespacios de Krylov, cuando se aplica sobre EDMRs con coeficientes
constantes de mediana o gran dimensión, es menor que el tiempo de ejecución
del resto de las implementaciones. Cabe destacar, en este sentido, los
resultados obtenidos en el segundo y tercer caso de estudio (Problema 5.9,
Problema 5.10) cuando se considera un tamaño del problema elevado, al tener
que el tiempo de ejecución de la implementación basada en los subespacios de
Krylov ha sido mucho menor que la implementación basada en el método
BDF.
− En las pruebas realizadas sobre EDMRs con coeficientes variables, salvo un
caso de estudio de pequeña dimensión (Problema 5.11), los algoritmos
basados en la linealización a trozos tienen un coste computacional menor que
el basado en el método BDF.
282
Capítulo 5: Resultados Experimentales
ƒ Para problemas de pequeña dimensión destacan los basados en los
aproximantes diagonales de Padé y en la Ecuación Conmutante.
ƒ Para problemas de mayor dimensión destaca el método basado en los
subespacios de Krylov. En este sentido se pueden resaltar los resultados
obtenidos en el tercer caso de estudio de EDMRs con coeficientes variables
cuando se consideran tamaños del problema igual 1024, al tener que el
tiempo de ejecución de la implementación basada en los subespacios de
Krylov ha resultado ser unas cuarenta y cinco veces menor que el tiempo de
ejecución de la implementación basada en el método BDF.
− Tanto los algoritmos basados en la linealización a trozos como los basados en
el método BDF presentan un buen comportamiento en problemas de tipo
rígido.
283
Capítulo 6: Conclusiones y Líneas Futuras de Investigación
Capítulo 6 Conclusiones y Líneas Futuras de
Investigación
6.1 Resumen de Contenidos
En este capítulo se resume el trabajo realizado en esta tesis, describiendo brevemente
los resultados más destacados y perfilando las futuras líneas de investigación. La
segunda sección está dedicada a resumir las aportaciones realizadas en el marco de esta
tesis y los excelentes resultados obtenidos en las diferentes implementaciones. En la
tercera sección se detallan las publicaciones realizadas durante el periodo de realización
de la tesis, muchas de las cuales han servido como base de la misma. En la cuarta
sección se enumeran las posibles líneas de investigación que se pueden abrir a partir de
este trabajo.
6.2 Conclusiones Finales
En el marco de esta tesis se han desarrollado nuevos métodos y algoritmos para el
cálculo de Funciones de Matrices y la aplicación de Funciones de Matrices a la
simulación y la resolución de EDOs y EDMRs.
Para cada algoritmo desarrollado se ha implementado una función en MATLAB y una
rutina en FORTRAN. De este modo se dispone en la actualidad de tres librerías, escritas
en MATLAB y FORTRAN, que permiten calcular Funciones de Matrices y resolver
EDOs y EDMRs.
Las librerías obtenidas tienen las características propias de un software de computación
numérica de calidad: eficientes, de altas prestaciones, portables, robustas y correctas.
Esto ha sido posible al utilizar un ciclo de vida que permite automatizar el desarrollo de
software numérico y disponer de herramientas que lo posibilitan como el entorno
MATLAB y las librerías de computación numérica de altas prestaciones BLAS y
LAPACK.
6.2.1 Funciones de Matrices
Para el cálculo de Funciones de Matrices se han desarrollado dos metodologías
generales, basadas en los aproximantes diagonales de Padé y en la descomposición real
de Schur de una matriz, que calculan eficientemente Funciones de Matrices.
La metodología basada en los aproximantes diagonales de Padé ha permitido poder
calcular funciones especiales de matrices, como las potencias fraccionarias, de una
manera nunca realizada hasta ahora. También se puede destacar, como aspecto
novedoso, el cálculo de la función seno matricial mediante esta metodología. En
general, esta metodología permite calcular funciones analíticas de matrices de manera
eficiente. Esto ha sido posible porque la parte más costosa de los algoritmos basados en
esta metodología (cálculo de la aproximación de Padé) se ha realizado de la manera más
eficiente posible (método de Paterson-Stockmeyer-Van Loan).
285
Capítulo 6: Conclusiones y Líneas Futuras de Investigación
Se han diseñado nuevos algoritmos para el cálculo de Funciones de Matrices que
utilizan la descomposición real de Schur de una matriz como, por ejemplo, el basado en
la diagonalización a bloques de una matriz, los basados en la Ecuación Conmutante
(orientados a columnas, diagonales y a bloques), los basados en la agrupación en cluster
de los valores propios cercanos y el basado en los aproximantes diagonales de Padé.
El diseño de estos nuevos algoritmos ha conducido a la implementación de
funciones/rutinas basadas en dichas metodologías, escritas en MATLAB y FORTRAN,
que calculan Funciones de Matrices. Las rutinas implementadas en FORTRAN utilizan
las librerías de computación numérica BLAS y LAPACK, con la consiguiente
portabilidad y eficiencia del código implementado. En este sentido cabe destacar el
hueco cubierto por este software desarrollado, ya que en la actualidad se dispone de un
número muy limitado de rutinas que calculan Funciones de Matrices.
Para analizar las prestaciones de los algoritmos implementados se han realizado una
gran cantidad de pruebas que han permitido comprobar la eficiencia y la precisión de las
rutias implementas. Estas pruebas además han permitido determinar los valores de los
parámetros característicos de algunas de las implementaciones. También se ha podido
comprobar cuáles pueden ser las mejores implementaciones para una determinada
función y una matriz dada. Por lo tanto, se puede diseñar un algoritmo que determine, a
partir de la función y de la matriz considerada, cuál es el mejor método y cuáles los
valores óptimos de sus parámetros característicos.
En cuanto a los resultados obtenidos se puede afirmar que se han desarrollado
implementaciones muy eficientes, en términos de almacenamiento y coste
computacional, destacando las basadas en los aproximantes diagonales de Padé por su
rapidez y las basadas en la descomposición real de Schur de una matriz por su precisión.
6.2.2 Aplicación de las Funciones de Matrices
Se ha realizado un estudio completo del uso de Funciones de Matrices en la simulación
de la propagación de ondas en fibras de cristal fotónico. Las especiales características de
guiado de la luz de las fibras de cristal fotónico tienen potenciales aplicaciones en una
gran variedad de campos que van desde las comunicaciones ópticas hasta la fabricación
de dispositivos optoelectrónicos. Las propiedades de propagación del campo
electromagnético en estos sistemas vienen determinadas por la configuración particular
de la estructura dieléctrica transversal. A partir de un modelo que representa la
propagación no lineal de un campo monocromático en un medio inhomogéneo, se
analiza la evolución no lineal del campo eléctrico a lo largo de la fibra. Esta evolución
consiste en un proceso iterativo en el que en cada paso se calcula la exponencial de la
raíz cuadrada de una matriz de gran dimensión obtenida a partir del paso anterior. Esto
supone un alto coste computacional que puede acarrear semanas o incluso meses de
simulaciones. Se trataba, pues, de implementar un algoritmo que, manteniendo la
precisión adecuada, tuviese un tiempo de ejecución lo menor posible. Partiendo de una
implementación previa, basada en la diagonalización de una matriz, se realizó un
estudio en profundidad determinando otras posibilidades: método basado en los
aproximantes diagonales de Padé y método basado en la iteración DB con aproximantes
diagonales de Padé. Tal como muestran los resultados, la implementación basada en la
iteración DB con aproximantes diagonales de Padé resultó tener un tiempo de ejecución
aproximadamente igual a la mitad del tiempo de ejecución de la primera
implementación basada en la diagonalización de la matriz.
286
Capítulo 6: Conclusiones y Líneas Futuras de Investigación
6.2.3 Resolución de EDOs
En esta tesis se ha aplicado la técnica de linealización a trozos para resolver EDOs con
una nueva aproximación basada en el Teorema 4.1, desarrollado en el ámbito de esta
tesis, el cual permite resolver EDOs aunque la matriz Jacobiana que aparece en cada
iteración sea singular. Consecuencia de este teorema ha sido el desarrollo de nuevos
método de resolución de EDOs. Estos métodos se basan en calcular en cada iteración
una expresión en la que aparecen dos bloques de la exponencial de una matriz. Estos
métodos se describen a continuación:
• Método basado en los aproximantes diagonales de Padé. En este método se
calculan los bloques que aparecen en la expresión que define la nueva
aproximación, sin el cálculo explicito de la exponencial que los contiene. Para ello
se realiza una adaptación de los aproximantes diagonales de Padé. Para reducir los
costes computacionales y de almacenamiento, se ha adaptado adecuadamente el
método anterior cuando se aplica sobre EDOs autónomas.
• Método basado en los subespacios de Krylov. En este método se trasforma la
expresión que define a la nueva aproximación en el producto de la exponencial de
una matriz definida a bloques por un vector. Para calcular eficientemente dicho
producto, se utiliza una aproximación basada en subespacios de Krylov. Es
posible adaptar el método anterior para resolver EDOs autónomas, reduciendo con
ello los costes computacionales y de almacenamiento.
• Método basado en la Ecuación Conmutante En este método se aplica la Ecuación
Conmutante a la matriz Jacobiana, para encontrar los bloques que aparecen en la
expresión que define la nueva aproximación. En este caso es necesario que la
matriz Jacobiana sea invertible. Al igual que ocurre en los otros dos métodos, se
han reducido los costes computacionales y de almacenamiento cuando se
resuelven EDOs autónomas, adaptando para ello el método anterior.
Para cada uno de los métodos anteriores se ha desarrollo un algoritmo que permite
resolver EDOs:
• EDOs no autónomas: Algoritmo 4.5, Algoritmo 4.7 y Algoritmo 4.11.
• EDOs autónomas: Algoritmo 4.14, Algoritmo 4.16 y Algoritmo 4.18.
Además, se han implementado los algoritmos anteriores en MATLAB y FORTRAN,
determinando los parámetros característicos de cada uno de ellos y optimizando sus
costes espaciales y temporales.
Se han presentado siete casos de estudio, realizando una gran variedad de pruebas sobre
ellos. Los resultados obtenidos han mostrado por una parte, cuáles suelen ser los valores
óptimos de los parámetros característicos y, por otra, las ventajas que tienen frente a un
método clásico de resolución de EDOs (método BDF). Hay que resaltar dos aspectos en
este sentido:
• Se han elegido algunos casos de estudio que corresponden a problemas de tipo
rígido.
• Se han seleccionado algunos casos de estudios en los que la solución analítica es
conocida, y así poder comprobar la precisión de los algoritmos implementados.
287
Capítulo 6: Conclusiones y Líneas Futuras de Investigación
• Se ha elegido un caso de estudio que corresponde a un problema de gran
dimensión, y así comprobar la eficiencia de los métodos implementados para este
tipo de problemas.
• Para cada caso de estudio se han determinado los valores óptimos de los
parámetros característicos de todos los códigos implementados para, de este
modo, no favorecer a uno de ellos frente al resto.
• Aunque se han analizado más casos de estudio que los presentados en esta tesis,
se ha podido constatar que los resultados obtenidos en estos otros casos han
resultado ser similares.
A continuación se hace un breve resumen de los resultados obtenidos:
• Para un mismo incremento de tiempo, la precisión obtenida en los algoritmos
basados en la linealización a trozos de EDOs ha resultado ser similar e incluso
mayor que la obtenida en el algoritmo basado en el método BDF.
• Los algoritmos basados en los métodos de linealización tienen un excelente
comportamiento en la resolución de EDOs de tipo rígido.
• Para cada uno de los caso de estudios considerados, al menos uno de los
algoritmos basados en la linealización a trozos ha tenido un coste computacional
menor que el correspondiente al método BDF.
• Para problemas de pequeña dimensión han destacado, en cuanto coste
computacional, los algoritmos basados en la linealización a trozos mediante los
aproximantes diagonales de Padé y mediante la Ecuación Conmutante.
• Para problemas de mediano y gran tamaño, destaca la implementación basada en
la linealización a trozos mediante los subespacios de Krylov, por tener un tiempo
de ejecución mucho menor que los tiempos de ejecución correspondientes a las
otras implementaciones.
6.2.4 Resolución de EDMRs
Se ha desarrollado una nueva metodología para la resolución de EDMRs que consiste en
la vectorización y posterior aplicación de la linealización a trozos de EDOs. Debido al
enorme coste computacional y de almacenamiento necesarios, se han desarrollado tres
nuevos métodos de resolución de EDMRs. Entre las aportaciones de esta tesis en
relación a la resolución de EDMRs se encuentran las siguientes:
− Demostración de cuatro teoremas (Teorema 4.3, Teorema 4.4, Teorema 4.5,
Teorema 4.6) que permiten, mediante su aplicación, resolver EDMRs tal como a
continuación se detalla.
• Desarrollo de tres nuevos métodos, basados en la linealización a trozos, para la
resolución de EDMRs:
− Método basado en los aproximantes diagonales de Padé. En cada iteración se
calculan ciertos bloques de dos exponenciales matriciales, utilizando para ello
aproximaciones diagonales de Padé. Este método está basado en el Teorema
4.3, el cual permite transformar un problema vectorial de gran dimensión,
problema que aparece al aplicar la linealización a trozos a la EDO obtenida
por vectorización de la EDMR, en un problema matricial. Para EDMRs con
coeficientes constantes es necesario reducir tanto el número de operaciones
como la memoria necesaria. Por ello se demuestra una adaptación del
288
Capítulo 6: Conclusiones y Líneas Futuras de Investigación
Teorema 4.3 para EDMRs con coeficientes constantes (Teorema 4.5). En este
caso sólo se calculan dos bloques de una exponencial matricial.
− Método basado en la Ecuación Conmutante. Este método se basa en el
Teorema 4.4, el cual permite trasformar un problema vectorial de gran
dimensión en un problema matricial consistente en resolver tres ecuaciones
matriciales de Sylvester. Para EDMRs con coeficientes constantes se
demuestra el Teorema 4.6, el cual permite reducir el número de operaciones y
la memoria necesaria, pues en este caso sólo hace falta resolver una ecuación
matricial de Sylvester.
− Método basado en los subespacios de Krylov. Al igual que en los métodos
anteriores, se aplica el método de linealización a trozos a la EDO obtenida tras
la vectorización de la EDMR. En este caso la solución aproximada en un
instante de tiempo se obtiene al multiplicar la exponencial de una matriz a
bloques de gran dimensión por un vector. Para calcular el producto anterior se
realiza una adaptación del método de los subespacios de Krylov aplicado a
matrices definidas a bloques. Para reducir el número de operaciones y la
memoria necesaria, se realiza también una adaptación de este método para el
caso de EDMRs con coeficientes constantes.
• Desarrollo de seis algoritmos basados en los métodos anteriores:
− EDMRs con coeficientes variables: Algoritmo 4.21, Algoritmo 4.23 y
Algoritmo 4.26.
− EDMRs con coeficientes constantes: Algoritmo 4.27, Algoritmo 4.29 y
Algoritmo 4.31.
• Desarrollo de funciones/rutinas escritas en MATLAB y FORTRAN que permiten
resolver EDMRs. Hay que destacar que actualmente no se dispone de funciones
escritas en MATLAB que resuelvan EDMRs y, en el caso de rutinas escritas en
FORTRAN, tan sólo se dispone del paquete DRSOL, pero únicamente para datos
en simple precisión.
En esta tesis se han presentado seis casos de estudio, realizando una gran variedad de
pruebas sobre ellos. Los resultados obtenidos han mostrado, por una parte, cuáles suelen
ser los valores óptimos de los parámetros característicos de cada uno de los métodos y,
por otra, las ventajas que tienen frente a un método BDF. Cabe mencionar también que
se han elegido los valores óptimos de parámetros característicos, de manera que no se
ha favorecido a uno de los algoritmos (o implementaciones) frente a los demás. Aunque
en la tesis se han reflejado seis casos de estudio, se han analizado más casos, habiéndose
obtenido resultados similares. En cuanto a los casos de estudio cabe destacar:
• Se han elegido algunos casos de estudio que corresponden a problemas de tipo
rígido.
• Se han seleccionado algunos casos de estudios en los que la solución analítica es
conocida, y así poder comprobar la precisión de los algoritmos implementados.
• Se han elegido tres casos de estudio que corresponden a problemas de gran
dimensión, y así comprobar la eficiencia de los métodos implementados para este
tipo de problemas. Dos de ellos corresponde a EDMRs con coeficientes
constantes y otro a EDMRs con coeficientes variables.
A continuación se resumen brevemente los resultados obtenidos:
289
Capítulo 6: Conclusiones y Líneas Futuras de Investigación
• Los algoritmos basados en la linealización a trozos tienen una precisión similar e
incluso mayor que los algoritmos basados en el método BDF. En un caso de
estudio (Problema 5.12), se ha podido comprobar que para incrementos de tiempo
del orden de una décima se ha producido error en la implementación del método
BDF, no así en dos implementaciones de los métodos de linealización a trozos
(implementación basada en la Ecuación Conmutante e implementación basada en
los subespacios de Krylov).
• Los algoritmos basados en los métodos de linealización tienen un excelente
comportamiento en la resolución de EDMRs de tipo rígido.
• El coste computacional de los algoritmos basados en la linealización a trozos es
menor que el coste computacional de los algoritmos basados en el método BDF.
Este es un aspecto a destacar, puesto que los algoritmos basados en el método
BDF se encuentran entre los más utilizados, actualmente, en la resolución de
EDMRs.
• Para EDMRs con coeficientes constantes, los algoritmos basados en los métodos
de linealización tienen un coste computacional menor que el algoritmo basado en
el método BDF. Entre ellos destacan el basado en los subespacios de Krylov,
fundamentalmente por su buen comportamiento a medida que el tamaño del
problema se va haciendo mayor, y el basado en los aproximantes diagonales de
Padé. En este sentido, se ha comprobado que para tamaños elevados de un
problema, el tiempo de ejecución de la implementación basada en los
subespacios de Krylov ha sido mucho menor que la implementación basada en el
método BDF.
• Para EDMRs con coeficientes variables, el algoritmo basado en el método de
linealización a trozos mediante los subespacios de Krylov, presenta, en general,
menores errores que los otros algoritmos. Los algoritmos basados en los métodos
de linealización a trozos presentan costes computacionales menores que el
basado en el método BDF, destacando el basado en la Ecuación Conmutante y el
basado en los subespacios de Krylov. Para tamaños elevados de un problema, el
tiempo de ejecución de la implementación basada en los subespacios de Krylov
ha sido mucho menor que la implementación basada en el método BDF.
6.3 Publicaciones en el Marco de la Tesis
•
M. Marqués, Vicente Hernández García, J. Javier Ibáñez González, “Parallel
Algorithms for Computing Functions of Matrices on Shared Memory
Multiprocessors”. Parallel Computing and Transputer Applications, IO Press, pp.
157-166, 1992.
•
Vicente Hernández García, J. Javier Ibáñez González, G. Quintana, A.M. Vidal, V.
Vidal, “Experiencias Docentes Sobre el Uso del LAPACK en Multiprocesadores
con Memoria Compartida”. Jornadas sobre Nuevas Tecnologías en la Enseñanza de
las Matemáticas en la Universidad. E.T.S.I. de Telecomunicación Universidad
Politécnica de Valencia, pp. 163-178, 1993.
•
Vicente Hernández García, J. Javier Ibáñez González, “Calculo de la Exponencial
de una Matriz: Algoritmos Paralelos Basados en la Descomposición Real de Schur”.
Informe Técnico/Technical Report DSIC-II-36/93, Departamento de Sistemas
Informáticos y Computación, Universidad Politécnica de Valencia, Valencia 1993.
290
Capítulo 6: Conclusiones y Líneas Futuras de Investigación
•
Juan Carlos Fernández, Enrique S. Quintana, Vicente Hernández, Javier Ibáñez,
“Algoritmos Paralelos para la Resolución de la Ecuación Conmutante Sobre
Multiprocesadores con Memoria Distribuida". Informe Técnico/Technical Report
DSIC-II-12/95, Departamento de Sistemas Informáticos y Computación,
Universidad Politécnica de Valencia, Valencia 1995.
•
Enrique Arias Antúnez, Vicente Hernández García, J. Javier Ibáñez González,
“Discretization of Continuous-Time Linear Control Systems: A High Performance
Computing Approach”. 3rd Portuguese Conference on Automatic Control:
CONTROLO’98, pp. 47-51, 1998.
•
Enrique Arias Antúnez, Vicente Hernández García, J. Javier Ibáñez González,
“Algoritmos Secuencial y Paralelo para la Resolución del Problema de la
Discretización de Sistemas Lineales Continuos”. Informe Técnico/Technical Report
DSIC-II-45/98, Departamento de Sistemas Informáticos y Computación,
Universidad Politécnica de Valencia, Valencia 1998.
•
Enrique Arias Antúnez, Vicente Hernández García, J. Javier Ibáñez González,
“Distributed Memory Parallel Algoritms for Computing Integrals Involving the
Matrix Exponential”. First Niconet Workshop on Numerical Software in Control
Engineering, Universidad Politécnica de Valencia, Diciembre de1998.
•
Enrique Arias Antúnez, Vicente Hernández García, J. Javier Ibáñez González, “Un
Algoritmo Paralelo para el Cálculo de Exponenciales de Matrices e Integrales con
Exponenciales de Matrices”. X Jornadas de Paralelismo, La Manga del Mar Menor,
pp. 55-60, Septiembre de 1999.
•
Enrique Arias Antúnez, Vicente Hernández García, J. Javier Ibáñez González,
“Algoritmos Paralelos para el Cálculo de Integrales con Exponenciales de
Matrices”. Informe Técnico/Technical Report DSIC-II-20/99, Departamento de
Sistemas Informáticos y Computación, Universidad Politécnica de Valencia,
Valencia 1999.
•
Enrique Arias Antúnez, Vicente Hernández García, Ignacio Blanquer Espert, J.
Javier Ibáñez González, “Nonsingular Jacobian Free Piecewise Linearization of
Ordinary Differential Equations (EDO)”. Second Niconet Workshop on Numerical
Software in Control Engineering, Institut National de Recherche en Informatique et
en Automatique, pp. 1-5, Diciembre de1999.
•
E. Arias, V. Hernández, J. J. Ibáñez, “Non Singular Jacobian Free Piecewise
Linealization of the State Equation”. Controlo’2000: 4th Portuguese Conference on
Automatic Control, pp. 630-635, October of 2000.
•
E. Arias, V. Hernández, J. J. Ibáñez, “Algoritmos de Altas Prestaciones para la
Resolución de Ecuaciones Diferenciales Ordinarias y Algebraicas”. XII Jornadas de
Paralelismo. Valencia, pp. 205-209, Septiembre del 2001.
•
E. Arias, V. Hernández, J. J. Ibáñez, “High Performance Algorithms for Computing
Nonsingular Jacobian Free Piecewise Linealization of Differential Algebraic
Equations”. Integral Methods in Science and Engineering, Analytic and Numerical
Techniques, Birkhäuser Boston, pp. 7-12, 2004.
•
E. Arias, V. Hernández, J. J. Ibáñez and J. Peinado, “Solving Differential Riccati
Equations by Using BDF Methods”. Technical Report, DSIC-II/05/05, Universidad
Politécnica de Valencia, 2005.
291
Capítulo 6: Conclusiones y Líneas Futuras de Investigación
6.4 Líneas Futuras de Investigación
Las líneas futuras de investigación se centrarán en la aplicación del cálculo de
Funciones de Matrices en la resolución de problemas de ingeniería, la aplicación de la
linealización a trozos y de otras metodologías para la resolución de ecuaciones
diferenciales vectoriales y matriciales, y, fundamentalmente, el desarrollo e
implementación de los algoritmos paralelos correspondientes a los métodos
desarrollados en esta tesis.
Aplicación del cálculo de Funciones de Matrices a la resolución de problemas
de ingeniería.
Se trata de abordar el análisis de problemas reales en los que aparece la necesidad de
calcular Funciones de Matrices. Para cada problema de este tipo se debe realizar un
estudio de cuál es el algoritmo óptimo para ese problema y su posterior
implementación. En la actualidad se han realizado diversas implementaciones en este
sentido: simulación de la propagación de ondas en fibras de cristal fotónico o ajuste
dinámico de los parámetros de control para cambios en los periodos de muestreo en
sistemas de control.
Aplicación del cálculo de Funciones de Matrices a la resolución de problemas
de ingeniería en los que aparezca la necesidad de resolver EDOs con valores
iniciales o valores de contorno.
Se trata de resolver nuevos o antiguos problemas en los que es necesario resolver EDOs,
aplicando para ello las técnicas desarrolladas en esta tesis. En particular, para problemas
de valores de contorno se puede aplicar la técnica que consiste en desacoplar la
ecuación diferencial en dos problemas, uno de valores iniciales y otro de valores finales,
mediante la resolución de una EDMR (véase subapartado 2.4.4.5).
Aplicación de la linealización a trozos para la resolución de ecuaciones
diferenciales.
Por una parte, se trataría de mejorar los algoritmos ya desarrollados, en cuanto a la
elección de un tamaño variable del incremento de tiempo, aprovechar la estructura
dispersa de muchos de estos problemas, para diseñar adaptaciones de los algoritmos
desarrollados, etc. Por otra parte, se trataría de aplicar técnicas similares, pero para la
resolución de otros tipos de ecuaciones diferenciales como:
Ecuaciones Diferenciales Matriciales de Sylvester (EDMSs).
Ecuaciones Diferenciales Matriciales Lineales (EDMLs).
Ecuaciones Diferenciales Algebraicas (EDAs).
Etc.
Desarrollo de nuevos métodos de resolución de EDOs y EDMOs basados en
aproximaciones cuadráticas.
Se trataría de realizar una aproximación cuadrática a trozos de la función
vectorial/matricial que define a la EDO/EDMO. En este caso la complejidad matemática
y computacional es mayor, al aparecer términos cuadráticos, en donde además de la
matriz Jacobiana aparece la matriz Hessiana de la función que define a la EDO/EDMO.
Es por ello que, quizás, su aplicación esté más limitada que el caso de linealización a
trozos, pero las ventajas, en cuanto a precisión, pueden resultar interesantes para el
desarrollo de nuevos métodos de resolución de ecuaciones diferenciales.
292
Capítulo 6: Conclusiones y Líneas Futuras de Investigación
Implementaciones paralelas de los algoritmos.
Es indudable que los procesadores secuenciales actuales más rápidos, aún utilizando
técnicas de segmentación o de computación vectorial, están limitados por su velocidad
de reloj. La única manera posible de incrementar la capacidad de procesamiento es
utilizar sistemas multiprocesador, de memoria compartida o distribuida, al poder utilizar
de manera “cooperativa” varios procesadores. En la actualidad, existen numerosos
sistemas multiprocesador muy rápidos y a un precio muy asequible. Por otra parte, en
los últimos tiempos se ha desarrollado software estándar para la programación paralela
de esos sistemas entre los que destaca el ScaLapack ([ScLA97]). Una línea de
investigación claramente definida es el desarrollo e implementación de algoritmos
paralelos para la resolución de todos los problemas planteados en esta tesis:
• En el caso de Funciones de Matrices hay que destacar el potencial de los
algoritmos paralelos basados en los aproximantes diagonales de Padé, aunque no
hay que descartar los basados en la descomposición real de Schur de una matriz.
El código que aparece en los algoritmos basados en los aproximantes diagonales
de Padé corresponde a operaciones básicas del tipo matriz-matriz o matriz-vector,
y a la resolución de sistemas de ecuaciones lineales. En el caso de los algoritmos
basados en la descomposición real de Schur de una matriz, además de las
operaciones antes mencionadas, necesitan del cálculo de la descomposición real
de Schur de una matriz. Con las herramientas actualmente disponibles para el
desarrollo de software paralelo, como es el caso del ScaLapack, los códigos que
contienen operaciones básicas de matrices y vectores y la resolución de sistemas
de ecuaciones lineales, suelen ser muy eficientes en sistemas multiprocesador. En
el caso de la obtención de la forma real de Schur, los códigos no son tan eficientes
debido a las características del algoritmo iterativo QR que utiliza. Hay que
mencionar al respecto que, aunque no se han incluido en esta tesis
implementaciones paralelas, se han realizado algunas implementaciones de
algoritmos paralelos basados, tanto en la descomposición real de Schur de una
matriz, como en los aproximantes diagonales de Padé.
• En el caso de la resolución de EDOs y EDMRs, destacan los métodos basados en
los subespacios de Krylov y en los aproximantes diagonales de Padé, pues
contienen operaciones básicas del tipo matriz-matriz o matriz-vector, y la
resolución de sistemas de ecuaciones lineales. En el caso de los métodos BDF
existentes y el método de linealización a trozos basado en la Ecuación
Conmutante, la paralelización de los códigos no será tan eficiente, por tener que
utilizar la descomposición real de Schur de una matriz a la hora de resolver la
ecuación matricial de Sylvester.
293
Apéndice A: Conceptos Básicos y Notaciones
Apéndice A.
Conceptos Básicos y Notaciones
Las matrices y vectores que aparecen en esta tesis, se encuentran definidas sobre un
cuerpo F , que puede ser el cuerpo de los números complejos C o el cuerpo de los
números reales ℜ .
Un vector de dimensión n de sobre el cuerpo F se denotará como
v = [vi ] ∈ F
,
n
o bien como
⎡ v1 ⎤
⎢v ⎥
v = ⎢ 2⎥ ∈F
⎢M⎥
⎢ ⎥
⎣vn ⎦
Una matriz A de orden mxn sobre un cuerpo F
A = [aij ] ∈ F
n
.
se denotará como
mxn
,
o bien
⎡ a11 a12
⎢a
a22
A = ⎢ 21
⎢ M
M
⎢
⎣am1 am 2
L a1n ⎤
L a2 n ⎥⎥
.
O M ⎥
⎥
L amn ⎦
Con I n se representa a la matriz identidad de orden n ,
⎡1
⎢0
In = ⎢
⎢M
⎢
⎣0
Con 0mxn ∈ F
mxn
0 L 0⎤
1 L 0⎥⎥
.
M O M⎥
⎥
0 L 1⎦
se representa a la matriz nula de dimensión mxn ,
0mxn
en particular, 0 n ∈ F
nxn
⎡0
⎢0
=⎢
⎢M
⎢
⎣0
0 L 0⎤
0 L 0⎥⎥
∈F
M O M⎥
⎥
0 L 0⎦
mxn
,
representa a la matriz nula de orden n .
Una notación muy usada en computación numérica es la notación de los “dos puntos”.
Esta notación permite referenciar fácilmente submatrices, y en particular filas o
columnas de una matriz, como a continuación se detalla.
295
Apéndice A: Conceptos Básicos y Notaciones
Dada una matriz A = [aij ] ∈ F
mxn
, se denota con A(i1 : i2 , j1 : j2 ) , para 1 ≤ i1 ≤ i2 ≤ m y
1 ≤ j1 ≤ j2 ≤ n , a la submatriz de A que consiste en seleccionar los elementos de A
cuyos índices de filas se encuentran entre i1 e i2 , y cuyos índices de columnas se
encuentran entre j1 y j2 , es decir,
⎡ ai1 j1 L ai1 j2 ⎤
⎢
⎥
A(i1 : i2 , j1 : j2 ) = ⎢ M O M ⎥ .
⎢ai j L ai j ⎥
2 2 ⎦
⎣ 21
De este modo, A(1 : m, j ) denota a la columna j-ésima de la matriz A y A(i,1 : n) la fila
i-ésima de la matriz A .
A continuación se presentan algunos conceptos básicos del algebra matricial que se
utilizarán en esta tesis, junto con algunas de sus propiedades.
Definición 6.1.
Se denomina traza de una matriz A = [aij ] ∈ F
nxn
,a
traza ( A) = a11 + a22 + L + ann ∈ F .
Definición 6.2.
A = [aij ] ∈ F
nxn
es una matriz diagonal si
aij = 0 , ∀i ≠ j , para i, j = 1,2,L, n .
Definición 6.3.
A∈F
nxn
es diagonal por bloques si es de la forma
⎡ A1
⎢0
A=⎢
⎢M
⎢
⎣0
donde Ai ∈ F
ni xni
, i = 1,2,L, r , siendo
Para expresar que A ∈ F
siguientes notaciones:
nxn
0
A2
M
0
r
∑n
i =1
0⎤
L 0 ⎥⎥
,
O M⎥
⎥
L Ar ⎦
L
i
= n.
es una matriz diagonal por bloques se suelen utilizar las
A = diag( A1 , A2 ,L, Ar )
o
A = A1 ⊕ A2 ⊕ L ⊕ Ar ,
indicando que A es la denominada suma directa de las matrices A1 , A2 ,L, Ar .
296
Apéndice A: Conceptos Básicos y Notaciones
Definición 6.4.
A = [aij ] ∈ F
nxn
es una matriz triangular superior si
aij = 0 , ∀i > j , i, j = 1,2,L, n .
Definición 6.5.
A = [aij ] ∈ F
nxn
es una matriz casi triangular superior si tiene la forma
⎡ A11
⎢0
A=⎢
⎢ M
⎢
⎣0
donde Aij ∈ F
ni xn j
A1r ⎤
L A2 r ⎥⎥
,
O M ⎥
⎥
L Arr ⎦
A12 L
A22
M
0
, para i, j = 1,L, r , siendo ni , n j ∈ {1,2} .
Definición 6.6.
A = [aij ] ∈ F
nxn
es una matriz triangular inferior si
aij = 0 , ∀i < j ; i, j = 1,2,L, n .
Si además, aii = 1 , i = 1,2, L , n , se dice que A es triangular inferior unidad.
Definición 6.7.
A = [aij ] ∈ F
nxn
es una matriz superior de Hessenberg si
aij = 0 , ∀i > j + 1 ; i, j = 1,2,L, n .
Definición 6.8.
A = [aij ] ∈ F
nxn
es una matriz inferior de Hessenberg si
aij = 0 , ∀j > i + 1 ; i, j = 1,2,L, n .
Definición 6.9.
Dada una matriz A = [a ij ] ∈ F
mxn
, se define la matriz traspuesta de A como
AT = [bij ] ∈ F
nxm
,
siendo bij = a ji , i = 1,2, L , n , j = 1,2,L, m .
Según esto, un vector se puede representar como
v = [v1 , v2 ,L, vn ] ∈ F
T
n
,
siendo vi ∈ F , i = 1,2,L, n .
Definición 6.10.
Una matriz A = [aij ] ∈ F
nxn
se dice que es simétrica si
297
Apéndice A: Conceptos Básicos y Notaciones
AT = A .
Definición 6.11.
Dada una matriz A = [aij ] ∈C
mxn
, la matriz conjugada de A se define como
A = [aij ] ∈C
,
mxn
donde aij , i = 1,2,L, m , j = 1,2,L, n , es el complejo conjugado de aij .
Definición 6.12.
Dada una matriz A ∈C
mxn
, se define la matriz conjugada traspuesta de A como
A* = A T ∈C
mxn
.
Definición 6.13.
Una matriz A ∈C
mxn
, se dice que es hermítica si
A* = A .
Definición 6.14.
Una matriz A ∈ ℜ nxn se dice ortogonal si
A−1 = AT .
Definición 6.15.
Una matriz A ∈C
nxn
se dice unitaria si
A −1 = A * .
Definición 6.16.
Se define la matriz de Vandermonde asociada a c1 , c 2 , L , c n −1 , c n ∈ F , como
⎡ 1
⎢ c
⎢ 1
V =⎢ M
⎢ n−2
⎢c1
⎢⎣ c1n −1
1
L
c2
L cn −1
M
c
O M
L cnn−−11
c
cnn−1
n−2
2
n −1
2
1
1 ⎤
cn ⎥⎥
M ⎥ ∈F
n −1 ⎥
cn ⎥
cnn −1 ⎥⎦
nxn
.
Definición 6.17 ([HoJo99], página 38).
Se denomina polinomio característico de A ∈ F
mxn
, al polinomio
n −1
p(λ ) = det(λI n − A) = λn − ∑ ck λk .
k =0
Definición 6.18.
A cada una de las raíces del polinomio característico de la matriz A ∈ F nxn se le
denomina valor propio de A . Si λ es un valor propio de A , entonces existe al menos
298
Apéndice A: Conceptos Básicos y Notaciones
un vector no nulo x ∈ F
que
n
, denominado vector propio de A asociado a λ , de manera
Ax = λx .
Definición 6.19.
Dada una matriz A ∈ F
valores propios.
nxn
, se denomina espectro A al conjunto λ ( A) de todos sus
Propiedad 6.1 ([BaSa98], página 313).
Si A ∈ F
nxn
, entonces los coeficientes del polinomio característico de A son
ck = traza k +1 ( A) , k = 1,L, n − 1 ,
c0 = det( A),
siendo traza k +1 ( A) la suma de todos los menores principal de orden k + 1 de A que
contienen en su diagonal principal k + 1 elementos de la diagonal principal de A .
Definición 6.20.
Se dice que la matriz B ∈ F nxn es semejante a la matriz A ∈ F
no singular X ∈ F nxn de manera que
nxn
, si existe una matriz
B = XAX −1 .
Definición 6.21.
Se dice que una función f (x) es analítica en un abierto U del cuerpo F , si se puede
expresar en la forma
∞
f ( x) = ∑ ck x k , x ∈ U ,
k =0
siendo ck ∈ F , k ≥ 0 .
Teorema 6.1 (descomposición canónica de Jordan).
Si A ∈ F
( 6.1 )
nxn
, entonces existe una matriz no singular X ∈ F
nxn
de manera que
X −1 AX = diag( J λ1 , J λ2 ,L, J λr ) ,
donde J λi denota al i-ésimo bloque de Jordan de A,
⎡ λi
⎢0
⎢
J λi = ⎢ M
⎢
⎢0
⎢⎣ 0
1
λi
M
0
0
0⎤
O 0 0 ⎥⎥
O O M ⎥ ∈F
⎥
L λi 1 ⎥
L 0 λi ⎥⎦
L
i = 1,2,L, r ,
0
r
∑n
i =1
i
ni xni
,
= n.
299
Apéndice A: Conceptos Básicos y Notaciones
La matriz diag( J λ1 , J λ2 , L , J λr ) se denomina forma canónica de Jordan de la matriz A .
Definición 6.22.
Una matriz A ∈ F nxn es derogatoria si existe un valor propio λ de A , que aparece, al
menos, en dos bloques distintos de la forma canónica de Jordan de A.
Definición 6.23.
Sean A ∈ F
nxn
y
n −1
p(λ ) = λn − ∑ ck λk ,
k =0
su polinomio característico. Se define la matriz compañera asociada a p(λ ) , como
⎡0
⎢0
⎢
B=⎢M
⎢
⎢0
⎢⎣c0
1 L
0
0 O
0
M
O
O
0 L
0
c1 L cn − 2
0 ⎤
0 ⎥⎥
M ⎥ ∈C
⎥
1 ⎥
cn −1 ⎥⎦
nxn
.
Si n es elevado, entonces la matriz B es dispersa pues tiene un porcentaje alto de
elementos nulos
Propiedad 6.2
Dadas las matrices A y B de la Definición 6.23, entonces A y B tienen el mismo
polinomio característico.
Propiedad 6.3
Sean A y B las matrices de la Definición 6.23. Si V es la matriz de Vandermonde
correspondiente a los valores propios de B , entonces V −1BV está en la forma de
Jordan.
Propiedad 6.4
Sean A y B las matrices de la Definición 6.23. Si A no es derogatoria, entonces A es
semejante a una matriz compañera; en caso contrario, A es semejante a una suma
directa de matrices compañeras.
Definición 6.24
Se dice que la matriz
⎡M
M = ⎢ 11
⎣ M 21
M 12 ⎤
∈ ℜ 2 nx 2 n ,
⎥
M 22 ⎦
M 11 , M 12 , M 21 , M 22 ∈ ℜ nxn ,
es Hamiltoniana si cumple que
J −1 M T J = − M ,
300
Apéndice A: Conceptos Básicos y Notaciones
siendo
⎡0
J =⎢ n
⎣− I n
In ⎤
.
0 n ⎥⎦
Definición 6.25
Se dice que la matriz
⎡M
M = ⎢ 11
⎣ M 21
M 12 ⎤
∈ ℜ 2 nx 2 n ,
M 22 ⎥⎦
M 11 , M 12 , M 21 , M 22 ∈ ℜ nxn ,
es simpléctica si cumple que
J −1 M T J = M −1 ,
siendo
In ⎞
⎟.
0 n ⎟⎠
⎛ 0
J = ⎜⎜ n
⎝− In
Definición 6.26.
Se define la función
diag : F
n
de manera que dado v = [v1 , v2 , L , vn ] ∈ F
T
⎯
⎯→ F
n
nxn
,
, entonces
⎡v1 0
⎢0 v
2
diag(v) = ⎢
⎢M M
⎢
⎣0 0
0⎤
L 0 ⎥⎥
.
O M⎥
⎥
L vn ⎦
L
Teorema 6.2 (Descomposición LU sin pivotamiento).
Si la matriz A = [aij ] ∈ F
nxn
verifica que det( A(1 : i,1 : i)) ≠ 0 , i = 1,2, L , n , entonces
existe una matriz triangular inferior unidad L ∈ F
U ∈ F nxn de manera que
nxn
y una matriz triangular superior
A = LU ,
siendo esta descomposición única.
Definición 6.27.
Se dice que P ∈ ℜ nxn es una matriz permutación, si cada columna (o fila) de P ,
contiene un solo elemento igual a 1, siendo el resto de los elementos de dicha fila (o
columna) iguales a 0. Esto es, si (α1 , α 2 , L , α n ) es una permutación de (1,2, L , n) ,
entonces
P = [eαT1 , eαT2 , L , eαTn ] ,
301
Apéndice A: Conceptos Básicos y Notaciones
siendo eαT i , i = 1,2, L , n , la columna de índice α i de la matriz identidad I n .
Teorema 6.3 (Descomposición LU con pivotamiento parcial de filas).
Si la matriz A ∈ F nxn es invertible, entonces existe una matriz de permutación
P ∈ ℜ nxn , una matriz triangular inferior unidad L ∈ F nxn y una matriz triangular
superior U ∈ F nxn , de manera que
PA = LU ,
siendo esta descomposición única.
Teorema 6.4 (Descomposición QR).
Dada una matriz A ∈C nxn , existe una matriz unitaria Q ∈C
superior R ∈C nxn , de manera que
nxn
y una matriz triangular
A = QR .
Si además A es no singular, entonces R puede elegirse de manera que todos sus
elementos diagonales sean positivos y, por tanto, dicha descomposición será única.
Teorema 6.5 (Descomposición real QR).
Dada una matriz A ∈ ℜ nxn , existe una matriz ortogonal Q ∈ ℜ nxn y una matriz
triangular superior R ∈ ℜ nxn , de manera que
A = QR .
Si además A es no singular, entonces R puede elegirse de manera que todos sus
elementos diagonales sean positivos y, por tanto, dicha descomposición será única.
Teorema 6.6 (Descomposición de Schur).
Dada una matriz A ∈C nxn , existe una matriz unitaria Q ∈C nxn y una matriz triangular
superior T ∈C nxn , denominada forma de Schur de A , de manera que
A = QTQ * ,
donde los elementos de la diagonal de la matriz T coinciden con los valores propios de
la matriz A .
Teorema 6.7 (Descomposición real de Schur de una matriz).
Dada una matriz A ∈ ℜ nxn , existe una matriz ortogonal Q ∈ ℜ nxn y una matriz casi
triangular superior S ∈ ℜ nxn , denominada forma real de Schur de A , de manera que
( 6.2 )
⎡ S11
⎢0
A = QSQ T = Q ⎢
⎢ M
⎢
⎣0
S12 L S1m ⎤
S 22 L S 2 m ⎥⎥ T
Q ,
M O M ⎥
⎥
0 L S mm ⎦
302
Apéndice A: Conceptos Básicos y Notaciones
donde cada bloque diagonal S ii , para i = 1,2, L , m , es de orden 1x1 ó 2x 2 . Los
bloques diagonales de orden 1x1 corresponden a valores propios reales de A y los de
orden 2x 2 a un par de valores propios complejos conjugados de A .
Teorema 6.8 (Descomposición en Valores Singulares).
Si A ∈ ℜ mxn , entonces existen dos matrices ortogonales U ∈ ℜ mxm y V ∈ ℜ nxn de
manera que
U T AV = diag(σ 1 , σ 2 , L , σ p ) ∈ ℜ pxp , p = min(m, n) ,
siendo σ 1 ≥ σ 2 ≥ L ≥ σ p ≥ 0 los llamados valores singulares de la matriz A .
Como consecuencia de este teorema, se define la Descomposición en Valores
Singulares (DVS) de la matriz A , como
A = UΣV T ,
siendo
Σ = diag(σ 1 , σ 2 , L , σ p ) ∈ ℜ pxp .
Definición 6.28.
Dadas las matrices A = [aij ] ∈ F
mxn
y B = [bij ] ∈ F
pxq
, se define la matriz producto de
Kronecker de A por B como
⎡ a11B a12 B
⎢a B a B
22
A ⊗ B = ⎢ 21
⎢ M
M
⎢
⎣am1B am 2 B
L a1n B ⎤
L a2 n B ⎥⎥
∈F
O
M ⎥
⎥
L amn B ⎦
mpxnq
.
Propiedad 6.5.
Si A ∈ F
mxn
y B, C ∈ F
pxq
, entonces
A ⊗ (B + C) = A ⊗ B + A ⊗ C .
Propiedad 6.6.
Si A, B ∈ F
mxn
y C, D ∈ F
pxq
, entonces
( A ⊗ B)(C ⊗ D) = AC ⊗ BD .
Definición 6.29.
Una norma vectorial en F
n
es una función
F
n
⎯⎯→ ℜ ,
que verifica las siguientes propiedades:
1. || x ||≥ 0, ∀x ∈ F
n
,
2. || x ||= 0 si y solo si x es el vector nulo,
303
Apéndice A: Conceptos Básicos y Notaciones
3. || αx ||=| α | || x || , ∀α ∈ F , ∀x ∈ F
4. || x + y ||≤|| x || + || y || , ∀x, y ∈ F
n
n
,
.
Definición 6.30.
Dado un entero positivo p , se define la p-norma vectorial en F
n
como
|| x || p = p | x1 | p + | x2 | p + L + | xn | p ,
siendo x = [ x1 , x2 , L , xn ]T ∈ F
n
.
En particular, se define la ∞-norma como
|| x ||∞ = lim p | x1 | p + | x2 | p + L + | xn | p = max (| xi |) .
p →∞
1≤i ≤ n
Definición 6.31.
Una norma matricial en F
mxn
es una función
F
nxn
⎯⎯→ ℜ ,
que verifica las siguientes propiedades:
1. || A ||≥ 0 , ∀A ∈ F
mxn
.
2. || A ||= 0 si y solo si A = 0 mxn .
3. || αA ||=| α | || A || , ∀α ∈ F , ∀A ∈ F
4. || A + B ||≤|| A || + || B || , ∀A, B ∈ F
mxn
mxn
.
.
Definición 6.32.
Se define la norma matricial subordinada || || M a la norma vectorial || ||v , como
|| A || M = max(|| Ax ||v ) , A ∈ F
mxn
|| x||v =1
siendo x ∈ F
n
,
.
Definición 6.33.
Dado un entero positivo p , se define la p-norma matricial sobre F
|| A || p = max(|| Ax || p ) , A ∈ F
mxn
|| x|| p =1
siendo x ∈ F
n
mxn
como
,
.
Definición 6.34.
Se define la norma de Frobenius de una matriz A = [aij ] ∈ F
|| A || F =
m
n
∑∑ | a
i =1 j =1
ij
mxn
como
|2 .
304
Apéndice A: Conceptos Básicos y Notaciones
Definición 6.35.
Se denomina número de condición de una matriz invertible A ∈ F
norma matricial subordinada || || , al número real
nxn
relativo a la
cond || || ( A) =|| A || || A −1 || .
En particular, con cond p ( A) se designa al número de condición de la matriz A
asociado a la p-norma matricial.
Definición 6.36.
Se define la función vec ,
vec : F
mxn
⎯
⎯→ F
como la aplicación que a una matriz A = [aij ] ∈ F
mn
mxn
,
, le asocia como imagen el vector
vec( A) ∈ F mn que se obtiene colocando las columnas de A una a continuación de otra
en el orden natural, es decir,
vec( A) = [a11 , a21 , L , am1 , a12 , a22 , L, am 2 , L , a1n , a2 n , L, amn ]T .
Propiedad 6.7
Si A, B ∈ F
mxn
, entonces
vec( A + B) = vec( A) + vec( B) .
Propiedad 6.8
Si A ∈ F
mxn
, B∈F
nxp
y C ∈F
pxq
, entonces
vec( ABC ) = (C T ⊗ A) vec( B) .
Definición 6.37.
Dados dos enteros positivos m y n , se define la función mat mxn ,
mat mn : F
mn
⎯
⎯→ F
mxn
,
como la aplicación que a un vector de tamaño mn
v = [v1 , v2 , L, vm , vm+1 , vm+ 2 , L, v2 m , L , vmn−m+1 , vmn−m+ 2 , L , vmn ]T ∈ F
mn
,
le asocia como imagen la matriz mxn que se obtiene colocando las componentes de v,
una a continuación de otra en el orden natural, en columnas de tamaño m, es decir,
⎡ v1
⎢v
mat mxn (v) = ⎢ 2
⎢M
⎢
⎣v m
vm+1 L vmn−n−1 ⎤
vm + 2
vmn−n ⎥⎥
∈ ℜ mxn .
⎥
O
⎥
v2 m
vmn ⎦
305
Apéndice A: Conceptos Básicos y Notaciones
Definición 6.38.
Un flop es el tiempo necesario para realizar una operación aritmética (suma, resta,
producto o división) en coma flotante.
306
Apéndice B: Rutinas Auxiliares
Apéndice B.
MATLAB
MATLAB (MAThematical LABoratory) es un entorno de programación que permite
realizar cálculos científicos y de ingeniería basados en vectores y matrices. Se puede
trabajar con él de forma interactiva o utilizando un intérprete de un lenguaje propio que
lleva incorporado. Se distingue de otros lenguajes, como FORTRAN o C, porque opera
en un nivel superior, pues permite realizar operaciones básicas entre vectores y
matrices, incorporando además un gran número de funciones cuyos argumentos son
vectores y matrices. Por otra parte, MATLAB dispone de numerosas herramientas de
desarrollo y depuración de código que lo hacen muy útil en el desarrollo de algoritmos.
En la actualidad MATLAB se ha convertido en el estándar de desarrollo de algoritmos
en computación numérica. Trefethen llega a afirmar en la introducción de [Tref00] que
“con MATLAB ha nacido una nueva era en la computación científica porque puede
hacer una cantidad astronómica de cálculos con muy pocas líneas de programa y en
unos pocos segundo de tiempo”. Charles F. Van Loan en [VanL00] afirma que
“MATLAB ha cambiado la forma de calcular e investigar en las ciencias de la
computación”. J. Higham, inminente investigador de funciones matrices, ha utilizado
extensamente este software en todos sus trabajos, habiendo publicado recientemente un
libro sobre MATLAB ([HiHi00]). MATLAB se ha convertido en una poderosa
herramienta para investigar y resolver problemas prácticos sobre todo con el desarrollo
de las Toolbox. Las Toolbox contienen funciones de MATLAB que resuelven
problemas aplicados a diferentes áreas.
Resolución de EDOs
MATLAB es capaz de calcular la evolución en el tiempo de la solución de EDOs
lineales y no lineales con valores iniciales
( 6.3 )
x' (t ) = f (t , x(t )) , t 0 ≤ t ≤ t f ,
x(t 0 ) = x0 ,
siendo x(t ) ∈ ℜ n y f (t , x) una función vectorial.
La sintaxis básica de las funciones que resuelven EDOs en MATLAB es la siguiente:
[t , Y ] = solvername(' F ' , tspan, y0 ) .
•
solvername : nombre de la función de MATLAB que resuelve la EDO.
•
F : nombre del fichero que contiene la definición de la función f ( x, t ) .
•
tspan : vector que indica los instantes en los que se va a evaluar la función. Si
contiene sólo dos números, éstos representan el comienzo y el final del intervalo
de integración. Si contiene más de dos elementos, indica en qué instantes se
quiere obtener la solución,
•
y0 : vector columna con el valor inicial.
307
Apéndice B: Rutinas Auxiliares
•
Y : matriz con tantas filas como tiempos de salida y tantas columnas como
dimensión del vector y 0 .
•
t : vector que contiene los instantes en los que se obtiene la solución.
En la siguiente tabla se muestran las funciones que resuelven EDOs en MATLAB.
Función Tipo de problema Método utilizado
ode45
no rígido
Runge-Kutta de orden 4 y 5
ode23
no rígido
Runge-Kutta de orden 2 y 3
ode113
no rígido
Métodos lineales multipaso de órdenes 1 a 13
ode15s
rígido
BDF de órdenes 1 a 5
ode23s
rígido
Rosembrock modificados de orden 2 y 3
ode23t
poco rígido
Regla de los trapecios
ode23tb rígido
Tabla 6.1:
Runge-Kutta implícito de orden 2 y 3
Funciones de MATLAB para la resolución de EDOs.
MATLAB permite utilizar una sintaxis más completa para la resolución de EDOs:
[t , Y , s ] = solvername(' F ' , tspan, y0 , options ) .
•
s : vector que contiene ciertos resultados estadísticos de la integración.
•
options : estructura definida por la función odeset, que permite definir ciertas
características del método utilizado en la función.
La sintaxis de odeset es
options = odeset (' param1 ' , val1 , ' param2 ' , val2 , L)
o bien
options = odeset (oldopt , ' param1 ' , val1 , ' param2 ' , val2 , L) .
Entre los parámetros más importantes de esta función se encuentran los siguientes:
•
Tratamiento del error: RelTol , AbsTol . El test de error está acotado por
err (i ) ≤ max( AbsTol , RelTol | x(i ) |) .
•
Para el paso: InitialStep , MaxStep .
•
Matriz Jacobiana: Jacobian , JConstant , JPattern , Vectorized .
•
Especificación de la salida: OutputFcn , OutputSel , Refine , Stats .
Funciones de Matrices
MATLAB posee numerosas funciones de matrices, las cuales se detallan a
continuación:
308
Apéndice B: Rutinas Auxiliares
•
Función exponencial.
B = expm(A) calcula B = e A . Esta función utiliza la aproximación de Padé con escalado
y potenciación.
•
Función logaritmo.
B = logm(A) calcula el logaritmo principal de la matriz A , utilizando para ello el
Algoritmo 2.2. Si la matriz A es singular o tiene algún valor propio en el semieje real
negativo, entonces B no se puede calcular, devolviendo logm un mensaje de error.
La función logm también admite la sintaxis
[B, exitflag] = logm(A),
devolviendo, además del logaritmo principal en caso de existir, el entero exitflag que
describe la condición de salida de logm:
•
•
Si exitflag = 0, el logaritmo principal se ha podido calcular.
•
Si exitflag = 1, alguna evaluación de la serie de Taylor, utilizada en el cálculo de
Fii = f (Tii ) mediante el Algoritmo 2.2, no converge. Incluso en este caso, el
valor devuelto puede ser exacto.
Función raíz cuadrada.
B = sqrtm(A) calcula la raíz cuadrada principal de la matriz A . Si A tiene algún valor
propio con parte real negativa entonces la matriz devuelta en B es compleja. Si A es
singular entonces A no puede tener una raíz cuadrada, mostrando sqrtm un mensaje de
error.
La función sqrtm también admite otras sintaxis.
•
[ X , r ] = sqrtm( A) .
En este caso no se muestran mensajes de error, devolviendo en r el valor del
residuo
|| A − X 2 || F
.
|| A || F
•
[ X ,α , c] = sqrtm( A) .
En este caso en α se devuelve un factor de estabilidad y en c una estimación
del número de condición asociado a la raíz cuadrada X . El residuo está
acotado aproximadamente por n α ε y el error relativo cometido al calcular la
raíz cuadrada está acotado aproximadamente por ncε , siendo n la dimensión
de la matriz A y ε el redondeo unidad ([GoVa96], página 61).
Si X es real, simétrica y definida positiva, o compleja, hermítica y definida positiva,
entonces también es posible calcular su raíz cuadrada.
•
Funciones en general.
funm(A,fun) calcula f ( A) para una función dada en el argumento fun. La
implementación de esta función está basada en el Algoritmo 2.2. Esta función debe
admitir un desarrollo en serie de Taylor con un radio de convergencia infinito, excepto
para fun = @log, la cuál es tratada de forma especial. Los posibles valores de fun son
309
Apéndice B: Rutinas Auxiliares
@exp, @log, @sin, @cos, @sinh y @cosh. Admite además otras sintaxis que permiten
controlar ciertos parámetros para el cálculo de la función matricial.
310
Apéndice C: BLAS y LAPACK
Apéndice C.
BLAS y LAPACK
La clave para utilizar eficientemente ordenadores de altas prestaciones es evitar
referencias innecesarias a memoria. En la mayoría de los ordenadores, los datos fluyen
desde memoria a registros de la máquina o viceversa. Este flujo de datos puede ser más
costoso que las operaciones aritméticas entre los datos. Por lo tanto, las prestaciones de
los algoritmos pueden estar determinadas por la cantidad de tráfico hacia memoria más
que por el número de operaciones en coma flotante realizadas. Este coste motiva la
reestructuración de los algoritmos existentes en base a diseñar otros nuevos que
minimicen dicho movimiento.
Una forma de conseguir eficiencia en la solución de problemas del álgebra lineal es
utilizar BLAS (Basic Linear Algebra Subroutines). En 1973, Hanson, Krogh y Lawson
describieron las ventajas de utilizar un conjunto de rutinas básicas para problemas del
álgebra lineal. El BLAS ha tenido mucho éxito en este sentido y se ha utilizado en una
gran diversidad de software numérico y muchos de los algoritmos publicados por ACM
Transactions on Mathematical Software. Las rutinas del BLAS ayudan a la claridad,
portabilidad, modularidad y mantenimiento del software, y, además, se ha convertido en
un estándar en lo referente a operaciones vectoriales y matriciales.
El deseo de obtener software numérico que pueda ser utilizado por una gran variedad de
sistemas informáticos ha culminado en la disponibilidad comercial de una variedad de
librerías (por ejemplo, NAG e IMSL) y también de software de dominio público (por
ejemplo, LINPACK, EISPACK, NETLIB). Un intento de obtener un software numérico
que fuera portable en sistemas MIMD (Multiple Instruction Multiple Data) fue la
creación del LAPACK. El desarrollo del LAPACK ha sido un paso natural después de
que las especificaciones de los niveles BLAS 2 y BLAS 3 fueran diseñadas entre 198486 y 1987-88. La investigación de algoritmos numéricos paralelos continuó varios años,
haciendo posible la construcción de un nuevo paquete de software que sustituyese al
LINPACK y EISPACK, permitiendo una mayor eficiencia en el uso de las nuevas
computadoras de altas prestaciones. La propuesta inicial del LAPACK fue especificada,
aunque todavía el BLAS 3 se estaba desarrollando, en un proyecto financiado por la
National Science Foundation (USA).
El LAPACK, escrito en FORTRAN 77 estándar para datos en simple y en doble
precisión de números reales y complejos, implementa un gran número de algoritmos
que resuelven problemas típicos del álgebra lineal entre los que se encuentran: la
resolución de sistemas lineales de ecuaciones, las descomposiciones matriciales (LU,
Cholesky, QR), el cálculo de valores propios y singulares de una matriz, etc. Las
matrices utilizadas en dichos algoritmos se subdividen en bloques de tamaño adecuado
y se utilizan rutinas del BLAS para la realización de operaciones básicas entre ellos.
Para obtener una alta eficiencia en la ejecución de las rutinas del LAPACK sobre
máquinas paralelas, ya sea sobre procesadores vectoriales o multiprocesadores con o sin
registros vectoriales, es necesario disponer de una versión optimizada del BLAS que
permita el uso eficaz del hardware. Por lo tanto, el paralelismo en la ejecución de dichas
rutinas se encuentra en las llamadas al BLAS, estando oculto este paralelismo a los ojos
del usuario.
311
Apéndice C: BLAS y LAPACK
Inicialmente las rutinas del LAPACK se diseñaron específicamente para que se
ejecutaran eficientemente sobre multiprocesadores con memoria compartida. Por ello,
se basan en algoritmos orientados a bloques, es decir, las matrices se dividen en
bloques, y las operaciones básicas que aparecen en los algoritmos son productos y
actualizaciones de matrices y vectores. Estas operaciones utilizan llamadas al BLAS 2
(operaciones del tipo matriz-vector) o al BLAS 3 (operaciones del tipo matriz-matriz).
El uso de tamaños adecuados de bloques es fundamental para el rendimiento de las
rutinas. Estos tamaños dependen, fundamentalmente, de la máquina sobre la que se
utilizan.
En www.netlib.org/lapack/ se puede encontrar el manual completo de LAPACK en
formato html, los códigos fuentes de BLAS y LAPACK, algunas librerías compiladas
para varias arquitecturas y sistemas operativos, etc.
Una forma sistemática de obtener software de altas prestaciones consiste en
implementar los algoritmos, expresados por ejemplo en MATLAB, en un lenguaje de
alto nivel, utilizando núcleos computacionales de altas prestaciones como BLAS y
LAPACK. Si se dispone de librerías optimizadas para una determinada arquitectura de
BLAS y LAPACK se obtiene un software eficiente y de altas prestaciones. Además, se
posibilita el posterior desarrollo de implementaciones paralelas utilizando, por ejemplo,
la librería SCALAPACK ([ScLA97]) con la consiguiente ganancia en velocidad.
BLAS
Convenciones en el BLAS
Los nombres de las rutinas del BLAS tienen la forma xyyzz. La primera letra del nombre
(x) indica el tipo de dato utilizado y su precisión:
S: real en simple precisión.
D: real en doble precisión.
C: complejo en simple precisión.
Z: complejo en doble precisión.
En BLAS 2 y BLAS 3, las dos siguientes letras (yy) indican el tipo de matriz utilizada y
las dos últimas el problema que resuelven; así por ejemplo, MM indica producto de dos
matrices, MV producto de matriz por un vector, SM resolución de un sistema lineal
triangular múltiple, SV resolución de un sistema lineal triangular, etc. El BLAS 1 suele
tener una notación propia para todas las letras (salvo la primera).
GE: general
GB: general banda
SY: simétrica
SB: simétrica banda
SP: simétrica empaquetada
HE: hermitiana HB: hermitiana banda HP: hermitiana empaquetada
TR: triangular
Tabla 6.2:
TB: triangular banda
TP: triangular empaquetada
Valores de yy en los nombres de las rutinas del BLAS2 y del BLAS3.
312
Apéndice C: BLAS y LAPACK
Estructura del BLAS
BLAS 1.
El conjunto de rutinas de este nivel resuelven problemas básicos de complejidad lineal
como, por ejemplo, las operaciones el producto escalar de vectores, la actualización de
un vector a partir de otro, generación de rotaciones, cálculo de normas vectoriales, etc.
Las principales subrutinas y funciones son:
_AXPY
:
y = αx + y ,
_SCAL
:
x = αx ,
_SWAP
:
intercambia x e y ,
_COPY
:
y = x,
_DOT
:
realiza el producto escalar x T y ,
_NRM2
:
calcula la 2-norma de x ,
_ROT
:
genera una rotación en el plano,
donde x e y son vectores y α un escalar.
BLAS 2.
Versiones especiales del BLAS 1, en algunos casos versiones en código máquina, se
han implementado sobre un gran número de máquinas, por lo que se ha mejorado la
eficiencia del BLAS 1. Sin embargo, en algunas arquitecturas modernas, el uso del
BLAS 1 no es el mejor camino para mejorar la eficiencia de códigos de alto nivel. Por
ejemplo, en máquinas vectoriales se necesita optimizar operaciones del tipo matrizvector para aprovechar la potencial eficiencia de la máquina, sin embargo, el uso del
BLAS 1 inhibe esta optimización, puesto que el BLAS 1 oculta al compilador la
naturaleza de estas operaciones.
Para resolver esta problemática se diseñó el BLAS 2, el cual implementa un conjunto
reducido de operaciones matriz-vector que aparecen muy a menudo en la
implementación de muchos algoritmos del álgebra lineal. Las operaciones que
implementan estas subrutinas tienen un coste cuadrático.
Los tres siguientes tipos de operaciones básicas son implementados en este nivel:
•
•
•
Operaciones del tipo matriz-vector.
•
_GEMV
:
y = αop( A) x + β y .
•
_TRMV
:
x = op( A) x
( A triangular).
Actualizaciones de rango uno o rango dos.
•
_GER :
A = αxy T + A .
•
_SYR2 :
A = αxy T + αyx T + A ( A simétrica).
Resolución de sistemas de ecuaciones lineales triangulares.
•
_TRSV :
x = op( A −1 ) x
( A triangular).
313
Apéndice C: BLAS y LAPACK
En las expresiones anteriores A es una matriz, x e y vectores, α y β escalares y
op( X ) = X , X T , X * .
BLAS 3.
Muchos algoritmos pueden codificarse de manera que la mayor parte del cálculo
vectorial o matricial se realice mediante llamadas al BLAS 2. Cuando se trabaja con
máquinas vectoriales es aconsejable utilizar longitudes de vectores tan grandes, como
sea posible, y así los resultados son calculados sobre un vector (fila o columna) de una
sola vez, de manera que las prestaciones aumentan al reutilizar los registros vectoriales
en lugar de devolver sus valores a memoria.
Desafortunadamente la aproximación anterior no es apropiada en los ordenadores con
una jerarquía de memorias o en ordenadores con procesamiento en paralelo. Para estas
arquitecturas es preferible dividir la matriz o matrices en bloques y realizar las
operaciones de tipo matriz-matriz sobre bloques. Organizando los cálculos de este
modo, se posibilita la completa reutilización de los datos de aquellos bloques que se
encuentran en la memoria caché. Esta aproximación evita el excesivo movimiento de
datos desde y hacia la memoria. Sobre arquitecturas que permiten el procesamiento en
paralelo, el paralelismo se puede explotar de dos formas: (1) las operaciones sobre
diferentes bloques puede realizarse en paralelo (concurrencia), y (2) las operaciones
vectoriales y escalares en cada bloque pueden realizarse sobre los registros vectoriales
(vectorización).
El BLAS 3 se diseñó con el objeto de llevar a cabo operaciones matriz-matriz y así
diseñar algoritmos por bloques que permitiesen la realización de un número mayor de
operaciones sobre las memoria caché. Las rutinas se han desarrollado de forma similar a
la realizada en los niveles 1 y 2 del BLAS, reemplazando los vectores x e y por
matrices A , B y C . La ventaja de diseñar el software de manera consistente con el
nivel 2 del BLAS es que es más fácil recordar las secuencias de llamadas y las
convenciones en los parámetros.
Las principales subrutinas de BLAS 3 son las siguientes:
•
•
•
Producto matriz-matriz.
•
_GEMM:
C = αop( A)op( B ) + β C .
•
_TRMM:
C = αop( A) B + βC , C = αop( A) B ( A triangular).
Actualizaciones de rango k de una matriz simétrica.
•
_SYRK:
C = αAA T + βC , C = αAT A + β C ( C simétrica).
•
_SYRK2:
C = αAB T + αBA T + βC ( C simétrica).
Resolución de múltiples sistemas lineales triangulares de ecuaciones.
•
_ TRSM : B = αop ( A −1 ) B, B = Bop( A −1 ) ( A triangular).
En las expresiones anteriores A , B y C son matrices, α y β escalares y
op( X ) = X , X T , X * .
314
Apéndice C: BLAS y LAPACK
LAPACK
Estructura del LAPACK
Las rutinas del LAPACK se clasifican en:
•
Rutinas driver: Estas rutinas resuelven un problema completo, por ejemplo, la
resolución de un sistema lineal de ecuaciones o el cálculo de los valores propios de
una matriz real simétrica.
•
Rutinas computacionales: Estas rutinas resuelven diferentes tareas computacionales,
por ejemplo, la factorización LU, la reducción de una matriz simétrica a la forma
tridiagonal, etc. Cada rutina driver llama a una secuencia de rutinas computacionales
para realizar su función.
•
Rutinas auxiliares. Estas rutinas se clasifican como sigue:
•
Rutinas que realizan subtareas de algoritmos orientados a bloques, en particular,
rutinas que implementan versiones de algoritmos no orientadas a bloques.
•
Rutinas que realizan algunos cálculos computacionales muy comunes de bajo
nivel, por ejemplo, el escalado de una matriz, el cálculo de normas matriciales, la
generación de matrices elementales de Householder, etc. Algunas de estas rutinas
pueden tener interés para los analistas numéricos o desarrolladores del software,
y pueden considerarse como futuras ampliaciones del BLAS.
•
Rutinas que amplían al BLAS como, por ejemplo, rutinas que realizan rotaciones
en el plano complejo u operaciones del tipo matriz-vector que involucran
matrices complejas simétricas (no existen rutinas en el BLAS que realicen estas
funciones).
El LAPACK dispone de rutinas que trabajan con datos en simple y en doble precisión
de números reales y complejos. En la mayoría de los casos hay rutinas semejantes para
los diferentes tipos de datos, pero existen algunas excepciones. Por ejemplo, para la
resolución de sistemas lineales de ecuaciones indefinidos y simétricos, existen rutinas
que resuelven sistemas simétricos complejos y hermíticos complejos, puesto que ambos
tipos de sistemas complejos aparecen en aplicaciones prácticas. Sin embargo, no hay un
caso complejo análogo al de la rutina que calcula los valores propios de una matriz
tridiagonal simétrica, puesto que toda matriz hermitiana compleja se puede reducir a
una matriz real tridiagonal simétrica.
Las rutinas que realizan la misma función para datos reales y complejos, siempre que
esto sea posible, han sido codificadas para mantener una correspondencia cercana entre
ellas. Sin embargo, en algunas áreas, especialmente en problemas de valores propios no
simétricos, la correspondencia es necesariamente más lejana.
Las versiones en doble precisión se han generado automáticamente, utilizando el
Toolpack/1 (véase [Poll89]). Las rutinas de doble precisión para matrices complejas
requieren el tipo de datos no estándar COMPLEX*16, el cual se encuentra disponible
para la mayoría de máquinas.
Los nombres de las rutinas driver y computacionales tienen la forma xyyzzz, siendo el
sexto carácter un blanco para ciertas rutinas driver. Las tres primeras letras tienen el
mismo significado que el utilizado en la denominación de las rutinas del BLAS 2 y del
BLAS 3; la primera letra (x) para indicar el tipo de dato y las dos siguientes (yy) para
indicar el tipo de matriz, apareciendo otros tipos de matrices, además de los que
315
Apéndice C: BLAS y LAPACK
aparecen en la Tabla 6.2 (véase [ABBD92], página 9). Las siguientes tres letras (zzz)
indican la función o algoritmo que implementan. Por ejemplo, con xyySVX se
referencian a todas las rutinas driver “expertas“ para la resolución de sistemas lineales
de ecuaciones, y con xyySV a todas las rutinas driver “simples” que resuelven sistemas
lineales de ecuaciones.
Los nombres de rutinas auxiliares siguen un esquema similar excepto que las letras yy
son normalmente LA. Hay dos tipos de excepciones a esta regla. Las rutinas que
implementan versiones no orientadas a bloques de un algoritmo orientado a bloques,
tienen nombres similares a las rutinas que implementan los algoritmos orientados a
bloques, con el sexto carácter igual a 2. Por ejemplo, la rutina SGETF2 es una versión
no orientada a bloques de la rutina SGETRF (esta rutina calcula la descomposición LU
con pivotamiento parcial de filas de una matriz). La otra excepción la presentan ciertas
rutinas que pueden ser vistas como extensiones del BLAS utilizando, en este caso, un
esquema similar al usado en las rutinas del BLAS.
A continuación se detallan los problemas resueltos por algunas de las rutinas del
LAPACK.
Rutinas driver.
•
Resolución de múltiples sistemas lineales de ecuaciones.
•
Resolución del problema lineal de mínimos cuadrados.
•
Obtención de los valores propios (factorización de Schur) y singulares
(descomposición en valores singulares) de una matriz.
•
Obtención de los valores propios generalizados de una matriz.
Rutinas computacionales:
•
Resolución de un sistema lineal de ecuaciones.
•
Factorizaciones ortogonales de una matriz: QR, RQ, LQ y QL.
•
Resolución de problemas parciales relacionados con el cálculo de valores propios
y singulares: equilibrado de una matriz, cálculo de números de condición y
subespacios invariantes de una matriz, etc.
Tratamiento de Errores en el LAPACK
Además de proporcionar rutinas más rápidas que las que se tenían anteriormente, el
LAPACK añade, al software de computación numérica anterior, unas cotas de error más
precisas y comprensibles.
Las cotas de error tradicionales están basadas en el hecho de que los algoritmos en el
LAPACK, al igual que los de sus predecesores LINPACK y EISPACK, son estables
“hacia atrás”. Las cotas de error dadas por algunas rutinas del LAPACK dependen de
algoritmos que satisfacen una condición más fuerte de estabilidad, llamada estabilidad
hacia atrás relativa a las componentes.
La rutina del LAPACK _LAMCH permite calcular toda una serie de parámetros
característicos de la máquina sobre la que se implementa el LAPACK.
A continuación se presenta un análisis de errores estándar para la evaluación de una
función escalar y = f (z ) . Sea alg(z ) la salida de una rutina que implementa a f (z ) ,
316
Apéndice C: BLAS y LAPACK
incluyendo los errores de redondeo. Si alg( z ) = f ( z + δ ) , con δ pequeño, entonces se
dice que alg es un algoritmo estable hacia atrás para f (z ) o que el error hacia atrás δ
es pequeño. En otras palabras, alg(z ) es el valor exacto de f (z ) para una entrada
ligeramente perturbada z + δ (algunas veces los algoritmos satisfacen únicamente
alg( z ) = f ( z + δ ) + ν , donde δ y ν son pequeños, aunque esto no cambia
significativamente el análisis de error).
Si se supone que f ( z ) es derivable, entonces se puede realizar la aproximación
f ( z + δ ) ≈ f ( z ) + f ′( z )δ ,
por lo que se puede estimar el error cometido a partir de la expresión
alg( z ) − f ( z ) = f ( z + δ ) − f ( z ) ≈ f ′( z )δ .
Por lo tanto, si δ es pequeño y la derivada f ' ( z ) no es elevada, entonces el error
alg( z ) − f ( z ) será pequeño. En general, solo es necesario que se cumpla la condición
de Lipschitz, para utilizar la constante de Lipschitz en lugar de f ' ( z ) en la obtención de
la cota del error.
El error relativo cometido será
alg( z ) − f ( z )
f ′( z ) z δ
≤
≡ κ ( f , z) | δ / z | ,
f ( z)
f ( z) z
donde κ ( f , z ) es el número de condición de f (z ) y | δ / z | el error relativo regresivo
de z . Por lo tanto, se puede obtener una cota del error multiplicando el número de
condición por el error regresivo. El problema está mal condicionado si su número de
condición es grande, y mal formulado si su número de condición es infinito (o no
existe).
Si f (z ) es una función vectorial, entonces f ' ( z ) es la matriz Jacobiana, de manera que
los valores absolutos anteriores se sustituyen por p-normas vectoriales y matriciales. En
este caso, se puede hablar de estabilidad regresiva. Por ejemplo, un método estable para
resolver sistemas de ecuaciones lineales
Ax = b ,
permite obtener una solución x' que satisface
( A + E ) x' = b + f
siendo
|| E ||∞
|| A ||∞
y
|| f ||∞
|| b ||∞
valores cercanos a la precisión de la máquina ε .
La mayor parte de los algoritmos en el LAPACK son estables en el sentido descrito:
cuando se aplican sobre una matriz A , producen resultados exactos para una matriz
ligeramente perturbada A + E , donde el cociente
317
Apéndice C: BLAS y LAPACK
|| E ||∞
|| A ||∞
está cercano a ε . Hay algunas matizaciones a esta afirmación. Cuando se calcula la
inversa de una matriz, la matriz de error regresivo E es pequeña considerando que las
columnas de la matriz inversa se calculan una a una, con una E diferente para cada
columna. Esto mismo es cierto en el cálculo de vectores propios de una matriz no
simétrica. Cuando se calculan los valores y vectores propios de
A − λB , AB − λI ,
con A simétrica y B simétrica y definida positiva (utilizando las rutinas xSYGV o
xHEGV), entonces el método puede no ser estable hacia atrás, si B tiene un número de
condición elevado, aunque también se tengan cotas de error útiles. La resolución de la
ecuación matricial de Sylvester
AX + XB = C ,
puede no ser estable hacia atrás, aunque otra vez se obtengan cotas del error útiles para
X.
El cálculo de números de condición puede ser a veces muy costoso. Por ejemplo, el
coste aritmético de resolver el sistema Ax = b es de orden n 3 y el del cálculo de κ ∞ ( A)
es exactamente tres veces mayor. En este caso, κ ∞ ( A) puede ser estimado con un coste
de orden n 2 . En general, los números de condición y las cotas de error se basan en la
estimación de números de condición ([Hage84], [High873], [High882]). El precio
pagado por utilizar estimadores es que el error puede ser subestimado en algunas
ocasiones. Años de experiencia confirman la exactitud de los estimadores utilizados,
aunque se pueden construir ejemplos en los que no ocurre esto ([High902]).
El anterior análisis de errores tiene un inconveniente: Si se utiliza la ∞-norma para
medir el error regresivo, entonces entradas de igual magnitud en δ contribuyen de igual
manera a la cota del error final
κ ( f , z) =
|| δ ||
.
|| z ||
Esto indica que si z es disperso o tiene algunas entradas pequeñas, entonces un
algoritmo estable hacia atrás puede producir grandes cambios comparados con los
valores originales. Si estos valores son conocidos exactamente por el usuario, puede
ocurrir que estos errores sean inaceptables o que las cotas de error sean
inaceptablemente elevadas.
Sea, por ejemplo,
Ax = b
un sistema diagonal de ecuaciones lineales.
Cada componente de la solución del sistema anterior se puede calcular mediante
eliminación Gaussiana
xi =
bi
.
aii
La cota de error usual es aproximadamente igual a
318
Apéndice C: BLAS y LAPACK
εκ ( A) =
ε max i | aii |
min i | aii |
,
la cual puede sobrestimar el error verdadero.
El LAPACK resuelve este problema utilizando algunos algoritmos cuyo error regresivo
δ es un pequeño cambio relativo en cada componente de z ( | δ i |= O(ε ) | zi | ). Este
error regresivo tiene en cuenta tanto la estructura dispersa de z como la información de
las pequeñas entradas. Estos algoritmos son estables hacia atrás relativos a las
componentes. Además, las cotas del error reflejan estos errores regresivos más
pequeños.
Si los datos de entrada tienen una incertidumbre independiente en cada componente,
cada componente debe tener al menos una incertidumbre relativa pequeña, puesto que
cada una ellas es un número en coma flotante. En este caso, el algoritmo contribuye a
una incertidumbre extra que no es mucho peor que la incertidumbre de los datos de
entrada, de manera que se podría decir que la respuesta dada por un algoritmo estable
hacia atrás relativo a las componentes es tan exacta como la que garantiza el dato.
Cuando se resuelve el sistema lineal
Ax = b
utilizando, por ejemplo, la rutina driver “experta” xyySVX o la rutina computacional
xyyRFS, se calcula una solución x' que satisface
( A + E ) x' = b + f ,
siendo eij pequeños cambios relativos en aij y f i un pequeño cambio en bi . En
particular, si A es diagonal, entonces la correspondiente cota de error es siempre
pequeña, como cabría esperar.
El LAPACK alcanza esta exactitud en la resolución de sistemas de ecuaciones lineales,
en la descomposición bidiagonal en valores singulares de una matriz o en el problema
tridiagonal y simétrico de los valores propios, dando facilidades para alcanzar esta
exactitud en problemas de mínimos cuadrados.
Equilibrado y Condicionamiento en LAPACK
Existen dos pasos previos que permiten un cálculo más sencillo de los valores propios
de una matriz.
El primer paso consiste en una permutación de filas y columnas de la matriz A de
manera que la matriz A' esté más cerca de una estructura triangular superior (más
cercana a la forma Schur):
A' = PAP T ,
siendo P una matriz de permutación.
El segundo paso consiste en escalar la matriz A' por medio de una matriz diagonal D
que permite que las filas y las columnas de A' ' estén entre sí más cercanas en norma:
A' ' = DA' D −1 .
El escalado puede reducir la norma de la matriz A con respecto a los valores propios,
posibilitando la disminución de los errores de redondeo ([WiRe71]).
319
Apéndice C: BLAS y LAPACK
El equilibrado de una matriz se realiza mediante la rutina driver xGEEVX, la cual
realiza una llamada a la rutina computacional xGEBAL. El usuario puede indicar a
xGEEVX si desea permutar, escalar, realizar ambas o no hacer ninguna de las dos
operaciones; esto se especifica mediante el parámetro de entrada BALANC. La
permutación no tiene efecto sobre los números de condición o su interpretación como se
ha descrito anteriormente. Sin embargo, el escalado cambia su interpretación, como a
continuación se detalla.
Los parámetros de salida de xGEEVX, SCALE (vector real de longitud n ),
ILO(entero), IHI(entero) y ABNRM(real) describen el resultado de equilibrar una
matriz A de dimensión n , obteniéndose una matriz A' ' . La matriz A' ' es triangular
superior por bloques con al menos tres bloques: de 1 a ILO-1, de ILO a IHI, y de IHI+1
a n . El primer y último bloque son triangulares superiores. Estos bloques no están
escalados; solo el bloque que se encuentra entre ILO a IHO está escalado. La uno norma
de A' ' es devuelta en la variable ABNRM.
Los números de condición descritos en anteriormente son calculados para la matriz
equilibrada A' ' y, por lo tanto, es necesario realizar alguna interpretación para
aplicarlos a los valores y vectores propios de la matriz original A . Para poder utilizar
las cotas destinadas a los valores propios de las tablas anteriores se deben reemplazar
|| E ||2 y || E || F por O(ε ) || A' ' ||= O(ε )ABNRM . Para poder utilizar las cotas de los
vectores propios, se debe tener en cuenta que las cotas sobre rotaciones de vectores
propios son las dadas por los vectores propios x' ' de A' ' , los cuales están relacionados
con los vectores propios x de A mediante
DPx = x' ' , x = P T D −1 x .
Proyector Espectral y Separación de Matrices
Sea A ∈ ℜ nxn en la forma de Schur. Si se considera un grupo de m ≥ 1 valores propios
de A , incluyendo sus multiplicidades, entonces A se puede descomponer como
( 6.4 )
⎡A
A = ⎢ 11
⎣0
A12 ⎤
,
A22 ⎥⎦
donde los valores propios de la submatriz A11 ∈ ℜ nxn son exactamente los
correspondientes al grupo elegido. En la práctica, si los valores propios sobre la
diagonal de A están en otro orden, la rutina xTREXC permite desplazarlos al primer
bloque diagonal.
Se define el proyector espectral, o simplemente el proyector P correspondiente a los
valores propios de A11 ([Stew73], [Karl59]), como
⎡I
P=⎢ m
⎣0
R⎤
,
0 ⎥⎦
donde R satisface la ecuación matricial de Sylvester
( 6.5 )
A11 R − RA22 = A12
que puede resolverse utilizando la rutina xTRSYL.
Asociado al proyector espectral se encuentra el número
320
Apéndice C: BLAS y LAPACK
s=
1
1
=
.
|| P ||2
1+ || R ||22
Puesto que el valor de s es difícil calcular, se utiliza una estimación del mismo definida
como
1
1+ || R ||2F
.
Esta aproximación difiere como mucho de su valor correcto en un factor igual a
min(m, n − m) .
La estimación de sep( A11 , A22 ) se realiza con la rutina xLACON (véase [Hage84],
[Hig187] y [High882]), la cual estima la norma de un operador lineal
|| T ||1 = max j ∑i| tij | ,
mediante el cálculo de Tx y T T x , para cualquier vector arbitrario x . En este caso, la
multiplicación de T por un vector arbitrario x , se obtiene resolviendo la ecuación
matricial de Sylvester ( 6.5 ) mediante la rutina xTRSYL con un miembro derecho
arbitrario, y el producto de T T por un vector arbitrario x , resolviendo la misma
T
. El coste aritmético necesario
ecuación, pero reemplazando A11 por A11T y A22 por A22
para resolver cualquiera de las ecuaciones es O(n 3 ) o como poco O(n 2 ) , si m << n .
Puesto que al utilizar || T ||1 en lugar del valor verdadero de sep, que es || T ||2 , entonces
la estimación de sep puede diferir del valor verdadero como mucho en un factor
m( n − m) .
Otra formulación que permite, en principio, calcular exactamente el valor de
sep( A11 , A22 ) es
T
⊗ Im ) .
sep( A11 , A22 ) = σ min ( I n−m ⊗ A11 − A22
Este método es generalmente impracticable, puesto que hay que calcular el menor valor
singular de una matriz de orden m(n − m) . Por lo tanto, se requiere un espacio de
trabajo extra del orden n 4 y del orden de n 6 operaciones, valores mucho mayores que
los obtenidos en el método de estimación del anterior párrafo.
La expresión sep( A11 , A22 ) mide la “separación” del espectro de A11 y A22 en el
siguiente sentido. Este valor es cero si y solo si las matrices A11 y A22 tienen un valor
propio común, y es pequeño si existe una pequeña perturbación de cualquiera de ellas
que haga que tengan en común un valor propio. Si A11 y A22 son matrices hermitianas,
entonces sep( A11 , A22 ) es precisamente el intervalo o mínima distancia entre un valor
propio de A11 y otro de A22 . Por otra parte, si A11 y A22 no son hermitianas, entonces
sep( A11 , A22 ) puede ser mucho mayor que esta distancia.
321
Apéndice C: BLAS y LAPACK
Otras Características del LAPACK
Argumentos Matriciales
Cada argumento de tipo matricial de dos dimensiones se encuentra seguido, en la lista
de argumentos, por su dimensión principal (LDA), cuyo nombre viene expresado por
LD<nombre de la matriz>. Los argumentos de una matriz están declarados
normalmente como matrices de tamaño supuesto (segunda dimensión igual a *). Así por
ejemplo, una matriz A se puede declarar como
REAL A(LDA,*)
INTEGER LDA,
aunque las líneas comentadas de la rutina indican que A es dimensión (LDA,N),
indicando con ello que el valor mínimo requerido para la segunda dimensión es N. Esta
declaración se utiliza para superar algunas limitaciones en el FORTRAN 77 estándar.
En particular, permite que la rutina pueda ser invocada cuando la dimensión relevante
(N, en este caso) sea igual cero. Sin embargo, las dimensiones de la matriz actual en el
programa que llama debe ser al menos 1 (LDA en este ejemplo).
Matrices de Trabajo
Muchas de las rutinas del LAPACK requieren que una o más matrices de trabajo sean
pasadas como argumentos. Estas matrices suelen representarse con el nombre WORK y,
algunas veces, como IWORK, RWORK o BWORK, para distinguir entre las matrices
de trabajo de tipo entero, real o lógico.
Muchas rutinas que implementan algoritmos orientados a bloques necesitan un espacio
de trabajo suficiente para contener un bloque de filas o columnas de la matriz. En tales
casos, la longitud declarada para la matriz de trabajo debe ser pasada mediante un
argumento separado LWORK, el cual se encuentra a continuación del argumento
WORK en la lista de argumentos.
Argumento Info
Todas las rutinas documentadas tienen un argumento de diagnóstico INFO que indica el
éxito o fallo en la ejecución de la rutina, como a continuación se detalla:
•
INFO=0: indica una finalización con éxito.
•
INFO<0: valor ilegal de uno o varios argumentos.
•
INFO>0: fallo en la realización de cálculos.
Todas las rutinas driver y auxiliares comprueban que los argumentos de entrada, tales
como N o LDA, o los argumentos de opción tengan valores adecuados. Si se encuentra
un valor ilegal en el i-ésimo argumento, la rutina pone INF con valor –i, llamando a
continuación a la rutina de tratamientos de errores XERBLA. La versión estándar de
XERBLA da un mensaje de error y finaliza la ejecución de la rutina.
Determinación del Tamaño de Bloque Óptimo
Las rutinas del LAPACK que implementan algoritmos orientados a bloques necesitan
determinar el tamaño de bloque óptimo. El diseño del LAPACK está realizado de
manera que la elección del tamaño de bloque esté oculta, tanto como sea posible, a la
vista de los usuarios, pero al mismo tiempo sea fácilmente accesible para los
322
Apéndice C: BLAS y LAPACK
instaladores del software, puesto que optimizan el LAPACK para una determinada
máquina.
Las rutinas del LAPACK llaman a la función ILAENV para obtener, entre otros valores,
el tamaño óptimo de bloque. Esta rutina contiene valores por defecto que conducen a un
buen comportamiento sobre un gran número de máquinas pero, para poder obtener
rendimientos óptimos, es necesario modificar ILAENV para cada máquina en particular.
El tamaño de bloque puede depender también de la rutina de llamada, de la
combinación de argumentos opcionales (si los hay) y de las dimensiones del problema.
Si ILAENV devuelve un tamaño de bloque igual a 1, entonces la rutina ejecuta el
algoritmo no orientado a bloques, llamando a rutinas del nivel 2 del BLAS y nunca a las
del nivel 3.
Las rutinas que utilizan a la rutina ILAENV realizan los siguientes pasos:
1. Determinación del tamaño de bloque óptimo usando ILAENV.
2. Si el valor de LWORK indica que se ha proporcionado suficiente espacio de
trabajo, entonces la rutina usa el tamaño óptimo; de otro modo, la rutina
determina el bloque de mayor tamaño que puede utilizarse con la cantidad de
espacio de trabajo proporcionada.
3. Si el nuevo tamaño de bloque no es inferior a un valor umbral (también devuelto
por ILAENV), la rutina utiliza este nuevo valor; de otro modo, la rutina utiliza la
versión no orientada a bloques del algoritmo.
El mínimo valor de LWORK, que puede necesitarse para utilizar el tamaño de bloque
óptimo, se devuelve en WORK(1). Por lo tanto, la rutina utiliza el mayor tamaño de
bloque posible del espacio de trabajo proporcionado.
La especificación de LWORK da el valor mínimo necesario para obtener resultados
correctos. Este valor coincide con el espacio de trabajo necesario para ejecutar la
versión no orientada a bloques del algoritmo. Si el valor proporcionado es menor que
ese valor mínimo, entonces se producirá un error en el argumento LWORK.
Si hay duda del espacio de trabajo necesario, los usuarios deben suministrar una
cantidad suficiente de memoria y examinar a continuación el valor de WORK(1) en la
salida.
Prestaciones del LAPACK
El LAPACK fue diseñado inicialmente para obtener buenas prestaciones sobre
máquinas vectoriales de un solo procesador o sobre multiprocesadores con memoria
compartida. El software del LAPACK también ha sido usado posteriormente sobre
nuevas máquinas obteniéndose también buenos resultados (estaciones de trabajo
superescalares de altas prestaciones). A continuación se comentan los principales
factores que afectan a las prestaciones del LAPACK sobre diferentes tipos de máquinas.
•
Vectorización: Diseñar algoritmos vectorizables en álgebra lineal es normalmente
sencillo. Sin embargo, para muchos cálculos computacionales existen diversas
variantes, todas ellas vectorizables, pero con prestaciones diferentes. Las
prestaciones dependen de las características de la máquina, tales como el
encadenamiento de sumas y productos vectoriales. Sin embargo, cuando los
algoritmos se escriben en un código FORTRAN 77 estándar, las prestaciones
pueden disminuir, debido normalmente a que los compiladores del lenguaje
323
Apéndice C: BLAS y LAPACK
FORTRAN no optimizan el número de accesos a memoria, es decir, se produce un
número excesivo de carga y almacenamiento de vectores en memoria.
•
Movimiento de datos: La causa principal de la limitación del rendimiento de una
unidad en coma flotante escalar o vectorial es la velocidad de transferencia entre los
diferentes niveles de memoria en una máquina. Por ejemplo, la transferencia de
operandos vectoriales entre registros vectoriales, la transferencia de operandos
escalares en un procesador escalar, el movimiento de datos entre la memoria
principal y la memoria local o memoria caché, y la paginación entre la memoria
actual y la del disco en sistemas con memoria virtual. Es deseable maximizar la
razón entre la realización de operaciones en coma flotante y los accesos a memoria,
así como reutilizar datos, tanto como sea posible, mientras son almacenados en los
niveles más altos de la jerarquía de memoria (por ejemplo, registros vectoriales o
memoria caché de alta velocidad). El programador de FORTRAN no tiene un
control explícito sobre estos tipos de movimientos de datos, aunque puede a menudo
influir sobre ellos imponiendo al algoritmo una determinada estructura.
•
Paralelismo: La estructuras de bucles anidados que aparecen en los algoritmos del
álgebra lineal ofrecen la posibilidad de ser paralelizados cuando se implementan
sobre multiprocesadores con memoria compartida. Este es el principal tipo de
paralelismo que se explota en el LAPACK. Este paralelismo puede ser
automáticamente generado por un compilador, aunque habitualmente es necesario
utilizar directivas de compilación que lo permitan.
La clave para obtener en el LAPACK eficiencia y portabilidad es construir el software
haciendo uso, tanto como sea posible, de llamadas al BLAS. La eficiencia del LAPACK
depende de la eficiencia de la implementación del BLAS en la máquina. Por lo tanto, el
BLAS es un interfaz de bajo nivel entre el software del LAPACK y la arquitectura de la
máquina. La portabilidad en el LAPACK se obtiene, por tanto, haciendo uso de
llamadas al BLAS.
El BLAS 1 se utiliza en el LAPACK más por conveniencia que por prestaciones. Las
llamadas del LAPACK a rutinas del BLAS 1 corresponden a una fracción insignificante
de los cálculos computacionales que se realizan, no pudiéndose alcanzar una alta
eficiencia sobre la mayor parte de las supercomputadoras modernas.
El BLAS 2 puede alcanzar las prestaciones máximas en muchos de los procesadores
vectoriales. Sin embargo, sobre otros procesadores vectoriales las prestaciones del
LAPACK se encuentran limitadas por la velocidad de movimientos de datos entre los
diferentes niveles de memoria.
Esta limitación es superada en el BLAS 3, al realizar operaciones en coma flotante de
orden cúbico sobre conjuntos de datos de cardinalidad cuadrática.
324
Apéndice D: SGI Altix 3700
Apéndice D.
SGI Altix 3700
El componente hardware constituye una parte fundamental de un computador puesto
que, de alguna forma, indica el máximo rendimiento que un equipo será capaz de
ofrecer. Complementariamente, será preciso disponer de un sistema operativo eficaz y
versátil que permita manejarlo de manera cómoda y simple y, por otra parte, que los
compiladores y utilidades de desarrollo permitan acercar el rendimiento real al máximo
impuesto por el hardware.
Arquitectura
EL SGI 3700 es un sistema multiprocesador con arquitectura NUMA (Non Uniform
Memory Access) perteneciente a la serie SGI 3000 [SGIA03]. En esta máquina la
memoria está físicamente distribuida sobre todos los procesadores, pero la combinación
del sistema operativo y unos controladores hardware especiales mantienen una imagen
de memoria compartida a nivel de usuario.
Figura 6.1.
Los procesadores corresponden al Intel Itanium II CPU [SGIA03] trabajando a 1.3Ghz,
con 3MB de memoria caché (conocida como “Madison”). La memoria total es de 44
Gb. El hardware se haya dispuesto en forma modular mediante la división en “bricks”:
C-Bricks (Computational bricks), R-bricks (Router bricks), IX-Bricks (Peripheral
bricks) y M-Bricks( Memory bricks). Cada C-Brick contiene un total de 4 procesadores
con un ancho de banda total de 3.2Gb/s.
Software
El servidor SGI Altix 3000 funciona bajo el sistema operativo Linux de 64 bits Red Hat
7.2 con el kernel de Linux 2.4.19. Para mejorar las prestaciones, SGI incluye un entorno
de desarrollo optimizado para la arquitectura Altix 3000, denominado SGI ProPack, que
permite obtener el máximo rendimiento del sistema.
Red Hat es una de las distribuciones de LINUX más popular del mercado hoy en día,
siendo emulada por muchas otras. Es muy sencilla de instalar e incluye la detección
automática de dispositivos, un instalador gráfico y un excelente conjunto de
aplicaciones comerciales en su distribución oficial.
325
Apéndice D: SGI Altix 3700
Compiladores
La serie SGI 3000 dispone en la actualidad de varias versiones de los compiladores
GNU (gcc, g77 y g++) e Intel. Los compiladores de Intel se han diseñado para sacar el
máximo partido posible de las prestaciones teóricas máximas del hardware (tanto del
procesador como del resto de la arquitectura) de los servidores Altix 3000. La última
versión instalada corresponde a la versión 9. Los compiladores de Intel soportan los
lenguajes C, C++ y los estándares de FORTRAN 77, 90 y 95.
El compilador de C y C++ cumple las siguientes características:
•
Compatible con el estándar Ansi C y C++.
•
Compatible binario con GNU gcc.
•
Soporta la mayoría de las extensiones de lenguaje GNU C y C++.
•
Compatibilidad con C99 (subconjunto).
•
Se pueden mezclar binarios de código C con gcc 3.x e Intel 7.0.
•
Ficheros objetos C pueden ser enlazados con el compilador de Intel o con gcc.
Si se comparan el código generado por los compiladores de Intel con los de GNU, el
primero resulta ser varias veces más rápido que el correspondiente a GNU.
Librerías
Para el Altix 3700 se disponen de dos librerías optimizadas del BLAS y LAPACK: Intel
MKL [IMKL03] versión 8.0, y el SGI SCSL (Scientific Computing Software Library),
versión 1.5.1. En las implementaciones realizadas se ha utilizado las librerías SCSL,
pues contiene al BLAS y al LAPACK totalmente optimizados y paralelizados para la
arquitectura de SGI. La documentación de las rutinas de estas librerías se encuentra
disponible en la página http://techpubs.sgi.com.
326
Bibliografía
Bibliografía
[ABBD92]
[ABHI00]
[Abra71]
[AHBI99]
[AHIP05]
[AlPr81]
[AnDo92]
[AnMo71]
[ArCa76]
[AsPe91]
[BaGr96]
[Balz80]
[Barr79]
[BaSt71]
[BaSt72]
[BeDo91]
[Bell53]
[Bell83]
[BeMe04]
[Benn02]
[Benn04]
[Bern05]
[Bhat97]
[BiHM04]
E. Anderson, Z. Bai, C. Bischof, J. Demmel and others, “LAPACK Users’s Guide”. SIAM,
1992.
E. Arias, I. Blanquer, V. Hernández y J. Ibáñez, “Nonsingular Jacobian Free Piecewise
Linealization of State Equation”. Controlo 2000, Portuguese Association of Automatic
Control, 2000.
A. A. Abramov, “On the Boundary Conditions at a Singular Point for Linear Ordinary
Differentials Equations”, U.S.S.R. Computational Mathematics and Mathematical Physics,
vol. 11, pp. 363-367, 1971.
E. Arias Antúnez, V. Hernández García, I. Blanquer Espert and J. Ibáñez González,
“Nonsingular Jacobian Free Piecewise Linearization of Ordinary Differential Equations
(EDO)”. Second Workshop Niconet on: Numerical Control Software: SILICOT,
Rocquencourt, France, 1999.
E. Arias, V. Hernández, J. J. Ibáñez and J. Peinado, “Solving Differential Riccati Equations
by Using BDF Methods”. Technical Report DSIC-II/05/05, UPV, Valencia, 2005.
R. C. Allen and S. A. Pruess, “An Analysis of an Inverse Problem in Ordinary Differential
Equations”. SIAM J. Sci. Statist. Comput., 2, pp. 176–185, 1981.
E. Anderson, J. Dongarra and S. Ostrouchov, “LAPACK Working Note 41 Installation
Guide for LAPACK”. Department of Computer Science University of Tennessee
Knoxville, Tennessee, 1992.
B. D. Anderson and J. B. Moore, “Linear Optimal Control”. Prentice Hall, Englewood
Cliffs, N.J., 1971.
E. S. Armstron and A. K. Caglayan, “An Algorithm for the Weighting Matrices in the
Sampled-Data Optimal Linear Regulator Problem”. NASA Langley Res. Ctr., Hampton,
VA, NASA Tech. Note NASA TN D-8372, 1976.
U. M. Ascher, L.R. Petzold, “Computer Methods for Ordinary Differential Equations and
Differential-Algebraic Equations”. SIAM, 1998.
G. A. Baker, Jr. and P. Graves-Morris, “Padé Approximants”. 2nd ed., Encyclopedia Math.
Appl., Cambridge University Press, Cambridge, UK, 1996.
L. A. Balzer, “Accelerated Convergence of the Matriz Sign Function Method of Solving
Lyapunov, Riccati, and other Matriz Equations”. Internat. J. Control, Vol. 32, pp. 10571078, 1980.
A. Y. Barraud, “Investigations Autor de la Function Signe d’une Matrice-Application à
l’Équation de Riccati”. R.A.I.R.O. Automat. Syst. Anal. Control, Vol. 13, pp. 335-368,
1979.
R. H. Bartels and G. W. Stewart, “Algorithm 432, Solution of the Matrix Equation
AX+XB=C”, Communications of the ACM, Vol. 15, Nº 9, pp. 820-913, 1972.
R.H. Bartels and G.W. Stewart, “Solution of the Matrix Equation AX + XB = C: Algorithm
432”. Comm. ACM, 15, pp. 820–826, 1972.
A. Beguelin, J. Dongarra, et al., “A user’s Guide to PVM: Parallel Virtual Machine”. Tech.
Report TM-11826, Oak Ridge National Laboratory, 1991.
R. Bellman, “Stability Theory of Differential Equations”. McGraw-Hill Book Co. Inc.,
New York, 1953.
R. Bellman, “On the Calculation of Matrix Exponential”. Linear and Multilinear Algebra,
41, pp. 73-79, 1983.
P. Benner and H. Mena, “BDF Methods for Large-Scale Differential Riccati Equations”.
Fakultät für Mathematik Technische Universität Chemnitz, D-09107 Chemnitz, Germany,
2004.
P. Benner, “Efficient Algorithms for Large-Scale Quadratic Matrix Equations”. Proc. Appl.
Math. Mech., 1(1), 492–495, 2002.
P. Benner, “Solving Large-Scale Control Problems”. IEEE Control Systems Magazine,
14(1), pp. 44–59, 2004.
D. S. Bernstein, “Matrix Mathematics”. Pricenton University Press, 2005.
R. Bhatia, “Matrix Analysis”, Springer-Verlag, New York, 1997.
D. A. Bini, N. J. Higham, And Beatrice Meini, “Algorithms for the Matrix pth Root”.
Numerical Analysis Report 454, Manchester Centre for Computational Mathematics,
University of Manchester, 2004.
327
Bibliografía
[BjHa83]
[BlDo99]
[Brew78]
[BrGS92]
[BrHi89]
[BrLo87]
[Butc87]
[Byer87]
[ByHi75]
[CDOP95]
[ChAL90]
[Chan69]
[ChHi01]
[ChLa87]
[Choi90]
[Choi92]
[Coen01]
[Copp74]
[DaH103]
[DaH203]
[Dahl63]
[DaMa73]
[DaSm02]
[Davi04]
A. Björck and S. Hammarling, “A Schur Method for the Square Root of a Matrix”. Linear
Algebra Appl. 52/53, pp. 127-140, 1983.
S. Blackford, J. Dongarra, “LAPACK Working Note 41 Installation Guide for LAPACK,
Version 3.0”. Department of Computer Science University of Tennessee Knoxville,
Tennessee, 1999.
J. W. Brewer, “Kronecker Product and Matrix Calculus in System Theory”. IEEE
Transactions on Circuits and Systems, 25 (9), pp. 772-781, September, 1978.
R.W. Brankin, I. Gladwell, and L.F. Shampine, “RKSUITE: a suite of Runge-Kutta codes
for the initial value problem for ODEs”. Softreport 92-S1, Department of Mathematics,
Southern Methodist University, Dallas, Texas, U.S.A, 1992.
P. N. Brown and A. C. Hindmarsh, “Reduced Storage Matrix Methods in Stiff ODE
Systems”. J. Appl. Math. & Comp., 31, pp.40-91, 1989.
D. Brown and J. Lorenz, “A High-Order Method for Stiff BVPs with Turning Points”.
SIAM J. Sci. Statist. Comput., pp. 790-805, 1987.
J. C. Butcher, “The Numerical Analysis of Ordinary Differential Equations: Runge-Kutta
and General Linear Methods”. Wiley, Chichester, 1987.
R. Byers, “Solving the Algebraic Riccati Equation with the Matrix Sign Function”. Linear
Algebra Appl., Vol. 85, pp. 267–279, 1987.
G. D. Byrne and A. C. Hindmarsh, “A Polyalgorithm for the Numerical Solution of
Ordinary Differential Equations”. ACM Transactions on Mathematical Software, 1, pp. 7196, 1975.
J. Choi, J. Dongarra, S. Ostrouchov, A. Petitet, D. Walker, and R. C. WHALEY, “A
Proposal for a Set of Parallel Basic Linear Algebra Subprograms”. Computer Science Dept.
Technical Report CS-95-292, University of Tennessee, Knoxville, TN, May 1995.
C. H. Choi and A. J. Laub, “Efficient Matrix-valued Algorithms for Solving Stiff Riccati
Differential Equations”. IEEE Trans. on Automatic Control, 35(7), pp. 770–776, 1990.
K. W. Chang, “Remarks on a Certain Hypothesis in Singular Perturbations”. Proc.
American Math. Soc., 23 , pp. 41-45, 1969.
S. H. Cheng, N. J. Higham, C. S. Kenney, and A. J. Laub, “Approximating the Logarithm
of a Matrix to Specified Accuracy”. SIAM J. Matrix Anal. Appl., 22, pp. 1112–1125, 2001.
C. H. Choi and A.J. Laub, “Improving the Efficiency of Matrix Operations in the
Numerical Solution of Large Implicit Systems of Linear Differential Equations”. Int. J.
Control, 46, pp. 991-100, 1987.
C. H. Choi, “Efficient Algorithms for Solving Stiff Matrix-valued Riccati differential
equations”. Phd., 1988.
C. H. Choi, “Time-Varyng Riccati Differential Equations with Known Analytic Solutions”.
IEEE Trans. on Automatic Control, 37(5), pp. 642–645, 1992.
Stéphane Coen et al., “White-light Supercontinuum Generation with 60-ps Pump Pulses in
a Photonic Crystal Fiber”. Opt. Lett 26, 1356 (2001).
W. A. Coppel., “Matrix Quadratic Equations”. Bull. Australian Math. Soc., 10 pp 377-401,
1974.
P. I. Davies and N. J. Higham, “A Schur-Parlett Algorithm for Computing Matrix
Functions”. SIAM J. Matrix Analysis Appl., Vol. 25, No. 2, pp 464-485, 2003.
P. I. Davies and N. J. Higham, “Computing f(A)b for Matrix Functions f”. Numerical
Analysis Report No. 436, Manchester Centre for Computational Mathematics, Manchester,
England, November 2003. Submitted to Proceedings of the Third International Workshop
on QCD and Numerical Analysis, Edinburgh, 2003.
G. Dahlquist, “A Special Stability Problem for Linear Multistep Methods”. BIT 3, pp. 2743, 1963.
E. J. Davison and M. C. Maki, “The Numerical Solution of the Matrix Riccati Differential
Equation”. IEEE Trans. on Automatic Control, AC-18, pp. 71-73, 1973.
P. I. Davies and M. I. Smith, “Updating the Singular Value Decomposition”. Numerical
Analysis Report No. 405, Manchester Centre for Computational Mathematics, Manchester,
England, August 2002. To appear in J. Comput. Appl. Math.
P. I. Davies, “Structured Conditioning of Matrix Functions”. Numerical Analysis Report
No. 441, Manchester Centre for Computational Mathematics, Manchester, England,
January 2004.
328
Bibliografía
[DBMS79]
J. J. Dongarra, J. R. Bunch, C. B. Moler and G. W. Stewart, “LINPACK Users’ Guide”.
SIAM, Philadelphia, PA, 1979.
[DDHH90] J. J. Dongarra, J. Du Croz, S. Hammerling, and R. J. Hanson, “A Set of Level 3 Basic
Linear Algebra Subprograms”. ACM Trans. Math. Soft, 16(90), 1990.
[DeBe76]
E. D. Denman and A. N. Beavers, “The Matrix Sign Function and Computations in
Systems”. Appl. Math. Comp., vol. 2, pp. 63-94, 1976.
[DEES82]
G. Dahlquist, L. Edsberg, G. Skollermo and G. Soderlind, ”Are the Numerical Methods
and Software Satisfactory for Chemical Kinetecs?”. Numerical Integration of DE and
Large Linear Systems, J. Hinze, ed. Springer-Verlag, pp. 149-164, 1982.
[DeHi90]
J. W. Demmel and N. J. Higham, ”Improved Error Bounds for Undetermined Systems
Solvers”. Computer Science Dept. Technical Report CS-90-113, University of Tennesse,
Knoxville, 1990.
[DeSc83]
J. E. Dennis and R. B. Schnabel, “Numerical Methods for Unconstrained Optimization and
Nonlinear Equations”. Prentice-Hall, Englewood Cliffs, NJ, 1983.
[Diec92]
L. Dieci, “Numerical Integration of the Differential Riccati Equation and some Related
Issues”. SIAM, 29(3), pp. 781–815, 1992.
[DiEi94]
L. Dieci and T. Eirola, “Positive Definitess in the Numerical Solution of Riccati
Differential Equations”. Numerical Math, 67, pp. 303–313, 1994.
[DiPa00]
L. Dieci and A. Papini, “Conditioning and Padé Approximation of the Logarithm of a
Matrix”. SIAM J. Matrix Anal. Appl., Vol. 21, pp. 913–930, 2000.
[DoLe76]
P. Dorato and A. Levis, “Optimal Linear Regulators: The Discrete Time Case”. IEEE
Trans. Automat. Control, col AC-16, 1971.
[DoVan92] J. Dongarra, R. Van De Geijn and D. W. Walter, “A Look at Scalable Dense Linear
Algebra Libraries”. Proceedings of the Scalable High-Performance Computing Conference,
IEEE Publishers, pp. 372-379, 1992.
[DoWhS95] J. Dongarra and R. C. Whaley, “A User's Guide to the BLACS v1.1”. Computer Science
Dept. Technical Report CS-95-281, University of Tennessee, Knoxville, TN, 1995.
[DrGr98]
V. Druskin, A. Greenbaum and L. Knizhnerman, “Using Nonorthogonal Lanczos Vectors
in the Computation of Matrix Functions”. SIAM J. Sci. Comput. 19, pp. 38-54, 1998.
[Fadd59]
V. N. Faddeeva, “Computational Methods of Linear Algebra”. Dover Publications, New
York, 1959.
[Fehl69]
E. Fehlberg, “Low-order Classical Runge-Kutta Formulas with Step-size Control and their
Application to some Heat Transfer Problems. NASA Rept TR R-315, Huntsville, AL, April
15, 1969.
[FeZF03]
A. Ferrando, M. Zacarés, P. Fernández de Córdoba, D. Binosi y J.A. Monsoriu, “Spatial
Soliton Formation in Photonic Crystal Fibers”. Optics Express 11, 452, 2003.
[FeZF04]
A. Ferrando, M. Zacarés, P. Fernández de Córdoba, D. Binosi y J.A. Monsoriu, “Vortex
Solitons in Photonic Crystal Fibers”. Optics Express 12, 817, 2004.
[Gant90]
F. R. Gantmacher, “The Theory of Matrices”. Vol. I, Chelsey, New York, 1990.
[Garc98]
Carmen García López, “Métodos de Linealización para la Resolución Numérica de
Ecuaciones Diferenciales”. Tesis Doctoral, Málaga, 1998.
[GaSa92]
E. Gallopoulos and Saad, “Efficient Solution of Parabolic Equations by Krylov
Approximation Methods”. SIAM J. Sci. Statist. Comput., 13, pp. 1236-1264, 1992.
[GoLR82]
I. Gohberg, P. Lancaster and L. Rodman., “Matrix Polinomials”. Academic Press, New
York, 1982.
[GoNV79] G. H. Golub, S. Nash and C. F. Van Loan, “A Hessenberg-Schur Method for the Matrix
Problem AX+XB=C”. IEEE Trans. Auto. Cont., AC-24, pp. 909-913, 1979.
[GoVa96]
G. H. Golub and C. F. Van Loan, “Matrix Computations”. Third Edition, Johns Hopkins
University Press, Baltimore, Maryland, 1996.
[GoWi76]
G. H. Golub and J. H. Wilkinson, “Ill-Conditioned Eigensystems and the Computation of
the Jordan Canonical Form”. SIAM Review 18, 1976.
[Grif81]
D. H. Griffel, “Applied Functional Analysis”. Ellis Hordwood Series, Mathematics and its
applications, 1981.
[GrLS94]
W. Group, E. Lusk, A. Skjellum, “Using MPI: Portable Parallel Programming with the
Message-Passing Interface”. MIT Press, Cambridge, Massachusetts, 1994.
[GuSA03]
S. Gugercin, D.C. Sorensen, and A.C. Antoulas, “A Modified Low-rank Smith Method for
Large-scale Lyapunov Equations”. Numerical Algorithms, 32(1), pp. 27–55, 2003.
[Hage84]
W. W. Hager, “Condition estimators”. SIAM J. Sci Stat. Comput., 5, pp. 311-316, 1984.
329
Bibliografía
[HaHS00]
[HaNW87]
[HaWa91]
[HaWa96]
[HiBy75]
[Hig103]
[Hig187]
[Hig194]
[Hig203]
[Hig287]
[Hig297]
[High01]
[High02]
[High04]
[High84]
[High86]
[High873]
[High88]
[High882]
[High90]
[HiHi00]
[HiMN03]
[HiMN04]
[Hind74]
[Hind83]
M. A. Hasan, J. A. K. Hasan, and L. Scharenroich, “New Integral Representations and
Algorithms for Computing nth Roots and the Matrix Sector Function of Nonsingular
Complex Matrices”. Proceedings of the 39th IEEE Conference on Decision and Control,
Sydney, Australia, pp. 4247–4252, 2000.
E. Hairer, S. P. Norsett and G. Wanner, “Solving ODE. Nonstiff Problems”. Springer
Verlag, 1987.
E. Harier and G. Wanner, “Computer Methods for Ordinary Differential Equations and
Differential Algebraic Equations”, SIAM, 1998.
E. Hairer and G. Wanner, “Solving Ordinary Differential Equations II: Stiff and
Differential-Algebraic Problems”. Springer-Verlag, 1996.
A. C. Hindmarsh and G. D. Byrne, “Episode, an Experimental Package for the Integration
Of Systems Of Ordinary Differential Equations, Ucid-30112, L.L.L., May, 1975.
N. J. Higham, “A Schur-Parlett Algorithm for Computing Matrix Functions”. SIAM J.
Matrix Anal. Appl., Vol. 25, No. 2, pp. 464-485, 2003.
N. J. Higham, “A Survey of Condition Number Estimation for Triangular Matrices”. SIAM
Review, 29, pp. 575-596, 1987.
N. J. Higham, “The Matrix Sign Decomposition and its Relation to the Polar
Decomposition”. Linear Algebra and Appl., 212/213:3-20, 1994.
N. J. Higham, “Computing the Matrix Cosine”. Kluwer Academic Publishers, Numerical
Algorithms 34, pp. 13–26, 2003.
N. J. Higham, “Computing Real Square Roots of a Real Matrix”. Linear Algebra and
Appl.,88/89, pp. 405-430, 1987.
N. J. Higham, “Stable Iterations for the Matrix Square Root”. Numerical Algorithms, Vol.
15, pp. 227-242, 1997.
N. J. Higham, “Evaluating Padé Approximants of the Matrix Logarithm”. SIAM J. Matrix
Anal. App., Vol. 22, Nº 4, pp. 1126-1135, 2001.
Nicholas J. Higham, “The Matrix Computation Toolbox for MATLAB”. Department of
Mathematics, University of Manchester, Manchester, 2002.
N. J. Higham, “The Scaling and Squaring Method for the Matrix Exponential Revisited”.
Numerical Analysis Report 452, Manchester Centre for Computational Mathematics, 2004.
N. J. Higham, “Newton’s Method for the Matrix Square Root”. Numerical Analysis Report
No. 91, Univ. of Manchester, 1984.
N. J. Higham, “Computing the Polar Decomposition with Applications”. SIAM J. Sci. Stat.
Comput., Vol. 7, pp. 1160-1174, 1986.
N. J. Higham, “A Survey of Condition Number Estimation for Triangular Matrices”. SIAM
Review, 29, pp. 575-596, 1987.
N. J. Higham, “FORTRAN Codes for Estimating the One-Norm of a Real or Complex
Matrix, with Applications to Condition Estimation”. ACM Trans. Math. Soft., 14, pp. 381396, 1988.
N. J. Higham, “FORTRAN Codes for Estimating the One-norm of a Real or Complex
Matrix, with Applications to Condition Estimation”. ACM Trans. Math. Soft., 14, pp. 381396, 1988.
N. J. Higham, “Experience with a Matrix Norm Estimator”. SIAM J. Sci. Stat. Comput.,11,
pp. 804-809,1990.
D. J. Higham and N. J. Higham, “MATLAB Guide”. Society for Industrial and Applied
Mathematics (SIAM), Philadelphia 2000.
N. J. Higham, D. S. Mackey, N. Mackey and F. Tisseur, “Computing the Polar
Decomposition and the Matrix Sign Decomposition in Matrix Groups”. Numerical
Analysis Report No. 426, Manchester Centre for Computational Mathematics, Manchester,
England, April 2003. Revised November 2003. To appear in SIAM J. Matrix Anal. Appl.
N. J. Higham, D. S. Mackey, N. Mackey, and F. Tisseur, “Functions Preserving Matrix
Groups and Iterations for the Matrix Square Root”. Numerical Analysis Report 446,
Manchester Centre for Computational Mathematics, Manchester, England, March 2004.
A. C. Hindmarsh, “Gear, Ordinary differential Equation System Solver”. Ucid-30001, rev.
3, l.l.l., December, 1974.
A. C. Hindmarsh, “ODEPACK, a Systematized Collection of ODE Solvers”. Scientific
Computing, R. S. Stepleman et al. (eds.), North-Holland, Amsterdam, Vol. 1 of IMACS
Transactions on Scientific Computation, pp. 55-64, 1983.
330
Bibliografía
[HiSh90]
[HoJo91]
[HoLS97]
[HoWa78]
[Hunt79]
[Ibañ97]
[IMKL03]
[Iser98]
[KaBu61]
[KaEn66]
[Kall73]
[Kalm61]
[Kamm76]
[Karl59]
[KaRu74]
[KeL189]
[KeL289]
[KeLa91]
[KeLa92]
[KeLa98]
[KeLe82]
[KeLe85]
[Kniz91]
[KoBa95]
[Lain76]
[LaMi85]
[Laub82]
N. J. Higham and R. S. Schreiber, “Fast Polar Decomposition of an Arbitrary Matrix”.
SIAM J. Sci. Stat. Comput., 11, pp. 648-655,1990.
R. A. Horn and C. R. Johnson, “Topics in Matrix Analysis”. Cambridge University Press,
London, 1991.
M. Hochbruck, C. Lubich and H. Selhofer, “Exponential Integrators for Large Systems of
Differential Equations”. SIAM J. Numer. Anal. 34, pp. 1911-1925, 1997.
W. D. Hoskins and D. J. Walton, “A Faster Method of Computing the Square Root of a
Matrix”. IEEE Trans. Automat. Control. AC-23(3), pp. 494–495, 1978.
E. Huntley, “A Note on the Application of the Matrix Riccati Equation to the Optimal
Control of Distributed Parameter Systems”. IEEE Trans. On Automatic Control, AC-24,
pp. 487-489, 1979.
J. Javier Ibáñez González, “Algoritmos Paralelos para el Cálculo de la Exponencial de una
Matriz sobre Multiprocesadores de Memoria Compartida”. Proyecto Fin de Carrera UPV,
1997.
Intel Corporation, “Intel® Math Kernel Library, Reference Manual”. 2003.
A. Iserles, “A First Course in the Numerical Analysis of Differential Equations”.
Cambridge Texts in Applied Mathematics, University of Cambridge, 1988.
R. E. Kalman and R. S. Bucy, “New Results in Linear Filtering and Prediction Theory”.
Trans. ASME, J. Basic Eng., 83, Series D , pp. 95-108, 1961.
R. E. Kalman and T. S. Englar, “A User's Manual for the Automatic Synthesis Program”.
NASA Report CR-475, 1966.
C. Kallstrom, “Computing Exp(A) and Exp(As)”. Report 7309, Division of Automatic
Control, Lund Institute of Technology, Lund, Sweden, 1973.
R. E. Kalman, “Contributions to the Theory of Optimal Control”. Bol. Soc. Mat. Mex., 5,
pp. 102-119, 1961.
D. W. Kammler, “Numerical Evaluation of Exp(At) when A is a Companion Matrix”.
unpublished manuscript, University of Southern Illinois, Carbondale, IL,1976.
S. Karlin, “Mathematical Methods and Theory in Games, Programming, and Economics”.
Addison-Wedsley Pub. Co., Mass., 1959.
B. Kågström and A. Ruhe, “An algorithm for Numerical Computation of the Jordan
Normal Form of a Complex Matrix”. Report UMONF 51.74, Department of Information
Processing, University of Umea, Umea, Sweden, 1974.
C. S. Kenney and A. J. Laub, “Padé Error Estimates for the Logarithm of a Matrix”.
International J. Control, 50, pp. 707–730, 1989.
C. S. Kenney and A. J. Laub, “Condition Estimates for Matrix Functions”. SIAM J. Matrix
Anal. Appl., Vol. 10, pp. 191–209, 1989.
C. S. Kenney and A. J. Laub, “Rational Iterative Methods for the Matrix Sign Function”.
SIAM J. Matrix Anal. Appl., 12(2):273-291, 1991.
C. S. Kenney and A. J. Laub, “On Scaling Newton’s Method for Polar Decomposition and
the Matrix Sign Function”. SIAM J. Matrix Anal. Appl. 13(3), pp. 688–706, 1992.
C. S. Kenney and A. J. Laub, “A Schur-Fréchet Algorithm for Computing the Logarithm
and Exponential of a Matrix”. SIAM J. Matrix Anal. Appl., Vol. 19, Nº 3, pp. 640-663,
1998.
H. B. Keller and M. Lentini, “Invariant Embedding, the Box Scheme and an Equivalence
between them”. SIAM J. Numerical Analysis, 19, pp. 942-962, 1982.
C. S. Kenney and R. B. Leipnik, “Numerical Integration of the Differential Matrix Riccati
Equation”. IEEE Trans. on Automatic Control, AC-30, pp.962-970, 1985.
L. A. Knizhnerman, “Calculation of Functions of Unsymmetric Matrices Using Arnoldi’s
Method”. Comput Math. and Math. Phys. 31, pp. 1-9, 1991.
C. K. Koc¸ and B. Bakkaloglu, “Halley’s Method for the Matrix Sector Function”. IEEE
Trans. Automat. Control, 40, pp. 944–949, 1995.
Lainiotis, D.G., “Partitioned Riccati Solutions and Integration-free Doubling Algorithms”
IEEE Trans. on Automatic Control, AC-21, pp. 677-689, 1976.
P. Lancaster and M. Tismenetsky, “The theory of Matrices Second Edition with
Applications”. Computer Science and Applied Mathematics, Academic Press Inc., 1985.
A. J. Laub, “Schur Techniques for Riccati Differential Equations”. Feedback Control of
Linear and Nonlinear Systems, D. Hinrichsen and A. Lsidori (Eds.), Springer-Verlag, New
York, pp. 165-174, 1982.
331
Bibliografía
[Leip85]
[LiSw98]
[Macd56]
[MaHI92]
[Mart99]
[Mast69]
[Meht89]
[MiQD95]
[MoLK78]
[MoVa03]
[MoVa78]
[NgPa87]
[PaKL90]
[Parl74]
[Parl76]
[PaSt73]
[PeCK91]
[Poll89]
[Prue86]
[RaHi93]
[Rine78]
[Robe71]
[Robe80]
[RuBi95]
[Rusn88]
[Saad92]
[SaCa94]
[Sanz92]
B. Leipnik, “A Canonical Form and Solution for the Matrix Riccati Differential Equation”.
Bull. Australian Math. Soc., 26, pp. 355-361, 1985.
W. M. Lioen, J. J. B. de Swart, “Test Set for Initial Value Problems Solvers”.
http://www.cwi.nl/cwi/projects/IVPtestset.
C. C. MacDuffee, “The Theory of Matrices”, Chelsea, New York, 1956.
M. Marqués, V. Hernández and J. Ibáñez, “Parallel Algorithms for Computing Functions of
Matrices on Shared Memory Multiprocessors”. Pacta´92, part 1, pp 157-166, 1992.
G. Martín Herrán, “Symplectic Methods for the Solution to Riccati Matrix Equations
Related to Macroeconomic Models”. Computational Economics, 13, pp. 61-91, 1999.
E. J. Mastascusa, “A Relation between Liou´s Method and Forth Order Runge-Kutta
Method for Evaluation of Transient Response”, Proc. IEEE, 57, 1969.
M. L. Mehta, “Matrix Theory: Selected Topics and Useful Results”. Hindustan Publishing
Company, Delhi, second edition, 1989.
P. Misra, E. Quintana and P. M. Van Dooren, “Numerically Reliable Computation of
Characteristic Polynomials”. American Control Conference, Seattle, WA, 1995.
M. Morf, B. Levy and T. Kailath, “Square-root Algorithms for the Continuous Time Linear
Least-square Estimation Problem”. IEEE Trans. on Automatic Control, 23, pp. 907-911,
1978.
C. B. Moler and Van Loan. “Nineteen Dubious Ways to Compute the Exponential of a
Matrix, Twenty-Five Years Later*”. SIAM Review 45, pp. 3-49, 2003.
C. B. Moler and Van Loan. “Nineteen Dubious Ways to Compute the Exponential of a
Matrix”. SIAM Review 20, pp. 801-36, 1978.
K.C. Ng and B. N. Parlett, “Programs to Swap Diagonal Blocks”. CPAM report, University
of California, Berkeley, 1987.
P. Pandey, C. Kenney and A. J. Laub, “A Parallel Algorithm for the Matrix Sign
Function”, Int. J. High Speed Computing, 2(2), 181-191, 1990.
B. N. Parlett, “Computation of Matrix-value Functions”. SIAM J. Matrix Anal., Vol 14, pp.
1061-1063, 1974.
B. N. Parlett, “A Recurrence among the Elements of Functions of Triangular Matrices”,
Linear Algebra Appl., Vol 14, pp. 117-121, 1976.
M. S. Paterson and L. J. Stockmeyer, “On the Number of Nonscalar Multiplications
Necessary to Evaluate Polynomials”. SIAM J. Comput., Vol 2, pp. 60–66, 1973.
P. Petkov, N. Christov and D. Konstantinov, “Computational Methods for Linear Control
Systems”. Prentice Hall International Series in Systems and Control Engineering, 1991.
A. A. Pollicini, “Using Toolpack Software Tools”. Kluwer Academic, 1989.
S. Pruess, “Interpolation Schemes for Collocation Solution of TPBVPs”. SIAM J. Sci.
Statist. Comput. 7, pp. 322-333, 1986.
K. Radhakrishnan and A. C. Hindmarsh, “Description and Use of LSODE, the Livermore
Solver for Ordinary Differential Equations”. LLNL Report UCRL-ID-113855, December
1993.
R. F. Rinehart, “The Equivalence of Definitions of a Matrix Functions”. IEEE Trans. Auto.
Cont., AC-24, pp. 320-321, 1978.
J. D. Roberts, “Linear Model Reduction and Solution of the Algebraic Riccati Equation by
Use of the Sign Function”. CUED/B-Control/TR13, Departament of Engineering,
University of Cambridge, 1971.
J. D. Roberts, “Linear Model Reduction and Solution of the Algebraic Riccati Equation by
Use of the Sign Function”. International Journal Control, vol. 32. pp. 677-687, 1980.
P. St. J. Russell, T. A. Birks, y F. D. Lloyd-Lucas, “Photonic Bloch Waves and Photonic
Band Gaps”. Confined electrons and Photons: New Physics and Applications, E. Burstein
and C. Weisbuch, eds. Plenum, New York, 1995.
L. Rusnak, “Almost Analytic Representation for the Solution of the Differential Matrix
Riccati Equation”. IEEE Trans. on Automatic Control, 33, pp. 191-193, 1988.
Y. Saad, “Analysis of some Krylov Subspace Approximations to the Matrix Exponential
Operator”. SIAM J. Numerical Analysis, Vol. 29, pp. 209-228, 1992.
J. M. Sanz-Serna, M. P. Calvo, “Numerical Hamiltonian Problems”. Mathematical
Computation 7, Chapman&Hall, 1994.
J. M. Sanz-Serna, “Symplectic Integrators for Hamiltonian Problems: An Overview”. Act.
Numer. 1, pp. 243-286, 1992.
332
Bibliografía
[SBDG76]
[SBIK76]
[ScLA97]
[Scra71]
[SeBl80]
[Serb79]
[SGIA03]
[Shah71]
[ShGo75]
[ShTs84]
[ShWD76]
[Sibu66]
[SiSp76]
[Smit03]
[SpGu79]
[Stew73]
[StLe96]
[Tref00]
[Trot59]
[TsSY88]
[VanL00]
[VanL78]
[VanL79]
[Varah79]
[Varg62]
[Vaug69]
[Wach88]
B. T. Smith, J. M. Boyle, J. J. Dongarra, B. S. Garbow, V. C. Klema, and C. B. Moler,
“Matrix Eigensystem Routines- EISPACK Guide”. Vol 7 of Lecture Notes in Computer
Science, Spronger-Verlag, Berlon, 1976.
B. T. Smith, J. M. Boyle, Y. Ikebe, V. C. Klema, and C. B. Moler, “Matrix Eigensystem
Routines: EISPACK Guide, 2nd Ed.”. Lecture Notes in Comp. Sd., 6, Springer Verlag,
New York, 1976.
S. Blackford, J. Choi, A. Cleary, E. D’Azevedo, I. Dhillon, J. Demmel, J. Dongarra, S.
Hammarling, G. Henry, A. Petitet, K. Stanley, D. Walker, R.C. Whaley, “ScaLAPACK
Users’ Guide”. SIAM Publications, Philadelphia, 1997.
R. E. Scraton, “Comment on Rational Approximants to the Matrix Exponential”. Electron.
Lett., 7, 1971.
S.M. Serbin and S.A. Blalock, “An Algorithm for Computing the Matrix Cosine”. SIAM J.
Sci. Statist. Comput. Vol 1(2), pp. 198–204, 1980.
S.M. Serbin, “Rational Approximations of Trigonometric Matrices with Application to
Second-order Systems of Differential equations”. Appl. Math. and Comput., Vol. 5, pp. 7592, 1979.
SGI Altix Applications Development an Optimization, Release August 1, 2003.
M. M. Shah, “On the Evaluation of Exp(At)”. Cambridge Report CUED/B-Control TR.,
Cambridge, England, 1971.
L. F. Shampine and M. K. Gordon, “Computer Solution of Ordinary Differential
Equations: the Initial Value Problem”. W. H. Freeman and Co., San Francisco, January,
1975.
L. S. Shieh, Y. T. Tsay, and C. T. Wang, “Matrix Sector Functions and their Applications
to Systems Theory”. Proc. IEE-D, 131, pp. 171–181, 1984.
L. F. Shampine, H. A Watts and S. M. Davenport, “Solving Non-stiff Ordinary Differential
Equations-the State of the Art. SIAM Rev. 18, pp. 376-411, 1976.
Y. Sibuya, “A Block-diagonalization Theorem for Systems of Ordinary Differential
Equations and its Applications”. SIAM J. on Applied Mathematics, 14, pp. 468-475, 1966.
B. Singer and S. Spilerman, “The Representation of Social Processes by Markov Models”.
Amer. J. Sociology, 82, pp. 1–54, 1976.
M. I. Smith, “A Schur Algorithm for Computing Matrix pth Roots”. SIAM J. Matrix Anal.
Appl., Vol. 24. No. 4, pp. 971-989, 2003.
J. L Speyer and D. E. Gustafson, “Estimation of Phase Processes in Oscillatory Signals and
Asymptotic Expansions”. IEEE Trans. on Automatic Control, AC-24, pp. 657-659, 1979.
G. W. Stewart, “Error and Perturbations Bounds for Subspaces Associated with certain
Eigenvalues Problems”. SIAM Review, 15, pp. 727-764, 1973.
D. E. Stewart and T.S. Leyk, “Error Estimates for Krylov Subspace Approximations of
Matrix Exponentials”. J. Comput. Appl. Math. 72, pp. 359-369, 1996.
L. N. Trefethen, “Spectral Methods in MATLAB”. Society for Industrial and Applied
Mathematics (SIAM), 2000.
H. F. Trotter, “Product of Semigroups of Operators”. Prpc. Amer. Math. Soc., 10, 1959.
J. S. H. Tsai, L. S. Shieh, and R. E. Yates, “Fast and Stable Algorithms for Computing the
Principal nth Root of a Complex Matrix and the Matrix Sector Function”. Comput. Math.
Applic., Vol. 15(11), pp. 903–913, 1988.
C.F.Van Loan, “Introduction to Scientific Computing. A Matrix-Vector Approach Using
MATLAB”. Prentice-Hall, 2000.
C. F. Van Loan, “Computing Integrals Involving the Matrix Exponential”. IEEE
Transactions on Automatic Control, Vol. AC-23, 1978.
C. F. Van Loan, “A Note on the Evaluation of Matrix Polynomials”. IEEE Transactions on
Automatic Control, Vol. AC-24, 1979.
J. M. Varah, “On the Separation of Two Matrices”. SIAM J. Numerical Analysis, Vol. 16,
pp. 216-222, 1979.
R. S. Varga, “Matrix Iterative Analysis”. Prentice Hall, Englewood Cliffs, New Jersey,
1962.
d. r. Vaughan, “A negative Exponential Solution for the Matrix Riccati Equation”. IEEE
Trans. on Automatic Control” AC-14, pp. 72-75, 1969.
E.L. Wachspress, “Iterative Solution of the Lyapunov Matrix Equation”. Appl. Math.
Letters, 107:87–90, 1988.
333
Bibliografía
[Ward77]
[Whit69]
[Wilk92]
[WiRe71]
[Wonh68]
[Zaca05]
[Zaca05]
R. C. Ward, “Numerical Computation of the Matrix Exponential with Accuracy Estimate”.
SIAM Journal Numerical Analysis, 14, 1977.
D. E. Whitney, “More Similarities between Runge-Kutta and Matrix Exponential Methods
for Evaluating Transient Response”. Ibid., 57, 1969.
J. H. Wilkinson, “The Algebraic Eigenvalues Problem”. Clarendon Press, Oxford.
Reprinted, 1992.
J. H. Wilkinson and C. Reinsch, “Handbook for Automatic Computation”. Vol. 2, Linear
Algebra, Springer-Verlag, Heidelberg, 1971.
W. M. Wonham, “On a Matrix Riccati Equation of Stochastic Control”. SIAM J. on
Control, 6, pp. 681-697, 1968.
M. Zacarés González, “Métodos Modales para el Análisis de la Propagación no Lineal en
Fibras Ópticas”. Tesis Doctoral, Departamento de Óptica de la Universidad de Valencia,
2005.
M. Zacarés González, “Métodos Modales para el Análisis de la Propagación no Lineal en
Fibras Ópticas”. Tesis Doctoral, Departamento de Óptica de la Universidad de Valencia,
2005.
334