2Eva_IIT2009_T3 Densidad espectral de potencia

2da Evaluación II Término 2009-2010. Febrero 4, 2010 . FIEC03236

Tema 3 (30 puntos). Un proceso aleatorio estacionario en sentido amplio X(t) con densidad espectral de potencia:

\Im_{XX}(\omega) = 50 \pi \delta(\omega) + \frac{3}{1+\left(\frac{\omega}{2}\right)^2}

se aplica a una red con respuesta impulso

h(t) = 2 e^{-2t} \mu (t)

obteniendo luego de la red Y(t)
Determine:
a) Var[X(t)]
b) La densidad espectral de potencia de la respuesta de Y(t)
c) La potencia de Y(t)

Pares de Transformadas de Fourier:

x(t) \leftrightarrow X(\omega) 1 \leftrightarrow 2 \pi \delta(\omega) e^{-at}\mu (t) \leftrightarrow \frac{1}{a+j\omega} te^{-at}\mu (t) \leftrightarrow \frac{1}{(a+j\omega)^{2}} t^{n}e^{-at}\mu (t) \leftrightarrow \frac{n!}{(a+j\omega)^{n+1}} a>0

2Eva_IIT2009_T2 teorema limite central

2da Evaluación II Término 2009-2010. Febrero 4, 2010 . FIEC03236

Tema 2 (20 puntos). Se  ha calculado la suma de una lista de 100 números reales .

Suponga que los números se redondean al entero más cercano de tal manera que cada número tiene un error que está distribuido uniformemente en el intervalo (-0.5, 0.5).

Usando el teorema del límite central estime la probabilidad de que el error en la suma exceda de 6.

Q(x) = \frac{1}{\sqrt{2 \pi}} \int_{x}^{\infty} e^{-t^2 /2} dt
x Q(x) x Q(x)
0 5.00E-01 2.7 3.47E-03
0.1 4.60E-01 2.8 2.56E-03
0.2 4.21E-01 2.9 1.87E-03
0.3 3.82E-01 3.0 1.35E-03
0.4 3.45E-01 3.1 9.68E-04
0.5 3.09E-01 3.2 6.87E-04
0.6 2.74E-01 3.3 4.83E-04
0.7 2.42E-01 3.4 3.37E-04
0.8 2.12E-01 3.5 2.33E-04
0.9 1.84E-01 3.6 1.59E-04
1.0 1.59E-01 3.7 1.08E-04
1.1 1.36E-01 3.8 7.24E-05
1.2 1.15E-01 3.9 4.81E-05
1.3 9.68E-02 4.0 3.17E-05
1.4 8.08E-02 4.5 3.40E-06
1.5 6.68E-02 5.0 2.87E-07
1.6 5.48E-02 5.5 1.90E-08
1.7 4.46E-02 6.0 9.87E-10
1.8 3.59E-02 6.5 4.02E-11
1.9 2.87E-02 7.0 1.28E-12
2.0 2.28E-02 7.5 3.19E-14
2.1 1.79E-02 8.0 6.22E-16
2.2 1.39E-02 8.5 9.48E-18
2.3 1.07E-02 9.0 1.13E-19
2.4 8.20E-03 9.5 1.05E-21
2.5 6.21E-03 10.0 7.62E-24
2.6 4.66E-03

2Eva_IIT2009_T1 Densidad Espectral de Potencia

2da Evaluación II Término 2009-2010. Febrero 4, 2010 . FIEC03236

Tema 1 (30 puntos). Asuma un proceso estocástico estacionario en el sentido amplio X(t) con función de autocorrelación

R_X(t) = e^{-|t|} t \in \Re

a) Determine la densidad espectral de potencia del proceso

A(t) = X(t) - X(t-1)

Si se define el proceso estocástico

B(t) = X(t) cos(t+ \rho)

donde ρ es una variable aleatoria independiente de X(t) con distribución uniforme en el intervalo (0, π), determine:

b) Es B(t) estacionario en el sentido amplio
c) La mínima diferencia de tiempos para la cual dos variables aleatorias de B(t) son independientes entre sí.

Indicación: 2 cos(a) cos(b) = cos(a + b) + cos(a − b)

cdf – Modulación AM

Referencia: Leon W Couch 4-2 p234, «El Aguacate» introducción

Modulación en Amplitud (AM)

La modulación es el proceso de codificación de la información fuente, sonido o moduladora, dentro de una señal pasabanda s(t), resultande o modulada. La señal modulada se obtiene de:

senal(t) = A_c[1+moduladora(t)] cos(\omega_c t) s(t) = A_c[1+m(t)] cos(\omega_c t)

donde:

\omega_c = 2\pi f_c

fc es la frecuencia de la portadora o «carrier».
Ac es la amplitud de la portadora.

Como ejemplo, si se quiere enviar una señal de sonido obtenida de un archivo.wav modulada en Amplitud, la señal m(t) será:

muestra_GuitarraCuerda.wav

Instrucciones en Python

# pmf de un sonido
# entrada es archivo01
# propuesta:edelros@espol.edu.ec
import numpy as np
import matplotlib.pyplot as plt
import scipy.io.wavfile as waves
import scipy.stats as stats

# INGRESO 
# archivo01 = input('archivo de sonido 01: ' )
# k = int(input('muestras para ejemplo: '))
archivo01 = 'muestra_GuitarraCuerda.wav'
k = 500

# PROCEDIMIENTO
muestreo, sonido01 = waves.read(archivo01)

# Extrae un canal en caso de estéreo
canales = sonido01.shape
cuantos = len(canales)
canal = 0   
if (cuantos==1): # Monofónico
    uncanal = sonido01[:]  
if (cuantos>=2): # Estéreo
    uncanal = sonido01[:,canal]
    
moduladora = uncanal[0:k].astype(float)
dt = 1/muestreo
t  = np.arange(0,k*dt,dt)

# SALIDA GRAFICA
plt.plot(t,moduladora)
plt.title(' Moduladora m(t)')
plt.xlabel('t')
plt.ylabel('señal')
plt.plot()
plt.show()

Para el ejemplo, la señal de la portadora presentada tiene frecuencia de 5500 para que se pueda visualizar el efecto.
(Revisar frecuencias de portadoras AM estándares o ver el dial de un radio AM).

# Portadora:
fc = 5500
portadora = np.cos(2*np.pi*fc*t)

# SALIDA GRAFICA
plt.plot(t,portadora, color='orange')
plt.title(' Portadora')
plt.xlabel('t')
plt.ylabel('señal')
plt.plot()
plt.show()

Antes de aplicar la moduladora, se la normaliza para mantener la proporción en la gráfica

# normalizar y subir a positiva
moduladoranorm = moduladora/np.max(moduladora)
moduladora = (1+ moduladoranorm)

# Modular portadora
Ac = 1
modulada = Ac*moduladora*portadora

# SALIDA GRAFICA
plt.plot(t,moduladora,label='moduladora')
plt.plot(t,modulada,label='modulada')
plt.title(' Señal modulada S(t)')
plt.xlabel('t')
plt.ylabel('señal')
plt.legend()
plt.show()

cdf – una señal de sonido

Referencia: Leon W Couch apéndice B p675, «El Aguacate», pasillo introducción, Archivos de Audio.wav – Abrir, extraer una porción

De forma semejante al análisis para una señal triangular, se obtiene barriendo una ventana estrecha de Δx voltios de ancho, verticalmente a lo largo de las formas de onda y después midiendo la frecuencia relativa de la ocurrencia de voltajes en la ventana Δx.

El eje de tiempo se divide en n intervalos y la forma de onda aparece nΔx veces dentro de estos intervalos en la ventana Δx.

Se inicia abriendo el archivo 'muestra01_ElAguacateIntro.wav', seleccionando un canal en caso de ser estéreo. Para los cálculos se convierte a números reales ‘float’ de tipo estándar de python y para la gráfica se determina el rango de tiempo 't'.

# pmf de un sonido
# entrada es arcchivo01
# propuesta:edelros@espol.edu.ec
import numpy as np
import matplotlib.pyplot as plt
import scipy.io.wavfile as waves
import scipy.stats as stats

# INGRESO 
# archivo01 = input('archivo de sonido 01:' )
archivo01 = 'muestra01_ElAguacateIntro.wav'

# PROCEDIMIENTO
muestreo, sonido01 = waves.read(archivo01)

# Extrae un canal en caso de estéreo
canales=np.shape(sonido01)
cuantos=len(canales)
canal = 0   
if (cuantos==1): # Monofónico
    uncanal=sonido01[:]  
if (cuantos>=2): # Estéreo
    uncanal=sonido01[:,canal]
    
senal=uncanal.astype(float)
dt=1/muestreo
n=len(senal)
t=np.arange(0,n*dt,dt)

Se grafica la señal en observación de uncanal:

# SALIDA GRAFICA
plt.plot(t,senal)
plt.title(' Sonido')
plt.xlabel('t')
plt.ylabel('señal')
plt.plot()
plt.show()


Aplicando luego el mismo algoritmo usado para señales triangulares y senoidales, manteniendo la forma discreta.

# Función de Probabilidad de Masa, PMF
m=40  # intervalos eje vertical

#PROCEDIMIENTO
relativa = stats.relfreq(senal, numbins = m )
deltax=relativa.binsize

# Eje de frecuencias, por cada deltax
senalmin=np.min(senal)
senalmax=np.max(senal)
senalrango=np.linspace(senalmin,senalmax,m)

# SALIDA
print('frecuencia relativa:')
print(relativa.frequency)
print('Rango de Señal')
print(senalrango)
frecuencia relativa:
[ 0.00023583  0.00073469  0.00089796  0.00053515  0.00084354  0.00179592  0.00245805  0.00306576  0.0039093   0.00504308  0.0066576   0.0099229  0.01693424  0.02671202  0.03568254  0.05160998  0.06758277  0.07323356  0.08575057  0.09217234  0.11898413  0.08494331  0.07535601  0.06454422  0.05382313  0.03821315  0.02429932  0.01573696  0.01075737  0.00767347  0.00576871  0.00365533  0.00245805  0.00176871  0.00145125  0.00103401  0.0008254   0.00106122  0.00137868  0.0004898 ]
Rango de Señal
[-32768.         -31087.61538462 -29407.23076923 -27726.84615385 -26046.46153846 -24366.07692308 -22685.69230769 -21005.30769231 -19324.92307692 -17644.53846154 -15964.15384615 -14283.76923077 -12603.38461538 -10923.          -9242.61538462  -7562.23076923  -5881.84615385  -4201.46153846  -2521.07692308   -840.69230769    839.69230769   2520.07692308   4200.46153846   5880.84615385   7561.23076923   9241.61538462  10922.          12602.38461538  14282.76923077  15963.15384615  17643.53846154  19323.92307692  21004.30769231  22684.69230769  24365.07692308  26045.46153846  27725.84615385  29406.23076923  31086.61538462  32767.        ]
# SALIDA Grafico de PMF
plt.bar(senalrango,relativa.frequency, width=deltax*0.8)
plt.xlabel('Amplitud de señal')
plt.ylabel('PMF')
plt.show()

# Función distribución acumulada
acumulada=np.cumsum(relativa.frequency)

# SALIDA CDF
plt.step(senalrango,relativa.frequency,label='pmf', where='post')
plt.step(senalrango,acumulada,label='cdf', where='post')
plt.xlabel('Amplitud de señal')
plt.title(' Función de distribuión acumulada , CDF')
plt.legend()
plt.show()

Para grabar los archivos puede usar np.savetxt(‘nombrearchivo.txt’, arreglodata )

Correlación

Referencia: León-García 5.6.2 p258, Gubner 2.4 p91

Correlación

La correlación entre dos variables aleatorias X y Y se define como E[XY].

La correlación determina cuando dos variables se encuentran linealmente relacionadas; es decir cuando una es función lineal de la otra.

R(X,Y) = E[XY]

Propiedades de la función de correlación

Simetría

R(X,Y) = R[Y,X] R(X,X) = E[X^2] \geq 0

Desigualdad de Cauchy-Schwarz

|R(X,Y)| = \sqrt{(E[X]^2 E[Y]^2)}

Covarianza

Retomando la función de covarianza de un proceso estocástico se muestra que:

Cov(X,Y) = E[XY] - E[X]E[Y] = = R(X,Y) - E[X]E[Y]

Coeficiente de correlación lineal

Al multiplicar una de las variables X o Y por un número se incrementa la covarianza, para una mejor medida se normaliza la covarianza y así tener los valores en una escala absoluta.

El coeficiente de correlación de X y Y se define por:

\rho_{X,Y} = \frac{Cov(X,Y)}{\sigma_X \sigma_Y} = \frac{E[XY]-E[X]E[Y]}{\sigma_X \sigma_Y} donde: \sigma_X=\sqrt{Var(X)} \sigma_Y=\sqrt{Var(Y)} -1 \leq \rho_{X,Y} \leq 1

El coeficiente de correlación es como máximo en magnitud 1.

Note que la correlación y el coeficiente de correlación no son lo mismo al resultar de la formula de covarianza.

Covarianza bivariada Ejemplo Ross 2_33

Referencia: Ejemplo Ross 2.33 p51

La función densidad conjunta de X,Y es

f(x,y) = \frac{1}{y} e^{-(y+x/y)} donde: 0<x , y<\infty

los intervalos también se expresan como: 0<x<∞  , 0<y<∞

a) Verifique que es una función de densidad conjunta

b) Encuentre la Cov(X,Y)


Solución propuesa

Para mostrar que f(x,y) es una función de densidad conjunta se debe mostar que es no negativa y que la integral doble es 1.

\int_{-\infty}^{\infty} \int_{-\infty}^{\infty}f(x,y) dy dx = = \int_{0}^{\infty} \int_{0}^{\infty} \frac{1}{y} e^{-(y+x/y)} dy dx = = \int_{0}^{\infty} e^{-y} \int_{0}^{\infty} \frac{1}{y} e^{-x/y} dx dy

Resolviendo parcialmente el integral

\int_{0}^{\infty} \frac{1}{y} e^{-x/y} dx = \frac{1}{y} \int_{0}^{\infty} e^{-x/y} dx = = \frac{1}{y} \left. \frac{e^{-x/y}}{-\frac{1}{y}}\right|_{0}^{\infty} = -[e^{-\infty /y} - e^{0} ] = -(0-1) = 1

con el resultado se continua con el integral anterior:

= \int_{0}^{\infty} e^{-y} dy = \left. \frac{e^{-y}}{-1} \right|_{0}^{\infty} = - (e^{-\infty} - e^{0}) = = -(0-1) = 1

con lo que se comprueba que es una función densidad de probabilidad conjunta.


Covarianza (X,Y)

Se obtendrán primero las funciones marginales para determinar el valor esperado de cada una de ellas:

f_Y(y) = \int_{-\infty}^{\infty} f(x,y) dx = \int_{0}^{\infty} \frac{1}{y} e^{-(y+x/y)} dx = = \int_{0}^{\infty} \frac{1}{y} e^{-y} e^{-x/y} dx = e^{-y} \int_{0}^{\infty} \frac{1}{y}e^{-x/y} dx = e^{-y}

usando parte del integral anterior, se conoce que es igual a 1

se requiere el valor esperado E[y]:

E[Y] = \int_{-\infty}^{\infty} y f(y) dy = \int_{0}^{\infty} y e^{-y} dy =

integración por partes dv=e^{-y}dy , v = - e^{-y} , u=y, du=dy

\int u dv = uv - \int v du E[Y] = \left. - ye^{-y} \right|_{0}^{\infty} - \int_{0}^{\infty} (-e^{-y}) dy = -(\infty e^{-\infty} - 0 e^{-0}) - \left. e^{-y} \right|_{0}^{\infty} = = 0 -[e^{-\infty}- e^{0}] = -[0 -1] E[Y] =1

El valor esperado E[x] se obtiene como:

E[x] = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} x f(x,y) dy dx = = \int_{0}^{\infty} \int_{0}^{\infty} x \frac{1}{y} e^{-(y+x/y)} dy dx = = \int_{0}^{\infty} e^{-y} \int_{0}^{\infty} \frac{x}{y} e^{-x/y} dx dy =

para el integral respecto a x:

\int_{0}^{\infty} \frac{x}{y} e^{-x/y} dx =

integración por partes dv=\frac{1}{y}e^{-x/y} dx , v = \frac{\frac{1}{y}}{-(1/y)} e^{-x/y}, u=x, du=dx

\int u dv = uv - \int v du = = \left. x(-e^{-x/y})\right|_{0}^{\infty} - \int_{0}^{\infty} - e^{-x/y} dx = = [- \infty ye^{-\infty/y} - (-0e^{0/y})] + \int_{0}^{\infty} e^{-x/y} dx = = [-0+0] + \left. \frac{e^{-x/y}}{-(1/y)}\right|_{0}^{\infty} = =-y[e^{-\infty/y} - e^{-0/y}] = y

reemplazando en E[x] y usando el resultado del integral de E[y]:

E[x] = \int_{0}^{\infty} y e^{-y} dy = 1

Para calcular el valor de E[XY]:

E[XY] = =\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} xy f(x,y) dy dx = =\int_{0}^{\infty} \int_{0}^{\infty} xy \frac{1}{y} e^{-(y+x/y)} dy dx = = \int_{0}^{\infty} y e^{-y} \int_{0}^{\infty} \frac{x}{y} e^{-x/y} dx dy = = \int_{0}^{\infty} y e^{-y} (y) dy = \int_{0}^{\infty} y^2 e^{-y} dy =

nuevamente por partes: dv = e^{-y} dy, u=y^2 se obtiene

E[XY] = \int_{0}^{\infty} y^2e^{-y} dy = =\left. -y^2 e^{-y} \right|_{0}^{\infty} + \int_{0}^{\infty} 2ye^{-y}dy = 2E[Y] =2

En consecuencia:

Cov(X,Y) = E[XY] - E[X]E[Y] = 2-(1)(1) = 1

Covarianza bivariada

Referencia: Ross 2.5.3 p50

Covarianza

La covarianza y varianza de dos variables aleatorias X y Y se definen como:

Cov(X,Y) = E[(X-E[X])(Y- E[Y])] = E[XY] - E[X]E[Y]

Si X y Y son independientes, entonces Cov(X,Y) = 0

Propiedades

  1. Cov(X,X) = Var(X)
  2. Cov(X,Y) = Cov(Y,X)
  3. Cov(cX,Y) = c Cov(X,Y)
  4. Cov(X,Y+Z) = Cov(X,Y) + Cov(X,Z)

 

Pdf Bivariada Ejercicio02

Referencia: León-García 5.17 p 253

Ejemplo

Encuentre P[ X + Y ≤ 1] de la funcion en el ejemplo 5.16 mostrada a continuación :

f_{X,Y}(x,y)= \begin{cases} c e^{-x} e^{-y} & , 0\leq y \leq x < \infty \\ 0 & ,\text{otro caso} \end{cases}

Solución

La la región para integración es [ X + Y ≤ 1] donde la pdf no es cero. Se obtine la probabilidad del evento al añadir(integrar) rectángulos infinitesimales de ancho dy como se indica en la figura:

X + Y \leq 1 Y \leq 1 - X P[ X + Y \leq 1] = \int_{0}^{1/2} \int_{y}^{1-y} 2 e^{-x} e^{-y} dx dy = \int_{0}^{1/2} 2 e^{-y} \int_{y}^{1-y} e^{-x} dx dy = \int_{0}^{1/2} 2 e^{-y} \left. [-e^{-x}] \right|_{y}^{1-y} dy = = \int_{0}^{1/2} 2 e^{-y} [-e^{-(1-y)}-(-e^{-y})] dy = \int_{0}^{1/2} [2 e^{-2y}- 2 e^{-y-(1-y)}] dy = = \int_{0}^{1/2} [2 e^{-2y}- 2 e^{-1}] dy = \left. \left[ 2\frac{e^{-2y}}{-2} - 2 e^{-1}y\right] \right|t_{0}^{1/2} = = [ - e^{-2 (1/2)} - 2 e^{-1} (1/2) ] - [ -e^{0}-0] = -e^{-1}-e^{-1} +1 P[ X + Y \leq 1] = 1- 2e^{-1} = 0.26424111765711533

que limita la figura que genera la función a:


Instrucciones en Python

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

# Función evaluada
def fxydensidad(X,Y):
    n,m = np.shape(X)
    Z = np.zeros(shape=(n,m),dtype=float)
    
    c = 2
    for i in range(0,n,1):
        for j in range(0,m,1):
            x = X[i,j]
            y = Y[i,j]
            if (y>=0 and y<=x and (x + y)<=1):
                z = c*np.exp(-x)*np.exp(y)
                Z[i,j] = z
    return(Z)

# PROGRAMA
# INGRESO
# Rango de evaluación
xa = 0
xb = 1.5
ya = 0
yb = 1.5
#muestras por eje
nx = 200
ny = 200

# PROCEDIMIENTO
# Matriz de evaluación
y = np.linspace(ya,yb,ny)
x = np.linspace(xa,xb,nx)
X,Y = np.meshgrid(x,y)
# Evalua la función
Z = fxydensidad(X,Y)

# Zona de integración
def arealimite(X):
    n = len(X)
    yinferior = np.zeros(n,dtype=float)
    ysuperior = np.zeros(n,dtype=float)
    for i in range(0,n,1):
        x = X[i]
        if (x<0.5):
            y = x
        if (x>=0.5):
            y = 1 - x
        ysuperior[i] = y
    
    return(yinferior, ysuperior)

# PROCEDIMIENTO
yinferior , ysuperior = arealimite(x) 

# SALIDA GRAFICAS
figura1 = plt.figure(1)
plt.plot(x,yinferior)
plt.plot(x,ysuperior)
plt.fill_between(x, yinferior, ysuperior,
                 where= (ysuperior>=yinferior))
plt.xlabel('x')

# SALIDA
figura2 = plt.figure(2)
grafica2 = figura2.add_subplot(1, 1, 1, projection='3d')
grafica2.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
plt.show()

Pdf Bivariada Ejercicio

Referencia: León García Ejercicio 5.16 pag 252

Ejemplo

Encuentre la constante c de normalización y las pdf marginales de la siguiente función:

f_{X,Y}(x,y)= \begin{cases} c e^{-x} e^{-y} &, 0\leq y \leq x < \infty \\ 0 & ,\text{otro caso} \end{cases}

Solución

la función es válida en la región mostrada:

La constante c se encuentra cumpliendo la condición de normalización:

1 = \int_{0}^{\infty} \int_{0}^{x} c e^{-x} e^{-y} dy dx = = \int_{0}^{\infty} c e^{-x} (1-e^{-x}) dx = \frac{c}{2} 1 = \frac{c}{2} c = 2

Determinar las marginales, conociendo que c=2:

f_X (x) = \int_{0}^{\infty} f_{X,Y}(x,y) dy = = \int_{0}^{x} 2 e^{-x} e^{-y} dy = 2 e^{-x} \int_{0}^{x} e^{-y} dy = = 2 e^{-x} \left. \left[ - e^{-y} \right]\right|_{0}^{x} = 2 e^{-x} \left[ -e^{-x}-(-e^{0}) \right] = f_X (x) = 2 e^{-x} (1- e^{-x}) 0\leq x < \infty
f_Y (y) = \int_{0}^{\infty} f_{X,Y}(x,y) dx = = \int_{y}^{\infty} 2 e^{-x} e^{-y} dx = 2 e^{-y} \int_{y}^{\infty} e^{-x} dx = = 2 e^{-y} \left. \left[ - e^{-x} \right]\right|_{y}^{\infty} = 2 e^{-y} \left[-e^{-\infty}-(-e^{-y})\right] = = 2 e^{-y} 2 e^{-y} f_Y (y) = 2 e^{-2y} 0\leq y < \infty

Tarea: Verificar que las funciones marginales cumplen que el integral es 1

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# Función evaluada
def fxydensidad(X,Y):
    n,m =np.shape(X)
    Z=np.zeros(shape=(n,m),dtype=float)
    
    c=2
    for i in range(0,n,1):
        for j in range(0,m,1):
            x=X[i,j]
            y=Y[i,j]
            
            if (y>=0 and y<=x):
                z=c*np.exp(-x)*np.exp(y)
                Z[i,j]=z
    return(Z)

# PROGRAMA ---------

# INGRESO
# Rango de evaluación
xa = 0
xb = 4
ya = 0
yb = 4
# muestras por eje
nx = 500
ny = 500

# PROCEDIMIENTO

# Matriz de evaluación
y = np.linspace(ya,yb,ny)
x = np.linspace(xa,xb,nx)
X,Y = np.meshgrid(x,y)

# Evalúa la función
Z = fxydensidad(X,Y)

# SALIDA
figura  = plt.figure(1)
grafica = figura.add_subplot(1, 1, 1, projection='3d')
grafica.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
plt.show()

# Zona de integración
def arealimite(X):
    n = len(X)
    yinferior = np.zeros(n,dtype=int)
    ysuperior = X
    return(yinferior, ysuperior)

# PROCEDIMIENTO
yinferior, ysuperior = arealimite(x)

# SALIDA
plt.plot(x, yinferior)
plt.plot(x, ysuperior)
plt.fill_between(x, yinferior, ysuperior, where=(ysuperior>=yinferior))
plt.show()

# Forma de las marginales
def marginalx(x):
    fx = 2*np.exp(-x)*(1-np.exp(-x))
    return(fx)

# PROCEDIMIENTO
deltax = (xb-xa)/nx
fx = marginalx(x)
Fx = np.cumsum(fx*deltax)
integrax = np.sum(fx*deltax)

# SALIDA
plt.plot(x,fx, label='f(x)')
plt.plot(x,Fx, label='F(x)')
plt.xlabel('x')
plt.legend()
plt.show()

# Forma de las marginales
def marginaly(y):
    fy = 2*np.exp(-2*y)
    return(fy)

# PROCEDIMIENTO
deltay = (yb-ya)/ny
fy = marginaly(y)
Fy = np.cumsum(fy*deltay)
integray = np.sum(fy*deltay)

# SALIDA
print(' El integral sobre el area es: ', integray)

plt.plot(y,fy, label='f(y)')
plt.plot(y,Fy, label='F(y)')
plt.xlabel('y')
plt.legend()
plt.show()