Next: The RohnConsistency procedure Up: Linear algebra Previous: Enclosure of an interval   Contents

### Regularity of parametric matrices

We consider a matrix whose coefficients are functions of a set of variables. The procedure RegularMatrix allows one to determine if the set of matrices includes only regular matrices. Its syntax is

```
RegularMatrix(mat,vars,init,cond,typedet)
```
where
• mat: the matrix definition (here called A)
• vars: the set of variables
• init: a list of ranges, one for each variable
• cond: an integer that indicates if matrix conditioning is used. It is 0 if no conditioning is used, 1 if the conditioning KA is used, 2 if AK is used and 3 if both conditioning are used. The matrix K used here is Inverse(A(Mid(vars))).
• typedet: a list of 3 integers. This integer indicates which determinant calculation procedure is used. A value lower than 2 indicates the use of Fast_Determinant, a value of 2 the use of Medium_Determinant and a value of 3 Slow_Determinant. A value of -1 indicates that the user has provided its own procedure to compute the determinant: the procedure name is `ALIAS/user_determinant_matrix` and is written in the file `ALIAS/user_determinant_matrix`.C. It is also possible to use specific procedures for computing the determinant of the left and right conditioned matrices by using the procedure `ALIAS/user_determinant_cond_left` and `ALIAS/user_determinant_cond_right`.
The procedure returns 1 if all matrices are regular, -1 if the set includes a singular matrix and 0 if the algorithm has failed.

Note that the procedure generates the C++ code for calculating the elements of the matrix by using the procedure MakeF. If these elements includes several times the same complex expressions it is advised to use the mechanism described in MakeF (section 2.1.1) to interval evaluate these expressions only once.

Note also that the used bisection method is to bisect the unknown range having the largest width. Scaling the unknown is therefore important

Note a special case that may occur if the matrix may include interval coefficients apart of the parameters or if the matrix is badly numerically conditioned. In that case it may happen that for a specific value of the parameters the sign of the determinant of the matrix cannot be ascertained (such point will be called unsafe). Hence at this point we cannot state the regularity of the matrix. But it may happen that at 2 other points the determinants will have opposite sign indicating the presence of a singularity. So the following cases may occur:

1. at point P1 the determinant has not a constant sign while at points P2, P3 the signs are opposite
2. at a set of points the determinant has not a constant sign while at all other points the determinant have a constant sign
Hence the output of the algorithm may be -1 in the first case but cannot be neither -1 nor 1 in the second one.

The procedure may behave in 2 different ways:

1. stop as soon as an unsafe point has been found
2. continue if an unsafe point is detected until either a case 1 is detected or until only unsafe points remains

The procedure behavior is controlled through the flag `ALIAS/unsafe_det`. If this flag is set to 1 behavior 1 will be used while behavior 2 is obtained by setting the flag to 0. The default value of this flag is 0. For behavior 1 the return code of the procedure is -3 if an unsafe point is found.

The procedure reorders the boxes every `ALIAS/rand` iteration (default value=0 i.e. at each iteration). The ordering may be controlled through the `ALIAS/order` variable. Assume that the interval evaluation for a box is [a,b]. At some point the procedure will have find a box with a constant sign s for the determinant:

• if the order is 0 the box are sorted by decreasing order of b+a is s or -(b+a) if s
• otherwise the box are sorted by decreasing order of b/(b-a) if s or -a/(b-a) if s
The default value for `ALIAS/order` is 0.

The conditioning may play an important role especially as the conditioned matrix is calculated symbolically. Assume for example that the first row of A is [x  x] and that AK is used. If the first column of K is [a1  a2], then the first element of the conditioned matrix is a1x+a2x, that the procedure will arrange as x(a1+a2), thereby leading to an optimal form in term of interval evaluation, which is better than the numerical conditioning.

The procedure accepts an optional sixth argument which is a string such as SIMP that defines a matrix simplification procedure. The syntax of such procedure is

```
SIMP(int dimA,INTERVAL_MATRIX & A)
```
where dimA is the dimension of matrix A. This procedure shall return -1 if all the matrices in the set A are regular, 0 otherwise. The C++ program corresponding to this procedure is written in the file SIMP.C. Such program may be obtained for example by using the RohnConsistency or SpectralRadiusConsistency procedures.

A parallel version of this procedure is ParallelRegularMatrix.

Next: The RohnConsistency procedure Up: Linear algebra Previous: Enclosure of an interval   Contents
Jean-Pierre Merlet 2012-12-20