Por lo general, existen estándares (de la industria) que abordan este problema. Los estándares son universalmente aceptados o incluso a veces obligatorios por contrato. Por ejemplo, muchas de las simulaciones que se realizaron para el programa Aries de la NASA cumplían con el estándar IEEE 754. El estándar especifica cómo se debe realizar el redondeo y mucho más.
EDITAR: Hubo una pregunta sobre lo que esto realmente significa y se ve en la práctica. Así que estoy agregando este apéndice.
Cuando los científicos (o matemáticos o ingenieros, etc.) obtienen fórmulas o modelos para describir el mundo real, generalmente usan el sistema de números reales [math] \ mathbb {R} [/ math] o el sistema de números complejos [math] \ mathbb {C } [/ math] como el campo en el que la función o las asignaciones en sus modelos pueden asumir valores. En otras palabras, en el lenguaje cotidiano, utilizan el sistema de números reales o los números complejos para construir sus modelos. Una vez que derivan los modelos para el sistema que intentan explicar, el siguiente paso es simular varias condiciones de interés utilizando los modelos.
- ¿Qué hace que el teorema fundamental del cálculo sea tan fundamental?
- Newton y Leibniz desarrollaron cálculo. ¿Cómo se hicieron las matemáticas y la física antes que ellos?
- ¿Qué temas de matemática y física debe conocer un desarrollador de juegos?
- Cómo modelar matemáticamente la transferencia de calor entre 75 F de aceite y 100 F de aire
- Cómo evaluar mis conceptos básicos de matemáticas, física y química.
Entonces, por ejemplo, si quisiera saber qué sucedería con el piloto automático de una aeronave que diseñé si sufriera alguna tormenta inesperada, modelaría la aeronave, su sistema de control y el entorno operativo como la tormenta. Todos estos son modelos básicamente complejos (ecuaciones diferenciales diferenciales o parciales) que capturan la física del sistema general en el que estoy interesado.
Ahora, para sacar conclusiones significativas de los modelos en mi ejemplo, uno puede realizar un análisis sistemático de todo el sistema. Esto se puede hacer con lápiz y papel (por ejemplo, verificando todos los bordes o limitando casos, etc., delimitando el problema y haciendo aproximaciones), o se puede lograr mediante la integración numérica (en este ejemplo). Para la integración numérica, uno necesita implementar los ODE (o PDE) en una simulación digital, es decir, un programa de computadora que pueda resolver, numéricamente, las ecuaciones diferenciales.
PERO hay un problema aquí! Una vez que pasamos de los modelos (por ejemplo, la mano deriva ecuaciones diferenciales que gobiernan el comportamiento dinámico del sistema) a la simulación digital / numérica, cambiamos muy sutilmente nuestro sistema numérico de [math] \ mathbb {R} [/ math] (o [math] \ mathbb {C} [/ math]) al sistema de números de coma flotante. Desafortunadamente, el sistema de números de coma flotante no satisface los mismos axiomas que el sistema de números reales. En particular, no está cerrado y no cumple con las relaciones de orden de la misma manera que el sistema de números reales. Ver la figura 1.
Fig. 1: Un dibujo conceptual de lo que puede salir mal cuando nos movemos del sistema de números reales a tres plataformas de simulación de integración numérica separadas (C / C ++, Simulink y plataformas genéricas “otras”).
Entonces, por ejemplo, si implementa una ecuación diferencial en Simulink, uno puede encontrar que el número 2 ^ -769 no se representa fácilmente … puede redondearse a cero. Esto se debe a la precisión finita que tiene la plataforma de simulación frente a la precisión ‘infinita’ de los reales (ver relación de orden). Para hacer frente a este tipo de ‘agujero’ en la simulación digital, se desarrolló el estándar de coma flotante IEEE 754. Si está interesado en aprender más sobre esto, le recomiendo leer la publicación de Cleve Molers sobre números de coma flotante aquí. También hace un gran trabajo al explicar cómo la distribución de números representables entre [a, b], por ejemplo, no es uniforme. Por lo tanto, puede haber más números representables en [a, (ab) / 2] que en [(ab) / 2, b].
Una vez que se desarrolla la simulación para que cumpla con los estándares IEEE 754, uno debe lidiar con un nuevo conjunto de problemas relacionados con la interpretación real y la implementación del estándar en diferentes plataformas. Por ejemplo, las bibliotecas matemáticas de un compilador pueden implementarse de manera que cumplan con el estándar 754, ¡pero aún así producen resultados diferentes en computadoras diferentes! Tal vez debería discutirse en una pregunta separada.