“La carencia de formación matemática se deja reconocer inmediatamente en la desmedida falta de rigor en los cálculos numéricos” – Carl Friedrich Gauss (1777 – 1855).
Las personas, en su mayoría, creen ciegamente en los resultados que arrojan las calculadoras o los computadores, como si estas máquinas que calculan con una rapidez sin igual fueran infalibles. Este tema, de los resultados falsos con el computador, lo he abordado frecuentemente y esta vez quiero compartirles un ejemplo, de los pocos que se revelan internacionalmente, que son dignos de un escándalo mundial.
Y es que el rigor de los cálculos numéricos en esta época de las veloces computadoras a disposición de todos, debe atenderse con menos ligereza, pues aun cuando las máquinas de cómputo nos facilitan enormemente la vida, nos inducen también a imperdonables errores si no mantenemos un mínimo de desconfianza en los resultados.
Hace apenas unas pocas semanas escribí sobre una polémica que se volvió viral al publicarse un trino mostrando respuestas diferentes de la misma operación aritmética realizada con dos calculadoras distintas (ver https://blogs.elespectador.com/actualidad/ecuaciones-de-opinion/una-polemica-aritmetica); lo cual pone de presente algo que nunca debemos perder de vista: las máquinas, todas, sin excepción, obedecen a una programación que realizamos los humanos.
Una de las principales barreras de cómputo, que no podrá ser superada, radica en la limitación para manejar números con precisión infinita. Así por ejemplo, cuando multiplicamos dos números con tres cifras decimales cada uno, el resultado será siempre un número hasta con seis cifras decimales y si ese nuevo número se opera ahora con otro, con seis decimales, el resultado va a ser un número hasta con doce decimales que al continuar operándose con otros similares conducen a resultados con un número siempre creciente de cifras decimales. Por lo tanto en una secuencia grande de multiplicaciones, llega un punto en el que hay que aproximar y despreciar muchos decimales en cada nueva operación. Es justamente en la manera como se haga esa tarea en donde está la clave para controlar el error natural que produce una aproximación.
Los números reales (que existen en nuestra mente) no pueden ser dominados en su totalidad por ningún computador; es más, las máquinas trabajan solamente con números racionales (un subconjunto propio de los reales), y son los encargados de aproximar también a todo el conjunto de los números irracionales tales como el número π, por ejemplo, que tiene infinitas cifras decimales. Pero adicionalmente, los números de máquina que puede dominar un computador, por potente que éste sea, forman un conjunto finito, que por lo tanto ni siquiera puede incluir a todos los racionales; así que los números de máquina no solamente tienen que aproximar a los que no son racionales, sino que además solo cuenta con unos “pocos” para representar a infinitos números reales.
Desde cuando apareció la computación científica como herramienta fundamental, se han formalizado algunos conceptos que se aprenden en los cursos básicos de cálculo numérico como son los que se refieren a los errores de redondeo y de truncamiento. Normalmente el programador elige una cantidad de bits que pueden ser usados para representar a los números en un computador, bien sean de un tipo o de otro (me refiero a enteros o reales), siendo los de más bits los de doble precisión, que comúnmente ofrecen los lenguajes de programación más populares y que pueden garantizar hasta unas 16 cifras de precisión, pues en la representación binaria se reservan bits para el signo, para el exponente y para la mantisa en el uso de la forma de punto flotante que es la más usada.
Una vez se elige la precisión deseada, limitada a las capacidades mencionadas, el programador decide si realiza redondeo o truncamiento o una combinación de las dos en las operaciones y esto es esencial. Para ilustrar a los lectores, me voy a permitir exponer el siguiente ejemplo sencillo: imaginemos que el número N = 2.94715 corresponde al promedio de las calificaciones de un estudiante universitario. Como ese promedio se debe expresar con solo una cifra decimal y la nota aprobatoria es 3.0, el estudiante podría aprobar o perder, dependiendo de la manera como el profesor o el sistema implementado haga la aproximación:
- Si el profesor trunca a partir de la segunda cifra, la calificación es 2.9 porque se desprecian las cifras que le siguen al dígito 9.
- Si él redondea, pueden presentarse varias opciones: si se usan solo las dos primeras cifras para redondear, entonces se redondea N = 2.94 aproximándolo a 2.9, por lo tanto, como en el primer caso, el estudiante pierde la materia.
- Pero con una cifra más de precisión tenemos que N = 2.947. Si ahora se hace una primera aproximación a dos cifras usando redondeo tenemos que N = 2.95 y repitiendo el redondeo, pero ahora a tan solo una cifra decimal, obtenemos N = 3.0 y nuestro estudiante pasaría.
Los sistemas de información académica de las universidades comúnmente optan por el siguiente método para calcular los promedios acumulados de las calificaciones de sus estudiantes:
Después de realizar la operación que arroja el promedio, si hay más de cuatro cifras decimales, se trunca en la cuarta y a partir de allí se realiza el proceso de redondeo tal como en el ejemplo; es decir que si volvemos a examinar nuestro N original, éste se trunca y se limita a cuatro cifras decimales, N = 2.9471; pero luego se redondea, lo que favorece al estudiante, que en este caso “pasa raspando” con 3.0.
Con lo anterior quería poner en contexto una historia poco difundida, que se conoce como “El error de Dhahran”, que se refiere a los siguientes hechos: en la Guerra del Golfo se probaron los misiles norteamericanos Patriot como principales artefactos de los novedosos sistemas inteligentes de defensa antiaérea con la capacidad de detectar misiles enemigos y perseguirlos hasta destruirlos en zonas seguras. No obstante la tranquilidad que daba este preciso y eficaz sistema de defensa, un misil iraquí logró caer exactamente sobre una guarnición norteamericana que se había establecido en la ciudad de Dhahran (Arabia Saudita) en febrero de 1991.
Una investigación posterior (que sí dio en el blanco) mostró que todo fue un error matemático, de cálculo; más concretamente de aproximación numérica. En efecto, aun cuando el software utilizado en el sistema del misil Patriot había sido concebido para garantizar 20 cifras decimales de precisión, la sincronización con el reloj del sistema, luego de 100 horas de funcionamiento produjo un desfase de 0.36 segundos de retraso. Este pequeño error, cercano a la tercera parte de un segundo, usado en la variable del tiempo para calcular la velocidad del misil, introdujo un error que desvió el Patriot, encargado de controlar al misil Scud iraquí, casi 600 metros. Dado el error en la estimación de la posición, aun cuando el radar detectó el misil enemigo, que se mueve a 1676 metros por segundo, el sistema no logró acertar la posición correcta para interceptarlo y por esa razón el misil impactó sobre el cuartel norteamericano instalado en la ciudad de Dhahran, matando a 28 soldados.
*Imagen Dominio público, https://commons.wikimedia.org/w/index.php?curid=894093
@MantillaIgnacio