PDF version (NAG web site
, 64-bit version, 64-bit version)
NAG Toolbox: nag_lapack_dgelsy (f08ba)
Purpose
nag_lapack_dgelsy (f08ba) computes the minimum norm solution to a real linear least squares problem
using a complete orthogonal factorization of
.
is an
by
matrix which may be rank-deficient. Several right-hand side vectors
and solution vectors
can be handled in a single call.
Syntax
[
a,
b,
jpvt,
rank,
info] = f08ba(
a,
b,
jpvt,
rcond, 'm',
m, 'n',
n, 'nrhs_p',
nrhs_p)
[
a,
b,
jpvt,
rank,
info] = nag_lapack_dgelsy(
a,
b,
jpvt,
rcond, 'm',
m, 'n',
n, 'nrhs_p',
nrhs_p)
Description
The right-hand side vectors are stored as the columns of the by matrix and the solution vectors in the by matrix .
nag_lapack_dgelsy (f08ba) first computes a
factorization with column pivoting
with
defined as the largest leading sub-matrix whose estimated condition number is less than
. The order of
,
rank, is the effective rank of
.
Then,
is considered to be negligible, and
is annihilated by orthogonal transformations from the right, arriving at the complete orthogonal factorization
The minimum norm solution is then
where
consists of the first
rank columns of
.
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
Parameters
Compulsory Input Parameters
- 1:
– double array
-
The first dimension of the array
a must be at least
.
The second dimension of the array
a must be at least
.
The by matrix .
- 2:
– double array
-
The first dimension of the array
b must be at least
.
The second dimension of the array
b must be at least
.
The by right-hand side matrix .
- 3:
– int64int32nag_int array
-
The dimension of the array
jpvt
must be at least
If , the th column of is permuted to the front of , otherwise column is a free column.
- 4:
– double scalar
Suggested value:
if the condition number of
a is not known then
(where
is
machine precision, see
nag_machine_precision (x02aj)) is a good choice. Negative values or values less than
machine precision should be avoided since this will cause
a to have an effective
that could be larger than its actual rank, leading to meaningless results.
Used to determine the effective rank of , which is defined as the order of the largest leading triangular sub-matrix in the factorization of , whose estimated condition number is .
Optional Input Parameters
- 1:
– int64int32nag_int scalar
-
Default:
the first dimension of the array
a.
, the number of rows of the matrix .
Constraint:
.
- 2:
– int64int32nag_int scalar
-
Default:
the second dimension of the array
a.
, the number of columns of the matrix .
Constraint:
.
- 3:
– int64int32nag_int scalar
-
Default:
the second dimension of the array
b.
, the number of right-hand sides, i.e., the number of columns of the matrices and .
Constraint:
.
Output Parameters
- 1:
– double array
-
The first dimension of the array
a will be
.
The second dimension of the array
a will be
.
a stores details of its complete orthogonal factorization.
- 2:
– double array
-
The first dimension of the array
b will be
.
The second dimension of the array
b will be
.
The by solution matrix .
- 3:
– int64int32nag_int array
-
The dimension of the array
jpvt will be
If , then the th column of was the th column of .
- 4:
– int64int32nag_int scalar
-
The effective rank of , i.e., the order of the sub-matrix . This is the same as the order of the sub-matrix in the complete orthogonal factorization of .
- 5:
– int64int32nag_int scalar
unless the function detects an error (see
Error Indicators and Warnings).
Error Indicators and Warnings
-
If , parameter had an illegal value on entry. The parameters are numbered as follows:
1:
m, 2:
n, 3:
nrhs_p, 4:
a, 5:
lda, 6:
b, 7:
ldb, 8:
jpvt, 9:
rcond, 10:
rank, 11:
work, 12:
lwork, 13:
info.
It is possible that
info refers to a parameter that is omitted from the MATLAB interface. This usually indicates that an error in one of the other input parameters has caused an incorrect value to be inferred.
Accuracy
See Section 4.5 of
Anderson et al. (1999) for details of error bounds.
Further Comments
The complex analogue of this function is
nag_lapack_zgelsy (f08bn).
Example
This example solves the linear least squares problem
for the solution,
, of minimum norm, where
A tolerance of is used to determine the effective rank of .
Note that the block size (NB) of assumed in this example is not realistic for such a small problem, but should be suitable for large problems.
Open in the MATLAB editor:
f08ba_example
function f08ba_example
fprintf('f08ba example results\n\n');
a = [-0.09, 0.14, -0.46, 0.68, 1.29;
-1.56, 0.20, 0.29, 1.09, 0.51;
-1.48, -0.43, 0.89, -0.71, -0.96;
-1.09, 0.84, 0.77, 2.11, -1.27;
0.08, 0.55, -1.13, 0.14, 1.74;
-1.59, -0.72, 1.06, 1.24, 0.34];
b = [ 7.4;
4.2;
-8.3;
1.8;
8.6;
2.1];
[m,n] = size(a);
jpvt = zeros(n,1,'int64');
rcond = 0.01;
[af, x, jpvt, rank, info] = f08ba( ...
a, b, jpvt, rcond);
disp('Least squares solution');
disp(x');
disp('Tolerance used to estimate the rank of A');
disp(rcond);
disp('Estimated rank of A');
disp(rank);
f08ba example results
Least squares solution
0.6344 0.9699 -1.4402 3.3678 3.3992 -0.0035
Tolerance used to estimate the rank of A
0.0100
Estimated rank of A
4
PDF version (NAG web site
, 64-bit version, 64-bit version)
© The Numerical Algorithms Group Ltd, Oxford, UK. 2009–2015