Spec-Zone.ru › Eigen3

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
Inheritance graph
BiCGSTAB ()
template<typename MatrixDerived >
BiCGSTAB (const EigenBase< MatrixDerived > &A)
- Публичные методы, унаследованные от Eigen::IterativeSolverBase< BiCGSTAB< _MatrixType, _Preconditioner > >
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
- Публичные методы, унаследованные от Eigen::SparseSolverBase< Derived >
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]

template<typename _MatrixType , typename _Preconditioner >
Eigen::BiCGSTAB< _MatrixType, _Preconditioner >::BiCGSTAB ( )
inline

Конструктор по умолчанию.

BiCGSTAB() [2/2]

template<typename _MatrixType , typename _Preconditioner >
template<typename MatrixDerived >
Eigen::BiCGSTAB< _MatrixType, _Preconditioner >::BiCGSTAB ( const EigenBase< MatrixDerived > & A )
inlineexplicit

Инициализирует решатель с матрицей A для дальнейшего Ax=b решения.

Этот конструктор является сокращением для конструктора по умолчанию, за которым следует вызов compute().

Предупреждение
Этот класс хранит ссылку на матрицу A, а также некоторые предварительно вычисленные значения, зависящие от неё. Поэтому, если A изменится, этот класс станет недопустимым. Вызовите compute(), чтобы обновить его с новой матрицей A, или измените копию A.

The documentation for this class was generated from the following file:
  • BiCGSTAB.h

© Eigen.
Licensed under the MPL2 License.
https://eigen.tuxfamily.org/dox/classEigen_1_1BiCGSTAB.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API