next up previous contents
Next: Missed branches Up: Implementation Previous: Procedure for following branches   Contents


Full continuation procedure

This procedure will determine initial points on the branches of the system for the value of the parameter within some bounds and then follow the branches. It is implemented as
 
int ALIAS_Full_Continuation(int m,int n,
       INTERVAL_VECTOR (* IntervalFunction)(int,int,INTERVAL_VECTOR &), 
       INTERVAL_MATRIX (* Gradient)(int, int,INTERVAL_VECTOR &), 
       INTERVAL_MATRIX (* IntervalHessian)(int,int,INTERVAL_VECTOR &),
       INTERVAL_VECTOR &Domain,
       int M,
       double epsilon,double epsilonf,
       double *z,double delta,double mindelta,double mindz,
       INTERVAL &Rangez,
       int sens,
       MATRIX &BRANCH,int *NBBRANCH)
The arguments are the same than for the previous procedure except for: To determine the starting points of the branches this procedure uses the solving procedure with the Hessian (see section 2.5). As soon as initial valid solutions are found the ALIAS_Start_Continuation procedure is called until either a bound of the parameter range is reached, or a singularity occur. In the later case the solving procedure is called with an increased value for the parameter. This algorithm cannot find isolated points and may miss branches (see next section).

There is also another version of this program where you indicate just before Domain the solutions which have already been found. The syntax is

 
       INTERVAL_MATRIX (* IntervalHessian)(int,int,INTERVAL_VECTOR &),
       int NUM,
       INTERVAL_MATRIX &Solutions,
       INTERVAL_VECTOR &Domain


The return code for these procedures are:


Finding the initial starting point with the accuracy mindz may be computer intensive. Hence the integer global variable ALIAS_Allow_Backtrack enable to disable this process if it is set to 0 (its default value is 1): in that case as soon as starting points have been found (hence at $z_0$+ $n$delta) we will start following the branches.


In fact these procedures are special occurrences of another ALIAS procedure which has another argument right after the Hessian argument. Assume for example that you are considering a system which has one equation written as:

\begin{displaymath}
(x-1)^2+(y-1)^2=l_{25}
\end{displaymath}

where $l_{25}$ is the parameter of the system and $x,y$ the unknowns. When using the continuation method we have to define ranges for these unknowns in order to be able to solve the system of equations. Up to now we have indicated bounds that are constants but for the equation example it will be interesting to be able to specify that these bounds may change according to the value for the parameter using a simplification procedure. In our example clearly $x$ and $y$ cannot exceed $l_{25}+1$ and cannot be lower than $-l_{25}+1$ (this is an application of the concept of 2B-consistency, see section 2.17). Hence we may specify right after the Hessian argument the name of a procedure, for example Range, that is able to update the bounds on the unknowns according to the value of the parameter (or any other variable that may play a role). The syntax of the procedure Range is:
INTERVAL_VECTOR Range(double z, INTERVAL_VECTOR &Variable)
where z is parameter value and Variable the current set of ranges for the unknowns. This procedure must return a set of ranges for the unknowns (be careful to check that the returned ranges are included in the initial ranges).

Note also that the ALIAS-Maple package offers a procedure that uses the method described in section 2.14 for finding the initial starting points of the branches: this method is efficient if the equations include linear terms in the unknowns.


next up previous contents
Next: Missed branches Up: Implementation Previous: Procedure for following branches   Contents
Jean-Pierre Merlet 2012-12-20