int Solve_Simplex_Gradient(int m,int n,int NbNl, INTEGER_VECTOR TypeEq, INTERVAL_VECTOR (* IntervalFunction)(int,int,INTERVAL_VECTOR &), INTERVAL_MATRIX (* Gradient)(int, int,INTERVAL_VECTOR &), void (* NonLinear)(INTERVAL_VECTOR &x,INTERVAL_VECTOR &X), void (* GradientNonLinear)(INTERVAL_VECTOR &x,INTERVAL_MATRIX &X), void (* CoeffLinear)(MATRIX &U), double MaxDiam, int FullSimplex, INTERVAL_VECTOR & TheDomain, int Order,int Iteration,int Stop, double epsilon,double epsilonf,double Dist, INTERVAL_MATRIX & Solution, int Nb,int UseGradNL, INTEGER_MATRIX &GI, int (* Simp_Proc)(INTERVAL_VECTOR &))the arguments being:

`m`: number of unknowns`n`: number of equations, see the note 2.3.4.1`NbNl`: number of equations that have no linear term at all or are inequalities.`TypeEq`: an array of integers that indicate the type for the equations.`TypeEq(i)`is -1,0,1 if equation`i`is an inequality , an equation or an inequality .`IntervalFunction`: a function which return the interval vector evaluation of the equations, see the note 2.3.4.3 on how to write this procedure. The equations must be ordered: first the equations with linear terms then the equations without any linear terms and finally the inequalities`Gradient`: a procedure which return the Jacobian matrix of the system for given values of the unknowns (see note 2.4.2.2)`NonLinear`: a procedure to compute the non linear part of the equations, see note 2.14.2.1`GradientNonLinear`: a procedure that returns the gradient of the non linear part of the equations, see note 2.14.3.1`CoeffLinear`: a procedure that return a matrix which contain the constant coefficients of the linear term in the equation, see note 2.14.2.2`MaxDiam`: the simplex method will not be used on boxes whose maximal width is lower than this value. Should be set to 0 or a small value`FullSimplex`: this flag is used to indicate how much we will use the simplex method (which may be costly). If set to -1 only the phase I of the simplex will be used. If set to with , then the full simplex method will be used recursively on the variables having the largest interval width.`TheDomain`: box in which we are looking for solution of the equations`Order`: the type of order which is used to store the intervals created during the bisection process. This order may be either`MAX_FUNCTION_ORDER`or`MAX_MIDDLE_FUNCTION_ORDER`. See the note on the order 2.3.4.4.`M`: the maximum number of boxes which may be stored. See the note 2.3.4.5`Stop`: the possible values are 0,1,2- 0: the algorithm will look for every solution in
`TheDomain` - 1: the algorithm will stop as soon as 1 solution has been found
- 2: the algorithm will stop as soon as
`Nb`solutions have been found

- 0: the algorithm will look for every solution in
`epsilon`: the maximal width of the solution intervals, see the note 2.3.4.6`epsilonf`: the maximal width of the equation intervals for a solution, see the note 2.3.4.6`Dist`: minimal distance between the middle point of two interval solutions, see the note 2.3.4.7`Solution`: an interval matrix of size (`Nb`,`m`) which will contained the solution intervals. This list is sorted using the order specified by`Order``Nb`: the maximal number of solution which will be returned by the algorithm`UseGradNL`: if set to 1 the algorithm will use the gradient of the non linear part of the equations to improve their interval evaluation. Otherwise must be set to 0.`GI`: an integer matrix which give a-priori information on the sign of the derivative of the function.`GI(i,j)`indicates the sign of the derivative of function`i`with respect to variable`j`using the following code:- -1: the derivative is always negative
- 0: the function is not dependent of variable
`j` - 1: the derivative is always positive
- 2: the sign of the derivative is not known

`Simp_Proc`: a user-supplied procedure that take as input the current box and proceed to some further reduction of the width of the box or even determine that there is no solution for this box, in which case it should return -1 (see note 2.3.3). Remember that you may use the 3B method to improve the efficiency of this algorithm (see section 2.3.2).

`ALIAS_Store_Gradient`: if not 0 the gradient matrix of each box will be stored together with the boxes. Must be set to 0 for large problem (default value: 1)`ALIAS_Diam_Max_Gradient`: if the maximal width of the ranges in a box is lower than this value, then the gradient will be used to perform the interval evaluation of the functions (default value: 1.e10)`ALIAS_Diam_Max_Kraw`: if the maximal width of the ranges in a box is lower than this value, then the Krawczyk operator will be used to determine if there is a unique solution in the box (default value: 1.e10)`ALIAS_Diam_Max_Newton`: if the maximal width of the ranges in a box is lower than this value, then the interval Newton method will be used either to try to reduce the width of the box or to to ensure that there is no solution of the system in the box (default value: 1.e10)`Min_Diam_Simplex`: if the maximal width of the input box is lower than this value, then the simplex method will be used`Max_Diam_Simplex`: if the maximal width of the input box is lower than this value, then the simplex method will not be used`Min_Improve_Simplex`: when applying the simplex method if the change on one variable is larger than this value, then the simplex method will be repeated`ALIAS_Simplex_Expanded`: if set to 1 the expression has been expanded with respect to the lower bound of each variable

There are several versions of this procedure in which several arguments of the general procedure may be omitted. The following table indicates which arguments may be omitted and the corresponding assumptions (EO=equations only).

omitted | ||||||

NbNl |
0 | 0 | 0 | |||

TypeEq |
EO | EO | EO | EO | EO | EO |

GradientNonLinear |
not known | not known | ||||

UseGradNL |
0 | 0 | 0 | 0 |