попередній умова для безматричного методу для вирішення Ax = b


9

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

Я дивлюся на petsc, який забезпечує інтерфейс для таких лінійних операторів, що не містять матриць, але те, що я насправді не розумію, - це як попередній умова обчислює Petsc? Або я повинен забезпечити власний попередній кондиціонер? Якщо так, чи доступні інструменти чи репліку для побудови попереднього кондиціонера з лінійного оператора, що не містить матриць?

Більше інформації про мого оператора: він несиметричний, не є діагонально домінуючим, але домінує декілька бічних смуг (але він також не діагональний)

Відповіді:


7

Вам потрібно буде прокатати власний попередній кондиціонер. Якщо ви знаєте матрицю, реалізувати щось на кшталт попереднього кондиціонера SSOR не повинно бути важко. Якщо ви знаєте щось інше про проблему, наприклад, що це походить від PDE, рішення якого може бути наближеним до більш грубої сітки, тоді ви також можете розглянути можливість створення попередніх кондиціонерів, обмеживши проблему на більш грубій сітці, вирішивши там і розширивши рішення повернутися до вихідного. Обмеження та подовження можуть бути реалізовані як операції без матриць.

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