NAG Library Function Document nag_zgelsy (f08bnc)

Similar documents
NAG Library Function Document nag_zgelss (f08knc)

NAG Library Function Document nag_dgelsd (f08kcc)

NAG Library Function Document nag_ztzrzf (f08bvc)

NAG Library Function Document nag_zhpev (f08gnc)

NAG Library Function Document nag_dstev (f08jac)

NAG Library Function Document nag_dspsv (f07pac)

NAG Library Function Document nag_dgetrf (f07adc)

NAG Library Function Document nag_zheevx (f08fpc)

NAG Library Function Document nag_dsygv (f08sac)

NAG Library Function Document nag_dgglse (f08zac)

NAG Library Function Document nag_real_gen_matrix_exp (f01ecc)

NAG Library Function Document nag_dgttrs (f07cec)

NAG Library Function Document nag_dsbev (f08hac)

NAG Library Function Document nag_complex_gen_lin_solve (f04cac)

NAG Library Function Document nag_real_sym_posdef_tridiag_lin_solve (f04bgc)

NAG Library Function Document nag_herm_posdef_tridiag_lin_solve (f04cgc)

NAG Library Function Document nag_dger (f16pmc)

NAG Library Function Document nag_complex_tridiag_lin_solve (f04ccc)

NAG Library Function Document nag_zhfrk (f16zqc)

NAG Library Function Document nag_zsymv (f16tac)

NAG Library Function Document nag_dtrsyl (f08qhc)

NAG Library Function Document nag_dtpttr (f01vcc)

NAG Library Function Document nag_zhbevx (f08hpc)

NAG Library Function Document nag_dtrttf (f01vec)

NAG Library Function Document nag_ztrttf (f01vfc)

NAG Library Function Document nag_ztgsen (f08yuc)

NAG Library Function Document nag_dgges (f08xac)

NAG Library Function Document. nag_matop_complex_gen_matrix_cond_num

NAG Library Function Document nag_matop_complex_gen_matrix_fun_num (f01flc)

NAG Library Function Document nag_matop_complex_gen_matrix_cond_sqrt (f01kdc)

NAG Library Function Document nag_dsytrf (f07mdc)

NAG Library Function Document. nag_matop_real_gen_matrix_cond_num

NAG Library Function Document nag_zpbequ (f07htc)

NAG Library Function Document nag_zggesx (f08xpc)

NAG C Library Function Document nag_dgbtrs (f07bec)

NAG Library Function Document nag_dgetri (f07ajc)

NAG C Library Function Document nag_zgemv (f16sac)

NAG C Library Function Document nag_dgemv (f16pac)

NAG Library Function Document nag_dtr_load (f16qgc)

NAG Library Function Document nag_zhpr2 (f16ssc)

NAG Library Function Document nag_dspr (f16pqc)

NAG Library Function Document nag_dtfttp (f01vlc)

NAG C Library Function Document nag_binary_factor_service (g11sbc)

NAG Library Function Document nag_dgb_norm (f16rbc)

NAG C Library Function Document nag_zger (f16smc)

NAG Library Function Document nag_ztfttp (f01vmc)

NAG Library Function Document nag_matop_real_gen_matrix_fun_num (f01elc)

NAG Library Function Document nag_robust_m_corr_user_fn_no_derr (g02hmc)

NAG Library Function Document nag_dtrmv (f16pfc)

NAG Library Function Document nag_robust_m_corr_user_fn (g02hlc)

NAG Library Function Document nag_rand_copula_normal (g05rdc)

NAG Library Function Document nag_dtpsv (f16plc)

NAG C Library Function Document nag_zhemv (f16scc)

NAG Library Function Document nag_superlu_lu_factorize (f11mec)

NAG Library Function Document nag_dsf_norm (f16rkc)

NAG C Library Function Document nag_zsytri (f07nwc)

NAG C Library Function Document nag_linf_fit (e02gcc)

NAG Library Function Document nag_dsymv (f16pcc)

NAG Library Function Document nag_dgbmv (f16pbc)

NAG Library Function Document nag_bsm_price (s30aac)

NAG Library Function Document nag_ztbcon (f07vuc)

NAG Library Function Document nag_zaxpby (f16gcc)

NAG Library Function Document nag_5d_shep_eval (e01tnc)

NAG Library Function Document nag_durbin_watson_stat (g02fcc)

NAG C Library Function Document nag_zspcon (f07quc)

NAG Library Function Document nag_dpbtrf (f07hdc)

NAG Library Function Document nag_rgsn_matrix_multi_normal (g05lyc)

NAG Library Function Document nag_sparse_nherm_jacobi (f11dxc)

NAG C Library Function Document nag_zhpmv (f16sec)

NAG Library Function Document nag_rngs_copula_students_t (g05rbc)

NAG Library Function Document nag_nd_shep_eval (e01znc)

NAG Library Function Document nag_sum_convcorr_real (c06fkc)

NAG C Library Function Document nag_dspcon (f07pgc)

NAG C Library Function Document nag_zhbmv (f16sdc)

NAG Library Function Document nag_tsa_dickey_fuller_unit (g13awc)

NAG Fortran Library Routine Document F08KAF (DGELSS).1

NAG Library Function Document nag_mldwt_2d (c09ecc)

NAG C Library Function Document nag_dgbmv (f16pbc)

NAG Library Function Document nag_all_regsn (g02eac)

NAG C Library Function Document nag_surviv_risk_sets (g12zac)

NAG Library Function Document nag_prob_durbin_watson (g01epc)

NAG Library Function Document nag_sum_sqs_update (g02btc)

NAG Library Function Document nag_zhpr2 (f16ssc)

NAG C Library Function Document nag_dsbmv (f16pdc)

NAG Library Function Document nag_4d_shep_eval (e01tlc)

NAG Library Function Document nag_full_step_regsn (g02efc)

NAG Library Function Document nag_mv_promax (g03bdc)

NAG C Library Function Document nag_rank_regsn (g08rac)

NAG Library Function Document nag_legendre_p (s22aac)

NAG Library Function Document nag_zero_nonlin_eqns_rcomm (c05qdc)

NAG Library Function Document nag_sum_fft_real_3d (c06pyc)

NAG Library Function Document nag_friedman_test (g08aec)

NAG Library Function Document nag_lars_param (g02mcc)

NAG Library Function Document nag_binomial_ci (g07aac)

NAG Library Function Document nag_rngs_varma_time_series (g05pcc)

NAG C Library Function Document nag_rngs_varma_time_series (g05pcc)

NAG C Library Function Document nag_zhsein (f08pxc)

NAG Library Function Document nag_1d_cheb_fit_constr (e02agc)

NAG Library Function Document nag_regsn_mult_linear_upd_model (g02ddc)

NAG Library Function Document nag_outlier_peirce (g07gac)

Transcription:

NAG Library Function Document nag_zgelsy () 1 Purpose nag_zgelsy () computes the minimum norm solution to a complex linear least squares problem minkb Axk 2 x using a complete orthogonal factorization of A. A is an m by n matrix which may be rank-deficient. Several right-hand side vectors b and solution vectors x can be handled in a single call. 2 Specification #include <nag.h> #include <nagf08.h> void nag_zgelsy (Nag_OrderType order, Integer m, Integer n, Integer nrhs, Complex a[], Integer pda, Complex b[], Integer pdb, Integer jpvt[], double rcond, Integer *rank, NagError *fail) 3 Description The right-hand side vectors are stored as the columns of the m by r matrix B and the solution vectors in the n by r matrix X. nag_zgelsy () first computes a QR factorization with column pivoting AP ¼ Q R 11 R 12 ; 0 R 22 with R 11 defined as the largest leading sub-matrix whose estimated condition number is less than 1=rcond. The order of R 11, rank, is the effective rank of A. Then, R 22 is considered to be negligible, and R 12 is annihilated by orthogonal transformations from the right, arriving at the complete orthogonal factorization AP ¼ Q T 11 0 Z: 0 0 The minimum norm solution is then X ¼ PZ H T 11 1QH 1 b 0 where Q 1 consists of the first rank columns of Q. 4 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.1

NAG Library Manual 5 Arguments 1: order Nag_OrderType Input On entry: theorder argument specifies the two-dimensional storage scheme being used, i.e., rowmajor ordering or column-major ordering. C language defined storage is specified by order ¼ Nag RowMajor. See Section 3.2.1.3 in the Essential Introduction for a more detailed explanation of the use of this argument. Constraint: order ¼ Nag RowMajor or Nag ColMajor. 2: m Integer Input On entry: m, the number of rows of the matrix A. Constraint: m 0. 3: n Integer Input On entry: n, the number of columns of the matrix A. Constraint: n 0. 4: nrhs Integer Input On entry: r, the number of right-hand sides, i.e., the number of columns of the matrices B and X. Constraint: nrhs 0. 5: a½dimš Complex Input/Output Note: the dimension, dim, ofthearrayamust be at least maxð1; pda nþ when order ¼ Nag ColMajor; maxð1; m pdaþ when order ¼ Nag RowMajor. The ði; jþth element of the matrix A is stored in a½ðj 1Þpda þ i 1Š when order ¼ Nag ColMajor; a½ði 1Þpda þ j 1Š when order ¼ Nag RowMajor. On entry: them by n matrix A. On exit: a has been overwritten by details of its complete orthogonal factorization. 6: pda Integer Input On entry: the stride separating row or column elements (depending on the value of order) inthe array a. Constraints: if order ¼ Nag ColMajor, pda maxð1; mþ; if order ¼ Nag RowMajor, pda maxð1; nþ. 7: b½dimš Complex Input/Output Note: the dimension, dim, ofthearraybmust be at least maxð1; pdb nrhsþ when order ¼ Nag ColMajor; maxð1; maxð1; m; nþpdbþ when order ¼ Nag RowMajor. The ði; jþth element of the matrix B is stored in b½ðj 1Þ pdb þ i 1Š when order ¼ Nag ColMajor; b½ði 1Þpdb þ j 1Š when order ¼ Nag RowMajor. On entry: them by r right-hand side matrix B. On exit: then by r solution matrix X..2

8: pdb Integer Input On entry: the stride separating row or column elements (depending on the value of order) inthe array b. Constraints: if order ¼ Nag ColMajor, pdb maxð1; m; nþ; if order ¼ Nag RowMajor, pdb maxð1; nrhsþ. 9: jpvt½dimš Integer Input/Output Note: the dimension, dim, ofthearrayjpvt must be at least maxð1; nþ. On entry: if jpvt½i 1Š 6¼ 0, the ith column of A is permuted to the front of AP, otherwise column i is a free column. On exit: ifjpvt½i 1Š ¼k, then the ith column of AP was the kth column of A. 10: rcond double Input On entry: used to determine the effective rank of A, which is defined as the order of the largest leading triangular sub-matrix R 11 in the QR factorization of A, whose estimated condition number is < 1=rcond. p Suggested value: if the condition number of a is not known then rcond ¼ ffiffiffiffiffiffiffiffiffiffiffi ðþ=2 (where is machine precision, see nag_machine_precision (X02AJC)) is a good choice. Negative values or values less than machine precision should be avoided since this will cause a to have an effective rank ¼ minðm; nþ that could be larger than its actual rank, leading to meaningless results. 11: rank Integer* Output On exit: the effective rank of A, i.e., the order of the sub-matrix R 11.Thisisthesameastheorder of the sub-matrix T 11 in the complete orthogonal factorization of A. 12: fail NagError* Input/Output The NAG error argument (see Section 3.6 in the Essential Introduction). 6 Error Indicators and Warnings NE_ALLOC_FAIL Dynamic memory allocation failed. See Section 3.2.1.2 in the Essential Introduction for further information. NE_BAD_PARAM On entry, argument NE_INT On entry, m ¼ hvaluei. Constraint: m 0. On entry, n ¼ hvaluei. Constraint: n 0. On entry, nrhs ¼ hvaluei. Constraint: nrhs 0. On entry, pda ¼ hvaluei. Constraint: pda > 0. On entry, pdb ¼ hvaluei. Constraint: pdb > 0. hvaluei had an illegal value..3

NAG Library Manual NE_INT_2 On entry, pda ¼ hvaluei and m ¼ hvaluei. Constraint: pda maxð1; mþ. On entry, pda ¼ hvaluei and n ¼ hvaluei. Constraint: pda maxð1; nþ. On entry, pdb ¼ hvaluei and nrhs ¼ hvaluei. Constraint: pdb maxð1; nrhsþ. NE_INT_3 On entry, pdb ¼ hvaluei, m ¼ hvaluei and n ¼ hvaluei. Constraint: pdb maxð1; m; nþ. NE_INTERNAL_ERROR An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance. An unexpected error has been triggered by this function. Please contact NAG. See Section 3.6.6 in the Essential Introduction for further information. NE_NO_LICENCE Your licence key may have expired or may not have been installed correctly. See Section 3.6.5 in the Essential Introduction for further information. 7 Accuracy See Section 4.5 of Anderson et al. (1999) for details of error bounds. 8 Parallelism and Performance nag_zgelsy () is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library. nag_zgelsy () makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information. Please consult the X06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this function. Please also consult the Users Note for your implementation for any additional implementation-specific information. 9 Further Comments The real analogue of this function is nag_dgelsy (f08bac). 10 Example This example solves the linear least squares problem minkb Axk 2 for the solution, x, of minimum norm, where 0 1 0:47 0:34i 0:40 þ 0:54i 0:60 þ 0:01i 0:80 1:02i 0:32 0:23i 0:05 þ 0:20i 0:26 0:44i 0:43 þ 0:17i A ¼ B 0:35 0:60i 0:52 0:34i 0:87 0:11i 0:34 0:09i C @ 0:89 þ 0:71i 0:45 0:45i 0:02 0:57i 1:14 0:78i A 0:19 þ 0:06i 0:11 0:85i 1:44 þ 0:80i 0:07 þ 1:14i x.4

and 0 1 1:08 2:59i 2:61 1:49i b ¼ B 3:13 3:61i C @ 7:33 8:01i A : 9:12 þ 7:63i A tolerance of 0:01 is used to determine the effective rank of A. 10.1 Program Text /* nag_zgelsy () Example Program. * * Copyright 2014 Numerical Algorithms Group. * * Mark 23, 2011. */ #include <stdio.h> #include <nag.h> #include <nag_stdlib.h> #include <nagf08.h> #include <nagf16.h> int main(void) /* Scalars */ double rcond; Integer exit_status = 0, i, j, m, n, nrhs, pda, pdb, rank; /* Arrays */ Complex *a = 0, *b = 0; Integer *jpvt = 0; /* Nag Types */ Nag_OrderType order; NagError fail; #ifdef NAG_COLUMN_MAJOR #define A(I, J) a[(j - 1) * pda + I - 1] #define B(I, J) b[(j - 1) * pdb + I - 1] order = Nag_ColMajor; #define A(I, J) a[(i - 1) * pda + J - 1] #define B(I, J) b[(i - 1) * pdb + J - 1] order = Nag_RowMajor; INIT_FAIL(fail); printf("nag_zgelsy () Example Program Results\n\n"); /* Skip heading in data file */ scanf_s("%*[^\n]"); scanf("%*[^\n]"); scanf_s("%"nag_ifmt"%"nag_ifmt"%"nag_ifmt"%*[^\n]", &m, &n, &nrhs); scanf("%"nag_ifmt"%"nag_ifmt"%"nag_ifmt"%*[^\n]", &m, &n, &nrhs); /* Allocate memory */ if (!(a = NAG_ALLOC(m * n, Complex))!(b = NAG_ALLOC(m * nrhs, Complex))!(jpvt = NAG_ALLOC(n, Integer))) printf("allocation failure\n");.5

NAG Library Manual exit_status = -1; goto END; #ifdef NAG_COLUMN_MAJOR pda = m; pdb = m; pda = n; pdb = nrhs; /* Read A and B from data file */ for (i = 1; i <= m; ++i) for (j = 1; j <= n; ++j) scanf_s(" ( %lf, %lf )", &A(i, j).re, &A(i, j).im); scanf(" ( %lf, %lf )", &A(i, j).re, &A(i, j).im); scanf_s("%*[^\n]"); scanf("%*[^\n]"); for (i = 1; i <= m; ++i) for (j = 1; j <= nrhs; ++j) scanf_s(" ( %lf, %lf )", &B(i, j).re, &B(i, j).im); scanf(" ( %lf, %lf )", &B(i, j).re, &B(i, j).im); scanf_s("%*[^\n]"); scanf("%*[^\n]"); /* nag_iload (f16dbc). * Initialize jpvt to be zero so that all columns are free. */ nag_iload(n, 0, jpvt, 1, &fail); if (fail.code!= NE_NOERROR) printf("error from nag_iload (f16dbc).\n%s\n", fail.message); exit_status = 1; goto END; /* Choose rcond to reflect the relative accuracy of the input data */ rcond = 0.01; /* nag_zgelsy (). * Solve the least squares problem min( norm2(b - Ax) ) for the x * of minimum norm. */ nag_zgelsy(order, m, n, nrhs, a, pda, b, pdb, jpvt, rcond, &rank, &fail); if (fail.code!= NE_NOERROR) printf("error from nag_zgelsy ().\n%s\n", fail.message); exit_status = 1; goto END; /* Print solution */ printf("least squares solution\n"); for (i = 1; i <= n; ++i) for (j = 1; j <= nrhs; ++j) printf("(%7.4f, %7.4f)%s", B(i, j).re, B(i, j).im, j%4 == 0?"\n":" "); printf("\n");.6

/* Print the effective rank of A */ printf("\ntolerance used to estimate the rank of A\n"); printf("%11.2e\n", rcond); printf("estimated rank of A\n"); printf("%6"nag_ifmt"\n", rank); END: NAG_FREE(a); NAG_FREE(b); NAG_FREE(jpvt); return exit_status; #undef #undef A B 10.2 Program Data nag_zgelsy () Example Program Data 5 4 1 :Values of m, n and nrhs ( 0.47,-0.34) (-0.40, 0.54) ( 0.60, 0.01) ( 0.80,-1.02) (-0.32,-0.23) (-0.05, 0.20) (-0.26,-0.44) (-0.43, 0.17) ( 0.35,-0.60) (-0.52,-0.34) ( 0.87,-0.11) (-0.34,-0.09) ( 0.89, 0.71) (-0.45,-0.45) (-0.02,-0.57) ( 1.14,-0.78) (-0.19, 0.06) ( 0.11,-0.85) ( 1.44, 0.80) ( 0.07, 1.14) :End of matrix A (-1.08,-2.59) (-2.61,-1.49) ( 3.13,-3.61) ( 7.33,-8.01) ( 9.12, 7.63) :End of vector b 10.3 Program Results nag_zgelsy () Example Program Results Least squares solution ( 1.1669, -3.3224) ( 1.3486, 5.5027) ( 4.1764, 2.3435) ( 0.6467, 0.0107) Tolerance used to estimate the rank of A 1.00e-02 Estimated rank of A 3.7 (last)