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;
74 void contract(IntervalMatrix& A, IntervalVector& x, IntervalVector& b)
const;
76 virtual std::shared_ptr<CtcLinearBase> copy()
const
78 return std::make_shared<CtcGaussElim>(*
this);
126 void contract(IntervalMatrix& A, IntervalVector& x, IntervalVector& b)
const;
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)
181 void contract(IntervalMatrix& A, IntervalVector& x, IntervalVector& b)
const
183 assert_release(A.is_squared() && A.rows() == x.size() && A.rows() == b.size());
185 IntervalMatrix A0 = A.mid();
186 IntervalMatrix A0_inv = A.mid().inverse().template cast<Interval>();
187 IntervalMatrix Ap = A0_inv*A;
188 IntervalVector bp = A0_inv*b;
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