π – กว่าจะได้พาย ก็จนกระทั่งโดนลูกดอกปักที่หัวเข่า
สัญลักษณ์ของพาย (แหล่งภาพ – วิกิพีเดีย)
ก่อนหน้านี้ ผมได้เล่าถึงเลขฟีโบนัชชีผ่านเรื่องราวการขยายเผ่าพันธุ์ของกระต่าย ครั้งนี้ ผมเกิดนึกสนุกอยากเล่าเรื่องตัวเลขค่านึงที่มีความโด่งดังและมีประวัติศาสตร์ยาวนานกว่า 4,000 ปี โดยนำท่านชมโปรแกรมท่องเที่ยว “พายเรือเป็นวงกลม ชมพีระมิด พิชิตปาเป้าที่คาสิโน” แฮๆ … จริงๆก็ไม่ได้เกี่ยวข้องกับการท่องเที่ยวแต่อย่างใด หากแต่ผมเพียงอยากเขียนรำลึกถึง พาย (π) ที่พวกเราเคยร่ำเรียนกันมาเมื่อครั้งยังเยาว์วัย
สมัยที่เรายังเรียนประถมและมัธยม (และแม้แต่ในอุดมศึกษา) เราได้เรียนเรื่องวงกลม เราได้รู้จักสูตรหาพื้นที่วงกลมคือ “พายอาร์กำลังสอง” และสูตรหาเส้นรอบวงคือ “สองพายอาร์” เรามารื้อฟื้นความหลังกันนิดนึงว่า “พาย” คืออะไร และมีความน่าสนใจอย่างไรบ้าง?
คำเตือน ผมไม่ใช่นักคณิตศาสตร์ผู้เชี่ยวชาญ แต่ได้โปรดอ่านต่อเถอะนะ
พาย คือ?
“พายเรือเป็นวงกลม”
ภาพแสดงเส้นรอบวง (circumference) และเส้นผ่าศูนย์กลาง (diameter) ของวงกลมวงหนึ่ง (ภาพจากวิกิพีเดีย)
พาย หรืออักษรกรีกคือ π บางทีก็เขียนว่า pi คือ ค่าคงตัวทางคณิตศาสตร์ ที่คำนวณได้จากเส้นรอบวงของวงกลมวงหนึ่ง หารด้วยเส้นผ่าศูนย์กลางของวงกลมเดียวกันนี้
ดูภาพวงกลมด้านบนประกอบ – วงกลมวงนี้มีเส้นรอบวงแทนค่าด้วยสัญลักษณ์ C ส่วนเส้นผ่าศูนย์กลางแทนค่าด้วยสัญลักษณ์ d กล่าวได้ว่า
π = C/d
(หมายเหตุ / คือ เครื่องหมายหาร) โดยเป็นข้อเท็จจริงทางธรรมชาติว่า เส้นรอบวง (ค่า C) มากกว่าเส้นผ่าศูนย์กลาง (ค่า d) ประมาณ 3 เท่าเพียงเล็กน้อย ไม่ว่าจะเป็นวงกลมที่มีเส้นผ่าศูนย์กลางขนาดเล็กใหญ่ขนาดไหนก็ตาม จะเป็นวงกลมเล็กๆเท่าจุดที่ตาแทบมองไม่เห็น หรือแม้วงกลมวงใหญ่ๆกว่าโลกของเรา ข้อเท็จจริงนี้ก็ยังเป็นจริงเสมอ คือ เส้นรอบวงยาวกว่าผ่าศูนย์กลางอยู่ 3 เท่าเพียงเล็กน้อย และ 3 เท่าเพียงเล็กน้อยนี่เอง คือ พาย!
สมัยที่ผมยังเด็ก ผมจำได้ว่าพายมีค่าเท่ากับ 22/7 หรือ 3.14 ซึ่งในความเป็นจริงแล้ว ค่าของพายอธิบายได้ละเอียดกว่า 22/7 และ 3.14 อย่างนับไม่ได้เลย ผมขออนุญาตคัดลอกเอาค่าพายเพียงส่วนหนึ่งจากวิกีพีเดียมาแสดงให้ดูดังนี้
π ≈ 3.1415926535 89793238462643383279 50288419716939937510 58209749445923078164 06286208998628034825 34211706798214808651 32823066470938446095 50582231725359408128 48111745028410270193 85211055596446229489 54930381964428810975 66593344612847564823 37867831652712019091 45648566923460348610 45432664821339360726 02491412737245870066 06315588174881520920 96282925409171536436 78925903600113305305 48820466521384146951 94151160943305727036 57595919530921861173 81932611793105118548
(หมายเหตุ – เครื่องหมาย ≈ บ่งบอกว่าเป็นการประมาณค่า)
จากค่าพายที่แสดงให้เห็นด้านบนนี้ ในความเป็นจริงแล้ว ค่าพายยาวกว่าที่เห็น เพราะที่แสดงด้านบนนี้เป็นเพียงค่าโดยประมาณ และมีการพิสูจน์แล้วว่า พายเป็นทศนิยมที่ยาวอย่างไม่มีจุดจุบ หรือเรียกว่าเป็นจำนวนอตรรกยะ อันเป็นจำนวนที่ไม่สามารถเขียนออกมาในรูปของเศษส่วนที่ทั้งตัวเศษและตัวส่วนเป็นจำนวนเต็มได้
ดังนั้น พายเท่ากับ 22/7 จึงไม่ถูกต้อง (อีกครั้งว่าจำนวนอตรรกยะไม่ใช่เศษส่วนที่เกิดจากจำนวนเต็มหารกัน) หากแต่ 22/7 เป็นจำนวนตรรกยะ (เช่น เศษส่วน) ที่ใกล้เคียงกับค่าของจำนวนอตรรกยะของพาย อย่างไรก็ดี 22/7 ยังเป็นจำนวนตรรกยะที่มีค่าสูงกว่าพายอยู่ดี เพราะ 22/7 ≈ 3.143 ซึ่งใกล้เคียงพายแค่ 2 ตำแหน่งหลังจุดทศนิยม
นอกจาก 22/7 แล้ว ยังมีจำนวนตรรกยะจำนวนอื่นที่ใกล้เคียงค่าพายกว่า 22/7 เช่น 333/106, 355/113, 52,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. รวบรวมผลจากค่าที่ประเมินได้เพื่อสรุปผลลัพธ์สุดท้าย (สั้นไปไหม?)
เราสามารถเขียนโปรแกรมคอมพิวเตอร์ประมาณค่าพายด้วยวิธีมอนติ คาร์โล ผ่านการจำลองเหตุการณ์บางเหตุการณ์ แต่เราจะจำลองเหตุการณ์อะไรกันละ?
ในที่นี้ เราจะมาจำลองเหตุการณ์เกมปาเป้ากัน! โดยเกมปาเป้านี่แหละสามารถใช้ในการหาค่าของพายได้ด้วย
ผมขอสรุปขั้นตอนจำลองเหตุการณ์ปาเป้าเพื่อประมาณค่าพายไว้ดังนี้
- ให้จินตนาการว่า เรามีเป้าวงกลม (เหมือนในภาพด้านบน)
- เรามีลูกดอกลูกหนึ่งที่จะเอามาปาเป้า และเราจะใช้ลูกดอกดอกนี้ปาเป้าซ้ำกันหลายๆครั้ง แต่ขอให้กำหนดก่อนว่าเราจะปาเป้าทั้งหมดกี่ครั้ง เช่น 10,000 ครั้ง หรือทั้งหมด N ครั้งก็ว่ากันไป (โดย N เป็นจำนวนเต็มบวกที่มีค่ามากๆ)
- ให้ปาลูกดอกไปที่เป้า เมื่อลูกดอกโดนเป้า(หรือไม่โดน) ให้เราปาลูกดอกจนครบ N ครั้ง ก็ไม่ต้องจดคะแนนจดแต้มอะไรทั้งสิ้นว่าโดนเป้าแล้วได้แต้มเท่าไหร่ ให้จดแค่ว่าปาลูกดอกเข้าเป้าวงกลมไปแล้วกี่ดอก
- เมื่อปาลูกดอกจนหนำใจและครบ N ครั้งตามที่ตั้งใจเอาไว้ ก็ให้ทำผลสรุปว่ามีลูกดอกทั้งหมดกี่ดอกที่โดนเป้าวงกลม
ทีนี้เราสามารถคำนวณหาค่าพาย (π) ได้แล้ว โดยใช้สูตรดังต่อไปนี้
π = 4 คูณด้วย [จำนวนครั้งที่ลูกดอกทั้งหมดที่โดนเป้าวงกลม] หารด้วย [จำนวนการปาเป้าทั้งหมด หรือ N]
เขียนโปรแกรมปาเป้ากันเถอะ
เรามาเขียนโปรแกรมคอมพิวเตอร์เพื่อจำลองเหตุการณ์ปาเป้ากันเถอะ
อืม … ถึงส่วนนี้ผมพยายามคิดหาวิธีว่าผมจะทำให้หลายๆท่านเขียนโปรแกรมปาเป้ายังไงดี ยิ่งถ้าหากท่านที่ไม่เคยเขียนโปรแกรมมาก่อน คงอธิบายในส่วนนี้ลำบาก จะเอาภาษาคอมพิวเตอร์ตัวไหนดีมาอธิบาย (จาวา ซี ไพธอน ??) อะ … เอาอย่างนี้แล้วกัน ผมขอสมมติแล้วกันว่า ทุกท่านใช้ Microsoft Excel เป็น ถ้าไม่มี Microsoft Excel ก็สามารถใช้โปรแกรมที่เหมือน Excel (แต่ฟรี) นั่นคือ OpenOffice.org แล้วกัน และถ้าคุณมีอีเมลของ gmail จะลองใช้ Google Docs ก็ได้ (ฟรีเช่นกัน)
ภาพจำลองการปาเป้าวงกลม (แหล่งภาพ – ฝีมือวาดแย่ๆของผมเอง วาดโดย 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 + y2 เราก็จะได้พิกัดของลูกดอกหรือค่า c ซึ่งเป็นพิกัดคาร์ทีเซียน
- เมื่อเราได้พิกัด(คาร์ทีเซียน)ของลูกดอก เราก็ทราบได้แล้วว่า เราปาลูกดอกเข้าเป้าหรือไม่ โดยถ้าพิกัดน้อยกว่า 1 แปลว่า ลูกดอกเข้าเป้าวงกลม ถ้าหากพิกัดมากกว่าหรือเท่ากับ 1 แปลว่าลูกดอกออกนอกเป้าวงกลม
- เพื่อความสะดวก ผมได้เตรียมไฟล์ 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 มีค่าน้อยเท่าไหรก็ถือว่าประมาณค่าได้แม่นยำมากเท่านั้น
ไม่มีความคิดเห็น:
แสดงความคิดเห็น