ibex::UnivNewton Class Reference
[Contractors]

Univariate Newton contractor. More...

#include <IbexUnivNewton.h>

Inheritance diagram for ibex::UnivNewton:

ibex::Contractor ibex::Operator

List of all members.

Public Member Functions

 UnivNewton (const Equality &equ, Space &space, REAL w=default_precision)
 UnivNewton (const UnivNewton &newt)
virtual UnivNewtoncopy () const
bool contract (int var)
virtual void contract ()
INTERVAL_VECTOR solve (int var)
INTERVAL_VECTOR solve (const char *var_name)

Public Attributes

const REAL w
const Equalityequ

Static Public Attributes

static const REAL default_precision = __IBEX_DEFAULT_U_NEWTON_PRECISION


Detailed Description

Univariate Newton contractor.

This class implements the classical univariate interval Newton iteration (see [Han92].

It either solves f(x)=0 or contracts a box, with the following iteration:

$ [x] \longleftarrow p - f(p)/f'([x]) $ where p is a point in [x] (not necessarily the midpoint).

Author:
Gilles Chabert
Date:
June 2007

Constructor & Destructor Documentation

ibex::UnivNewton::UnivNewton ( const Equality equ,
Space space,
REAL  w = default_precision 
) [inline]

Create the univariate Newton contractor.

Parameters:
equ - The equation to build this contractor with.
space - The space of the new contractor.
w - Criterion for stopping the iteration. If a step of interval Newton does not reduce the variable domain diameter by more than w (this is not ratio but an absolute value), then the procedure stops. The default value is default_precision.

ibex::UnivNewton::UnivNewton ( const UnivNewton newt  )  [inline]

Duplicate this instance (space is passed by reference).


Member Function Documentation

virtual UnivNewton* ibex::UnivNewton::copy (  )  const [inline, virtual]

Implement the contractor abstract copy.

Implements ibex::Contractor.

bool ibex::UnivNewton::contract ( int  var  ) 

Contract the domain of x with f(x)=0 using interval Newton iteration.

Parameters:
var - the variable x.
Returns:
false if no solution exists.
Weak variant. Only contract the initial interval with Newton iteration (splitting is not allowed).

void ibex::UnivNewton::contract (  )  [virtual]

Apply contraction.

The indicators structure should contain a specific scope value. This value being the variable onto which Newton has to be enforced.

Remarks:
if the scope is set to ALL_VARS or if no indicators is given, all the variables are considered successively. (Although not forbidden, such a call to this method is likely to be a mistake)

Implements ibex::Contractor.

INTERVAL_VECTOR ibex::UnivNewton::solve ( int  var  ) 

Solve f(x)=0 in the current equation box with univariate interval Newton's iteration. The box is not modified.

Parameters:
var - the variable x.
Returns:
An interval vector that contains all the solutions found.
Remarks:
This is not a branch & bound algorithm. Branching only occurs in case 0 is in the divisor of f(p)/f'([x]) ([x] is the current domain and p is the expansion point in [x]). The generalized division is used and this may result in two intervals. The method is then recursively called with both.
Strong variant. Try to find all the roots on the initial interval (splitting is allowed). Splitting only occurs with a division by 0.

INTERVAL_VECTOR ibex::UnivNewton::solve ( const char *  var_name  )  [inline]

Solve f(x)=0 in the current equation box with univariate interval Newton's iteration. The box is not modified.

Parameters:
var_name - the variable name.
Returns:
An interval vector that contains all the solutions found.
Remarks:
This is not a branch & bound algorithm. Branching only occurs in case 0 is in the divisor of f(p)/f'([x]) ([x] is the current domain and p is the expansion point in [x]). The generalized division is used and this may result in two intervals. The method is then recursively called with both.


Member Data Documentation

const REAL ibex::UnivNewton::default_precision = __IBEX_DEFAULT_U_NEWTON_PRECISION [static]

Default precision, set to 1e-07 (__IBEX_DEFAULT_U_NEWTON_PRECISION).

const REAL ibex::UnivNewton::w

Equation


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

Generated on Sun Jun 27 15:52:00 2010 for IBEX by  doxygen 1.5.5