# ?gepss

Solves a system of interval linear equations by a solution partitioning method.

## Syntax

call sigepss( trans, n, a, lda, b, ldb, cmpt, mode, estm, epsilon, nits, info)

call digepss( trans, n, a, lda, b, ldb, cmpt, mode, estm, epsilon, nits, info)

## Description

The routine ?gepss uses the (PSS) method to compute a sharp outer component-wise estimate, along a prescribed coordinate axis, of the solution set to the following interval linear system of equations:

`A*X = B`, if `trans = 'N'`,

`AT*X = B`, if `trans = 'T'` or 'C'.

## Input Parameters

trans

  CHARACTER(1). Must be one of 'N', 'T', 'C', 'n', 't', or 'c'.

  Indicates the form of the equations system:

  If `trans = 'N'` or 'n', then `A*X = B` is solved for X.

  If `trans = 'T'` or 'C' or 't'or 'c', then `AT*X = B` is solved for X.

n

  INTEGER. The order of A, the number of rows in B (`n≥0`).

a, b

  REAL for sigepss.

  DOUBLE PRECISION for digepss.

  Arrays: `a (lda,*)`, b (ldb).

  The array a contains the matrix A.

  The array b contains the vector B of the right-hand sides for the system of equations to be solved.

lda

  INTEGER. The first dimension of a, `lda≥ max(1, n)`.

ldb

  INTEGER. The first dimension of b, `ldb≥ max(1, n)`.

cmpt

  INTEGER. The number of the component of the solution set to be estimated.

mode

  CHARACTER(1). Must be either 'L' or 'U'(or the corresponding lowercase letters).

  Indicates how to estimate the solution set along the coordinate direction specified by the parameter cmpt:

  if `mode = 'L'` or 'l', then the routine computes the lower estimate of the solution set over the cmpt-th coordinate;

  if `mode = 'U'` or 'u', then the routine computes the upper estimate of the solution set over the cmpt-th coordinate.

epsilon

  REAL for sigepss.

  DOUBLE PRECISION for digepss.

  The prescribed accuracy of the esimate for the solution set.

nits

  INTEGER. The number of iterations of the PSS algorithm alloted, `nits≥0`.

## Output Parameters

estm

  REAL for sigepss.

  DOUBLE PRECISION for digepss.

  Estimate of the solution set along the coordinate axis with the number cmpt. if `mode = 'L'`, then estm represents the lower estimate of the solution set. if `mode = 'U'`, then estm is equal to the upper estimate of the solution set.

epsilon

  The actual precision of the estimate estm.

nits

  INTEGER. The number of iterations that the algorithm actually executed.

info

  INTEGER.

  If `info = 0`, the execution is successful.

  If `info = i ≥ 0`, the execution is not successful.

  If `info = -i`, the i-th parameter has an illegal value and the routine outputs the corresponding message.

## Application Notes

Routines ?gepps and ?gepss implement two mutually dual algorithms for computing optimal estimates of the solution sets to interval linear systems, which use adaptive partitioning of either parameter set or solution set of the system. The choice of either of these methods should be based on the specific features of the problem under solution such as the number of essentially interval parameters, the shape of the solution set, and so on.

For example, if the interval system has few interval parameters, then PPS-method is preferable, while PSS-method works better for systems that have simple shape of the solution set.

Computing optimal (or sharp) enclosures of the solution sets to interval linear systems, as well as enclosures that are guaranteed to be sharp within a prescribed accuracy, is known to be an NP-hard problem.

Therefore, a good choice of the parameters epsilon and nits becomes crucial for effective work of ?gepps and ?gepss routines and for producing desired results.

With this in mind, the recommendation is to organize the whole solution process with ?gepps or ?gepss interactively as a sequence of routine calls, starting from a moderate nits and a rough epsilon and then increasing nits and reducing epsilon until ?gepps or ?gepss still complete their execution.

## Fortran 90 Code for Parameter Partitioning (PPS) Method

Consider a sample problem that requires computing a sharp lower estimate (to within the accuracy of, say, 1.E-4), along the first coordinate direction, of the solution set to the interval linear system

The problem can be solved by the following Fortran code that implements parameter partitioning method (PPS-method) and uses sigepps routine:

----------------------------------------------------------------------------------------------
`. . . . . .`
`USE INTERVAL_ARITHMETIC`
`. . . . . .`
`INTEGER, PARAMETER :: LDA = 3, LDB = 3`
`INTEGER :: NITS, CMPT, INFO, I, J`
`CHARACTER(1) :: MODE = 'L'`
`REAL(4) :: EPS, ESTM`
`TYPE(S_INTERVAL) :: A(3,3), B(3)`
`. . . . . .`
`DO I = 1, 3`
`DO J = 1, 3`
`IF( I/=J ) THEN`
`A(I,J) = SINTERVAL(0.,2.)`
`ELSE`
`A(I,J) = SINTERVAL(3.5)`
`END IF`
`B(I) = SINTERVAL(-1.,1.)`
`END DO`
`END DO`
`CMPT = 1`
`NITS = 100`
`EPS= 1.E-4`
`. . . . . .`
`CALL SIGEPPS( 'n', 3, A, LDA, B, LDB, CMPT, MODE, ESTM, EPS, NITS, INFO )`

----------------------------------------------------------------------------------------------

To guarantee the completion of the algorithm, the value of the parameter NITS is set equal to 100 (iterations), which is enough for the above specific example. Note that assigning single-precision intervals to the entries of the matrix A and right-hand side vector B is carried out by SINTERVAL function supplied by INTERVAL_ARITHMETIC module.

Parent topic: Routines for Sharp Solution of Interval Systems