متدهها و آزمایشات مونت کارلو به دسته ای از الگوریتمهای محاسباتی گفته میشود که برای به دست آوردن نتایج بر نمونه سازی تصادفی تکراری استوار هستند.
این متدها بیشتر برای محاسبات توسط کامپیوتر مناسب هستند و وقتی به کار میروند که محاسبه نتیجه قطعی با یک الگوریتم مشخص ممکن و یا به صرفه نباشد.
محاسبات
در اینجا سعی خواهیم کرد مقدار تخمینی عدد پی را با استفاده از این متد محاسبه کنیم. اجازه دهید با مبانی ریاضی مساله شروع کنیم.
ایده اصلی این است که مساحت یک ناحیه را با استفاده از شمردن تعداد نقطه هایی که بصورت تصادفی در آن ناحیه پخش شده اند، تقریب بزنیم. تعداد نقاطی که در داخل دایره واقع شده اند را با تعداد کل نقاط در کل ناحیه مقایسه خواهیم کرد.
با استفاده از رابطه بین این نواحی و دانستن فرمول مساحت مربع و دایره خواهیم داشت :
بنابراین:
پیاده سازی
#!/usr/bin/env python
import random
from math import pi
def withinCircle(x,y):
"""Checks whether a point is in a circle"""
if(x**2 + y**2 < 1):
return True
else:
return False
def calculatePi(points = 100000):
"""Calculating Pi using random numbers"""
circleArea = 0 # The dots in a circle
squareArea = 0 # The dots in a square
# Random selection of dots
for i in range(0, points):
# Coordinates of a random dot
x = random.random() # x-coordinate
y = random.random() # y-coordinate
# Checking whether the dot is inside the circle
if(withinCircle(x, y) == 1):
circleArea = circleArea + 1 # Add it
# Is certainly in the square
squareArea = squareArea + 1 # Add it
# Our formula
return 4.0 * circleArea / squareArea
if __name__ == "__main__":
my = calculatePi()
# Conclusions
print "Approximate value for Pi: ", my
print "Difference to exact value of Pi: ", my - pi
print "Error in percent: ", (my - pi) / pi * 100, "%"
تحلیل
نتایج
Approximate value for Pi: 3.1424
Difference to exact value of Pi: 0.000807346410207
Error in percent: 0.0256986343944 %
https://www.facebook.com/ali.rasouli20/posts/884134674943953