20 de Febrero de 2007 2
ÍNDICE
Definición de simulación.Generación de variables aleatorias:✔ Generación de número aleatorios✔ Método de la función inversa✔ Otros métodos:
✔ Composición✔ Convolución✔ Transformaciones conocidas
✔ Generación de secuenciasComprobación de resultadosBibliografía
20 de Febrero de 2007 3
DEFINICIÓN DE SIMULACIÓN
SIMULACIÓN: "Experimentar con modelos matemáticos en un computador".Esquema general de la simulación:
En este curso cubriremos los tres aspectosNotar que, al trabajar en computador, siempre trabajaremos con secuencias discretas (muestras, en todo caso, de señales continuas)
Análisis de resultados
Sistema
Generación de señales de entrada
Modelo matemático del sistema
Análisis de resultados
Experimentación/Medida
Simulación
20 de Febrero de 2007 4
GENERACIÓN DE VARIABLES ALEATORIAS
Muchos modelos de sistemas reales contienen elementos que precisan o admiten un modelado estadístico:✔ Sistemas de comunicaciones: ruido, desvanecimiento, ...✔ Sistemas de conmutación: llegadas de usuarios al sistema,
duración de servicios, ...✔ Sistemas sensores: proceso de detección, proceso de medida, ...✔ ...Modelado toma forma definiendo:✔ Variables aleatorias que rigen ciertos comportamientos del
sistema✔ Procesos estocásticos para modelar variación de entradas en el
tiempo.Se deben definir métodos para generar muestras de variables aleatorias y muestras de procesos estocásticos.
20 de Febrero de 2007 5
GENERACIÓN DE VARIABLES ALEATORIAS (II)
Esquema general de generación de variables aleatorias y muestras de procesos estocásticos:
{Ui}: Conjunto de números generados en el computador, que siguen una distribución uniforme entre 0 y 1, independientes.{xi}: Conjunto de números que pueden verse como:✔ Muestras de una determinada variable aleatoria✔ Muestras de un proceso estocástico en distintos instantes de
tiempo
Generación de números
pseudoaleatorios
Transformación X=f(U)
{Ui} {xi}
20 de Febrero de 2007 6
GENERACIÓN DE NUMEROS ALEATORIOS
Números aleatorios: los que generan variables aleatorias con distribución uniforme entre 0 y 1.Importante: Poder reproducir exactamente el mismo experimento:✔ Detectar casos singulares✔ Comparar sistemas similares bajo condiciones idénticas.Objetivo: ✔ U(0,1)✔ Secuencia de números independientes linealmente: Incorrelados✔ Secuencia reproducible a partir de pocos datos✔ Coste computacional reducido
20 de Febrero de 2007 7
GENERACIÓN DE NUMEROS ALEATORIOS (II)
Existen varias familias de métodos de generación de números aleatorios.Aquí explicaremos el funcionamiento de los más usuales: tipo congruencial lineal.Fórmula:Genera una secuencia de enteros {z
i} como:
zi=(a zi1 + c) mod m✔ m es el módulo✔ a es el multiplicador✔ c es el incremento✔ m>0 , m>a , m>c El número aleatorio entre 0 y 1 se obtiene como:
Ui=z
i/m
20 de Febrero de 2007 8
GENERACIÓN DE NUMEROS ALEATORIOS (III)
Propiedades:✔ Ecuación recursiva: con un valor inicial (zo) se define la
secuencia completa. A este valor se el denomina semilla aleatoria.
✔ Como máximo se pueden conseguir m números aleatorios distintos.
✔ Tiene comportamiento cíclico. Longitud del ciclo como máximo m, depende de z0.
✔ ¿Que pasa si z0=0? Selección de z0 puede ser importante.✔ No puede salir cualquier número, solo los de la forma z/m.✔ Dependencia fuertemente no lineal Ejemplo: función rand de MATLAB 4:
zi=(77 zi1) mod(2311)
20 de Febrero de 2007 9
GENERACIÓN DE NUMEROS ALEATORIOS (IV)
Otros métodos, con carácter general, mantienen misma estructura: ✔ Ecuación recursivas, reproducibles a partir de valor inicial
seleccionable. ✔ Dependencias no lineales => lineales implican correlación entre
muestras.✔ Tienen comportamiento cíclico.
20 de Febrero de 2007 10
GENERACIÓN DE VARIABLES ALEATORIAS
Sabemos generar U(0,1). Aquí generalizaremos para conseguir muestras que:✔ Sigan una distribución deseada (función de distribución FX(x) o
densidad de probabilidad fX(x)). ✔ Sean independientes (linealmente).
Como debe ser f(U) para conseguir la distribución deseada
Generación de números
pseudoaleatorios
Transformación X=f(U)
{Ui} {xi}
20 de Febrero de 2007 11
MÉTODO DE LA FUNCIÓN INVERSA
Método para funciones continuas:f(U)=FX
1(U)Demostración de su validez:
✔ Definimos Y=f(U) ✔ Queremos calcular FY(y)=P(Y≤y)✔ FX(.) es monótona creciente => P(Y≤y)=P(FX(Y)≤FX(y))✔ FY(y)=P(FX(f(U))≤FX(y))✔ FY(y)=P(FX(FX
1(U))≤FX(y))✔ FY(y)=P(U≤FX(y))✔ Como U es una variable aleatoria uniforme, si 0<p<1
P(U≤p)=p.✔ Por tanto FY(y)=FX(y)
20 de Febrero de 2007 13
MÉTODO DE LA FUNCIÓN INVERSA (III)
Generación completa de una muestra de una variable aleatoria: ✔ Se genera un numero aleatorio ui con un generador de números
aleatorios.✔ Se transforma utilizando xi=FX
1(ui) Propiedades del método:
✔ Si podemos asumir que los números aleatorios son independientes, las muestras de las variables aleatorias transformadas también serán independientes
✔ General, vale para cualquier distribución.✔ Problema: Generar FX
1(U)
20 de Febrero de 2007 14
MÉTODO DE LA FUNCIÓN INVERSA (IV)
Extensión a variables aleatorias discretas: ✔ Solo los puntos xk tienen una cierta probabilidad de aparecer
(p(xk)).✔
Al fin y al cabo, son distribuciones como cualquier otraVeamos gráficamente
FX x =P X≤ x=∑x i≤ x
p x i
20 de Febrero de 2007 16
MÉTODO DE LA FUNCIÓN INVERSA (VI)
Lo que cambia es el método de generación:Generación completa de una muestra de una variable aleatoria discreta:
✔ Se genera un numero aleatorio ui con un generador de números aleatorios.
✔ Se transforma seleccionando el menor xk tal que ui<F(xk).Implementación práctica: Ordenar xk, ir recorriendo hasta que se cumpla la anterior condición, devolver xi=xk. Generalización a distribuciones mixtas es inmediata.
20 de Febrero de 2007 17
EJEMPLOS
Generación de muestras que siguen una distribución exponencial:✔ fX(x)=1/c exp(x/c) para valores positivos de x. ✔ FX(x)=1exp(x/c) ✔ f(u)=FX
1(u)= c ln(1u)✔ MATLAB: >>x=c*log(1rand(1,1));Generación de muestras que siguen una distribución discreta:✔ p(1)=1/3, p(2)=1/2, p(4)=1/6 ✔ MATLAB:
>>u=rand(1,1)>>if(u<1/3) x=1;>>else if(u<5/3) x=2;>>else x=4;
20 de Febrero de 2007 18
OTROS MÉTODOS
Problema del método anterior es sintetizar FX1(U).
En ocasiones, mas sencillo emplear propiedades de distribuciones. Ejemplos:✔ Composición✔ Convolución✔ Transformaciones conocidas
20 de Febrero de 2007 19
COMPOSICIÓN
Método típico para generar distribuciones multimodales:fX(X)=p1fX1(X)+p2fX2(X)+p3fX3(X)+ ...+pNfXN(X)
Si una distribución es mezcla estadística de otras, por que no:✔ Generar una variable aleatoria discreta coherente con la
probabilidad de cada modo✔ Seleccionar el modo resultante✔ Generar la variable aleatoria con la distribución asociada al
modo.
20 de Febrero de 2007 20
COMPOSICIÓN (II)
Ejemplo: distribución de Laplace fX(X)=1/(2c) exp(|x|/c) ✔ Puede verse como composición de dos exponenciales, una
positiva y otra negativa✔ Generando dos números aleatorios u1 y u2 se puede calcular
decidiendo con el primero el signo (equiprobable) y con el segundo el módulo (exponencial).
✔ MATLAB:if rand(1,1)<0.5
x=c*log(1rand(1,1));else
x=c*log(1rand(1,1));
20 de Febrero de 2007 21
CONVOLUCIÓN
En otras ocasiones, se sabe que una variable aleatoria es resultado de la suma de varias otras variables. Si dos variables aleatorias (X e Y) son independientes, la función densidad de probabilidad se la suma Z=X+Y puede demostrarse (ISA) que es: fZ(z)=fX(z)*fY(z) => de hay el nombre del método.Si sabemos que Z cumple esta propiedad, por que no:✔ Generar muestras (en el ejemplo xi e yi) de las variables
aleatorias originales (X e Y en el ejemplo) utilizando el método que sea preciso.
✔ Sumarlas (en el ejemplo, zi=xi+yi)
20 de Febrero de 2007 22
CONVOLUCIÓN (II)
Ejemplo 1: mErlang que es la suma de m exponenciales.✔ MATLAB:
x=0;for i=1:m
x=xc/m *log(1rand(1,1));end
20 de Febrero de 2007 23
CONVOLUCIÓN (III)
Ejemplo 2: Síntesis de gaussianas como suma de uniformes ✔ Teorema de límite central.✔ Sumando suficientes uniformes, tenderemos a una gaussiana.✔ Método clásico usa 12 => resultado: N(6,1)
20 de Febrero de 2007 24
TRANSFORMACIONES CONOCIDAS
En ocasiones, se conocen relaciones entre variables aleatorias que permiten transformar unas en otras.Ejemplo clásico: Generación de variables aleatorias gaussianas ✔ Propiedad conocida: Si tenemos dos variables aleatorias
gaussianas X e Y (media nula y varianza igual):✔ ¿Cual es la distribución de |X+jY|?✔ ¿La de M=|X+jY|2 ? ✔ ¿Y la de F=arg(X+jY)?✔ ¿Hay dependencia entre M y F?
✔ Generar variables aleatorias exponencial y uniforme no es complicado => ya hemos visto como
20 de Febrero de 2007 25
TRANSFORMACIONES CONOCIDAS (II)
A partir de dos variables aleatorias, una exponencial (M) y la otra uniforme entre 0 y 1 (F), se pueden generar dos gaussianas independientes utilizando las siguientes transformaciones:
El método completo quedará:✔ Generar dos variables aleatorias uniformes (u1 y u2).✔ Utilizar la siguiente transformación:
Resultado: pareja de dos muestras de una gaussiana (N(0,1))), independientes entre si
X=M cos2FY=M sen 2F
x=−2 lnu1 cos2u2
Y=−2 ln u1 sen 2 u2
20 de Febrero de 2007 26
TRANSFORMACIONES CONOCIDAS (III)
Ejemplo 2: ¿Como modificar media y varianza de una variable aleatoria?✔ Traslación de la media: Y=X+m => aplicar sobre muestras
generadas de X (comprobar que E{Y}=E{X}+m): yi=xi+m
✔ Modificación de la varianza: Recordar que Y= a X implica que Var(Y)=a2 Var(X). Aplicar de forma equivalente a las muestras generadas de X:
yi=a xi ✔ Traslación de la media y modificación de la varianza conjuntas:
¿Que pasa con media y varianza si Y=a X+m? Pensar antes de ir a la práctica.
20 de Febrero de 2007 27
GENERACIÓN DE SECUENCIAS
De entre todos los procesos aleatorios, nos vamos a quedar con los estacionarios. Existen métodos para otras familias, pero no son de interés en este curso.OBJETIVO: Generar un proceso estocástico (discreto) con función densidad de probabilidad ( o distribución) y correlación (o espectro) arbitrarias.✔ Problema sin solución general.✔ En general, incluso cuando es posible, sintetizar adecuadamente
el proceso es difícil✔ Vamos a exponer un método de generación lo más genérico
posible
20 de Febrero de 2007 28
GENERACIÓN DE SECUENCIAS (II)
¿Como generar procesos gaussianos con una cierta correlación?Recordar de ISA:✔ Si tenemos un ruido blanco gaussiano✔ Pasamos por un filtro con respuesta en frecuencia H(f)✔ Espectro del ruido coloreado: |H(f)|2✔ Distribución sigue siendo gaussiana.Este es el fundamento de la generación de secuencias correladas:
SY(f)=|H(f)|2
RY[n]=ℱ1{|H(f)|2}
Generación degaussianas
H(f)x[n] y[n]
20 de Febrero de 2007 29
GENERACIÓN DE SECUENCIAS (III)
Tratemos de generalizar ahora a otras distribuciones:¿Que pasa si:
?✔ Espectro: |H(f)|2✔ Pero distribución se modifica: cada salida es resultado de sumas
ponderadas de entradas ✔ Efecto sumamente difícil de controlar
Generación devariables aleatorias
H(f)x[n] y[n]
20 de Febrero de 2007 30
GENERACIÓN DE SECUENCIAS (IV)
Cambiemos ahora el método:¿Que pasa si :
?✔ Z=f(Y): No linealidad sin memoria.✔ Distribución es una gaussiana tras pasar por la transformación
f(Y) => predecible => controlando f(Y) podemos generar la distribución deseada.
✔ Espectro, al pasar por no linealidad, se distorsiona (y por tanto correlación). También es predecible esta distorsión => controlando H(f), para una f(Y) dada, se puede controlar espectro de la salida.
Generación degaussianas
H(f)x[n] y[n] f(Y) z[n]=f(y[n])
20 de Febrero de 2007 31
GENERACIÓN DE SECUENCIAS (V)
¿Como calcular f(Y)?: Puede hacerse en dos etapas:✔ Convertir gaussiana en uniforme: al igual que FX
1(.) sirve para transformar una uniforme en una distribución, FX(.) sirve para transformar esa distribución en uniforme.
✔ Convertir uniforme en la distribución deseada (método de la función inversa):
✔ f(Y)=FZ1(FY(Y))
20 de Febrero de 2007 32
GENERACIÓN DE SECUENCIAS (VI)
¿Como calcular H(f)?: ✔ Autocorrelación antes de pasar por no linealidad: R'(n)✔ Función densidad de probabilidad conjunta de dos muestras (u y
v) de la variable aleatoria y[n] separadas n muestras:
✔ Autocorrelación a la salida (z[n]):
✔ A partir de autocorrelación =>|H(f)|2=ℱ{R'[n]}. Usar métodos de diseño de filtros digitales.
g u , v ,R 'n=1
2π1−R 'nexp −
12u2
v2−2R 'n uv
R n =∫−∞
∞
∫−∞
∞
f u ⋅f v ⋅g u , v , R ' n ⋅du⋅dv
20 de Febrero de 2007 33
GENERACIÓN DE SECUENCIAS (V)
Relación R'(n)=función(R(n)) complicada de resolver en general. En introducción teórica a la práctica se da resuelta para algunos casos de distribuciones.En introducción teórica también se propone un método de síntesis de filtros a partir de R(n) (usando la DFT).
20 de Febrero de 2007 34
COMPROBACIÓN DE RESULTADOS
En la práctica se van a generar un conjunto de muestras de variables aleatorias y de procesos estocásticos.Hay que validar los resultados.Para ello utilizaremos un conjunto de funciones de MATLAB, aplicándolas sobre los resultados obtenidos para estimar parámetros de las variable aleatorias y procesos estocásticos generados.En prácticas posteriores veremos que es lo que hacen internamente estas funciones.
20 de Febrero de 2007 35
COMPROBACIÓN DE RESULTADOS (II)
Habrá que utilizar las siguientes funciones de MATLAB:✔ mean: media✔ std: desviación típica (raiz cuadrada de la varianza)✔ xcorr: correlación cruzada (¿como la usaría para calcular
autocorrelación?)✔ psd: densidad espectral de potencia de una señal ✔ hist: Histograma (recordar de LSCM)