• No se han encontrado resultados

Simulación de Sistemas. Efraín Soto Apolinar

N/A
N/A
Protected

Academic year: 2021

Share "Simulación de Sistemas. Efraín Soto Apolinar"

Copied!
101
0
0

Texto completo

(1)

de Sistemas

(2)
(3)

Simulaci´ on de Sistemas

Notas por:

Efra´ın Soto Apolinar

PISIS

(4)
(5)

1 Introducci´on 5

1.1 Conceptos B´asicos . . . . 7

1.1.1 Definiciones . . . . 9

1.1.2 Etapas del Estudio de Simulaci´on . . . . 10

1.1.3 Distribuciones de probabilidad . . . . 12

1.2 Simulaci´on 01 . . . . 15

1.3 Simulaci´on 02 . . . . 19

1.3.1 Consideraciones . . . . 19

1.3.2 Simulaci´on por computadora . . . . 20

1.3.3 alculo anal´ıtico . . . . 23

1.4 Simulaci´on 03 . . . . 25

1.4.1 Definiciones . . . . 25

1.5 Simulaci´on 04 . . . . 31

1.6 Simulaci´on 05 . . . . 35

1.7 Simulaci´on 06 . . . . 37

(6)

1.8 Simulaci´on 07 . . . . 41

1.9 Simulaci´on 07 (Reposici´on) . . . . 51

1.10 Simulaci´on 08 . . . . 55

1.11 Movimiento Browniano . . . . 59

1.11.1 Bosquejo de experimento . . . . 59

1.12 Simulaci´on 11 . . . . 67

2 Proyecto Final 73 2.1 Simulaci´on del Recurso E´olico . . . . 75

2.1.1 Energ´ıa extraida del viento . . . . 75

2.1.2 Distribuci´on del viento . . . . 77

2.1.2.1 Distribuci´on Weibull . . . . 77

2.1.2.2 Distribuci´on Rayleigh . . . . 78

2.1.2.3 Distribuci´on de energ´ıa . . . . 78

2.1.2.4 Anem´ometros digitales . . . . 79

2.1.2.5 Predicci´on del recurso e´olico . . . . 79

2.1.3 Un caso espec´ıfico . . . . 80

2.1.4 Implementaci´on . . . . 80

2.1.5 Resultados de la simulaci´on . . . . 85

2.1.6 Conclusiones . . . . 90

3 End matter 93 3.1 Fuentes bibliogr´aficas . . . . 95

3.2 erminos de uso . . . . 97

3.3 Cr´editos . . . . 99

(7)

1

Introducci´on

(8)
(9)

1.1 Conceptos B´ asicos

En esta secci´on se encuentran algunos conceptos b´asicos de la simulaci´on de sistemas.

Definici´on 1.1.1.

Simulaci´on

Es la imitaci´on de la operaci´on de un proceso o sistema (encontrado en el mundo real) y su evoluci´on en el tiempo.

El comportamiento de un sistema conforme evoluciona en el tiempo se estudia desarrollando un modelo de simulaci´on.

Ventajas de la simulaci´on

• Pueden estudiarse nuevas pol´ıticas, procedimientos operacionales, reglas de decisi´on, flujos de informaci´on, procedimientos organizacionales, etc., sin afectar la operaci´on normal del sistema real.

• Pueden probarse nuevos dise˜nos mec´anicos, sistemas de transporte, etc., sin asignar grandes cantidades de recursos financieros para su adquisici´on.

• Puede probarse la factibilidad del c´omo o por qu´e ciertos fen´omenos pueden ocurrir.

• Podemos acelerar o decelerar un fen´omeno en investigaci´on.

• Podemos obtener informaci´on acerca de la interacci´on de las variables.

• Podemos obtener informaci´on acerca de la importancia de cada una de las variables en el desempe˜no general del sistema.

• Se puede desarrollar an´alisis de “cuello de botella”, indicando en qu´e partes se est´an retrasando demasiado informaci´on, materiales, etc.

• Una simulaci´on puede ayudar a entender c´omo opera el sistema.

• Podemos responder preguntas del tipo: “¿Qu´e pasar´ıa si...? ”. Esto es particularmente ´util en el dise˜no de nuevos sistemas.

Desventajas de la simulaci´on

• Construir un modelo requiere de entrenamiento. Es un arte que se aprende con el tiempo y a trav´es de la pr´actica. M´as a´un, si dos personas compe- tentes construyen un modelo para el mismo sistema, pueden tener simili- tudes, pero es muy poco probable que sean exactamente iguales.

(10)

8 Introducci´on

• Los resultados de la simulaci´on pueden ser muy dif´ıciles de interpretar.

Dado que la mayor´ıa de los resultados de las simulaciones son esencial- mente variables aleatorias (est´an basadas en entradas aleatorias), puede ser dif´ıcil determinar si una observaci´on es un resultado de las interrela- ciones de las variables o de la aleatoriedad.

• La modelaci´on de un sistema y su an´alisis puede consumir mucho tiempo y ser costoso. Dedicarse a hacer la simulaci´on de un sistema y su an´alisis puede despu´es indicar que este modelo es insuficiente.

• La simulaci´on se utiliza en algunos casos a´un cuando podemos encontrar las soluciones anal´ıticamente, o a´un preferibles. Esto es verdadero en la simulaci´on de algunas l´ıneas de espera donde hay disponibles modelos de colas cerradas.

¿Cu´ando es apropiada la simulaci´on?

• La simulaci´on permite el estudio, la experimentaci´on, interacciones inter- nas de un sistema, o de un subsistema dentro de un sistema complejo.

• Cambios organizacionales, inform´aticos y ambientales pueden ser simula- dos y el efecto de estas alteraciones puede observarse.

• El conocimiento ganado al dise˜nar un modelo de simulaci´on puede ser de gran valor para sugerir mejoras en el sistema investigado.

• Al cambiar las entradas del modelo y al observar las salidas, podemos obtener sugerencias valiosas acerca de cu´ales variables son m´as impor- tantes y c´omo interactuan entre ellas.

• La simulaci´on puede utilizarse como un dispositivo pedag´ogico para forta- lecer metodolog´ıas de soluciones anal´ıticas.

• La simulaci´on puede ser usada para experimentar con nuevos dise˜nos o pol´ıticas antes de su implementaci´on para prepararnos sabi´endo qu´e puede ocurrir.

• La simulaci´on puede utilizarse para verificar soluciones obtenidas anal´ıticamente.

Areas de aplicaci´´ on

• Sistemas de manufactura.

• Sistemas p´ublicos.

• Sistemas de trasnporte.

• Sistemas de construcci´on.

Efra´ın Soto A. Notas del curso Simulaci´on de Sistemas Prohibida la reproducci´on sin permiso previo del autor.

Simulaci´on de Sistemas

(11)

• Sistemas de entretenimiento.

• Reingenier´ıa de procesos de negocios.

• Procesamiento de alimentos.

• Desempe˜no de sistemas computacionales.

1.1.1 Definiciones

Definici´on 1.1.2.

modelo

Representaci´on de un sistema con el prop´osito de estudiarlo.

Definici´on 1.1.3.

Modelo matem´atico

Utiliza notaci´on simb´olica y ecuaciones matem´aticas para representar el sistema.

Definici´on 1.1.4.

Simulaci´on est´atica

Representa al sistema en un punto particular del tiempo. Tambi´en se conoce como simulaci´on de Monte Carlo.

Definici´on 1.1.5.

Simulaci´on din´amica

Representa el sistema y su evoluci´on conforme avanza el tiempo.

Definici´on 1.1.6.

Modelo determinista

Es un modelo de simulaci´on que no contiene variables aleatorias.

Definici´on 1.1.7.

modelo estoc´astico

Es un modelo de simulaci´on que incluye una o varias variables aleatorias.

(12)

10 Introducci´on

Nota: Entradas aleatorias generan salidas aleatorias. Dado que las salidas son aleatorias, solamente podemos considerarlas como una estimaci´on de las verdaderas caracter´ısticas del modelo.

Definici´on 1.1.8.

Sistema discreto

Un sistema en el cual las variables de estado cambian con valores discretos.

Definici´on 1.1.9.

Sistema continuo

Un sistema en el cual las variables de estado cambian con valores continuos con el tiempo.

1.1.2 Etapas del Estudio de Simulaci´on

En el proceso de construci´on del modelo de simulaci´on se realizan, en general, los siguientes pasos:

Definici´on del sistema Determinar la interacci´on de las variables entre s´ı, del sistema con otros sistemas, etc. Debemos entender el problema antes de iniciar con su soluci´on.

Formulaci´on del modelo Definir todas las variables que forman parte del sistema, sus relaciones. Escribir una definici´on completa del problema.

incluir detalles como entradas y salidas esperadas, el procesamiento nece- sario, suposiciones sobre el problema, etc.

Colecci´on de datos Definir con claridad los datos con que se va a alimentar el modelo.

Implementaci´on del modelo Decidir el lenguaje de programaci´on a utilizar para implementar el modelo en una computadora.

Validaci´on Detallar las deficiencias del modelo o en los datos alimentados al mismo.

• Opini´on de expertos sobre los resultados de la simulaci´on.

• La exactitud con que se predicen datos hist´oricos.

• La exactitud de la predicci´on en el futuro.

• La comprobaci´on de falla del modelo de simulaci´on con datos que hacen fallar al sistema real.

Efra´ın Soto A. Notas del curso Simulaci´on de Sistemas Prohibida la reproducci´on sin permiso previo del autor.

Simulaci´on de Sistemas

(13)

• La aceptaci´on y confianza en el modelo de la persona que har´a uso de los resultados que arroje el experimento de la simulaci´on.

Experimentaci´on.

La experimentaci´on con el modelo se realiza despu´es de que ´este ha sido validado.

Consiste en generar datos.

Interpretaci´on.

Se interpretan los resultados que arroja la simulaci´on para tomar una decisi´on.

Documentaci´on.

Documentaci´on t´ecnica Servir´a para hacer modificaciones al modelo.

Documentaci´on para el usuario Manual detallado de uso del sistema de simulaci´on para la persona que maneje el sistema.

Nota: Las suposiciones deben siempre escribirse en la documentaci´on del pro- grama de computradora generado como simulador. Por ejemplo, si debemos alimentar al sistema con un coeficiente para indicar un porcentaje que debe cumplir con: 0 ≤ p ≤ 1, la documentaci´on debe mencionar este requerimiento de manera expl´ıcita.

Definici´on 1.1.10.

Software de calidad Debe cumplir con los siguientes:

Funciona Debe realizar la tarea para la cual se le dise˜no, completa y correcta- mente.

Es legible y comprensible El manual del usuario es f´acil de comprender para un usuario. Las notas t´ecnicas (del programador) son f´acilmente compren- sibles por otros programadores. Esto se logra con un buen dise˜no y con escritura clara. El c´odigo autodocumentado sirve para que otros progra- madores entiendan nuestros programas.

Es modificable No debe requerirse mucho tiempo para hacer modificaciones al sistema de simulaci´on. El programa de c´omputo debe f´acilmente adaptarse a peque˜nas modificaciones sin gran problema.

Definici´on 1.1.11.

odigo autodocumentado

Es el c´odigo que utiliza para cada uno de los identificadores de las variables el nombre m´as parecido al uso que tiene en la realidad.

(14)

12 Introducci´on

Por ejemplo el c´odigo:

double x,y,z;

x = y / z;

No nos dice mucho acerca de los significados de las variables x, y, z, sin embargo, podemos escribir:

double velocidad, distancia, tiempo;

velocidad = distancia / tiempo;

lo cual hace evidente el significado de cada variable y entendible por otros pro- gramadores.

Definici´on 1.1.12.

Robustez

La habilidad de un programa de c´omputo para recuperarse despu´es de encontrar un error, es decir, de continuar en operaci´on.

Por ejemplo, en el caso de que un usuario ingrese por error una letra en lugar de un d´ıgito, el programa debe advertir al usuario del error y permitirle intentar de nuevo.

1.1.3 Distribuciones de probabilidad

Se han creado cientos de distribuciones de probabilidad para ciertos procesos f´ısicos. La elecci´on de una distribuci´on adecuada para cada proceso es impor- tante.

Es una buena idea considerar las caracter´ıticas f´ısicas del proceso en estudio para seleccionar una distribuci´on. Cuestiones de continuidad o discretizaci´on, si la variable est´a acotada o no acotada, etc., facilitan la decisi´on.

Una vez que vaya a elegir una distribuci´on debe tener cuidado. Aqu´ı se indican algunos ejemplos.

Binomial Modela el n´umero de triunfos en n intentos, cuando los intentos son independientes con probabilidad de ´exito p (todos los intentos tienen la misma probabilidad de ´exito). Por ejemplo, el n´umero de piezas defectu- osas en un lote de n piezas.

Efra´ın Soto A. Notas del curso Simulaci´on de Sistemas Prohibida la reproducci´on sin permiso previo del autor.

Simulaci´on de Sistemas

(15)

Binomial Negativa (incluida la distribuci´on geom´etrica) Modela el n´umero de intentos requeridos para obtener k triunfos. Por ejemplo, el n´umero de piezas que debemos inspeccionar para encontrar 2 defectuosas.

Poisson Modela el n´umero de eventos independientes que ocurren en una canti- dad fija de tiempo y espacio. Por ejemplo, el n´umero de clientes que llegan a una tienda durante una hora, o el n´umero de defectos encontrados en una l´amina de 50 m2.

Normal Modela la distribuci´on de un proceso que puede pensarse como la suma de un n´umero de subprocesos. Por ejemplo, el tiempo para ensamblar un producto, que es igual a la suma de los tiempos requeridos para cada operaci´on del ensamble. N´otese que la distribuci´on normal admite valores negativos, los cuales pueden ser imposibles para procesos de tiempo.

Lognormal Modela la distribuci´on de un proceso que pueden pensarse como el resultado de la multiplicaci´on de un n´umero de subprocesos. Por ejemplo, la rapidez de retorno de una inversi´on, cuando el inter´es es compuesto, es el producto del retorno por el n´umero de periodos.

Exponencial Modela el tiempo entre eventos independientes, o un proceso en el tiempo que no tiene memoria (el hecho de saber cu´anto tiempo ha pasado no nos da informaci´on sobre cu´anto tiempo debe pasar para completar el proceso). Por ejemplo, el tiempo entre llegadas de un gran umero de clientes que actuan independientemente uno de otro.

Gamma Una distribuci´on muy flexible usada para modelar variables aleatorias no negativas. Esta distribuci´on puede desplazarse (de cero) sumando una constante.

Beta Una distribuci´on muy flexible usada para modelar variables aleatorias con un intervalo definido (limites inferior y superior fijos).

Erlang Modela procesos que pueden ser vistos como la suma de varios proce- sos con distribuci´on exponencial. Por ejemplo, las fallas de la red com- putacional debido al fallo de una computadora y a dos computadoras de respaldo, y cada una tiene un tiempo de fallo que tiene distribuci´on expo- nencial.

Weibull Modela el tiempo de fallo de componentes. Por ejemplo, el tiempo de falla de un aparato electrodom´estico.

Uniforme (Discreta o cont´ınua) Modela incerteza completa, dado que todos los valores tienen la misma probabilidad de salir.

Triangular Modela procesos donde solamente se conocen el m´ınimo, m´aximo y el m´as frecuente. Por ejemplo, los tiempos requeridos m´ınimo, m´aximo y el m´as frecuente para reparar un aparato electrico.

(16)

14 Introducci´on

Empirica Vuelve a muestrear de los datos reales medidos. Frecuentemente se utiliza cuando no se conoce una distribuci´on te´orica apropiada para el proceso en estudio.

Efra´ın Soto A. Notas del curso Simulaci´on de Sistemas Prohibida la reproducci´on sin permiso previo del autor.

Simulaci´on de Sistemas

(17)

1.2 Simulaci´ on 01

Primera simulaci´on

Considere el planeta tierra con un tunel que le atraviesa por su centro. Se suelta una piedra de masa m para que caiga a trav´es de ese tunel. Simular la posici´on de la piedra para cada instante t. Considere la masa de la tierra constante e igual a M .

Desarrollar los siguientes casos:

1. Considerar la masa de la tierra M concentrada en su centro. Suponer que la fricci´on con el aire es despreciable.

La fuerza que “siente” la piedra es su peso:

W = m · ¨x(t)

Por otra parte, esta fuerza es ocasionada por la atracci´on gravitatoria de la tierra sobre la piedra:

FG= Gm · M [x(t)]2 Igualando las fuerzas obtenemos:

m · ¨x(t) = Gm · M [x(t)]2 Lo cual puede simplificarse para obtener:

¨

x(t) = G M [x(t)]2

La ecuaci´on diferencial que representa el modelo matem´atico para esta situaci´on es:

¨

x(t) · [x(t)]2= G M (1.1)

La soluci´on de esta ecuaci´on no se ha logrado encontrar.

En primer lugar, como x(t) est´a en el denominador, tenemos divisi´on por cero cuando la piedra est´a en el centro de la tierra.

De cualquier manera, se muestra una soluci´on que muestra la velocidad en funci´on de la posici´on.

(18)

16 Introducci´on

Definimos: v(t) = ˙x(t), entonces,

¨

x(t) = ˙v(t) = dv dx·dx

dt = v ·dv dx Entonces, la ecuaci´on se reduce de orden obteniendo:

v · dv

dx =G M x2

Podemos separar las variables para resolver la ecuaci´on:

Z

v dv =

Z G M x2 dx v2

2 = G M

3 x3 + C de donde al despejar v(x) obtenemos:

v = r

2 GM

3 x3 + K (1.2)

Esta soluci´on nos puede dar alguna informaci´on del fen´omeno que estudi- amos.

2. Considerar la masa de la tierra M distribuida uniformemente. Suponer que la fricci´on con el aire es despreciable.

Por definici´on, la densidad de un material es igual al cociente de la masa del mismo entre su volumen. La densidad de la tierra en este caso se considera constante. Suponemos adem´as que la forma de la tierra es esf´erica. El volumen de una esfera de radio x(t) es:

V =4

3π [x(t)]3

Pero para la f´ormula de la ley universal de gravitaci´on de Newton necesitamos la masa de la fracci´on de la tierra que sigue atrayendo a la piedra.

En este caso, se trata de una esfera de radio x(t), su masa puede calcularse como el producto del volumen parcial por la densidad promedio de la tierra, es decir:

M (t) = 4

3π [x(t)]3ρT

Ahora, sustituimos este valor en la f´ormula de la ecuaci´on encontrada en el primer mdelo:

m · ¨x(t) = G4 3m π ρT

[x(t)]3 [x(t)]2

¨

x(t) = 4

3π x(t) ρTG Efra´ın Soto A. Notas del curso Simulaci´on de Sistemas

Prohibida la reproducci´on sin permiso previo del autor.

Simulaci´on de Sistemas

(19)

y definiendo: L = 4

3π ρTG, podemos escribir de una manera m´as compacta:

¨

x(t) = L x(t) (1.3)

La soluci´on de esta ecuaci´on es como sigue: suponemos una soluci´on del tipo x(t) = er t. Entonces, ˙x(t) = r er t, y ¨x(t) = r2er t. Sustituyendo estos resultados en la ecuaci´on obtenemos:

r2er t = L er t r2er t− L er t = 0

r2− L · er t = 0 pero er t6= 0 para cualquier t. Entonces,

r2− L = 0

r = + √

L Y la soluci´on de la ecuaci´on es:

x(t) = C1e

L t+ C2e

L t

Con las condiciones iniciales podemos encontrar los valores de las constantes C1 y C2.

En caso de que L sea negativo, tendremos soluciones imaginarias.

3. Considerar la masa de la tierra M distribuida uniformemente. Suponer que la fricci´on con el aire es directamente proporcional a la velocidad de la piedra.

Ahora, tenemos una nueva fuerza que consiste en la resistencia debido al aire.

En este caso se trata de una fuerza proporcional a ˙x(t).

Entonces, la ecuaci´on que considera las fuerzas que act´uan sobre la piedra es:

m · ¨x(t) = 4

3π x(t) ρTm G − c · ˙x(t) la cual puede expresarse como:

m · ¨x(t) + c · ˙x(t) − λx(t) = 0 (1.4)

donde λ = 4

3π ρTm G.

La soluci´on de esta ecuaci´on es inmediata, dado que se trata de una ecuaci´on diferencial lineal de segundo orden.

(20)

18 Introducci´on

Suponemos que la soluci´on es de la forma: x(t) = er t. Entonces, ˙x(t) = r er t, y ¨x(t) = r2er t. Sustituyendo estos resultados en la ecuaci´on obtenemos:

m r2er t+ c r er t− λ er t= 0

Inmediatamente observamos que podemos factorizar la funci´on er t, para obtener:

er t m r2+ c r − λ = 0

pero er t6= 0 para cualquier t. Esto nos obliga a hacer: m r2+ c r − λ = 0.

Aqu´ı tenemos una ecuaci´on cuadr´atica que se resuelve con la f´ormula general:

r = −c+

c2+ 4 mλ 2 m

y obtenemos los dos valores de r que hacen que x(t) = er t sean soluci´on de la ecuaci´on diferencial: m · ¨x(t) + c · ˙x(t) − λx(t) = 0:

r1 = −c +

c2+ 4 mλ 2 m r2 = −c −

c2+ 4 mλ 2 m De donde la soluci´on de la ecuaci´on diferencial es:

x(t) = C1er1t+ C2er2t

Con las condiciones iniciales podemos encontrar los valores de las constantes C1y C2.

Por la forma del experimento, puede probarse que el valor de c > 0, y que las ra´ıces r1, r2 de la ecuaci´on caracter´ıstica de la ecuaci´on diferencial son umeros complejos, y la soluci´on tiene la forma:

x(t) = e−c/2m C1eiρt+ C2e−iρt

y finalmente puede simplificarse, con la ayuda de las condiciones iniciales a:

x(t) = R e−c/2mcos(ρt) (1.5)

donde ρ =

c2+ 4 mλ

2 m .

Efra´ın Soto A. Notas del curso Simulaci´on de Sistemas Prohibida la reproducci´on sin permiso previo del autor.

Simulaci´on de Sistemas

(21)

1.3 Simulaci´ on 02

Problema 2

Se lanza un alfiler de longitud L a una mesa que tiene dibujadas l´ıneas paralelas equidistantes separadas a L unidades una de la otra. Calcular la probabilidad de que el alfiler toque l´ınea.

1.3.1 Consideraciones

Se realizaron las siguientes suposiciones:

1. La longitud del alfiler es 1.

2. El alfiler siempre cae dentro de la mesa.

3. La distancia (medida verticalmente) de una recta a la cabeza del alfiler es una variable aleatoria que presenta distribuci´on uniforme.

4. El ´angulo que forma el alfiler con las rectas dibujadas sobre la mesa es una variable aleatoria que presenta distribuci´on uniforme.

Con base en estas suposiciones, podemos definir como x la distancia (medida verticalmente) de una recta a la cabeza del alfiler, y θ como el ´angulo que forma una de las rectas dibujadas sobre la mesa y el alfiler.

`i

`i+1

θ 1

0 x

Ahora definimos y como la posici´on de la punta del alfiler (el extremo opuesto a la cabeza del alfiler).

Dado que el alfiler mide 1, la coordenada y puede calcularse con:

y = x + sin (2 π θ)

(22)

20 Introducci´on

donde π = 3.141592654 · · · , es la constante geom´etrica1, y θ es el ´angulo como se defini´o anteriormente.

El alfiler tocar´a l´ınea siempre y cuando se cumpla alguna de las siguientes condi- ciones:

i. y > 1, ´o ii. y < 0

Geom´etricamente, de la figura podemos ver que en estos casos, la punta del alfiler estar´a fuera del ´area encerrada por las l´ıneas paralelas `i y `i+1.

1.3.2 Simulaci´on por computadora

En seguida se muestra el c´odigo del programa que simula este experimento.

/* Nombre del archivo: simulacion01.cpp Descripci´on:

Este programa simula el siguiente experimento:

Se lanza un alfiler de longitud L a una mesa que tiene dibujadas l´ıneas paralelas equidistantes separadas a L unidades una de la otra.

El usuario debe ingresar el n´umero total de experimentos (entero) que se deben realizar, entendiendo por experimento la simulaci´on de un lanzamiento del alfiler sobre la mesa.

El resultado indica la probabilidad de que el alfiler toque una de las l´ıneas dibujadas sobre la mesa.

--- --- Autor: Efra´ın Soto Apolinar

Email: [email protected]

Fecha de ´ultima Modificaci´on: 24 de enero de 2008 Lenguaje de Programaci´on: C++

Compilador: Dev - C++ Versi´on 4.9.9.2.

--- ---

*/

#include <iostream> // Funciones b´asicas para input/output

#include <stdlib.h> // para usar la funci´on rand()

#include <math.h> // funciones matem´aticas (sin (double))

#include <conio.h> // para usar: getche, getch

1Al multiplicar θ por 2 π convertimos la variable aleatoria θ, cuyos valores van desde 0 hasta 1 a radianes. Se trata de un simple mapeo uno a uno.

Efra´ın Soto A. Notas del curso Simulaci´on de Sistemas Prohibida la reproducci´on sin permiso previo del autor.

Simulaci´on de Sistemas

(23)

using namespace std;

int main(void) {

char respuesta;

int si, no, i, j, total;

double p, x, y, a;

const double pi = 3.141592654;

/*

x --> representa la distancia de una recta paralela de referencia

al punto donde cay´o la cabeza del alfiler.

y = x + sin (2 * pi * a)

a --> es el ´angulo que forma el alfiler con las rectas paralelas dibujadas sobre la mesa

si --> es el n´umero de veces que el alfiler toca l´ınea

no --> es el n´umero de veces que el alfiler NO toca l´ınea

p --> es la probabilidad de que toque...

total --> es el n´umero de experimentos que realizar´a el programa...

*/

cout << "\nEste programa calcula la probabilidad de que";

cout << "\nal lanzar un alfiler de una longitud dada ";

cout << "\nsobre una mesa que tiene dibujadas l´ıneas ";

cout << "\nparalelas separadas por una distancia igual ";

cout << "\na la longitud del alfiler, toque l´ınea... ";

//

for (;;) {

cout << "\n\n\nIngrese el n´umero de experimentos: ";

cin >> total;

si = no = 0;

p = 0;

for (i = 1 ; i <= total ; i++) { // realizo los experimentos

x = double(rand()) / double(RAND_MAX);

a = double(rand()) / double(RAND_MAX);

y = x + sin(2*pi*a);

if ((y < 0) || (y > 1)) {si++;}

else {no++;}

} // end del ciclo for () p = double(si) / double(total);

cout << "\n\n\nDe los " << total << " experimentos ";

cout << si << " tocaron l´ınea, \nmientras que " << no ; cout << " no tocaron l´ınea.\n";

cout << "\nDe aqu´ı que la probabilidad de que el alfiler";

(24)

22 Introducci´on

cout << "\ntoque l´ınea es: " << p;

cout << "\n\n\n";

//

cout << "Presione < S > para salir...";

respuesta = getche();

if ((respuesta == ’S’)||(respuesta == ’s’)) {

break; // Salir del ciclo for inicial...

}

cout <<"\n\n\n";

}

return 0;

}

Como los resultados generados con este programa son aleatorios, los resultados var´ıan ligeramente.

En la siguiente tabla se muestran algunos resultados obtenidos con el mismo.

No. Experimentos Probabilidad

100 0.66

200 0.62

300 0.613333

400 0.63

500 0.644

600 0.646667

700 0.624173

800 0.64

900 0.647778

1 000 0.623

10 000 0.6437

106 0.636592

108 0.636612

De hecho, a´un si se dan los mismos valores al programa, ´este arrojar´a diferentes resultados cada vez, dado que los valores que van tomando las variables x (que representa la distancia desde la recta `ia la cabeza del alfiler) y θ (que representa el ´angulo que forma el alfiler con cualquiera de las l´ıneas dibujadas sobre la mesa) son variables aleatorias con distribuci´on cont´ınua.

Esto se puede verificar realizando los c´alculos de nuevo con el programa ali- ment´andolo con los mismos valores.

Efra´ın Soto A. Notas del curso Simulaci´on de Sistemas Prohibida la reproducci´on sin permiso previo del autor.

Simulaci´on de Sistemas

(25)

1.3.3 alculo anal´ıtico

Para hacer el c´alculo anal´ıtico podemos definir las siguientes coordenadas: Sea d la distancia del centro del alfiler a la recta m´as cercana.

Sea ` esta recta, y sea α el menor ´angulo formado entre ` y el alfiler. De aqu´ı se deduce que:

0 ≤ d ≤ 1

2, y 0 ≤ α ≤π 2

Tambi´en es claro que el alfiler tocar´a la recta ` si la hipotenusa del tri´angulo es menor a 0.5, es decir:

d sin α <1

2

Entonces, al lanzar el alfiler, las coordenadas (d, α) tienen distribuci´on uniforme en los intervalos antes definidos, que se pueden representar mediante el siguiente rect´angulo:

π 2 1

2

La probabilidad de que el alfiler toque l´ınea es igual a la fracci´on del ´area del rect´angulo que yace debajo de la gr´afica de la funci´on: d = 1

2 sin α.

El ´area del rect´angulo es: π/4 y el ´area debajo de la gr´afica de la funci´on en cuesti´on es:

π/2

Z

0

1

2 sin α dα = 1 2 y as´ı obtenemos:

p(A) = 1 π2 4

= 2

π ≈ 0.6366197724 As´ı que la simulaci´on codificada en C++ es correcta.

(26)
(27)

1.4 Simulaci´ on 03

1.4.1 Definiciones

Definici´on 1.4.13.

Distribuci´on de probabilidad

El conjuunto de todos los pares (x, p(x)) para los cuales p(x) > 0 se denomina la distribuci´on de probabilidad de la variable aleatoria X.

Un experimento binomial presenta las siguientes propiedades:

3 El experimento consiste de n intentos id´enticos.

3 Cada intento resulta en uno de dos resultados. Uno de ellos se define como

´exito y el otro como fracaso.

3 La probabilidad de ´exito en un intento es p y continua constante de un intento a otro.

3 La probabilidad de fracaso es 1 − p.

3 Los intentos son independientes.

3 La variable aleatoria X es el n´umero de ´exitos observados durante los n intentos.

Teorema.1.4.1

La distribuci´on binomial est´a dada por:

p(x) = n x

 pxqn−x

Desarrollar una simulaci´on por computadora que simule experimentos de Bernoulli. El programa debe repetir los intentos hasta que se supere un valor fijo p de ´exito, definido por el usuario. Este mismo experimento debe realizarse con el m´etodo binomial. Se debe ir calculando el valor de la probabilidad bino- mial P (n, k) para k = 0, 1, 2 · · · i, hasta que se rebase el valor de p.

El programa debe indicar al usuario cu´antos intentos de Bernoulli se requierieron para superar el valor de p y cu´antas iteraciones binomiales se requirieron para alcanzar el mismo objetivo.

Se elabor´o un programa que requiere de la siguiente informaci´on:

(28)

26 Introducci´on

3 M´aximo de intentos de Bernoulli, que corresponde al n´umero m´aximo de experimentos de Bernoulli que se simular´an.

3 El valor de la probabilidad de ´exito, que corresponde al valor de p del evento a simular.

El c´odigo en el lenguaje C++se enlista en seguida.

/* Nombre del archivo: simulacion03.cpp Descripci´on:

Este programa simula experimentos de Bernoulli y probabilidad binomial.

--- --- Autor: Efra´ın Soto Apolinar

Email: [email protected] [email protected]

Fecha de ´ultima Modificaci´on: 03 de febrero de 2008 Lenguaje de Programaci´on: C++

Compilador: Dev - C++ Versi´on 4.9.9.2.

--- ---

*/

#include <iostream> // Funciones b´asicas para input/output

#include <stdlib.h> // para usar la funci´on rand()

#include <math.h> // funciones matem´aticas (pow (double))

#include <conio.h> // para usar: getche, getch

#include <ctime> // clock_t = clock();

int errores; // variable global...

int factorial(int n);

int permuta(int n, int k);

//

using namespace std;

int main(void){

char respuesta;

int i, j, kBer, kBin, n;

double p, q, prob, x;

//

cout << "\nEste programa simula experimentos binomiales";

cout << "\ny repeticiones de experimentos de Bernoulli...";

//

//

//

for (;;) {

errores = 0;

kBer = 0;

Efra´ın Soto A. Notas del curso Simulaci´on de Sistemas Prohibida la reproducci´on sin permiso previo del autor.

Simulaci´on de Sistemas

(29)

kBin = 0;

cout << "\n\n\nM´aximo de intentos de Bernoulli: ";

cin >> n;

if((n < 0) || (n > 20)) {

cout << "\nn debe estar entre 1 y 20 (inclusive)...";

cout << "\n\n";

continue;

}

for (;;) { // para que pueda ingresar el valor de p...

cout << "\nIngrese el valor de la probabilidad de ´exito: ";

cin >> p;

if ((p < 0) || (p > 1)) {

cout << "\np est´a entre cero y uno (inclusive)...";

cout << "\n\n\n";

continue;

}

q = 1 - p; // probabilidad de fracaso...

break;

} // termina el for...

//

//

//

// realizo el c´alculo de acuerdo a Bernoulli...

for (i=1 ; i <= n ; i++) {

x = double(rand()) / double(RAND_MAX); // genero x if (p >= x){

kBer++;

} // endif } // end for //

//

// realizo el c´alculo por Binomial...

x = double(rand())/ double(RAND_MAX); // genero x

prob = 0; // inicio la probabilidad acumulada de Bernoulli kBin = 0; // inicio el n´umero de intentos...

for(;;){ // for infinito...

prob +=double(permuta(n,kBin))*pow(p,double(kBin))*pow(q,double(n-kBin));

if (prob >= x) { break;

}

kBin++;

} //

// Muestro los resultados...

cout << "\n\n\nIntentos con Bernoulli: " << kBer;

cout << "\n\nIntentos con Binomial: " << kBin;

cout << "\n\n\nTotal de errores: " << errores;

//

cout << "\n\n\nPresione < S > para salir...";

(30)

28 Introducci´on

respuesta = getche();

if ((respuesta == ’S’)||(respuesta == ’s’)) {

break; // Salir del ciclo for inicial...

}

cout << "\n\n\n";

}

return 0;

}

/**************************************

Declaro la funci´on factorial...

***************************************/

int factorial(int n) {

long fi,i;

fi = i = 1;

while (i <= n) {

fi *=i;

if (fi <= 0){ // por si se pasa la memoria...

cout << "\nLo siento, se rebas´o la memoria...";

fi = 1;

errores++;

break;

} i++;

}

return fi;

}

/**************************************

Declaro la funci´on permuta...

***************************************/

int permuta(int n, int k) {

int perm,subfactorial,i;

i = n - k + 1; // n - k + 1 para calcular el subfactorial subfactorial = 1; // reinicio el subfactorial

while (i <= n){

subfactorial *= i;

i++;

}

perm = subfactorial / factorial(k);

return perm;

}

Los resultados que arroja el programa evidentemente var´ıa con los datos con que alimente al mismo.

Por ejemplo, con 12 intentos de Bernoulli m´aximo y una probabilidad de ´exito Efra´ın Soto A. Notas del curso Simulaci´on de Sistemas

Prohibida la reproducci´on sin permiso previo del autor.

Simulaci´on de Sistemas

(31)

de 0.35 obtenemos los siguientes resultados:

Este programa simula experimentos binomiales y repeticiones de experimentos de Bernoulli...

aximo de intentos de Bernoulli: 12

Ingrese el valor de la probabilidad de ´exito: 0.35

Intentos con Bernoulli: 3 Intentos con Binomial: 5

Total de errores: 0

Presione < S > para salir...

Los resultados obtenidos de un segundo ejemplo considerando 12 intentos de Bernoulli y un valor de p = 0.65, son:

aximo de intentos de Bernoulli: 12

Ingrese el valor de la probabilidad de ´exito: 0.65

Intentos con Bernoulli: 7 Intentos con Binomial: 9

Total de errores: 0

Un tercer ejemplo se muestra en seguida:

aximo de intentos de Bernoulli: 12

Ingrese el valor de la probabilidad de ´exito: 0.95

(32)

30 Introducci´on

Intentos con Bernoulli: 12 Intentos con Binomial: 12

Total de errores: 0

Efra´ın Soto A. Notas del curso Simulaci´on de Sistemas Prohibida la reproducci´on sin permiso previo del autor.

Simulaci´on de Sistemas

(33)

1.5 Simulaci´ on 04

Suponga deseamos calcular la distribuci´on de probabilidad de que ocurra un accidente en una intersecci´on de calles. Podemos considerar una unidad de tiempo, por ejemplo una hora, o un minuto, de manera que la probabilidad de que ocurra un accidente en ese intervalo sea distinta de cero.

Entonces, si p es la probabilidad de que ocurra exactamente un accidente, 1 − p es la probabilidad de que NO ocurra.

Si la ocurrencia de un accidente en in intervalo de tiempo es independiente de los dem´as intervalos, el n´umero total de accidentes en un intervalo mayor, por ejemplo, una semana, tendr´a una distribuci´on binomial.

Nosotros consideramos el caso en el que el producto n p permanece constante, al hace cambiar el tama˜no del intervalo, es decir, si n → ∞, p → 0, implica n p = λ, siendo λ una constante.

Entonces,

n→∞lim

 n x



px(1 − p)n−y = lim

n→∞

n (n − 1) · · · (n − x + 1) x!

 λ n

x 1 − λ

n

n−x

= lim

n→∞

λx x!

 1 − λ

n

n

n (n − 1) · · · (n − x + 1) nx

 1 −λ

n

−x

= λx x! lim

n→∞

 1 − λ

n

n 1 − λ

n

−y 1 − 1

n

  1 − 2

n



· · ·



1 − x − 1 n



Pero

n→∞lim

 1 −λ

n

n

= e−λ

y todos los dem´as factores se hacen 1, dado que n → ∞. Entonces:

P (x) = λx x! e−x

Las variables que presentan esta distribuci´on se conocen como variables aleato- rias con distribuci´on de Poisson.

Desarrollar un programa por computadora que simule experimentos con dis- tribuci´on de Poisson. El programa debe repetir los intentos hasta que se supere un valor fijo p de ´exito, definido por el usuario.

El programa debe indicar al usuario cu´antos intentos del experimento se re- quierieron para superar el valor de p.

Se elabor´o un programa que requiere de la siguiente informaci´on:

(34)

32 Introducci´on

3 Valor de Lambda, que corresponde al promedio de la muestra.

3 El valor de la probabilidad de ´exito, que corresponde al valor de p del evento a simular.

El c´odigo en el lenguaje C++se enlista en seguida.

/* Nombre del archivo: simulacion04.cpp Descripci´on:

Este programa simula experimentos con distribuci´on de Poisson y probabilidad binomial.

--- --- Autor: Efra´ın Soto Apolinar

Email: [email protected] [email protected]

Fecha de ´ultima Modificaci´on: 03 de febrero de 2008 Lenguaje de Programaci´on: C++

Compilador: Dev - C++ Versi´on 4.9.9.2.

--- ---

*/

#include <iostream> // Funciones b´asicas para input/output

#include <stdlib.h> // para usar la funci´on rand()

#include <math.h> // funciones matem´aticas (pow (double))

#include <conio.h> // para usar: getche, getch

#include <ctime> // clock_t = clock();

int errores; // variable global...

int factorial(int n);

int permuta(int n, int k);

//

using namespace std;

int main(void){

char respuesta;

int i, k;

double p, prob, x, lambda;

//

cout << "\nEste programa simula experimentos con";

cout << "\ndistribucion de Poisson...";

//

//

//

for (;;) {

errores = 0;

cout << "\n\n\nValor de Lambda (Promedio): ";

cin >> lambda;

Efra´ın Soto A. Notas del curso Simulaci´on de Sistemas Prohibida la reproducci´on sin permiso previo del autor.

Simulaci´on de Sistemas

(35)

if((lambda < 0)) {

cout << "\nLambda debe ser un valor positivo...\n\n";

continue;

}

for (;;) { // para que pueda ingresar el valor de p...

cout << "\nIngrese el valor de la probabilidad de ´exito: ";

cin >> p;

if ((p < 0) || (p > 1)) {

cout << "\np est´a entre cero y uno (inclusive)...";

cout << "\n\n\n";

continue;

} break;

} // termina el for...

//

//

// realizo el c´alculo de la probabilidad...

srand(unsigned(time(0)));// Semilla para el aleatorio...

x = double(rand())/ double(RAND_MAX); // genero x prob = 0; // inicio la probabilidad acumulada for(i = 0 ; prob <= x ; i++){ // for infinito...

prob += exp(-lambda) * pow(lambda,i) / factorial(i);

//

} //

// Muestro los resultados...

cout << "\n\n\nIntentos con Poisson: " << i-1;

cout << "\n\n\nTotal de errores: " << errores;

//

cout << "\n\n\nPresione < S > para salir...";

respuesta = getche();

if ((respuesta == ’S’)||(respuesta == ’s’)) {

break; // Salir del ciclo for inicial...

}

cout << "\n\n\n";

}

return 0;

}

/**************************************

Declaro la funci´on factorial...

***************************************/

int factorial(int n) {

long fi,i;

fi = i = 1;

while (i <= n) {

(36)

34 Introducci´on

fi *=i;

if (fi <= 0){ // por si se pasa la memoria...

cout << "\nLo siento, se rebas´o la memoria...";

fi = 1;

errores++;

break;

} i++;

}

return fi;

}

Un ejemplo de la ejecuci´on del c´odigo se muestra enseguida:

Este programa simula experimentos con distribucion de Poisson...

Valor de Lambda (Promedio): 12

Ingrese el valor de la probabilidad de Txito: 0.45

Intentos con Poisson: 13

Total de errores: 0

Efra´ın Soto A. Notas del curso Simulaci´on de Sistemas Prohibida la reproducci´on sin permiso previo del autor.

Simulaci´on de Sistemas

Referencias

Documento similar

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

Porcentaje de radiación solar interceptada (RSI; 0,35 - 2,5 µm) y de radiación fotosintéticamente activa interceptada (RFAI) a lo largo del ciclo de cultivo para las

A medida que las organizaciones evolucionan para responder a los cambios del ambiente tanto para sobrevivir como para crecer a partir de la innovación (Stacey, 1996), los

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones

En el capítulo de desventajas o posibles inconvenientes que ofrece la forma del Organismo autónomo figura la rigidez de su régimen jurídico, absorbentemente de Derecho público por

Pero cuando vio a Mar sacar el fuego de bajo su ala, voló de vuelta a su tribu a contarles lo que había visto.... Justo antes de que el sol saliera, Tatkanna se despertó y comenzó

Gastos derivados de la recaudación de los derechos económicos de la entidad local o de sus organis- mos autónomos cuando aquélla se efectúe por otras enti- dades locales o

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en