Eigen::GMRES
шаблон<typename _MatrixType, typename _Preconditioner>
класс Eigen::GMRES< _MatrixType, _Preconditioner >
Решатель GMRES для разреженных квадратных задач.
Этот класс позволяет решать разреженные линейные задачи вида A.x = b с помощью обобщённого метода наименьших остатков (GMRES). Векторы x и b могут быть как плотно, так и разреженно заполненными.
- Шаблочные параметры
-
_MatrixType тип разреженной матрицы A, может быть как плотной, так и разреженной. _Preconditioner тип предобуславливателя. По умолчанию DiagonalPreconditioner
Максимальное число итераций и значение погрешности могут быть заданы через методы setMaxIterations() и setTolerance(). Значения по умолчанию — размер задачи для максимального числа итераций и NumTraits<Scalar>::epsilon() для погрешности.
Этот класс может быть использован как решатель.
Вот типичный пример использования:
int n = 10000; VectorXd x(n), b(n); SparseMatrix<double> A(n,n); // fill A and b GMRES<SparseMatrix<double> > solver(A); x = solver.solve(b); std::cout << "#iterations: " << solver.iterations() << std::endl; std::cout << "estimated error: " << solver.error() << std::endl; // update b, and solve again x = solver.solve(b);
По умолчанию итерации начинаются с x=0 в качестве начального приближения решения. Можно контролировать начальное приближение, используя метод solveWithGuess().
GMRES также может быть использован в контексте безматричных вычислений, см. пример здесь.
- См. также
- класс SimplicialCholesky, DiagonalPreconditioner, IdentityPreconditioner
| Индекс | get_restart () |
| GMRES () | |
| шаблон<typename MatrixDerived > | |
| GMRES (const EigenBase< MatrixDerived > &A) | |
| void | set_restart (const Индекс restart) |
GMRES() [1/2]
| inline |
Конструктор по умолчанию.
GMRES() [2/2]
| inlineexplicit |
Инициализирует решатель матрицей A для дальнейшего Ax=b решения.
Этот конструктор — сокращение для конструктора по умолчанию, за которым следует вызов compute().
- Предупреждение
- Этот класс хранит ссылку на матрицу A, а также некоторые предварительно вычисленные значения, зависящие от неё. Поэтому, если A изменена, этот класс становится недействительным. Вызовите compute() для обновления его с новой матрицей A, или измените копию A.
get_restart()
| inline |
Возвращает число итераций после которого выполняется перезапуск.
set_restart()
| inline |
Устанавливает число итераций после которого выполняется перезапуск.
- Параметры
-
restart число итераций для перезапуска, по умолчанию 30.
Документация для этого класса была сгенерирована из следующего файла:
© Eigen.
Licensed under the MPL2 License.
https://eigen.tuxfamily.org/dox/unsupported/classEigen_1_1GMRES.html