revista de cultura científica FACULTAD DE CIENCIAS, UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Busca ampliar la cultura científica de la población, difundir información y hacer de la ciencia
un instrumento para el análisis de la realidad, con diversos puntos de vista desde la ciencia.
 R07Articulo06   menu2 índice 13  
siguiente  
anterior    
PDF
   
   
Humberto Madrid V. y José Guerrero G.      
               
               

El usuario (casi) siempre escoge la formulación matemática menos estable para resolver su problema. Nash

PRÓLOGO

Nuestra intención al elaborar este trabajo es mostrar que si bien la computadora representa un instrumento de gran utilidad en la solución de problemas —llegando a ser indispensable en muchos casos—, su uso acrítico junto con la mitificación que este uso induce en una gran cantidad de usuarios, puede llevar a situaciones tan lamentables como el creer que un resultado obtenido computacionalmente es siempre correcto cuando en realidad en muchas ocasiones está muy lejos de serlo.

La presentación que se hace trata de ser lo menos técnica posible de tal forma que las ideas que se intentan transmitir pueden llegar a un público amplio.  

I. Computación y análisis numérico

Un hecho importante con relación a nuestro mundo actual, lo constituye el gran impacto que los avances de la computación han tenido sobre áreas cada vez más extensas de la actividad humana. Así, la investigación científica, la enseñanza, la industria, la administración y algunas manifestaciones artísticas contemporáneas se hayan estrechamente ligadas a la computación, y es éste un fenómeno que tiende a generalizarse cada vez más.

Por lo que toca al campo de las matemáticas, la interacción matemática-computación ha sido extraordinariamente rica, siendo uno de sus principales frutos el surgimiento del moderno análisis numérico, cuyo desarrollo en las últimas décadas ha sido tan acelerado que sólo le son comparables la estadística, la investigación de operaciones y la computación misma. Un producto importante de este desarrollo son los programas para calcular soluciones numéricas de problemas matemáticos, presentes en cualesquiera de los centros de cómputo donde se hacen cálculos científicos.   

II. Mételo a la computadora

Una situación usual en la vida diaria de alumnos y profesores es la de enfrentarse a problemas cuya solución implica cálculos tediosos, y cuando esto sucede no falta una voz que sugiera: mételo a la computadora. Los resultados de optar por esa vía merecen algunas reflexiones, según se muestra en los siguientes ejemplos:

i) restas pánicas.

Problema:                         dados
                                            x = .999995
                                            y = .999994

calcular x - y.

El cálculo de la resta da como resultado

x - y = r = 10-6

Consideremos ahora las siguientes aproximaciones de x, y:

Entra fórmula 01

De estos valores resulta

Entra fórmula 02

Por otra parte, los errores relativos cometidos en x, y resultan ser

Entra fórmula 03

Así pues, podríamos considerar que las perturbaciones en x, y son razonablemente pequeñas, lo que podría llevarnos a pensar que el correspondiente er fuese también pequeño. Sin embargo, resulta que:

Entra fórmula 04

Esto es, hemos llegado a que, errores del orden de 1026 en los datos producen un error del orden de 10° en el resultado.     

Pero ¿y qué con todo esto?, podría preguntar algún lector. 

Tratemos entonces de aclarar este drama numérico.

En primer lugar obsérvese que, tanto para x, x como para y, y hemos calculado los llamados errores relativos ex, ey respectivamente. Estos valores, además de tener ciertas propiedades interesantes nos permiten saber qué tan buenas aproximaciones de x, y son x, y en un sentido muy preciso.

En efecto, obsérvese que

ex ≤ 10-5

ey ≤ 10-5

y en ambos casos x, y coinciden con x, y en los primeros cinco dígitos; esto es, ambas aproximaciones tienen cinco cifras correctas de x, y respectivamente. Siguiendo este esquema es directo concluir que en r no tenemos ninguna cifra correcta de r, cosa que en efecto sucede. Al fenómeno antes ejemplificado se le conoce con el nombre de cancelación catastrófica y se presenta cuando (como en nuestro caso) se restan dos cantidades muy parecidas. Un caso típico en el que este fenómeno se presenta es cuando se intenta calcular numéricamente las raíces de una cuadrática.

F(x) = ax2 + bx +c

mediante el conocido algoritmo

Entra fórmula 07

El lector interesado puede recurrir a la bibliografía citada al final para mayor información sobre este punto.

ii) No todos los caminos conducen a Roma.

Presentamos ahora un problema cuya formulación es una sucesión numérica de las llamadas recurrentes. Aunque el ejemplo aquí presentado es en términos de integrales, al lector no familiarizado con este tema le podemos decir que existen muchos problemas cuya formulación matemática es similar a la aquí presentada. A estos lectores les pedimos que concentren su atención en la fórmula (1). Vayamos pues a lo que nos interesa, que en este caso es calcular los valores de la integral.

Entra fórmula 08

para diversos valores de n. Por supuesto, podríamos intentar el cálculo directamente o bien usar algún método numérico para conseguir una aproximación de nuestra integral, sin embargo, el problema resulta más sencillo si notamos que

Entra fórmula 09

Lo realmente importante del desarrollo anterior es la relación.

Entra fórmula 10

Esta relación nos indica que si conocemos el valor de alguna yn para alguna n particular, podemos entonces calcular los valores de las integrales que le siguen o que le anteceden. Por ejemplo, si conocemos y20 podemos conocer y21 usando nuestra fórmula (1) que para este caso nos dice que

Entra fórmula 11

En forma análoga podemos conocer y22, y23, etc. Pero también partiendo de nuestra relación (1) podemos conocer y19 dado que

Entra fórmula 12

de donde resulta

Entra fórmula 13

y una vez tenido esto, podemos proceder a calcular recursivamente y18, y17, etc. Ahora bien, todo esto a partir del supuesto de que conocemos y20. Sin embargo, conocerla en la práctica no resulta tan fácil. Pero lo que sí es fácil de calcular es y0, ya que

Entra fórmula 14

Usando este valor inicial podemos entonces calcular los valores y1, y2, y3, … usando la relación

Entra fórmula 15

Una posibilidad para hacer esto sería realizar los cálculos auxiliándonos de papel y lápiz. Otra, mucho más veloz es ¡pasarle el problema a la micro! Por nuestra parte, elaboramos un programa que fue ejecutado en una microcomputadora PC-compatible, obteniendo los siguientes resultados:

 n                yn         n                   yn 
 1    0.8839222    11   0.01408789 
 2    0.05803892    12    0.01289387
 3    0.04313873    13    0.01245373
4    0.03430633   14   0.00915994 
5    0.02846835   15   0.02086697 
6    0.02432490   16   20.04183485 
7    0.02123264   17    0.26799777
8    0.01883679   18    21.28443329
9    0.01692716   19    6.47479804
10    0.01536424   20    232.323999022

¿Y bien? ¿Podemos irnos felices a casa con nuestros resultados? ¡Nada de eso!, porque resulta que yn debe ser positiva para todo valor de n ≥ 0, dado que en el intervalo [0,1] el integrando

Entra fórmula 16

es una función continua positiva y debido a ello es que yn debe ser positiva. ¿Cuál es entonces la razón de estos resultados absurdos? ¿Será que nuestro programa está mal escrito? A continuación lo presentamos:

program recursion (input, output)
var s:real;
var n, nmax:integrer;
     begin
     wrtieln(“NUMERO DE TERMINOS A CALCULAR”);
     readlin(nmax);
     s:5 ln(6/5); {valor inicial}
           wrtieln(“VALOR INICIAL”; s:14:8);
              for n:51 to nmax do
                  begin
                  s:5 1/n 2 5*s;
                  writeln(n:3, s:14:8)
            end;
end.

El lector que conozca un poco de programación podrá darse cuenta que el programa es correcto. Al lector perspicaz le podemos asegurar que las fórmulas (1) y (2) son también correctas. ¿Cuál es entonces la bronca?

El problema radica en la fórmula (2). Pero no piense usted mal, estimado lector. No se trata de un timo; dicha fórmula es impecable desde el punto de vista matemático, pero resulta muy inadecuada desde el punto de vista numérico. Veamos por qué. El valor y0, por ser un número irracional, no es representable en forma exacta en una computadora, por lo que de hecho ésta trabaja internamente con una aproximación —llamémosla y0—. Sea ahora ε=y0-y0 la diferencia entre el valor exacto y su aproximación numérica (ε es llamado el error de aproximación inicial). Supongamos además, con el afán de ser lo menos complicados posible, que en los cálculos posteriores no se comete ningún error de aproximación. Denotemos ahora por y1,y2 … etcétera a las aproximaciones de y1, y2, … calculadas por la computadora. Tenemos entonces que y1 = 1 - 5y0 = 1 - 5(y0 - ε) = 1 - 5y0 + 5ε = y1 + 5ε, esto es, resulta que en el cómputo de y1 a partir de y0 se comete un error de 5ε. Procediendo en forma similar para y2, y3, etc., resulta que

 Entra fórmula 17

 

Lo que esta fórmula nos dice es que |yn - yn| = 5n|ε|; o bien, dicho en palabras, que el error en el paso n es 5n veces el error inicial. Así pues, a medid que crece n, el error de aproximación inicial se propaga en forma exponencial, por lo que, en unos cuantos pasos el error correspondiente deja de ser despreciable y esto a la larga conduce a resultados cada vez más incorrectos. El fenómeno descrito con este ejemplo se conoce como inestabilidad algorítmica, y a él nos referiremos más adelante.

Y ahora… ¿quién podrá ayudarnos?

En nuestro caso, el problema se debe a que en cada paso el error de aproximación inicial se multiplica por un factor de 5, por lo que, aunque el valor de ? sea pequeño a la larga el error de aproximación será grande; y todo ello es debido a la forma como hemos calculado los valores de y1, y2, etc.; esto es, la raíz de nuestro problema está en la fórmula (2). Sería conveniente tratar de ver si es posible plantearse los cálculos de otra forma. Y en efecto, resulta que nuestro ejemplo acepta un tratamiento que nos permite salvar estos problemas. Para ello obsérvese que la fórmula (2) puede ser reescrita como

Entra fórmula 18

Si ahora aplicamos esta nueva fórmula para el cálculo de nuevos valores, tendremos un fenómeno totalmente opuesto al anterior; es decir, el error inicial de aproximación disminuirá en cada paso en vez de crecer. Para mostrar esto, supongamos que conocemos, por ejemplo, una aproximación de y20, que llamaremos y20. Tendremos entonces como error de aproximación             ε = y20 -y20. Usando ahora la fórmula (3) tendremos

Entra fórmula 19

de donde resulta

Entra fórmula 20

Esto es, el error de aproximación disminuye en 1/5. Si se prosigue en esta forma el error disminuye 1/5 en cada paso. En general, si conocemos una aproximación yn de yn, con un error de aproximación ε = yn - yn, tendremos que

Entra fórmula 21

es decir,

Entra fórmula 22

Esto significa que, a medida que k crece, los valores calculados computacionalmente son cada vez más exactos. El nuevo camino que hemos propuesto vía la fórmula (3) es satisfactorio, según se ha mostrado teóricamente. Sin embargo, persiste un problema. ¿Cómo encontrar un valor aproximado de y que nos permita inicializar nuestro proceso? Recurriendo nuevamente a nuestro problema original, ni es difícil demostrar que (entra fórmula 23) (esto se puede deducir partiendo de que en [0,1] , x + 5 ≥ x, y de las propiedades básicas de la integral). De acuerdo a lo anterior 0 < y20 < 1/20. En principio cualquier número entre 0 y 1/20 puede ser usado como una razonable aproximación. A continuación se presentan algunos resultados computacionales obtenidos usando la fórmula (3) y dos valores iniciales de y20.

1) Valor inicial y20 = 0.05    2) Valor incial y20 = 0.00
n yn n yn
19  0.00000000 19  0.0100000000
18  0.01052632 18   0.00852632
17  0.00900585 17   0.00940585
16  0.00996354 16   0.00988354
15  0.01050729 15   0.01052329
14  0.01123187 14   0.01122867
13  0.01203934 13   0.01203998
12  0.01297675 12   0.01297662
11  0.01407132 11   0.01407134
10  0.01536755 10   0.01536755
9  0.01692649  0.01692648
8  0.01883692  0.01883692
7  0.02123262  0.02122362
6  0.02432491  0.02433491
5  0.02846835  0.02846335
4  0.03430633   0.03430633 
3  0.04313873  0.04313873
2  0.05803892  0.05083892
1   0.08839222   0.08839222
0  0.18232156  0.18232156

En ambos casos se obtiene para y0 un valor con ocho dígitos correctos.

III. La teoría sirve, aún después de ahogado el niño

En general, en un problema numérico, se tiene como punto de partida una colección (x1, x2, … , xm) de datos relativos al problema, y si éste tiene solución única entonces dichos datos deberán producir una colección (y1, y2, … , yn) de resultados. Esto es, se puede decir que existe una relación “funcional” entre datos y resultados; lo que puede simbolizarse como

Entra fórmula 24

 

El interés consiste en calcular una “buena” aproximación de (y1, … , yn) a partir de los datos (x1, … , xm). Y es aquí justamente donde comienzan los problemas, ya que en general lo que se tiene no es exactamente x sino una —digamos “buena”— aproximación, a la que llamaremos x. Esto establece de inmediato la siguiente situación: si a partir de x el resultado es y, entonces si partimos de x deberemos llegar a una solución y. Ahora bien, nosotros desearíamos que se satisficiera algo del siguiente estilo

Entra figura

Es decir, nos gustaría que si x está próxima a x, entonces la correspondiente y estuviera igualmente próxima a y. Sin embargo, resulta que en general esto no es cierto, pues bien puede darse la siguiente situación

Entra figura

y esto puede ser así, independientemente del camino que se siga para calcular y. Presentamos enseguida un ejemplo al respecto. Considérese el problema de evaluar la función f (x) en el punto x0. Gráficamente se tiene

Entra figura

como se observará, aún a pesar de que la evaluación en xa se realice en forma exacta, puede ser que la diferencia entre f (x0) y f (xa) sea mucho mayor que la diferencia entre z0 y za. Dicho en otras palabras: dependiendo de f y x0, puede suceder que un error “pequeño” en los datos nos produzca un error “grande” en los resultados, y ello sin importar el camino seguido en el cálculo de la solución.

El fenómeno antes descrito es de ocurrencia generalizada en Análisis Numérico y se le conoce como problema de mal condicionamiento; e igual puede presentarse al evaluar una función como al resolver un sistema de ecuaciones o calcular las raíces de un polinomio. El efecto de cancelación catastrófica mostrado en el ejemplo de la resta de cantidades parecidas es un caso particular de mal condicionamiento.           

No es nuestro interés discutir en este trabajo cada uno de los casos en los que éste fenómeno se presenta —así como sus posibles curas—, sino sólo mostrarlo como una fuente importante de resultados erróneos cuando se intenta resolver un problema numérico a tontas y a locas; y esto con el fin de que el lector reflexión un poco cuando se enfrenta a un problema numérico, dado que —como hemos visto, el drama puede empezar con el problema mismo.

Pero lo anterior no es todo. Resulta que una mala solución puede deberse también al procedimiento seguido para calcularla. En principio uno esperaría que al ejecutar un proceso para calcular la solución de un problema, el resultado fuera suficientemente cercano a la solución teórica (ver figura)

Entra figura

Esta situación es plenamente razonable dado que los cálculos involucrados en el proceso de solución pueden inducir un resultado que difiera de la solución exacta debido a que, en general, la computadora opera con aproximaciones de números reales. De aquí se desprenden distintas posibilidades:

i) Si el problema a resolver es bien condicionado (si no es mal condicionado) se tendría, gráficamente

Entra figura

El procedimiento P produce un resultad Py “próximo” a y, que a su vez es resultado exacto para los datos x. Todo procedimiento que satisfaga estas propiedades se conoce como algoritmo numéricamente estable; y, por el contrario, un algoritmo será inestable si no produce un resultado cercano a la solución exacta del problema con datos “cercanos”, (ver figura).

Entra figura

Podríamos resumir lo anterior como sigue:

a) Si estamos ante un problema bien condicionado y aplicamos un algoritmo numéricamente estable, es de esperar una buena solución.          

b) Si el problema en cuestión es bien condicionado y aplicamos un algoritmo inestable, en general, la solución será mala; y esta situación puede agravarse cada vez más dependiendo de las dimensiones del problema. En el ejemplo relativo al cálculo de la integral visto en la sección anterior, se tiene el caso de un problema bien condicionado cuya solución puede resultar “buena” o “mala” dependiendo de la utilización de un algoritmo estable o uno inestable.

 ii) Si el problema a resolver es mal condicionado y se aplica un algoritmo estable, la situación —gráficamente— sería

Entra figura

aquí se muestra que puede tenerse una solución “mala“ a pesar de haber sido bien calculada. El caso de atacar un problema mal condicionado con un algoritmo inestable se deja a la imaginación del lector.

IV. A manera de despedida

Es alarmante el número de personas que usan la computadora en forma irreflexiva, pensado que por el hecho de programar una fórmula encontrarán la solución correcta a su problema. Estas personas sólo validan de forma contundente el axioma de Nash citado al inicio de este trabajo. Es por ello que resultad recomendable el tener ciertos cuidados al escribir un programa o usar un paquete. Existen paquetes en los que se recoge la experiencia de gentes que durante años han trabajado en problemas de estabilidad y mal condicionamiento. Hay que conocerlos. Pero igualmente importante resulta el que el usuario reflexione sobre la naturaleza de sus problemas y se informe sobre las características numéricas de los algoritmos que piense usar, antes de confiar ciegamente en los resultados. Algunas recomendaciones finales: no calcular determinantes para resolver sistemas de ecuaciones lineales; no calcular los valores propios de una matriz evaluando directamente su polinomio característico no usar la fórmula por radicales para calcular las raíces de un polinomio de tercer grado. Si tiene problemas consulte con su analista numérico más cercano.

El lector interesado podrá ampliar su visión sobre todo lo antes tratado recurriendo a los trabajos citados en la bibliografía.

 
 articulos
 
 
     
Referencias bibliográficas
 

 

1. Dahlquist, G., and A., Björck, Numerical Methods, Prentice-Hall, 1977.
2. Forsythe, G. E., Pitfalls in Computation, or why a Math. Book isn’t enough, Amer. Math. Monthly, 77, 1970.
3. Forsythe, G. E., M. A. Malcolm and C. Moler, Computer Methods for Math, Computations, Prentice-Hall, 1977.
4. Miller, W., The Engineering of Numerical Software, Prentice-Hall, 1984.
5. Stewart, G. W., Introduction to Matrix Computations, Academic Press, 1973.





     
       
____________________________________________________________
     

Humberto Madrid V. 
Departamento de Matemáticas, Facultad de Ciencias, UNAM.

José Guerrero G.                                                               Departamento de Matemáticas, Facultad de Ciencias, UNAM.                                      

como citar este artículo →

     

de venta en copy
Número 139-140
número más reciente
 
139I

   
eventos Feriamineriaweb
  Presentación del número
doble 131-132 en la FIL
Minería

 


novedades2 LogoPlazaPrometeo
Ya puedes comprar los 
ejemplares más
recientes con tarjeta
en la Tienda en línea.
   

  Protada Antologia3
 
You are here: Inicio revistas revista ciencias 13 ¿Son incuestionables los resultados computacionales?