NAG Library Function Document
nag_dgglse (f08zac)
 
1
 Purpose
nag_dgglse (f08zac) solves a real linear equality-constrained least squares problem.
 
2
 Specification
| #include <nag.h> | 
 
| #include <nagf08.h> | 
 
 
 
| void  | 
nag_dgglse (Nag_OrderType order,
Integer m,
Integer n,
Integer p,
double a[],
Integer pda,
double b[],
Integer pdb,
double c[],
double d[],
double x[],
NagError *fail) | 
 
 
 
 | 
 
3
 Description
nag_dgglse (f08zac) solves the real linear equality-constrained least squares (LSE) problem
where 
 is an 
 by 
 matrix, 
 is a 
 by 
 matrix, 
 is an 
 element vector and 
 is a 
 element vector.  It is assumed that 
, 
 and 
, where 
.  These conditions ensure that the LSE problem has a unique solution, which is obtained using a generalized 
 factorization of the matrices 
 and 
.
 
 
4
 References
Anderson E, Bai Z, Bischof C, Blackford S, Demmel J, Dongarra J J, Du Croz J J, Greenbaum A, Hammarling S, McKenney A and Sorensen D (1999)  LAPACK Users' Guide (3rd Edition) SIAM, Philadelphia 
Anderson E, Bai Z and Dongarra J (1992)  Generalized QR factorization and its applications Linear Algebra Appl. (Volume 162–164) 243–271 
Eldèn L (1980)  Perturbation theory for the least squares problem with linear equality constraints SIAM J. Numer. Anal. 17 338–350 
 
5
 Arguments
- 1:
  
      – Nag_OrderTypeInput
 - 
On entry: the 
order argument specifies the two-dimensional storage scheme being used, i.e., row-major ordering or column-major ordering. C language defined storage is specified by 
. See 
Section 3.3.1.3 in How to Use the NAG Library and its Documentation for a more detailed explanation of the use of this argument.
 
Constraint:
   or .
 - 2:
  
      – IntegerInput
 - 
On entry: , the number of rows of the matrix .
Constraint:
  .
 - 3:
  
      – IntegerInput
 - 
On entry: , the number of columns of the matrices  and .
Constraint:
  .
 - 4:
  
      – IntegerInput
 - 
On entry: , the number of rows of the matrix .
Constraint:
  .
 - 5:
  
      – doubleInput/Output
 - 
Note: the dimension, 
dim, of the array 
a
must be at least
-  when 
	;
 
-  when 
  .
 
 
The 
th element of the matrix 
 is stored in 
-  when ;
 
-  when .
 
 
On entry: the  by  matrix .
On exit: 
a is overwritten.
 
 - 6:
  
      – IntegerInput
 - 
On entry: the stride separating row or column elements (depending on the value of 
order) in  the array 
a.
 
Constraints:
   
 
- if , 
;
 
- if , .
 
 
 - 7:
  
      – doubleInput/Output
 - 
Note: the dimension, 
dim, of the array 
b
must be at least
-  when 
	;
 
-  when 
  .
 
 
The 
th element of the matrix 
 is stored in 
-  when ;
 
-  when .
 
 
On entry: the  by  matrix .
On exit: 
b is overwritten.
 
 - 8:
  
      – IntegerInput
 - 
On entry: the stride separating row or column elements (depending on the value of 
order) in  the array 
b.
 
Constraints:
   
 
- if , 
;
 
- if , .
 
 
 - 9:
  
      – doubleInput/Output
 - 
On entry: the right-hand side vector  for the least squares part of the LSE problem.
On exit: the residual sum of squares for the solution vector  is given by the sum of squares of elements ; the remaining elements are overwritten.
 - 10:
  
    – doubleInput/Output
 - 
On entry: the right-hand side vector  for the equality constraints.
On exit: 
d is overwritten.
 
 - 11:
  
    – doubleOutput
 - 
On exit: the solution vector  of the LSE problem.
 - 12:
  
    – NagError *Input/Output
 - 
The NAG error argument (see 
Section 3.7 in How to Use the NAG Library and its Documentation).
 
 
 
6
 Error Indicators and Warnings
- NE_ALLOC_FAIL
 
- 
Dynamic memory allocation failed.
      
      See 
Section 2.3.1.2  in How to Use the NAG Library and its Documentation for further information.
 
 
- NE_BAD_PARAM
 
- 
On entry, argument   had an illegal value.
 
- NE_INT
 
- 
On entry, .
Constraint: .
On entry, .
Constraint: .
On entry, .
Constraint: .
On entry, .
Constraint: .
 
- NE_INT_2
 
- 
On entry,  and .
Constraint: .
On entry,  and .
Constraint: .
On entry,  and .
Constraint: .
On entry,  and .
Constraint: .
 
- NE_INT_3
 
- 
On entry, ,  and .
Constraint: .
 
- NE_INTERNAL_ERROR
 
- 
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact 
NAG for assistance.
	See 
Section 2.7.6  in How to Use the NAG Library and its Documentation for further information.
 
 
- NE_NO_LICENCE
 
- 
Your licence key may have expired or may not have been installed correctly.
      
      See 
Section 2.7.5 in How to Use the NAG Library and its Documentation for further information.
 
 
- NE_SINGULAR
 
- 
The  by  part of the upper trapezoidal factor  associated with  in the generalized  factorization of the pair  is singular, so that the rank of the matrix () comprising the rows of  and  is less than ; the least squares solutions could not be computed.
The upper triangular factor  associated with  in the generalized  factorization of the pair  is singular, so that ; the least squares solution could not be computed.
 
 
7
 Accuracy
For an error analysis, see 
Anderson et al. (1992) and 
Eldèn (1980). See also Section 4.6 of 
Anderson et al. (1999).
 
 
8
 Parallelism and Performance
nag_dgglse (f08zac) is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
nag_dgglse (f08zac) makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information.
Please consult the 
x06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this function. Please also consult the 
Users' Note for your implementation for any additional implementation-specific information.
 
When , the total number of floating-point operations is approximately ; if , the number reduces to approximately .
nag_opt_lin_lsq (e04ncc) may also be used to solve LSE problems.  It differs from 
nag_dgglse (f08zac) in that it uses an iterative (rather than direct) method, and that it allows general upper and lower bounds to be specified for the variables 
 and the linear constraints 
.
 
 
10
 Example
This example solves the least squares problem
where
and
The constraints  correspond to  and .
 
10.1
 Program Text
Program Text (f08zace.c)
 
10.2
 Program Data
Program Data (f08zace.d)
 
10.3
 Program Results
Program Results (f08zace.r)