Eigen::BiCGSTAB
template<typename _MatrixType, typename _Preconditioner>
class Eigen::BiCGSTAB< _MatrixType, _Preconditioner >
Решение методом бисопряжённых градиентов с ускорением для разреженных квадратных задач.
Этот класс позволяет решать разреженные линейные системы вида A.x = b с помощью алгоритма бисопряжённых градиентов с ускорением. Векторы x и b могут быть как плотные, так и разреженные.
- Шаблонные параметры
-
_MatrixType тип разреженной матрицы A, может быть как плотной, так и разреженной. _Preconditioner тип предобуславливателя. По умолчанию используется DiagonalPreconditioner.
Этот класс следует концепции разрешенного решателя.
Максимальное число итераций и значение точности можно контролировать с помощью методов setMaxIterations() и setTolerance(). Значения по умолчанию — размер задачи для максимального числа итераций и NumTraits<Scalar>::epsilon() для точности.
Точность соответствует относительному ошибке остатка: |Ax-b|/|b|
Производительность: при использовании разреженных матриц лучшая производительность достигается для разреженной матрицы в формате по строкам. Кроме того, в этом случае может быть использована многопоточность, если код пользователя скомпилирован с поддержкой OpenMP. Подробности см. в Eigen и многопоточность.
Этот класс может использоваться как класс непосредственного решателя. Вот пример типичного использования:
int n = 10000; VectorXd x(n), b(n); SparseMatrix<double> A(n,n); /* ... fill A and b ... */ BiCGSTAB<SparseMatrix<double> > solver; solver.compute(A); x = solver.solve(b); std::cout << "#iterations: " << solver.iterations() << std::endl; std::cout << "estimated error: " << solver.error() << std::endl; /* ... update b ... */ x = solver.solve(b); // solve again
По умолчанию итерации начинаются с x=0 в качестве начального приближения решения. Начальное приближение можно контролировать с помощью метода solveWithGuess().
BiCGSTAB также может быть использован в контексте безматричных вычислений, см. пример в данной статье.
- См. также
- класс SimplicialCholesky, DiagonalPreconditioner, IdentityPreconditioner
| BiCGSTAB () | |
| template<typename MatrixDerived > | |
| BiCGSTAB (const EigenBase< MatrixDerived > &A) | |
|
| |
| BiCGSTAB< _MatrixType, _Preconditioner > & | analyzePattern (const EigenBase< MatrixDerived > &A) |
| BiCGSTAB< _MatrixType, _Preconditioner > & | compute (const EigenBase< MatrixDerived > &A) |
| RealScalar | error () const |
| BiCGSTAB< _MatrixType, _Preconditioner > & | factorize (const EigenBase< MatrixDerived > &A) |
| ComputationInfo | info () const |
| Index | iterations () const |
| IterativeSolverBase () | |
| IterativeSolverBase (const EigenBase< MatrixDerived > &A) | |
| Index | maxIterations () const |
| Preconditioner & | preconditioner () |
| const Preconditioner & | preconditioner () const |
| BiCGSTAB< _MatrixType, _Preconditioner > & | setMaxIterations (Index maxIters) |
| BiCGSTAB< _MatrixType, _Preconditioner > & | setTolerance (const RealScalar &tolerance) |
| const SolveWithGuess< BiCGSTAB< _MatrixType, _Preconditioner >, Rhs, Guess > | solveWithGuess (const MatrixBase< Rhs > &b, const Guess &x0) const |
| RealScalar | tolerance () const |
|
| |
| template<typename Rhs > | |
| const Solve< Derived, Rhs > | solve (const MatrixBase< Rhs > &b) const |
| template<typename Rhs > | |
| const Solve< Derived, Rhs > | solve (const SparseMatrixBase< Rhs > &b) const |
| SparseSolverBase () | |
BiCGSTAB() [1/2]
| inline |
Конструктор по умолчанию.
BiCGSTAB() [2/2]
| inlineexplicit |
Инициализирует решатель с матрицей A для дальнейшего Ax=b решения.
Этот конструктор является сокращением для конструктора по умолчанию, за которым следует вызов compute().
- Предупреждение
- Этот класс хранит ссылку на матрицу A, а также некоторые предварительно вычисленные значения, зависящие от неё. Поэтому, если A изменится, этот класс станет недопустимым. Вызовите compute(), чтобы обновить его с новой матрицей A, или измените копию A.
The documentation for this class was generated from the following file:
© Eigen.
Licensed under the MPL2 License.
https://eigen.tuxfamily.org/dox/classEigen_1_1BiCGSTAB.html