<jupyter_start><jupyter_text>Simulación de procesos financieros. **Nombres:**  <NAME>**Fecha:** 08 de marzo del 2021.  **Expediente** :  724055       **Profesor:** <NAME>. Estudiante 1 Tarea 6: Clase 10     [Link a repositorio GitHub](https://github.com/AndresLaresBarragan/Tarea6_ALares)    Partiendo que se desea generar variables aleatorias para la siguiente función de densidad$$f(x)=30(x^2-2x^3+x^4)$$Responda los siguientes literales:1. Usar como función que mayora a $f(x)$ a $t(x)=a \sin(\pi x)$ donde a es el máximo de la función $f(x)$ y graficarlas en una misma gráfica, para validar que en realidad si cumple la condición $t(x)\geq f(x)$.2. Encontrar la función de densidad $g(x)$ según lo visto en clase. Reportar todos los cálculos realizados para encontrar dicha función usando Markdown (Latex).3. Usar la función encontrada en el punto 2 y utilizar el método de la transformada inversa visto en la clase 9, para generar variables aleatorias que sigan la distribución $g(x)$. **Nota:** Recuerde que el método de la transformada inversa funciona con la distribución de probabilidad acumulada y no con su densidad. Nuevamente similar al punto anterior reportar todos los cálculos usando Markdown (Latex). 4. Según el punto 3, generar 10000 puntos aleatorios que sigan la distribución $g(x)$ y comparar con su histograma para validar que los puntos generados siguen la distribución deseada. El resultado debe ser como sigue:![imagen.png](attachment:imagen.png) 5. Genere 500 puntos aleatorios usando el método de aceptación y rechazo y las funciones $f(x)$ y $t(x)$ para validar que todos los cálculos anteriores están correctamente realizados. El resultado debe de ser como sigue:![imagen.png](attachment:imagen.png) 6. Comparar el porcentaje de puntos de aceptación cuando se usa $t(x)$ constante y $t(x)$ un pulso senoidal. Concluir 7. Genere una variable aleatoria $X$ a partir de la siguiente PDF$$f(x)=20x(1-x)^3$$ usando el método de aceptación y rechazo 8. Seguir un procedimiento similar al mostrado cuando se generó una distribución binomial, pero en esta caso genere un código que genere variables aletorias Poisson cuya función de distribución de probabilidad esta dada por:>$$P(k,\lambda)=\frac{e^{-\lambda}(\lambda)^k}{k!}$$    > Demuestre matemáticamente que > $$P(k+1)=\frac{\lambda}{k+1}P(k)$$> y a partir de esta relación genere variables aletorias que distribuyen poisson usando el método de la transformada inversa.Enlace: https://es.wikipedia.org/wiki/Distribuci%C3%B3n_de_Poisson<jupyter_code>from scipy import optimize
from scipy.stats import beta
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
%matplotlib inline<jupyter_output><empty_output><jupyter_text>1. Usar como función que mayora a $f(x)$ a $t(x)=a \sin(\pi x)$ donde a es el máximo de la función $f(x)$ y graficarlas en una misma gráfica, para validar que en realidad si cumple la condición $t(x)\geq f(x)$.<jupyter_code>f = lambda x: 30 * (x**2 -2 * x**3 + x**4) 
a = f(optimize.fmin(lambda x:-f(x), 0, disp=False))
t = lambda x: a*np.sin(np.pi*x)

x = np.arange(0, 1, 0.01)
plt.plot(x,f(x),label='f(x)')
plt.plot(x,t(x),label='t(x)')
plt.legend()
plt.show()<jupyter_output><empty_output><jupyter_text>**$\therefore$ Se cumple que $t(x) \geq f(x)$**  2. Encontrar la función de densidad $g(x)$ según lo visto en clase. Reportar todos los cálculos realizados para encontrar dicha función usando Markdown (Latex). $$\small{\begin{align*}g(x)  & = \frac{t(x)}{c}                   &&\text{donde } c=\int_{-\infty}^{\infty}t(x)dx \geq 1 \\\\      & = \frac{a\sin{(\pi x)}}{c}         &&(\text{susituyendo t(x)})\\\\    c & = \int_{-\infty}^{\infty}t(x)dx    && (\text{desarrollar c})\\      &= a\int_{0}^{1}{\sin{(\pi x)}dx}    && (t(x)\text{ acotada dentro de }[0,1])\\      &= a\frac{1}{\pi}\int_{0}^{\pi}{\sin{(u)}du}   &&\text{(integración por sustitución: } u = \pi x)\\      &= \frac{a}{\pi}[-\cos{(u)}]_{0}^{\pi}\\      &= \frac{a}{\pi}[2]\\      & c  = \frac{2a}{\pi}                && \text{(sustituir en }g(x))\\\\g(x)  & = \frac{a\sin{(\pi x)}}{\frac{2a}{\pi}}\\      & = \frac{\pi \sin{(\pi x)}}{2}      &&\therefore \quad \text{PDF} \Rightarrow g(x) = \frac{\pi \sin{(\pi x)}}{2}\\\end{align*}}$$  3. Usar la función encontrada en el punto 2 y utilizar el método de la transformada inversa visto en la clase 9, para generar variables aleatorias que sigan la distribución $g(x)$. **Nota:** Recuerde que el método de la transformada inversa funciona con la distribución de probabilidad acumulada y no con su densidad. Nuevamente similar al punto anterior reportar todos los cálculos usando Markdown (Latex).  $$\small{\begin{align*}  \text{CDF}\\G(x)  &= \int{g(x)dx}\\      &= \frac{\pi}{2}\int{\sin{(\pi x)}dx}\\      &= \frac{1}{2}\int{\sin{(u)}du}                 &&\text{(integración por sustitución: } u = \pi x)\\      &= \frac{1}{2}(-\cos{(u)})\\      &= -\frac{1}{2}(\cos{(\pi x)})                &&\text{(cambio de variable: } u = \pi x)\\\\      &G(x)  = \int{g(x)dx} = -\frac{1}{2}\cos{\pi x}\\\\\\\text{Transformada inversa}\\     & G^{-1}(U) =\frac{\cos^{-1}{(-2U)}}{\pi} = x         &&\text{donde U} \sim \text{uniforme}(0,1)\end{align*}}$$<jupyter_code>T_inv = lambda N: (np.arccos(-2*np.random.uniform(0,1, size = N)))/np.pi
N = 1000 
continuos = T_inv(N)

x = np.arange(0.01, .99, 0.01) # valores desde 0.01 hasta 0.99 para evitar dividir entre cero.
f = lambda x: (np.pi*np.sin(np.pi*x))/2

plt.hist(continuos, bins = 50, density = True, label = 'Valores Generados')
plt.plot(x,f(x),label='PDF')
plt.legend()
plt.show()<jupyter_output><ipython-input-7-fdc7dd365e18>:1: RuntimeWarning: invalid value encountered in arccos
  T_inv = lambda N: (np.arccos(-2*np.random.uniform(0,1, size = N)))/np.pi
{'fraction_non_alphanumeric': 0.16704406897753005, 'fraction_numerical': 0.022469952969865876, 'mean_word_length': 4.036842105263158, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 19, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '617523', 'license': 'MIT', 'n_tokens_mistral': 2226, 'n_tokens_neox': 2097, 'n_words': 637, 'path': 'Tarea6_ALares.ipynb', 'repo_name': 'AndresLaresBarragan/Tarea6_ALares', 'size': '5779'}