วันเสาร์ที่ 5 ตุลาคม พ.ศ. 2567

ประมาณค่า PI โดยการจำลองมอนติคาโล (Monte carlo Simulation By Excel)

บทความนี้ยังอยู่ใน ปฐมบท การสร้างแบบจำลอง และการจำลองโดยใช้ฟังก์ชั่น ใน Excel อยุ่นะครับ โดยในการจำลองต่างๆจะอาศัยเทคนิคหรือแนวคิดของการจำลองมอนติคาโล เป็นพื้นฐานครับ กล่าวคือการจำลองมอนติคาโล เป็นเทคนิคทางคณิตศาสตร์ที่ใช้คาดการณ์ผลลัพธ์ที่เป็นไปได้ของเหตุการณ์ต่างๆที่ไม่แน่นอน ซึ่งปัจจุบันเรามีคอมพิวเตอร์ที่ความเร็วสูงมาช่วยในการคำนวณ โดยอาจจะอาศัยข้อมูลในอดีต มาทำนายอนาคต ตามความน่าจะเป็นที่จะเกิดขึ้นได้ ดังนั้นใน Content นี้ จึงจะยกตัวอย่างการใช้เทคนิคการจำลองมอนติคาโล มาให้ท่านผู้อ่านได้ทำความเข้าใจเพื่อนำไปประยุกต์ใช้การจำลองสำหรับแก้ปัญหาในด้านต่างๆในชีวิตจริง เช่น Business Finance เกมส์ออนไลน์ Engineering เป็นต้น

เรามาศึกษา Classic Problem สำหรับการจำลองมอนติคาโล กันครับ นั่นคือ การประมาณค่า PI ซึ่งเรารู้กันแล้วว่า ค่า PI ที่ใช้ เป็นจำนวน อตรรกยะ นั่นคือ เป็นจำนวนที่ไม่สามารถเขียนเป็นเศษส่วนของจำนวนเต็มได้ หรือค่าเป็นทศนิยมไม่รู้จบ นั่นเอง โดยหากจะใช้กันในทางวิศวกรรม ก็อาจจะใช้ PI = 3.14159...... เป็นต้น เรามาดูแนวคิดการประมาณค่า PI กันวิธีหนึ่งครับ พิจารณารูป สี่เหลี่ยมจัตุรัส กว้าง 2R หน่วย ภายในบรรจุวงกลม รัศมี  R หน่วย 




เราจะสร้างแบบจำลอง สัดส่วนของ พื้นที่วงกลมต่อ พื้นที่สี่เหลี่ยม (RA) โดย
RA = PI*R^2/(2R)^2 = PI/4
RA = PI/4
ดังนั้น 
PI = RA*4

เราจะจำลองเหตุการณ์ โดยสุ่มจุดในพิกัด x, y ในขอบเขต สี่เหลี่ยมจัตตุรัสขึ้นมา และจะพิจารณาว่าจุดที่สุ่มขึ้นมาอยู่ในวงกลมหรือไม่ และเมื่อสร้างเหตุการณ์สุ่มจุดต่างๆขึ้นมาเป็นจำนวนมาก เราจะพบว่า 
สัดส่วนของจุดที่อยู่ในวงกลม (พื้นที่) ต่อ จุดทั้งหมดที่อยู่ในสี่เหลี่ยม คูณด้วย 4 จะมีค่าเข้าใกล้ค่า PI มากขึ้น  มาดูการใช้ Excel ช่วยการจำลองมอนติคาโลกันเลยครับ

สมมุติ เรากำหนด R = 0.5 หน่วย จุดศูนย์กลางอยู่ในพิกัด 0,0 

เราจะสุ่มจุดพิกัด x ,y ขึ้นมาโดยใช้ฟังก์ชั่น RAND ตามที่เคยได้อธิบายในLink นี้นะครับ
โดยเราจะสุ่มให้พิกัด x , y อยู่รหว่าง -0.5 ถึง 0.5 เขียนเป็นสูตร Excel ได้ดังนี้ครับ

พิกัด x = (0.5+0.5)*RAND()-0.5
พิกัด y = (0.5+0.5)*RAND()-0.5

การตรวจสอบพิกัด x,y ว่าอยู่ในวงกลมหรือไม จะเขียนสูตร Excel ได้ดังนี้

IF(SQRT(x^2+y^2)<= 0.5 , true,false)

ผลการจำลองแสดงดังภาพ




ขั้นตอนต่อไปเราจะเริ่มจำลองเหตุการณ์ การสุ่มพิกัด x ,y โดยในตัวอย่างขอ จำลองการสุ่มทั้งหมด 10,000 ครั้ง สร้างตัวเลข Trial ในหลัก G ตั้งแต่ G7:G10006 และกำหนดให้
ผลการตรวจสอบพิกัด x,y ว่าอยู่ในวงกลมหรือไม่ ใน  H6 = F4
กำหนดพิกัด x ใน  I6 = C4
กำหนดพิกัด y  ใน J6 = D4


ใช้คำสั่ง Data table ในการช่วยสุ่มพิกัด x , y จำนวน 10,000 เหตุการณ์ โดยเลือก G6:J10006
ในหน้าต่าง Data table ให้คลิกเลือก Cell ช่องว่าง นอกพื้นที่ที่เราเลือก เนื่องจาก ไม่ได้มีการเปลี่ยนแปลงค่าในสูตรคำนวณอื่นๆ ผลการคำนวณด้วย Data Table แสดงได้ดังภาพ


เราจะเขียนสูตร Excel เพื่อช่วยแยกจุดที่อยู่ในวงกลม โดยเขียนสูตรไว้ดังนี้

K7 = IF(H7=TRUE , I7 , 0) 
L7 = IF(H7=TRUE . L7,0)

นับจำนวนจุดที่อยู่ในวงกลมได้โดยเขียนสูตร Excel ได้ดังนี้

N5 = COUNTIF($H$7:$H$10006,TRUE)

เราสามารถประมาณค่า PI ได้ ตามสูตรดังนี้

PI = N6 = 4*N5/10000

ผลการจำลองแสดงได้ดังภาพ
และเราสามารถนำพิกัด x,y ที่จำลองได้ไปพล๊อตกราฟ เพื่อตรวจสอบความถูกต้องได้ดังภาพครับ



ถ้าเราสุ่มพิกัด x,y มากขึ้น ค่า PI ที่ประมาณก็จะมีความถูกต้องมากขึ้นครับ

ในบทความต่อๆไป เราจะนำเสนอการนำ การจำลองมอนติคาโล มาช่วยแก้ปัญหาต่างๆในชีวิตประจำวันของเรากันต่อครับ














ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Yahoo bot last visit powered by  Ybotvisit.com