Ojeda01 commited on
Commit
3b1f40a
·
verified ·
1 Parent(s): 4628525

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -0
app.py ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import numpy as np
3
+ import matplotlib.pyplot as plt
4
+
5
+ def main():
6
+ def calculate_pi(n):
7
+ x = np.random.rand(1, n)
8
+ y = np.random.rand(1, n)
9
+ r = np.sqrt(np.square(x) + np.square(y))
10
+ mask = r <= 1
11
+ aprox_pi = np.sum(mask) / n * 4
12
+ return aprox_pi, x, y, mask
13
+
14
+ st.title('Aproximación de π usando el Método de Monte Carlo')
15
+
16
+
17
+ st.write("""
18
+ ### Explicación del Método
19
+ La idea básica es que:
20
+
21
+ $$
22
+ \\frac{\\pi r^2}{4 r^2} \\approx \\frac{\\text{número de puntos dentro del círculo}}{\\text{número de puntos dentro del cuadrado}}
23
+ $$
24
+
25
+ Por lo tanto,
26
+
27
+ $$
28
+ \\pi \\approx 4 \\frac{\\text{número de puntos dentro del círculo}}{\\text{número de puntos dentro del cuadrado}}
29
+ $$
30
+ """)
31
+
32
+ # Entradas del usuario
33
+ num_simulations = st.slider('Número de Simulaciones', 10, 100000, 100)
34
+
35
+ # Cálculo de π
36
+ aprox_pi, x, y, mask = calculate_pi(num_simulations)
37
+
38
+ # Mostrar resultado
39
+ st.subheader(f'Aproximación de π: {aprox_pi}')
40
+
41
+ # Gráfica del proceso
42
+ fig, ax = plt.subplots()
43
+ ax.plot(x[mask], y[mask], 'o', color='blue', markersize=0.5, label='Dentro del círculo')
44
+ ax.plot(x[~mask], y[~mask], 'o', color='red', markersize=0.5, label='Fuera del círculo')
45
+ ax.set_aspect('equal')
46
+ ax.set_title('Simulación de Monte Carlo')
47
+ ax.legend()
48
+ st.pyplot(fig)
49
+
50
+ if __name__ == "__main__":
51
+ main()
52
+