dgels(3)
NAME
- DGELS - solve overdetermined or underdetermined real lin
- ear systems involving an M-by-N matrix A, or its transpose, using
- a QR or LQ factorization of A
SYNOPSIS
SUBROUTINE DGELS( TRANS, M, N, NRHS, A, LDA, B, LDB, WORK,
LWORK, INFO )
CHARACTER TRANS
INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS
DOUBLE PRECISION A( LDA, * ), B( LDB, * ),
WORK( * )
PURPOSE
- DGELS solves overdetermined or underdetermined real linear
- systems involving an M-by-N matrix A, or its transpose, using a
- QR or LQ factorization of A. It is assumed that A has full rank.
- The following options are provided:
- 1. If TRANS = 'N' and m >= n: find the least squares so
- lution of
an overdetermined system, i.e., solve the least squares
- problem
minimize || B - A*X ||.
- 2. If TRANS = 'N' and m < n: find the minimum norm solu
- tion of
an underdetermined system A * X = B.
- 3. If TRANS = 'T' and m >= n: find the minimum norm solu
- tion of
an undetermined system A**T * X = B.
- 4. If TRANS = 'T' and m < n: find the least squares solu
- tion of
an overdetermined system, i.e., solve the least squares
- problem
minimize || B - A**T * X ||.
- 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-NRHS right hand side matrix B and the N-by-NRHS solu
- tion matrix X.
ARGUMENTS
- TRANS (input) CHARACTER
- = 'N': the linear system involves A;
= 'T': the linear system involves A**T.
- M (input) INTEGER
The number of rows of the matrix A. M >= 0.
- N (input) INTEGER
The number of columns of the matrix A. N >= 0.
- NRHS (input) INTEGER
The number of right hand sides, i.e., the number
- of columns of the matrices B and X. NRHS >=0.
- A (input/output) DOUBLE PRECISION array, dimension
- (LDA,N)
On entry, the M-by-N matrix A. On exit, if M >=
- N, A is overwritten by details of its QR factorization as re
- turned by DGEQRF; if M < N, A is overwritten by details of its
- LQ factorization as returned by DGELQF.
- LDA (input) INTEGER
The leading dimension of the array A. LDA >=
- max(1,M).
- B (input/output) DOUBLE PRECISION array, dimension
- (LDB,NRHS)
On entry, the matrix B of right hand side vectors,
- stored columnwise; B is M-by-NRHS if TRANS = 'N', or N-by-NRHS if
- TRANS = 'T'. On exit, B is overwritten by the solution vectors,
- stored columnwise: if TRANS = 'N' and m >= n, rows 1 to n of B
- contain the least squares solution vectors; the residual sum of
- squares for the solution in each column is given by the sum of
- squares of elements N+1 to M in that column; if TRANS = 'N' and m
- < n, rows 1 to N of B contain the minimum norm solution vectors;
- if TRANS = 'T' and m >= n, rows 1 to M of B contain the minimum
- norm solution vectors; if TRANS = 'T' and m < n, rows 1 to M of B
- contain the least squares solution vectors; the residual sum of
- squares for the solution in each column is given by the sum of
- squares of elements M+1 to N in that column.
- LDB (input) INTEGER
The leading dimension of the array B. LDB >=
- MAX(1,M,N).
- WORK (workspace/output) DOUBLE PRECISION array, dimen
- sion (LWORK)
On exit, if INFO = 0, WORK(1) returns the optimal
- LWORK.
- LWORK (input) INTEGER
The dimension of the array WORK. LWORK >= max( 1,
- MN + max( MN, NRHS ) ). For optimal performance, LWORK >= max(
- 1, MN + max( MN, NRHS )*NB ). where MN = min(M,N) and NB is the
- optimum block size.
- If LWORK = -1, then a workspace query is assumed;
- the routine only calculates the optimal size of the WORK array,
- returns this value as the first entry of the WORK array, and no
- error message related to LWORK is issued by XERBLA.
- INFO (output) INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an ille
- gal value
- LAPACK version 3.0 15 June 2000