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