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