Tag Archives: วิทย์ม.ต้น

วิทย์ม.ต้น: หัดแก้และสร้างโจทย์ตัวอักษรแทนตัวเลขด้วยไพธอนกัน

วิทย์โปรแกรมมิ่งของม.2-3 เริ่มด้วยเฉลยการบ้านวาดกราฟด้วย PyPlot ที่เด็กๆไปหัดใช้กันมา มีการดูรูปกราฟว่าตัดแกน x แถวๆไหนแล้วใช้ bisection method หาค่า x ที่ละเอียดขึ้น:

มีการสร้างลิสต์ค่า x อย่างระมัดระวังไม่ให้เกิดการหารด้วยศูนย์ขึ้น:

กิจกรรมใหม่วันนี้ได้แรงบันดาลใจจากกระทู้พันทิพเรื่องการบ้านเด็กป.4 https://pantip.com/topic/39141834 ที่ถามว่าถ้า A-H เป็นตัวเลขโดดๆไม่ซ้ำกันและ AFBF + CGHB + DAFG +AEAB = BCDC ให้หาค่าว่า A-H มีค่าอะไรบ้าง เด็กๆ ม.1-3 เลยจะทดลองแก้และสร้างปัญหาตระกูลนี้กันด้วยคอมพิวเตอร์

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

ม.2-3 จะใช้ list comprehension ที่เคยใช้ไปในการบ้าน PyPlot ส่วนม.1 จะใช้ for loop กัน เด็กๆทั้งสองกลุ่มได้เห็นการใช้ len(set(x)) == len(x) ว่าลิสต์ x มีสมาชิกซ้ำกันหรือไม่ (อ่านเกี่ยวกับ set ได้ที่ Sets in Python หรือที่ ภาษา python เบื้องต้น บทที่ ๑๓: เซ็ต)

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

Jupyter notebook ของ ม.2-3 โหลดได้ที่นี่ หรือดูออนไลน์ได้ที่นี่

Jupyter notebook ของ ม.1 โหลดได้ที่นี่ หรือดูออนไลน์ได้ที่นี่

Jupyter notebook ไล่แก้ปัญหา AFBF + CGHB + DAFG +AEAB = BCDC โหลดได้ที่นี่ หรือดูออนไลน์ได้ที่นี่

วิทย์ม.ต้น: Cognitive Dissonance, กำเนิดธาตุ, เลนส์เล่นกล, น้ำพุโซ่

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

เราได้พูดคุยกับเรื่องธาตุต่างๆในจักรวาล ซึ่งเป็น threshold ที่ 3 ใน Big History Project

เรื่องตารางธาตุและ Dmitri Mendeleev

เห็นช่วงชีวิตของดวงดาว (เพราะดวงดาวเป็นที่สังเคราะห์ธาตุต่างๆจากไฮโดรเจนและฮีเลียม):

จาก http://planetfacts.org/wp-content/uploads/2011/04/Life-Cycle-of-a-Star.gif
จาก https://upload.wikimedia.org/wikipedia/commons/4/47/Star_Life_Cycle_Chart.jpg

ได้รู้จักเว็บตารางธาตุที่น่าสนใจ ที่ https://ptable.com:

จากเว็บ https://ptable.com

และที่ https://periodictable.com:

จากเว็บ https://periodictable.com

และได้รู้จักเพลงตารางธาตุ:

จากนั้นเด็กๆก็ได้เลนส์เล่นกลที่เรียกว่า Lubor’s Lens (เลนส์ลูเบอร์) กัน มันเป็นแผ่นพลาสติกบางๆที่จะมีเส้นนูนเล็กๆเรียงกันเป็นแถบเส้นตรง เส้นนูนเหล่านี้จะทำให้แสงในแนวหนึ่งกระจัดกระจายขณะที่ในแนวที่ตั้งฉากจะวิ่งผ่านไปได้ดีกว่ามาก เวลามองผ่านเลนส์นี้เราจะเห็นของที่วางในแนวหนึ่งแต่จะไม่เห็นในอีกแนวหนึ่งดังภาพต่อไปนี้:

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

คุณ Steve Mould เป็นคนแรกที่ทำอย่างนี้แล้วมาเผยแพร่ใน YouTube เมื่อหกปีที่แล้ว:

นักวิทยาศาสตร์อธิบายว่าน้ำพุโซ่ทำงานอย่างไร เปเปอร์อยู่ที่ https://royalsocietypublishing.org/doi/full/10.1098/rspa.2013.0689 พบว่าแต่ละปล้องของโซ่จะต้องบิดและดีดตัวมันขึ้นมาจากพื้นด้วยถึงจะเกิดปรากฎการณ์นี้ได้ เชือกนิ่มๆจะไม่สามารถพุ่งขึ้นมาเป็นน้ำพุได้แต่โซ่ที่แต่ละปล้องสามารถประมาณได้ด้วยแท่งตรงๆสั้นๆจะพุ่งขึ้นมาเป็นน้ำพุได้

บรรยากาศในห้องเรียนของเราครับ:

วิทย์ม.ต้น: รู้จัก List Comprehension ในไพธอน, ใช้ Pyplot วาดกราฟ, หัดใช้ Command Line ต่อ

วิทย์โปรแกรมมิ่งของม.2-3 สัปดาห์นี้ เราเริ่มด้วยการใช้ bisection method เฉลยการบ้านสัปดาห์ที่แล้วครับ การบ้านคือ

ถ้าเรามีเวลาออมเงิน 20, 30, 40 ปี,

  1. ถ้าผลตอบแทน = 0.08 (8%) ต่อปี และเราออมปีละ 100,000 บาท เราจะมีเงินตอนท้ายเท่าไร
  2. ถ้าเราต้องการเงินตอนท้ายเท่ากับ 40,000,000 และออมเงินปีละ 120,000 เราต้องหาผลตอบแทนเท่าไร
  3. ถ้าเราต้องการเงินตอนท้ายเท่ากับ 40,000,000 และได้ผลตอบแทนปีละ 10% เราต้องออมเงินปีละเท่าไร

ข้อ 1 ตรงไปตรงมา หาจาก future value ของเงินที่ลงทุนไปทุกๆปีรวมกัน

สำหรับข้อ 2 และ 3 วิธีแก้สมการก็คือสร้างฟังก์ชั่นที่รับตัวแปรที่เราต้องการหา กำหนดฟังก์ชั่นให้มันเป็นศูนย์ถ้าตัวแปรของเราแก้โจทย์ที่ต้องการ แล้วก็ป้อนฟังก์ชั่นไปให้ bisection method หาคำตอบให้ครับ

หน้าตาประมาณนี้:

จากนั้นเด็กๆรู้จักกับ list comprehension ซึ่งเป็นวิธีสร้างลิสต์ที่ง่ายและเร็วครับ ควรไปอ่านและทดลองเพื่อความเข้าใจเพิ่มเติมที่ Comprehending Python’s Comprehensions หรือดูที่ส่วน “การสร้างลิสต์จาก for” ที่หน้านี้ นะครับ

เด็กๆรู้จัก list comprehension เพื่อไปป้อนให้ PyPlot วาดกราฟให้ครับ ศึกษา PyPlot ได้โดยพิมพ์ตามตัวอย่างใน Pyplot Tutorial แต่ถ้าใช้ Jupyter notebook อย่าลืมพิมพ์

%matplotlib inline
import matplotlib.pyplot as plt

ก่อนเริ่มใช้ PyPlot เพื่อเรียกใช้ฟังก์ชั่นการวาดรูปกราฟต่างๆใน matplotlib และจะได้วาดกราฟใน Jupyter notebook ไว้ด้วยกันกับโค้ดโปรแกรมครับ

หน้าตาการวาดกราฟก็อาจเป็นประมาณนี้:

เราวาดกราฟเพื่อดูหน้าตาความสัมพันธ์ต่างๆที่เราสนใจ เช่นกราฟมันตัดแกน x แกน y ที่ไหนบ้าง เพิ่มขึ้นลดลงอย่างไร ฯลฯ

สามารถดาวน์โหลด Jupyter Notebook ที่มีโค้ดต่างๆไปลองเล่นได้ที่นี่นะครับ หรือจะดูออนไลน์ที่ https://nbviewer.jupyter.org/url/witpoko.com/wp-content/uploads/2019/08/2019-08-16_G8-9.ipynb ก็ได้

สำหรับม.1 เด็กๆก็นั่งทำแบบฝึกหัดพิมพ์โปรแกรมแล้ว run บน command line แบบ python program.py arg1 arg2 ต่อไปครับ