This file is indexed.

/usr/include/openturns/swig/MonteCarlo_doc.i is in libopenturns-dev 1.7-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
%feature("docstring") OT::MonteCarlo
"Monte Carlo method.

Available constructors:
    MonteCarlo(*event=ot.Event()*)

Parameters
----------
event : :class:`~openturns.Event`
    Event we are computing the probability of.

Notes
-----
Using the probability distribution of a random vector :math:`\\\\vect{X}`, we seek
to evaluate the following probability:

.. math::

    P_f = \\\\Prob{g\\\\left( \\\\vect{X},\\\\vect{d} \\\\right) \\\\leq 0}

Here, :math:`\\\\vect{X}` is a random vector, :math:`\\\\vect{d}` a deterministic
vector, :math:`g(\\\\vect{X},\\\\vect{d})` the function known as *limit state function*
which enables the definition of the event
:math:`\\\\cD_f = \\\\{\\\\vect{X} \\\\in \\\\Rset^n \\\\, | \\\\, g(\\\\vect{X},\\\\vect{d}) \\\\le 0\\\\}`.

If we have the set :math:`\\\\left\\\\{ \\\\vect{x}_1,\\\\ldots,\\\\vect{x}_N \\\\right\\\\}` of
:math:`N` independent samples of the random vector :math:`\\\\vect{X}`, we can
estimate :math:`\\\\widehat{P}_f` as follows:

.. math::

    \\\\widehat{P}_{f,MC} = \\\\frac{1}{N}
                         \\\\sum_{i=1}^N \\\\mathbf{1}_{ \\\\left\\\\{ g(\\\\vect{x}_i,\\\\vect{d}) \\\\leq 0 \\\\right\\\\} }

where :math:`\\\\mathbf{1}_{ \\\\left\\\\{ g(\\\\vect{x}_i,\\\\vect{d}) \\\\leq 0 \\\\right\\\\} }`
describes the indicator function equal to 1 if
:math:`g(\\\\vect{x}_i,\\\\vect{d}) \\\\leq 0` and equal to 0 otherwise;
the idea here is in fact to estimate the required probability by the proportion
of cases, among the :math:`N` samples of :math:`\\\\vect{X}`, for which the event
:math:`\\\\cD_f` occurs.

By the law of large numbers, we know that this estimation converges to the
required value :math:`P_f` as the sample size :math:`N` tends to infinity.

The Central Limit Theorem allows to build an asymptotic confidence interval
using the normal limit distribution as follows:

.. math::

    \\\\lim_{N\\\\rightarrow\\\\infty}\\\\Prob{P_f\\\\in[\\\\widehat{P}_{f,\\\\inf},\\\\widehat{P}_{f,\\\\sup}]}=\\\\alpha

with :math:`\\\\widehat{P}_{f,\\\\inf}=\\\\widehat{P}_f - q_{\\\\alpha}\\\\sqrt{\\\\frac{\\\\widehat{P}_f(1-\\\\widehat{P}_f)}{N}}`,
:math:`\\\\widehat{P}_{f,\\\\sup}=\\\\widehat{P}_f + q_{\\\\alpha}\\\\sqrt{\\\\frac{\\\\widehat{P}_f(1-\\\\widehat{P}_f)}{N}}`
and :math:`q_\\\\alpha` is the :math:`(1+\\\\alpha)/2`-quantile of the standard
normal distribution.

Examples
--------
>>> import openturns as ot
>>> ot.RandomGenerator.SetSeed(0)
>>> myFunction = ot.NumericalMathFunction(['E', 'F', 'L', 'I'], ['d'], ['-F*L^3/(3*E*I)'])
>>> myDistribution = ot.Normal([50., 1., 10., 5.], [1.]*4, ot.IdentityMatrix(4))
>>> # We create a 'usual' RandomVector from the Distribution
>>> vect = ot.RandomVector(myDistribution)
>>> # We create a composite random vector
>>> output = ot.RandomVector(myFunction, vect)
>>> # We create an Event from this RandomVector
>>> myEvent = ot.Event(output, ot.Less(), -3.0)
>>> # We create a Monte Carlo algorithm
>>> myAlgo = ot.MonteCarlo(myEvent)
>>> myAlgo.setMaximumOuterSampling(250)
>>> myAlgo.setBlockSize(4)
>>> myAlgo.setMaximumCoefficientOfVariation(0.1)
>>> # Perform the simulation
>>> myAlgo.run()
>>> print('Probability estimate=%.6f' % myAlgo.getResult().getProbabilityEstimate())
Probability estimate=0.146505"