"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ΣΣxxRnxRnxtΣ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

Yair Daon
fuente
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=xTVTL1Vx=iλi1(viTx)2.
VΣmλi1i>m Esto solo requiere que almacene m vectores, en lugar de todos los n vectores propios.
XTΣ-1X=yo=1norteλyo-1(vyoTX)2yo=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

Wolfgang Bangerth
fuente
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