NAME sggglm - solve a general Gauss-Markov linear model (GLM) problem SYNOPSIS SUBROUTINE SGGGLM( N, M, P, A, LDA, B, LDB, D, X, Y, WORK, LWORK, INFO ) INTEGER INFO, LDA, LDB, LWORK, M, N, P REAL A( LDA, * ), B( LDB, * ), D( * ), WORK( * ), X( * ), Y( * ) #include <sunperf.h> void sggglm(int n, int m, int p, float *sa, int lda, float *sb, int ldb, float *d, float *sx, float *sy, int *info) ; PURPOSE SGGGLM solves a general Gauss-Markov linear model (GLM) problem: minimize || y ||_2 subject to d = A*x + B*y x where A is an N-by-M matrix, B is an N-by-P matrix, and d is a given N-vector. It is assumed that M <= N <= M+P, and rank(A) = M and rank( A B ) = N. Under these assumptions, the constrained equation is always consistent, and there is a unique solution x and a minimal 2-norm solution y, which is obtained using a generalized QR factorization of A and B. In particular, if matrix B is square nonsingular, then the problem GLM is equivalent to the following weighted linear least squares problem minimize || inv(B)*(d-A*x) ||_2 x where inv(B) denotes the inverse of B. ARGUMENTS N (input) INTEGER The number of rows of the matrices A and B. N >= 0. M (input) INTEGER The number of columns of the matrix A. 0 <= M <= N. P (input) INTEGER The number of columns of the matrix B. P >= N-M. A (input/output) REAL array, dimension (LDA,M) On entry, the N-by-M matrix A. On exit, A is des- troyed. LDA (input) INTEGER The leading dimension of the array A. LDA >= max(1,N). B (input/output) REAL array, dimension (LDB,P) On entry, the N-by-P matrix B. On exit, B is des- troyed. LDB (input) INTEGER The leading dimension of the array B. LDB >= max(1,N). D (input/output) REAL array, dimension (N) On entry, D is the left hand side of the GLM equa- tion. On exit, D is destroyed. X (output) REAL array, dimension (M) Y (output) REAL array, dimension (P) On exit, X and Y are the solutions of the GLM prob- lem. WORK (workspace/output) REAL array, dimension (LWORK) On exit, if INFO = 0, WORK(1) returns the optimal LWORK. LWORK (input) INTEGER The dimension of the array WORK. LWORK >= max(1,N+M+P). For optimum performance, LWORK >= M+min(N,P)+max(N,P)*NB, where NB is an upper bound for the optimal blocksizes for SGEQRF, SGERQF, SORMQR and SORMRQ. INFO (output) INTEGER = 0: successful exit. < 0: if INFO = -i, the i-th argument had an ille- gal value.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |