Category Archives: education

วิทย์ม.ต้น: Leap Year, Birthday Paradox, The Monty Hall Problem, ฝึก TrackeR

วิทย์โปรแกรมมิ่งวันศุกร์นี้ เด็กๆม.3 ดูเฉลยการบ้านเรื่องหาวันที่เป็น palindrome คืออ่านกลับหลังก็เหมือนอ่านปกติเช่นวันที่ 2020-02-02 ครับ ในการบ้านเด็กๆต้องไปหาวิธีหาว่าปีไหนมี 366 วัน (เป็น leap year) ด้วย กฎเกณฑ์คือดูปีเป็น ค.ศ. แล้วดูว่าถ้าปีหารด้วย 4 ลงตัวก็เป็น leap year แต่ถ้าหารด้วย 100 ลงตัวก็ไม่นับเป็น leap year แต่ถ้าหารด้วย 400 ลงตัวก็นับเป็น leap year

สาเหตุที่ต้องมีกฎเกณฑ์แบบนี้เพราะว่าโลกใช้เวลาประมาณ 365.242189 วัน (หรือ 365 วัน 5 ชั่วโมง 48 นาที 45 วินาที) คือในหนึ่งปีจะมีวันเกิน 365 วันไปเกือบๆ 1/4 วัน เราจึงต้องพยายามชดเชยประมาณเกือบๆทุกๆ 4 ปี

วิธีเขียนฟังก์ชั่นหา leap year ก็จะมีหน้าตาประมาณนี้ครับ:

ถ้าเขียนตามวิธีที่ Wikipedia แสดงไว้ก็จะมีหน้าตาแบบนี้:

เช็คดูว่าปีต่างๆมีจำนวนวันอย่างที่คาดหรือเปล่า ในสองพันปีมี leap year 485 ปีใช่ไหม และฟังก์ชั่น is_leap_year และ is_leap_year1 ทำงานเหมือนกันใช่ไหม:

ต่อจากนั้นผมก็แนะนำให้เด็กๆม. 3 รู้จักกับ Birthday Paradox ที่สมมุติว่าทุกปีมี 365 วัน และแต่ละวันมีคนเกิดเท่าๆกัน ดังนั้นถ้ามีคนเกิน 365 คนก็ต้องมีวันเกิดซ้ำกันแน่ๆ ถ้ามีคนเดียวก็ไม่มีวันเกิดซ้ำกันได้ ถ้ามีสองคนโอกาสที่วันเกิดจะซ้ำกันคือ 1/365 คำถามก็คือต้องมีคนสักกี่คนถึงจะมีโอกาสมีวันเกิดซ้ำกันประมาณ 50%

เด็กๆเดากันว่าอาจจะต้องมีสัก 100 คน เราจึงเขียนโปรแกรมคำนวณความน่าจะเป็นที่จะมีวันเกิดซ้ำกันถ้ามีคน k คนครับ

วิธีคำนวณง่ายที่สุดคือให้สังเกตว่าถ้าให้ p = ความน่าจะเป็นที่จะมีวันเกิดซ้ำกันในกลุ่มคน k คน และ q = ความน่าจะเป็นที่ไม่มีวันเกิดซ้ำกันเลยในกลุ่มคน k คนแล้ว จะได้ว่า p = 1 – q แล้วก็ไปคำนวณ q กันก่อน

สำหรับ k = 1 คน, q = 1 เพราะคน 1 คนไม่สามารถมีวันเกิดซ้ำกับใคร
สำหรับ k = 2 คน, q = 364/365 คือคนที่สองต้องเกิดไม่ซ้ำกับคนแรก
สำหรับ k = 3 คน, q = 364/365 x 363/365 คือคนที่สามก็ต้องไม่ซ้ำกับคนที่สองด้วย
ถ้าไล่ไปเรื่อยๆ สำหรับ k คน, q จะเท่ากับ (365-k+1)/365 คูณกับ q ของ k-1 คน

พอคำนวณ q เสร็จเราก็คำนวณ p จาก p = 1 – q

ให้เด็กๆม.3 ไปทำเป็นการบ้านคือเขียนโปรแกรมคำนวณ p, q และตอบคำถามว่าต้องมีคนสักกี่คนถึงจะมีโอกาสวันเกิดซ้ำกันบ้างประมาณ 50% ครับ

นอกจากนี้ผมยังให้เด็กๆม. 3 รู้จัก The Monty Hall problem (แปลเป็นภาษาไทยที่นี่) ด้วยครับ สถานการณ์เป็นแบบนี้:

สมมติว่าผู้เล่นเกมโชว์มีประตูสามบานให้เลือก หลังประตูบานหนึ่งจะมีรางวัลอยู่ (มักจะบรรยายว่าเป็นรถยนต์) ส่วนหลังประตูบานที่เหลือไม่มีรางวัล (มักจะบรรยายว่ามีแพะอยู่หลังประตู) ผู้เล่นเลือกประตูหนึ่งบาน (สมมติว่าเรียกว่าประตูบานที่ 1) เมื่อผู้เล่นเลือกแล้ว พิธีกรซึ่งรู้ว่าหลังประตูแต่ละบานมีรางวัลหรือไม่ จะเปิดประตูอีกบานหนึ่งซึ่งไม่มีรางวัล (สมมติว่าเป็นประตูบานที่ 3) หลังจากนั้น พิธีกรจะให้โอกาสผู้เล่นในการเปลี่ยนไปเลือกประตูอีกบานหนึ่งที่ไม่ได้เลือกในตอนแรก (บานที่ 2) คำถามคือ การเปลี่ยนไปเลือกประตูที่ไม่ได้เลือกตอนแรก จะทำให้มีความน่าจะเป็นในการได้รางวัลมากขึ้นหรือไม่

จาก https://th.wikipedia.org/wiki/ปัญหามอนตี_ฮอลล์

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

ผมให้เด็กๆดูคลิปนี้ช่วงแรกก่อนเฉลย:

และการบ้านของเด็กๆคือไปเขียนโปรแกรมจำลองการเล่นเกมนี้เป็นพันๆครั้ง ดูว่าถ้าเปลี่ยนประตูจะมีโอกาสชนะเท่าไร ถ้าไม่เปลี่ยนประตูจะมีโอกาสชนะเท่าไรครับ

สำหรับเด็กม.1 ผมให้หัดใช้โปรแกรม Tracker เพื่อวัดระยะทาง ความเร็ว ความเร่งในวิดีโอคลิปต่างๆของเรากันครับ เป็นโปรแกรมฟรี open source และมีบน Windows, macOS, Linux

ผมเคยบันทึกตัวอย่างการใช้ไว้ที่นี่ครับ:

คราวนี้เด็กๆวัดการสั่นของตุ้มน้ำหนักที่ผูกกับหนังยางต่อกันสามเส้น และแบบหนังยางต่อกัน 6 เส้นครับ ให้สังเกตว่าคาบการสั่นต่างกันอย่างไร อันไหนใช้เวลามากกว่าในการสั่นหนึ่งรอบ หน้าตาโปรเจ็คเป็นแบบนี้ครับ:

ถ้วยบิน (Magnus Effect) ปืนทำงานอย่างไร, ของเล่นทำงานด้วยลม (Strandbeest)

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

(อัลบั้มบรรยากาศกิจกรรมอยู่ที่นี่นะครับ กิจกรรมประถมคราวที่แล้วเรื่อง “หาทางขว้างหลอดไกลๆ, วิถีกระสุนโค้ง, ของเล่นพลังลม” ครับ ลิงก์รวมทุกกิจกรรมอยู่ที่นี่นะครับ)

เด็กประถมได้ดูมายากลนี้ครับ ดูเฉพาะตอนแรกที่เป็นกล ยังไม่ดูส่วนเฉลยตอนหลัง แล้วดูเฉลยหลังจากได้พยายามคิดพยายามอธิบายว่ากลแต่ละกลทำอย่างไรกันก่อนครับ กลวันนี้คือใช้ปากรับกระสุนปืนครับ:

กิจกรรมนี้ฝีกเด็กๆให้คิดแบบวิทยาศาสตร์ครับ มีการสังเกต การตั้งสมมุติฐานเพื่ออธิบายสิ่งที่สังเกตมา การตรวจสอบสมมุติฐานกับข้อมูลที่สังเกตมา การตั้งสมมุติฐานใหม่เมื่อสมมุติฐานเดิมขัดกับข้อมูล นอกจากนี้เราพยายามให้เด็กๆมีความกล้าคิดและออกความเห็นครับ

จากนั้นเด็กๆประถมต้นก็ได้ดูคลิปลูกบาสเก็ตบอลถูกทำให้หมุนแล้วปล่อยให้ตกจากที่สูง ปรากฎว่าลูกบอลลอยออกไปได้ไกลมากแทนที่จะตกลงมาตรงๆเวลาปล่อยแบบไม่หมุนครับ:

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

ลูกบอลหรือทรงกระบอกที่หมุนๆ เมื่อวิ่งผ่านอากาศจะเกิดแรงยกหรือแรงกดขึ้นกับทิศทางการหมุนครับ แรงนี้เรียกว่าแรงแมกนัส (Magnus Force) แรงเกิดจากการเลี้ยงของอากาศที่วิ่งผ่านผิวลูกบอลไม่เท่ากันขึ้นกับว่าโดนด้านไหนของลูกบอลที่หมุนๆอยู่ (ภาพจาก wikipedia)

เราเห็นปรากฎการณ์นี้ในกีฬาหลายๆอย่างเช่นฟุตบอล เทนนิส ปิงปอง เบสบอล หรือกีฬาอะไรก็ตามที่มีลูกบอลหมุนๆวิ่งผ่านอากาศครับ ในปืน BB ยิงกระสุนพลาสติกก็ใช้เทคนิคนี้ให้กระสุนวิ่งหมุนแบบ back-spin ให้ลอยอยู่นานๆ เรียกว่า hop-up ครับ

ผมแถมวิดีโอให้ดูอีกสองอันนะครับ เผื่อสนใจ (ไม่ได้โชว์ให้เด็กๆดูในห้องเรียนเพราะเวลาจำกัดครับ) อันแรกอธิบาย Magnus Effect ครับ:

อันที่สองอธิบายการเลี้ยวของลูกฟุตบอลครับ:

พอเด็กๆดูวิดีโอและคำอธิบายเสร็จก็หัดประดิษฐ์ของเล่นที่ใช้หลักการนี้กันครับ เอาถ้วยพลาสติกสองอันมาติดกันที่ก้นถ้วย แล้วใช้หนังยางดีดออกไปให้หมุนๆ เราสามารถทำให้ถ้วยพุ่งตกลงพื้นเร็วๆหรือให้ถ้วยร่อนอยู่ในอากาศนานๆขึ้นกับว่าเราทำให้หมุนแบบไหน แบบ top-spin หรือ back-spin ครับ ดูวิธีทำในวิดีโอเลยครับ:

สำหรับประถมปลาย ผมเล่าให้ฟังว่าปืนและกระสุนปืนทำงานอย่างไรครับ อธิบายว่าหัวกระสุนทำด้วยโลหะความหนาแน่นสูงๆเช่นตะกั่ว (หรือยูเรเนียมสำหรับกระสุนเจาะเกราะรถถังในสงคราม) อยู่ในลำกล้องที่เป็นทรงกระบอก มีก๊าซจากการเผาไหม้ดินปืนสร้างความดันในลำกล้องแล้วดันหัวกระสุนให้วิ่งไปที่เป้าหมายด้วยความเร็วสูง การทำงานจะเป็นประมาณแบบในคลิปนี้ครับ:

ผมเล่าเรื่องปืนกลยักษ์ที่ติดไว้ในเครื่องบิน A10 Thunderbolt 2 ให้เด็กๆฟังด้วย เล่าเรื่องหัวกระสุนยูเรเนียมที่เป็นกากเชื้อเพลิงเตานิวเคลียร์ที่คาดว่าไม่น่าจะมีรังสีอันตรายมากนัก แต่เมื่อนำไปใช้ในสงครามอ่าวเปอร์เชียทำให้ผู้คนป่วยเป็นมะเร็งและเด็กเติบโตผิดปกติมากมาย

จากนั้นเราเล่นเป่าลูกดอกที่ทำจากสำลีก้านกันครับ หลักการใช้ก๊าซจากลมหายใจของเราผลักกระสุน (สำลีก้าน) ออกไปตามลำกล้อง (หลอดพลาสติก) ใส่เป้าลูกโป่งที่ลอยอยู่ด้วยกระแสลมจากพัดลมในแนวดิ่ง (Coandă effect) ครับ:

สำหรับเด็กอนุบาลสามแนะนำให้เด็กรู้จักกับ Strandbeest (= beach animal) ที่เป็นสิ่งประดิษฐ์/งานศิลปะโดยคุณ Theo Jansen มันประกอบด้วยท่อ PVC พลาสติกต่อกันแล้วเดินได้ด้วยพลังลมครับ

มีของเล่นเป็นชุด kit ที่เราเอามาต่อเล่นเองได้ดังในคลิปนี้ครับ:

ผมเอาตัวที่ต่อแล้วสองตัวมาให้เด็กๆสังเกตการทำงานและเล่นแข่งกันครับ:

วิทย์ม.ต้น: Introspection Illusion, ใช้ Tracker วัดตำแหน่ง Projectiles

วันพุธสัปดาห์นี้เด็กๆมัธยมต้นเรียนเรื่อง introspection illusion จากหนังสือ The Art of Thinking Clearly โดยคุณ Rolf Dobelli ที่ให้เรารู้ตัวว่าเรามักจะมั่นใจในความคิดความรู้สึกของตนเองมากไปและผิดบ่อยๆ คิดว่าสิ่งต่างๆเป็นจริงอย่างที่เราคิดเพราะเรามีเหตุผลต่างๆนาๆในใจเรา จริงๆแล้วเราควรให้น้ำหนักข้อมูลเหตุผลภายนอกจิตใจเราให้มากๆด้วย และเมื่อมีคนเห็นต่างกับเราอย่าด่วนตัดสินว่าเขาไม่รู้ข้อมูลหรือโง่หรือเลว

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

หน้าตาโปรแกรม Tracker ที่วัดตำแหน่งของจากวิดีโอครับ:

บรรยากาศกิจกรรมของเราครับ: