Tengo matrices y G . A es escaso y es n × n con n muy grande (puede ser del orden de varios millones). G es una matriz alta de n × m con m bastante pequeño ( 1 < m < 1000 ) y cada columna solo puede tener una sola 1 entrada con el resto siendo 0 's, de tal manera que G T G = I . A es enorme, por lo que es muy difícil invertir, y puedo resolver un sistema lineal como A usando iterativamente un método de subespacio de Krylov como B i C G S t a b ( l ) , pero no tengo A - 1 explícitamente.
Quiero resolver un sistema de la forma: , donde x y b son vectores de longitud m . Una forma de hacerlo es usar un algoritmo iterativo dentro de un algoritmo iterativo para resolver A - 1 para cada iteración del algoritmo iterativo externo. Sin embargo, esto sería extremadamente costoso computacionalmente. Me preguntaba si hay una manera computacionalmente más fácil de resolver este problema.
Respuestas:
Introduzca el vector y resuelva el sistema acoplado grande A y + G x = 0 , G T y = - b para ( y , x ) simultáneamente, utilizando un método iterativo. Si A es simétrico (como parece probable aunque no lo diga explícitamente), entonces el sistema es simétrico (pero indefinido, aunque cuasidefinito si Ay: = - A- 1G x A y+ G x = 0 solTy= - b ( y, x ) UNA UNA es positivo definido), lo que podría ayudarlo a elegir un método apropiado. (palabras clave relevantes: matriz KKT, matriz cuasidefinita).
Editar: como es simétrico complejo, también lo es la matriz aumentada, pero no hay cuasidefinidad. Sin embargo, puede utilizar la rutina A x para calcular A ∗ x = ¯ A ¯ x ; por lo tanto, podría adaptar un método como QMR ftp://ftp.math.ucla.edu/pub/camreport/cam92-19.pdf (diseñado para sistemas reales, pero puede reescribirlo fácilmente para sistemas complejos, utilizando el adjunto en lugar de la transposición) para resolver su problema.UNA A x UNA∗x = A x¯¯¯¯¯¯¯¯¯¯
Edit2: En realidad, la estructura (0,1) de significa que puede eliminar x y los componentes de G T y simbólicamente, terminando así con un sistema más pequeño para resolver. Esto significa jugar con la estructura de A , y paga solo cuando A se da explícitamente en formato disperso en lugar de como un operador lineal.sol X solTy UNA UNA
fuente
Después de la respuesta de Arnold, hay algo que puede hacer para simplificar el problema. Específicamente, reescriba el sistema como . Luego, tenga en cuenta que, a partir de la afirmación de que G es alto y angosto y que cada fila tiene solo un 1 y ceros, de lo contrario, la afirmación G T y = - b significa que un subconjunto de los elementos de y tiene un valor fijo, es decir, los elementos de - b .Ay+Gx=0,GTy=−b G GTy=−b y −b
Digamos que para simplificar que tiene m columnas yn filas y que exactamente las primeras m filas tienen unas y que reordenando los elementos de x , puedo hacer que G tenga la matriz de identidad m × m en la parte superior y una matriz n - m × m cero en la parte inferior. Entonces puedo dividir y = ( y c , y f ) en m elementos "restringidos" y n - m "libres" para queG m n m x G m×m n−m×m y=(yc,yf) m n−m . También puedo dividir A para que A = ( A c c A c f A f c A f f ) . De la ecuación A y + G x = 0 , obtengo lo siguiente:
A c c y c + A c f y f + x = 0 ,yc=−b A A=(AccAfcAcfAff) Ay+Gx=0
y usando lo que sabemos sobre y c que tenemos de la segunda de estas ecuaciones
A f f y f = A f c b
y consecuentemente
x = A c c b - A c f A - 1 f f A f c b .
En otras palabras, la única matriz que tiene que invertir es el subconjunto de A
En otras palabras, dada la estructura de , resolviendo el sistema lineal que tiene en realidad no es más difícil que la solución de un solo sistema lineal con una .G A
fuente
fuente