Función: Método de MontecarloVolver

Descripción

Aplica el método de Monte Carlo

Cadena de entrada

montecarlo

Cadena de salida

montecarlo

Uso

montecarlo(<vars>,<prob_func>,<func_rend>,<g>,<func_ind>,<ensayos>[,<tipo_salida>])

Parámetros
# Parámetro Descripción Valor por defecto
1 vars Variables aleatorias como vector [X1,X2,…,Xn]
2 prob_func Funciones de probabilidad de las variables aleatorias como vector [P(X1),P(X2),…,P(Xn)]
3 func_rend Función de rendimiento que obtiene las salidas a partir de las muestras.
La función depende de las variables aleatorias Xi. Puede utilizarse la variable interna _sample_ que representa al vector [X1,X2,…,Xn]
4 g Variable de la función indicatriz
5 func_ind Función indicatriz; función booleana que indica si la salida es acertada o fallida
6 ensayos Nº de ensayos 'n'. El error se reduce en √n al aumentar 'n'
7 tipo_salida Determina que datos se mostrarán (y el rendimiento y memoria del método) usando dos contantes:
■ _stats_ : se devolverá un diccionario con cuatro entradas, la media de los resultados, la varianza, la probabilidad de fallo y la fiabilidad
■ _data_ : se devolverá un diccionario con tres entradas, todas las salidas de la función de rendimiento, los aciertos y los fallos. Esto permite al usuario hacer su propio análisis estadístico, pero puede consumir mucha memoria
_stats_

Ejemplos

cálculo de π usando el primer cuadrante del círculo goniomético:

montecarlo([x,y],[rand(-1),rand(-1)],abs(x,y),g,g<=1,1e6)

Diccionario: {'media'=0.7650038348472198, 'varianza'=0.08109870189471424, 'prob_fallo'=0.213945, 'conf'=0.786055}

montecarlo([x,y],[rand(-1),rand(-1)],abs(x,y),g,g<=1,1e6);#;'conf'*4

RealDoble: 3.141504

montecarlo([x,y],[rand(-1),rand(-1)],abs(_sample_),g,g<=1,1e6);#;'conf'*4 (usando _sample_)

RealDoble: 3.14214

volumen del paraboloide x2+y2 en [-3,3]x[-3,3]x[0,18]:

montecarlo([x,y,z],[rand(-3,3),rand(-3,3),rand(0,18)],sqr(x)+sqr(y)-z,g,g>=0,1e6);#;'conf'*6*6*18

RealDoble: 216.00496800000002 (256)

distintas funciones de probabilidad para cada variable:

enumerar(montecarlo([x,y,z],[rand(-10,10),randint(1,6),randgauss(100,4)],x+y+z,g,verdadero,1e6))

VectorEvaluado: | 'media' 103.49105758650461 | | 'varianza' 52.233970994566334 | | 'prob.fallo' 0 | | 'fiabilidad' 1 |

obtener las salidas en lugar de los resultados estadísticos:

enumerar(montecarlo([x,y],[rand(-1),rand(-1)],y-sqr(x),g,g<=0,30,_data_))

VectorEvaluado: | 'fallo' [0.5747195844676536,0.7090150154066867,0.05785646498770347,0.39327315854654027,0.5808507589127483,0.33371712194160197,0.4348703902901088,0.07573740526871103,0.37678628126369057,0.1441494730007826,0.06381300073396177,0.04382138071562003,0.20795494100113193,0.034066216926430026,0.7296851739711961,0.6348434256991684,0.07931829667851908] | | 'seguro' [-0.7179739238311573,-0.14649077587704454,-0.5557761175578415,-0.6439247868694995,-0.5909925633784799,-0.059538229113307306,-0.058177899620397544,-0.7145038504140971,-0.16546609427268194,-0.1303040172343878,-0.842017664377174,-0.20016104242537047,-0.683783351609421] | | 'todo' [0.5747195844676536,0.7090150154066867,-0.7179739238311573,0.05785646498770347,-0.14649077587704454,-0.5557761175578415,0.39327315854654027,-0.6439247868694995,0.5808507589127483,0.33371712194160197,-0.5909925633784799,0.4348703902901088,0.07573740526871103,0.37678628126369057,0.1441494730007826,0.06381300073396177,-0.059538229113307306,0.04382138071562003,0.20795494100113193,-0.058177899620397544,-0.7145038504140971,0.034066216926430026,0.7296851739711961,-0.16546609427268194,0.6348434256991684,-0.1303040172343878,0.07931829667851908,-0.842017664377174,-0.20016104242537047,-0.683783351609421] |

Desde / Última modificación

v0.3.7

v0.4.4