F08ZBF (DGGGLM) solves a real general Gauss–Markov linear (least squares) model problem.
SUBROUTINE F08ZBF ( |
M, N, P, A, LDA, B, LDB, D, X, Y, WORK, LWORK, INFO) |
INTEGER |
M, N, P, LDA, LDB, LWORK, INFO |
REAL (KIND=nag_wp) |
A(LDA,*), B(LDB,*), D(M), X(N), Y(P), WORK(max(1,LWORK)) |
|
F08ZBF (DGGGLM) solves the real general Gauss–Markov linear model (GLM) problem
where
A is an
m by
n matrix,
B is an
m by
p matrix and
d is an
m element vector. It is assumed that
n≤m≤n+p,
rankA=n and
rankE=m, where
E=
A
B
. Under these assumptions, the problem has a unique solution
x and a minimal
2-norm solution
y, which is obtained using a generalized
QR factorization of the matrices
A and
B.
In particular, if the matrix
B is square and nonsingular, then the GLM problem is equivalent to the weighted linear least squares problem
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
- 1: M – INTEGERInput
On entry: m, the number of rows of the matrices A and B.
Constraint:
M≥0.
- 2: N – INTEGERInput
On entry: n, the number of columns of the matrix A.
Constraint:
0≤N≤M.
- 3: P – INTEGERInput
On entry: p, the number of columns of the matrix B.
Constraint:
P≥M-N.
- 4: A(LDA,*) – REAL (KIND=nag_wp) arrayInput/Output
-
Note: the second dimension of the array
A
must be at least
max1,N.
On entry: the m by n matrix A.
On exit:
A is overwritten.
- 5: LDA – INTEGERInput
On entry: the first dimension of the array
A as declared in the (sub)program from which F08ZBF (DGGGLM) is called.
Constraint:
LDA≥max1,M.
- 6: B(LDB,*) – REAL (KIND=nag_wp) arrayInput/Output
-
Note: the second dimension of the array
B
must be at least
max1,P.
On entry: the m by p matrix B.
On exit:
B is overwritten.
- 7: LDB – INTEGERInput
On entry: the first dimension of the array
B as declared in the (sub)program from which F08ZBF (DGGGLM) is called.
Constraint:
LDB≥max1,M.
- 8: D(M) – REAL (KIND=nag_wp) arrayInput/Output
On entry: the left-hand side vector d of the GLM equation.
On exit:
D is overwritten.
- 9: X(N) – REAL (KIND=nag_wp) arrayOutput
On exit: the solution vector x of the GLM problem.
- 10: Y(P) – REAL (KIND=nag_wp) arrayOutput
On exit: the solution vector y of the GLM problem.
- 11: WORK(max1,LWORK) – REAL (KIND=nag_wp) arrayWorkspace
On exit: if
INFO=0,
WORK1 contains the minimum value of
LWORK required for optimal performance.
- 12: LWORK – INTEGERInput
On entry: the dimension of the array
WORK as declared in the (sub)program from which F08ZBF (DGGGLM) is called.
If
LWORK=-1, 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.
Suggested value:
for optimal performance, LWORK≥N+minM,P+maxM,P×nb, where nb is the optimal block size.
Constraint:
LWORK≥ max1,M+N+P or LWORK=-1.
- 13: INFO – INTEGEROutput
On exit:
INFO=0 unless the routine detects an error (see
Section 6).
For an error analysis, see
Anderson et al. (1992). See also Section 4.6 of
Anderson et al. (1999).
This example solves the weighted least squares problem
where