Яких вказівок слід дотримуватися, вибираючи розріджений лінійний системний вирішувач?


49

Рідкі лінійні системи з'являються із збільшенням частоти в додатках. Для вирішення цих систем можна вибрати багато підпрограм. На найвищому рівні існує водорозділ між прямим (наприклад, розрідженим гауссовим усуненням або розкладанням Холеського, із спеціальними алгоритмами впорядкування та мультифронтальними методами) та ітераційними (наприклад, GMRES, (дво-) спряжений градієнт) методами.

Як можна визначити, чи використовувати прямий чи ітеративний метод? Зробивши цей вибір, як можна вибрати певний алгоритм? Я вже знаю про експлуатацію симетрії (наприклад, використовуйте спряжений градієнт для розрідженої симетричної позитивної визначеної системи), але чи є якісь інші міркування на кшталт цього, які слід враховувати при виборі методу?

Відповіді:


33

Важливим при виборі ітеративних розв’язувачів є спектр оператора, дивіться у цій роботі . Однак є стільки негативних результатів, див. Цей документ, де жоден ітеративний вирішувач не виграє для всіх проблем, і цей документ, в якому вони доводять, що можуть отримати будь-яку криву конвергенції для GMRES для будь-якого спектру. Таким чином, здається неможливим передбачити поведінку ітеративних розв'язувачів, за винятком кількох поодиноких випадків, тому найкращим варіантом є спробувати їх усі, використовуючи систему типу PETSc , яка також має прямі рішення.


2
"Кинь усе, що ти можеш", це була велика порада, до якої я звик. :) Третій документ, на який ви посилаєтесь, - це те, чого я раніше не бачив; Дякую за це!
JM

2
У Метта чудова відповідь, але ви повинні сприймати це в контексті спільноти, з якої він походить (масштабні наукові обчислення). Ви побачите, що для невеликих проблем (скажімо, менше ста тисяч невідомих), прямі вирішувачі значно перевершують ітераційні методи, якщо проблема не є сильно еліптичною. Я не бачив жодної хорошої загальної роботи в літературі, яка б спрямовувала вас на початкову стартову стратегію, що мене трохи бентежить.
Арон Ахмадія

5
Оцінка Арона хороша, але сильно залежить від заповнення, оскільки рідкісні прямі методи зазвичай виснажують пам'ять, перш ніж вони виснажують терпіння.
Метт Кнеплі

18

Вибір між прямими та ітераційними методами залежить від цілей та проблеми.

Для методів Direct ми можемо відзначити:

  • Матриця коефіцієнтів лінійних змін системи протягом обчислень і може бути, для вимог розріджених систем витяжних пам'яті і збільшити робоче зусилля за рахунком заповнення в
  • Повинно виконати корисні результати
  • Факторизація може бути повторно використана в наступних кроках, якщо є декілька правого боку
  • Можна використовувати лише для вирішення лінійних систем.
  • Рідко провалюється.

Для ітеративних методів ми можемо відзначити:

  • Мета - дати частковий результат лише після невеликої кількості ітерацій.
  • Зусилля для вирішення повинні бути меншими, ніж прямі методи однієї проблеми.
  • Економний щодо зберігання (без заповнення)
  • Часто легко програмувати.
  • Відоме приблизне рішення може бути використане.
  • Іноді вони швидкі, а іноді їх немає (іноді навіть розходяться).
  • Для складних проблем ітеративні методи значно менш надійні порівняно з прямими.

Вказівки щодо використання прямих чи ітеративних методів?

  • Ітераційні методи, коли матриця коефіцієнтів рідкісна, а прямі методи не можуть ефективно використовувати ощадливість (уникайте створення заповнення).
  • Прямі методи для декількох правого боку.
  • Ітераційні методи можуть бути ефективнішими, якщо точність викликає менше занепокоєння
  • Ітераційні методи для нелінійних систем рівнянь.

8
O(n)O(n)O(n2)O(1)

8

Я повністю згоден з уже даними відповідями. Я хотів додати, що всі ітеративні методи вимагають певної початкової здогадки. Якість цієї початкової здогадки часто може впливати на швидкість конвергенції обраного методу. Такі методи, як Якобі, Гаусс Сейдель і Послідовність над релаксацією, працюють на тому, щоб ітераційно "згладжувати" якомога більше помилок на кожному кроці ( детальну інформацію див. У цій статті.). Перші кілька кроків досить швидко зменшують помилку високої частоти, але помилка низької частоти потребує набагато більше ітерацій, щоб згладити її. Саме це робить зближення повільним для цих методів. У таких випадках, як ми, ми можемо прискорити конвергенцію, вирішивши спочатку низькочастотні помилки (наприклад, вирішити ту саму проблему на більш грубій сітці), а потім вирішити помилку більш високої частоти (наприклад, на більш тонкій сітці). Якщо застосовувати цю концепцію рекурсивно шляхом ділення та перемоги, ми отримуємо те, що називається методом мультисетки. Навіть якщо лінійна система не є симетричною, існують альтернативні варіанти багатосхемового методу для будь-якої несинулярної розрідженої матричної системи (наприклад, алгебраїчний багатомережевий метод), яка може прискорити конвергенцію рішення. Однак їх масштабованість на паралельних системах є предметом багатьох досліджень.


5
Ця відповідь, здається, створює враження, що ефективність багаторешітки виходить із пошуку хорошої початкової здогадки. Насправді початкова здогадка є незначною проблемою щодо лінійних проблем і насправді стосується лише Повної багаторешітки. Багаторешітка працює завдяки спектральному поділу. Зауважте, що зробити багаторешітку добре для важких проблем є важливою проблемою. Паралельно працює мультисетка, яка була ключовим інгредієнтом кількох призів Гордона Белла та кількох пакетів з відкритим кодом, які працюють з найбільшою ефективністю на найбільших сьогоднішніх машинах. Щодо реалізації GPU, перегляньте бібліотеку CUSP.
Джед Браун

У більшості випадків випадкова початкова здогадка є досить хорошою. У вилученні власних значень за допомогою алгоритму Ланцоса допомагає випадковий вектор запуску / перезапуску. Перестановки трапляються часом в алгоритмі Ланцоса.
AnilJ

3

У вашому запитанні відсутня важлива інформація: звідки походить матриця. Структура проблеми, яку ви намагалися вирішити, має великий потенціал запропонувати метод рішення.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.