stringtranslate.com

Preacondicionador

En matemáticas , el precondicionamiento es la aplicación de una transformación, llamada precondicionador , que condiciona un problema dado a una forma que sea más adecuada para métodos de resolución numérica . El preacondicionamiento suele estar relacionado con la reducción de un número de condición del problema. El problema precondicionado generalmente se resuelve mediante un método iterativo .

Preacondicionamiento para sistemas lineales

En álgebra lineal y análisis numérico , un precondicionador de una matriz es una matriz que tiene un número de condición menor que . También es común llamar al precondicionador, en lugar de a , ya que él mismo rara vez está disponible explícitamente. En el precondicionamiento moderno, la aplicación de , es decir, la multiplicación de un vector columna, o un bloque de vectores columna, por , se realiza comúnmente sin matrices , es decir, donde ni , ni (y a menudo ni siquiera ) están disponibles explícitamente. en forma matricial.

Los precondicionadores son útiles en métodos iterativos para resolver un sistema lineal , ya que la tasa de convergencia para la mayoría de los solucionadores lineales iterativos aumenta porque el número de condición de una matriz disminuye como resultado del precondicionamiento. Los solucionadores iterativos precondicionados suelen superar a los solucionadores directos, por ejemplo, la eliminación gaussiana , para matrices grandes, especialmente para matrices dispersas . Los solucionadores iterativos se pueden utilizar como métodos sin matrices , es decir, convertirse en la única opción si la matriz de coeficientes no se almacena explícitamente, sino que se accede a ella evaluando productos matriz-vector.

Descripción

En lugar de resolver el sistema lineal original para , se puede considerar el sistema precondicionado correcto

Alternativamente, se puede resolver el sistema precondicionado izquierdo

Ambos sistemas dan la misma solución que el sistema original siempre que la matriz del precondicionador sea no singular . El precondicionamiento de la izquierda es más tradicional.

El sistema preacondicionado de dos caras.

el escalado diagonal

El objetivo del preacondicionamiento es reducir el número de condición , por ejemplo, de la matriz del sistema preacondicionado izquierdo o derecho o . Los números de condición pequeños benefician la rápida convergencia de los solucionadores iterativos y mejoran la estabilidad de la solución con respecto a las perturbaciones en la matriz del sistema y el lado derecho, por ejemplo, permitiendo una cuantificación más agresiva de las entradas de la matriz utilizando una menor precisión informática .

La matriz precondicionada o rara vez se forma explícitamente. Es posible que sólo sea necesario calcular la acción de aplicar la operación de resolución del precondicionador a un vector dado.

Normalmente hay una compensación en la elección de . Dado que el operador debe aplicarse en cada paso del solucionador lineal iterativo, debería tener un pequeño costo (tiempo de cálculo) de aplicar la operación. Por lo tanto, el preacondicionador más barato sería desde entonces. Claramente, esto da como resultado el sistema lineal original y el preacondicionador no hace nada. En el otro extremo, la elección da cuál tiene la condición óptima número 1, lo que requiere una única iteración para la convergencia; sin embargo en este caso aplicar el preacondicionador es tan difícil como resolver el sistema original. Por lo tanto, se elige algo entre estos dos extremos, en un intento de lograr un número mínimo de iteraciones lineales manteniendo al operador lo más simple posible. A continuación se detallan algunos ejemplos de enfoques de precondicionamiento típicos.

Métodos iterativos precondicionados.

Los métodos iterativos precondicionados para son, en la mayoría de los casos, matemáticamente equivalentes a los métodos iterativos estándar aplicados al sistema precondicionado. Por ejemplo, la iteración estándar de Richardson para resolver es

Aplicado al sistema preacondicionado se convierte en un método preacondicionado.

Ejemplos de métodos iterativos precondicionados populares para sistemas lineales incluyen el método del gradiente conjugado precondicionado , el método del gradiente biconjugado y el método residual mínimo generalizado . Los métodos iterativos, que utilizan productos escalares para calcular los parámetros iterativos, requieren cambios correspondientes en el producto escalar junto con la sustitución de

División de matrices

Un método iterativo estacionario está determinado por la división de la matriz y la matriz de iteración . Asumiendo que

el número de condición está limitado arriba por

Interpretación geométrica

Para una matriz definida positiva simétrica, el precondicionador normalmente se elige para que también sea definido positivo simétrico. El operador precondicionado también es definido positivo simétrico, pero con respecto al producto escalar basado en . En este caso, el efecto deseado al aplicar un precondicionador es hacer que la forma cuadrática del operador precondicionado con respecto al producto escalar basado en - sea casi esférica. [1]

Preacondicionamiento variable y no lineal

Denotando , destacamos que el precondicionamiento se implementa prácticamente como multiplicar algún vector por , es decir, calculando el producto. En muchas aplicaciones, no se da como una matriz, sino como un operador que actúa sobre el vector . Sin embargo, algunos precondicionadores populares cambian y la dependencia de ellos puede no ser lineal. Los ejemplos típicos implican el uso de métodos iterativos no lineales , por ejemplo, el método del gradiente conjugado , como parte de la construcción del precondicionador. Estos precondicionadores pueden ser muy eficientes en la práctica; sin embargo, su comportamiento es difícil de predecir teóricamente.

Precondicionamiento aleatorio

Un caso particular interesante de preacondicionamiento variable es el preacondicionamiento aleatorio, por ejemplo, preacondicionamiento de múltiples redes en redes aleatorias gruesas. [2] Si se utiliza en métodos de descenso de gradiente , el precondicionamiento aleatorio puede verse como una implementación del descenso de gradiente estocástico y puede conducir a una convergencia más rápida, en comparación con el precondicionamiento fijo, ya que rompe el patrón asintótico de "zig-zag" del descenso de gradiente .

Precondicionamiento espectralmente equivalente

El uso más común del precondicionamiento es para la solución iterativa de sistemas lineales resultantes de aproximaciones de ecuaciones diferenciales parciales . Cuanto mejor sea la calidad de la aproximación, mayor será el tamaño de la matriz. En tal caso, el objetivo del precondicionamiento óptimo es, por un lado, hacer que el número de condición espectral de esté limitado desde arriba por una constante independiente del tamaño de la matriz, lo que D'yakonov llama precondicionamiento espectralmente equivalente . Por otro lado, el coste de aplicación de debería idealmente ser proporcional (también independiente del tamaño de la matriz) al coste de multiplicación de por un vector.

Ejemplos

Precondicionador Jacobi (o diagonal)

El precondicionador de Jacobi es una de las formas más simples de precondicionamiento, en la que el precondicionador se elige para que sea la diagonal de la matriz. Suponiendo que obtenemos que es eficiente para matrices diagonalmente dominantes . Se utiliza en softwares de análisis para problemas de vigas o problemas 1-D (EX: -STAAD.Pro )

ESPAÑA

El precondicionador inverso aproximado disperso minimiza dónde está la norma de Frobenius y proviene de algún conjunto adecuadamente restringido de matrices dispersas . Según la norma de Frobenius, esto se reduce a resolver numerosos problemas de mínimos cuadrados independientes (uno para cada columna). Las entradas en deben restringirse a algún patrón de escasez o el problema sigue siendo tan difícil y requiere tanto tiempo como encontrar el inverso exacto de . El método fue introducido por MJ Grote y T. Huckle junto con un enfoque para seleccionar patrones de escasez. [3]

Otros precondicionadores

enlaces externos

Precondicionamiento para problemas de valores propios

Los problemas de valores propios pueden plantearse de varias maneras alternativas, cada una de las cuales conduce a su propio condicionamiento previo. El precondicionamiento tradicional se basa en las llamadas transformaciones espectrales. Conociendo (aproximadamente) el valor propio objetivo, se puede calcular el vector propio correspondiente resolviendo el sistema lineal homogéneo relacionado, lo que permite utilizar el precondicionamiento para el sistema lineal. Finalmente, formular el problema de valores propios como optimización del cociente de Rayleigh trae a escena técnicas de optimización precondicionadas. [4]

Transformaciones espectrales

Por analogía con los sistemas lineales, para un problema de valores propios uno puede verse tentado a reemplazar la matriz con la matriz usando un precondicionador . Sin embargo, esto sólo tiene sentido si los vectores propios de búsqueda de y son los mismos. Este es el caso de las transformaciones espectrales.

La transformación espectral más popular es la llamada transformación de desplazamiento e inversión , donde para un escalar dado , llamado desplazamiento , el problema de valores propios original se reemplaza por el problema de desplazamiento e inversión . Los vectores propios se conservan y se puede resolver el problema de desplazamiento e inversión mediante un solucionador iterativo, por ejemplo, la iteración de potencia . Esto da la iteración inversa , que normalmente converge al vector propio, correspondiente al valor propio más cercano al desplazamiento . La iteración del cociente de Rayleigh es un método de desplazamiento e inversión con un desplazamiento variable.

Las transformaciones espectrales son específicas de los problemas de valores propios y no tienen análogos para los sistemas lineales. Requieren un cálculo numérico preciso de la transformación involucrada, lo que se convierte en el principal cuello de botella para los grandes problemas.

Preacondicionamiento general

Para establecer una conexión estrecha con los sistemas lineales, supongamos que el valor propio objetivo se conoce (aproximadamente). Entonces se puede calcular el vector propio correspondiente a partir del sistema lineal homogéneo . Usando el concepto de precondicionamiento por la izquierda para sistemas lineales, obtenemos dónde está el precondicionador, que podemos intentar resolver usando la iteración de Richardson.

El precondicionamiento ideal [4]

El pseudoinverso de Moore-Penrose es el precondicionador, lo que hace que la iteración de Richardson anterior converja en un paso con , ya que , denotado por , es el proyector ortogonal en el espacio propio, correspondiente a . La elección no es práctica por tres razones independientes. En primer lugar, en realidad no se conoce, aunque se puede sustituir por su aproximación . En segundo lugar, la pseudoinversa exacta de Moore-Penrose requiere el conocimiento del vector propio, que estamos tratando de encontrar. Esto puede evitarse en cierto modo mediante el uso del precondicionador de Jacobi-Davidson , donde se aproxima . Por último, pero no menos importante, este enfoque requiere una solución numérica precisa del sistema lineal con la matriz del sistema , lo que resulta tan costoso para problemas grandes como el método de desplazamiento e inversión anterior. Si la solución no es lo suficientemente precisa, el paso dos puede resultar redundante.

Precondicionamiento práctico

Primero reemplacemos el valor teórico en la iteración de Richardson anterior con su aproximación actual para obtener un algoritmo práctico.

Una opción popular es utilizar la función del cociente de Rayleigh . El precondicionamiento práctico puede ser tan trivial como simplemente usar o. Para algunas clases de problemas de valores propios , se ha demostrado la eficiencia de , tanto numérica como teóricamente. La elección permite utilizar fácilmente para problemas de valores propios la gran variedad de precondicionadores desarrollados para sistemas lineales.

Debido al valor cambiante , un análisis teórico exhaustivo de la convergencia es mucho más difícil, en comparación con el caso de los sistemas lineales, incluso para los métodos más simples, como la iteración de Richardson .

enlaces externos

Preacondicionamiento en optimización

Ilustración del descenso de gradiente

En optimización , el precondicionamiento se utiliza normalmente para acelerar los algoritmos de optimización de primer orden .

Descripción

Por ejemplo, para encontrar un mínimo local de una función de valor real usando el descenso de gradiente , se toman pasos proporcionales al negativo del gradiente (o del gradiente aproximado) de la función en el punto actual:

El preacondicionador se aplica al gradiente:

El preacondicionamiento aquí puede verse como un cambio de la geometría del espacio vectorial con el objetivo de hacer que los conjuntos de niveles parezcan círculos. [5] En este caso, el gradiente precondicionado apunta más cerca del punto de los extremos como en la figura, lo que acelera la convergencia.

Conexión a sistemas lineales.

El mínimo de una función cuadrática.

matriz definida positiva simétrica realdescenso de gradiente

Esta es la iteración de Richardson precondicionada para resolver un sistema de ecuaciones lineales .

Conexión con problemas de valores propios

El mínimo del cociente de Rayleigh

matriz definida positiva simétrica realvalor propiovector propiodescenso de gradiente

Este es un análogo de la iteración de Richardson precondicionada para resolver problemas de valores propios.

Precondicionamiento variable

En muchos casos, puede ser beneficioso cambiar el precondicionador en algunos o incluso en cada paso de un algoritmo iterativo para adaptarse a una forma cambiante de los conjuntos de niveles, como en

Sin embargo, hay que tener en cuenta que la construcción de un preacondicionador eficiente suele ser computacionalmente costosa. El mayor costo de actualizar el preacondicionador puede anular fácilmente el efecto positivo de una convergencia más rápida. Si es una aproximación BFGS de la matriz de arpillera inversa, este método se denomina método Quasi-Newton .

Referencias

  1. ^ Shewchuk, Jonathan Richard (4 de agosto de 1994). "Una introducción al método del gradiente conjugado sin el dolor agonizante" (PDF) .
  2. ^ Henricus Bouwmeester, Andrew Dougherty, Andrew V Knyazev. Precondicionamiento no simétrico para métodos de gradiente conjugado y descenso más pronunciado. Procedia Computer Science, volumen 51, páginas 276-285, Elsevier, 2015. https://doi.org/10.1016/j.procs.2015.05.241
  3. ^ Grote, MJ y Huckle, T. (1997). "Preacondicionamiento paralelo con inversas aproximadas escasas". Revista SIAM de Computación Científica . 18 (3): 838–53. doi :10.1137/S1064827594276552.
  4. ^ ab Knyazev, Andrew V. (1998). "Solucionadores propios precondicionados: ¿un oxímoron?". Transacciones Electrónicas sobre Análisis Numérico . 7 : 104-123.
  5. ^ Himmelblau, David M. (1972). Programación no lineal aplicada . Nueva York: McGraw-Hill. págs. 78–83. ISBN 0-07-028921-2.

Fuentes