f08an solves linear least squares problems of the form
minxb-Ax2  or  minxb-AHx2,
where A is an m by n complex matrix of full rank, using a QR or LQ factorization of A.

Syntax

C#
public static void f08an(
	string trans,
	int m,
	int n,
	int nrhs,
	Complex[,] a,
	Complex[,] b,
	out int info
)
Visual Basic
Public Shared Sub f08an ( _
	trans As String, _
	m As Integer, _
	n As Integer, _
	nrhs As Integer, _
	a As Complex(,), _
	b As Complex(,), _
	<OutAttribute> ByRef info As Integer _
)
Visual C++
public:
static void f08an(
	String^ trans, 
	int m, 
	int n, 
	int nrhs, 
	array<Complex,2>^ a, 
	array<Complex,2>^ b, 
	[OutAttribute] int% info
)
F#
static member f08an : 
        trans : string * 
        m : int * 
        n : int * 
        nrhs : int * 
        a : Complex[,] * 
        b : Complex[,] * 
        info : int byref -> unit 

Parameters

trans
Type: System..::..String
On entry: if trans="N", the linear system involves A.
If trans="C", the linear system involves AH.
Constraint: trans="N" or "C".
m
Type: System..::..Int32
On entry: m, the number of rows of the matrix A.
Constraint: m0.
n
Type: System..::..Int32
On entry: n, the number of columns of the matrix A.
Constraint: n0.
nrhs
Type: System..::..Int32
On entry: r, the number of right-hand sides, i.e., the number of columns of the matrices B and X.
Constraint: nrhs0.
a
Type: array<NagLibrary..::..Complex,2>[,](,)[,][,]
An array of size [dim1, dim2]
Note: dim1 must satisfy the constraint: dim1max1,m
Note: the second dimension of the array a must be at least max1,n.
On entry: the m by n matrix A.
On exit: if mn, a is overwritten by details of its QR factorization, as returned by f08as.
If m<n, a is overwritten by details of its LQ factorization, as returned by f08av.
b
Type: array<NagLibrary..::..Complex,2>[,](,)[,][,]
An array of size [dim1, dim2]
Note: dim1 must satisfy the constraint: dim1max1,m,n
Note: the second dimension of the array b must be at least max1,nrhs.
On entry: the matrix B of right-hand side vectors, stored in columns; b is m by r if trans="N", or n by r if trans="C".
On exit: b is overwritten by the solution vectors, x, stored in columns:
  • if trans="N" and mn, or trans="C" and m<n, elements 1 to minm,n in each column of b contain the least squares solution vectors; the residual sum of squares for the solution is given by the sum of squares of the modulus of elements minm,n+1 to maxm,n in that column;
  • otherwise, elements 1 to maxm,n in each column of b contain the minimum norm solution vectors.
info
Type: System..::..Int32%
On exit: info=0 unless the method detects an error (see [Error Indicators and Warnings]).

Description

The following options are provided:
1. If trans="N" and mn: find the least squares solution of an overdetermined system, i.e., solve the least squares problem
minxb-Ax2.
2. If trans="N" and m<n: find the minimum norm solution of an underdetermined system Ax=b.
3. If trans="C" and mn: find the minimum norm solution of an undetermined system AHx=b.
4. If trans="C" and m<n: find the least squares solution of an overdetermined system, i.e., solve the least squares problem
minxb-AHx2.
Several right-hand side vectors b and solution vectors x can be handled in a single call; they are stored as the columns of the m by r right-hand side matrix B and the n by r solution matrix X.

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 http://www.netlib.org/lapack/lug
Golub G H and Van Loan C F (1996) Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore

Error Indicators and Warnings

Some error messages may refer to parameters that are dropped from this interface (LDA, LDB) In these cases, an error in another parameter has usually caused an incorrect value to be inferred.
info<0
If info=-i, argument i had an illegal value. An explanatory message is output, and execution of the program is terminated.
info>0
If info=i, diagonal element i of the triangular factor of A is zero, so that A does not have full rank; the least squares solution could not be computed.
ifail=-9000
An error occured, see message report.
ifail=-6000
Invalid Parameters value
ifail=-4000
Invalid dimension for array value
ifail=-8000
Negative dimension for array value
ifail=-6000
Invalid Parameters value
ifail=-6000
Invalid Parameters value

Accuracy

See Section 4.5 of Anderson et al. (1999) for details of error bounds.

Parallelism and Performance

None.

Further Comments

The total number of floating-point operations required to factorize A is approximately 83n23m-n if mn and 83m23n-m otherwise. Following the factorization the solution for a single vector x requires Ominm2,n2 operations.
The real analogue of this method is f08aa.

Example

This example solves the linear least squares problem
minxb-Ax2,
where
A= 0.96-0.81i -0.03+0.96i -0.91+2.06i -0.05+0.41i -0.98+1.98i -1.20+0.19i -0.66+0.42i -0.81+0.56i 0.62-0.46i 1.01+0.02i 0.63-0.17i -1.11+0.60i -0.37+0.38i 0.19-0.54i -0.98-0.36i 0.22-0.20i 0.83+0.51i 0.20+0.01i -0.17-0.46i 1.47+1.59i 1.08-0.28i 0.20-0.12i -0.07+1.23i 0.26+0.26i
and
b= -2.09+1.93i 3.34-3.53i -4.94-2.04i 0.17+4.23i -5.19+3.63i 0.98+2.53i .
The square root of the residual sum of squares is also output.

Example program (C#): f08ane.cs

Example program data: f08ane.d

Example program results: f08ane.r

See Also