stringtranslate.com

Aritmética afín

La aritmética afín ( AA ) es un modelo de análisis numérico autovalidado . En la AA, las cantidades de interés se representan como combinaciones afines ( formas afines ) de ciertas variables primitivas, que representan fuentes de incertidumbre en los datos o aproximaciones realizadas durante el cálculo.

La aritmética afín pretende ser una mejora de la aritmética de intervalos (IA) y es similar a la aritmética de intervalos generalizada , la aritmética de Taylor de primer orden, el modelo de centro-pendiente y el cálculo elipsoidal, en el sentido de que es un método automático para derivar aproximaciones garantizadas de primer orden a fórmulas generales.

La aritmética afín es potencialmente útil en cualquier problema numérico en el que se necesiten recintos garantizados para suavizar funciones, como resolver sistemas de ecuaciones no lineales, analizar sistemas dinámicos , integrar funciones, ecuaciones diferenciales , etc. Las aplicaciones incluyen trazado de rayos , trazado de curvas , intersección de superficies implícitas y paramétricas , análisis de errores (matemáticas) , control de procesos , análisis del peor de los casos de circuitos eléctricos y más.

Definición

En aritmética afín, cada entrada o cantidad calculada x se representa mediante una fórmula donde son números de punto flotante conocidos y son variables simbólicas cuyos valores solo se sabe que están en el rango [-1, +1].

Así, por ejemplo, una cantidad X que se sabe que se encuentra en el rango [3,7] se puede representar mediante la forma afín , para algún k . A la inversa, la forma implica que la cantidad correspondiente X se encuentra en el rango [3,17].

El hecho de que dos formas afines compartan un símbolo implica que las cantidades correspondientes X , Y son parcialmente dependientes, en el sentido de que su rango conjunto es menor que el producto cartesiano de sus rangos separados. Por ejemplo, si y , entonces los rangos individuales de X e Y son [2,18] y [13,27], pero el rango conjunto del par ( X , Y ) es el hexágono con vértices (2,27), (6,27), (18,19), (18,13), (14,13), (2,21) —que es un subconjunto propio del rectángulo [2,18]×[13,27].

Operaciones aritméticas afines

Las formas afines se pueden combinar con las operaciones aritméticas estándar o funciones elementales, para obtener aproximaciones garantizadas a las fórmulas.

Operaciones afines

Por ejemplo, dadas formas afines para X e Y , se puede obtener una forma afín para Z = X + Y simplemente sumando las formas, es decir, estableciendo para cada j . De manera similar, se puede calcular una forma afín para Z = X , donde es una constante conocida, estableciendo para cada j . Esto se generaliza a operaciones afines arbitrarias como Z = X + Y + .

Operaciones no afines

Una operación no afín , como la multiplicación o , no se puede realizar de forma exacta, ya que el resultado no sería una forma afín de . En ese caso, se debe tomar una función afín adecuada G que se aproxime a F en primer orden, en los rangos implicados por y ; y calcular , donde es un límite superior para el error absoluto en ese rango, y es una nueva variable simbólica que no aparece en ninguna forma anterior.

La forma proporciona entonces un recinto garantizado para la cantidad Z ; además, las formas afines proporcionan conjuntamente un recinto garantizado para el punto ( X , Y ,..., Z ), que a menudo es mucho más pequeño que el producto cartesiano de los rangos de las formas individuales.

Operaciones de encadenamiento

El uso sistemático de este método permite reemplazar cálculos arbitrarios sobre cantidades dadas por cálculos equivalentes sobre sus formas afines, al tiempo que se preservan las correlaciones de primer orden entre la entrada y la salida y se garantiza el encierro completo del rango conjunto. Simplemente se reemplaza cada operación aritmética o llamada a función elemental en la fórmula por una llamada a la rutina de biblioteca AA correspondiente.

En el caso de funciones suaves, los errores de aproximación cometidos en cada paso son proporcionales al cuadrado h 2 del ancho h de los intervalos de entrada. Por este motivo, la aritmética afín suele producir límites mucho más estrictos que la aritmética de intervalos estándar (cuyos errores son proporcionales a h ).

Errores de redondeo

Para proporcionar un cerramiento garantizado, las operaciones aritméticas afines deben tener en cuenta los errores de redondeo en el cálculo de los coeficientes resultantes . Esto no se puede hacer redondeando cada uno en una dirección específica, porque cualquier redondeo de ese tipo falsificaría las dependencias entre las formas afines que comparten el símbolo . En cambio, se debe calcular un límite superior para el error de redondeo de cada , y agregar todos ellos al coeficiente del nuevo símbolo (redondeando hacia arriba). Por lo tanto, debido a los errores de redondeo, incluso las operaciones afines como Z = X y Z = X + Y agregarán el término adicional .

El manejo de errores de redondeo aumenta la complejidad del código y el tiempo de ejecución de las operaciones de AA. En aplicaciones donde se sabe que esos errores no son importantes (porque están dominados por incertidumbres en los datos de entrada y/o por los errores de linealización), se puede utilizar una biblioteca de AA simplificada que no implemente el control de errores de redondeo.

Modelo de proyección afín

La aritmética afín se puede ver en forma matricial de la siguiente manera. Sean todas las cantidades de entrada y calculadas en uso en algún punto durante un cálculo. Las formas afines para esas cantidades se pueden representar mediante una matriz de coeficiente único A y un vector b , donde elemento es el coeficiente de símbolo en la forma afín de ; y es el término independiente de esa forma. Entonces, el rango conjunto de las cantidades, es decir, el rango del punto , es la imagen del hipercubo por el mapa afín de a definido por .

El rango de este mapa afín es un zonotopo que limita el rango conjunto de las cantidades . Por lo tanto, se podría decir que AA es una "aritmética de zonotopos". Cada paso de AA suele implicar añadir una fila más y una columna más a la matriz A .

Simplificación de formas afines

Dado que cada operación AA generalmente crea un nuevo símbolo , la cantidad de términos en una forma afín puede ser proporcional a la cantidad de operaciones utilizadas para calcularla. Por lo tanto, a menudo es necesario aplicar pasos de "condensación de símbolos", donde dos o más símbolos se reemplazan por un conjunto más pequeño de nuevos símbolos. Geométricamente, esto significa reemplazar un zonotopo complicado P por un zonotopo más simple Q que lo encierra. Esta operación se puede realizar sin destruir la propiedad de aproximación de primer orden del zonotopo final.

Implementación

Implementación de matriz

La aritmética afín se puede implementar mediante una matriz global A y un vector global b , como se describió anteriormente. Este enfoque es razonablemente adecuado cuando el conjunto de cantidades a calcular es pequeño y se conoce de antemano. En este enfoque, el programador debe mantener externamente la correspondencia entre los índices de fila y las cantidades de interés. Las variables globales contienen el número m de formas afines (filas) calculadas hasta el momento y el número n de símbolos (columnas) utilizados hasta el momento; estos se actualizan automáticamente en cada operación de aritmética afín.

Implementación de vectores

Como alternativa, cada forma afín se puede implementar como un vector de coeficientes independiente. Este enfoque es más conveniente para la programación, especialmente cuando hay llamadas a procedimientos de biblioteca que pueden usar AA internamente. A cada forma afín se le puede dar un nombre mnemotécnico; se puede asignar cuando sea necesario, pasar a procedimientos y recuperar cuando ya no se necesite. El código AA se parece mucho más a la fórmula original. Una variable global contiene la cantidad n de símbolos utilizados hasta el momento.

Implementación de vector disperso

En cálculos bastante largos, el conjunto de cantidades "vivas" (que se utilizarán en cálculos futuros) es mucho más pequeño que el conjunto de todas las cantidades calculadas; y lo mismo ocurre con el conjunto de símbolos "vivos" . En esta situación, las implementaciones matriciales y vectoriales son una pérdida de tiempo y espacio excesiva.

En tales situaciones, se debe utilizar una implementación dispersa . Es decir, cada forma afín se almacena como una lista de pares (j, ), que contiene solo los términos con coeficiente distinto de cero . Para mayor eficiencia, los términos se deben ordenar en orden de j . Esta representación hace que las operaciones de AA sean algo más complicadas; sin embargo, el costo de cada operación se vuelve proporcional a la cantidad de términos distintos de cero que aparecen en los operandos, en lugar de la cantidad total de símbolos utilizados hasta ahora.

Esta es la representación utilizada por LibAffa.

Referencias

Enlaces externos