Python3 simula o processo de avaliação de π

Suponha que já saibamos que a fórmula para calcular a área de um círculo é: πr², e a área de um quadrado é r², mas não sabemos o valor específico de π. Os resultados da simulação são mostrados na figura: Comparamos a área s1 do círculo 1/4 com a área s2 do quadrado para obter 1/4π, então π é igual a 4 vezes s1/s2.
Insira a descrição da imagem aqui
O valor máximo dos eixos de coordenadas horizontais e verticais na figura é 1. O arco vermelho é um círculo de 1/4 com a origem como centro e 1 como raio. O método de simulação consiste em gerar aleatoriamente pontos (x, y), onde x e y pertencem ao intervalo (0, 1. Se o ponto estiver dentro de um círculo de 1/4 de raio 1, a área do círculo é contado, e o número total de pontos é contado como a área quadrada.

import random
import matplotlib.pyplot as plt
import numpy as np

def mock(n):
    # 画个坐标轴
    fig = plt.figure()
    ax = fig.add_axes([0, 0, 1, 1])
    ax.set_xlim(0, 1)
    ax.set_ylim(0, 1)
    # 随机生成0,1的点
    x = random.sample(range(1, n), n - 1)
    y = random.sample(range(1, n), n - 1)
    xx = [i / n for i in x]
    yy = [i / n for i in y]
    plt.scatter(xx, yy, color='g')
    # 画一个1/4圆
    x = np.linspace(0, 1, n)
    y = pow(1 - x ** 2, 0.5)
    plt.plot(x, y, color='r')
    # 计数圆内的点模拟圆面积
    count = 0
    for (i, j) in zip(xx, yy):
        d = pow(i * i + j * j, 0.5)
        if d <= 1:
            count += 1
    # s1/s2*4
    print(count / n * 4)
    plt.show()

if __name__ == '__main__':
    mock(1000)

Acho que você gosta

Origin blog.csdn.net/weixin_43275277/article/details/131778915
Recomendado
Clasificación