Ітеративний «вирішувач» для


9

Я не можу уявити, що я першим задумався над наступною проблемою, тому буду задоволений посиланням (але повна, детальна відповідь завжди цінується):

Скажіть, у вас є симетричний позитивний певний Σ∈Rn×n. n вважається дуже великим, тому тримається Σв пам'яті неможливо. Однак можна оцінитиΣx, для будь-якого x∈Rn. Враховуючи деякіx∈Rn, ви хочете знайти xtΣ−1x.

Перше рішення, яке спадає на думку, - це знайти Σ−1xвикористовуючи (скажімо) сполучені градієнти. Однак це здається дещо марнотратним - ви шукаєте скаляра, і в процесі ви виявляєте гігантський векторRn. Здається, має більше сенсу придумати метод обчислення скаляра безпосередньо (тобто, не проходячи черезΣ−1x). Я шукаю такий спосіб.


2
Чи виникає ваша матриця? Σ=ATA для деяких прямокутних «коротких і широких» A?
— GeoMatt22

@ GeoMatt22, на жаль, ні. Але скажімо, що це так - що б ви запропонували в такому випадку?
— Yair Daon

1
Яїре, я просто думав, чи є якась менша матриця, з якою можна працювати ... не впевнений, що це все одно допоможе. Ви пробували гуглінг "дистанція махаланобіса без матриці" чи подібне? Вибачте, що не допоможу більше!
— GeoMatt22

Дякую @ GeoMatt22, я не зміг знайти нічого в Інтернеті.
— Yair Daon

Відповіді:


2

Я не думаю, що я чув про будь-який метод, який робить те, що ви хочете, а не реально вирішувати y=Σ−1x.

Єдиною альтернативою, яку я можу запропонувати, є те, якщо ви знали щось про власні вектори та значення Σ. Скажіть, ви знали, що вони єλi,vi, то ви можете представляти Σ=VTLV де стовпці V є vi, і Lє діагональною матрицею з власними значеннями по діагоналі. Отже, у вас це єΣ−1=VTL−1V і ти це отримуєш

xTΣ−1x=xTVTL−1Vx=∑iλi−1(viTx)2.
Звичайно, це вимагає від вас збереження всіх власних значень, тобто повної матриціV. Але, якщо вам трапилось знати, що лише деякі власні значення РосіїΣ маленькі, скажімо перші m, а решта настільки велика, що можна нехтувати всіма термінами λi−1 для i>m, то ви можете наблизитись
xTΣ−1x=∑i=1nλi−1(viTx)2≈∑i=1mλi−1(viTx)2.
Це вимагає лише зберігання m вектори, а не всі n власних векторів.

Звичайно, на практиці часто обчислювати власні значення та власні вектори настільки ж рівномірно або складніше, порівняно з просто вирішенням y=Σ−1x кілька разів.


Але тоді вам залишається завдання знайти mнайменші власні значення матриці, що непросте завдання ...
— Yair Daon

Правильно. Але, можливо, варто того, якщо вам доведеться оцінитиxTΣ−1xбагато разів.
— Вольфганг Бангерт

Чи можете ви запропонувати метод тоді?
— Yair Daon

Навколо є багато чи розріджених власних значущих рішень. ARPACK та SLEPc на основі PETSc, мабуть, найбільш широко використовуються.
— Вольфганг Бангерт

Bangreth Дякую за довідку. Я перевірив SLEPc (хоча і не дуже ретельно) і, здається, спосіб пошуку власних пар здійснюється (можливо, модифікованою) ітерацією Ланцоса. Якщо хтось шукає найменшогоmeigenpairs, треба знайти і зберегти всі власні пари в пам'яті. Зазвичай це не можливо для проблем, що не мають матриць - це займає стільки пам'яті, скільки зберіганняn×nматриця. Якщо ви хочете скористатись зворотною ітерацією - жодна гарантія для порядку знайденого власного пара (-ів) не гарантується. Я щось пропускаю?
— Yair Daon
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.