Як встановити, що ітераційний метод для великих лінійних систем на практиці є конвергентним?


11

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

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

Але що можна зробити для встановлення конвергенції на практиці? і що робиться?


1
Чудове запитання! Коли ви говорите «встановити конвергенцію», ви маєте на увазі «встановити, що рішення конвергується» або «встановити, що конвергенція відбудеться»? Я знаю, наприклад, що об’єкт PETSc KSP має кілька методів за замовчуванням для тестування конвергенції (норма помилки зменшується, максимальна кількість ітерацій). Це така відповідь, яку ви шукаєте?
Арон Ахмадія

@aron: Я думаю, що буде цікаво переглянути відповіді на обидва питання.
Аллан П. Енгсіг-Каруп

Відповіді:


6

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

PETSc використовує об'єкт, який називається KSPMonitor, для моніторингу ходу ітераційного розв'язувача та вирішення, чи розв'язується вирішувач чи розходиться. Монітор використовує чотири різні критерії, щоб вирішити, чи потрібно зупинятись. Більш детальну інформацію про обговорення тут можна знайти на головній сторінці для KSPGetConvergedReason () .

x

Ax=b

x^r^
  1. (P1(Axb))

    r^=P1(Ax^b)
  2. (AP1Px=b)

    r^=Ax^b

Критерії конвергенції

  1. atol
    r^atol
  2. Відносна толерантність - Критерій відносної толерантності задовольняється, коли норма залишку менша від норми правої частини на коефіцієнт заздалегідь заданої постійної : | | г | | г т про л| | б | |rtol
    r^rtolb
  3. Інші критерії - ітераційне рішення також може сходитися через виявлення невеликої довжини кроку або негативної кривизни.

Критерії розбіжності

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

  2. Залишковий NaN - якщо в будь-якій точці залишок оцінюється з NaN, розв'язувач повертається як розбіжний.

  3. Розбіжність залишкової норми Монітор повертається як розбіжний, якщо в будь-який момент норма залишкової величини перевищує норму правої частини на коефіцієнт заздалегідь заданої постійної : | | г | | д т про л| | б | |dtol

    r^dtolb
  4. Розбивка на розв’язування Метод Крилова сам по собі може подати сигнал про розбіжність, якщо виявить сингулярну матрицю або попередній умова.

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