วิทย์โปรแกรมมิ่งของม.2-3 สัปดาห์นี้ เราเริ่มด้วยการใช้ bisection method เฉลยการบ้านสัปดาห์ที่แล้วครับ การบ้านคือ
ถ้าเรามีเวลาออมเงิน 20, 30, 40 ปี,
- ถ้าผลตอบแทน = 0.08 (8%) ต่อปี และเราออมปีละ 100,000 บาท เราจะมีเงินตอนท้ายเท่าไร
- ถ้าเราต้องการเงินตอนท้ายเท่ากับ 40,000,000 และออมเงินปีละ 120,000 เราต้องหาผลตอบแทนเท่าไร
- ถ้าเราต้องการเงินตอนท้ายเท่ากับ 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 ต่อไปครับ