SECTION 12.9 DETERMINE AN A0 SUCH THAT THE INTEGRAL OVER
             a1x1 + ... + anxn <= a0 OF THE NORMAL EQUALS A GIVEN NUMBER             (NORMPRB)

It is desired to integrate the multivariate normal density over the region given by

a1x1 + . . . anxn >= a0

where the aj, j=1,...,n are given numbers. In other words, we seek the value of a0 such that ,

where f(x1,x2,x3) is the trivariate normal density. MONCARL in Section 12.8 takes the right hand side(s) of the inequality(ies) as given and calculates the probability p that a drawing from the normal satifies the inequality(ies). NORMPRB takes p as given and calculates the value of a0, for which p is the correct probability. While MONCARL can be used with any number of constraints, NORMPRB permits only a single constraint.

NORMPRB required that you specify a lower and an upper bound between which the answer will lie. If you have not provided such bounds, NORMPRB will quit and you may try again with wider bounds. If you have provided such bounds, NORMPRB will successively narrow the bounds within which the answer must lie until it is found (up to an accuracy level of ACC).

The MAIN program should include

        COMMON/BPRINT/IPT,NFILE,NDIG,NPUNCH,JPT,MFILE
        CALL DFLT

The call to NORMPRB is

        CALL NORMPRB(ANSL,ANSH,PROB,SOL,XPROB,ACC,XMU,SIG,COV,NDIM,
     * ISTOR,IER)

where

   ANSL   = the lower bound for the answer
   ANSH   = the upper bound for the answer
   PROB   = the specified probability with which a drawing from
            the multivariate normal will satisfy the constraint
   SOL    = the solution to the problem
   XPROB  = the name of a function subprogram; must be declared
            in an EXTERNAL statement in the MAIN program
   ACC    = the desired accuracy level
   XMU    = a DOUBLE PRECISION array dimensioned XMU(NDIM)
            containing the mean vector
   SIG    = a DOUBLE PRECISION vector containing the standard
            deviations of the NDIM variables if INDEP=.TRUE.
            (SIG is irrelevant if INDEP=.FALSE.)
   COV    = a DOUBLE PRECISION array dimensioned COV(NDIM,NDIM)
            containing the covariance matrix if INDEP=.FALSE.
            (COV is irrelevant if INDEP=.TRUE.)
   NDIM   = the dimensionality of the problem (i.e., n above)
   ISTOR  = logical variable set = .TRUE. if NREP sample point
            are to be generated once-and-for-all and reused in each
            iteration, and = .FALSE. if every iteration is to
            generate new sample points. The former will not only
            speed convergence, but will tend to avoid unstable
            oscillations. However, in this case, NREP*NDIM must
            be <= 100,000.
   IER    = 0 for normal return, =-7 if the the bounds ANSL and
            ANSH do not bracket the solution, =-67 if the
            covariance matrix is not positive definite

In addition, the user must also include the following COMMON statements in the MAIN program:


        COMMON/NRMPRB/A
        COMMON/NRMPRB1/NREP,ICONST,INDEP

where

   A      = a DOUBLE PRECISION array that must be dimensioned
            A(1,0:20), hence limiting the dimensionality of the
            problem to 20, and where (unlike MONCARL) A(1,0) plays
            no role; the values of A must be set in MAIN
   NREP   = the number of Monte Carlo samplings
   ICONST = set internally to 1
   INDEP  = .TRUE. if the normal variates are independent (in
            which case COV is irrelevant) or = .FALSE. if they are
            not independent, in which case SIG is irrelevant

Return to the Beginning