Berulang “solver” untuk


9

Saya tidak bisa membayangkan saya orang pertama yang memikirkan masalah berikut, jadi saya akan puas dengan referensi (tapi jawaban yang lengkap dan terperinci selalu dihargai):

Katakanlah Anda memiliki kepastian positif simetris . n dianggap sangat besar, jadi menahan Σ dalam memori tidak mungkin. Anda dapat, bagaimanapun, mengevaluasi Σ x , untuk setiap x ∈ R n . Dengan beberapa x ∈ R n , Anda ingin mencari x t Σ - 1 x .Σ∈Rn×nnΣΣxx∈Rnx∈RnxtΣ−1x

Solusi pertama yang muncul di pikiran adalah menemukan menggunakan (katakanlah) gradien konjugat. Namun, ini tampaknya agak sia-sia - Anda mencari skalar dan dalam prosesnya Anda menemukan vektor raksasa di R n . Tampaknya lebih masuk akal untuk menemukan metode untuk menghitung skalar secara langsung (yaitu tanpa melewati Σ - 1 x ). Saya mencari metode semacam ini.Σ−1xRnΣ−1x


2
Apakah matriks Anda timbul dari untuk beberapa "singkat & lebar" persegi panjang A ? Σ=ATAA
— GeoMatt22

@ GeoMatt22 sayangnya tidak. Tetapi katakanlah itu terjadi - apa yang akan Anda sarankan dalam kasus itu?
— Yair Daon

1
Yair, saya hanya berpikir jika ada beberapa matriks yang lebih kecil untuk bekerja dengan ... tidak yakin itu akan membantu. Sudahkah Anda mencoba googling "matrix mahalanobis distance" atau yang serupa? Maaf tidak bisa membantu lagi!
— GeoMatt22

Terima kasih @ GeoMatt22, saya tidak dapat menemukan apa pun secara online.
— Yair Daon

Jawaban:


2

Saya rasa saya belum pernah mendengar metode apa pun yang melakukan apa yang Anda inginkan tanpa benar-benar menyelesaikan .y=Σ−1x

Satu-satunya alternatif yang bisa saya tawarkan adalah jika Anda tahu sesuatu tentang vektor eigen dan -nilai . Katakanlah Anda tahu bahwa mereka adalah λ i , v i , maka Anda dapat mewakili Σ = V T L V di mana kolom V adalah v i , dan L adalah matriks diagonal dengan nilai eigen pada diagonal. Akibatnya, Anda memiliki Σ - 1 = V T L - 1 V dan Anda mendapatkan bahwa x T Σ - 1 x =Σλi,viΣ=VTLVVviLΣ−1=VTL−1V Ini tentu saja mengharuskan Anda untuk menyimpansemuanilai eigen, yaitu, matriks V penuh. Tetapi, jika Anda mengetahui bahwa hanya beberapa nilai eigen dari Σ yang kecil, ucapkan m pertama, dan sisanya sangat besar sehingga Anda dapat mengabaikan semua istilah dengan λ - 1 i untuk i > m , maka Anda dapat memperkirakan

xTΣ−1x=xTVTL−1Vx=∑iλi−1(viTx)2.
VΣmλi−1i>m Hal ini kemudian hanya mengharuskan Anda untuk menyimpan m vektor, bukan semua n vektor eigen.
xTΣ−1x=∑i=1nλi−1(viTx)2≈∑i=1mλi−1(viTx)2.
mn

y=Σ−1x


m

xTΣ−1x

Bisakah Anda menyarankan metode itu?
— Yair Daon

Ada banyak atau sedikit pemecah nilai eigen di sekitar. ARPACK dan SLEPc berbasis PETSc mungkin adalah yang paling banyak digunakan.
— Wolfgang Bangerth

mn×n
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.