Next: GradientSolve and HessianSolve Up: General purpose system solving Previous: General purpose system solving   Contents

## GeneralSolve

This is the most basic procedure for solving systems. It uses only the the interval evaluation of the expressions and can deal with equations involving intervals as coefficients, while the other solving procedure cannot be used in that case.

This procedure will return as solution a set of boxes: a box is defined as a set of intervals, one for each unknowns. Such box will be obtained as soon as either the width of all the intervals is lower than `ALIAS/epsilon` or the width of the interval evaluation of the expressions for the box is lower than `ALIAS/fepsilon`. To avoid returning a large number of solutions it is assumed that all the solutions of the system are at a distance at least larger than `ALIAS/dist`.

Hence the results provided by this procedure exhibit the following features:

• if `ALIAS/dist` is set to 0: all the solutions of the system will be included in one of the result boxes. But there may be some result boxes that do no include a solution of the system
• if `ALIAS/dist` is not set to 0: the number of result boxes will be in general lower than in the previous case but some solutions of the system may not be included in the result boxes and be only close to a solution box. There still may be some result boxes that do no include a solution of the system

For example:

```
with(ALIAS):
u:=GeneralSolve([x^2+y^2-1,x+y],[x,y],[[-2,2],[-2,1]]);
```
will provide in u an approximation of the 2 solutions of the system. for included in the range [-2,2], [-2,1].

The efficiency of the calculation may be improved by using a simplification procedure, see chapter 4. Hence the following code will be faster:

```
with(ALIAS):
HullConsistency([x^2+y^2-1,x+y],[x,y],"Simp"):
u:=GeneralSolve([x^2+y^2-1,x+y],[x,y],[[-2,2],[-2,1]],"Simp");
```

Note that by default when an evaluation of all the equations is needed in the C++ program, the program will proceed by successive calls to the procedure created by MakeF. This behavior may be changed by setting `ALIAS/equation_alone` to 0: in that case all equations will be evaluated by a single call to the C++ evaluation procedure. This may be important in term of computation time if the evaluation of simplification terms is performed before doing the evaluation (e.g. if the procedure ALIAS_FSIMPLIFY has been defined, see the MakeF section 2.1.1).

Note that there is a specific bisection mode that can be used for this solving algorithm. The table `ALIAS/table_ordered_bisection`, with as many lines as equations, will contain variable number in a row such as for the first row [1,3,4]. This will indicate that only variables 1, 3, 4 will first be bisected until the first equation is satisfied. Then we will move to the second equation and the second row of the table. This bisection method is validated as soon as the flag `ALIAS/ordered_bisection` is set to 1.

Next: GradientSolve and HessianSolve Up: General purpose system solving Previous: General purpose system solving   Contents
Jean-Pierre Merlet 2012-12-20