Category Archives: programming

วิทย์ม.ต้น: “กฎของ 72”, ใช้ Bisection Method หาคำตอบสมการ, หัดใช้ command Line กับโปรแกรมไพธอน

สัปดาห์นี้เด็กๆม.2-3 ได้รู้จัก “กฎของ 72” ไว้ใช้ประมาณในใจว่าถ้าลงทุนมีผลตอบแทนทบต้นที่ r % ต่อปี จะใช้เวลาประมาณ 72/r ปีที่เงินจะงอกเงยเป็น 2 เท่า ยกตัวอย่างเช่นถ้าผลตอบแทนเท่ากับ 3% ต่อปีจะใช้เวลา 72/3 = 24 ปี ถ้าผลตอบแทนเท่ากับ 8% ต่อปีจะใช้เวลา 72/8 = 9 ปี

มีหลายคนเข้าใจผิดว่ากฎนี้เป็นกฎที่ไอน์สไตน์คิดขึ้น แต่จริงๆแล้วน่าจะมีมาก่อนไอน์สไตน์หลายร้อยปี แต่ไอน์สไตน์เคยพูดเรื่องดอกเบี้ยทบต้นไว้ว่า “Compound interest is the eighth wonder of the world. He who understands it earns it … he who doesn’t … pays it.” เลยอาจมีคนเข้าใจผิดว่าไอน์สไตน์เป็นคนคิด

สำหรับเด็กๆที่รู้จัก logarithm เราสามารถคำนวณเวลาที่ทำให้เงินงอกเป็นสองเท่าได้เป๊ะๆเท่ากับ log(2)/log(1+r/100) ถ้ารู้จัก logarithm และ calculus สามารถอ่านคำอธิบายความเป็นมาได้ที่  กฎของ “70” (หรือ “72”) ครับ เป็นผลลัพธ์จากการกระจาย Taylor’s series

การประมาณด้วยกฎของ 72 มีความใกล้เคียงกับคำตอบจริงๆดีทีเดียวสำหรับผลตอบแทน r ที่ไม่สูงเกินไปครับ

ถ้าเด็กๆไม่รู้จักสูตร  log(2)/log(1+r/100) ก็ยังสามารถใช้วิธีให้คอมพิวเตอร์ไล่หาคำตอบที่เป็นตัวเลขด้วยวิธี bisection อย่างที่เคยเห็นที่ วิทย์ม.ต้น: เขียนโปรแกรมไพธอนหาว่าพาราโบลาตัดแกน x ที่ไหน, วิธีหาคำตอบโดย Bisection Method ก็ได้ครับ

นอกจากนี้เรายังสามารถประยุกต์เอาวิธี bisection หาคำตอบเป็นตัวเลขให้เราในปัญหาที่เราไม่แน่ใจว่าคำตอบเป็นสูตรอย่างไรก็ได้ครับ เช่นถ้าเราต้องการทราบว่าเราต้องออมเงินปีละเท่าไรเป็นเวลา 40 ปี ด้วยผลตอบแทนทบต้นปีละ 8% ถึงจะมีเงินเมื่อสิ้นปีที่ 40 เท่ากับ 40,000,000 บาท คำตอบจาก bisection คือ 142,969 บาท:

ถ้าเราต้องการออมเงินทุกปีเป็นเวลา 20 ปี ปีละ 100,000 บาท แล้วเราต้องการให้เงินตอนจบเป็น 10 ล้านบาท เราต้องหาผลตอบแทนทบต้นปีละกี่เปอร์เซ็นต์ เราก็สามารถใช้ bisection หาให้เราได้ว่าต้องหาอัตราตอบแทน 13.7% ต่อปี:

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

สำหรับเด็กม.1 ผมให้หัดใช้ command line เรียกไพธอนมาทำงานให้ ที่ผ่านมาเด็กๆจะใช้ไพธอนผ่าน Jupyter Notebook ตลอด

เด็กๆลงโปรแกรมไพธอนด้วย Anaconda บน Windows กันจึงเรียก Anaconda Prompt ขึ้นมาแล้วพิมพ์คำสั่งประเภท python program_name.py arg1 arg2 arg3 (ถ้าใช้ macOS หรือ Linux ก็เรียก terminal ขึ้นมาพิมพ์เลยก็ได้ครับ)

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

สำหรับเด็กๆที่ใช้ macOS หรือ Linux ลองดู [Mac มือใหม่] มาเรียนรู้พื้นฐาน Linux + Command Line เบื้องต้นกันดีกว่า หรือหนังสือหัดใช้ Command-line Interface เถอะ ดูครับ

วิทย์ม.ต้น: การเติบโตของเงินออมเป็นประจำ, หัดใช้ Mu-Editor

สัปดาห์นี้เด็กม.2-3 เขียนโปรแกรมหาเงินสะสมจากการออมเป็นประจำปีละเท่าๆกัน โดยมีผลตอบแทนต่อปีเท่าๆกัน เป็นเวลาหลายๆปีครับ ต่อยอดจากสัปดาห์ที่แล้วที่คำนวณมูลค่าเงินในอนาคตถ้ามีการทบต้นไปเรื่อยๆหลายๆปี

เราปรับชื่อตัวแปรของฟังก์ชั่นหาค่าเงินในอนาคตให้เป็นสากลมากขึ้น:

หัดใช้ f-string เพื่อจัดรูปแบบข้อความหรือจำนวนทศนิยม:

และคำนวณเงินอนาคตทั้งหมดถ้าออมเท่าๆกันทุกปี:

ถ้าออมเงินทุกปีๆละ 1 บาท ที่ผลตอบแทน 0%, 2%, 5%, 7%, 10%, 15%, 20% เป็นเวลา 10, 20, 30, 40, 50 ปี จะมีเงินรวมตอนจบดังนี้:

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

นอกจากนี้เด็กๆม.1, 2, 3 ก็ได้รู้จัก Mu Editor สำหรับเขียนโปรแกรมไพธอนแล้วเก็บเป็นไฟล์ .py แยกต่างหากไม่อยู่ใน Jupyter Notebook ครับ สามารถโหลดได้ที่ https://codewith.mu

เด็กม. 1 ได้เห็น turtle graphics นิดหน่อย ในอนาคตเราคงเอามาใช้วาดนู่นวาดนี่กัน

วิทย์ม.ต้น: เขียนโปรแกรมดูการเติบโตของเงิน, แบบฝึกหัดพิมพ์เรียงอักษรเป็นสามเหลี่ยมต่างๆ

เด็กม. 2-3 ได้ศึกษาการเติบโตของเงินแบบดอกเบี้ยทบต้น ให้เห็นผลของเวลาและอัตราผลตอบแทนว่าทำให้เงินเติบโตกันอย่างไร และทำไมควรจะเอาเงินไปวางไว้ในที่ที่มีผลตอบแทนสูงกว่าอัตราเงินเฟ้อ การบ้านคือให้ไปคำนวณว่าถ้าเราลงทุนทุกปีเท่าๆกันด้วยอัตราผลตอบแทนเท่าๆกันเราจะมีเงินเก็บเท่าไรเมื่อเวลาผ่านไปนานๆครับ ในอนาคตจะให้เด็กๆใช้ Bisection Method คำนวณเงินที่เราต้องออมหรืออัตราผลตอบแทนที่เราต้องหามาถ้าเรามีเป้าหมายเงินออมในอนาคต

ฟังก์ชั่นการคำนวณค่าเงินในอนาคตเป็นสูตรง่ายๆ:

ลองเปรียบเทียบผลตอบแทนต่างๆกัน:

ข้อมูลเพิ่มเติมเรื่องอย่างนี้อ่านได้ที่: Compound Interest, ดอกเบี้ยทบต้น, และ อุปสรรคของคนรอพลังจาก “ดอกเบี้ยทบต้น”

สามารถโหลดโค้ดม.2-3 ใน Jupyter Notebook นี้ หรือดูออนไลน์ที่ https://nbviewer.jupyter.org/url/witpoko.com/wp-content/uploads/2019/07/2019-07-26_G8-9.ipynb นะครับ

เด็กม. 1 ได้ทำแบบฝึกหัดเขียนโปรแกรมไพธอน และพยายามแก้ปัญหาพิมพ์ตัวอักษรเรียงเป็นสามเหลี่ยมแบบต่างๆครับ หน้าตาประมาณนี้ครับ:

สามารถโหลดโค้ดม.1ในJupyter Notebook นี้ หรือดูออนไลน์ที่ https://nbviewer.jupyter.org/url/witpoko.com/wp-content/uploads/2019/07/2019-07-26_G7.ipynbนะครับ