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
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