วิทย์ม.ต้น: ความรุนแรงในมนุษยชาติ, เล่นลูกแก้วชนกัน, ลูกแก้วแทนรถไฟเหาะ (พลังงานศักย์/พลังงานจลน์)

วันนี้เราคุยกันเรื่องเหล่านี้ครับ:

1. เราดูคลิปน่าสนใจก่อนเวลาเรียนเช่นทำไมไฟบ้านเป็นกระแสสลับ:

บินเหมือน Iron Man:

ตัวอย่างหุ่นยนต์ในงานหุ่นยนต์ที่ประเทศจีน:

2. คุยกันถึงบท “เลือดสีแดงบนหญ้าเขียว” จากหนังสือปลาที่ว่ายในสนามฟุตบอล เรื่องเกี่ยวกับความรุนแรงในตัวเราและธรรมชาติ

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

4. อยากแนะนำให้เด็กๆดูคลิป “โลกของเรากำลังจะดีขึ้นหรือแย่ลง ลองมาดูตัวเลขกัน” (Is the world getting better or worse?) โดย Steven Pinkerครับ วันนี้เราไม่ได้ดูเพราะต้องแบ่งเวลาเล่นลูกแก้ว

5. เราเล่นกับลูกแก้วสองแบบ แบบแรกคือเล่นปล่อยลูกแก้วชนกันหลายๆขั้นตอนแต่ให้โดนเป้าที่เป็นลูกแก้วลูกสุดท้ายเสมอ

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

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

คลิปจากวันนี้ครับ:

คลิปสโลโมชั่นจากในอดีตครับ:

บรรยากาศกิจกรรมวันนี้ครับ:

กิจกรรมม.ต้นเล่นลูกแก้ววันนี้ครับ

Posted by Pongskorn Saipetch on Wednesday, October 21, 2020

วิทย์ม.ต้น: หัดไพธอน (Lists, permutations), หัดใช้ TRACKER

1. คลาสรุ่นพี่ เรียน Python จากหนังสือฟรีบนเว็บชื่อ Automate the Boring Stuff with Python โดยเขียนโปรแกรมใน Mu-Editor เราคุยกันเรื่อง Lists และ ทดลองเรื่องต่างๆเกี่ยวกับ list เช่น len, การ index, append, pop, การเอา list มารวมกัน, sort, การเปลี่ยน list เป็น tuple และ set และเปลี่ยนกลับ, การใช้ in และ not in, การใช้ count, join, split

2. เฉลยการบ้านสัปดาห์ที่แล้ว:

def convert_C_to_F(c):
    "แปลงอุณหภูมิ c เซลเซียสเป็นฟาเรนไฮต์"
    return c*9/5+32

def convert_F_to_C(f):
    "แปลงอุณหภูมิ f ฟาเรนไฮต์เป็นเซลเซียส"
    return (f-32)*5/9
    
def GCD(a,b):
    "หา ห.ร.ม. ของ a และ b"
    #Euclid GCD algorithm
    while(a != b):
        if b > a:
            a, b = b, a

        a, b = a-b, b

    return(a)

3. แนะนำให้เด็กๆรู้จัก itertools.permutations มาลองหาความน่าจะเป็นที่เลขเจ็ดหลักที่มีเลข 1-7 ครบทุกตัวสามารถหารด้วย 11 ลงตัว (มีวิธีทำด้วยมือที่แสดงว่าความน่าจะเป็น = 4/35)

#ดูว่าเลข 7 หลักที่เอาเลข 1,2,3..,7 มาเรียงกันแบบไม่ซ้ำกัน
#จะหารด้วย 11 ลงตัวกี่ตัว
#มีวิธีทำด้วยมือที่แสดงว่าความน่าจะเป็นที่จะหารด้วย 11 ลงตัว
#เท่ากับ 4/35

import itertools

digits = []
for d in range(1,8):
    digits.append(str(d))

total = 0
divisible = 0

for i in itertools.permutations(digits):
    total = total + 1
    #print(i)
    number = int("".join(i))
    #print(i, number)
    if number % 11 == 0:
        print(number)
        divisible = divisible + 1

print("Total numbers: " + str(total))
print("Divisible by 11: " + str(divisible))


4. การบ้านสัปดาห์นี้คือไปอ่านบทต่อไปเรื่อง Dictionaries

5. คลาสรุ่นน้องหัดใช้โปรแกรม Tracker โดยดาวน์โหลดและติดตั้งจาก https://physlets.org/tracker/ เราถ่ายวิดีโอการตกของลูกบาสแล้วให้ Tracker บันทึกตำแหน่งดู วิธีใช้ก็เหมือนๆกับที่ผมบันทึกไว้ที่คลิปนี้ครับ:

วิดีโอและไฟล์ .trk ดาวน์โหลดได้ที่นี่ครับ

วิทย์ม.ต้น: หัดไพธอน (Functions), รู้จัก Tracker, ดูลูกตุ้มทราย, หัด Scratch (วาด Lissajous Figures)

1. คลาสรุ่นพี่ เรียน Python จากหนังสือฟรีบนเว็บชื่อ Automate the Boring Stuff with Python โดยเขียนโปรแกรมใน Mu-Editor เราคุยกันเรื่อง Functions และหัดเขียนฟังก์ชั่นง่ายๆในชั้นเรียนกัน เช่น:

def add(a,b):
    "บวก a และ b เข้าด้วยกัน"
    return a+b
    
def หารลงตัว(a,b):
    "เช็คว่า a หารด้วย b ลงตัวหรือไม่"
    if a % b == 0:
        return True
    else:
        return False
    
def number_of_digits(x):
    "บอกว่าเลขจำนวนเต็มบวก x มีกี่หลัก"
    xstr = str(x)
    return len(xstr)
    
def contain_digit(a,b):
    "ดูว่ามีเลขโดด b ในจำนวนเต็มบวก a หรือไม่"
    astr = str(a)
    bstr = str(b)
    return bstr in astr
    
def contain_digit_1(a,b):
    "ดูว่ามีเลขโดด b ในจำนวนเต็มบวก a หรือไม่"
    return str(b) in str(a)
    
def contain_1_to_n(a):
    "a เป็นจำนวนเต็ม n หลัก, เช็คว่า a มีเลขโดด 1, 2, 3,..., n ครบหรือไม่"
    num_digits = number_of_digits(a)
    for digit in range(1,num_digits+1):
        #print("digit = " + str(digit))
        if not contain_digit(a,digit):
            return False
            
    return True

2. การบ้านรุ่นพี่คือไปอ่านบทที่ 4 เรื่อง Lists ในหนังสือ Automate the Boring Stuff with Python และ เขียนฟังก์ชั่นเหล่านี้ให้ทำงานได้ถูกต้อง:

def convert_C_to_F(c):
    "แปลงอุณหภูมิ c เซลเซียสเป็นฟาเรนไฮต์"
    pass
def convert_F_to_C(f):
    "แปลงอุณหภูมิ f ฟาเรนไฮต์เป็นเซลเซียส"
    pass
    
def GCD(a,b):
    "หา ห.ร.ม. ของ a และ b"
    #Euclid GCD algorithm
    pass

3. คลาสรุ่นน้องได้เห็นว่ามีโปรแกรมชื่อ Tracker (https://physlets.org/tracker/) ที่สามารถใช้วัดการเคลื่อนที่ต่างๆจากวิดีโอได้ เช่นวันนี้เอาคลิปลูกแก้ววิ่งเป็นวงกลมในกาละมังจากการเล่นวันพุธมาดูกัน จะเห็นว่าการเคลื่อนที่ในแนวตั้ง (แกน y) และแนวนอน (แกน x) จะเป็นคลื่น (พวก sine, cosine):

4. ได้ดูลูกตุ้มทรายแกว่ง และรู้จัก Lissajous Figures

5. ดูตัวอย่าง Scratch ว่าวาดรูปพวก Lissajous Figures อย่างไร แล้วดัดแปลงทดลองเอง:

6. เด็กๆดูคลิป Moire Pattern และหาใน Scratch ว่าทำอย่างไร:

บันทึกกิจกรรมวิทยาศาสตร์สำหรับเด็กๆ อยากให้คุณพ่อคุณแม่คุณครูเอาไปประยุกต์เล่นกับเด็กๆเยอะๆครับ :-)