ÎncepețiÎncepe gratuit

Calcularea valorii lui pi

Acum lucrăm printr-un exemplu clasic – estimarea valorii lui \(\pi\).

Imagine-ți un pătrat cu latura \(2\), centrat în originea \((0, 0)\), ale cărui colțuri au coordonatele \((1, 1), (1, -1), (-1, 1), (-1, -1)\). Aria acestui pătrat este \(2\times 2 = 4\). Acum imaginează-ți un cerc cu raza \(1\), centrat în origine, care se încadrează perfect în interiorul pătratului. Aria cercului va fi \(\pi \times \text{radius}^2 = \pi\).

Pentru a estima \(\pi\), eșantionăm aleatoriu mai multe puncte în interiorul pătratului și calculăm fracția de puncte care se află în interiorul cercului (\(x^2 + y^2 <= 1\)). Aria cercului este atunci de \(4\) ori această fracție, ceea ce ne oferă estimarea lui \(\pi\).

După acest exercițiu, vei înțelege cum să folosești simularea pentru calcule numerice.

Acest exercițiu face parte din cursul

Simulare statistică în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Examinează valoarea reală a lui \(\pi\) folosind np.pi în consolă. Inițializează sims la 10000 și circle_points la 0.
  • În interiorul buclei for, generează un punct (coordonatele x și y) folosind np.random.uniform() între -1 și 1, cu size=2.
  • Verifică dacă punctul se află în interiorul cercului unitar cu ecuația \(x^2 + y^2 <= 1\), atribuie rezultatul variabilei within_circle și incrementează circle_points corespunzător.
  • Afișează estimarea lui \(\pi\), pi_sim, ca de 4 ori fracția de puncte aflate în interiorul cercului.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# Initialize sims and circle_points
sims, circle_points = ____, ____ 

for i in range(sims):
    # Generate the two coordinates of a point
    point = ____
    # if the point lies within the unit circle, increment counter
    within_circle = point[0]**2 + point[1]**2 <= 1
    if ____ == True:
        circle_points +=1
        
# Estimate pi as 4 times the avg number of points in the circle.
pi_sim = ____
print("Simulated value of pi = {}".format(pi_sim))
Editează și rulează codul