Diferencia entre revisiones de «Métodos numéricos»

De MateWiki
Saltar a: navegación, buscar
(Análisis numérico del método)
(Análisis numérico del método)
Línea 46: Línea 46:
  
 
=== Análisis numérico del método ===
 
=== Análisis numérico del método ===
 +
 +
El análisis numérico suele ser una tarea de matemáticos. Los ingenieros seleccionan el método que mejor se adapta a un problema particular, y lo aplican. Por ejemplo, un ingeniero civil puede seleccionar el mejor método de resolución de un sistema de ecuaciones lineales para calcular una estructura usando un método matricial. En ocasiones, los mismos ingenieros son los que implementan también el método, ya que para muchos problemas es más importante ser experto en el problema de ingeniería que se resuelve, más que un experto en programación o Informática. En esta sección incluimos un ejemplo de análisis numérico del algoritmo propuesto anteriormente, para ilustrar que aunque sea una tarea de matemáticos, un ingeniero también puede analizar si un algoritmo es adecuado para el problema que quiere resolver.
 +
 +
En el caso de integración numérica, la preocupación principal es cuál es el error de la aproximación. Como estamos discretizando el intervalo de integración, la pregunta es cuál es el mejor valor de <math>h</math> para obtener una solución satisfactoria. No basta con hacer el valor de <math>h</math>muy pequeño, ya que eso provocaría errores de redondeo en la máquina. Además, incluso si fuera muy pequeño, podría no ser adecuado para el problema que queremos resolver. Si obtenemos una expresión del error, es posible seleccionar un valor de <math>h</math> que cometa poco error, pero sea lo suficientemente grande para evitar los errores de redondeo en el ordenador, y también para que el tiempo de ejecución sea el menor posible.
  
 
Aplicando el ''análisis numérico'' es posible obtener una expresión del error en función de ''h''. El error de la aproximación es:
 
Aplicando el ''análisis numérico'' es posible obtener una expresión del error en función de ''h''. El error de la aproximación es:
Línea 59: Línea 63:
 
<math>\displaystyle E_i = f(x_i)h - (f(x_i)+f'(c_i))\int_{x_{i-1}}^{x_i} (t-x_{i-1})dt = f(x_i)h - (f(x_i)+f'(c_i))\frac{h^2}{2}</math>
 
<math>\displaystyle E_i = f(x_i)h - (f(x_i)+f'(c_i))\int_{x_{i-1}}^{x_i} (t-x_{i-1})dt = f(x_i)h - (f(x_i)+f'(c_i))\frac{h^2}{2}</math>
 
El error que cometemos al aproximar el rectángulo varía con el cuadrado de <math>h</math>, y depende también del valor de la función en el extremo. Si sumamos todos los rectángulos:
 
El error que cometemos al aproximar el rectángulo varía con el cuadrado de <math>h</math>, y depende también del valor de la función en el extremo. Si sumamos todos los rectángulos:
<math>\displaystyle E = \sum_i E_i = \sum_i f(x_i)h - \sum_i (f(x_i)+f'(c_i)\frac{h^2}{2} = h\sum_i f(x_i) - h^2\sum_i (f(x_i) + f'(c_i))</math>
+
<math>\displaystyle E = \sum_i E_i = \sum_i f(x_i)h - \sum_i (f(x_i)+f'(c_i)\frac{h^2}{2} = h\sum_i f(x_i) - \frac{h^2}{2}\sum_i (f(x_i) + f'(c_i))</math>
 +
Esta expresión nos permite extraer algunas conclusiones. El término dominante del error es el cuadrado de <math>h</math>. Por cada orden de magnitud que disminuyamos el valor de <math>h</math>, el error disminuirá en dos órdenes de magnitud.
 +
 
 +
Vemos también que hay términos que suman y restan en el error. Es decir, aunque el método cometa error, algunas veces lo hace ''por arriba'' y otras ''por abajo'', por lo que el error total podría compensarse y ser pequeño. Observamos también que el error depende de los valores de la función en los puntos que hemos seleccionado en el intervalo, y del valor de la derivada de la función. Nuestro método comete error incluso integrando una línea recta (de derivada constante), por lo que no parece un buen método numérico<ref>Obviamente, existen métodos de integración numérica más sofisticados y que cometen un error mucho menor. Este método es solo un ejemplo. Véase [http://es.wikipedia.org/wiki/Integraci%C3%B3n_num%C3%A9rica Integración numérica] (Wikipedia ES).</ref>.
  
 
== Orígenes del análisis numérico ==
 
== Orígenes del análisis numérico ==

Revisión del 13:35 20 ago 2013

Warning.png Este artículo está en versión beta. El autor de este artículo no lo ha terminado todavía, por favor no lo edites hasta que elimine este mensaje.

La mayoría de los métodos matemáticos empleados en ingeniería utilizan variables continuas. Cuando queremos trasladar estos métodos al ordenador, para facilitar su resolución, nos encontramos con que en un ordenador no es posible realizar cálculos en variable continua de manera eficiente. El ordenador trabaja con una representación de información discreta. Los métodos numéricos se encargan de adaptar métodos matemáticos en variable continua a un sistema de representación de información discreto. En ocasiones, también se emplean métodos numéricos cuando no es posible obtener una solución analítica de un problema.

1 Análisis numérico de algoritmos

Un método numérico es un algoritmo que intenta resolver una operación matemática compleja en un ordenador. Los motivos por los que se usa un método numérico en vez de intentar una solución analítica pueden ser varios:

  • El problema es muy complejo, y no se puede encontrar en la práctica
  • El problema no tiene solución analítica conocida, pero puede resolverse de manera numérica
  • El tamaño de la solución lo hace impracticable

El objetivo del análisis numérico es obtener un método para resolver el problema matemático en un ordenador. Hay que tener en cuenta que el ordenador solo es capaz de realizar operaciones matemáticas sencillas, y sobre todo, que los ordenadores usan un sistema discreto de representación de la información. En el desarrollo de un método numérico hay que tener en cuenta por tanto dos aspectos:

  • Es necesario traducir el problema a operaciones elementales (operaciones aritméticas)
  • Es necesario controlar el error para que el algoritmo sea estable, y produzca una solución cercana a la realidad

Algunos paquetes de software, como por ejemplo Octave UPM, poseen una biblioteca de métodos numéricos y de operaciones matemáticas que hacen más sencilla la implementación de un método numérico. Por ejemplo, aunque un ordenador no puede resolver un sistema de ecuaciones directamente, en Octave UPM la solución del sistema [math]A\cdot x = b[/math] se obtiene simplemente con

x = A\b;

En cuanto a controlar el error, existen dos fuentes principales de error:

Existen también diferentes conceptos que suelen aparecer relacionados con métodos numéricos:

  • Cuando hablamos de un método numérico, normalmente nos referimos a un algoritmo que resuelve un problema matemático y que se puede implementar en un ordenador.
  • En ocasiones, también se usa el término cálculo numérico, para denominar la actividad de resolver problemas matemáticos usando un ordenador.
  • Por último, el análisis numérico es una rama de la Matemática que se encarga del análisis de los algoritmos numéricos, con el fin de controlar el error y producir una solución fiel a la solución exacta.

2 Ejemplo de método numérico

Vamos a ver un ejemplo de método numérico sencillo. La integral de una función es un problema que a veces es complejo de resolver de manera analítica, o incluso, que puede no tener solución analítica. Sin embargo, es un problema relativamente sencillo de resolver numéricamente.

Área bajo la función

El problema que vamos a resolver es el siguiente: [math]\displaystyle D = \int_a^b f(x) dx[/math] Se trata de calcular el valor de D, que es el área bajo la curva f(x) entre los puntos x=a y x=b. Suponemos que f(x) es una función continua en [a,b]. La imagen de la derecha ilustra el problema.

Aproximación del area bajo la función usando rectángulos

Al integrar una función en un intervalo dado, estamos sumando pedazos del área de ancho infinitesimal. La suma contiene infinitos elementos, y su resultado es el valor de la integral, que coincide con la del área. En un ordenador, no podemos tener pedazos de área infinitesimal, por lo que será necesario discretizar el problema, y calcular el área aproximando por rectángulos de alguna longitud dada. Por ejemplo, en la imagen de la derecha hemos aproximado el área usando cinco rectángulos.

Es decir, hemos realizado la siguiente aproximación: [math]\displaystyle \int_a^b f(x) dx \approx \sum_{i=1}^5 A_i = \sum_{i=1}^5 f(x_i)\cdot h[/math] donde [math]h=2[/math] en la figura, y [math]x_1 = 12, \ \ x_2=14, \ \ \dots[/math], es decir [math]x_{i+1} = x_i + h[/math].

Es obvio que la aproximación supone un error en el cálculo. En el caso de la figura de la derecha, la zona roja de los rectángulos nos indica el error que estamos cometiendo en la aproximación. En los rectángulos [math]A_1, A_2, A_4 y A_5[/math] el error es positivo; es decir, nuestra aproximación supone una estimación superior al valor del área bajo la curva. En el caso del rectángulo [math]A_3[/math], el error es negativo, ya que hemos realizado una estimación inferior al valor del área bajo la curva en ese intervalo. Este error negativo se resta de la suma de los errores positivos, y mejora ligeramente nuestra estimación.

Si hiciéramos el valor de h más pequeño, el error cometido sería probablemente más pequeño. Pero no se puede disminuir h hasta valores arbitrariamente pequeños, ya que en algún momento alcanzaremos los límites de precisión de la máquina, y obtendremos errores de redondeo demasiado grandes. En el ejemplo, está claro que h=2 es demasiado burdo; el valor se ha elegido únicamente con fines ilustrativos.

Otro ejemplo de método numérico que se puede encontrar en MateWiki es la Factorización de Doolittle, que se usa para resolver sistemas de ecuaciones lineales, para el cálculo de la matriz inversa y otras aplicaciones.

2.1 Implementación del método numérico

2.2 Análisis numérico del método

El análisis numérico suele ser una tarea de matemáticos. Los ingenieros seleccionan el método que mejor se adapta a un problema particular, y lo aplican. Por ejemplo, un ingeniero civil puede seleccionar el mejor método de resolución de un sistema de ecuaciones lineales para calcular una estructura usando un método matricial. En ocasiones, los mismos ingenieros son los que implementan también el método, ya que para muchos problemas es más importante ser experto en el problema de ingeniería que se resuelve, más que un experto en programación o Informática. En esta sección incluimos un ejemplo de análisis numérico del algoritmo propuesto anteriormente, para ilustrar que aunque sea una tarea de matemáticos, un ingeniero también puede analizar si un algoritmo es adecuado para el problema que quiere resolver.

En el caso de integración numérica, la preocupación principal es cuál es el error de la aproximación. Como estamos discretizando el intervalo de integración, la pregunta es cuál es el mejor valor de [math]h[/math] para obtener una solución satisfactoria. No basta con hacer el valor de [math]h[/math]muy pequeño, ya que eso provocaría errores de redondeo en la máquina. Además, incluso si fuera muy pequeño, podría no ser adecuado para el problema que queremos resolver. Si obtenemos una expresión del error, es posible seleccionar un valor de [math]h[/math] que cometa poco error, pero sea lo suficientemente grande para evitar los errores de redondeo en el ordenador, y también para que el tiempo de ejecución sea el menor posible.

Aplicando el análisis numérico es posible obtener una expresión del error en función de h. El error de la aproximación es: [math]\displaystyle E = \sum_{i=1}^5 A_i - \int_a^b f(x)dx = \sum_{i=1}^5 f(x_i) h - \int_a^b f(x)dx[/math]

Tomaremos [math]x_0=10, \ x_1=12, \ x_2=14 \ \dots \ x_n=20[/math]. En cada rectángulo, estamos sustituyendo la función por un valor constante en el extremo del intervalo. Es decir, estamos usando un polinomio interpolador de grado 0. En general, el error que se comete en la interpolación se puede aproximar suponiendo que los rectángulos que usamos para interpolar son el polinomio de Taylor de grado 0 de la función. Es decir, en el intervalo [math][x_{i-1}, x_i][/math] tenemos que: [math]\displaystyle f(t) = f(x_{i}) + f'(c_i)(t-x_{i-1})[/math] donde [math]c_i[/math] es algún punto intermedio en el intervalo. El segundo término es el error que comete la aproximación de Taylor, y en nuestro caso, el error que cometemos al sustituir la función por un valor constante.

Si nos centramos en un rectángulo [math]A_i[/math], el error cometido en ese rectángulo [math]E_i[/math] vendrá dado por: [math]\displaystyle E_i = f(x_i)h - \int_{x_{i-1}}^{x_i} f(t)dt = f(x_i)h - \int_{x_{i-1}}^{x_i} (f(x_i) + f'(c_i)(t-x_{i-1}))dt[/math] Es decir: [math]\displaystyle E_i = f(x_i)h - (f(x_i)+f'(c_i))\int_{x_{i-1}}^{x_i} (t-x_{i-1})dt = f(x_i)h - (f(x_i)+f'(c_i))\frac{h^2}{2}[/math] El error que cometemos al aproximar el rectángulo varía con el cuadrado de [math]h[/math], y depende también del valor de la función en el extremo. Si sumamos todos los rectángulos: [math]\displaystyle E = \sum_i E_i = \sum_i f(x_i)h - \sum_i (f(x_i)+f'(c_i)\frac{h^2}{2} = h\sum_i f(x_i) - \frac{h^2}{2}\sum_i (f(x_i) + f'(c_i))[/math] Esta expresión nos permite extraer algunas conclusiones. El término dominante del error es el cuadrado de [math]h[/math]. Por cada orden de magnitud que disminuyamos el valor de [math]h[/math], el error disminuirá en dos órdenes de magnitud.

Vemos también que hay términos que suman y restan en el error. Es decir, aunque el método cometa error, algunas veces lo hace por arriba y otras por abajo, por lo que el error total podría compensarse y ser pequeño. Observamos también que el error depende de los valores de la función en los puntos que hemos seleccionado en el intervalo, y del valor de la derivada de la función. Nuestro método comete error incluso integrando una línea recta (de derivada constante), por lo que no parece un buen método numérico[1].

3 Orígenes del análisis numérico

Desde los comienzos de la Informática, los ordenadores se han dedicado a resolver problemas matemáticos que no era posible resolver a mano. Al principio, estos problemas no eran necesariamente complejos. Por ejemplo, muchas grandes empresas empezaron a usar ordenadores para el cálculo automático de las nóminas de sus empleados, aprovechando que el ordenador podía tratar grandes cantidades de información.

Sin embargo, la necesidad de resolver problemas complejos de ingeniería extendió pronto el rango de aplicaciones de los ordenadores, y empezaron a usarse para cálculos complejos, que no se adaptaban bien a un ordenador. Uno de los primeros ejemplos es la resolución de sistemas de ecuaciones lineales. En un principio, se intentaban adaptar métodos conocidos para su uso en un ordenador, pero no siempre proporcionaban un resultado correcto. El análisis rigurosos de los algoritmos y de las fuentes de error en un ordenador proporcionó respuesta a por qué en ocasiones los métodos numéricos no funcionaban, y supuso el nacimiento del análisis numérico, que es en la actualidad una rama de la Matemática[2]

4 Aŕeas del análisis numérico

5 Referencias

  1. Obviamente, existen métodos de integración numérica más sofisticados y que cometen un error mucho menor. Este método es solo un ejemplo. Véase Integración numérica (Wikipedia ES).
  2. Grcar, Joseph F. John von Neumann's Analysis of Gaussian Elimination and the Origins of Modern Numerical Analysis. SIAM Review, 53(4), pp. 607–682, 2011. (enlace a PDF sin suscripción)