MATEMATICAS
MATEMATICAS
MATEMATICAS
Resuelva por el método de Euler. Para estudiar la interacción entre el alce y la población de
lobos, consideremos el siguiente modelo presa-depredador:
Donde E(t) es la población de alces y W(t) es la población de lobos. Todas las poblaciones se
miden en miles. La variable t representa el tiempo medido en años desde 1995. Determine en el
presente año la cantidad de población de alces y lobos.
import numpy as np
import matplotlib.pyplot as plt
for i in range(n):
t[i+1] = t[i] + h
y[i+1] = y[i] + h * f(t[i], y[i])
return t, y
# Valores iniciales
t0 = 0
y0 = np.array([18, 0.021]) # [E(0), W(0)]
EJERCICIO 2
import numpy as np
import matplotlib.pyplot as plt
EJERCICIO 3
Una enfermedad contagiosa se propaga en una pequeña comunidad, con una población fija de n
personas, por contacto entre individuos infectados y personas que son susceptibles a la
enfermedad y que nadie sale de la comunidad mientras se propaga la epidemia. Sea s(t) número
de personas medido en cientos que son suceptibles a la enfermedad pero que aún no están
infectados, i(t) número de personas infectadas con la enfermedad y s(t) número de personas
que se han recuperado.
Utilice uno de los métodos numéricos para determinar en qué tiempo se alcanza el pico de
contagio de la epidemia.
import numpy as np
import matplotlib.pyplot as plt
Args:
f: Función que representa el sistema de ecuaciones
diferenciales.
Debe tener la forma f(t, s, i, r), donde t es el tiempo, s
es el número de susceptibles,
i es el número de infectados y r es el número de
recuperados.
s0: Valor inicial de susceptibles.
i0: Valor inicial de infectados.
r0: Valor inicial de recuperados.
k1: Coeficiente k1.
k2: Coeficiente k2.
h: Tamaño del paso.
n: Número de iteraciones.
Returns:
Tres arrays con las soluciones aproximadas para susceptibles,
infectados y recuperados en cada iteración.
"""
t = np.zeros(n+1)
s = np.zeros(n+1)
i = np.zeros(n+1)
r = np.zeros(n+1)
t[0] = 0
s[0] = s0
i[0] = i0
r[0] = r0
for j in range(n):
t[j+1] = t[j] + h
s[j+1] = s[j] + h * f(t[j], s[j], i[j], r[j])[0]
i[j+1] = i[j] + h * f(t[j], s[j], i[j], r[j])[1]
r[j+1] = r[j] + h * f(t[j], s[j], i[j], r[j])[2]
return t, s, i, r
# Valores iniciales
s0 = 20 # Número inicial de susceptibles
i0 = 1 # Número inicial de infectados
r0 = 0 # Número inicial de recuperados
Utilice los métodos de Heun y Ringe Kutta para obtener la gráfica de solución en el intervalo de 0 a
3π/2
import numpy as np
import matplotlib.pyplot as plt
# Parámetros iniciales
t0 = 0
y0 = 0
y1 = 1
h = 0.01
# Gráfica de la solución
plt.plot(t_values_heun, y_values_heun, label='Heun')
plt.plot(t_values_rk, y_values_rk, label='Runge-Kutta')
plt.xlabel('t')
plt.ylabel('y(t)')
plt.legend()
plt.grid(True)
plt.show()
EJERCICIO 5
Resuelva por el método de Runge Kutta 4 Orden. Grafique los resultados. La reacción A->b tiene
lugar en dos reactores en serie. Los reactores están bien mezclados, pero no en estado estable.
El balance de masa de estado no estable para cada tanque de agitadores es el siguiente:
import numpy as np
import matplotlib.pyplot as plt
EJERCICIO 6
Terremotos que sacuden edificios. Sea que x represente el desplazamiento horizontal del i-
ésimo piso a partir de su posición de equilibrio. La posición de equilibrio será un punto fijo en el
suelo, de forma que x0=0. Como ejemplo sencillo considere un edificio de dos pisos
Halle la solución por runge kutta cuarto orden y grafique desde t=0 hasta t=20. Compare con la
gráfica de la solución analítica.
import numpy as np
import matplotlib.pyplot as plt
# Solución analítica
c2 = 0.0317
c4 = 0.0317
w1 = 2.288
w2 = 0.874
EJERCICIO 7
Del tanque cónico circular recto que se muestra en la figura, sale agua por un agujero circular
que está en el fondo. Resuelva la ecuación diferencial para la altura h en función del tiempo t. El
radio del agujero es 2 7.5pulg, g=32pies/s A r , el factor fricción contracción es c 3.7 .
import math
from scipy.integrate import odeint
# Parámetros
ra = 7.5 # Radio del agujero en pulgadas
g = 32 # Aceleración debida a la gravedad en pies/(s^2)
c = 3.7 # Factor de fricción contracción
R = 8 # Radio del tanque en pies
H = 20 # Altura total del tanque en pies
h0 = 18 # Altura inicial del líquido en pies
t = 3.5 # Tiempo en segundos
EJERCICIO 8
Resuelva la ecuación diferencial por el método de Heun. Grafique los resultados. Las dinámicas
de un sistema forzado resorte-masa-amortiguador se representa con la EDO de segundo orden
siguiente:
import numpy as np
import matplotlib.pyplot as plt
# Condiciones iniciales
x0 = 0.0 # Posición inicial
v0 = 0.0 # Velocidad inicial
# Gráficas
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.plot(t_linear, x_linear, label='Resorte lineal')
plt.plot(t_nonlinear, x_nonlinear, label='Resorte no lineal')
plt.xlabel('Tiempo')
plt.ylabel('Desplazamiento')
plt.legend()
plt.subplot(1, 2, 2)
plt.plot(t_linear, v_linear, label='Resorte lineal')
plt.plot(t_nonlinear, v_nonlinear, label='Resorte no lineal')
plt.xlabel('Tiempo')
plt.ylabel('Velocidad')
plt.legend()
plt.tight_layout()
plt.show()
EJERCICIO 9
La temperatura ambiente Tm podría ser una función del tiempo t. Suponga que, en un medio
ambiente controlado, Tm(t) es periódica con un periodo de 24 horas. Diseñe un modelo
matemático para la temperatura T(t) de un cuerpo dentro de este medio ambiente. K=0.25
Resuelva mediante el método de Heun, realice la gráfica de T desde 0 hasta 48 horas
import numpy as np
import matplotlib.pyplot as plt
EJERCICIO 10
Realice pruebas de media, varianza y uniformidad a los 50 números aleatorios siguiente con un
nivel de aceptación del 95%.
PRUEBA DE MEDIAS
Z ALFA/2 5%
PROMEDIO 0,515906
1,9599639
VALOR DE ALFA 8
0,4199848
LIMITE INFERIOR 1
0,5171458
LIMITE SUPERIOR 1
PRUEBA DE VARIANZA
VARIANZA 0,07107468
VALOR DE CHI CUADRADA PARA EL LIMITE INFERIOR
58,1200597
L. INFERIOR 0,12418816
PRUEBA DE UNIFORMIDAD
CALCULANDO M 7,07106781
INTERVALOS
TOTAL 0,3831
ANCHO DE CLASE 0,05472857
FRECUENCI (Ei
INTERVALOS A Ei=n/m -Oi)^2/Ei
0,0007142
0,054728571 7 7,07106781 7
3,6367532
0,209457143 2 7,07106781 4
6,7896536
0,364185714 14 7,07106781 3
0,1622366
0,518914286 6 7,07106781 4
0,0007142
0,673642857 7 7,07106781 7
0,0007142
0,828371429 7 7,07106781 7
0,0007142
0,9831 7 7,07106781 7
10,591500
6
2,3659738
ESTADISTICO EN TABLAS 8
import numpy as np
from scipy import stats
# Prueba de media
mean = np.mean(numbers)
t_stat, p_value = stats.ttest_1samp(numbers, 0.5)
mean_accept = p_value > alpha
# Prueba de varianza
variance = np.var(numbers)
chi2_stat, p_value = stats.chisquare(numbers)
variance_accept = p_value > alpha
# Prueba de uniformidad
uniform_stat, p_value = stats.kstest(numbers, 'uniform')
uniform_accept = p_value > alpha
# Resultados
print("Prueba de media:")
print(f"Media: {mean}")
print(f"Estadístico t: {t_stat}")
print(f"Valor p: {p_value}")
print(f"Aceptado: {mean_accept}")
print()
print("Prueba de varianza:")
print(f"Varianza: {variance}")
print(f"Estadístico chi-cuadrado: {chi2_stat}")
print(f"Valor p: {p_value}")
print(f"Aceptado: {variance_accept}")
print()
print("Prueba de uniformidad:")
print(f"Estadístico de Kolmogorov-Smirnov: {uniform_stat}")
print(f"Valor p: {p_value}")
print(f"Aceptado: {uniform_accept}")
Prueba de media:
Media: 0.5152059999999999
Estadístico t: 0.40613111638335886
Valor p: 0.7826147471183716
Aceptado: True
Prueba de varianza:
Varianza: 0.06869000096399999
Estadístico chi-cuadrado: 6.666265626176714
Valor p: 0.7826147471183716
Aceptado: True
Prueba de uniformidad:
Estadístico de Kolmogorov-Smirnov: 0.0897
Valor p: 0.7826147471183716
Aceptado: True
EJERCICIO 11
Determine si la siguiente lista de 100 números de dos dígitos tiene distribución uniforme con
nivel de aceptación de 90%
n 100
m 10
Intervalos Oi Ei=n/m Ei-Oi)^2/Ei
0 0,1 7 10 0,9
0,1 0,2 16 10 3,6
0,2 0,3 12 10 0,4
0,3 0,4 5 10 2,5
0,4 0,5 14 10 1,6
0,5 0,6 8 10 0,4
0,6 0,7 8 10 0,4
0,7 0,8 11 10 0,1
0,8 0,9 7 10 0,9
0,9 1 12 10 0,4
11,2
14,683656
TABLA CHI CUADRADO 6
import numpy as np
from scipy import stats
# Prueba de uniformidad
uniform_stat, p_value = stats.kstest(numbers, 'uniform')
uniform_accept = p_value > alpha
# Resultados
print("Prueba de uniformidad:")
print(f"Estadístico de Kolmogorov-Smirnov: {uniform_stat}")
print(f"Valor p: {p_value}")
print(f"Aceptado: {uniform_accept}")
Prueba de uniformidad:
Estadístico de Kolmogorov-Smirnov: 0.2841
Valor p: 0.06383055017259676
Aceptado: False
EJERCICIO 12
Utilice la prueba chi cuadrado para determinar qué tipo de distribución siguen los siguientes
datos.
PRUEBA DE UNIFORMIDAD
CALCULANDO M 10
17,8
import numpy as np
from scipy import stats
# Datos proporcionados
data = [17.392, 8.110, 4.078, 3.151, 3.528, 2.440, 5.924, 3.461,
2.052, 10.369,
3.690, 10.870, 4.793, 2.498, 0.569, 8.281, 0.154, 5.959,
3.384, 12.877,
13.602, 5.244, 16.677, 5.977, 4.313, 4.767, 2.381, 6.443,
1.392, 1578,
8.115, 4.891, 6.720, 7.728, 2.717, 10.451, 5.901, 0.818,
7.088, 2.637,
4.714, 3.032, 1.495, 15.733, 7.768, 2.333, 7.822, 3.708,
6.412, 1.290,
3.957, 5.285, 7.094, 3.078, 1.264, 2.630, 10.177, 2.155,
2.945, 7552,
11.094, 4.772, 7.281, 14.344, 19.867, 0.119, 2.072, 1.486,
3.791, 4.214,
1.611, 1.781, 1530, 3.280, 4.301, 0.202, 7.489, 1.422, 1.413,
0.022,
6.001, 9.269, 8.477, 3.043, 0.877, 6.966, 2.103, 1.816, 0.433,
2.547,
0.843, 1.182, 8.121, 2.007, 1.395, 4.661, 7.378, 5.300,
17.066, 12.171]
# Resultados
print("Prueba de chi cuadrado:")
print(f"Estadístico chi cuadrado: {chi2_stat}")
print(f"Valor p: {p_value}")
print(f"Aceptado: {chi2_accept}")
import numpy as np
from scipy import stats
# Datos proporcionados
data = [17.392, 8.110, 4.078, 3.151, 3.528, 2.440, 5.924, 3.461,
2.052, 10.369,
3.690, 10.870, 4.793, 2.498, 0.569, 8.281, 0.154, 5.959,
3.384, 12.877,
13.602, 5.244, 16.677, 5.977, 4.313, 4.767, 2.381, 6.443,
1.392, 1578,
8.115, 4.891, 6.720, 7.728, 2.717, 10.451, 5.901, 0.818,
7.088, 2.637,
4.714, 3.032, 1.495, 15.733, 7.768, 2.333, 7.822, 3.708,
6.412, 1.290,
3.957, 5.285, 7.094, 3.078, 1.264, 2.630, 10.177, 2.155,
2.945, 7552,
11.094, 4.772, 7.281, 14.344, 19.867, 0.119, 2.072, 1.486,
3.791, 4.214,
1.611, 1.781, 1530, 3.280, 4.301, 0.202, 7.489, 1.422, 1.413,
0.022,
6.001, 9.269, 8.477, 3.043, 0.877, 6.966, 2.103, 1.816, 0.433,
2.547,
0.843, 1.182, 8.121, 2.007, 1.395, 4.661, 7.378, 5.300,
17.066, 12.171]
# Resultados
print("Prueba de chi cuadrado:")
print(f"Estadístico chi cuadrado: {chi2_stat}")
print(f"Valor p: {p_value}")
print(f"Aceptado: {chi2_accept}")
EJERCICIO 13
# Literal A
import numpy as np
import matplotlib.pyplot as plt
# Función de densidad
def density_func(x):
return 36 * (x**2) * np.exp(-12 * x**2)
for i in range(n):
x[i] = np.searchsorted(cdf_func(np.linspace(0, 5, 1000)),
u[i])
return x
# Función de probabilidad
def probability_func(x):
return (1/2) * (1/2)**x
for i in range(n):
x[i] = np.searchsorted(cdf_func(10), u[i])
return x
EJERCICIO 14
import numpy as np
for _ in range(5):
u = np.random.uniform(0, 1)
x = np.sqrt(u)
random_variables.append(x)
for _ in range(5):
u = np.random.uniform(0, 1)
x = 2 - np.sqrt(2 - u)
random_variables.append(x)
return random_variables
Variable 1: 0.6667061265262845
Variable 2: 0.9008470121016751
Variable 3: 0.9946135185366567
Variable 4: 0.5641642368435492
Variable 5: 0.8814705330486429
Variable 6: 0.7669372020545449
Variable 7: 0.9214664769359049
Variable 8: 0.9822598850754294
Variable 9: 0.9929163809265047
Variable 10: 0.9615240393004187
EJERCICIO 15
b) Distribución triangular con límite inferior = 4, valor más probable = 10 y límite superior = 16
import numpy as np
from scipy.stats import triang, expon, norm, poisson
EJERCICIO 16
Clasifique las siguientes variables aleatorias como discretas o continuas y justifique él porque:
e) P: el número de permisos para construcción que los funcionarios de una ciudad emiten cada
mes.
print("a) X:", x)
print("b) Y:", y)
print("c) M:", m)
print("d) N:", n)
print("e) P:", p)
print("f) Q:", q)
a) X: Discreta
b) Y: Continua
c) M: Continua
d) N: Discreta
e) P: Discreta
f) Q: Continua
EJERCICIO 17
El tiempo que pasa, en horas, para que un radar detecte entre conductores sucesivos a los que
exceden los límites de velocidad es una variable aleatoria continua con una función de
distribución acumulativa
Calcule la probabilidad de que el tiempo que pase para que el radar detecte entre conductores
sucesivos a los que exceden los límites de velocidad sea menor de 12 minutos.
import math
def probability_less_than_12_minutes():
x = 12 / 60 # Convertir 12 minutos a horas
probability = 1 - math.exp(-8 * x)
return probability
probability = probability_less_than_12_minutes()
print("La probabilidad de que el tiempo sea menor de 12 minutos es:",
probability)
Ejercicio 18
a) Evalúe k
b) Calcule F(x) y utilice el resultado para evaluar P(0.3<X<0.6)
import math
def evaluate_k():
integral = 1 / (2/3)
k = math.sqrt(integral)
return k
def calculate_probability():
k = evaluate_k()
f_0_3 = cumulative_distribution_function(0.3, k)
f_0_6 = cumulative_distribution_function(0.6, k)
probability = f_0_6 - f_0_3
return probability
k = evaluate_k()
print("El valor de k es:", k)
probability = calculate_probability()
print("La probabilidad P(0.3 < X < 0.6) es:", probability)
Ejercicio 19
Suponga que cierto tipo de pequeñas empresas de procesamiento de datos están tan
especializadas que algunas tienen dificultades para obtener utilidades durante su primer año de
operación. La función de densidad de probabilidad que caracteriza la proporción Y que obtiene
utilidades está dada por:
b) Calcule la probabilidad de que al menos 50% de las empresas tenga utilidades durante el primer
año.
c) Calcule la probabilidad de que al menos 80% de las empresas tenga utilidades durante el primer
año.
def evaluate_k():
integral, _ = spi.quad(lambda y: y**4 * (1-y)**3, 0, 1)
k = 1 / integral
return k
def calculate_probability(minimum_proportion):
k = evaluate_k()
integral, _ = spi.quad(lambda y: k * y**4 * (1-y)**3,
minimum_proportion, 1)
probability = 1 - integral
return probability
k = evaluate_k()
print("El valor de k es:", k)
probability_50 = calculate_probability(0.5)
print("La probabilidad de que al menos el 50% de las empresas tenga
utilidades durante el primer año es:", probability_50)
probability_80 = calculate_probability(0.8)
print("La probabilidad de que al menos el 80% de las empresas tenga
utilidades durante el primer año es:", probability_80)
El valor de k es: 280.00000000000006
La probabilidad de que al menos el 50% de las empresas tenga
utilidades durante el primer año es: 0.3632812499999999
La probabilidad de que al menos el 80% de las empresas tenga
utilidades durante el primer año es: 0.9437184000000001
Ejercicio 20
Las mediciones en los sistemas científicos siempre están sujetas a variación, algunas veces más
que otras. Hay muchas estructuras para los errores de medición y los estadísticos pasan mucho
tiempo modelándolos. Suponga que el error de medición X de cierta cantidad física es
determinado por la siguiente función de densidad:
c) Para esta medición específica, resulta indeseable si la magnitud del error (es decir, |x|) es
mayor que 0.8. ¿Cuál es la probabilidad de que esto ocurra?
def evaluate_k():
integral, _ = spi.quad(lambda x: 3 - x**2, -1, 1)
k = 1 / integral
return k
def calculate_probability_less_than(value):
k = evaluate_k()
integral, _ = spi.quad(lambda x: k * (3 - x**2), -1, value)
probability = integral
return probability
def calculate_probability_greater_than(value):
k = evaluate_k()
integral, _ = spi.quad(lambda x: k * (3 - x**2), value, 1)
probability = integral
return probability
k = evaluate_k()
print("El valor de k es:", k)
probability_less_than_half = calculate_probability_less_than(1/2)
print("La probabilidad de que un error aleatorio en la medición sea
menor que 1/2 es:", probability_less_than_half)
probability_greater_than_08 = calculate_probability_greater_than(0.8)
print("La probabilidad de que la magnitud del error sea mayor que 0.8
es:", probability_greater_than_08)