Category Archives: มัธยม

วิทย์ม.ต้น: หัดไพธอน, เปรียบเทียบการตกลูกบอล

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

1. รุ่นพี่ฝึกไพธอนกันต่อ เขียนโปรแกรมแก้ปัญหาเล็กๆหลายๆอัน มีเฉลยการบ้านจากสัปดาห์ที่แล้วให้เด็กๆไปค้นคว้าหาทางคำนวณด้วยเศษส่วน หน้าตาประมาณนี้ (โปรแกรมเบื้องต้น ไม่มี error handling เพื่อให้เข้าใจง่าย)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# เขียนโปรแกรมรับ เศษและส่วน ตัวที่ 1 และตัวที่ 2
# หาค่า +, -, *, / ของเศษส่วน 1 และ 2
from fractions import Fraction as frac
x1 = int(input("ใส่เศษตัวแรก: "))
x2 = int(input("ใส่ส่วนตัวแรก: "))
y1 = int(input("ใส่เศษตัวที่สอง: "))
y2 = int(input("ใส่ส่วนตัวที่สอง: "))
x = frac(x1,x2)
y = frac(y1,y2)
print(f"{x} + {y} = {x+y}")
print(f"{x} - {y} = {x-y}")
print(f"{x} * {y} = {x*y}")
print(f"{x} / {y} = {x/y}")
# เขียนโปรแกรมรับ เศษและส่วน ตัวที่ 1 และตัวที่ 2 # หาค่า +, -, *, / ของเศษส่วน 1 และ 2 from fractions import Fraction as frac x1 = int(input("ใส่เศษตัวแรก: ")) x2 = int(input("ใส่ส่วนตัวแรก: ")) y1 = int(input("ใส่เศษตัวที่สอง: ")) y2 = int(input("ใส่ส่วนตัวที่สอง: ")) x = frac(x1,x2) y = frac(y1,y2) print(f"{x} + {y} = {x+y}") print(f"{x} - {y} = {x-y}") print(f"{x} * {y} = {x*y}") print(f"{x} / {y} = {x/y}")
# เขียนโปรแกรมรับ เศษและส่วน ตัวที่ 1 และตัวที่ 2
# หาค่า +, -, *, / ของเศษส่วน 1 และ 2

from fractions import Fraction as frac

x1 = int(input("ใส่เศษตัวแรก: "))
x2 = int(input("ใส่ส่วนตัวแรก: "))

y1 = int(input("ใส่เศษตัวที่สอง: "))
y2 = int(input("ใส่ส่วนตัวที่สอง: "))
 
x = frac(x1,x2)
y = frac(y1,y2)

print(f"{x} + {y} = {x+y}")
print(f"{x} - {y} = {x-y}")
print(f"{x} * {y} = {x*y}")
print(f"{x} / {y} = {x/y}")

นอกจากนี้ผมแสดงให้เด็กๆดูว่าใช้ฟังก์ชั่น limit_denominator ในโมดูล fractions หาเศษส่วนมาประมาณค่าต่างๆอย่างไร เช่นอันนี้ประมาณค่าพาย = 3.141592653… ให้ใกล้เคียงที่สุดด้วยเศษส่วนที่ส่วนมีขนาดไม่เกิน 1, 10, 100, … ครับ:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# ประมาณค่าพายด้วยเศษส่วน
from fractions import Fraction as frac
#ค่าพาย 200 หลัก
my_pi = "3.14159265358979323846264338327950288419716939937510582097494459230781\
6406286208998628034825342117067982148086513282306647093844609550582231\
7253594081284811174502841027019385211055596446229489549303820"
for e in range(10):
#print(frac(my_pi).limit_denominator(10 ** e))
x = frac(my_pi).limit_denominator(10 ** e)
print(f"ประมาณค่าพายเป็นเศษส่วน โดยส่วนไม่เกิน {10**e:,}: {x}{float(x)}")
# ประมาณค่าพายด้วยเศษส่วน from fractions import Fraction as frac #ค่าพาย 200 หลัก my_pi = "3.14159265358979323846264338327950288419716939937510582097494459230781\ 6406286208998628034825342117067982148086513282306647093844609550582231\ 7253594081284811174502841027019385211055596446229489549303820" for e in range(10): #print(frac(my_pi).limit_denominator(10 ** e)) x = frac(my_pi).limit_denominator(10 ** e) print(f"ประมาณค่าพายเป็นเศษส่วน โดยส่วนไม่เกิน {10**e:,}: {x} ≈ {float(x)}")
# ประมาณค่าพายด้วยเศษส่วน

from fractions import Fraction as frac

#ค่าพาย 200 หลัก
my_pi = "3.14159265358979323846264338327950288419716939937510582097494459230781\
6406286208998628034825342117067982148086513282306647093844609550582231\
7253594081284811174502841027019385211055596446229489549303820"


for e in range(10):
    #print(frac(my_pi).limit_denominator(10 ** e))
    x = frac(my_pi).limit_denominator(10 ** e)
    print(f"ประมาณค่าพายเป็นเศษส่วน โดยส่วนไม่เกิน {10**e:,}: {x} ≈ {float(x)}")
    

ได้ผลลัพธ์หน้าตาแบบนี้:

ประมาณค่าพายเป็นเศษส่วน โดยส่วนไม่เกิน 1: 3 ≈ 3.0
ประมาณค่าพายเป็นเศษส่วน โดยส่วนไม่เกิน 10: 22/7 ≈ 3.142857142857143
ประมาณค่าพายเป็นเศษส่วน โดยส่วนไม่เกิน 100: 311/99 ≈ 3.1414141414141414
ประมาณค่าพายเป็นเศษส่วน โดยส่วนไม่เกิน 1,000: 355/113 ≈ 3.1415929203539825
ประมาณค่าพายเป็นเศษส่วน โดยส่วนไม่เกิน 10,000: 355/113 ≈ 3.1415929203539825
ประมาณค่าพายเป็นเศษส่วน โดยส่วนไม่เกิน 100,000: 312689/99532 ≈ 3.1415926536189365
ประมาณค่าพายเป็นเศษส่วน โดยส่วนไม่เกิน 1,000,000: 3126535/995207 ≈ 3.1415926535886505
ประมาณค่าพายเป็นเศษส่วน โดยส่วนไม่เกิน 10,000,000: 5419351/1725033 ≈ 3.1415926535898153
ประมาณค่าพายเป็นเศษส่วน โดยส่วนไม่เกิน 100,000,000: 245850922/78256779 ≈ 3.141592653589793
ประมาณค่าพายเป็นเศษส่วน โดยส่วนไม่เกิน 1,000,000,000: 2549491779/811528438 ≈ 3.141592653589793

แนะนำให้เด็กๆศึกษาตัวอย่างเรื่อง fractions ที่ https://www.tutorialspoint.com/fraction-module-in-python และเรื่อง f-string ที่ https://careerkarma.com/blog/python-f-string/ นะครับ

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

บรรยากาศตอนทดลองเป็นแบบนี้:

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

ไฟล์วิดีโอต่างๆที่ถ่ายวันนี้โหลดได้ที่นี่เผื่อใครต้องการใช้ Tracker จับตำแหน่งการตกนะครับ

วิทย์ม.ต้น: การผลิตไฟฟ้าด้วยการเหนี่ยวนำ

วันนี้ก่อนเวลาเรียน ผมเปิดคลิปเรื่องจะเกิดอะไรขึ้นถ้ายิงระเบิดนิวเคลียร์ใส่ดวงจันทร์ครับ:

ผมแนะนำให้เด็กๆดูช่อง Kurzgesagt นี้ มีเรื่องน่าสนใจอธิบายง่ายๆ และเป็นการหัดใช้ภาษาอังกฤษไปด้วยครับ

จากนั้นก็แนะนำให้เด็กๆรู้จักช่อง ElectroBoom ที่เขาทดลองนู่นนี่เกี่ยวกับไฟฟ้า และเป็นการทดลองที่ไม่ควรลองเองเพราะพลาดแล้วตายได้ วันนี้ดูว่าไฟฟ้ากระแสตรง (DC) กับ กระแสสลับ (AC) อันไหนทำให้เจ็บมากกว่ากัน (ต้องกดไปดูใน YouTube เพราะวิดีโอจำกัดอายุคนดูครับ):

ลองดูเรื่องการเหนี่ยวนำโดย ElectroBoom โดยผมข้ามส่วนที่ยากๆไป:

จากนั้นก็อธิบายเกี่ยวกับการผลิตไฟฟ้าในปัจจุบัน ตามข้อมูลในคลิปนี้:

ผมอธิบายการเหนี่ยวนำแม่เหล็กสร้างไฟฟ้าให้เด็กๆฟังประมาณนี้:

อันนี้คลิปอธิบายในอดีตที่เห็นขดลวดชัดๆครับ:

ผมเคยบันทึกเรื่องการเหนี่ยวนำไว้ที่นี่ด้วยครับ

จากนั้นเด็กๆก็แยกย้ายกันเล่นปั่นไฟด้วยวิธีต่างๆที่เขาคิดกันขึ้นมา บรรยากาศดังในลิงก์นี้ครับ:

วิทย์ม.ต้น: แม่เหล็กไฟฟ้าและมอเตอร์กระแสตรง

วันนี้เด็กๆม.ต้นได้รู้จักแม่เหล็กไฟฟ้า และหลักการทำงานของมอเตอร์กระแสตรงจากคลิปนี้ครับ:

จากนั้นผมก็สอนวิธีทำของเล่นมอเตอร์กระแสตรงดังในคลิปนี้:

จากนั้นเด็กๆก็แยกย้ายทำมอเตอร์กันเองครับ บรรยากาศกิจกรรมเป็นประมาณนี้ครับ: