Integración De Montecarlo
DIVISIÓN DE CIENCIAS BÁSICAS E INGENIERÍA
UNIDAD AZCAPOTZALCO
Laboratorio de Análisis y simulación de sistemas
Práctica 3.
Realizado por:
* GABRIEL FRANCISCO RAMOS 209302867
Profesor:
ANTONIN SEBASTIEN PONSICH
FECHA DEENTREGA: 03 de Noviembre de 2011
TRIMESTRE: 11-Otoño
GRUPO: CSI02
INDICE PAG.
Parte 1: Método de las medias
1. Código fuente……………………………………………………………………………………………………3
2. Descripción del código fuente……………………………………………………………………….53. Corrida con N=500………………………………………………………………………………………..7
4. Simulación variando N números aleatorios (500 a 10,000)…………………………….7
5. Conclusión…………………………………………………………………………………………………...7
Parte 2: Método de éxito – fracaso.
6. Código fuente……………………………………………………………………………………………..8
7. Descripción del código fuente……………………………………………………………………..10
8. Corrida conN=500……………………………………………………………………………………….12
9. Simulación variando N números aleatorios (500 a 10,000)……………………………12
10. Conclusión…………………………………………………………………………………………………………………….13
P R E S E N T A C I Ó N
En esta práctica está dedica a la integración de Monte Carlo, generando dos vectores u (i) y v (i), exactamente lo mismo como se viene haciendo desde la práctica 1, en la primera parte de dicha práctica se tiene laintención de calcular la estimación de la integral a través de los dos vectores generados haciendo un cambio de variable dentro del intervalo 0 y 1.
Mientras que en la segunda parte de la práctica, se obtiene una estimación del valor del número , usando la función de un círculo inscrito en un cuadrado centrado en el origen (0,0) y de lado con longitud igual a x2 + y2 = 1, con radio igual a 1.Parte 1: Método de las medias
1. Código fuente.
Option ExplicitSub aleatorios()'declaración de variablesDim a As Double, c As Double, m As Double, x0 As Double, x01 As Double, integral As DoubleDim x As Double, x1 As Double, g() As Double, suma As Double, g2 As Double, ee As DoubleDim i As Integer, N As Integer, u() As Double, v() As Double, desv As Double, desvi As DoubleN = InputBox("¿Númeroaleatorios a generar?") 'pedir valores al usuario de cada uno de las variables'declarar los parámetros como constantesa = 214013m = 2 ^ 32c = 2531011x0 = 245x01 = 2 ^ 18 - 1ReDim u(N) As Double 'redimensionar el vector u'hacer el siguiente ciclo a partir de 1 hasta N números de aleatorios a generarFor i = 1 To Nx = Int((a * x0 + c) / m) 'hacer la primera operaciónx1 = (a * x0 + c) - x * m 'hacerla segunda operación utilizando el valor de x que salió en la primera operación.u(i) = x1 / mx0 = x1 'x0 toma el valor de x1 que salió de la operación anteriorCells(i + 1, 1).Value = u(i) 'se imprime todos los números aleatorios en la columna AiNext iReDim v(N) As Double |
'otro ciclo que permite generar otro vector de N números aleatoriosFor i = 1 To Nx = Int((a * x01 + c) /m) 'hacer la primera operaciónx1 = (a * x01 + c) - x * m 'hacer la segunda operación utilizando el valor de x que salió en la primera operación.v(i) = x1 / mx01 = x1 'x01 toma el valor de x1 que salió de la operación anteriorCells(i + 1, 2).Value = v(i) 'se imprime todos los números aleatorios en la columna BiNext iReDim g (N) As Double'ciclo que permite calcular el vector g (i)a partir de los dos vectores de números aleatoriosCells(1, 4).Value = "g(i)"For i = 1 To Ng2 = Exp(-(1 / u(i) - 1) ^ 2) * Exp(-((1 / u(i) - 1) * v(i)) ^ 2)g(i) = g2 * (1 / u(i) - 1) / u(i) ^ 2Cells(i + 1, 4).Value = g(i) 'los valores se imprime en la columna DiNext i'ciclo que permite calcular el valor de la integralsuma = 0For i = 1 To Nsuma = suma + g(i)Next...
Regístrate para leer el documento completo.