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

9

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

Я смотрю на petsc, который предоставляет интерфейс для таких линейных операторов без матрицы, но что я не очень понимаю, так это то, как предварительный обработчик затем вычисляется petsc? Или я должен предоставить свой собственный предварительный кондиционер? Если да, то есть ли инструменты или средства, доступные для построения предобусловливателя из безматричного линейного оператора?

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

нат чуф
источник

Ответы:

7

Вам нужно будет свернуть свой предварительный кондиционер. Если вы знаете матрицу, не должно быть очень сложно реализовать что-то вроде предварительного кондиционера SSOR, например. Если вы знаете что-то еще о проблеме, например, что она исходит от PDE, решение которого может быть хорошо аппроксимировано на более грубой сетке, то вы также можете рассмотреть возможность построения предварительных кондиционеров, ограничив задачу более грубой сеткой, решив ее и расширив решение вернуться к первоначальному. Ограничение и продление могут быть реализованы как операции без матрицы.

Вольфганг Бангерт
источник