π – กว่าจะได้พาย ก็จนกระทั่งโดนลูกดอกปักที่หัวเข่า


เกมปาเป้าก็หาค่าพายได้

สัญลักษณ์ของพาย (แหล่งภาพ - วิกิพีเดีย)

ก่อนหน้านี้ ผมได้เล่าถึงเลขฟีโบนัชชีผ่านเรื่องราวการขยายเผ่าพันธุ์ของกระต่าย ครั้งนี้  ผมเกิดนึกสนุกอยากเล่าเรื่องตัวเลขค่านึงที่มีความโด่งดังและมีประวัติศาสตร์ยาวนานกว่า 4,000 ปี โดยนำท่านชมโปรแกรมท่องเที่ยว  "พายเรือเป็นวงกลม ชมพีระมิด พิชิตปาเป้าที่คาสิโน" แฮๆ ... จริงๆก็ไม่ได้เกี่ยวข้องกับการท่องเที่ยวแต่อย่างใด หากแต่ผมเพียงอยากเขียนรำลึกถึง พาย (π) ที่พวกเราเคยร่ำเรียนกันมาเมื่อครั้งยังเยาว์วัย

สมัยที่เรายังเรียนประถมและมัธยม (และแม้แต่ในอุดมศึกษา) เราได้เรียนเรื่องวงกลม เราได้รู้จักสูตรหาพื้นที่วงกลมคือ "พายอาร์กำลังสอง" และสูตรหาเส้นรอบวงคือ "สองพายอาร์" เรามารื้อฟื้นความหลังกันนิดนึงว่า "พาย" คืออะไร และมีความน่าสนใจอย่างไรบ้าง?

คำเตือน ผมไม่ใช่นักคณิตศาสตร์ผู้เชี่ยวชาญ แต่ได้โปรดอ่านต่อเถอะนะ

พาย คือ?

"พายเรือเป็นวงกลม"

ภาพแสดงเส้นรอบวง (circumference) และเส้นผ่าศูนย์กลาง (diameter) ของวงกลมวงหนึ่ง (ภาพจากวิกิพีเดีย)

พาย หรืออักษรกรีกคือ π บางทีก็เขียนว่า pi คือ ค่าคงตัวทางคณิตศาสตร์ ที่คำนวณได้จากเส้นรอบวงของวงกลมวงหนึ่ง หารด้วยเส้นผ่าศูนย์กลางของวงกลมเดียวกันนี้

ดูภาพวงกลมด้านบนประกอบ - วงกลมวงนี้มีเส้นรอบวงแทนค่าด้วยสัญลักษณ์ C ส่วนเส้นผ่าศูนย์กลางแทนค่าด้วยสัญลักษณ์ d กล่าวได้ว่า

π = C/d

(หมายเหตุ / คือ เครื่องหมายหาร) โดยเป็นข้อเท็จจริงทางธรรมชาติว่า  เส้นรอบวง (ค่า C) มากกว่าเส้นผ่าศูนย์กลาง (ค่า d) ประมาณ 3 เท่าเพียงเล็กน้อย ไม่ว่าจะเป็นวงกลมที่มีเส้นผ่าศูนย์กลางขนาดเล็กใหญ่ขนาดไหนก็ตาม จะเป็นวงกลมเล็กๆเท่าจุดที่ตาแทบมองไม่เห็น หรือแม้วงกลมวงใหญ่ๆกว่าโลกของเรา ข้อเท็จจริงนี้ก็ยังเป็นจริงเสมอ คือ เส้นรอบวงยาวกว่าผ่าศูนย์กลางอยู่ 3 เท่าเพียงเล็กน้อย และ 3 เท่าเพียงเล็กน้อยนี่เอง คือ พาย!

สมัยที่ผมยังเด็ก ผมจำได้ว่าพายมีค่าเท่ากับ 22/7 หรือ 3.14 ซึ่งในความเป็นจริงแล้ว ค่าของพายอธิบายได้ละเอียดกว่า 22/7 และ 3.14 อย่างนับไม่ได้เลย ผมขออนุญาตคัดลอกเอาค่าพายเพียงส่วนหนึ่งจากวิกีพีเดียมาแสดงให้ดูดังนี้

π ≈ 3.1415926535 8979323846 2643383279 5028841971 6939937510 5820974944 5923078164 0628620899 8628034825 3421170679 8214808651 3282306647 0938446095 5058223172 5359408128 4811174502 8410270193 8521105559 6446229489 5493038196 4428810975 6659334461 2847564823 3786783165 2712019091 4564856692 3460348610 4543266482 1339360726 0249141273 7245870066 0631558817 4881520920 9628292540 9171536436 7892590360 0113305305 4882046652 1384146951 9415116094 3305727036 5759591953 0921861173 8193261179 3105118548

(หมายเหตุ - เครื่องหมาย ≈ บ่งบอกว่าเป็นการประมาณค่า)

จากค่าพายที่แสดงให้เห็นด้านบนนี้ ในความเป็นจริงแล้ว ค่าพายยาวกว่าที่เห็น เพราะที่แสดงด้านบนนี้เป็นเพียงค่าโดยประมาณ และมีการพิสูจน์แล้วว่า พายเป็นทศนิยมที่ยาวอย่างไม่มีจุดจุบ หรือเรียกว่าเป็นจำนวนอตรรกยะ อันเป็นจำนวนที่ไม่สามารถเขียนออกมาในรูปของเศษส่วนที่ทั้งตัวเศษและตัวส่วนเป็นจำนวนเต็มได้

พายเป็นจำนวนที่มีคุณสมบัติเป็นเลขทศนิยมไม่รู้จบและไม่ซ้ำ โดยในปัจจุบันได้มีความพยายาม(และแข่งขัน)หาค่าของพายที่มีความยาวมากที่สุด ถ้าเป็นคอมพิวเตอร์ทั่วไปก็สามารถให้ค่าพายที่มีความยาวเลขทศนิมได้มากกว่าพันล้านตำแหน่ง แต่ซูเปอร์คอมพิวเตอร์สามารถให้ค่าพายได้ยาวกว่าสิบล้านล้านตำแหน่งเลยทีเดียว

ดังนั้น พายเท่ากับ 22/7 จึงไม่ถูกต้อง (อีกครั้งว่าจำนวนอตรรกยะไม่ใช่เศษส่วนที่เกิดจากจำนวนเต็มหารกัน) หากแต่ 22/7 เป็นจำนวนตรรกยะ (เช่น เศษส่วน) ที่ใกล้เคียงกับค่าของจำนวนอตรรกยะของพาย อย่างไรก็ดี 22/7 ยังเป็นจำนวนตรรกยะที่มีค่าสูงกว่าพายอยู่ดี เพราะ 22/7 ≈ 3.143 ซึ่งใกล้เคียงพายแค่ 2 ตำแหน่งหลังจุดทศนิยม

นอกจาก 22/7 แล้ว ยังมีจำนวนตรรกยะจำนวนอื่นที่ใกล้เคียงค่าพายกว่า 22/7 เช่น 333/106355/11352,163/16,604, และ 103,993/33,102 (อ้างอิงจากวิกิพีเดีย) เป็นต้น หากแต่  22/7 แสดงได้ด้วยจำนวนเต็มที่ทั้งเศษและส่วนมีค่าน้อยที่สุดและใกล้เคียงกับพาย (และคงง่ายต่อการจดจำ) ค่า 22/7 จึงถูกนำไปใช้แทนพายอย่างกว้างขวางถึงทุกวันนี้

ก่อนที่ผมจะกล่าวถึงพายกันต่อ ผมขอเสนอโปรแกรมท่องเที่ยวย้อนเวลาไปหาอดีตประมาณ 2,600 กว่าปีก่อนคริสตกาล

พีระมิด (เกี่ยวกับอะไรกับพาย?)

"ชมพีระมิด"

ภาพมหาพีระมิดแห่งกีซา (แหล่งภาพ - วิกิพีเดีย)

หากเราย้อนอดีตกลับไปประมาณ 2,600 ปีก่อนคริสตกาล ชาวอียิปต์ได้สร้างพีระมิดขนาดใหญ่ในนามว่า พีระมิดคูฟู หรือเป็นที่รู้จักกันในชื่อ มหาพีระมิดแห่งกีซา  จนถึงวันนี้ พีระมิดคูฟูเป็นพีระมิดที่ใหญ่และเก่าแก่ที่สุดใน "หมู่พีระมิดทั้งสามแห่งกีซา" (Giza Necropolis) สร้างขึ้นในสมัยของฟาโรห์คูฟู แห่งราชวงศ์ที่ 4 ของอียิปต์ ซึ่งใช้เป็นสถานที่รักษาพระศพเพื่อรอการฟื้นคืนชีพตามความเชื่อของชาวอียิปต์โบราณ

ความน่าสนใจของพีระมิดคูฟู คือ พีระมิดแห่งนี้ได้รับการยกย่องว่าเป็นหนึ่งในเจ็ดสิ่งมหัศจรรย์ของโลกยุคโบราณ และยังเป็นสิ่งมหัศจรรย์ยุคโบราณเพียงหนึ่งเดียวเท่านั้นที่ยังคงสภาพอยู่มาถึงปัจจุบันนี้ นอกจากนี้แล้ว พีระมิดคูฟูยังมีความข้องเกี่ยวข้องกับพายอีกด้วย!

จะด้วยความจงใจของผู้สร้างหรือผู้ออกแบบพีระมิดคูฟู หรือจะด้วยความบังเอิญก็ตามแต่ มีการค้นพบเรื่องน่าพิศวงว่า ความยาวรอบฐานของพีระมิดคูฟู หารด้วยความสูงของพีระมิดคูฟู มีค่าโดยประมาณเท่ากับ 2 คูณกับค่าพาย!

ในสมัยโน้น ชาวอียิปต์ใช้หน่วยวัดความยาวที่เรียกว่า คิวบิต (cubit) โดยพีระมิดคูฟูมีความยาวรอบฐานทั้งสี่ด้านเท่ากับ 1,760 คิวบิต และความสูงเท่ากับ 280 คิวบิต เมื่อหารเลขทั้งสองแล้วจะได้ค่า 1,760/280 ≈ 6.29 ≈ 2 π  พอเอาเลข 6.29 หารสองแล้วจะได้ 6.29/2 = 3.145   จะเห็นว่ามีความคลาดเคลื่อนจากค่าพายอยู่ แต่ก็ถือว่าใกล้เคียงค่าพาย โดยเลขทศนิยมของพายที่พิจารณาเพียง 2 ตำแหน่งมีค่าเท่ากับ 3.14 นั่นเอง

เกมปาเป้าก็หาค่าพายได้

"พิชิตปาเป้าที่คาสิโน"

มีนักคณิตศาสตร์คิดค้นวิธีการประมาณค่าพายให้ได้ทศนิยมขนาดยาวและแม่นยำให้มากที่สุด แต่ผมจะไม่กล่าวถึงวิธีการ(ยุ่งยาก)เหล่านั้น ผมจะขอพูดถึงวิธีหนึ่ง ที่พวกเราสามารถใช้คอมพิวเตอร์บ้านๆมาใช้ประมาณค่าพายได้ วิธีง่ายๆดังกล่าวนี้มีชื่อว่า มอนติ คาร์โล (Monte Carlo)

ภาพบ่อนคาสิโน ที่เมืองมอนติคาร์โล (หรือมอนเตคาร์โล) (แหล่งภาพ - วิกิพีเดีย)

มอนติ คาร์โล เป็นเขตที่ใหญ่ที่สุดในโมนาโค จัดว่าเป็นแหล่งท่องเที่ยวที่สวย และผู้คนที่นั่นร่ำรวยมากๆ เมื่อปี ค.ศ. 2007 ผมเคยไปเที่ยวมอนติ คาร์โล โดยส่วนตัวผมรู้สึกว่าโมนาโคนี้มั่งคั่ง มีบ่อนคาสิโนที่มีชื่อเสียง ผู้คนขับรถหรูหราราคาหลายสิบล้านจนเหมือนว่าหาซื้อกันได้ง่าย อ้าว ... นอกเรื่องจนได้

วิธีการที่สามารถประมาณค่าพายได้ก็มีชื่อว่า "มอนติ คาร์โล" เป็นวิธีที่นิยมเอาไปใช้ในการจำลองเหตุการณ์ (หรือ simulation) เพื่อใช้ในการทดลองและวิเคราะห์ปัญหาอะไรสักอย่าง วิธีของ มอนติ คาร์โล ง่ายมากและมีประสิทธิภาพที่พอรับได้ ผมจะไม่ลงรายละเอียดวิธีมอนติ คาร์โลมากนัก แต่ขอสรุปขั้นตอนสั้นๆของวิธีนี้ คือ 1. สุ่มค่าหลายๆค่า 2. ประเมินค่าแต่ละค่าที่สุ่ม 3. รวบรวมผลจากค่าที่ประเมินได้เพื่อสรุปผลลัพธ์สุดท้าย (สั้นไปไหม?)


เราสามารถเขียนโปรแกรมคอมพิวเตอร์ประมาณค่าพายด้วยวิธีมอนติ คาร์โล ผ่านการจำลองเหตุการณ์บางเหตุการณ์ แต่เราจะจำลองเหตุการณ์อะไรกันละ?

ในที่นี้ เราจะมาจำลองเหตุการณ์เกมปาเป้ากัน! โดยเกมปาเป้านี่แหละสามารถใช้ในการหาค่าของพายได้ด้วย

ผมขอสรุปขั้นตอนจำลองเหตุการณ์ปาเป้าเพื่อประมาณค่าพายไว้ดังนี้

  1. ให้จินตนาการว่า เรามีเป้าวงกลม (เหมือนในภาพด้านบน)
  2. เรามีลูกดอกลูกหนึ่งที่จะเอามาปาเป้า และเราจะใช้ลูกดอกดอกนี้ปาเป้าซ้ำกันหลายๆครั้ง แต่ขอให้กำหนดก่อนว่าเราจะปาเป้าทั้งหมดกี่ครั้ง เช่น 10,000 ครั้ง หรือทั้งหมด N ครั้งก็ว่ากันไป (โดย N เป็นจำนวนเต็มบวกที่มีค่ามากๆ)
  3. ให้ปาลูกดอกไปที่เป้า เมื่อลูกดอกโดนเป้า(หรือไม่โดน) ให้เราปาลูกดอกจนครบ N ครั้ง ก็ไม่ต้องจดคะแนนจดแต้มอะไรทั้งสิ้นว่าโดนเป้าแล้วได้แต้มเท่าไหร่ ให้จดแค่ว่าปาลูกดอกเข้าเป้าวงกลมไปแล้วกี่ดอก
  4. เมื่อปาลูกดอกจนหนำใจและครบ N ครั้งตามที่ตั้งใจเอาไว้ ก็ให้ทำผลสรุปว่ามีลูกดอกทั้งหมดกี่ดอกที่โดนเป้าวงกลม

ทีนี้เราสามารถคำนวณหาค่าพาย (π) ได้แล้ว โดยใช้สูตรดังต่อไปนี้

π = 4 คูณด้วย [จำนวนครั้งที่ลูกดอกทั้งหมดที่โดนเป้าวงกลม] หารด้วย [จำนวนการปาเป้าทั้งหมด หรือ N]

ยิ่งค่า N มีค่าใหญ่เท่าไหร่ ก็ยิ่งมีโอกาสประมาณค่าพายได้มากขึ้นเท่านั้น
 
(ที่มาว่า ทำไมปาเป้าจึงใช้ประมาณค่าพายได้กล่าวไว้ในช่วงท้าย)
 

เขียนโปรแกรมปาเป้ากันเถอะ

เรามาเขียนโปรแกรมคอมพิวเตอร์เพื่อจำลองเหตุการณ์ปาเป้ากันเถอะ

อืม ... ถึงส่วนนี้ผมพยายามคิดหาวิธีว่าผมจะทำให้หลายๆท่านเขียนโปรแกรมปาเป้ายังไงดี ยิ่งถ้าหากท่านที่ไม่เคยเขียนโปรแกรมมาก่อน คงอธิบายในส่วนนี้ลำบาก จะเอาภาษาคอมพิวเตอร์ตัวไหนดีมาอธิบาย (จาวา ซี ไพธอน ??)  อะ ... เอาอย่างนี้แล้วกัน ผมขอสมมติแล้วกันว่า ทุกท่านใช้ Microsoft Excel เป็น ถ้าไม่มี Microsoft Excel ก็สามารถใช้โปรแกรมที่เหมือน Excel (แต่ฟรี) นั่นคือ OpenOffice.org แล้วกัน และถ้าคุณมีอีเมลของ gmail จะลองใช้ Google Docs ก็ได้ (ฟรีเช่นกัน)

คำถามต่อมาคือ เราจะแปลงเหตุการณ์การปาเป้าไปเป็นขั้นตอนวิธีที่คอมพิวเตอร์เข้าใจได้อย่างไรดี นั่นก็คือการตอบคำถามว่า เราจะไปตั้งโปรแกรมใน Excel  อย่างไรนั่นเอง
 
เรามาจำลองเป้าวงกลมกันเถอะ

ภาพจำลองการปาเป้าวงกลม (แหล่งภาพ - ฝีมือวาดแย่ๆของผมเอง วาดโดย Google Docs)

  • จำลองว่าเรามีเป้าวงกลมในคอมพิวเตอร์ (เอ๊ะ ... ทำยังไง?) ขอให้ดูภาพประกอบด้านบนนี้ไปด้วยนะครับ โดยเป้าของเราคือ วงกลมสีเขียวที่ใส่กรอบสี่เหลี่ยมจตุรัสขนาด 2 ตารางฟุต (สี่เหลี่ยมจตุรัสมีความยาวของด้านเท่ากันทุกด้าน) โดยเป้าวงกลมจุอยู่ในวงกลมได้พอดิบพอดี ดังนั้น เป้าวงกลมของเราจึงมีเส้นผ่าศูนย์กลางขนาด 2 ฟุต หรือมีรัศมียาว 1 ฟุตนั่นเอง (หมายเหตุ: ในความเป็นจริง ความยาวของด้านสี่เหลี่ยมหรือรัศวงกลมจะมีขนาดเท่าไรก็ได้ แต่เพื่อความง่ายในการอธิบายจึงขอกำหนดตายตัวไว้เช่นนี้)
  • จุดสีแดงที่เห็นในภาพ เป็นการจำลองลูกดอกที่ปักลงเป้าวงกลม หรืออาจจะออกนอกเป้าวงกลมก็ได้
  • สมมติว่า เราปาลูกดอกเข้ากรอบสี่เหลี่ยมทุกๆครั้ง โดยจุดสีแดงที่อยู่ในวงกลมก็คือ ตำแหน่งลูกดอกที่เข้าเป้า ส่วนจุดสีแดงที่อยู่พื้นที่สีฟ้าก็คือ ตำแหน่งลูกดอกที่ออกนอกเป้า
  • พูดถึงเรื่องระบุพิกัดของลูกดอกว่าปักลงตรงตำแหน่งไหน เราจะระบุอย่างไรดี? ตอบ ในที่นี้ เราจะใช้ระบบพิกัดของรูป 2 มิติ ด้วยการระบุพิกัดด้วยคู่อันดับ (x, y) และกำหนดให้จุดศูนย์ของวงกลม คือ (0,0)
  • แน่นอนว่าถ้าเราปาเป้าไปที่สี่เหลี่ยมจุตรัสด้านบนนี้ พิกัดคู่อันดับที่ได้มาทั้ง x และ y จะมีค่าตั้งแต่ -1 ถึง 1 เท่านั้น
  • เมื่อได้คู่อันดับ (x, y) ของลูกดอก แล้วเราจะรู้ได้อย่างไรว่าลูกดอกที่ปาไป โดนเป้าหรือว่าออกนอกเป้า? ตอบ เราสามารถใช้ระบบพิกัดคาร์ทีเซียน (Cartesian coordinate system) คือ x2 + y2 = c2   โดย c คือพิกัด ส่วน x กับ y ก็คือ คู่อันดับ (x, y) ของลูกดอกที่ปักเข้ากรอบพื้นที่สี่เหลี่ยม (ซึ่งอาจจะเข้าเป้าหรือหลุดออกนอกเป้าก็ได้) ดังนั้น เมื่อเรารู้ว่าลูกดอกไปปักที่ x กับ y ตรงไหน ก็จัดการยกกำลังสองให้กับ x และ y แล้วนำผลที่ได้มาบวกกัน (หรือ x2 + y2) หลังจากนั้น ให้เราถอดรากที่สองของ  x2 +  yเราก็จะได้พิกัดของลูกดอกหรือค่า c ซึ่งเป็นพิกัดคาร์ทีเซียน
  • เมื่อเราได้พิกัด(คาร์ทีเซียน)ของลูกดอก เราก็ทราบได้แล้วว่า เราปาลูกดอกเข้าเป้าหรือไม่ โดยถ้าพิกัดน้อยกว่า 1 แปลว่า ลูกดอกเข้าเป้าวงกลม ถ้าหากพิกัดมากกว่าหรือเท่ากับ 1 แปลว่าลูกดอกออกนอกเป้าวงกลม
ตั้งโปรแกรมใน Excel เพื่อจำลองการปาเป้า
 
ขั้นตอนนี้คือการเปลี่ยนวิธีการที่อธิบายได้ด้วยภาษาคนไปเป็นภาษาที่คอมพิวเตอร์เข้าใจ ในทีนี้ ผมเลือก Excel (หรือ OpenOffice.org) สำหรับเป็นโปรแกรมในการจำลองการปาเป้า โดยเราต้องคิดวิธีที่จะทำให้โปรแกรม Excel เข้าใจวิธีการจำลองการปาเป้า ซึ่งวิธีมีดังนี้
  • เพื่อความสะดวก ผมได้เตรียมไฟล์ Excel ที่ตั้งโปรแกรมจำลองการปาเป้าไว้ให้แล้ว สามารถดาวน์โหลดได้ที่นี่ หรือท่านสามารถเปิดผ่านโปรแกรม Google Docs ได้โดยคลิ้กตรงนี้
  • ในไฟล์ Excel นี้ ผมจำลองการปาลูกดอกทั้งหมด 10,000 ครั้ง โดยตัวเลขที่อยู่ในคอลัมน์ชื่อ X กับ Y ก็คือ จุดคู่อันดับ (X, Y) ของลูกดอก  โดยค่าคู่อันดับ (X, Y) ของตำแหน่งการปาลูกดอก ดังนั้น จะมีคู่อันดับ (X, Y) ตั้งแต่แถวที่ 2 ถึงแถวที่ 10,001 (เพราะไม่นับแถวที่ 1 ซึ่งเป็นชื่อคอลัมน์) โดยแต่ละแถวแทนการปาลูกดอก 1 ครั้ง
  • Excel มีฟังก์ชันชื่อ RAND() ซึ่งเป็นฟังก์ชันสร้างเลขสุ่ม (random number) ซึ่งเป็นค่าสุ่มในช่วง [0, 1) หรือมีค่าเท่ากับหรือมากกว่า 0 และน้อยกว่า 1 ดังนั้นค่าที่เกิดขึ้นจึงเป็นเลขทศนิยมที่มีค่าตั้งแต่เลขศูนย์จนถึงเลขทศนิยมที่ใกล้เคียงกับ 1
  • อย่างที่ผมได้กล่าวไปก่อนหน้านี้ว่า สี่เหลี่ยมจตุรัสที่เห็นด้านบนนี้ ใช้คู่อันดับ (X, Y) ในการอ้างอิงตำแหน่ง ที่ X และ Y มีค่าได้ตั้งแต่ -1 ถึง 1 ดังนั้น เพื่อให้การใช้ฟังก์ชัน RAND() สร้างค่าให้อยู่ในช่วง -1 ถึง 1 ได้นั้น ผมใช้สูตรว่า RAND() * 2 - 1 โดยเราจะใช้สูตรนี้ในคอลัมน์ของ X กับ Y
  • คอลัมน์ที่ 3 มีชื่อคอลัมน์ว่า Distance คือ พิกัดคาร์ทิเซียนของลูกดอก หาได้จากการหารากที่สองของ X2 + Y2 ซึ่งใน Excel ใช้สูตร SQRT(X^2+ Y^2)
  • คำถามคือ ต้องกรอก (X, Y) ด้วยมือจนครบหมื่นค่าเลยหรือไม่? คำตอบคือ แน่นอน! ว่าผมไม่กรอกด้วยมือ (มันเหนื่อย) เราสามารถกรอกสูตรลงไปแค่แถวที่ 2 จากนั้นก็คัดลอกสูตรแล้ววางสูตรไปตั้งแต่แถวที่ 3 จนถึงแถวที่ 10,001 เราก็จะได้การปาเป้า 10,000 ครั้งมาอย่างง่ายดาย
  • ถึงเวลารวบรวมผลการปาเป้าแล้วทีนี้ - กำหนดให้คอลัมน์ที่ 5 (คอลัมน์ E)  คือ จำนวนครั้งที่ลูกดอกเข้าเป้าวงกลม เราสามารถ COUNTIF([ช่วงข้อมูล], [เงื่อนไข]) สำหรับนับลูกดอกที่เข้าเป้า โดยกำหนด [ช่วงข้อมูล] ด้วยค่าในคอลัมน์พิกัด นั่นคือ C2:C10001 และกำหนด [เงื่อนไข] ว่า "< 1" ซึ่งหมายถึงว่า นับว่ามีพิกัดกี่พิกัดที่มีค่าน้อยกว่า 1 หรือมีจำนวนครั้งที่ลูกดอกเข้าเป้ากี่ครั้งนั่นเอง โดยค่าที่ได้ให้เก็บไว้ในช่อง E2
  • ถึงเวลาสรุปผลประมาณค่าพายแล้วทีนี้ -  กำหนดให้คอลัมน์ที่ 6 (คอลัมน์ F)  คือ ค่าพายโดยประมาณ ซึ่งคำนวณได้จากสูตร π = 4 คูณด้วย [จำนวนครั้งที่ลูกดอกเข้าเป้าวงกลม] หารด้วย [จำนวนครั้งที่ปาเป้า] หรือแปลงเป็นสูตรใน Excel คือ 4 * E2 / 10000 ทีนี้เราก็ได้ค่าพายแล้ว
  • คอลัมน์ที่ 7 กับ 8 (คอลัมน์ G และ H) เป็นของแถม คือ เราจะลองเทียบดูว่าค่าพายที่เราประมาณได้มีความคลาดเคลื่อนจากค่าพายที่ Excel เตรียมไว้ให้มากน้อยเพียงใด โดยช่อง G2 เราใช้สูตร PI() สำหรับค่าพาย ส่วนช่อง H2 เป็นการคำนวณความคลาดเคลื่อนในการประมาณค่าออกมาเป็น % ด้วยสูตร =ABS(F2-G2) * 100/ G2 ยิ่งค่าในช่อง H2 มีค่าน้อยเท่าไหรก็ถือว่าประมาณค่าได้แม่นยำมากเท่านั้น
ถือว่าเป็นอันเสร็จสิ้นสำหรับการจำลองการปาเป้าด้วยวิธีมอนติ คาร์โล ผ่านโปรแกรม Excel หากท่านอยากจำลองการปาเป้า 10,000 ครั้งให้ได้คู่อันดับ (X, Y) ชุดใหม่ สามารถทำได้ที่โปรแกรม Excel ด้วยการกดปุ่ม Ctrl + R (กดปุ่ม Ctrl กับปุ่ม R พร้อมกัน) จะลองเพิ่มหรือลดจำนวนการปาเป้าดูก็ได้ แล้วจะสังเกตได้ว่า ยิ่งเพิ่มจำนวนการปาเป้าเยอะขึ้นก็ยิ่งประมาณค่าพายได้ใกล้เคียงมากขึ้นเช่นกัน
 
หากสงสัยว่า ปาเป้าไปหาค่าพายได้อย่างไร?
 
ให้พิจารณาภาพเป้าวงกลมที่อยู่ในสี่เหลี่ยมจตุรัสด้านบนนี่แหละ โดยขอเปลี่ยนการสมมติความยาวของรัศมีวงกลมนิดหน่อยว่า วงกลมวงนี้มีรัศมีเท่ากับ R  โดยพื้นที่วงกลมวงนี้คือ πR2 ส่วนสี่เหลี่ยมจตุรัส(ที่ด้านมียาว 2R) มีพื้นที่คือ 2R คูณ 2R = 4R2
 
เมื่อเราเอาพื้นที่วงกลมหารพื้นที่สี่เหลี่ยมก็จะได้  πRหาร 4R= π/4 หรือสรุปออกมาได้ว่า
(พื้นที่วงกลม) / (พื้นที่สี่เหลี่ยม) = π/4
 
เมื่อเอา 4 ไปคูณสมการนี้ แล้วกลับข้างให้ π มาอยู่ซ้ายมือ จะได้ว่า
 π = 4 x (พื้นที่วงกลม) / (พื้นที่สี่เหลี่ยม)
 
สมมติว่า พื้นที่สี่เหลี่ยมนี้ว่างเปล่า (ยังไม่มีลูกดอกปักอยู่) หากว่ามีการปาลูกดอก(แบบสุ่มปา)จำนวนมากมุ่งไปที่พื้นที่สี่เหลี่ยมจตุรัส ย่อมมีโอกาสที่ลูกดอกบางลูกไม่ได้ตกไปอยู่ในพื้นที่ของวงกลม และการปาของลูกดอกลงไปยังพื้นที่ของรูปสี่เหลี่ยมและวงกลม ก็เสมือนเป็นการประมาณค่าของพื้นที่ของรูปทั้งสองด้วยนั่นเอง เปรียบเทียบได้กับการแต้มจุดแดงบนพื้นที่สีขาวๆที่ว่างเปล่าให้เกิดสี ยิ่งแต้มสีแดงได้เต็มพื้นที่มากเท่าไหร่ ก็เทียบได้กับการประมาณค่าของพื้นที่ให้ใกล้เคียงมากขึ้นเท่านั้น
 
 
จึงเป็นที่มาว่าทำไม π = 4 คูณด้วย [จำนวนครั้งที่ลูกดอกโดนเป้าวงกลม หรือครั้งที่ตกลงไปในพื้นที่วงกลม] หารด้วย [จำนวนครั้งที่ของการปาลูกดอก หรือจำนวนครั้งที่ลูกดอกตกลงไปในพื้นที่สี่เหลี่ยมจตุรัส]
 
กว่าจะได้พาย ก็จนกระทั่งโดนลูกดอกปักที่หัวเข่า :)

บทความเขียนโดย ศิวดล ไชยศิริ ลงครั้งแรกที่ JavaBoom Collections

ข้อมูลส่วนใหญ่ในบทความนี้อ้างอิงมาจากวิกิพีเดีย

หมายเลขบันทึก: 477898เขียนเมื่อ 7 กุมภาพันธ์ 2012 14:58 น. ()แก้ไขเมื่อ 16 มิถุนายน 2012 08:11 น. ()สัญญาอนุญาต: ครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกันจำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (0)

ไม่มีความเห็น

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท