Todos los días se cuelan los
errores de cálculo en nuestra vida personal y laboral, normalmente sin quererlo y, peor aún, sin apercibirnos de su frecuencia.
No me refiero a los errores en las medidas (que dejo para los ingenieros mecánicos, sus
calibres, sus calibraciones y sus herramientas CAD), sino de los errores de cálculo matemático o informático en una fórmula con solución exacta. O sea, ¡
los errores de bulto!
El cálculo de errores de medida se basa en la teoría de los errores de distribución estadística de Gauss, con fórmulas como
éstas:
que, como verás, están editadas en Excel 2010 mediante su potentes Herramientas de Ecuación, siendo las fórmulas de cálculo de errores:
(1) El valor promedio de la medida.
(2) La desviación típica referida a la dispersión de las medidas en torno al valor promedio.
(3) El valor real de lo medido respecto al valor del error absoluto.
(4) El error relativo representa la proporción del valor medido que se ve afectada por el error.
Todo esto lo sabrás en teoría si eres ingeniero (aunque seas
ingeniero de software) y si te dedicas al desarrollo de herramientas CAD de diseño mecánico, con más razón.
Durante el desarrollo y las
pruebas del software debemos ser conscientes de que cualquier función o algoritmo se puede escapar de nuestro control, generando errores de cálculo, como:
Los
errores en la calidad del software se deben generalmente a las prisas por entregar un prototipo, con lo que no se memorizan suficientemente las soluciones generadas o no se documentan las líneas de código, en aras de su reutilización posterior. Cuando se está ante reglas o algoritmos desconocidos, por su novedad o por el caso más habitual de que haya sido otro el codificador, se suelen extrapolar mal las reglas o se omiten pasos necesarios para que los cálculos o los algoritmos sean correctos en todas las situaciones planteadas o ante cualquier input del usuario.
Ejemplos de errores de cálculo en programación o bugs conocidos:
- Pronósticos erróneos en la política de cálculo económico (vease
Merkel en Alemania o
Zapatero en España).
- La sonda
Mars Climate Orbiter chocó contra la superficie del planeta a
finales de 1999, debido a una conversión métrica errónea en sus ordenadores.
-
Vulnerabilidades en los equipos de telecomunicaciones debidas al software distribuido hasta ahora.
- El error del milenio o
problema del año 2000 (Y2K) es un bug o error de software causado por los programadores, y sus servidores y PCs, de omitir el año para el almacenamiento de fechas, haciendo que el
1 de enero de 2000 se retrotrajera al de 1900. La verdad es que alguna multinacional que conozco bien no pudo resolver el problema a tiempo y cambió el calendario de sus equipos para que, durante los meses que tardó en resolver el
bug del 2000 se ejecutaran en 1972, que también fue bisiesto y con la misma particularidad de comenzar en sábado, lo que hizo que aquel fin de año los equipos rejuvenecieran
18 años en una sola nochevieja.
- MS Excel supone erróneamente que el
año 1900 es bisiesto.
- La
aritmética en coma flotante de Excel 2007 está en entredicho debido a
cálculos erróneos.
- La mayor
compañía de software perdió datos de sus clientes en
octubre de 2009, debido a fallos en las aplicaciones de sus servidores en la nube.
- Un
líder mundial en seguridad digital tuvo problemas en
enero de 2010 con el sistema de reconocimiento de tarjetas bancarias y dejó sin servicio a millones de usuarios alemanes.
- Si crees que la lista acaba ahí, un candidato conocido para el futuro próximo son todos los ordenadores con sistemas operativos UNIX de 32 bits, o basados en el lenguaje C, dejarán de funcionar el
19 de enero de 2038. Es el llamado
Problema del año 2038 (Y2K38) que los retrocederá en un viaje en el tiempo hasta su arranque el 1
de enero de 1970.
- Colección de otros
software bugs aquí.
Después de esta pequeña lista pensará mi querido lector que las últimas versiones de los productos están libres de error porque cada vez se van haciendo las cosas mejor. Pues no, cada modificación conlleva un número indeterminado de errores, además de arrastar los que ya tenían las versiones anteriores y generar errores solapados y colaterales.
Volviendo a la aplicación de cálculo por
EXCELencia. Sigue generando errores de redondeo en aritmética de
coma flotante, por ejemplo en la fórmula:
que debería ser igual a 0 da un valor de -2,77555756156289E-17 incluso en la última versión de Excel 2010, compruébalo en:
How to correct rounding errors in floating-point arithmetic
Y ahora viene la lista de errores de cálculo conocidos hasta el momento en los
Calendarios Perpetuos que he publicado en este blog:
1º) Los meses de
enero y febrero de 1900 son erróneos debido a que Excel trata incorrectamente el primer año de su sistema de fechas al considerar que el
año 1900 es bisiesto sin serlo.
2º) Se usa incorrectamente la fórmula
NUM.DE.SEMANA(referencia;tipo) cuando el tipo vale 2 por emplearlo para calcular el calendario gregoriano de países europeos, cuando este tipo está pensado para países en los que el día 1 está incluido en la primera semana del año, siendo el lunes es el primer día de la semana. En Excel 2010 se podrá usar el tipo 21 que cumple la
ISO 8601, que dice que la primera semana del año es la que incluye el primer jueves, con lo que la fórmula será:
En Excel 2003 y 2007 se puede sustituir por:
3º) Cuando coinciden
2 ó mas eventos en el mismo día solo aparece coloreado uno de ellos para esa fecha.
4º) El algoritmo de cálculo del Domingo de Pascua de Semana Santa, según el Calendario Gregoriano para las iglesias de occidente, es válido hasta el año 4099 y no se puede extrapolar hasta 9999 (compruébalo aquí:
Easter Algorithm for a Computer Program)
El primer error es complejo de solucionar pues es interno a Excel y sólo afecta a 2 meses de los (9999-1899)*12 =
97.200 meses que se pueden visualizar con el Calendario Perpetuo.
El segundo error se corregirá cuando vaya actualizando y subiendo nuevas versiones de los calendarios.
El tercer error implica generar muchos más formatos condicionales de los que ya hay, o usar una gama de colores que sólo está permitida en Excel 2010, con lo que seguiría sin resolverse para Excel 2007.
El cuarto error es significativo pues de 9999-1899=8100 años, falla en 9999-4099=5900 años, un 72% de los años, pero aún hay tiempo para corregirlo...
Compilando la lista de calendarios publicados en este blog hasta la fecha:
Si encuentras algún error de cálculo me lo comentas o ¡te callas para siempre!
Más adelante comentaré métodos de control de
calidad del software para minimizar los errores de cálculo. El eliminarlos por completo se deja a los
"perfeccionistas"
Definición de la RAE para
perfeccionismo.
1. m. Tendencia a mejorar indefinidamente un trabajo sin decidirse a considerarlo acabado.
Recomiendo leer este artículo sobre la inocencia de los sistemas informáticos en los errores de cálculo: Presunción de inocencia (por Manolo Palao)
English translation of this post
here.