The OpenNET Project / Index page

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

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

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

stgsja (3)
  • >> stgsja (3) ( Solaris man: Библиотечные вызовы )
  • 
    NAME
         stgsja - compute the generalized singular  value  decomposi-
         tion  (GSVD)  of  two real upper triangular (or trapezoidal)
         matrices A and B
    
    SYNOPSIS
         SUBROUTINE STGSJA( 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
    
         REAL TOLA, TOLB
    
         REAL ALPHA( * ), BETA( * ), A( LDA, * ), B(  LDB,  *  ),  Q(
                   LDQ, * ), U( LDU, * ), V( LDV, * ), WORK( * )
    
    
    
         #include <sunperf.h>
    
         void stgsja(char jobu, char jobv, char jobq, int m,  int  p,
                   int  n,  int  k,  int l, float *sa, int lda, float
                   *sb, int ldb, float tola, float tolb, float  *sal-
                   pha,  float  *sbeta, float *su, int ldu, float *v,
                   int ldv, float  *q,  int  ldq,  int  *ncycle,  int
                   *info) ;
    
    PURPOSE
         STGSJA 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 SGGSVP 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  sub-
                   blocks 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 STGSJA.  See Further details.
    
         A         (input/output) REAL 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) REAL 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) REAL
                   TOLB    (input) REAL TOLA and TOLB are the conver-
                   gence criteria for the Jacobi- Kogbetliantz itera-
                   tion procedure. Generally, they are  the  same  as
                   used   in  the  preprocessing  step,  say  TOLA  =
                   max(M,N)*norm(A)*MACHEPS,          TOLB          =
                   max(P,N)*norm(B)*MACHEPS.
    
         ALPHA     (output) REAL array, dimension (N)
                   BETA    (output)  REAL  array,  dimension  (N)  On
                   exit,  ALPHA  and  BETA  contain  the  generalized
                   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) REAL array, dimension (LDU,M)
                   On entry, if JOBU = 'U', U must contain  a  matrix
                   U1  (usually  the  orthogonal  matrix  returned by
                   SGGSVP).  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) REAL array, dimension (LDV,P)
                   On entry, if JOBV = 'V', V must contain  a  matrix
                   V1  (usually  the  orthogonal  matrix  returned by
                   SGGSVP).  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) REAL array, dimension (LDQ,N)
                   On entry, if JOBQ = 'Q', Q must contain  a  matrix
                   Q1  (usually  the  orthogonal  matrix  returned by
                   SGGSVP).  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) REAL 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 ===============
    
                   STGSJA 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
    Добавить, Поддержать, Вебмастеру