"Solucionador" iterativo para


9

No puedo imaginar que soy el primero en pensar en el siguiente problema, así que estaré satisfecho con una referencia (pero siempre se agradece una respuesta completa y detallada):

Supongamos que tiene un positivo definido simétrico . Se considera que es muy grande, por lo que mantener en la memoria es imposible. Sin embargo, puede evaluar , para cualquier . Dado algunos , te gustaría encontrar .Σ∈Rn×nnΣΣxx∈Rnx∈RnxtΣ−1x

La primera solución que viene a la mente es encontrar usando (digamos) gradientes conjugados. Sin embargo, esto parece algo inútil: busca un escalar y en el proceso encuentra un vector gigantesco en . Parece tener más sentido idear un método para calcular el escalar directamente (es decir, sin pasar por ). Estoy buscando este tipo de método.Σ−1xRnΣ−1x


2
¿Su matriz surge de para algún rectangular "corto y ancho" ? AΣ=ATAA
— GeoMatt22

@ GeoMatt22 lamentablemente no. Pero digamos que sí, ¿qué sugerirías en ese caso?
— Yair Daon

1
Yair, estaba pensando si hay alguna matriz más pequeña para trabajar ... no estoy seguro de que ayude de todos modos. ¿Has probado en Google "distancia mahalanobis sin matriz" o similar? Perdón por no ser de más ayuda!
— GeoMatt22

Gracias @ GeoMatt22, no pude encontrar nada en línea.
— Yair Daon

Respuestas:


2

No creo haber oído hablar de ningún método que haga lo que quieres sin resolver realmente .y=Σ−1x

La única alternativa que puedo ofrecer es si supieras algo sobre los vectores propios y los valores de . Digamos que sabía que son λ i , v i , entonces puede representar Σ = V T L V donde las columnas de V son v i , y L es una matriz diagonal con los valores propios en la diagonal. En consecuencia, tienes que Σ - 1 = V T L - 1 V y obtienes que x T Σ - 1 x =Σλi,viΣ=VTLVVviLΣ-1=VTL-1V Por supuesto, esto requeriría que almacenetodos losvalores propios, es decir, una matriz V completa. Pero, si sabe que solo algunos de los valores propios de Σ son pequeños, diga la primera m , y el resto es tan grande que puede descuidar todos los términos con λ - 1 i para i > m , entonces puede aproximar

xTΣ−1x=xTVTL−1Vx=∑iλi−1(viTx)2.
VΣmλi−1i>m Esto solo requiere que almacene m vectores, en lugar de todos los n vectores propios.
XTΣ-1X=∑yo=1norteλyo-1(vyoTX)2≈∑yo=1metroλyo-1(vyoTX)2.
metronorte

Por supuesto, en la práctica a menudo es igual o más difícil calcular los valores propios y los vectores propios, en comparación con simplemente resolver varias veces.y=Σ-1X


Pero luego te queda la tarea de encontrar los valores propios más pequeños de una matriz, lo cual no es una tarea fácil ...metro
— Yair Daon

Correcto. Pero podría valer la pena si necesita evaluar muchas veces. xTΣ−1x
— Wolfgang Bangerth

¿Puedes sugerir un método entonces?
— Yair Daon

Hay muchos o pocos solucionadores de valores propios alrededor. ARPACK y el SLEPc basado en PETSc son probablemente los más utilizados.
— Wolfgang Bangerth

Bangreth Gracias por la referencia. Verifiqué SLEPc (aunque no extremadamente) y parece que la forma en que se encuentran los pares propios es por (quizás modificada) la iteración de Lanczos. Si uno busca los más pequeños eigenpairs, uno tiene que encontrar y almacenar la totalidad de los eigenpairs en la memoria. Por lo general, esto no es posible para problemas sin matriz: requiere tanta memoria como almacenar una matriz n × n . Si se desea utilizar una iteración inversa, no se garantiza el orden de los pares propios encontrados. ¿Me estoy perdiendo de algo? metronorte×norte
— Yair Daon
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.