26 virtual void contract(IntervalMatrix& A, IntervalVector& x, IntervalVector& b)
const = 0;
27 virtual std::shared_ptr<CtcLinearBase> copy()
const = 0;
28 virtual ~CtcLinearBase() =
default;
76 virtual std::shared_ptr<CtcLinearBase> copy()
const
78 return std::make_shared<CtcGaussElim>(*
this);
128 virtual std::shared_ptr<CtcLinearBase> copy()
const
130 return std::make_shared<CtcGaussSeidel>(*
this);
168 requires (std::is_base_of_v<CtcLinearBase,C> || std::is_same_v<std::shared_ptr<CtcLinearBase>,C>)
170 : _ctc_no_precond(ctc_no_precond)
183 assert_release(A.is_squared() && A.rows() == x.size() && A.rows() == b.size());
186 IntervalMatrix A0_inv = A.mid().inverse().template cast<Interval>();
190 _ctc_no_precond.front()->contract(Ap,x,bp);
196 virtual std::shared_ptr<CtcLinearBase> copy()
const
198 return std::make_shared<CtcLinearPrecond>(*
this);
204 const Collection<CtcLinearBase> _ctc_no_precond;
CtcGaussElim()
Creates a contractor based on the Gauss elimination.
Definition codac2_linear_ctc.h:63
void contract(IntervalMatrix &A, IntervalVector &x, IntervalVector &b) const
Creates the domains according to the linear system: .
void contract(IntervalMatrix &A, IntervalVector &x, IntervalVector &b) const
Creates the domains according to the linear system: .
CtcGaussSeidel()
Creates a contractor based on the Gauss Seidel method.
Definition codac2_linear_ctc.h:115
void contract(IntervalMatrix &A, IntervalVector &x, IntervalVector &b) const
Creates the domains according to the linear system: .
Definition codac2_linear_ctc.h:181
CtcLinearPrecond(const C &ctc_no_precond)
Creates a contractor performing preconditioning before calling some provided linear contractor.
Definition codac2_linear_ctc.h:169
Eigen::Matrix< Interval,-1,-1 > IntervalMatrix
Alias for a dynamic-size matrix of intervals.
Definition codac2_IntervalMatrix.h:25
Eigen::Matrix< Interval,-1, 1 > IntervalVector
Alias for a dynamic-size column vector of intervals.
Definition codac2_IntervalVector.h:25