Category Archives: math

สอนวิทย์มัธยม 1: หัดใช้คาลิเปอร์ เข้าใจปริมาณเล็กๆ เริ่มคุยเรื่องวิวัฒนาการ

สัปดาห์นี้ผมคุยกับเด็กๆม.1 เรื่องการพยายามเข้าใจขนาดเล็กๆและเริ่มเรื่องวิวัฒนาการครับ

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

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

เราวัดความหนากระดาษได้ประมาณ 0.09 ถึง 0.10 mm ครับ Continue reading สอนวิทย์มัธยม 1: หัดใช้คาลิเปอร์ เข้าใจปริมาณเล็กๆ เริ่มคุยเรื่องวิวัฒนาการ

สอนวิทย์มัธยม 1: ทักษะการเข้าใจปริมาณใหญ่ๆ

วันนี้ผมไปสอนวิทย์ให้เด็กๆบ้านเรียนระดับม.1 มาครับ สัปดาห์ที่แล้วให้เด็กๆไปค้นคว้าว่านักวิทยาศาสตร์คิดว่าอายุของจักรวาลของเราเท่ากับเท่าไร และทำไมถึงคิดว่ามีอายุแบบนั้น เด็กๆก็ไปค้นคว้ากันพบว่าอายุน่าจะประมาณเกือบๆ 14,000 ล้านปี  ผมจึงถามว่า 14,000 ล้านปีมันนานแค่ไหน

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

อีกวิธีหนึ่งคือเทียบเวลากับความยาวที่เราเข้าใจง่ายๆ การเปรียบเทียบที่เราใช้ในห้องเรียนวันนี้ก็คือประมาณว่าอายุขัยของเราคือ 100 ปี และกำหนดให้ 100 ปีเท่ากับความยาว 1 มิลลิเมตร จากนั้นเราก็ค่อยๆไล่ไปว่า 1,000 ปี หมื่นปี แสนปี ล้านปี สิบล้าน ร้อยล้าน พันล้าน หมื่นล้านปี เท่ากับความยาวเท่าไร ด้วยวิธีนี้เราสามารถเปรียบเทียบได้ว่าถ้าชีวิตเรายาว 1 มิลลิเมตรแล้ว อายุจักรวาลจะยาวประมาณระยะทางกรุงเทพถึงพัทยาครับ Continue reading สอนวิทย์มัธยม 1: ทักษะการเข้าใจปริมาณใหญ่ๆ

พยายามวัดความเร็วประสาท+สมอง เริ่มรู้จักค่า Pi เล่นของเล่นบูมเมอแรง

วันอังคารที่ผ่านมาผมไปทำกิจกรรมวิทยาศาสตร์กับเด็กๆมาครับ เด็กประถมต้นได้ดูวิดีโอน่าหวาดเสียวคือคนลองเอาลิ้นไปให้เครื่องดักหนูหนีบในแบบสโลโมชั่น ได้ดูภาพระบบประสาทในร่างกาย และทดลองวัดความเร็วประสาทและสมองกัน เด็กประถมปลายได้ดูคลิปว่าทำไมไม่ควรเอาสัตว์เล็กๆไปวางบนลูกบอลใหญ่ๆแล้วกระเด้ง และได้เริ่มรู้จักค่า π กัน (π ที่เท่ากับ 3.141592653… นั่นแหละครับ) เด็กอนุบาลสามได้หัดทำและเล่นบูมเมอแรงกระดาษกันครับ

(อัลบั้มบรรยากาศกิจกรรมอยู่ที่นี่นะครับ คราวที่แล้วเรื่อง “Webucation” ทดลองเป่าฟองสบู่ ขนมปังทาแยมตกลงพื้น บูมเมอแรง” ครับ)

สำหรับเด็กประถมต้น ผมถามเด็กๆว่ารู้ไหมว่าทำไมเราเห็นคลิปวิดีโอเคลื่อนไหวได้ เด็กๆไม่รู้ครับ ผมเล่าให้ฟังว่าภาพเคลื่อนไหวต่างๆเช่นภาพยนต์หรือคลิป YouTube มันเคลื่อนไหวเพราะมีภาพ 24-30 ภาพต่อวินาทีมาแสดงให้เราดูต่อเนื่องกัน แต่ละภาพก็จะต่างกันไปนิดๆหน่อยๆ พอเราดูหลายๆภาพต่อกันเราก็จะเห็นเป็นการเคลื่อนไหว ผมเล่าต่อว่าถ้าเราถ่ายภาพเกิน 30 ภาพต่อวินาที แล้วเอามาให้คนดูแค่ 30 ภาพต่อวินาที คนดูจะเห็นการเคลื่อนไหวเป็นแบบช้าลง (Slow motion) ยิ่งถ้าตอนถ่ายทำถ่ายภาพต่อวินาทีมากเท่าไร ตอนมาดูก็จะดูช้าลงเท่านั้น แล้วผมก็ให้เด็กๆดูคลิปหวาดเสียวที่ถ่ายที่ 2,000 ภาพต่อวินาที ทำให้ช้าลงไปประมาณ 2,000/30 = 70 เท่าครับ:

Continue reading พยายามวัดความเร็วประสาท+สมอง เริ่มรู้จักค่า Pi เล่นของเล่นบูมเมอแรง

“Webucation” ทดลองเป่าฟองสบู่ ขนมปังทาแยมตกลงพื้น บูมเมอแรง

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

(อัลบั้มบรรยากาศกิจกรรมอยู่ที่นี่นะครับ คราวที่แล้วเรื่อง “ดูคลิป VFX Star Wars ชักโครกทำงานอย่างไร กาลักน้ำ ปืนใหญ่ลม” ครับ)

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

View post on imgur.com

Continue reading “Webucation” ทดลองเป่าฟองสบู่ ขนมปังทาแยมตกลงพื้น บูมเมอแรง

การหารโดยใช้บวกลบคูณเท่านั้น

 

ตอนผมเรียนวิธีแก้สมการของนิวตัน ผมพบว่าเราสามารถใช้วิธีนี้หาค่าของการหารโดยใช้ขบวนการบวกลบและคูณเท่านั้น พบว่านักเรียนหลายๆคนไม่ทราบเรื่องนี้เลยมาบันทึกไว้ครับ Continue reading การหารโดยใช้บวกลบคูณเท่านั้น

ตัวอย่างการใช้ Mathematica ช่วยนับของให้ครับ

ที่หน้าคณิตศาสตร์นอกกะลา (https://www.facebook.com/mathsforlife32) มีคำถามว่า “มีช่องสี่เหลี่ยมจำนวน 6 ช่อง เรียงเป็นแนวเส้นตรง ถ้าต้องการทาสีช่องเหล่านี้ด้วยสีแดง สีขาว หรือสีดำ โดยจะทาสีแดงในช่องที่ติดกันไม่ได้ จงหาว่าจะมีวิธีทาสีได้ทั้งหมดกี่แบบ”

เนื่องจากผมขี้เกียจคิดผมเลยให้ Mathematica นับให้ดังนี้ครับ:

colors = {“R”, “W”, “B”} (*สีมีสามสี R, W, B*)
all = Tuples[colors, 6] (*ตอนนี้เอาสีมาทาเรียงกันหกตำแหน่ง*)
Length[all] (*จำนวนแบบของการทาสีทั้งหมด = 729*)
rr = Cases[all, {___, “R”, “R”, ___}] (*เลือกแบบที่มีสีแดงติดกัน*)
Length[rr] (*จำนวนแบบของการทาสีที่มีสีแดงติดกัน = 281 *)

ดังนั้นจำนวนการทาสีที่สีแดงไม่ติดกัน = 729 – 281 = 448

ถ้าจะดูว่าวิธีทาสีแบบสีแดงไม่ติดกันมีอย่างไรบ้างก็ใช้คำสั่งนี้ครับ:

Intersection[all, Complement[all, rr]] (*หาเซ็ท all – rr*)

ถ้าไม่มี Mathematica ก็เข้าไปใช้ Mathics (http://www.mathics.net/) ได้นะครับ Mathics เป็นโปรแกรมเสรี ฟรี ใช้คำสั่งเหมือนๆ Mathematica

1 กัป = กี่ปีเอ่ย (แก้ไขการคำนวณ)

ผมสงสัยว่าเวลาคนพูดว่าชั่วกัปชั่วกัลป์เขาหมายถึงเวลายาวแค่ไหนแน่เลยเคยคำนวณไว้ที่ http://witpoko.com/?p=448 เมื่อสี่ปีที่แล้ว วันนี้พึ่งมีคนมาทักว่าคำนวณผิด ผมเลยเข้ามาดูแล้วพบว่าผมคำนวณผิดจริงๆด้วย เลยมาคำนวณใหม่ครับ

ปล. พระไตรปิฎกถูกเขียนบันทึกหลังจากเวลาของพระพุทธเจ้าประมาณ 400-500 ปี ไม่แน่ใจว่าจำนวนศูนย์ในหลักตัวเลขต่างๆอาจจะหายหรืองอกในระหว่างเวลานั้นกี่ตัวเหมือนกันครับ พระอาจจำผิดพลาดก็ได้ ช่วงตัวเลขมันถึงห่างกันหลายเท่าเกินไป 🙂

จากวิธีนับกัป ใน Wikipedia:

(วิธีที่ 1) วิธีนับกัป กำหนดกาลว่านานกัปหนึ่งนั้น พึงรู้ด้วยอุปมาประมาณว่า มีขุนเขากว้างใหญ่สูงโยชน์หนึ่ง (16 กิโลเมตร) ถึง 100 ปีมีเทพยดาเอาผ้าทิพย์เนื้อละเอียดลงมาเช็ดถูบนยอดขุนเขานั้นหนหนึ่งแล้วก็ไป ถึงอีก 100 ปีจึงเอาผ้าลงมาเช็ดถูอีก นิยมอย่างนี้นานมาจนตราบเท่าขุนเขานั้นสึกเกรียนเหี้ยนลงมาราบเสมอพื้นพสุธาแล้ว กำหนดเป็น 1 กัป เมื่อนั้น

(วิธีที่ 2) อีกนัยหนึ่ง กำหนดด้วยประมาณว่า มีกำแพงเป็นสี่เหลี่ยมจตุรัสโดยกว้างลึกกำหนดหนึ่งโยชน์ ถึง 100 ปีมีเทพยดานำเมล็ดผักกาดมาหยอดลง 1 เม็ด เมล็ดผักกาดเต็มเสมอปากกำแพงนั้นนานเท่าใด จึงกำหนดว่าเป็น 1 กัป (ดูการประมาณความยาวนานใน อสงไขย)

จากวิธีที่ 1 เราต้องประมาณว่าการเอาผ้ามาเช็ดหินนั้น หินสึกลงไปเท่าไร สมมุติว่าหินสึกไปน้อยที่สุดเท่าที่จะสึกได้ ก็แสดงว่าหินสึกไปประมาณขนาดของอะตอม ตีว่าขนาดอะตอมประมาณ 1 อังสตรอม (หรือเท่ากับหนี่งส่วนสิบนาโนเมตร = 0.1/1,000,000,000 เมตร) แสดงว่าทุกร้อยปีหินจะสึกไปหนึ่งส่วนสิบนาโนเมตร ถ้าจะให้หินสึก 16 กิโลเมตร ( = 16,000 เมตร) ก็ต้องใช้เวลา = 100 ปี x 16,000 เมตร / (0.1/1,000,000,000) เมตร = 16,000,000,000,000,000 ปี หรือ 1.6 x 10^16 ปี หรืออ่านว่า หนึ่งหมื่นหกพัน ล้าน ล้านปี (หรือประมาณเท่ากับล้านเท่าอายุจักรวาล) เวลานี้จะเป็น upper boundคือ 1 กัป จะไม่เกิน หนึ่งหมื่นหกพันล้านล้านปี

ถ้าจะหา lower bound เราก็สมมุติว่าหินสึกเท่ากับยางรถยนต์สึกเมื่อหมุนไปบนถนน เราสังเกตว่ายางเส้นผ่าศูนย์กลาง 1/2 เมตร จะสึกประมาณ 1 เซ็นติเมตร เมื่อวิ่งไป 50,000 กิโลเมตร ถ้าทุกครั้งที่ยางกลิ้งไปบนพื้นแล้วยางสึกไป d เราจะได้ความสัมพันธ์ d x 50,000 ก.ม. = 1 ซ.ม. x (1/2) ม. x Pi (การคำนวณนี้เป็น lower bound เพราะหินไม่น่าจะสึกได้มากกว่ายางรถยนต์)

จะได้ว่า d = 3.14 อังสตรอม พอเราแทนค่าความสึกเข้าไปในการคำนวณ upper bound เราก็จะได้ lower bound = 5 พันล้านล้านปี = 5 x 10^15 ปี

หรือ 1 กัป อยู่ระหว่าง 0.5 ถึง 1.6 หมื่นล้านล้านปี จากวิธีที่ 1

จากวิธีที่ 2 ถ้าเราจะถมหลุมขนาด 16 ก.ม. x16 ก.ม. x 16 ก.ม. ด้วยเมล็ดผักกาด (ตีว่าขนาดประมาณ 0.5 ม.ม. x 0.5 ม.ม. x 0.5 ม.ม.) เราจะต้องใช้เมล็ดผักกาดประมาณ 3 x 10^22 เมล็ด  หรืออ่านว่า สามหมื่นล้านล้านล้านเมล็ด ถ้าแต่ละเมล็ดใช้เวลา 100 ปี ก็จะได้ว่า 1 กัป เท่ากับประมาณ 3 ล้าน ล้าน ล้าน ล้าน ปี

ปรากฎว่าวิธีที่ 1 และวิธีที่ 2 ต่างกัน 2 ร้อยล้านเท่า (ตาเหลือก)

— – —- – —– ———
ป.ล.

1. ถ้าจะให้วิธีที่ 2 ใกล้เคียงกับวิธีที่หนึ่ง เราต้องหาเมล็ดอะไรบางอย่างที่มีขนาดเส้นผ่าศูนย์กลางประมาณหนึ่งฟุต คงจะใช้มะพร้าวได้

2. ผมสงสัยมานานแล้วว่า คำว่ากัป นานเท่าไรกันแน่ วันนี้พึ่งทดลองหาใน Google เลยเห็นคำจำกัดความ ก็เลยลองคำนวณดู

สร้าง Bifurcation Diagram แบบง่ายๆ


พอดีมีนักเรียนตั้งกระทู้ถามเรื่องการวาดรูปเรื่อง Bifurcation Diagram เมื่อคืน ผมเลยทดลองวาดบน Mathematica เห็นว่าวิธีวาดง่ายดี เลยมาบันทึกไว้เผื่อมีใครค้นหาอีกในอนาคต ถ้าจะลองก็คัดลอกเอาไปลองได้เลย แล้วเปลี่ยนนู่นเปลี่ยนนี่เล่นดูเอง


(* กำหนด mapping ที่เราสนใจ อันนี้เรียกว่า logistic map *)
f[r_, x_] := r x (1 – x)

(* ทำการ iterate ด้วย ‘r’ ไป ‘iterations’ ครั้ง เริ่มด้วย ‘x0’ แล้วตัดมาดู ‘count’ ตัว *)
longtermValues[r_, count_, iterations_, x0_] :=
Map[{r, #} &, Take[NestList[f[r, #] &, x0, iterations], -count]]

(* เราเปลี่ยน r ตั้งแต่ 2.6 ไปจนถึง 4 โดยขยับทีละ 0.001 สำหรับแต่ละ r เรา iterate 500 ครั้งแล้วเอา 200 ตัวสุดท้่ายมาใช้ เราต้องใช้ Flatten[…,1] เพื่อให้คู่ลำดับทั้งหมดอยู่ในลิสท์ระดับเดียวกัน *)
allValues = Flatten[Table[longtermValues[r, 200, 500, 0.2], {r, 2.6, 4, 0.001}], 1];

(* วาดรูป *)
ListPlot[allValues, PlotStyle -> PointSize[0.001]]

A Barnsley’s Fern In 7 Lines of Mathematica

I used to draw a Barnsley’s fern with a program written in Pascal when I was 19 years old. Yesterday someone asked about it in a forum I visited, so I drew another one using Mathematica. The code is much shorter this time. (I’m sure that many people can shorten it even more.)
Here’s the code to draw the fern with 10,000 points. You can copy and paste and run it in Mathematica:

          

ifsFern[p_] := Module[{i},
i = Random[Integer, 99];
If[i < 1, Return[{{0., 0.}, {0., .16}}.p ]];
If[i >= 1 && i < 86, Return[{{0.85, 0.04}, {-0.04, 0.85}}.p + {0., 1.6}]];
If[i >= 86 && i < 93, Return[{{0.20, -0.26}, {0.23, 0.22}}.p + {0., 1.6}]];
If[i >= 93, Return[{{-0.15, 0.28}, {0.26, 0.24}}.p + {0., 0.44}]]]


Graphics[{RGBColor[0, 0.5, 0], Point[NestList[ifsFern, {0, 0}, 10000]]}]


The result looks like this:

แก้สมการด้วยวิธีของนิวตัน

 
มีเด็กๆที่สนใจคณิตศาสตร์มาถามผมว่าสมการทั่วๆไปแก้ออกมาเป๊ะๆไม่ได้แล้วเราทำอย่างไร ผมก็บอกว่าสมการส่วนใหญ่เราต้องหาคำตอบด้วยการประมาณเอาครับ ซึ่งวิธีอันหนึ่งที่เราสามารถใช้ได้ง่ายๆก็คือวิธีของนิวตัน ข้างล่างนี้เป็นกระทู้ที่ผมเขียนไว้ที่ Mahidol Physics Educational Center ครับ:

******

สำหรับปัญหาที่เราแก้สมการโดยตรงไม่ได้ เราต้องแก้ด้วยวิธีประมาณด้วยตัวเลขครับ วิธีที่ใช้กันบ่อยๆวิธีหนึ่งก็คือวิธีการของนิวตัน (Newton’s method: http://en.wikipedia.org/wiki/Newton’s_method) ครับ

วิธีการของนิวตันบอกว่า ถ้าจะแก้สมการ f(x) = 0 ให้เราเดาค่า x มาสักค่า (เรียกมันว่า x0) ก็แล้วกัน แล้วค่า x อันต่อไป (เรียกมันว่า x1) ที่น่าจะทำให้ f(x) ใกล้ศูนย์มากขึ้น ควรจะคำนวณอย่างนี้ครับ:

x1 = x0 – f(x0)/f'(x0) โดยที่ f'(x) คือ derivative ของ f(x) ครับ

ถ้าค่า x1 ทำให้ f(x) ไม่ใกล้ 0 พอ เราก็หา x2, x3, x4, … ไปเรื่อยๆจนเราพอใจว่าค่า f(xn) ใกล้ 0 พอแล้ว โดยที่ xn หาได้จาก xn-1 ดังนี้ครับ:

xn = xn-1 – f(xn-1)/f'(xn-1)

ถ้าจะทำการคำนวณด้วยวิธีของนิวตันใน Mathematica สามารถทำอย่างนี้ครับ:

newtonSolve[f_, guess_, steps_] := NestList[ #1 – f[#1]/f'[#1] &, guess, steps]

f คือฟังค์ชั่นที่เราจะหา f(x) = 0
guess คือค่าที่เราเดาตอนแรกว่า f(guess) น่าจะไม่ห่างจาก 0 นัก
steps คือจำนวนครั้งที่เราจะทำการทำวิธีของนิวตันซำ้ๆกัน

ยกตัวอย่างเช่น เราจะหาค่ารูทที่สองของสอง เราก็เขียนสมการ f(x) = x^2 -2 = 0 ก่อน เพราะค่า x เท่ากับรูทที่สองของสองจะแก้สมการนั้นพอดี:

f[x_] := x^2 – 2

แล้วเราก็เรียก newtonSolve ด้วยฟังค์ชั่น f โดยเดาค่า guess = 1 และให้ทำซ้ำสักห้าครั้ง:

newtonSolve[f, 1, 5]

แล้วเราก็ได้ผลดังนี้: {1, 3/2, 17/12, 577/408, 665857/470832, 886731088897/627013566048}

Mathematica ทำการคำนวณให้เป็นค่าเศษส่วนไม่มีทศนิยม เพราะเราเดาด้วยค่า 1 ซึ่งเป็นจำนวนที่ไม่มีการประมาณเข้ามาเกี่ยวข้อง ถ้าเราต้องการคำตอบเป็นเลขทศนิยม เราก็ควรเดาด้วยค่า 1.0 ดังนี้:

newtonSolve[f, 1.0, 5]

แล้วเราก็จะได้ผลดังนี้: {1., 1.5, 1.41667, 1.41422, 1.41421, 1.41421} ซึ่งเราจะเห็นว่า 1.41421 นั้นเป็นค่าประมาณของรูทที่สองของสองได้ดีทีเดียว

นักศึกษาลองไปทดลองดูครับ

มีใครอยากลองอธิบายว่า newtonSolve[f_, guess_, steps_] := NestList[ #1 – f[#1]/f'[#1] &, guess, steps] ทำงานอย่างไรใน Mathematica ไหมครับ เป็นการฝึกความเข้าใจเรื่อง Pure function และ Functional programming ครับ

******