The OpenNET Project / Index page

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

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

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

sstebz (3)
  • >> sstebz (3) ( Solaris man: Библиотечные вызовы )
  • 
    NAME
         sstebz - compute the eigenvalues of a symmetric  tridiagonal
         matrix T
    
    SYNOPSIS
         SUBROUTINE SSTEBZ( RANGE, ORDER, N, VL, VU, IL, IU,  ABSTOL,
                   D,  E,  M, NSPLIT, W, IBLOCK, ISPLIT, WORK, IWORK,
                   INFO )
    
         CHARACTER ORDER, RANGE
    
         INTEGER IL, INFO, IU, M, N, NSPLIT
    
         REAL ABSTOL, VL, VU
    
         INTEGER IBLOCK( * ), ISPLIT( * ), IWORK( * )
    
         REAL D( * ), E( * ), W( * ), WORK( * )
    
    
    
         #include <sunperf.h>
    
         void sstebz(char range, char order, int n, float  vl,  float
                   vu,  int il, int iu, float abstol, float *d, float
                   *e, int *m, int *nsplit, float  *w,  int  *iblock,
                   int *isplit, int *info) ;
    
    PURPOSE
         SSTEBZ computes the eigenvalues of a  symmetric  tridiagonal
         matrix  T.  The user may ask for all eigenvalues, all eigen-
         values in the half-open interval  (VL,  VU],  or  the  IL-th
         through IU-th eigenvalues.
    
         To avoid overflow, the matrix must be scaled so that its
         largest element is no greater than overflow**(1/2) *
         underflow**(1/4) in absolute value, and for greatest
         accuracy, it should not be much smaller than that.
    
         See W. Kahan "Accurate Eigenvalues of a Symmetric  Tridiago-
         nal Matrix", Report CS41, Computer Science Dept., Stanford
         University, July 21, 1966.
    
    
    ARGUMENTS
         RANGE     (input) CHARACTER
                   = 'A': ("All")   all eigenvalues will be found.
                   = 'V': ("Value") all eigenvalues in the  half-open
                   interval (VL, VU] will be found.  = 'I': ("Index")
                   the IL-th through IU-th eigenvalues (of the entire
                   matrix) will be found.
    
         ORDER     (input) CHARACTER
                   =  'B':  ("By  Block")  the  eigenvalues  will  be
                   grouped  by  split-off  block (see IBLOCK, ISPLIT)
                   and ordered from smallest to  largest  within  the
                   block.   =  'E': ("Entire matrix") the eigenvalues
                   for the entire matrix will be ordered  from  smal-
                   lest to largest.
    
         N         (input) INTEGER
                   The order of the tridiagonal matrix T.  N >= 0.
    
         VL        (input) REAL
                   VU      (input) REAL If RANGE='V', the  lower  and
                   upper  bounds  of  the interval to be searched for
                   eigenvalues.  Eigenvalues less than  or  equal  to
                   VL,  or greater than VU, will not be returned.  VL
                   < VU.  Not referenced if RANGE = 'A' or 'I'.
    
         IL        (input) INTEGER
                   IU      (input) INTEGER If RANGE='I', the  indices
                   (in  ascending  order) of the smallest and largest
                   eigenvalues to be returned.  1 <= IL <= IU  <=  N,
                   if  N > 0; IL = 1 and IU = 0 if N = 0.  Not refer-
                   enced if RANGE = 'A' or 'V'.
    
         ABSTOL    (input) REAL
                   The absolute tolerance for  the  eigenvalues.   An
                   eigenvalue   (or  cluster)  is  considered  to  be
                   located if it has been determined  to  lie  in  an
                   interval whose width is ABSTOL or less.  If ABSTOL
                   is less than or equal to zero, then  ULP*|T|  will
                   be used, where |T| means the 1-norm of T.
    
                   Eigenvalues will be computed most accurately  when
                   ABSTOL  is  set  to  twice the underflow threshold
                   2*SLAMCH('S'), not zero.
    
         D         (input) REAL array, dimension (N)
                   The n diagonal elements of the tridiagonal  matrix
                   T.
    
         E         (input) REAL array, dimension (N-1)
                   The (n-1) off-diagonal elements of the tridiagonal
                   matrix T.
    
         M         (output) INTEGER
                   The actual number of eigenvalues found. 0 <= M  <=
                   N.  (See also the description of INFO=2,3.)
    
         NSPLIT    (output) INTEGER
                   The number of diagonal blocks in the matrix T.   1
                   <= NSPLIT <= N.
    
         W         (output) REAL array, dimension (N)
                   On exit, the first M elements of  W  will  contain
                   the  eigenvalues.   (SSTEBZ  may use the remaining
                   N-M elements as workspace.)
    
         IBLOCK    (output) INTEGER array, dimension (N)
                   At each row/column j where E(j) is zero or  small,
                   the  matrix  T is considered to split into a block
                   diagonal matrix.  On exit, if INFO = 0,  IBLOCK(i)
                   specifies  to which block (from 1 to the number of
                   blocks) the eigenvalue W(i) belongs.  (SSTEBZ  may
                   use the remaining N-M elements as workspace.)
    
         ISPLIT    (output) INTEGER array, dimension (N)
                   The splitting points, at which T  breaks  up  into
                   submatrices.   The  first  submatrix  consists  of
                   rows/columns  1  to  ISPLIT(1),  the   second   of
                   rows/columns  ISPLIT(1)+1 through ISPLIT(2), etc.,
                   and  the  NSPLIT-th   consists   of   rows/columns
                   ISPLIT(NSPLIT-1)+1    through    ISPLIT(NSPLIT)=N.
                   (Only the first NSPLIT elements will  actually  be
                   used, but since the user cannot know a priori what
                   value NSPLIT will have, N words must  be  reserved
                   for ISPLIT.)
    
         WORK      (workspace) REAL array, dimension (4*N)
    
         IWORK     (workspace) INTEGER array, dimension (3*N)
    
         INFO      (output) INTEGER
                   = 0:  successful exit
                   < 0:  if INFO = -i, the i-th argument had an ille-
                   gal value
                   > 0:  some or all of  the  eigenvalues  failed  to
                   converge or
                   were not computed:
                   =1 or 3: Bisection failed  to  converge  for  some
                   eigenvalues;  these  eigenvalues  are flagged by a
                   negative block number.  The  effect  is  that  the
                   eigenvalues may not be as accurate as the absolute
                   and relative tolerances.  This is generally caused
                   by  unexpectedly  inaccurate arithmetic.  =2 or 3:
                   RANGE='I' only: Not all of the eigenvalues
                   IL:IU were found.
                   Effect: M < IU+1-IL
                   Cause:   non-monotonic  arithmetic,  causing   the
                   Sturm   sequence   to   be  non-monotonic.   Cure:
                   recalculate, using RANGE='A', and pick
                   out eigenvalues IL:IU.  In some cases,  increasing
                   the  PARAMETER "FUDGE" may make things work.  = 4:
                   RANGE='I', and the Gershgorin  interval  initially
                   used was too small.  No eigenvalues were computed.
                   Probable cause: your machine has sloppy  floating-
                   point  arithmetic.   Cure:  Increase the PARAMETER
                   "FUDGE", recompile, and try again.
    
    PARAMETERS
         RELFAC  REAL, default = 2.0e0 The  relative  tolerance.   An
                   interval (a,b] lies within "relative tolerance" if
                   b-a < RELFAC*ulp*max(|a|,|b|), where "ulp" is  the
                   machine  precision  (distance  from  1 to the next
                   larger floating point number.)
    
         FUDGE   REAL, default = 2 A  "fudge  factor"  to  widen  the
                   Gershgorin  intervals.   Ideally,  a  value  of  1
                   should work, but on machines  with  sloppy  arith-
                   metic,  this  needs to be larger.  The default for
                   publicly released versions should be large  enough
                   to  handle  the  worst  machine around.  Note that
                   this has no effect on accuracy of the solution.
    
    
    
    


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




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

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