แคลคูลัสด้วย Julia
(jverzani.github.io)- บันทึกการเรียนรู้ที่ช่วยให้เข้าใจแคลคูลัสจากหลายมุมมอง โดยใช้ ไวยากรณ์ที่เรียนรู้ง่ายของ Julia และความสามารถด้านการคำนวณกับกราฟและการทดลองเชิงตัวเลข
- ดำเนินตามแนวคิด rule of four แบบ Harvard ที่ครอบคลุมมุมมองแบบกราฟ เชิงตัวเลข เชิงพีชคณิต และการอธิบายด้วยภาษาไปพร้อมกัน โดยใน Julia จะเน้นแสดงด้านกราฟ เชิงตัวเลข และเชิงพีชคณิตบางส่วนเป็นหลัก
- ขณะที่ computer algebra system อย่าง Mathematica, Maple และ Sage เด่นด้านการประมวลผลเชิงสัญลักษณ์ บันทึกชุดนี้เลือกใช้ Julia เป็นเครื่องมือหลักสำหรับการคำนวณเชิงตัวเลข แล้วค่อยเสริมการจัดการเชิงพีชคณิตที่จำเป็น
- ผู้เรียนสามารถเตรียมสภาพแวดล้อมตามคู่มือการติดตั้งและการใช้งานอินเทอร์เฟซ และใช้แพ็กเกจ
CalculusWithJuliaเพื่อลดความซับซ้อนของงานที่ทำซ้ำและฟังก์ชันที่ใช้ร่วมกัน - แต่ละหน้ามุ่งเน้นแนวคิดอย่างกระชับราวกับหนึ่งหัวข้อในหนังสือ และมี แบบฝึกหัดตรวจคำตอบได้เอง ท้ายหน้าเพื่อทบทวนแนวคิดการคำนวณที่จำเป็นสำหรับการแก้โจทย์แคลคูลัสระดับเริ่มต้น
แนวทางการเรียนแคลคูลัสด้วย Julia
- Calculus with Julia คือชุดบันทึกสำหรับเรียน calculus ด้วยภาษา
Julia - Julia เป็นภาษาโปรแกรมโอเพนซอร์ส และในบันทึกชุดนี้ถูกใช้เป็นเครื่องมือที่เหมาะกับการเรียนแคลคูลัสด้วย ไวยากรณ์ที่เรียนรู้ง่าย และความสามารถด้านการคำนวณ
- มีเอกสารสำหรับการเตรียมตัวเรียนให้พร้อมใช้งานด้วย
- Getting started with Julia: แนะนำการติดตั้ง Julia และการตั้งค่าสำหรับผู้ใช้
- Julia interfaces: แนะนำวิธีต่าง ๆ ในการโต้ตอบกับ Julia ที่ติดตั้งไว้
- ตั้งแต่ช่วงกลางทศวรรษ 1990 เป็นต้นมา การสอนแคลคูลัสมีแนวโน้มที่จะใช้หลายมุมมองร่วมกัน และแนวคิด “rule of four” ของ Harvard ก็สนับสนุนให้รวม องค์ประกอบแบบกราฟ เชิงตัวเลข เชิงพีชคณิต และการอธิบายด้วยภาษา ไว้ให้มากที่สุด
- บันทึกชุดนี้จึงออกแบบมาเพื่อให้สำรวจแง่มุมเชิงกราฟและเชิงตัวเลขของแคลคูลัสผ่าน Julia รวมถึงบางครั้งก็ครอบคลุมถึงแง่มุมเชิงพีชคณิตด้วย
ความแตกต่างจากระบบพีชคณิตคอมพิวเตอร์
- มีตัวอย่างมากมายของการนำ computer algebra system อย่าง Mathematica, Maple และ Sage มาใช้ในการเรียนแคลคูลัส
- WolframAlpha สามารถเรียกใช้ความสามารถของ Mathematica ได้ พร้อมทั้งยอมรับไวยากรณ์แบบไม่เป็นทางการที่ยืดหยุ่น และยังอาจถูกใช้เป็นแบ็กเอนด์ของฟังก์ชันใน Apple Siri ได้ด้วย
- ระบบเหล่านี้จำลองการเรียนรู้ด้านพีชคณิตและการประมวลผลเชิงสัญลักษณ์ได้ดี และยังมีวิธีแสดงด้านเชิงตัวเลขให้เห็นเช่นกัน
- แต่บันทึกชุดนี้เลือกใช้ Julia เป็นหลักในฐานะ เครื่องมือคำนวณเชิงตัวเลข แล้วค่อยเพิ่มการจัดการด้านพีชคณิตและสัญลักษณ์เข้าไปบนพื้นฐานนั้น
- แม้การทำการประมวลผลเชิงสัญลักษณ์ด้วยมือตนเองจะเป็นประโยชน์ต่อการเรียนรู้ แต่ระบบพีชคณิตคอมพิวเตอร์สามารถสร้างผลลัพธ์สำเร็จรูปได้ง่าย จนอาจทำให้การฝึกนั้นดูซ้ำซ้อน
ขอบเขตการเรียนและโครงสร้างของหน้า
- เป้าหมายคือการใช้เทคโนโลยีเพื่อเข้าถึง แนวคิดแคลคูลัส โดยไม่ติดอยู่กับรายละเอียดเชิงกลไกของภาษาคอมพิวเตอร์
- ไวยากรณ์ของ Julia ถูกนำเสนอว่าไม่ได้มีอุปสรรคเริ่มต้นมากไปกว่าการใช้เครื่องคิดเลขนัก แต่มีศักยภาพในการต่อยอดสูง
- บันทึกชุดนี้จำกัดแนวคิดด้านการคำนวณให้อยู่ในชุดที่ค่อนข้างเล็ก
- เพียงชุดนี้ก็เพียงพอสำหรับการแก้ปัญหาแคลคูลัสจำนวนมาก
- ไม่ได้ครอบคลุมแง่มุมต่าง ๆ ของการเขียนโปรแกรมอย่างละเอียดถี่ถ้วน
- ผู้เรียนที่สนใจมากขึ้นสามารถสำรวจต่อได้ลึกผ่าน Julia
- ภายในชุดแนวคิดการคำนวณที่จำกัดนี้ มีโอเปอเรเตอร์ที่ย่อการคำนวณแคลคูลัสให้อยู่ในรูปการเรียกฟังก์ชัน
action(function, arguments...) - ด้วยชุดของ action ขนาดเล็กที่นำมาประกอบกันได้ จึงสามารถจัดการโจทย์แคลคูลัสระดับต้นได้จำนวนมาก
- แต่ละหน้าถูกจัดให้โฟกัสกับแนวคิดหนึ่งอย่างค่อนข้างชัดเจน คล้ายกับหนึ่งหัวข้อย่อยในหนังสือ
- ท้ายหน้ามีโจทย์ให้ลองทำด้วยตนเอง และทั้งหมดมี คำตอบแบบตรวจคะแนนได้เอง จำนวนจำกัด
- แนวคิดต่าง ๆ นำมาจาก Strang, Knill, Schey, Hass และคณะ, Rogawski และคณะ, Angenent, หน้า Wikipedia หลายหน้า และแหล่งข้อมูลอื่น ๆ
สื่อที่มีให้และวิธีใช้งาน
- บันทึกชุดนี้มาพร้อมแพ็กเกจ Julia ชื่อ
CalculusWithJulia- มีฟังก์ชันง่าย ๆ สำหรับลดความซับซ้อนของงานทั่วไป
- โหลดแพ็กเกจที่เป็นประโยชน์และต้องใช้ซ้ำเป็นประจำ
- บันทึกถูกเผยแพร่ในรูปแบบ Quarto book และสามารถดูข้อมูลเกี่ยวกับหนังสือ Quarto ได้จาก เอกสาร Quarto
- แม้จะสามารถคอมไพล์เป็นไฟล์ PDF ด้วย Quarto ได้ แต่ต้องจัดการองค์ประกอบหลายส่วน ผลลัพธ์ก็ไม่ถึงกับเหมาะที่สุด และขนาดไฟล์ก็ค่อนข้างใหญ่
- มี ลิงก์ดาวน์โหลดเวอร์ชัน PDF
- สามารถมีส่วนร่วมได้ผ่านลิงก์ “Edit this page” ไม่ว่าจะเป็นการเสนอหัวข้อเพิ่มเติม แก้ข้อผิดพลาด หรือแก้คำผิด และรายชื่อผู้ร่วมแก้ไขจะถูกบันทึกไว้ใน contributors
- สามารถติดตั้ง Julia ได้ง่ายผ่านยูทิลิตี
juliaup - มีลิงก์ไปยังอินสแตนซ์
binder.orgสำหรับรัน Julia บนเว็บด้วย แต่มีข้อจำกัดด้านทรัพยากร- อิมเมจที่ไม่มี SymPy
- อิมเมจที่มี SymPy ซึ่งใช้เวลาโหลดนานกว่า
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ลูกของผมกำลังขึ้น ม.5 และจะเรียน SVC เลยรู้สึกว่านี่เป็นแหล่งข้อมูลที่เหมาะมากเป็นการส่วนตัว
ถ้าผู้เขียนเห็นเธรดนี้ อยากทราบว่าเหมาะกับ นักเรียนมัธยมปลายที่เคยลองเรียนแค่ Python เบื้องต้น ด้วยหรือไม่
สิ่งสำคัญคือการลงมือแก้โจทย์และคิดถึงแนวคิดพื้นฐานเอง มากกว่ากังวลเรื่องไวยากรณ์ของโค้ด และการฝึกด้วยมือจะช่วยให้ซึมซับเนื้อหาได้ดีกว่า
ส่วนการเขียนโปรแกรมนั้นโอเค แต่จากที่ลองไล่ดูเร็ว ๆ คำอธิบายทางคณิตศาสตร์เขียนในลักษณะที่คนซึ่งยังไม่รู้แคลคูลัสมาก่อนจะสับสนมาก จนอาจทำให้นักเรียนรู้สึกว่าตัวเองไม่เก่งคณิต ทั้งที่จริง ๆ แล้วคำอธิบายไม่เพียงพอเท่านั้น
ตัวอย่างเช่น รูปใน [1] เป็นกล่องแรเงารูปตัว L ที่ไม่มีแม้แต่ป้ายชื่อแกน มีเส้นโค้งผ่านอยู่ แล้วต่อด้วยการอนุมานสูตร การอินทิเกรตทีละส่วน จากสมการพาราเมตริกและการแทนค่าหลายขั้น
แม้ในฐานะคนที่รู้จักการอินทิเกรตทีละส่วนดี วิธีอนุมานหรืออธิบายสูตรแบบนี้ก็จัดว่าแทบจะสับสนที่สุดรูปแบบหนึ่ง และถ้าไม่ใช่คนที่เข้าใจแนวคิดอยู่แล้ว รูปนั้นก็ไม่ได้ช่วยอะไรมาก
ถ้าเคยเห็นภาพประกอบที่ยอดเยี่ยมและคำอธิบายที่ชัดเจนแบบใน “Calculus” ของ James Stewart ความต่างจะเห็นได้ชัดมาก
ปกติคำอธิบายเรื่องการอินทิเกรตทีละส่วนจะเริ่มจากกฎอนุพันธ์ของผลคูณเหมือนผู้เขียน แต่ก่อนอื่นจะให้ลองหาอนุพันธ์ของผลคูณด้วยตัวอย่างสักสองสามข้อ เพื่อสร้างสัญชาตญาณเกี่ยวกับรูปของปฏิยานุพันธ์ของผลลัพธ์ จากนั้นจึงอินทิเกรตทั้งสองข้างและแยกอินทิกรัลเพื่ออนุมานสูตร[2]
แบบนั้นชัดเจนและตามได้ง่ายกว่ามาก และถ้าต้องการช่วยนักเรียนจริง ๆ ก็ควรสอนวิธีแบบตาราง/วิธี “DI” ด้วย เพื่อไม่ให้ลำบากกับเรื่องเครื่องหมายเวลาต้องอินทิเกรตทีละส่วนหลายรอบ
[1] https://jverzani.github.io/CalculusWithJuliaNotes.jl/integra...
[2] นี่คือโน้ตการอนุมานที่ผมจดไว้ตอนเรียน ไม่ได้เขียนเพื่ออธิบายให้มือใหม่ แต่เป็นโน้ตส่วนตัว ถึงอย่างนั้นก็ยังตามได้ง่ายกว่าตัวอย่างข้างต้นมาก https://publish.obsidian.md/uncarved/3+Resources/Public/Inte...
ดังนั้นถ้าจะแนะนำ ผมอยากบอกให้ดู Quick Calculus ของ Kleppner และ Ramsey
ในบรรดาหนังสือที่ผมเคยใช้ ไม่มีเล่มไหนใกล้เคียงเล่มนี้ในด้านการสร้างสัญชาตญาณสำหรับแนวคิดที่เพิ่งเจอครั้งแรก
หลังจากเข้าใจตรงนั้นแล้ว หนังสือดี ๆ เล่มไหนก็ใช้ได้ และหนังสือของ James Stewart ก็ยอดเยี่ยม แต่หนามากจนควรใช้เหมือนหนังสืออ้างอิงสำหรับเลือกอ่านและเลือกทำโจทย์ที่เหมาะสม มากกว่าจะให้ทำทุกโจทย์ตั้งแต่หน้า 1
หัวใจคือการจับพื้นฐานให้ถูกตั้งแต่แรกว่าอนุพันธ์ อินทิกรัล และลิมิตคืออะไร ซึ่งในเรื่องนี้ Quick Calculus เหนือกว่ามาก
ถ้านักเรียนสนใจการเขียนโปรแกรม จะเลือกแบบฝึกหัดที่เห็นว่าเหมาะจากหนังสือ Julia เล่มนี้หรือหนังสือคล้าย ๆ กันมาเสริม Stewart ก็ได้ และถ้าต้องการจะแก้ด้วย Python ก็เพียงพอแล้ว
ผมเองก็เคยใช้ Python เขียนตัวอินทิเกรตเชิงตัวเลขและตัวหาอนุพันธ์เชิงสัญลักษณ์ตอนอายุเท่ากันเพื่อเสริมความรู้แคลคูลัส ซึ่งทั้งสองอย่างมีประโยชน์และสนุก
โดยเฉพาะ การหาอนุพันธ์เชิงสัญลักษณ์ ให้ความรู้สึกเหมือนเวทมนตร์ แต่สุดท้ายแล้วก็คือการพาร์ส แล้วค่อย ๆ เพิ่มกฎแต่ละข้อที่เรียนจากคณิตศาสตร์เข้าไป
แคลคูลัสที่ผมเรียนในช่วง 2 ปีสุดท้ายของมัธยมปลาย คล้ายกับชั้นปีก่อน ๆ คือเป็นการเรียนอัลกอริทึมหลายอย่างสำหรับจัดการสัญลักษณ์ ขั้นตอนที่ต้องใช้สัญชาตญาณเล็กน้อย และข้อเท็จจริงบางอย่างเกี่ยวกับความชันกับพื้นที่ เพื่อนำไปแก้โจทย์ปัญหาแบบข้อความ
สิ่งแรกที่ได้เรียนคือกฎที่ว่าอนุพันธ์ของ x^n คือ n x^(n-1) ซึ่งเป็นส่วนหนึ่งของอัลกอริทึมการหาอนุพันธ์
ที่มหาวิทยาลัย วิชาเดียวกันถูกเรียกว่า การวิเคราะห์เชิงคณิตศาสตร์ และเนื้อหาเป็นการนิยามแนวคิดต่าง ๆ แล้วพิสูจน์สมบัติของมัน
โดยทั่วไปวิชาแบบนี้จะมีโครงสร้างสามส่วน ได้แก่ ลำดับ·อนุกรมและการลู่เข้าสู่ลิมิต, ความต่อเนื่องของฟังก์ชันและลิมิตของฟังก์ชัน, และอนุพันธ์กับอินทิกรัล รวมถึงอาจมีบางส่วนของทฤษฎีบท Taylor
ตั้งแต่ Cauchy นำคำนิยามแบบ “สมัยใหม่” จำนวนมากมาใช้ในตำราเรียน โครงสร้างนี้ก็แทบไม่เปลี่ยนไปมากนัก ข้อยกเว้นที่ชัดเจนคือเรื่องอินทิกรัลที่รู้จักกันในชื่ออินทิกรัลของ Riemann
ผมไม่รู้ว่าคอร์สนี้เป็นแบบไหน แต่เริ่มจากลิมิตจึงอาจใกล้เคียงแบบหลัง และถ้าเป็นเช่นนั้นก็ไม่แน่ใจว่า Julia จะมีประโยชน์แค่ไหน
สิ่งสำคัญเวลา vurder ว่าเหมาะสมหรือไม่ ดูเหมือนจะไม่ใช่การเขียนโปรแกรม แต่เป็นข้อเท็จจริงที่ว่าอาจต้องการ วุฒิภาวะทางคณิตศาสตร์
ในที่นี้ วุฒิภาวะทางคณิตศาสตร์หมายถึงความสามารถในการจัดการกับคำนิยามที่แม่นยำและแนวคิดนามธรรม โดยไม่ดึงข้อสรุปผิด ๆ ออกมามากมาย และสามารถตามข้อโต้แย้งในรูปแบบของการพิสูจน์ทางคณิตศาสตร์ได้
ผมลองเปิดอ่านหนังสือผ่าน ๆ หลายส่วนแล้วรู้สึกว่าน่าสนใจ และคิดว่าอาจแนะนำให้เด็ก ๆ เรียนแคลคูลัสด้วยวิธีแบบนี้ได้
แต่ก็สงสัยประโยคในย่อหน้าแรกของคำนำที่ว่า “Julia เป็นภาษาโปรแกรมมิงโอเพนซอร์สที่มีไวยากรณ์เรียนรู้ง่าย และเหมาะกับงานนี้”
ทำไม Julia ถึงเหมาะกว่าภาษาอื่น?
ถ้าวางสเกลาร์ไว้หน้าตัวแปรเหมือนสัญกรณ์คณิตศาสตร์มาตรฐาน จะถือเป็นการคูณโดยนัย เช่น ถ้า x เป็น 2 แล้ว 3x จะประเมินค่าเป็น 6
การรองรับ Unicode ก็ครบครันมาก ตัวดำเนินการอย่าง ∈ และ ∉ อาจดูเกินไปนิด แต่ทำงานได้อย่างที่คาดไว้, π ถูกนิยามไว้ล่วงหน้าและถึงขั้นเป็นชนิดข้อมูลจำนวนอตรรกยะ, และ √ ก็ใช้เป็นตัวดำเนินการได้ ทำให้ √2 เป็นนิพจน์ที่ถูกต้องและได้ค่าแบบทศนิยมลอยตัว
Julia ไม่เพียงรองรับไวยากรณ์แบบนี้ แต่ยังมีวิธีให้ป้อนอักขระเหล่านี้ได้ง่ายด้วย
แม้จะเกี่ยวกับแคลคูลัสน้อยกว่านิดหน่อย แต่เวกเตอร์และเมทริกซ์เป็น ชนิดข้อมูลชั้นหนึ่ง จึงพิมพ์และอ่านด้วยตาได้ง่ายกว่า Python มาก
เป็นความต่างระหว่าง
m = [1 2 3; 4 5 6; 7 8 9]กับm = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]ทรานสโพสทำได้ด้วยตัวดำเนินการอักขระเดียวคือ
', ผลคูณภายในทำได้ด้วยตัวดำเนินการจุดm ⋅ n, และA\bก็ทำงานเหมือน Matlabนอกจากนี้ยังรองรับ broadcasting และมี comprehension ด้วย แต่โดยส่วนตัวแล้วเพราะมี broadcasting จึงแทบไม่ต้องใช้ comprehension เท่าไร
จำนวนตรรกยะก็มีในตัว และใช้ไวยากรณ์ที่เรียบง่ายมากอย่าง
1//2“คู่แข่ง” หลักอย่าง Python ขึ้นชื่อว่าไวยากรณ์สำหรับการดำเนินการทางคณิตศาสตร์ไม่ดีนัก, การรองรับคณิตศาสตร์ในไลบรารีมาตรฐานก็น้อย, ระบบชนิดข้อมูลมีข้อจำกัด และประสิทธิภาพการรันก็แย่มาก
Julia แก้ปัญหาเหล่านี้พร้อมกับให้ภาษาที่อ่านค่อนข้างง่าย มักคล้ายสัญกรณ์คณิตศาสตร์ และประสิทธิภาพก็ค่อนข้างดี
f’และf’’ได้จากประสบการณ์ส่วนตัว “หนังสือแคลคูลัส” ที่ดีที่สุดไม่ได้ใช้ Julia แต่ใช้ Haskell และพึ่งพาแค่ไลบรารีสำหรับวาดกราฟ คือ Learn Physics with Functional Programming
https://www.lpfp.io/
Julia เป็นที่รู้จักในฐานะ “ภาษาโปรแกรมมิงสำหรับคณิตศาสตร์” และทิศทางนั้นเป็นตัวขับเคลื่อนการพัฒนาหลายส่วน
ในเชิงชัดเจนคือรองรับสัญกรณ์คณิตศาสตร์จำนวนมากที่สอดคล้องกับลายมือหรือสัญลักษณ์ LaTeX
ส่วนในเชิงแฝงน่าจะหมายถึงไวยากรณ์แบบง่ายตามสไตล์ Python, ความสามารถในการทำงานร่วมกับระบบอื่นอย่างกว้างขวาง, การใช้ SymPy ที่บทเรียนนี้มอบงานจำนวนมากให้จัดการ, primitive สำหรับการคำนวณแบบขนานในตัว, และ การคอมไพล์แบบ JIT ที่ช่วยให้วนปรับและสำรวจได้รวดเร็ว
https://computationalthinking.mit.edu/Spring21/
พูดสั้น ๆ คือเป็นภาษาที่คล้าย Python ในระดับหนึ่งและเขียนง่ายเหมือนกัน แต่มีไวยากรณ์ที่แสดงคณิตศาสตร์ได้โดยตรงและหลากหลายกว่ามาก
โน้ตบุ๊กก็มีความสามารถมากกว่า
ความต่างสำคัญคือในโน้ตบุ๊ก Python คุณรันเซลล์ แต่โน้ตบุ๊ก Julia จะจัดการสิ่งอย่าง dependency ให้ด้วย
ถ้าเปลี่ยน x เป็นตัวเลขหรือสไลเดอร์ สิ่งที่ขึ้นต่อกันทั้งหมดจะอัปเดต
นิยามกราฟแล้วเพิ่มสไลเดอร์ ก็ใช้งานได้เลย
ผมเองก็ไม่ใช่ผู้เชี่ยวชาญ Julia และส่วนใหญ่ทำงานด้วย Python กับ JavaScript แต่ในชั้นเรียนแนวคล้ายกัน สองอย่างข้างต้นเห็นได้ชัดมาก
บวกกับการรองรับ Unicode ที่ใช้กันบ่อยมาก และในหลายกรณีสามารถตั้งใจเขียนให้ดูเหมือน pseudocode ได้
น่าสนใจตรงที่ผมอยากเรียน ML เลยเพิ่งกลับมาเรียนคณิตศาสตร์ใหม่เมื่อเร็ว ๆ นี้ ได้แก่ พีชคณิตเชิงเส้น·แคลคูลัส·สถิติ
ระหว่างเรียนหลายหัวข้อก็ลองทำ implementation ง่าย ๆ ด้วย Python ไปด้วย ซึ่งน่าอายที่ก่อนหน้านี้ผมไม่เคยใช้ Python มาก่อน
การหมุนเวกเตอร์และวาดฟังก์ชันด้วย matplotlib ได้นี่ค่อนข้างดี
วาดด้วยมือก็ได้แหละ แต่คงไม่สวยขนาดนั้น
เวลาจะออกแบบคอร์สแบบนี้ต้องระวังนิดหน่อย
โดยทั่วไปมันน่าจะน่าสนใจที่สุดสำหรับคนที่รู้อยู่แล้วพอสมควรทั้ง แคลคูลัสและการเขียนโปรแกรม ส่วนคนที่เป็นกลุ่มเป้าหมายจริง ๆ คือคนที่กำลังเรียนอย่างใดอย่างหนึ่งในสองอย่างนี้ อาจยังไม่พร้อมรับคอร์สแบบนี้เท่าไร
โดยส่วนตัว ตอนที่พยายามใส่ระบบพีชคณิตคอมพิวเตอร์ที่ค่อนข้างแปลกตาอย่าง Maxima หรือ Sagemath เข้าไปในวิชาแคลคูลัส การตอบรับก็อย่างมากแค่อุ่น ๆ
ผมคิดว่าส่วนหนึ่งของปัญหาคือนักศึกษาปีหนึ่งไม่ค่อยสนใจติดตั้งซอฟต์แวร์เพื่อวิชาที่ไม่ใช่วิทยาการคอมพิวเตอร์
แต่ในคอร์สระดับสูงขึ้นมาหน่อย มันอาจทำงานได้ค่อนข้างดีในฐานะส่วนเลือกเสริม และผมเคยได้ผลลัพธ์ที่ดีมากจากโปรเจกต์ Python ในวิชาสมการเชิงอนุพันธ์สามัญ
การที่ Python ไม่ใช่ภาษากลุ่มเฉพาะก็ช่วยได้อย่างชัดเจน
ถึงอย่างนั้นสุดท้ายผมคิดว่าความท้าทายนั้นก็คุ้ม และดีกว่าการให้คำนวณทุกอย่างด้วยมือแล้วไปเปิดหาค่าจากตาราง
ถ้าแชร์เอกสารอ้างอิงได้ ไม่ว่าจะเป็นโน้ตบรรยาย·โค้ด·สไลด์·หนังสือ หรืออะไรก็ตาม จะดีมาก
เกี่ยวกับเรื่องนี้ ถ้าใช้ Emacs ก็มี แพ็กเกจ Calc ที่รองรับพีชคณิตคอมพิวเตอร์
เมื่อเร็ว ๆ นี้ผมเผยแพร่อินเทอร์เฟซที่ทำให้ Calc ใช้ง่ายขึ้นมาก และเขียนไว้ที่นี่
http://yummymelon.com/devnull/mathing-in-emacs-with-casual.h...
https://www.emacswiki.org/emacs/MaximaMode
ชอบแนวคิดนะ
แต่ถ้าเนื้อหาแบบนี้ถูกสร้างขึ้นบนอะไรอย่าง MOOCulus หรือเริ่มต้นจากที่นั่น น่าจะดีกว่านี้มาก
https://ximera.osu.edu/mooculus/calculus1
โดยรวมแล้วผมชอบ MOOCulus มากกว่า
ถึงอย่างนั้น Calculus with Julia ก็เพิ่มคุณค่าได้มาก
ถ้าทั้งสองอย่างผสานรวมกันได้ไม่ทางใดก็ทางหนึ่งก็คงดี
จุดสำคัญของ MOOCulus คือคุณภาพงานเขียนดีกว่า กระชับกว่ามาก และแบบฝึกหัดที่ผสานอยู่ในเนื้อหาช่วยให้นักศึกษาตามเนื้อหาได้อย่างละเอียด
มันถูกใช้ในชั้นเรียนกันมาก และได้รับการขัดเกลามาค่อนข้างดีด้วย
ถ้า fork แล้วเสริม Julia เข้าไป น่าจะเป็นการปรับปรุงครั้งใหญ่มาก และการเพิ่มตัวอย่างประยุกต์ก็น่าจะเช่นกัน
แถม “Equal or Not?” ที่คลิกเข้าไปเป็นอย่างแรกก็มีข้อผิดพลาดด้วย
การใช้ Maxima กับ Gnuplot ร่วมกับเอกสารที่แถมมาก็ถือว่าดีทีเดียว
จำได้ว่าเคยมี PDF บทนำ/คู่มือสำหรับ Maxima ที่ค่อนข้างสมบูรณ์ด้วย
Julia จะเป็นตัวทดแทนที่ใช้ได้สำหรับคนที่เคยใช้ Matlab ไหม?
ดูความแตกต่างโดยละเอียดได้ที่ https://docs.julialang.org/en/v1/manual/noteworthy-differenc...
คล้ายกับการยื่นแก้วน้ำเย็นให้คนที่อยู่ในนรก
ถ้ายืมคำพูดที่ Steve Jobs เคยพูดถึง iTunes สำหรับ Windows ก็คงประมาณนั้น และแน่นอนว่าตอนนั้น iTunes ยังไม่ได้กลายเป็นสภาพเละเทะอย่างที่เป็นในภายหลัง
ผมเคารพสิ่งที่ Cleve Moler และ Matlab ทำสำเร็จอย่างมาก โดยเฉพาะการทำให้ LINPACK และ EISPACK เป็นต้นเข้าถึงได้ง่าย
ช่วงแรก ๆ ก็พยายามอย่างมากเพื่อก้าวข้ามข้อจำกัดที่มีชนิดข้อมูลเพียงอย่างเดียวคือเมทริกซ์
แต่ Julia ในฐานะภาษาทั่วไปสมัยใหม่ ใช้งานได้สบายกว่ามาก ขณะเดียวกันก็ยังรักษาพลังของ Matlab ไว้ได้แทบทั้งหมด
เร็วกว่ามาก โดยทั่วไปมีความสามารถที่ดีกว่าในฐานะภาษาโปรแกรม และทำ parallelization ได้ง่ายกว่ามาก
ในฐานะคนที่เคยใช้ทั้งสองอย่างในการทำงาน ผมจะบอกว่าโดยรวมแล้วทุกวันนี้ Julia เป็นตัวเลือกที่ดีกว่า
อย่างไรก็ตาม ภาษาอย่าง Matlab หรือ Stata มีอัลกอริทึมเดิมที่ถูกนำไป implement ไว้แล้วจำนวนมหาศาล และ Julia อาจยังไม่มี implementation ที่เทียบเท่า
ถ้าสิ่งที่ต้องการเป็นหนึ่งในนั้น ก็มักยากที่จะหาเหตุผลไม่ให้ใช้ภาษาอื่น
ในทางปฏิบัติ การย้ายโค้ด Matlab/Python/Stata ไป Julia โดยทั่วไปค่อนข้างง่าย
โค้ด Julia ดูดีกว่าโค้ด Matlab ได้มาก และประสิทธิภาพก็ดีกว่าได้มากด้วย
ถ้าไม่ Julia จะให้ความรู้สึกดีและเป็นตัวทดแทนที่เพียงพอ
syntax คล้ายกันอยู่บ้าง และมีความสะดวกด้านอาร์เรย์แบบ MATLAB อยู่มาก
นอกจากนี้ยังมีระบบชนิดข้อมูลที่ดี และจัดการการเขียนโปรแกรมทั่วไปได้ดีกว่ามาก เช่น ตำแหน่งของฟังก์ชันก็ไม่ทำตัวแปลก ๆ
แนะนำให้ลองใช้เอง
ลิงก์ PDF ใน header ของหน้าเป็น 404
“โน้ตนี้สามารถ compile เป็นไฟล์ PDF ผ่าน Quarto ได้ เนื่องจากไฟล์ผลลัพธ์ค่อนข้างใหญ่ จึงไม่ได้提供ไฟล์สำหรับดาวน์โหลด ผู้อ่านที่สนใจสามารถดาวน์โหลด repository, instantiate environment แล้วรัน quarto ในไดเรกทอรีย่อย quarto เพื่อ render เป็น PDF จากนั้นไฟล์นั้นจะถูกสร้างขึ้น ใช้เวลาสักพัก”
“การคำนวณคือสิ่งยั่วยวนที่ควรต้านทานให้นานที่สุดเท่าที่จะทำได้”
— J.P. Boyd