Análisis numérico

rama de la matemática aplicada
(Redirigido desde «Cálculo numérico»)

El análisis numérico o cálculo numérico es la rama de las matemáticas encargada de diseñar algoritmos para simular aproximaciones de solución a problemas en análisis matemático. Se distingue del cómputo simbólico en que no manipula expresiones algebraicas, sino números.

Tablilla de arcilla babilónica YBC 7289 (c. 1800-1600 aC) con anotaciones. La aproximación de la raíz cuadrada de 2 son cuatro cifras sexagesimales, que son aproximadamente seis cifras decimales: 1 + 24/60 + 51/602 + 10/603 = 1.41421296...[1]

El análisis numérico cobra especial importancia con la llegada de los ordenadores. Los ordenadores son útiles para cálculos matemáticos extremadamente complejos, pero en última instancia operan con números binarios y operaciones matemáticas simples.

Desde este punto de vista, el análisis numérico proporcionará todo el andamiaje necesario para llevar a cabo todos aquellos procedimientos matemáticos susceptibles de expresarse algorítmicamente, basándose en algoritmos que permitan su simulación o cálculo en procesos más sencillos empleando números.

Definido el error, junto con el error admisible, pasamos al concepto de estabilidad de los algoritmos. Muchas de las operaciones matemáticas pueden llevarse adelante a través de la generación de una serie de números que a su vez alimentan de nuevo el algoritmo (feedback). Esto proporciona un poder de cálculo y refinamiento importantísimo a la máquina que a medida que va completando un ciclo va llegando a la solución. El problema ocurre en determinar hasta cuándo deberá continuar con el ciclo, o si nos estamos alejando de la solución del problema.

Finalmente, otro concepto paralelo al análisis numérico es el de la representación, tanto de los números como de otros conceptos matemáticos como los vectores, polinomios, etc. Por ejemplo, para la representación en ordenadores de números reales, se emplea el concepto de coma flotante que dista mucho del empleado por la matemática convencional.

En general, estos métodos se aplican cuando se necesita un valor numérico como solución a un problema matemático, y los procedimientos «exactos» o «analíticos» (manipulaciones algebraicas, teoría de ecuaciones diferenciales, métodos de integración, etc.) son incapaces de dar una respuesta. Debido a ello, son procedimientos de uso frecuente por físicos e ingenieros, y cuyo desarrollo se ha visto favorecido por la necesidad de estos de obtener soluciones, aunque la precisión no sea completa. Debe recordarse que la física experimental, por ejemplo, nunca arroja valores exactos sino intervalos que engloban la gran mayoría de resultados experimentales obtenidos, ya que no es habitual que dos medidas del mismo fenómeno arrojen valores exactamente iguales.

Por ejemplo, las ecuaciones diferenciales ordinarias aparecen en la mecánica celeste para la predicción de los movimientos de planetas, estrellas y galaxias; el álgebra lineal numérica es importante para el análisis de datos;[2][3][4]​ Las ecuaciones diferenciales estocásticas y las cadenas de Markovs son esenciales en la simulación de células vivas para la medicina y la biología.

Antes de la llegada de los ordenadores modernos, los métodos numéricos dependían a menudo de fórmulas de interpolación manuales aplicadas a los datos de grandes tablas impresas. Desde mediados del siglo XX, los ordenadores calculan las funciones necesarias en su lugar, pero muchas de las mismas fórmulas siguen utilizándose, no obstante, como parte de los algoritmos del software.[5]

El punto de vista numérico se remonta a los primeros escritos matemáticos. Una tablilla de la Colección Babilónica de Yale (YBC 7289), da una aproximación numérica sexagesimal de la raíz cuadrada de 2, la longitud de la diagonal en un cuadrado unitario.

El análisis numérico continúa esta larga tradición: en lugar de respuestas simbólicas exactas, que solo pueden aplicarse a las mediciones del mundo real mediante la traducción a dígitos, da soluciones aproximadas dentro de límites de error especificados.

Introducción general

editar

El objetivo general del campo del análisis numérico es el diseño y análisis de técnicas para dar soluciones aproximadas pero precisas a problemas difíciles, cuya variedad se sugiere en lo siguiente:

  • Los métodos numéricos avanzados son esenciales para hacer viable la predicción numérica del tiempo.
  • El cálculo de la trayectoria de una nave espacial requiere la solución numérica precisa de un sistema de ecuaciones diferenciales ordinarias.
  • Las empresas automovilísticas pueden mejorar la seguridad de sus vehículos mediante simulaciones por ordenador de accidentes de tráfico. Estas simulaciones consisten esencialmente en la resolución numérica de ecuaciones diferenciales parciales.
  • Los fondos de cobertura (fondos de inversión privados) utilizan herramientas de todos los campos del análisis numérico para intentar calcular el valor de las acciones y los derivados con mayor precisión que otros participantes en el mercado.
  • Las aerolíneas utilizan sofisticados algoritmos de optimización para decidir el precio de los billetes, la asignación de aviones y tripulaciones y las necesidades de combustible. Históricamente, estos algoritmos se han desarrollado en el campo de la investigación operativa.
  • Las compañías de seguros utilizan programas numéricos para el análisis actuarial.

El resto de esta sección esboza varios temas importantes del análisis numérico.

Historia

editar

El campo del análisis numérico es anterior a la invención de los ordenadores modernos en muchos siglos. La interpolación lineal ya se utilizaba hace más de 2000 años. Muchos grandes matemáticos del pasado se preocuparon por el análisis numérico,[5]​ como se desprende de los nombres de importantes algoritmos como el método de Newton, el polinomio de interpolación de Lagrange, la eliminación gaussiana o el método de Euler.

Para facilitar los cálculos a mano, se produjeron grandes libros con fórmulas y tablas de datos como los puntos de interpolación y los coeficientes de las funciones. Con estas tablas, a menudo calculadas con 16 decimales o más para algunas funciones, se podían buscar valores para introducirlos en las fórmulas dadas y conseguir muy buenas estimaciones numéricas de algunas funciones. El trabajo canónico en este campo es la publicación del NIST editada por Abramowitz y Stegun, un libro de más de 1000 páginas con un gran número de fórmulas y funciones de uso común y sus valores en muchos puntos. Los valores de las funciones ya no son muy útiles cuando se dispone de un ordenador, pero el gran listado de fórmulas puede seguir siendo muy útil.

La calculadora mecánica también se desarrolló como herramienta de cálculo manual. Estas calculadoras evolucionaron hasta convertirse en ordenadores electrónicos en la década de 1940, y entonces se descubrió que estos ordenadores también eran útiles para fines administrativos. Pero la invención del ordenador también influyó en el campo del análisis numérico,[5]​ ya que ahora se podían hacer cálculos más largos y complicados.

Métodos directos e iterativos

editar

Consideremos el problema de resolver

3x3 + 4 = 28

para la cantidad desconocida x.

Método directo
3x3 + 4 = 28.
Restar 4 3x3 = 24.
Dividir por 3 x3 =  8.
Hacer la raíz cúbica x =  2.

Para el método iterativo, apliquemos el método de bisección a f(x) = 3x3 − 24. Los valores iniciales son: a = 0, b = 3, f(a) = −24, f(b) = 57.

Método iterativo
a b mid f(mid)
0 3 1.5 −13.875
1.5 3 2.25 10.17...
1.5 2.25 1.875 −4.22...
1.875 2.25 2.0625 2.32...

De esta tabla se puede concluir que la solución está entre 1,875 y 2,0625. El algoritmo podría devolver cualquier número en ese rango con un error inferior a 0,2.

Discretización e integración numérica

editar
 

En una carrera de dos horas, la velocidad del coche se mide en tres instantes y se registra en la siguiente tabla:

Tiempo 0:20 1:00 1:40
km/h 140 150 180

Una discretización sería decir que la velocidad del coche fue constante de 0:00 a 0:40, luego de 0:40 a 1:20 y finalmente de 1:20 a 2:00. Por ejemplo, la distancia total recorrida en los primeros 40 minutos es aproximadamente (2/3 h × 140 km / h) = 93,3 kilómetros. Esto nos permitiría estimar la distancia total recorrida como 93,3 kilómetros +100 km +120 km =313,3 km, que es un ejemplo de integración numérica (véase más adelante) utilizando una suma de Riemann, porque el desplazamiento es la integral de la velocidad.

Problema mal condicionado: Tómese la función f(x) = 1/(x − 1). Téngase en cuenta que un cambio en x de menos de 0.1 se convierte en un cambio en f(1.1) = 10 y f(1.001) = 1000, de casi 1000. Evaluar f (x) cerca de x = 1 es un problema mal condicionado.

Problema bien condicionado: por el contrario, evaluar la misma función f(x) = 1/(x − 1) cerca de x = 10 es un problema bien condicionado. Por ejemplo, f(10) = 1/9 ≈ 0.111 y f(11) = 0.1, por lo que un cambio modesto en x conduce a un cambio modesto en f (x).

Los métodos directos calculan la solución de un problema en un número finito de pasos. Estos métodos darían la respuesta precisa si se realizaran en Aritmética de precisión infinita. Algunos ejemplos son la eliminación gaussiana, el método de factorización QR para resolver sistemas de ecuaciones lineales, y el método simplex de programación lineal. En la práctica, se utiliza precisión finita y el resultado es una aproximación de la solución verdadera (asumiendo estabilidad).

A diferencia de los métodos directos, no se espera que los métodos iterativos terminen en un número finito de pasos. Partiendo de una conjetura inicial, los métodos iterativos forman aproximaciones sucesivas que convergen a la solución exacta solo en el límite. Se especifica una prueba de convergencia, que a menudo implica el residuo, para decidir cuándo se ha encontrado (con suerte) una solución suficientemente exacta. Incluso utilizando aritmética de precisión infinita, estos métodos no alcanzarían, en general, la solución en un número finito de pasos. Algunos ejemplos son el método de Newton, el método de bisección y el método de Jacobi. En el álgebra matricial computacional, los métodos iterativos son generalmente necesarios para problemas grandes.[6][7][8][9]

Los métodos iterativos son más comunes que los métodos directos en el análisis numérico. Algunos métodos son directos en principio, pero suelen utilizarse como si no lo fueran, por ejemplo, el GMRES y el método del gradiente conjugado. Para estos métodos el número de pasos necesarios para obtener la solución exacta es tan grande que se acepta una aproximación de la misma manera que para un método iterativo.

Problemas

editar

Los problemas de esta disciplina se pueden dividir en dos grupos fundamentales:

  • Problemas de dimensión infinita: problemas en cuya solución o planteamiento intervienen elementos descritos por una cantidad infinita de números, como integración y derivación numéricas, cálculo de ecuaciones diferenciales, interpolación, etc.

Clasificación atendiendo a su naturaleza o motivación

editar

Asimismo, existe una subclasificación de estos dos grandes apartados en tres categorías de problemas, atendiendo a su naturaleza o motivación para el empleo del cálculo numérico:

  • Problemas de tal complejidad que no poseen solución analítica.
  • Problemas en los cuales existe una solución analítica, pero ésta, por complejidad u otros motivos, no puede explotarse de forma sencilla en la práctica.
  • Problemas para los cuales existen métodos sencillos pero que, para elementos que se emplean en la práctica, requieren una cantidad de cálculos excesiva; mayor que la necesaria para un método numérico.

Áreas de estudio

editar

El análisis numérico se divide en diferentes disciplinas de acuerdo con el problema que resolver.

Cálculo de los valores de una función

editar

Uno de los problemas más sencillos es la evaluación de una función en un punto dado. Para polinomios, uno de los métodos más utilizados es el algoritmo de Horner, ya que reduce el número de operaciones a realizar. En general, es importante estimar y controlar los errores de redondeo que se producen por el uso de la aritmética de punto flotante.

La extrapolación es muy similar a la interpolación, excepto que ahora queremos encontrar el valor de la función desconocida en un punto que no está comprendido entre los puntos dados.

La regresión es también similar, pero tiene en cuenta que los datos son imprecisos. Dados algunos puntos, y una medida del valor de la función en los mismos (con un error debido a la medición), queremos determinar la función desconocida. El método de los mínimos cuadrados es una forma popular de conseguirlo.

Resolución de ecuaciones y sistemas de ecuaciones

editar

Otro problema fundamental es calcular la solución de una ecuación o sistema de ecuaciones dado. Se distinguen dos casos dependiendo de si la ecuación o sistema de ecuaciones es o no lineal. Por ejemplo, la ecuación   es lineal mientras que la ecuación de segundo grado   no lo es.

Mucho esfuerzo se ha puesto en el desarrollo de métodos para la resolución de sistemas de ecuaciones lineales. Métodos directos, i.e., métodos que utilizan alguna factorización de la matriz son el método de eliminación de Gauss, la descomposición LU, la descomposición de Cholesky para matrices simétricas (o hermíticas) definidas positivas, y la descomposición QR. Métodos iterativos como el método de Jacobi, el método de Gauss-Seidel, el método de las aproximaciones sucesivas y el método del gradiente conjugado se utilizan frecuentemente para grandes sistemas.

En la resolución numérica de ecuaciones no lineales algunos de los métodos más conocidos son los métodos de bisección, de la secante y de la falsa posición. Si la función es además derivable y la derivada se conoce, el método de Newton es muy utilizado. Este método es un método de iteración de punto fijo. La linealización es otra técnica para resolver ecuaciones no lineales.

Las ecuaciones algebraicas polinomiales poseen una gran cantidad de métodos numéricos para enumerar :

  • Método de Gräeffe (o método de Lobachevsky o de Lobachevsky-Dandelin-Gräeffe o del cuadrado de las raíces)
  • Método de Laguerre
  • Método de Bairstow (o método de Lin-Bairstow)
  • Método de Bernoulli
  • Método de Horner
  • Método de Householder
  • Método de Newton-Raphson especializado para polinomios
  • Método de Richmond especializado para polinomios
  • Método modificado de Richmond
  • Método de Newton-Horner
  • Método de Richmond-Horner
  • Método de Birge-Biète
  • Método de Jenkins-Traub

Descomposición espectral y en valores singulares

editar

Bastantes problemas importantes pueden ser expresados en términos de descomposición espectral (el cálculo de los vectores y valores propios de una matriz) o de descomposición en valores singulares. Por ejemplo, el análisis de componentes principales utiliza la descomposición en vectores y valores propios.

Optimización

editar

Los problemas de optimización buscan el punto para el cual una función dada alcanza su máximo o mínimo. A menudo, el punto también satisface cierta restricción.

Ejemplos de, problemas de optimización son la programación lineal en que tanto la función objetivo como las restricciones son lineales. Un método famoso de programación lineal es el método simplex.

El método de los multiplicadores de Lagrange puede usarse para reducir los problemas de optimización con restricciones a problemas sin restricciones.

Evaluación de integrales

editar

La integración numérica, también conocida como cuadratura numérica, busca calcular el valor de una integral definida. Métodos populares utilizan alguna de las fórmulas de Newton-Cotes (como la regla del rectángulo o la regla de Simpson) o de cuadratura gaussiana. Estos métodos se basan en una estrategia de «divide y vencerás», dividiendo el intervalo de integración en subintervalos y calculando la integral como la suma de las integrales en cada subintervalo, pudiéndose mejorar posteriormente el valor de la integral obtenido mediante el método de Romberg. Para el cálculo de integrales múltiples estos métodos requieren demasiado esfuerzo computacional, siendo útil el método de Monte Carlo.

Ecuaciones diferenciales

editar

El análisis numérico también puede calcular soluciones aproximadas de ecuaciones diferenciales, bien ecuaciones diferenciales ordinarias, bien ecuaciones en derivadas parciales. Los métodos utilizados suelen basarse en discretizar la ecuación correspondiente. Es útil ver la derivación numérica.

Para la resolución de ecuaciones diferenciales ordinarias los métodos más utilizados son el método de Euler y los métodos de Runge-Kutta.

Las ecuaciones en derivadas parciales se resuelven primero discretizando la ecuación, llevándola a un subespacio de dimensión finita. Esto puede hacerse mediante un método de los elementos finitos.

Fuentes de error y su impacto

editar

Los algoritmos de los métodos numéricos suelen implementarse por medio de computadoras. Estas poseen algunas propiedades que causan fallas al emplearlas para hallar la solución numérica de problemas matemáticos, entre las que se encuentran las siguientes:[10]

  1. Las computadoras son capaces de almacenar un número finito de dígitos, por lo que no pueden almacenar el conjunto de los números reales en su totalidad para realizar operaciones numéricas con estos. En cambio, cuentan con un subconjunto de los números reales al cual se conoce como números de punto flotante o números de máquina. Al error al que conlleva esta limitante se le llama error de redondeo.
  2. Existen problemas que involucran muchos cálculos para su solución. En ocasiones, las soluciones son sensibles a la precisión de los cálculos intermedios, en cuyo caso se dice que las soluciones pueden haber sido perturbadas por los datos.
  3. A mayor número de operaciones realizadas se tendrá un error de redondeo mayor. La velocidad que proveen las computadoras para el procesamiento ha agilizado significativamente la rapidez con la que se calculan operaciones. Sin embargo, la propagación de errores de redondeo por los cálculos realizados por computadoras puede derivar en la inestabilidad de los resultados arrojados por los algoritmos programados en ellas.

Las fallas en los cálculos intermedios realizados por una computadora para arrojar un resultado final son, con frecuencia, desconocidos para los programadores y muy difíciles de detectar: la suma y el producto de números de punto flotante son operaciones conmutativas, pero no son asociativas y tampoco distributivas. Al no verificar estas dos propiedades de los números reales, el manejo de las operaciones realizadas con números de punto flotante resulta una tarea complicada. Por otra parte, el orden de las operaciones puede incidir en la precisión de los resultados devueltos por la máquina, pues dos expresiones equivalentes en un sentido algebraico pueden dar resultados distintos en el contexto de los números de máquina.

Afortunadamente, existen algunas técnicas para prevenir y atacar el error de redondeo. En[11]​ se discuten algunas de las implicaciones de estas estrategias para las operaciones básicas de suma, resta, multiplicación y división. También en[11]​ se discuten algunos estándares de punto flotante de la IEEE y las conexiones entre el punto flotante y el diseño de sistemas computacionales.

El mejoramiento en la precisión de los números de punto flotante sigue siendo motivo de estudio en nuestros días. En 2015, investigadores de la Universidad de Washington desarrollaron una herramienta computacional a la que llamaron Herbie y que «detecta automáticamente las transformaciones necesarias para que un programa mejore su precisión».[12]Herbie evalúa el error de una expresión de punto flotante e identifica qué operaciones contribuyen de forma más significativa a la acumulación de errores, luego genera alternativas para realizar estas operaciones y hace un comparativo para finalmente determinar la expresión equivalente óptima (aquella que minimiza el error) para corregir el programa.

El interés en asegurar cierto nivel de precisión en los resultados numéricos provistos una computadora se debe a sus posibles repercusiones en la práctica. Por ejemplo, en el ámbito académico se han dado casos de artículos de investigación en los que el error de redondeo ha impedido que los resultados sean reproducibles y, en ocasiones, este ha sido incluso motivo de rechazo para su publicación ([13]​ y[14]​). Este tipo de error también ha permeado la regulación legal financiera de algunos países[12]​ y distorsionado índices del mercado bursátil.[15]

La limitante en la representación de números reales mediante el punto flotante también tiene repercusiones en las gráficas generadas por medio de una computadora. Cuando un número es menor a lo que se conoce como el épsilon de máquina, la computadora es incapaz de representarlo. Esto puede hacer que las gráficas asociadas a valores numéricos menores al épsilon presenten falsos comportamientos y afectar la toma de decisiones basadas en ellas, con consecuencias insospechadas, por ejemplo, al realizar pronósticos, área en la que la precisión juega un papel crucial.[16]

Existen otros tipos de error en el contexto de los métodos numéricos que merecen igual atención y cuidado. Errores de truncamiento y de conversión, entre otros, han dado origen a múltiples catástrofes: la falla del misil Patriot, la explosión del cohete Ariane 5 inaugural, el hundimiento de la plataforma petrolera Sleipner son solo algunos ejemplos de ello.[17]​ De ahí la importancia de reconocer estas fuentes de error para anticiparse a ellas y, en su caso, detectarlas y corregirlas.

Otros temas de análisis numérico

editar

Referencias

editar
  1. «Photograph, illustration, and description of the root(2) tablet from the Yale Babylonian Collection». Archivado desde el original el 13 de agosto de 2012. Consultado el 2 de octubre de 2006. 
  2. Demmel, J. W. (1997). Applied numerical linear algebra. SIAM.
  3. Ciarlet, P. G., Miara, B., & Thomas, J. M. (1989). Introduction to numerical linear algebra and optimization. Cambridge University Press.
  4. Trefethen, Lloyd; Bau III, David (1997). Numerical Linear Algebra (1ª ed.). Philadelphia: SIAM.
  5. a b c Brezinski, C., & Wuytack, L. (2012). Análisis numérico: Desarrollos históricos en el siglo XX. Elsevier.
  6. Saad, Y. (2003). Métodos iterativos para sistemas lineales dispersos. SIAM.
  7. Hageman, L. A., & Young, D. M. (2012). Métodos iterativos aplicados. Courier Corporation.
  8. Traub, J. F. (1982). Métodos iterativos para la solución de ecuaciones. American Mathematical Society.
  9. Greenbaum, A. (1997). Métodos iterativos para la resolución de sistemas lineales. SIAM.
  10. Forsythe, George E. (1 de enero de 1970). «Pitfalls in Computation, or why a Math Book isn't Enough». The American Mathematical Monthly 77 (9): 931-956. doi:10.2307/2318109. Consultado el 2 de marzo de 2016. 
  11. a b Goldberg, David (1 de marzo de 1991). «What Every Computer Scientist Should Know About Floating-point Arithmetic». ACM Comput. Surv. 23 (1): 5-48. ISSN 0360-0300. doi:10.1145/103162.103163. Consultado el 2 de marzo de 2016. 
  12. a b Panchekha, Pavel; Sanchez-Stern, Alex; Wilcox, James R.; Tatlock, Zachary (1 de enero de 2015). «Automatically Improving Accuracy for Floating Point Expressions». Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation. PLDI 2015 (ACM): 1-11. ISBN 9781450334686. doi:10.1145/2737924.2737959. Consultado el 2 de marzo de 2016. 
  13. Altman, Micah; Gill, Jeff; McDonald, Michael P. (15 de febrero de 2004). Numerical Issues in Statistical Computing for the Social Scientist (en inglés). John Wiley & Sons. ISBN 9780471475743. Consultado el 2 de marzo de 2016. 
  14. Altman, Micah; McDonald, Michael P. (1 de agosto de 2003). «Replication with Attention to Numerical Accuracy». Political Analysis (en inglés) 11 (3): 302-307. ISSN 1047-1987. doi:10.1093/pan/mpg016. Consultado el 2 de marzo de 2016. 
  15. McCullough, B. D.; Vinod, H. D. (1 de enero de 1999). «The Numerical Reliability of Econometric Software». Journal of Economic Literature 37 (2): 633-665. Consultado el 2 de marzo de 2016. 
  16. McCullough, B. D. (2000). «Is it safe to assume that software is accurate?». International Journal of Forecasting 16 (3): 349-357. 
  17. «Computer Arithmetic Tragedies page of Kees Vuik». ta.twi.tudelft.nl. Consultado el 2 de marzo de 2016. 

Bibliografía

editar

Enlaces externos

editar

En español

editar

En inglés

editar

Publicaciones

editar

Textos on-line

editar

Material del cursos on-line

editar