Unidad 0: Ingredientes de la computación científica
Dentro de todas las ramas de la ciencia encontramos problemas matemáticos que son derivados de un fenómeno físico sobre el cual se han realizado algunas suposiciones para simplificarlo y así poder representarlo matemáticamente. Muy a menudo tales problemas matemáticos resultan difíciles o imposibles de resolverlos explícitamente. El análisis numérico trata de diseñar métodos para aproximar, de una manera eficiente, las soluciones de tales problemas. Un cierto conjunto de problemas se repiten una y otra vez sobre muchos campos de la ciencia, así que métodos numéricos para ellos son conocidos desde hace ya tiempo. En este curso discutiremos tales métodos básicos.
En un marco más general, el análisis numérico es parte de la denominada computación científica, donde la resolución del problema físico planteado es obtenido simulando los procesos físicos que intervienen con ayuda de la computadora. En esta unidad discutiremos brevemente como el planeamiento y desarrollo de una simulación numérica involucra una serie de etapas en las que intervienen diversas disciplinas, y como cada aproximación realizada constituye un fuente de error que influirá, en mayor o menor medida, al resultado final.
Dado que la computadora constituye una herramienta básica para la implementación de los métodos numéricos, en esta unidad discutiremos también varios aspectos relacionados con la misma. En particular, la elección y uso de un lenguaje de programación apropiado para el cálculo numérico. a saber Fortran 95/2003.
Unidad 1: Errores
En los usos prácticos de la matemática, a menudo uno está satisfecho, o no le queda otro remedio, que utilizar valores aproximados para las cantidades involucradas en un problema. A su vez, el uso de dispositivos de cálculo finitos como las calculadoras y computadoras, incapaces de dar una representación exacta de los números, introduce un nuevo error en los cálculos. Es imprescindible por esto, poder determinar la exactitud posible de un resultado numérico, esto es, estimar su error.
En la primera parte de la unidad discutiremos el concepto general de error y cómo se propaga al realizar cálculos, para así poder estimar el mismo, ya sea a partir de aproximaciones dadas, o bien, preparar una medición para mantener el error bajo cierto valor preasignado.
En la segunda parte discutiremos el error de redondeo inherente en todo cálculo computacional, proveniente del hecho de que una computadora opera con una representación aproximada de los números reale con cierto número finito de dígitos.
- Presentación de la clase.
- Práctica 1b: Números de punto flotante y error de redondeo.
- Resolución de la práctica.
- Representación de los números en la computadora
Unidad 2: Resolución de ecuaciones no lineales
En general, las raíces de una ecuación no lineal f (x) = 0 no pueden ser obtenidas por fórmulas explícitas cerradas, con lo que no es posible obtenerlas en forma exacta. De este modo, para resolver la ecuación nos vemos obligados a obtener soluciones aproximadas a través de algún método numérico.
En esta unidad implementaremos, en un módulo Fortran, los métodos numéricos usuales, como bisección, Newton, secante y punto fijo, junto a un método de propósito general.
- Presentación de la clase.
- Práctica 2: Resolución de ecuaciones no lineales.
- Resolución de la práctica.
- Subrutinas en Fortran para la resolución de ecuaciones no lineales de una variable.
- Código fuente del módulo roots.
Unidad 3: Resolución de sistemas de ecuaciones lineales
La resolución de muchos problemas de la física conducen a sistemas de n ecuaciones lineales con n incógnitas, donde el orden n del sistema es muy grande. De aquí que resulte de vital importancia considerar métodos numéricos que permitan resolver tales sistemas en forma computacionalmente eficiente y, a la vez, sean numéricamente precisos.
Los métodos numéricos para resolver sistemas de ecuaciones lineales se dividen en dos tipos: directos e iterativos Los métodos directos son aquellos que, en ausencia de errores de redondeo (u otros errores), obtendrían la solución exacta en un número finito de pasos. Sin embargo, puesto que en la práctica, todo cómputo es realizado con aritmética de precisión finita, los métodos directos conducen, realmente, a una solución aproximada. De hecho los errores que provienen del redondeo, inestabilidad y pérdida de cifras significativas puede conducir a resultados pobres en exactitud. Una gran parte del análisis numérico tiene que ver con el por qué y el cómo del surgimiento de tales errores y con la búqueda de métodos para minimizarlos. El método fundamental para las soluciones directas es el método de eliminación gaussiana, aplicable a cualquier matriz, y sus variantes aplicables a ciertas matrices con estructuras particulares.
En la primera práctica de esta unidad haremos uso intensivo de dichos métodos a través de su implementación computacional dada por el paquete de rutinas LAPACK95, una interface de LAPACK que aprovecha las características de las versiones más modernas de Fortran (asignación dinámica de memoria. argumentos opcionales, interfaces explícitas). LAPACK (Lineal Algebra Package) es una colección de rutinas para la resolución de sistemas de ecuaciones lineales, factorización matricial, problema de autovalores y otros problemas enmarcados en el álgebra lineal numérica y que se han convertido en estándares de facto, puesto que contienen la implementación más acabada de los algoritmos.
- Presentación de la clase.
- Práctica 3a: Resolución de sistemas lineales. Métodos directos.
- Resolución de la práctica..
- Paquete LAPACK95+LAPACK+BLAS(+OpenBLAS) para su compilación (Linux).
- Paquete LAPACK95+LAPACK+BLAS para su compilación (Windows).
Los métodos iterativos son aquellos que, partiendo de una aproximación inicial, aplicando un algoritmo convenientemente escogido, conducen a aproximaciones que, esperamos, sean cada vez más próximas a la solución del sistema. La ventaja de este tipo de métodos, respecto a la eliminación gaussiana, son la simplicidad de las operaciones realizadas y su eficiencia resulta muy clara para el caso particular (aunque muy común en la práctica) de matrices ralas, esto es, matrices con muy pocos elementos no nulos.
En la segunda práctica de esta unidad consideraremos los dos métodos iterativos básicos: el método de Jacobi y el método de Gauss-Seidel y veremos como el primer método puede ser adaptado muy fácilmente para el caso de matrices ralas.
- Presentación de la clase.
- Práctica 3b: Resolución de sistemas lineales. Métodos iterativos.
- Resolución de la práctica.
- Código fuente del módulo iterative.
- Sistema ralo.
Muchos problemas de interés físico conducen al cálculo, o por lo menos a la estimación, de los autovalores de una matriz asociada con un sistema lineal de ecuaciones. Aunque sabemos que los autovalores son las raíces de un polinomio característico, los métodos numéricos para la determinación de los autovalores no parten de aquí, sino por la factorización QR de la matriz.
En la tercer práctica de esta unidad consideraremos dos métodos para la determinación de autovalores: el método de potencia, que permite computar un autovalor dominante, y el método QR, que nos dará todos los autovalores de la matriz.
- Presentación de la clase
- Práctica 3c: Cálculo numérico de autovalores y autovectores.
- Resolución de la práctica..
Unidad 4: Interpolación y sistemas lineales sobredeterminados
Con mucha frecuencia, en problemas de todas las ramas de la ciencia, se dispone de una tabla de datos que describe la relación de cierta magnitud y en función de otra x. El problema consiste en obtener la magnitud y para un valor x que no se encuentra en los datos. En las siguientes dos prácticas consideraremos dos maneras de atacar el problema.
En la primera práctica de esta unidad veremos una forma de resolver el problema planteado a través de la construcción de una función f* que pase exactamente por los puntos de la tabla de datos para, entonces, aproximar y por f*(x), procedimiento conocido como interpolación. Y entre todos los conjuntos de funciones a escoger, consideremos la interpolación por polinomios, puesto que éstos constituyen una de las clases más útiles y bien conocidas de funciones reales de variable real.
- Presentación de la clase.
- Práctica 4a: Interpolación polinómica.
- Resolución de la práctica.
- Código fuente del módulo interpol.
En la segunda práctica de esta unidad, considerando que los valores medidos de y están afectados de error, la función f* ha determinar será aquella que minimice, en algún sentido a precisar, tales errores. Midiendo la magnitud del error a través de la norma euclideana y expresando la función f* en forma lineal a través de un conjunto de parámetros desconocidos a determinar, llegamos al problema discreto lineal de mínimos cuadrados.
- Presentación de la clase.
- Práctica 4b: Problema discreto de mínimos cuadrados.
- Resolución de la práctica..
Unidad 5: Diferenciación e integración numérica
En esta práctica consideraremos el problema numérico de determinar aproximaciones a dos conceptos que involucran un paso al límite: la derivada de una función en un punto, y la integral definida de una función sobre un intervalo finito.
- Presentación de la clase.
- Práctica 5: Diferenciación e integración numérica.
- Resolución de la práctica.
Unidad 6: Ecuaciones diferenciales ordinarias
La solución analítica de un problema de valor inicial para una ecuación diferencial ordinaria de primer orden consiste en una fórmula cerrada que permite computar el valor de la función solución en cualquier punto de la variable independiente. En la práctica, sin embargo, aún cuando tal solución exista, no podemos dar tal expresión analítica, y por lo tanto debemos recurrir a una solución numérica. Una solución numérica para el problema de valor inicial es una tabla de valores que aproximan la solución sobre un conjunto discreto de puntos de la variable independiente. Tal solución numérica es generada moviéndonos paso a paso sobre este conjunto discreto de puntos con algún método numérico que aproxime el comportamiento de la ecuación diferencial. En esta práctica discutiremos los métodos básicos y conceptos involucrados.
- Presentación de la clase.
- Práctica 6: Ecuaciones diferenciales ordinarias.
- Resolución de la práctica.
Bibliografía y lecturas suplementarias
- Michael T. Heath. Scientific computing: an introductory survey. Second edition.Society for Industrial and Applied Mathematics. 2018. DOI: https://doi.org/10.1137/1.9781611975581
- L. F. Shampine, Rebecca Chan Allen, S. Pruess. Fundamentals of Numerical Computing. John Wiley & Sons, Inc. 1997.
- A. C. Faul. A Concise Introduction to Numerical Analysis. CRC Press. 2016.
No hay comentarios.:
Publicar un comentario