-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexercicio_2.py
42 lines (33 loc) · 1.11 KB
/
exercicio_2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Monte Carlo
import matplotlib.pyplot as plt
import numpy as np
def calcular(N):
Nc = 0
for i in range(N):
x = -1.0 + 2.0 * np.random.rand()
y = -1.0 + 2.0 * np.random.rand()
if (x**2 + y**2 < 1.0):
Nc += 1
prob = Nc / N
return 4 * prob
repeticoes = 4
Ns = np.array([10**2, 10**3, 10**4, 10**5, 10**6])
pi_medias = np.zeros(len(Ns))
erros = np.zeros(len(Ns))
def valores():
for J, N in enumerate(Ns):
soma_resultados = 0
for k in range(repeticoes):
soma_resultados += calcular(N)
media_resultados = soma_resultados / repeticoes
pi_medias[J] = media_resultados
erros[J] = abs(np.pi - media_resultados)
print(f'N = {N}, Média de pi = {media_resultados:.6f}, Erro = {erros[J]:.6f}')
valores()
plt.figure(figsize=(10, 6))
plt.loglog(Ns, erros, marker='o', linestyle='-', color='b')
plt.xlabel('N (Número de pontos)')
plt.ylabel('Erro de pi - pi_MC|')
plt.title('Erro do cálculo de pi em função de N')
plt.grid(True, which="both", ls="--")
plt.show()