Розв’язування системи з невеликим діагональним оновленням


9

Припустимо, у мене є оригінальна велика, розріджена лінійна система: Ax0=b0. Тепер я не маюA1 як A занадто великий для факторів або будь-якого типу розкладання A, але припустимо, що у мене є рішення x0 знайдено з ітеративним розв’язанням.

Тепер я хочу застосувати невелике оновлення рангу до діагоналі A (змінити декілька діагональних записів): (A+D)x1=b0 де Dє діагональною матрицею з діагоналлю переважно 0 і кількома ненульовими значеннями. Якби я мавA1Я міг би скористатися формулою Вудбері, щоб застосувати оновлення до оберненого. Однак у мене цього немає. Чи є щось, що я можу зробити, якщо просто вирішити всю систему знову? Чи є якимось чином, можливо, я можу придумати передумовникM який легко \ простіше перевернути, таким, що MA1A0, так що все, що я мав би зробити, якщо маю x0 застосовується M1 і ітеративний метод сходився б за пару / кілька ітерацій?


Ви починаєте з хорошого попереднього кондиціонера для Аі хочете знати, як оновити його? Яке звання є оновленням? (Звання1000 оновлення "невелике" порівняно з матрицею розміру 109але не маленький з точки зору ітерації.)
Джед Браун

A є навколо розміру 106 до 107, а оновлення - <1000 (ймовірно, <100) елементів. Я використовую діагональний тип попереднього кондиціонера для A, який працює дуже добре, тому оновлення було б тривіальним, але мені було цікаво, чи можна зробити щось краще, ніж вирішити нову систему з нуля.
Кошт

2
Рішення однієї системи про це мало що говорить вам. Якщо ви вирішуєте одну і ту ж систему кілька разів, обернена карта на цих векторах (та / або пов'язаних з ними просторах Крилова) дає вам деяку інформацію, яку можна використовувати для прискорення конвергенції. Скільки систем ви вирішуєте в кожному конкретному випадку?
Джед Браун

В даний час я вирішую лише один RHS (b вектор) з кожним A перед модифікацією А.
Costis

Відповіді:


4
  1. Збережіть у стовпцях двох матриць B і С всі вектори бj до якої ви застосували матрицю в попередніх ітераціях та результатах cj=Абj.

  2. Для кожної нової системи (А+D)х'=б' (або Ах=б', що є особливим випадком D=0), приблизно вирішити переопределену лінійну систему (С+DБ)уб', наприклад, шляхом вибору підмножини рядків (можливо, всіх) та використання методу найменшого щільного квадратного розміру. Зауважте, що лише вибрана частинаС+DБпотрібно зібрати; так що це швидка операція!

  3. Покладіть х0=Бу. Це хороше початкове наближення, з якого можна почати ітерацію розв’язання(А+D)х'=б'. У разі, якщо додаткові системи повинні бути оброблені, використовуйте матричні векторні продукти в цій новій ітерації для розширення матрицьБ і С на отриманій підсистемі.

Якщо матриці Б і С не вписуються в основну пам'ять, зберігайте Бна диску та заздалегідь виберіть підмножину рядків. Це дозволяє зберегти в ядрі відповідну частинуБ і С необхідні для формування системи найменших квадратів, і наступної х0 можна обчислити одним проходом Б з невеликим використанням основної пам'яті.

Рядки повинні бути вибрані таким чином, щоб вони приблизно відповідали грубій дискретизації повної проблеми. Взяти в п’ять разів більше рядків, ніж загальна кількість очікуваних множин матричного множення повинно бути достатньо.

Редагувати: Чому це працює? За конструкцією матриціБ і С пов'язані між собою С=АБ. Якщо підпростір охоплюється стовпцямиБ містить точний вектор розчину х' (рідкісна, але проста ситуація) тоді х' має форму х'=Бу для деяких у. Підставивши це до рівняння, що визначаєх' дає рівняння (С+DБ)у=б'. Таким чином, у цьому випадку вищезазначений процес дає вихідну точкух0=Бу=х', що є точним рішенням.

Загалом, очікувати не можна х' лежати в просторі стовпців Б, але згенерованою початковою точкою буде точка у цьому просторі колонок, найближчий до х', у метриці, визначеній вибраними рядками. Таким чином, це може бути розумне наближення. Коли більше систем обробляється, простір стовпців зростає, а наближення, ймовірно, значно покращиться, так що можна сподіватися сходитись на все меншу і меншу кількість ітерацій.

Edit2: Про створений підпростір: Якщо кожен вирішує кожну систему методом Крилова, вектори, які використовуються для отримання вихідної точки для другої системи, охоплюють підпростір Крилова першого правого боку. Таким чином, можна отримати гарне наближення кожного разу, коли цей підпростір Крилова містить вектор, близький до рішення вашої другої системи. Взагалі, вектори використовувались для отримання вихідної точки для(k+1)st система охоплює простір, що містить перший підпростір Крилова k права сторона.


Дякую, професор Неймаєр. Я спробую це. Не могли б ви дати мені коротке пояснення, як це працює?
Кошт

Крім того, що робити, якщо я хочу вирішити ту саму систему для багатьох різних векторів RHS? тобтоAx0=b0, Ax1=b1, Ax2=b2і т. д. Чи є якась інформація, яку я можу використовувати з попередніх рішень для прискорення наступних?
Кошт

@Costis: Рішення з тією ж матрицею - лише особливий випадок D=0загальної проблеми. Перше питання дивіться у редагуванні.
Арнольд Ноймаєр

@Costis: Я додав трохи більше деталей до кроку 2. - Якщо ви пишете заявку, будь ласка, надішліть їй переддрук.
Арнольд Ноймаєр

Дякую за пояснення! Чому я не можу просто вирішити переопределену систему(C+DB)ybвикористовуючи підхід на основі QR-факторизації та використовуючи всі рядки, а не лише підмножину? Я думаю, у міру збільшення кількості стовпців C і B, можливо, мені доведеться позбутися деяких рядків, щоб зробити операцію швидше. Звичайно, я напишу опис системи та надішлю її електронною поштою. Насправді я думаю, що можна придумати схему, що відповідає додаткам, яка може працювати краще, ніж найзагальніший випадок. Дякую!
Кошт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.