VERSOFT: Guide


1. WHAT IS VERSOFT?

VERSOFT is a collection of verification files for computing verified solutions of various numerical linear algebraic problems having exact or interval-valued data.

 

2. WHERE CAN IT BE FOUND?

It is available at

http://www.cs.cas.cz/rohn/matlab .

 

3. WHAT DOES “VERIFIED” MEAN?

A result is called verified if it holds as a mathematical truth despite being achieved by computation in finite precision arithmetic.  Usually the result is given in the form “x in [x1,x2]”, where x (be it a matrix, vector, or number) is the exact solution and [x1,x2] is an interval (matrix, vector, number) which is guaranteed  to contain x and whose bounds consist of floating-point numbers.

Example: verified eigenvalues of a 3-by-3 matrix.

 

>> format long, A=[1 2 3; 4 5 6; 7 8 9], lam=diag(vereig(A))

A =

     1     2     3

     4     5     6

     7     8     9

intval lam =

[  16.11684396980703,  16.11684396980705]

[  -0.00000000000001,   0.00000000000001]

[  -1.11684396980705,  -1.11684396980704]

 

The three eigenvalues are verified to belong to the intervals given. Observe that the second eigenvalue, which is zero, is enclosed by a tiny interval. Hence the result does not give us  right to assert that the matrix is singular (but this can be verified by another means, see VERFULLCOLRANK).

 

4. FILE NAMES

All the M-file names (except one) bear the prefix VER (for “VERified”). The second part is very often simply the name of the corresponding MATLAB function, as e.g. VERRANK, VERDET, VERPINV, VEREIG, VERCHOL, VERQR, VERLSQ, VERLINPROG, VERQUADPROG, etc. The names not falling into this category are constructed in a similar way, as e.g. VERINVERSE, VERPOSDEF (“VERified POSitive DEFiniteness”), VERTHINSVD (“VERified THIN SVD”),  VERSPECTDEC (“VERified SPECTral DEComposition”), VERFULLCOLRANK (“VERified FULL COLumn RANK”), VERMATFUN (“VERified MATrix FUNction”),  VERLINSYS (“VERified solution(s) of a LINear SYStem”), VEREGSING (“VERified REGularity/SINGularity of an interval matrix”), VERTOLSOL (“VERified TOLerance SOLution”), etc.

 

5. INPUT DATA

There is a basic distinction between real  (noninterval) data only, and interval data. Files constructed for interval data also admit real data, but not conversely.  Typically, only the data of the problem are required; various control variables (as maximal number of iterations, tolerance, etc.) are built in. There is only one exception regarding files for solving NP-hard problems (as VERINTERVALHULL, VERREGSING, VERPOSDEF, etc.) that offer the possibility to input an additional time variable “t” (timing) which, when equal to 1, produces screen output of the form

Expected remaining time: 2502 sec.
which can help you to decide whether is pays off to continue the computation, or not.
 
6. OUTPUT DATA
The basic rule is that the output is always either verified, or consists of NaN’s (of the respective size). 
Thus,
 
>> A=[1 2 3 4; 5 6 7 8; 9 10 11 12], X=verpinv(A)
A =
     1     2     3     4
     5     6     7     8
     9    10    11    12
intval X = 
  Columns 1 through 2
[  -0.37500000000001,  -0.37499999999999] [  -0.10000000000001,  -0.09999999999999] 
[  -0.14583333333334,  -0.14583333333333] [  -0.03333333333334,  -0.03333333333333] 
[   0.08333333333333,   0.08333333333334] [   0.03333333333333,   0.03333333333334] 
[   0.31249999999999,   0.31250000000001] [   0.09999999999999,   0.10000000000001] 
  Column 3
[   0.17499999999999,   0.17500000000001] 
[   0.07916666666666,   0.07916666666667] 
[  -0.01666666666667,  -0.01666666666666] 
[  -0.11250000000001,  -0.11249999999999]
 
computes a verified pseudoinverse of A, whereas an attempt to compute a verified QR decomposition of the same matrix fails:
 
>> format short, A=[1 2 3 4; 5 6 7 8; 9 10 11 12], [Q,R]=verqr(A)
A =
     1     2     3     4
     5     6     7     8
     9    10    11    12
intval Q = 
[       NaN,       NaN] [       NaN,       NaN] [       NaN,       NaN] 
[       NaN,       NaN] [       NaN,       NaN] [       NaN,       NaN] 
[       NaN,       NaN] [       NaN,       NaN] [       NaN,       NaN] 
intval R = 
[       NaN,       NaN] [       NaN,       NaN] [       NaN,       NaN] [       NaN,       NaN] 
[    0.0000,    0.0000] [       NaN,       NaN] [       NaN,       NaN] [       NaN,       NaN] 
[    0.0000,    0.0000] [    0.0000,    0.0000] [       NaN,       NaN] [       NaN,       NaN]
 
(R is predefined to be upper triangular, therefore the zeros).  Some files (but by far not all of them) contain an output variable E which gives some
reasons for NaN output. Care should be taken of the fact that a NaN output also occurs (without further comments) when input data are incompatible. 
For example,
 
>> A=[1 2;3 4], lam=vereigsym(A)
A =
     1     2
     3     4
intval lam = 
[       NaN,       NaN] 
[       NaN,       NaN]
 
results in NaN’s because of an attempt to apply a file designed for symmetric matrices to a nonsymmetric matrix.
 
7. SHORTEST FILE
The shortest file is PLUSMINUSONESET, consisting of 10 code lines only.  This is also the single M-file in VERSOFT not bearing the prefix “VER”.
 
8. LONGEST FILE
The longest file is INTERVALHULL, referred to by VERINTERVALHULL. It has almost 1000 lines and its construction lasted from 2003 to 2007
(being approximately as time-consuming as all the other files taken together).
 
9. EXAMPLES
Further examples can be found at
http://www.cs.cas.cz/rohn/matlab/examples/examples.html .
 

10. THE BASIC REFERENCE

For problems with real data only, there is no single basic reference. For problems with interval data you may consult the “Handbook” available at

http://www.cs.cas.cz/rohn/handbook .

 

11. THE LANGUAGE IN WHICH IT IS WRITTEN

VERSOFT is written in INTLAB, a MATLAB toolbox created by Siegfried M. Rump. It can be downloaded from

http://www.ti3.tu-harburg.de/rump/intlab

(observe the license). An INTLAB primer can be found at

http://www.cs.cas.cz/rohn/matlab/primer/intlab_primer.html .

 

12. AUTHOR

Jiri Rohn is with the Institute of Computer Science, Academy of Sciences, Prague, Czech Republic, European Union.