codac 1.5.6
Loading...
Searching...
No Matches
codac2::CtcLinearPrecond Class Reference

Contractor for a linear system of interval equations, using a preconditioning method before calling some provided contractor. More...

#include <codac2_linear_ctc.h>

Public Member Functions

template<typename C>
requires (std::is_base_of_v<CtcLinearBase,C> || std::is_same_v<std::shared_ptr<CtcLinearBase>,C>)
 CtcLinearPrecond (const C &ctc_no_precond)
 Creates a contractor performing preconditioning before calling some provided linear contractor.
 
void contract (IntervalMatrix &A, IntervalVector &x, IntervalVector &b) const
 Creates the domains according to the linear system: \(\mathbf{A}\cdot\mathbf{x}=\mathbf{b}\).
 

Detailed Description

Contractor for a linear system of interval equations, using a preconditioning method before calling some provided contractor.

The associated constraint is under the form \(\mathbf{A}\cdot\mathbf{x}=\mathbf{b}\), where \(\mathbf{A}\) is a squared matrix in \(\mathbb{R}^{n\times n}\) and \(\mathbf{c}\), \(\mathbf{b}\) vectors in \(\mathbb{R}^{n}\).

Contractors such as CtcGaussElim or CtcGaussSeidel are then likely to be efficient if they act on \(\mathbf{A}\) matrices close to the identity. This can be achieved provided that \(w([\mathbf{A}])\) is small enough and that some selected \(\mathbf{A0}\) in \([\mathbf{A}]\) is well conditioned.

Reference: Applied Interval Analysis Luc Jaulin, Michel Kieffer, Olivier Didrit, Éric Walter 2001, Springer London doi: https://doi.org/10.1007/978-1-4471-0249-6 Sec 4.3.2, Page 84

Constructor & Destructor Documentation

◆ CtcLinearPrecond()

template<typename C>
requires (std::is_base_of_v<CtcLinearBase,C> || std::is_same_v<std::shared_ptr<CtcLinearBase>,C>)
codac2::CtcLinearPrecond::CtcLinearPrecond ( const C & ctc_no_precond)
inline

Creates a contractor performing preconditioning before calling some provided linear contractor.

Parameters
ctc_no_precondcontractor object performing the contraction of a linear system of equations, in the case of well-conditioned systems (when the interval matrix \([\mathbf{A}]\) is close to the identity matrix).
169 : _ctc_no_precond(ctc_no_precond)
170 { }

Member Function Documentation

◆ contract()

void codac2::CtcLinearPrecond::contract ( IntervalMatrix & A,
IntervalVector & x,
IntervalVector & b ) const
inline

Creates the domains according to the linear system: \(\mathbf{A}\cdot\mathbf{x}=\mathbf{b}\).

Parameters
Athe domain \([\mathbf{A}]\)
xthe domain \([\mathbf{x}]\)
bthe domain \([\mathbf{b}]\)
181 {
182 assert_release(A.is_squared() && A.rows() == x.size() && A.rows() == b.size());
183
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;
188
189 _ctc_no_precond.front().contract(Ap,x,bp);
190
191 b &= A0*bp;
192 A &= A0*Ap;
193 }

The documentation for this class was generated from the following file: