26 virtual void contract(IntervalMatrix& A, IntervalVector& x, IntervalVector& b)
const = 0;
27 virtual std::shared_ptr<CtcLinearBase> copy()
const = 0;
73 void contract(IntervalMatrix& A, IntervalVector& x, IntervalVector& b)
const;
75 virtual std::shared_ptr<CtcLinearBase> copy()
const
77 return std::make_shared<CtcGaussElim>(*
this);
125 void contract(IntervalMatrix& A, IntervalVector& x, IntervalVector& b)
const;
127 virtual std::shared_ptr<CtcLinearBase> copy()
const
129 return std::make_shared<CtcGaussSeidel>(*
this);
167 requires (std::is_base_of_v<CtcLinearBase,C> || std::is_same_v<std::shared_ptr<CtcLinearBase>,C>)
169 : _ctc_no_precond(ctc_no_precond)
180 void contract(IntervalMatrix& A, IntervalVector& x, IntervalVector& b)
const
182 assert_release(A.is_squared() && A.rows() == x.size() && A.rows() == b.size());
184 IntervalMatrix A0 = A.mid();
185 IntervalMatrix A0_inv = A.mid().inverse().template cast<Interval>();
186 IntervalMatrix Ap = A0_inv*A;
187 IntervalVector bp = A0_inv*b;
189 _ctc_no_precond.front().contract(Ap,x,bp);
195 virtual std::shared_ptr<CtcLinearBase> copy()
const
197 return std::make_shared<CtcLinearPrecond>(*
this);
203 const Collection<CtcLinearBase> _ctc_no_precond;
CtcGaussElim()
Creates a contractor based on the Gauss elimination.
Definition codac2_linear_ctc.h:62
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:114
void contract(IntervalMatrix &A, IntervalVector &x, IntervalVector &b) const
Creates the domains according to the linear system: .
Definition codac2_linear_ctc.h:180
CtcLinearPrecond(const C &ctc_no_precond)
Creates a contractor performing preconditioning before calling some provided linear contractor.
Definition codac2_linear_ctc.h:168