La aritmética de intervalos (también conocida como matemática de intervalos, análisis de intervalos o cálculo de intervalos ) es una técnica matemática que se utiliza para mitigar los errores de redondeo y de medición en los cálculos matemáticos mediante el cálculo de los límites de las funciones . Los métodos numéricos que implican aritmética de intervalos pueden garantizar resultados relativamente fiables y matemáticamente correctos. En lugar de representar un valor como un único número, la aritmética de intervalos o la matemática de intervalos representa cada valor como un rango de posibilidades .
Matemáticamente, en lugar de trabajar con una variable real incierta , la aritmética de intervalos trabaja con un intervalo que define el rango de valores que puede tener. En otras palabras, cualquier valor de la variable se encuentra en el intervalo cerrado entre y . Una función , cuando se aplica a , produce un intervalo que incluye todos los valores posibles para para todo .
La aritmética de intervalos es adecuada para una variedad de propósitos; el uso más común es en trabajos científicos, particularmente cuando los cálculos son manejados por software, donde se utiliza para llevar un registro de errores de redondeo en los cálculos y de incertidumbres en el conocimiento de los valores exactos de los parámetros físicos y técnicos. Estos últimos a menudo surgen de errores de medición y tolerancias para componentes o debido a límites en la precisión computacional. La aritmética de intervalos también ayuda a encontrar soluciones garantizadas a ecuaciones (como ecuaciones diferenciales ) y problemas de optimización .
El objetivo principal de la aritmética de intervalos es proporcionar una forma sencilla de calcular los límites superior e inferior del rango de una función en una o más variables. Estos puntos finales no son necesariamente el verdadero supremo o ínfimo de un rango, ya que el cálculo preciso de esos valores puede ser difícil o imposible; los límites solo deben contener el rango de la función como un subconjunto.
Este tratamiento normalmente se limita a intervalos reales, por lo que las cantidades en la forma
donde y están permitidos. Con uno de , infinito, el intervalo sería un intervalo ilimitado; con ambos infinitos, el intervalo sería la recta de números reales extendida. Dado que un número real se puede interpretar como el intervalo, los intervalos y los números reales se pueden combinar libremente.
Consideremos el cálculo del índice de masa corporal (IMC) de una persona . El IMC se calcula dividiendo el peso corporal de una persona en kilogramos por el cuadrado de su altura en metros. Supongamos que una persona utiliza una báscula que tiene una precisión de un kilogramo, donde no se pueden discernir valores intermedios, y el peso real se redondea al número entero más cercano. Por ejemplo, 79,6 kg y 80,3 kg son indistinguibles, ya que la báscula solo puede mostrar valores redondeados al kilogramo más cercano. Es poco probable que cuando la báscula marque 80 kg, la persona tenga un peso de exactamente 80,0 kg. Por lo tanto, la báscula que muestra 80 kg indica un peso entre 79,5 kg y 80,5 kg, o el intervalo .
El IMC de un hombre que pesa 80 kg y mide 1,80 m es de aproximadamente 24,7. Un peso de 79,5 kg y la misma altura arrojan un IMC de 24,537, mientras que un peso de 80,5 kg arroja un IMC de 24,846. Como la masa corporal es continua y siempre aumenta para todos los valores dentro del intervalo de peso especificado, el IMC verdadero debe estar dentro del intervalo . Como todo el intervalo es menor que 25, que es el límite entre el peso normal y el excesivo, se puede concluir con certeza que el hombre tiene un peso normal.
El error en este ejemplo no afecta a la conclusión (peso normal), pero esto no suele ser así. Si el hombre fuera un poco más pesado, el rango del IMC podría incluir el valor de corte de 25. En tal caso, la precisión de la báscula sería insuficiente para llegar a una conclusión definitiva.
El rango de ejemplos de IMC se podría informar como , ya que este intervalo es un superconjunto del intervalo calculado. Sin embargo, el rango no se podría informar como , ya que el intervalo no contiene posibles valores de IMC.
Tanto la altura como el peso corporal afectan el valor del IMC. Aunque el ejemplo anterior solo consideró la variación en el peso, la altura también está sujeta a incertidumbre. Las mediciones de altura en metros generalmente se redondean al centímetro más cercano: una medición registrada de 1,79 metros representa una altura en el intervalo . Dado que el IMC aumenta uniformemente con respecto al peso y disminuye con respecto a la altura, el intervalo de error se puede calcular sustituyendo los valores más bajos y más altos de cada intervalo y luego seleccionando los resultados más bajos y más altos como límites. Por lo tanto, el IMC debe existir en el intervalo
En este caso, el hombre puede tener un peso normal o tener sobrepeso; las mediciones de peso y altura no fueron lo suficientemente precisas para llegar a una conclusión definitiva.
Una operación binaria en dos intervalos, como la suma o la multiplicación, se define mediante
En otras palabras, es el conjunto de todos los valores posibles de , donde y están en sus intervalos correspondientes. Si es monótona para cada operando en los intervalos, lo que es el caso para las cuatro operaciones aritméticas básicas (excepto la división cuando el denominador contiene ), los valores extremos ocurren en los puntos finales de los intervalos de los operandos. Escribiendo todas las combinaciones, una forma de expresar esto es
siempre que esté definido para todos y .
Para aplicaciones prácticas, esto se puede simplificar aún más:
El último caso pierde información útil sobre la exclusión de . Por lo tanto, es común trabajar con y como intervalos separados. De manera más general, cuando se trabaja con funciones discontinuas, a veces es útil hacer el cálculo con los llamados multiintervalos de la forma La aritmética de multiintervalos correspondiente mantiene un conjunto de intervalos (generalmente disjuntos) y también permite que los intervalos superpuestos se unan. [1]
La multiplicación por intervalos a menudo solo requiere dos multiplicaciones. Si , son no negativos,
La multiplicación se puede interpretar como el área de un rectángulo con aristas variables. El intervalo resultante cubre todas las áreas posibles, desde la más pequeña hasta la más grande.
Con la ayuda de estas definiciones, ya es posible calcular el rango de funciones simples, como por ejemplo, si , y :
Para acortar la notación de intervalos, se pueden utilizar corchetes.
se puede utilizar para representar un intervalo. Nótese que en una notación tan compacta, no se debe confundir entre un intervalo de un solo punto y un intervalo general. Para el conjunto de todos los intervalos, podemos utilizar
como abreviatura. Para un vector de intervalos podemos utilizar una fuente en negrita: .
También se pueden definir funciones de intervalo más allá de los cuatro operadores básicos.
Para funciones monótonas en una variable, el rango de valores es fácil de calcular. Si es monótonamente creciente (o decreciente) en el intervalo , entonces para todas aquellas funciones que (o ).
El rango correspondiente al intervalo se puede calcular entonces aplicando la función a sus puntos finales:
A partir de esto, se pueden definir fácilmente las siguientes características básicas para las funciones de intervalo:
En el caso de potencias pares, el rango de valores considerados es importante y se debe tener en cuenta antes de realizar cualquier multiplicación. Por ejemplo, para debería producir el intervalo cuando Pero si se toma mediante la multiplicación repetida de intervalos de la forma entonces el resultado es más amplio de lo necesario.
En términos más generales, se puede decir que, para funciones monótonas por partes, es suficiente considerar los puntos finales , de un intervalo, junto con los llamados puntos críticos dentro del intervalo, que son aquellos puntos donde la monotonía de la función cambia de dirección. Para las funciones seno y coseno , los puntos críticos están en o para , respectivamente. Por lo tanto, solo se deben considerar hasta cinco puntos dentro de un intervalo, ya que el intervalo resultante es si el intervalo incluye al menos dos extremos. Para seno y coseno, solo los puntos finales necesitan una evaluación completa, ya que los puntos críticos conducen a valores precalculados fácilmente, a saber, -1, 0 y 1.
En general, puede que no sea fácil encontrar una descripción tan simple del intervalo de salida para muchas funciones. Pero aún así puede ser posible extender funciones a la aritmética de intervalos. Si es una función de un vector real a un número real, entonces se llama extensión de intervalo de si
Esta definición de la extensión del intervalo no da un resultado preciso. Por ejemplo, tanto y son extensiones permisibles de la función exponencial. Son deseables extensiones más estrictas, aunque se deben considerar los costos relativos de cálculo y la imprecisión; en este caso, se debe elegir ya que da el resultado más estricto posible.
Dada una expresión real, su extensión de intervalo natural se logra utilizando las extensiones de intervalo de cada una de sus subexpresiones, funciones y operadores.
La extensión del intervalo de Taylor (de grado ) es una función diferenciable definida por
para algunos , donde es el diferencial de orden -ésimo de en el punto y es una extensión de intervalo del resto de Taylor.
El vector se encuentra entre y con , está protegido por . Por lo general, se elige que sea el punto medio del intervalo y se utiliza la extensión natural del intervalo para evaluar el resto.
El caso especial de la extensión del intervalo de Taylor de grado también se conoce como forma de valor medio .
Un intervalo puede definirse como un conjunto de puntos dentro de una distancia específica del centro, y esta definición puede extenderse de los números reales a los números complejos . [2] Otra extensión define los intervalos como rectángulos en el plano complejo. Como es el caso de la computación con números reales, la computación con números complejos involucra datos inciertos. Entonces, dado el hecho de que un número de intervalo es un intervalo cerrado real y un número complejo es un par ordenado de números reales , no hay razón para limitar la aplicación de la aritmética de intervalos a la medida de incertidumbres en cálculos con números reales. [3] La aritmética de intervalos puede entonces extenderse, a través de números de intervalo complejos, para determinar regiones de incertidumbre en la computación con números complejos. Uno puede definir la aritmética de intervalos complejos usando rectángulos o usando discos, ambos con sus respectivas ventajas y desventajas. [3]
Las operaciones algebraicas básicas para números de intervalos reales (intervalos cerrados reales) se pueden extender a los números complejos. Por lo tanto, no es sorprendente que la aritmética de intervalos complejos sea similar a la aritmética compleja ordinaria, pero no igual a ella. [3] Se puede demostrar que, como sucede con la aritmética de intervalos reales, no hay distributividad entre la adición y la multiplicación de números de intervalos complejos, excepto en ciertos casos especiales, y los elementos inversos no siempre existen para los números de intervalos complejos. [3] Otras dos propiedades útiles de la aritmética compleja ordinaria no se cumplen en la aritmética de intervalos complejos: las propiedades aditivas y multiplicativas de los conjugados complejos ordinarios no se cumplen para los conjugados de intervalos complejos. [3]
La aritmética de intervalos se puede extender, de manera análoga, a otros sistemas numéricos multidimensionales como los cuaterniones y los octoniones , pero con el costo de que tenemos que sacrificar otras propiedades útiles de la aritmética ordinaria. [3]
Los métodos de análisis numérico clásico no se pueden transferir uno a uno a algoritmos con valores de intervalo, ya que normalmente no se tienen en cuenta las dependencias entre valores numéricos.
Para que funcionen de manera efectiva en una implementación de la vida real, los intervalos deben ser compatibles con la computación de punto flotante. Las operaciones anteriores se basaban en aritmética exacta, pero en general, es posible que no haya métodos de solución numérica rápida disponibles para ello. El rango de valores de la función para y es, por ejemplo , . Cuando el mismo cálculo se realiza con precisión de un solo dígito, el resultado normalmente sería . Pero , por lo que este enfoque contradiría los principios básicos de la aritmética de intervalos, ya que se perdería una parte del dominio de . En su lugar, se utiliza la solución redondeada hacia afuera.
El estándar IEEE 754 para aritmética binaria de punto flotante también establece procedimientos para la implementación del redondeo. Un sistema compatible con IEEE 754 permite a los programadores redondear al número de punto flotante más cercano; las alternativas son redondear hacia 0 (truncar), redondear hacia el infinito positivo (es decir, hacia arriba) o redondear hacia el infinito negativo (es decir, hacia abajo).
El redondeo externo necesario para la aritmética de intervalos se puede lograr modificando los ajustes de redondeo del procesador en el cálculo del límite superior (arriba) y del límite inferior (abajo). Alternativamente, se puede agregar un pequeño intervalo apropiado.
El llamado problema de la "dependencia" es un obstáculo importante para la aplicación de la aritmética de intervalos. Aunque los métodos de intervalos pueden determinar el rango de operaciones y funciones aritméticas elementales con mucha precisión, esto no siempre es así con funciones más complicadas. Si un intervalo aparece varias veces en un cálculo que utiliza parámetros y cada aparición se toma de forma independiente, esto puede provocar una expansión no deseada de los intervalos resultantes.
A modo de ilustración, tomemos la función definida por Los valores de esta función en el intervalo son Como extensión natural del intervalo, se calcula como:
que es ligeramente mayor; en su lugar hemos calculado el ínfimo y el supremo de la función sobre Hay una mejor expresión de en la que la variable solo aparece una vez, es decir, reescribiéndola como suma y elevando al cuadrado en la cuadrática .
Por lo tanto, el cálculo del intervalo adecuado es
y da los valores correctos.
En general, se puede demostrar que se puede alcanzar el rango exacto de valores si cada variable aparece solo una vez y si es continua dentro del cuadro. Sin embargo, no todas las funciones se pueden reescribir de esta manera.
La dependencia del problema que provoca una sobreestimación del rango de valores puede llegar hasta cubrir un rango amplio, impidiendo obtener conclusiones más significativas.
Un aumento adicional del rango se deriva de la solución de áreas que no toman la forma de un vector de intervalo. El conjunto solución del sistema lineal
es precisamente la línea entre los puntos y el uso de métodos de intervalo da como resultado el cuadrado unitario, esto se conoce como efecto envolvente .
Un sistema de intervalos lineales consta de una extensión de intervalo de matriz y un vector de intervalo . Queremos el cuboide más pequeño , para todos los vectores que exista un par con y que satisfaga.
Para los sistemas cuadráticos, es decir, para sistemas de segundo grado , puede existir un vector de intervalo que cubra todas las posibles soluciones y que se encuentre simplemente con el método de intervalos de Gauss. Este método reemplaza las operaciones numéricas, ya que el método de álgebra lineal conocido como eliminación gaussiana se convierte en su versión de intervalos. Sin embargo, dado que este método utiliza las entidades de intervalo y repetidamente en el cálculo, puede producir resultados deficientes para algunos problemas. Por lo tanto, el uso del resultado del Gauss con valores de intervalo solo proporciona estimaciones aproximadas iniciales, ya que, aunque contiene todo el conjunto de soluciones, también tiene una gran área fuera de él.
A menudo, una solución aproximada se puede mejorar mediante una versión de intervalo del método de Gauss-Seidel . La motivación para esto es que la fila -ésima de la extensión de intervalo de la ecuación lineal.
puede determinarse por la variable si se permite la división . Por lo tanto, es simultánea.
Así que ahora podemos reemplazar por
y así el vector por cada elemento. Dado que el procedimiento es más eficiente para una matriz diagonalmente dominante , en lugar del sistema se puede intentar multiplicarlo por una matriz racional adecuada con la ecuación matricial resultante.
Queda por resolver. Si se elige, por ejemplo, para la matriz central , entonces es la extensión externa de la matriz identidad.
Estos métodos sólo funcionan bien si los anchos de los intervalos que se producen son suficientemente pequeños. Para intervalos más amplios, puede ser útil utilizar un sistema lineal de intervalos en sistemas lineales equivalentes a números reales finitos (aunque grandes). Si todas las matrices son invertibles, es suficiente considerar todas las combinaciones posibles (superior e inferior) de los puntos finales que se producen en los intervalos. Los problemas resultantes se pueden resolver utilizando métodos numéricos convencionales. La aritmética de intervalos todavía se utiliza para determinar errores de redondeo.
Esto sólo es adecuado para sistemas de menor dimensión, ya que con una matriz completamente ocupada, las matrices reales deben invertirse, con vectores para el lado derecho. Este enfoque fue desarrollado por Jiri Rohn y aún se encuentra en desarrollo. [4]
Una variante de intervalo del método de Newton para encontrar los ceros en un vector de intervalo se puede derivar de la extensión del valor promedio. [5] Para un vector desconocido aplicado a , da.
Para un cero , es decir , y por lo tanto, debe satisfacer.
Esto es equivalente a . Se puede determinar una estimación externa de utilizando métodos lineales.
En cada paso del método de intervalos de Newton, se reemplaza un valor inicial aproximado por y, por lo tanto, se puede mejorar el resultado. A diferencia de los métodos tradicionales, el método de intervalos se aproxima al resultado conteniendo los ceros. Esto garantiza que el resultado produzca todos los ceros en el rango inicial. Por el contrario, demuestra que no había ceros de en el rango inicial si un paso de Newton produce el conjunto vacío.
El método converge a todos los ceros de la región de partida. La división por cero puede dar lugar a la separación de ceros distintos, aunque la separación puede no ser completa; puede complementarse con el método de bisección.
Como ejemplo, considere la función , el rango inicial y el punto . Entonces tenemos y el primer paso de Newton da.
Se utilizan más pasos de Newton por separado en y . Estos convergen a intervalos arbitrariamente pequeños alrededor de y .
El método de intervalos de Newton también se puede utilizar con funciones gruesas como , que en cualquier caso tendrían resultados de intervalo. El resultado produce entonces intervalos que contienen .
Los distintos métodos de intervalos ofrecen resultados conservadores, ya que no se tienen en cuenta las dependencias entre los tamaños de las distintas extensiones de intervalo. Sin embargo, el problema de la dependencia se vuelve menos significativo para intervalos más estrechos.
Cubrir un vector de intervalo con cajas más pequeñas de modo que
es entonces válido para el rango de valores.
Así pues, para las extensiones de intervalo descritas anteriormente se cumple lo siguiente:
Dado que a menudo es un superconjunto genuino del lado derecho, esto generalmente conduce a una estimación mejorada.
Este tipo de cobertura se puede generar mediante el método de bisección, como elementos gruesos del vector de intervalos , dividiéndolos en el centro en dos intervalos . Si el resultado sigue sin ser adecuado, es posible realizar una subdivisión gradual adicional. La cobertura de intervalos resulta de las divisiones de los elementos del vector, lo que aumenta considerablemente los costes de cálculo.
Con intervalos muy amplios, puede resultar útil dividir todos los intervalos en varios subintervalos con un ancho constante (y menor), un método conocido como mincing . Esto evita los cálculos de pasos de bisección intermedios. Ambos métodos solo son adecuados para problemas de baja dimensión.
La aritmética de intervalos se puede utilizar en diversas áreas (como inversión de conjuntos , planificación de movimiento , estimación de conjuntos o análisis de estabilidad) para tratar estimaciones sin un valor numérico exacto. [6]
La aritmética de intervalos se utiliza con el análisis de errores para controlar los errores de redondeo que surgen de cada cálculo. La ventaja de la aritmética de intervalos es que después de cada operación hay un intervalo que incluye de forma fiable el resultado verdadero. La distancia entre los límites de los intervalos proporciona directamente el cálculo actual de los errores de redondeo:
El análisis de intervalos complementa los métodos tradicionales de reducción de errores, como el pivote , en lugar de sustituirlos .
En la simulación de procesos técnicos y físicos, a menudo surgen parámetros para los que no se pueden asignar valores exactos. El proceso de producción de componentes técnicos admite ciertas tolerancias, por lo que algunos parámetros fluctúan dentro de ciertos intervalos. Además, muchas constantes fundamentales no se conocen con precisión. [1]
Si el comportamiento de dicho sistema afectado por tolerancias satisface, por ejemplo, , para y desconocido, entonces el conjunto de posibles soluciones.
Se puede encontrar mediante métodos de intervalos. Esto proporciona una alternativa al análisis tradicional de propagación de errores . A diferencia de los métodos puntuales, como la simulación de Monte Carlo , la metodología aritmética de intervalos garantiza que no se pueda pasar por alto ninguna parte del área de la solución. Sin embargo, el resultado es siempre un análisis del peor caso posible para la distribución del error, ya que no se consideran otras distribuciones basadas en la probabilidad.
La aritmética de intervalos también se puede utilizar con funciones de afiliación para cantidades difusas, como se utilizan en la lógica difusa . Además de las afirmaciones estrictas y , también son posibles valores intermedios, a los que se asignan números reales. corresponde a la pertenencia definida mientras que es no pertenencia. Una función de distribución asigna incertidumbre, que puede entenderse como un intervalo adicional.
Para la aritmética difusa [7] sólo se considera un número finito de etapas de afiliación discretas . La forma de dicha distribución para un valor indistinto puede entonces representarse mediante una secuencia de intervalos.
El intervalo corresponde exactamente al rango de fluctuación de la etapa.
La distribución apropiada para una función relativa a valores indistintos y las secuencias correspondientes.
puede aproximarse mediante la secuencia.
dónde
y se puede calcular mediante métodos de intervalo. El valor corresponde al resultado de un cálculo de intervalo.
Warwick Tucker utilizó la aritmética de intervalos para resolver el decimocuarto problema de Smale , es decir, para demostrar que el atractor de Lorenz es un atractor extraño . [8] Thomas Hales utilizó la aritmética de intervalos para resolver la conjetura de Kepler .
La aritmética de intervalos no es un fenómeno completamente nuevo en matemáticas; ha aparecido varias veces con diferentes nombres a lo largo de la historia. Por ejemplo, Arquímedes calculó los límites inferior y superior 223/71 < π < 22/7 en el siglo III a. C. El cálculo real con intervalos no ha sido tan popular como otras técnicas numéricas ni ha sido completamente olvidado.
Las reglas para calcular con intervalos y otros subconjuntos de los números reales fueron publicadas en un trabajo de 1931 por Rosalind Cicely Young. [9] El trabajo aritmético sobre números de rango para mejorar la confiabilidad de los sistemas digitales fue publicado luego en un libro de texto de 1951 sobre álgebra lineal por Paul S. Dwyer
; [10] los intervalos se usaron para medir errores de redondeo asociados con números de punto flotante. Un artículo completo sobre álgebra de intervalos en análisis numérico fue publicado por Teruo Sunaga (1958). [11]El nacimiento de la aritmética de intervalos moderna estuvo marcado por la aparición del libro Análisis de intervalos de Ramon E. Moore en 1966. [12] [13] Tuvo la idea en la primavera de 1958, y un año después publicó un artículo sobre aritmética de intervalos por computadora. [14] Su mérito fue que, partiendo de un principio simple, proporcionó un método general para el análisis automatizado de errores, no solo errores resultantes del redondeo.
De forma independiente, en 1956, Mieczyslaw Warmus sugirió fórmulas para cálculos con intervalos, [15] aunque Moore encontró las primeras aplicaciones no triviales.
En los siguientes veinte años, grupos alemanes de investigadores llevaron a cabo trabajos pioneros en torno a Ulrich W. Kulisch [16] [17] y Götz Alefeld [18] en la Universidad de Karlsruhe y más tarde también en la Universidad Bergische de Wuppertal . Por ejemplo, Karl Nickel exploró implementaciones más efectivas, mientras que los procedimientos de contención mejorados para el conjunto de soluciones de sistemas de ecuaciones se debieron a Arnold Neumaier, entre otros. En la década de 1960, Eldon R. Hansen se ocupó de las extensiones de intervalo para ecuaciones lineales y luego proporcionó contribuciones cruciales a la optimización global, incluido lo que ahora se conoce como el método de Hansen, quizás el algoritmo de intervalo más utilizado. [5] Los métodos clásicos en esto a menudo tienen el problema de determinar el valor global más grande (o más pequeño), pero solo pudieron encontrar un óptimo local y no pudieron encontrar mejores valores; Helmut Ratschek y Jon George Rokne desarrollaron métodos de ramificación y acotación , que hasta entonces solo se habían aplicado a valores enteros, mediante el uso de intervalos para proporcionar aplicaciones para valores continuos.
En 1988, Rudolf Lohner desarrolló un software basado en Fortran para soluciones confiables para problemas de valor inicial utilizando ecuaciones diferenciales ordinarias . [19]
La revista Reliable Computing (originalmente Interval Computations ) se publica desde los años 1990 y está dedicada a la fiabilidad de los cálculos asistidos por ordenador. Como editor principal, R. Baker Kearfott, además de su trabajo sobre optimización global, ha contribuido significativamente a la unificación de la notación y la terminología utilizadas en la aritmética de intervalos. [20]
En los últimos años, el trabajo se ha centrado en particular en la estimación de preimágenes de funciones parametrizadas y en la teoría de control robusta por parte del grupo de trabajo COPRIN del INRIA en Sophia Antipolis , Francia. [21]
Existen numerosos paquetes de software que permiten el desarrollo de aplicaciones numéricas utilizando aritmética de intervalos. [22] Estos suelen proporcionarse en forma de bibliotecas de programas. También existen compiladores de C++ y Fortran que manejan tipos de datos de intervalos y operaciones adecuadas como una extensión del lenguaje, por lo que la aritmética de intervalos se admite directamente.
Desde 1967, en la Universidad de Karlsruhe se han desarrollado extensiones para computación científica (XSC) para varios lenguajes de programación , como C++, Fortran y Pascal . [23] La primera plataforma fue una Zuse Z23 , para la que se puso a disposición un nuevo tipo de datos de intervalo con operadores elementales apropiados. Le siguió en 1976 Pascal-SC , una variante de Pascal en un Zilog Z80 que hizo posible crear rutinas rápidas y complicadas para la verificación automática de resultados. Después vino ACRITH-XSC basado en Fortran 77 para la arquitectura System/370 (FORTRAN-SC), que más tarde fue entregado por IBM. A partir de 1991 se podía producir código para compiladores de C con Pascal-XSC ; un año después, la biblioteca de clases de C++ admitió C-XSC en muchos sistemas informáticos diferentes. En 1997, todas las variantes de XSC se pusieron a disposición bajo la Licencia Pública General de GNU . A principios de 2000, bajo la dirección del grupo de trabajo de computación científica de la Universidad Bergische de Wuppertal, se lanzó C-XSC 2.0 para cumplir con el estándar C++ mejorado.
En 1993, en la Universidad Tecnológica de Hamburgo se creó otra biblioteca de clase C++ llamada Profil/BIAS (Programmer's Runtime Optimized Fast Interval Library, Basic Interval Arithmetic), que hizo que las operaciones habituales con intervalos fueran más fáciles de usar. Hizo hincapié en el uso eficiente del hardware, la portabilidad y la independencia de una presentación particular de los intervalos.
La colección Boost de bibliotecas de C++ contiene una clase de plantilla para intervalos. Sus autores aspiran a tener aritmética de intervalos en el lenguaje estándar de C++. [24]
El lenguaje de programación Frink tiene una implementación de aritmética de intervalos que maneja números de precisión arbitraria . Los programas escritos en Frink pueden usar intervalos sin reescribirlos ni volver a compilarlos.
GAOL [25] es otra biblioteca aritmética de intervalos de C++ que es única porque ofrece los operadores de intervalo relacionales utilizados en la programación de restricciones de intervalos .
La biblioteca Moore [26] es una implementación eficiente de la aritmética de intervalos en C++. Proporciona intervalos con puntos finales de precisión arbitraria y se basa en las características de conceptos de C++ .
El lenguaje de programación Julia [27] tiene una implementación de aritmética de intervalos junto con características de alto nivel, como búsqueda de raíces (tanto para funciones reales como de valores complejos) y programación de restricciones de intervalos , a través del paquete ValidatedNumerics.jl. [28]
Además, los sistemas de álgebra computacional, como FriCAS , Mathematica , Maple , Maxima (software) [29] y MuPAD , pueden manejar intervalos. Una extensión de Matlab, Intlab [30], se basa en rutinas BLAS , y la caja de herramientas b4m crea una interfaz Profil/BIAS. [30] [31] Además, el software Euler Math Toolbox incluye una aritmética de intervalos.
Se escribió una biblioteca para el lenguaje funcional OCaml en lenguaje ensamblador y C. [32]
En junio de 2015 se aprobó un estándar para la aritmética de intervalos, IEEE Std 1788-2015. [33] Hay dos implementaciones de referencia disponibles de forma gratuita. [34] Estas han sido desarrolladas por miembros del grupo de trabajo del estándar: la biblioteca libieeep1788 [35] para C++ y el paquete interval [36] para GNU Octave .
En diciembre de 2017 se aprobó un subconjunto mínimo del estándar, IEEE Std 1788.1-2017, y se publicó en febrero de 2018. Debería ser más fácil de implementar y puede acelerar la producción de implementaciones. [37]
Cada año se celebran en el mundo varios congresos o talleres internacionales. El congreso principal es probablemente el SCAN (Simposio internacional sobre computación científica, aritmética informática y computación numérica verificada), pero también hay SWIM (Pequeño taller sobre métodos de intervalos), PPAM (Conferencia internacional sobre procesamiento paralelo y matemáticas aplicadas) y REC (Taller internacional sobre computación fiable en ingeniería).