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