Tính giá trị của pi
Bây giờ chúng ta cùng làm một ví dụ kinh điển — ước lượng giá trị của \(\pi\).
Hãy hình dung một hình vuông có cạnh \(2\), tâm tại gốc tọa độ \((0, 0)\), bốn đỉnh lần lượt là \((1, 1), (1, -1), (-1, 1), (-1, -1)\). Diện tích hình vuông này là \(2\times 2 = 4\). Giờ đặt một đường tròn bán kính \(1\) có tâm tại gốc, vừa khít bên trong hình vuông. Diện tích của đường tròn là \(\pi \times \text{radius}^2 = \pi\).
Để ước lượng \(\pi\), bạn lấy mẫu ngẫu nhiên nhiều điểm trong hình vuông này và tính tỉ lệ điểm nằm trong đường tròn (\(x^2 + y^2 <= 1\)). Diện tích của đường tròn khi đó bằng \(4\) lần tỉ lệ này, và đó là giá trị ước lượng của \(\pi\).
Sau bài tập này, bạn sẽ nắm cách dùng mô phỏng để tính toán.
Bài tập này là một phần của khóa học
Mô phỏng Thống kê bằng Python
Hướng dẫn bài tập
- Kiểm tra giá trị thực của \(\pi\) bằng
np.pitrong bảng điều khiển. Khởi tạosims= 10000 vàcircle_points= 0. - Bên trong vòng lặp
for, sinh một điểm (tọa độ x và y) bằngnp.random.uniform()trong khoảng từ -1 đến 1, vớisize=2. - Kiểm tra điểm có nằm trong đường tròn đơn vị theo bất đẳng thức \(x^2 + y^2 <= 1\) hay không, gán cho
within_circle, và tăngcircle_pointstương ứng. - In giá trị ước lượng \(\pi\)
pi_simbằng 4 lần tỉ lệ số điểm nằm trong đường tròn.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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))