«Solveur» itératif pour


9

Je ne peux pas imaginer que je suis le premier à penser au problème suivant, donc je serai satisfait d'une référence (mais une réponse complète et détaillée est toujours appréciée):

Disons que vous avez une symétrique définie positive . n est considéré comme très grand, donc garder Σ en mémoire est impossible. Vous pouvez cependant évaluer Σ x , pour tout x ∈ R n . Étant donné un certain x ∈ R n , vous aimeriez trouver x t Σ - 1 x .Σ∈Rn×nnΣΣxx∈Rnx∈RnxtΣ−1x

La première solution qui vient à l'esprit est de trouver utilisant (disons) des gradients conjugués. Cependant, cela semble quelque peu inutile - vous cherchez un scalaire et dans le processus, vous trouvez un vecteur gigantesque dans R n . Il semble plus logique de trouver une méthode pour calculer directement le scalaire (c'est-à-dire sans passer par Σ - 1 x ). Je recherche ce genre de méthode.Σ−1xRnΣ−1x


2
Votre matrice provient-elle de pour un A rectangulaire "court et large" ? Σ=ATAA
— GeoMatt22

@ GeoMatt22 malheureusement pas. Mais disons que c'est le cas - que suggéreriez-vous dans ce cas?
— Yair Daon

1
Yair, je pensais juste s'il y avait une matrice plus petite avec laquelle travailler ... pas sûr que ça aiderait de toute façon. Avez-vous essayé de googler "distance de mahalanobis sans matrice" ou similaire? Désolé de ne pas vous être plus utile!
— GeoMatt22

Merci @ GeoMatt22, je n'ai rien trouvé en ligne.
— Yair Daon

Réponses:


2

Je ne pense pas avoir entendu parler d'une méthode qui fasse ce que vous voulez sans réellement résoudre .y=Σ−1x

La seule alternative que je peux offrir est si vous saviez quelque chose sur les vecteurs propres et les valeurs de . Supposons que vous saviez qu'ils sont λ i , v i , alors vous pouvez représenter Σ = V T L V où les colonnes de V sont les v i , et L est une matrice diagonale avec les valeurs propres sur la diagonale. Par conséquent, vous avez que Σ - 1 = V T L - 1 V et vous obtenez que x T Σ - 1 x =Σλi,viΣ=VTLVVviLΣ−1=VTL−1V Cela nécessiterait bien sûr que vous stockieztoutes lesvaleurs propres, c'est-à-dire une matrice V complète. Mais, s'il vous arrivait de savoir que seules quelques-unes des valeurs propres de Σ sont petites, disons le premier m , et le reste est si grand que vous pouvez négliger tous les termes avec λ - 1 i pour i > m , alors vous pouvez approximer

xTΣ−1x=xTVTL−1Vx=∑iλi−1(viTx)2.
VΣmλi−1i>m Cela ne vous oblige alors qu'à stocker m vecteurs, au lieu de tous les n vecteurs propres.
xTΣ−1x=∑i=1nλi−1(viTx)2≈∑i=1mλi−1(viTx)2.
mn

y=Σ−1x


m

xTΣ−1x

Pouvez-vous suggérer une méthode alors?
— Yair Daon

Il existe de nombreux solveurs de valeurs propres clairsemés. ARPACK et le SLEPc basé sur PETSc sont probablement les plus largement utilisés.
— Wolfgang Bangerth

mn×n
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.