การคำนวณค่า π โดยใช้วิธีมอนติคาร์โล
ก่อนอื่นต้องขออธิบายเกี่ยวกับวิธีมอนติคาร์โลก่อนนะครับ
วิธีมอนติคาร์โล เป็นการหาคำตอบโดยใช้ความน่าจะเป็นและสถิติ หรือเรียกตัวอย่าง (Sample) ซึ่งจำนวนตัวอย่างจะมีผลต่อคำตอบที่ได้ ถ้าจำนวนตัวอย่างเยอะ คำตอบที่ได้จะใกล้เคียงคำตอบจริงมากเท่านั้น
ในบทความนี้จะยกตัวอย่างง่าย ๆ สำหรับการหาค่าพาย ด้วยวิธีมอนติคาร์โล โดยใช้โปรแกรม excel เป็นตัวอย่าง
อย่างแรก เรามาวิเคราะห์กันก่อนนะครับ ว่าจะหาค่าพายได้อย่างไร
กำหนดให้ วงกลมรัศมี R ดังภาพ ถูกแบ่งเป็น 4 ส่วน แต่ละส่วนมีพื้นที่ Q และมีทรงสี่เหลี่ยมจัตุรัส ยาวด้านละ R (เส้นประสีแดง)
พื้นที่ของวงกลม คือ
ย้ายตัวแปร จะได้
นั่นหมายความว่า ค่าพายสามารถหาได้จาก พื้นที่วงกลมต่อพื้นที่สี่เหลี่ยม
นอกจากนี้ พื้นที่ A ยังสามารถหาได้จากพื้นที่ Q คือ
ดังนั้น เราจะได้สูตรในการหาค่าพาย คือ
เพราะฉะนั้น วิธีมอนติคาร์โล สำหรับหาค่าพายทำได้ ดังนี้
1. สุ่มค่า x และ y โดยให้ x และ y เป็นทศนิยมมีค่าอยู่ระหว่าง 0 ถึง 1
2. ถ้าผลลัพท์ x^2 + y^2 น้อยกว่าหรือเท่ากับ 1 ให้นับ เป็น 1 ถ้าไม่ นับเป็น 0
3. จะได้ 4 * (จำนวนที่นับได้ / จำนวนการสุ่มทั้งหมด)
สำหรับในทางปฏิบัติ ใน excel
1 ตั้งช่อง X และ Y ดังภาพ โดยใส่คำสั่งสุ่มตัวเลขทั้ง X และ Y คือ =1-2*RAND() ดังภาพ
2 ตั้งช่อง Check X และ Check Y โดยใช้คำสั่ง =IF((B3^2+C3^2)<1,B3,0) สำหรับ X และ =IF((B3^2+C3^2)<1,C3,0) สำหรับ Y ดังภาพ
หมายความว่า ถ้า X^2 + Y^2 น้อยกว่าหรือเท่ากับ 1 ให้แสดงค่า X ถ้าไม่ให้แสดง 0 (ศูนย์) ในค่า Y ก็เช่นกัน
3 ตั้งช่อง Q และ R^2
คำสั่งในช่อง Q เป็น =IF((B3^2+C3^2)<1,1,0) หมายความว่า ถ้า X^2 + Y^2 น้อยกว่าหรือเท่ากับ 1 ให้แสดงค่า 1 ถ้าไม่ให้แสดง 0 (ศูนย์) ดังภาพ
คำสั่งในช่อง R^2 เป็น =IF((B3^2+C3^2)<1,1,1) หมายความว่า ถ้า X^2 + Y^2 น้อยกว่าหรือเท่ากับ 1 ให้แสดงค่า 1 ถ้าไม่ให้แสดง 1 เช่นกัน ดังภาพ
จากข้อ 1 – 3 จะมีส่วนประกอบ ดังภาพ
สังเกตุว่า ช่อง Q และ R^2 จะมีตัวเลข (ดังสีแดงหมายเลข 1 และ 2) ซึ่งใช้คำสั่ง sum(….) หมายถึงรวมทุกค่าในช่อง Q และ R^2
จากตัวอย่างใช้ sample ทั้งหมด 20157
4 นำค่าทั้งหมดของ Q หารด้วยค่าทั้งหมดของ R^2 นำคำตอบที่ได้คูณด้วย 4 จะได้ค่าพายออกมา ดังภาพ
ดาวน์โหลดไฟล์ excel ประกอบ Monte Carlo of Pi CEAE SNRU
บทความครั้งแต่ไป จะนำเสนอการคำนวณหาค่าแลตทิซพารามิเตอร์ ดังตัวอย่าง อย่าลืมติดตามนะครับ
Ref.
1 https://www.youtube.com/watch?v=UGqUUjoOdFY
2 http://www.eveandersson.com/pi/monte-carlo-circle
3 http://www.meccanismocomplesso.org/en/cluster-e-programmazione-in-parallelo-con-mpi-e-raspberry-pi/
4 staff.cs.psu.ac.th