Análise numérica

A análise numérica ou cálculo numérico é a rama das matemáticas que concirne coa derivación, descrición e análise de ferramentas e métodos para obter solucións numéricas de problemas matemáticos. A análise numérica está interesada en métodos matemáticos construtivos, isto é, aqueles métodos que mostran como construír solucións de problemas matemáticos. Por exemplo, unha proba construtiva da existencia dunha solución dun problema non só mostra que a solución existe, senón que tamén describe como debe ser determinada esa solución. Unha demostración da existencia dunha solución por redución ao absurdo non é construtiva.
Durante moito tempo a palabra algoritmo usouse como sinónimo de "método" no contexto de construír a solución dun problema matemático. Recentemente deseñouse unha definición matemática máis axeitada de algoritmo, en gran parte debida ao traballo de Alan Mathison Turing (1912-54), que deu unha definición baseada nun concepto abstracto dun computador. Para os propósitos deste artigo, consideraremos un algoritmo como a descrición completa e sen ambigüidades dun método de construción da solución dun problema matemático; deste xeito, podemos definir a análise numérica como o estudo de algoritmos que empregan a aproximación numérica (no canto da computación simbólica) para os problemas da análise matemática (a diferenza das matemáticas discretas).
Aínda que hoxe en día se deseñan moitos algoritmos numéricos para seren usados nos ordenadores dixitais, a análise numérica non debe confundirse coa programación computacional nin co procesamento de datos. A programación computacional concirne primariamente co problema de codificar algoritmos (non necesariamente numéricos) dunha forma axeitada para un ordenador; mentres que o procesamento de datos ten que ver cos problemas relativos a organizar un ordenador para que poidan ser manipulados os datos, os cales non teñen por que seren numéricos.
Campos relacionados coa análise numérica son a computación científica, que estuda a aplicación de técnicas numéricas e arquitectura de ordenadores a problemas concretos xurdidos nas ciencias e enxeñarías; a teoría da complexidade, que analiza o número de "operacións" e a cantidade de memoria do ordenador necesarias para resolver un problema; e a computación paralela, que concirne coa organización de procedementos computacionais de maneira que sexa posible executar varias partes dos procedementos simultaneamente en diferentes procesadores.
Os problemas que resolve a análise numérica aparecen en moitas disciplinas: ciencias naturais, ciencias sociais, enxeñaría, medicina, e nos negocios. Desde a metade do século XX, o crecemento en potencia e dispoñibilidade dos ordenadores dixitais levou a un incremento no uso de modelos matemáticos realistas en ciencia e enxeñaría; e é necesaria unha análise matemática cada vez máis sofisticada para resolveren aqueles modelos máis detallados do mundo.
A análise numérica continúa esta longa tradición de cálculos matemáticos prácticos. Ao xeito da aproximación babilónica de 2 {\displaystyle {\sqrt {2}}}, a análise numérica moderna non busca respostas exactas, xa que asume que estas son imposibles de obter na práctica. No canto disto, a análise numérica preocúpase de obter solucións aproximadas mantendo unhas marxes razoables de erro.
Un concepto paralelo á análise numérica é o da representación, tanto dos números como doutros conceptos matemáticos como os vectores, polinomios etc. Por exemplo, para a representación en ordenadores de números reais, emprégase o concepto de coma flotante que dista moito do empregado pola matemática convencional. En xeral, estes métodos aplícanse cando se precisa un valor numérico como solución a un problema matemático, e os procedementos "exactos" ou "analíticos" son incapaces de dar unha resposta. Debido a isto, son procedementos de uso frecuente por físicos e enxeñeiros, e o seu desenvolvemento viuse favorecido pola necesidade destes de obter solucións, aínda que a precisión non sexa total. A física experimental, por exemplo, non ofrece nunca valores exactos senón intervalos que abranguen a maioría dos resultados experimentais obtidos, xa que non é habitual que dúas medidas do mesmo fenómeno dean valores exactamente iguais. Historia
Os algoritmos numéricos son case tan antigos coma a civilización humana. Os babilonios, vinte séculos antes de Cristo, xa posuían táboas de cadrados de todos os enteiros entre 1 e 60. Un dos primeiros escritos matemáticos, tamén de autoría babilonia, é a taboíña YBC 7289, que dá unha aproximación numérica sesaxesimal de 2 {\displaystyle {\sqrt {2}}}, considerándoa coma a lonxitude da diagonal do cadrado de lado a unidade. Esta destreza segue a ter hoxe en día a súa aplicación práctica, por exemplo, en carpintería e construción.
Os exípcios, que xa usaban fraccións, inventaron o chamado método da regula falsi para aproximar solucións dunha ecuación, descrito no papiro de Rhind (c. 1650 a. C. ).
Na Grecia antiga foron moitos os matemáticos que contribuíron ao pulo desta disciplina. Así, Arquímedes (278-212 a. C. ) demostrou que: 31071 < π < 317 {\displaystyle 3{\frac {10}{71}}<\pi <3{\frac {1}{7}}} e presentou o chamado método exhaustivo para calcular lonxitudes, áreas e volumes de figuras xeométricas, moi próximo ao que hoxe se fai en análise numérica. Así mesmo foi tamén un precursor do desenvolvemento do cálculo integral de Isaac Newton (1643-1729) e Gottfried Wilhelm Leibniz (1646-1716).
Herón de Alexandría ideou no século I un método para calcular un valor aproximado da raíz cadrada dun número a, partindo dunha aproximación inicial x0 e mediante a iteración: x n + 1
12 ( x n + a x n ) {\displaystyle x_{n+1}
{\frac {1}{2}}\left(x_{n}+{\frac {a}{x_{n}}}\right)} No ano 250, Diofanto consegue un método para a determinación das solucións dunha ecuación cuadrática.
As maiores contribucións durante a Idade Media para o desenvolvemento da matemática algorítmica viñeran principalmente da India e a China. O máis salientable é, sen dúbida, a introdución da chamada numeración hindú-árabe. Coa aparición do cálculo e o descubrimento dos logaritmos no século XVII, os novos modelos matemáticos propostos non podían resolverse de forma explícita, facéndose necesario o desenvolvemento de métodos numéricos para obter solucións aproximadas. Por exemplo, Newton desenvolveu varios métodos para a resolución de moitos problemas, métodos que hoxe levan o seu nome. Esta técnica continuou desenvolvéndose nos séculos XVIII e XIX, podéndose destacar na construción de métodos numéricos a Leonhard Euler (1707-1783), Joseph Louis Lagrange (1736-1813) e Carl Friedrich Gauss (1777-1875).
A aparición dos ordenadores contribuíu decisivamente ao desenvolvemento da análise numérica. A pesar de que tanto Pascal coma Leibniz xa construíran no século XVII as primeiras máquinas de calcular e de que Charles Babbage construíu o considerado primeiro ordenador que nunca funcionou, non foi ata a década dos 40 do século XX cando aparece o primeiro ordenador coa construción do ENIAC, ao que seguiron moitos máis que evolucionaron ata chegar aos modernos ordenadores electrónicos.
Antes da chegada das computadoras modernas, os métodos numéricos adoitaban depender de interpolacións manuais en longas táboas impresas. Desde mediados do século XX as computadoras calculan as funcións requiridas. Porén, os algoritmos de interpolación pódense usar coma parte do software para resolver ecuacións diferenciais.
A análise numérica atopa aplicacións en tódolos campos da enxeñaría e as ciencias naturais, mais no século XXI, as ciencias sociais e incluso as artes adoptaron elementos do cálculo científico. As ecuacións diferenciais ordinarias aparecen nos movementos dos corpos celestes (planetas, estrelas e galaxias); a optimización ten lugar na xestión de catálogos; a álxebra lineal numérica é importante para a análise de datos; as ecuacións diferenciais estocásticas e as cadeas de Markov son esenciais na simulación de células vivas na medicina e a bioloxía. Problemas que trata e tipos de erros
Os problemas desta disciplina pódense dividir en dous grupos fundamentais: Problemas en dimensión finita: aqueles de natureza numérica nos que interveñen números en cantidade finita, como o cálculo de solucións de ecuacións alxébricas, cálculo de determinantes, resolución de sistemas de ecuacións, inversión de matrices, cálculo de autovalores e autovectores etc.
En todos estes problemas, a análise numérica debe proporcionar algoritmos que permitan o cálculo exacto ou aproximado da solución. Problemas en dimensión infinita: problemas nos que interveñen elementos con infinitos graos de liberdade (por exemplo, funcións), como a interpolación e aproximación, a integración e a derivación numéricas, a resolucións de ecuacións diferenciais, a interpolación etc.
A análise numérica debe ocuparse da aproximación dun problema deste segundo tipo por outros do primeiro, de maneira que serán estes últimos os que se resolvan coa axuda dos ordenadores. O proceso de aproximación dun problema en dimensión infinita polo paso a dimensión finita coñécese como discretización e realízase principalmente coa axuda da teoría da interpolación e aproximación de funcións. En xeral, a discretización será boa cando a solución do problema aproximado converxa á do problema inicial, cando a dimensión tenda a infinito.
Neste problema de convexencia é importante a estimación do erro cometido ao substituír a solución exacta pola aproximada, isto é, o chamado erro de discretización. Unha vez reducido o problema en dimensión infinita a un en dimensión finita, hai que describir e analizar os algoritmos numéricos que se van utilizar na súa resolución. Con frecuencia preséntanse problemas que non poden resolverse mediante métodos directos (aqueles que nun número finito de operacións chégase á solución exacta), sendo necesario o uso de métodos iterativos: constrúese unha sucesión infinita de iterantes que no límite converxe á solución exacta, aínda que na práctica só se poderán calcular un número finito de iterantes. O erro que se comete ao deter o proceso infinito nun paso determinado, chamado erro de truncamento, ou erro de converxencia, debe considerarse cuidadosamente.
De especial importancia no cálculo a gran escale é un terceiro tipo de erro, o erro de arredondamento, debido á imposibilidade de representar exactamente nun ordenador todas as cifras dun número, tanto real coma complexo. Se a isto engadimos que a aritmética utilizada polo ordenador é diferente á que manexamos habitualmente, comprenderase a importancia deste erro cando se realizan un número elevado de cálculos.
Un algoritmo numericamente inestable, é dicir, aquel que é moi sensible aos erros de arredondamento, debe ser desbotado, xa que os resultados que proporcione poden diferir totalmente da solución real do problema. Para estudar a propagación dos erros precísase coñecer o condicionamento do problema, é dicir, a sesibilidade dos resultados do problema fronte a pequenos cambios nos datos de partida. A resolución dun problema mal condicionado leva a un funcionamento incerto dos algoritmos. Nestes casos haberá que mellorar o condicionamento, dalgunha maneira equilibrar o problema. Todas estas razóns fan necesaria a busca de algoritmos co menor número posible de operacións, ou algoritmos de baixo custo.
Tendo en conta estas consideracións, pódense distinguir tres tipos de problemas nos que intervén a análise numérica: Problemas de gran complexidade matemática que requiren unha solución aproximada xa que non teñen unha solución analítica coñecida. A análise numérica ocúpase de propor e analizar métodos que dean aproximacións da solución requirida. Un bo exemplo é o problema da predición do tempo atmosférico.
Problemas que poden ser resoltos analiticamente pero cuxa solución non poida ser explotada na práctica. Neste caso a análise numérica ocúpase de proporcionar algún método para a aproximación da solución que sexa sinxelo e que permita substituír a solución exacta. Por exemplo a función de Bessel en electromagnetismo.
Problemas que posúen solución exacta matemática calculable mediante un método exacto, pero que na práctica é inservible ao consumir moito tempo de cálculo ou ocupar moita memoria para almacenamento de datos. A análise numérica propón métodos numéricos alternativos. Un exemplo é o uso da regra de Cramer para a resolución dun sistema de ecuacións lineais cun número importante de ecuacións; así, un sistema de Cramer de 10 ecuacións necesita arredor de 40 millóns de operacións para a súa resolución. Áreas de estudo
A análise numérica divídese en diferentes disciplinas segundo o problema que hai que resolver. Algunhas das principais son:
Cálculo dos valores dunha función
Un dos problemas máis sinxelos é a avaliación dunha función para un valor dado. O enfoque máis sinxelo, de substituír o número na fórmula da función, non é, ás veces, moi eficiente polo alto número de operacións a realizar. Neste caso, para as funcións polinómicas, conséguese unha boa aproximación usando o algoritmo de Horner, xa que reduce o número necesario de multiplicacións e sumas a realizar. Xeralmente, é importante estimar e controlar os erros de arredondamento derivados do uso da coma flotante aritmética.
Interpolación, extrapolación, e regresión
A interpolación consiste en estimar o valor dunha función descoñecida en puntos comprendidos entre outros puntos nos que se coñece o valor da función.
A extrapolación é moi similar á interpolación, só que agora o valor da función quérese estimar en puntos fóra do intervalo no que están os puntos nos que se coñece o valor.
A regresión é tamén similar, mais tendo en conta que os datos son imprecisos. Dados algúns puntos e unha medida, cun certo erro, do valor dunha función neses puntos, pódese encontrar unha aproximación á función descoñecida, máis ou menos precisa dependendo do tipo de función e do método usado. Uns destes métodos son os métodos numéricos dos mínimos cadrados.
Resolución de ecuacións e sistemas de ecuacións
Outro problema fundamental é calcular a solución dunha ecuación dada. Distínguense dous casos dependendo de se a ecuación é linear ou non. Por exemplo, a ecuación 2 x + 5
3 {\displaystyle 2x+5
3} é linear, mentres que a ecuación de segundo grao 2 x 2 + 5
3 {\displaystyle 2x^{2}+5
3} non o é.
Fíxose un grande esforzo en desenvolver métodos para resolver sistemas de ecuacións lineares. Os métodos directos estándar, isto é, aqueles que usan algunha descomposición matricial, son a eliminación gaussiana, a descomposición LU, a factorización de Cholesky para matrices simétricas (ou hermitianas no campo complexo) e definidas positivas, e a descomposición OR para matrices non cadradas. Os métodos iterativos coma o de Jacobi, o de Gauss-Seidel, o da sobrerrelaxación sucesiva (SOR), e o do gradiente conxugado, son os preferidos normalmente para sistemas grandes. Os métodos iterativos xerais poden ser desenvolvidos usando a descomposición de matrices como suma ou diferenza doutras.
Os algoritmos de procura dun cero úsanse para resolveren ecuacións non lineares (chámanse así pois unha raíz ou cero dunha función é un valor para o que a función vale cero). Algúns dos métodos máis coñecidos son os de bisección, da secante e da regula falsi. Se a función é ademais derivable e a derivada é coñecida, emprégase moito o método de Newton, que é un método de iteración de punto fixo. A linearización é outro método empregado para resolveren ecuacións non lineares.
Descomposición en valores propios e en valores singulares
Algúns problemas importantes poden expresarse en termos de descomposición dunha matriz en valores propios ou en valores singulares. Por exemplo, o algoritmo da compresión espectral da imaxe baséase na descomposición en valores singulares, e a correspondente ferramenta en estatística chámase análise de compoñentes principais.
Optimización
O problema de maximizar (ou minimizar)unha función dada nun punto, coñécese como problema de optimización. Con frecuencia, o valor buscado está suxeito a unha serie de restricións.
O campo da optimización divídese en varios subcampos, dependendo da forma da función obxectivo e das restricións. Por exemplo, na programación linear tanto a función obxectivo como as restricións son lineares. Un método célebre de programación linear é o método do simplex.
O método dos multiplicadores de Lagrange pode usarse para reducir un problema de optimización con restricións, a un que non as teña.
Integración numérica
A integración numérica, ás veces chamada cuadratura numérica, úsase para estimar o valor dunha integral definida. Os métodos máis populares empregan algunha das fórmulas de Newton–Cotes, como a regra de Simpson, ou o método da cuadratura gaussiana. Estes métodos baséanse nunha estratexia de "divide e vencerás", consistente en dividir o intervalo de integración en subintervalos máis pequenos para facilitar o cálculo da integral e sumando despois todas estas integrais para calcular a inicial.
En dimensións superiores, onde os métodos anteriores fanse prohibitivos en termos de esforzo computacional, úsase a integración de Montecarlo, baseada nos métodos de Montecarlo e quasi-Montecarlo; ou, para grandes dimensións máis modestas o método da cuadrícula dispersa.
Ecuacións diferenciais numéricas
A análise numérica tamén pode calcular solucións aproximadas de ecuacións diferenciais, tanto ordinarias como en derivadas parciais. Os métodos empregados adoitan basearse en discretizar primeiramente a ecuación correspondente, traéndoa a un subespazo de dimensión finita. Isto pode facerse cun método dos elementos finitos, un método de diferenzas finitas ou, particularmente en enxeñaría, un método dos volumes finitos. A xustificación teórica destes métodos adoita implicar teoremas da análise funcional, co cal se reduce o problema á solución dunha ecuación alxébrica.