Category Archives: มัธยม

วิทย์ม.ต้น: ใช้ SymPy แก้สมการสัญญลักษณ์และตัวเลข, สั่งให้คอมพิวเตอร์ทำงานซ้ำๆแทนเรา

วิทย์โปรแกรมมิ่งวันศุกร์ครั้งนี้ เด็กม.3 ดูโจทย์นี้เพื่อแปลงเป็นสมการให้ SymPy แก้ปัญหาให้ครับ

เราแปลงเป็นสมการในตัวแปร x, y, z ให้ SymPy แก้ได้แบบนี้ครับ:

เราเอาค่า x, y, z ไปแทนค่าได้แบบนี้ คำตอบคือ 41:

ทดลองหาจุดตัดของวงกลมและเส้นตรงครับ:

ใช้คำสั่ง div หาผลหารและเศษการหารโพลีโนเมียลได้ด้วยครับ:

สำหรับเด็กม.1 เราพยายามหาค่า x ที่ทำให้ xx = 2 (จากตอนท้ายของวิดีโอข้างบน) เราทำโดยเดาก่อนว่า 11 = 1 และ 22 = 4 ดังนั้น x น่าจะอยู่ระหว่าง 1 กับ 2 แล้วเด็กๆก็ลองดูตรงกลางระหว่าง 1 กับ 2 ว่า 1.51.5 = 1.84… แสดงว่าคำตอบควรอยู่ระหว่าง 1.5 กับ 2 จึงลองดูตรงกลาง = 1.75 พบว่า 1.751.75 = 2.66 แสดงว่าคำตอบควรอยู่ระหว่าง 1.5 กับ 1.75 ถ้าเราทำต่อไปเราก็จะหาทางแบ่งครึ่งช่วงคำตอบไปเรื่อยๆ แต่เราหัดเขียนโปรแกรมให้คอมพิวเตอร์ไล่ให้เราได้ดังนี้ครับ:

พบว่า x = 1.5596104694623696…. จะทำให้ xx = 2 ครับ

ผมถามเด็กว่าถ้าจะหาค่า x ที่ทำให้ xx = 3 จะทำอย่างไร เด็กๆก็แก้โปรแกรมนิดนึงได้คำตอบ x = 1.8254550229248308… ทำให้ xx = 3 ครับ:

ผมถามเด็กม.1 ด้วยว่าถ้าคำนวณ (1+1/1)1, (1+1/2)2, (1+1/3)3, (1+1/4)4, …, (1+1/n)n โดยที่ n ใหญ่ขึ้นไปเรื่อยๆ ค่าที่คำนวณจะใหญ่ไปเรื่อยๆไหม เด็กๆก็ให้ไพธอนคำนวณให้ พบว่าผลการคำนวณจะประมาณ 2.71828… (ซึ่งเท่ากับค่าคงที่ออยเลอร์หรือค่า e นั่นเองครับ)

วิทย์ม.ต้น: Simple Logic, วัดความสูง ความเร็ว ความเร่งด้วย Phyphox

วันพุธสัปดาห์นี้เด็กๆมัธยมต้นเรียนเรื่อง simple logic จากหนังสือ The Art of Thinking Clearly โดยคุณ Rolf Dobelli ที่ฝากใ้ห้เด็กๆคิดช้าๆด้วยตรรกะเมื่อต้องแก้ปัญหาสำคัญๆ

จากนั้นผมก็สอนเด็กๆว่าเราบ่งบอกตำแหน่งของวัตถุอย่างไร (ใช้เป็นลูกศรชี้, position vector) ความเร็วคืออัตราการเปลี่ยนแปลงของตำแหน่งวัตถุ ( ผลต่างของตำแหน่งหารด้วยผลต่างของเวลา) ความเร่งคืออัตราการเปลี่ยนแปลงความเร็ว (ผลต่างของความเร็วหารด้วยผลต่างของเวลา)

จากนั้นเราทดลองใช้โทรศัพท์วัดความสูง ความเร็ว ความเร่ง ในแนวดิ่งเมื่อเรายกหรือวางโทรศัพท์ด้วยโปรแกรม Phyphox หน้าตาข้อมูลที่เก็บมาเป็นแบบนี้ครับ:

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

แนะนำช่องเรียนรู้ทางฟิสิกส์เบื้องต้นสำหรับผู้สนใจครับ อันแรกโดย Professor Dave Explains:

รายการทีวี Mechanical Universe เก่าแล้ว แต่มีแทรกเรื่องราวประวัติศาสตร์ต่างๆไว้ด้วย:

อันนี้ Crash Course Physics เหมาะกับคนที่เคยเรียนมาบ้างแล้วอยากทบทวน เพราะเนื้อหาจะไปเร็ว:

สำหรับคนที่ซีเรียสอยากรู้เรื่องระดับมหาวิทยาลัย แนะนำช่องนี้โดย Walter Lewin ครับ ตัวอย่างเรื่อง classical physics เช่น:

วิทย์ม.ต้น: หัดใช้ SymPy สำหรับโจทย์เลขสัญญลักษณ์, ใช้ Microsoft Math ช่วยแก้และสร้างโจทย์

วิทย์โปรแกรมมิ่งวันศุกร์นี้ สำหรับม.3 ผมให้ดูคลิปโจทย์นี้ก่อน:

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

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

จากนั้นเด็กๆม.3 ดูตัวอย่างวิธีใช้ SymPy ในโปรแกรมไพธอน ตามตัวอย่างที่หน้านี้ครับ สามารถใช้แก้ปัญหาคณิตศาสตร์แบบติดสัญญลักษณ์ได้ (แก้แบบ symbolic ) หน้าตาก็เป็นประมาณนี้:

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

สำหรับเด็กม.1 ผมให้โหลดโปรแกรม Microsoft Math มาใช้ในโทรศัพท์ สามารถถ่ายรูปโจทย์ต่างๆ หรือเขียนโจทย์ต่างๆเข้าไปให้โปรแกรมแก้ และแสดงขั้นตอนการทำให้ดูได้ด้วย หน้าตาเว็บเขาจะเป็นแบบนี้ครับ:

https://math.microsoft.com

เด็กๆหัดเอา Microsoft Math ไปลองแก้ปัญหาต่างๆ และตอนหลังเขาตั้งโจทย์กันแล้วดูว่า Microsoft Math แก้ได้ไหมด้วยครับ ยกตัวอย่างเช่นโจทย์ว่ามีสัตว์ห้าชนิดคือ ไก่ วัว เต่าทอง แมงป่องพิษ งูพิษ มีสัตว์รวมกัน 80 ตัว มีปีกรวมกัน 120 ปีก มีสัตว์มีพิษ 25 ตัว และมีขารวมกัน 370 ขา ให้หาว่ามีสัตว์แต่ละชนิดกี่ตัว

เราก็เขียนสมการของโจทย์ไปบนกระดาษ แล้วใช้ Microsoft Math ถ่ายรูป จะพบว่าถ้าให้จำนวน ไก่ วัว เต่าทอง แมงป่อง และงู เท่ากับ x y z w v ตามลำดับแล้ว x = (110-8v)/3, y = (4v+20)/3, z = (4v+35)/3 , w = 25-v คือจำนวนไก่ วัว เต่าทอง แมงป่องขึ้นกับจำนวนงู v ที่เราใส่เข้าไป ผมจึงให้เด็กๆเขียนโปรแกรมไล่ว่ามีคำตอบทั้งหมดกี่คำตอบอีกทีครับ คำตอบที่เป็นไปได้คือ x, y , z, w, v ต้องเป็นจำนวนเต็มไม่น้อยกว่าศูนย์ และผมแนะนำให้เด็กๆรู้จักกับฟังก์ชั่น divmod ที่หาผลหารและเศษการหารออกมา เพื่อเราจะได้เช็คว่าผลการหารของเราได้เป็นเลขจำนวนเต็มหรือไม่ หน้าตาโปรแกรมก็เป็นประมาณนี้ พบว่ามี 5 คำตอบ (ตอนเด็กตั้งโจทย์ เขาสร้างตัวเลขขึ้นมาชุดเดียวคือ 10, 20, 25, 15, 10):

จริงๆถ้าเราจะใช้ SymPy แก้ก็ได้เหมือนกันครับ: