The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

dtgsja (3)
  • >> dtgsja (3) ( Solaris man: Библиотечные вызовы )
  • 
    NAME
         dtgsja - compute the generalized singular  value  decomposi-
         tion  (GSVD)  of  two real upper triangular (or trapezoidal)
         matrices A and B
    
    SYNOPSIS
         SUBROUTINE DTGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A,  LDA,
                   B,  LDB,  TOLA, TOLB, ALPHA, BETA, U, LDU, V, LDV,
                   Q, LDQ, WORK, NCYCLE, INFO )
    
         CHARACTER JOBQ, JOBU, JOBV
    
         INTEGER INFO, K, L, LDA, LDB, LDQ, LDU, LDV, M, N, NCYCLE, P
    
         DOUBLE PRECISION TOLA, TOLB
    
         DOUBLE PRECISION A( LDA, * ), ALPHA( * ), B( LDB, * ), BETA(
                   *  ), Q( LDQ, * ), U( LDU, * ), V( LDV, * ), WORK(
                   * )
    
    
    
         #include <sunperf.h>
    
         void dtgsja(char jobu, char jobv, char jobq, int m,  int  p,
                   int n, int k, int l, double *da, int lda,
                    double *db, int ldb, double  tola,  double  tolb,
                   double  *dalpha,  double  *dbeta,  double *du, int
                   ldu, double *v, int ldv, double *q, int  ldq,  int
                   *ncycle, int *info) ;
    
    PURPOSE
         DTGSJA computes the generalized singular value decomposition
         (GSVD)   of  two  real  upper  triangular  (or  trapezoidal)
         matrices A and B.
    
         On entry, it is assumed that matrices A and B have the  fol-
         lowing  forms,  which  may  be obtained by the preprocessing
         subroutine DGGSVP from a general M-by-N matrix A and  P-by-N
         matrix B:
    
                      N-K-L  K    L
            A =    K ( 0    A12  A13 ) if M-K-L >= 0;
                   L ( 0     0   A23 )
               M-K-L ( 0     0    0  )
    
                    N-K-L  K    L
            A =  K ( 0    A12  A13 ) if M-K-L < 0;
               M-K ( 0     0   A23 )
    
                    N-K-L  K    L
            B =  L ( 0     0   B13 )
               P-L ( 0     0    0  )
    
         where the K-by-K matrix A12 and L-by-L matrix B13  are  non-
         singular upper triangular; A23 is L-by-L upper triangular if
         M-K-L >= 0, otherwise A23 is (M-K)-by-L upper trapezoidal.
    
         On exit,
    
                     U'*A*Q = D1*( 0 R ),    V'*B*Q = D2*( 0 R ),
    
         where U, V and Q are orthogonal  matrices,  Z'  denotes  the
         transpose  of Z, R is a nonsingular upper triangular matrix,
         and D1 and D2 are ``diagonal'' matrices, which  are  of  the
         following structures:
    
         If M-K-L >= 0,
    
                             K  L
                D1 =     K ( I  0 )
                         L ( 0  C )
                     M-K-L ( 0  0 )
    
                           K  L
                D2 = L   ( 0  S )
                     P-L ( 0  0 )
    
                        N-K-L  K    L
           ( 0 R ) = K (  0   R11  R12 ) K
                     L (  0    0   R22 ) L
    
         where
    
           C = diag( ALPHA(K+1), ... , ALPHA(K+L) ),
           S = diag( BETA(K+1),  ... , BETA(K+L) ),
           C**2 + S**2 = I.
    
           R is stored in A(1:K+L,N-K-L+1:N) on exit.
    
         If M-K-L < 0,
    
                        K M-K K+L-M
             D1 =   K ( I  0    0   )
                  M-K ( 0  C    0   )
    
                          K M-K K+L-M
             D2 =   M-K ( 0  S    0   )
                  K+L-M ( 0  0    I   )
                    P-L ( 0  0    0   )
    
                        N-K-L  K   M-K  K+L-M
    
                   M-K ( 0     0   R22  R23  )
    
                 K+L-M ( 0     0    0   R33  )
    
         where
         C = diag( ALPHA(K+1), ... , ALPHA(M) ),
         S = diag( BETA(K+1),  ... , BETA(M) ),
         C**2 + S**2 = I.
    
         R = ( R11 R12 R13 ) is stored in A(1:M, N-K-L+1:N)  and  R33
         is stored
             (  0  R22 R23 )
         in B(M-K+1:L,N+M-K-L+1:N) on exit.
    
         The computation of the orthogonal transformation matrices U,
         V  or  Q  is  optional.  These matrices may either be formed
         explicitly,  or  they  may  be  postmultiplied  into   input
         matrices U1, V1, or Q1.
    
    
    ARGUMENTS
         JOBU      (input) CHARACTER*1
                   = 'U':  U must contain an orthogonal matrix U1  on
                   entry, and the product U1*U is returned; = 'I':  U
                   is initialized to the unit matrix, and the orthog-
                   onal  matrix  U is returned; = 'N':  U is not com-
                   puted.
    
         JOBV      (input) CHARACTER*1
                   = 'V':  V must contain an orthogonal matrix V1  on
                   entry, and the product V1*V is returned; = 'I':  V
                   is initialized to the unit matrix, and the orthog-
                   onal  matrix  V is returned; = 'N':  V is not com-
                   puted.
    
         JOBQ      (input) CHARACTER*1
                   = 'Q':  Q must contain an orthogonal matrix Q1  on
                   entry, and the product Q1*Q is returned; = 'I':  Q
                   is initialized to the unit matrix, and the orthog-
                   onal  matrix  Q is returned; = 'N':  Q is not com-
                   puted.
    
         M         (input) INTEGER
                   The number of rows of the matrix A.  M >= 0.
    
         P         (input) INTEGER
                   The number of rows of the matrix B.  P >= 0.
    
         N         (input) INTEGER
                   The number of columns of the matrices A and B.   N
                   >= 0.
    
         K         (input) INTEGER
                   L        (input)  INTEGER  K  and  L  specify  the
                   subblocks in the input matrices A and B:
                   A23  =   A(K+1:MIN(K+L,M),N-L+1:N)   and   B13   =
                   B(1:L,N-L+1:N)  of A and B, whose GSVD is going to
                   be computed by DTGSJA.  See Further details.
    
         A         (input/output) DOUBLE PRECISION  array,  dimension
                   (LDA,N)
                   On entry, the M-by-N  matrix  A.   On  exit,  A(N-
                   K+1:N,1:MIN(K+L,M)   )   contains  the  triangular
                   matrix R or part of R.  See Purpose for details.
    
         LDA       (input) INTEGER
                   The leading dimension  of  the  array  A.  LDA  >=
                   max(1,M).
    
         B         (input/output) DOUBLE PRECISION  array,  dimension
                   (LDB,N)
                   On entry, the P-by-N matrix B.  On exit, if neces-
                   sary, B(M-K+1:L,N+M-K-L+1:N) contains a part of R.
                   See Purpose for details.
    
         LDB       (input) INTEGER
                   The leading dimension  of  the  array  B.  LDB  >=
                   max(1,P).
    
         TOLA      (input) DOUBLE PRECISION
                   TOLB    (input) DOUBLE PRECISION TOLA and TOLB are
                   the convergence criteria for the Jacobi- Kogbetli-
                   antz iteration procedure. Generally, they are  the
                   same as used in the preprocessing step, say TOLA =
                   max(M,N)*norm(A)*MAZHEPS,          TOLB          =
                   max(P,N)*norm(B)*MAZHEPS.
    
         ALPHA     (output) DOUBLE PRECISION array, dimension (N)
                   BETA    (output) DOUBLE PRECISION array, dimension
                   (N)  On  exit, ALPHA and BETA contain the general-
                   ized singular value pairs of A and B; ALPHA(1:K) =
                   1,
                   BETA(1:K)  = 0, and if M-K-L >= 0,  ALPHA(K+1:K+L)
                   = diag(C),
                   BETA(K+1:K+L)   =  diag(S),  or  if  M-K-L  <   0,
                   ALPHA(K+1:M)= C, ALPHA(M+1:K+L)= 0
                   BETA(K+1:M) = S, BETA(M+1:K+L) = 1.   Furthermore,
                   if K+L < N, ALPHA(K+L+1:N) = 0 and
                   BETA(K+L+1:N)  = 0.
    
         U         (input/output) DOUBLE PRECISION  array,  dimension
                   (LDU,M)
                   On entry, if JOBU = 'U', U must contain  a  matrix
                   U1  (usually  the  orthogonal  matrix  returned by
                   DGGSVP).  On exit, if JOBU = 'I', U  contains  the
                   orthogonal matrix U; if JOBU = 'U', U contains the
                   product U1*U.  If JOBU = 'N', U is not referenced.
    
         LDU       (input) INTEGER
                   The leading dimension  of  the  array  U.  LDU  >=
                   max(1,M) if JOBU = 'U'; LDU >= 1 otherwise.
    
         V         (input/output) DOUBLE PRECISION  array,  dimension
                   (LDV,P)
                   On entry, if JOBV = 'V', V must contain  a  matrix
                   V1  (usually  the  orthogonal  matrix  returned by
                   DGGSVP).  On exit, if JOBV = 'I', V  contains  the
                   orthogonal matrix V; if JOBV = 'V', V contains the
                   product V1*V.  If JOBV = 'N', V is not referenced.
    
         LDV       (input) INTEGER
                   The leading dimension  of  the  array  V.  LDV  >=
                   max(1,P) if JOBV = 'V'; LDV >= 1 otherwise.
    
         Q         (input/output) DOUBLE PRECISION  array,  dimension
                   (LDQ,N)
                   On entry, if JOBQ = 'Q', Q must contain  a  matrix
                   Q1  (usually  the  orthogonal  matrix  returned by
                   DGGSVP).  On exit, if JOBQ = 'I', Q  contains  the
                   orthogonal matrix Q; if JOBQ = 'Q', Q contains the
                   product Q1*Q.  If JOBQ = 'N', Q is not referenced.
    
         LDQ       (input) INTEGER
                   The leading dimension  of  the  array  Q.  LDQ  >=
                   max(1,N) if JOBQ = 'Q'; LDQ >= 1 otherwise.
    
         WORK      (workspace)  DOUBLE  PRECISION  array,   dimension
                   (2*N)
    
         NCYCLE    (output) INTEGER
                   The number of cycles required for convergence.
    
         INFO      (output) INTEGER
                   = 0:  successful exit
                   < 0:  if INFO = -i, the i-th argument had an ille-
                   gal value.
                   = 1:  the procedure does not converge after  MAXIT
                   cycles.
    
    PARAMETERS
         MAXIT   INTEGER MAXIT specifies the  total  loops  that  the
                   iterative  procedure  may  take.  If  after  MAXIT
                   cycles, the routine fails to converge,  we  return
                   INFO = 1.
    
                   Further Details ===============
    
                   DTGSJA essentially uses a variant of  Kogbetliantz
                   algorithm to reduce min(L,M-K)-by-L triangular (or
                   trapezoidal) matrix A23 and L-by-L matrix  B13  to
                   the form:
    
                   U1'*A13*Q1 = C1*R1; V1'*B13*Q1 = S1*R1,
    
                   where U1, V1 and Q1 are orthogonal matrix, and  Z'
                   is  the  transpose  of  Z.  C1 and S1 are diagonal
                   matrices satisfying
    
                   C1**2 + S1**2 = I,
    
                   and R1 is an L-by-L nonsingular  upper  triangular
                   matrix.
    
    
    
    


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру