SECTION 12.9 DETERMINE AN A0 SUCH THAT THE INTEGRAL OVER

a_{1}x_{1} + ... + a_{n}x_{n} <= a_{0} OF THE NORMAL EQUALS A GIVEN NUMBER (NORMPRB)

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

where the a_{j}, j=1,...,n are given numbers. In other words, we seek the value of a_{0} such that ,

where f(x_{1},x_{2},x_{3}) 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 a_{0}, 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