SageMath
SageMath ทำงานภายในJupyter Notebook | |
| ผู้ออกแบบ | วิลเลียม สไตน์ |
|---|---|
| นักพัฒนา | โครงการ SageMath |
| วันที่เปิดตัว | 24 กุมภาพันธ์ 2005[1] |
| ที่เก็บข้อมูล | github |
| ภาษาที่เขียน | ไพทอน, ไซทอน[2] |
| ประเภท | ระบบพีชคณิตคอมพิวเตอร์ |
| สัญญาอนุญาต | สัญญาอนุญาตสาธารณะทั่วไปของกนู[3] |
| เว็บไซต์ | www |
SageMath (เดิมใช้ชื่อ Sage และ SAGE; อ่านว่า "เซจแมท") เป็นซอฟต์แวร์คณิตศาสตร์แบบโอเพนซอร์สซึ่งมีสภาพแวดล้อมร่วมสำหรับการคำนวณทางคณิตศาสตร์หลากหลายสาขา[3][4] ระบบครอบคลุมงานด้านพีชคณิต แคลคูลัส ทฤษฎีจำนวน คอมบินาทอริกส์ ทฤษฎีกราฟ การคำนวณเชิงตัวเลข และสถิติ[3][5] SageMath ใช้ภาษาไพทอนเป็นพื้นฐานของส่วนติดต่อและรวมซอฟต์แวร์คณิตศาสตร์โอเพนซอร์สหลายโครงการไว้ภายใต้กรอบการทำงานเดียว[3][4]
โครงการเริ่มต้นโดยวิลเลียม สไตน์ และเผยแพร่ผลงานระยะแรกใน ค.ศ. 2005 ภายใต้ชื่อ “SAGE: System for Algebra and Geometry Experimentation”[1] เป้าหมายที่โครงการประกาศไว้คือการสร้างทางเลือกเสรีและโอเพนซอร์สแทนซอฟต์แวร์เชิงพาณิชย์ เช่น Magma, Maple, Mathematica และ MATLAB[3] SageMath ได้รับการกล่าวถึงในวรรณกรรมวิชาการทั้งในฐานะระบบพีชคณิตคอมพิวเตอร์และสภาพแวดล้อมสำหรับการเรียนการสอนและการคำนวณทางคณิตศาสตร์[5][4]
ประวัติ
[แก้]สไตน์และเดวิด จอยเนอร์อธิบายระบบรุ่นแรกในบทความ ค.ศ. 2005 ว่าเป็นกรอบสำหรับการคำนวณด้านทฤษฎีจำนวน พีชคณิต และเรขาคณิต โดยมุ่งเน้นเบื้องต้นไปที่เส้นโค้งเชิงวงรีและมอดูลาร์ฟอร์ม[1] การนำไปใช้ในระยะแรกประกอบด้วยไลบรารีภาษาไพทอน ล่ามคำสั่งที่ปรับแต่ง และส่วนประกอบที่เขียนด้วยภาษาซีและซีพลัสพลัสผ่านเครื่องมือที่ต่อมาพัฒนาเป็นไซทอน[1]
แนวทางของโครงการไม่ได้มุ่งเขียนขั้นตอนวิธีทุกชนิดขึ้นใหม่ทั้งหมด แต่ใช้และเชื่อมต่อซอฟต์แวร์โอเพนซอร์สเฉพาะทางที่มีอยู่แล้ว[4][3] NumPy, SciPy, Matplotlib, SymPy, Maxima, GAP, FLINT และ R เป็นตัวอย่างของโครงการที่ SageMath นำมาใช้[3] นักวิจารณ์ซอฟต์แวร์ เจ. เค. เดนนี อธิบาย Sage ว่าใช้แนวคิด “หลายหัวดีกว่าหัวเดียว” โดยรวบรวมความสามารถของระบบคณิตศาสตร์หลายชนิดและให้ผู้ใช้เข้าถึงผ่านไวยากรณ์แบบเดียวกัน[5]
ใน ค.ศ. 2013 วิลเลียม สไตน์ได้รับรางวัลอนุสรณ์ริชาร์ด ดิมิก เจงก์ส เพื่อความเป็นเลิศด้านวิศวกรรมซอฟต์แวร์ที่ประยุกต์ใช้กับคอมพิวเตอร์พีชคณิต จาก ACM SIGSAM จากผลงานเกี่ยวกับแพลตฟอร์ม Sage[6]
การออกแบบและสถาปัตยกรรม
[แก้]SageMath ประกอบด้วยไลบรารีแกนกลางของโครงการเองควบคู่กับส่วนติดต่อไปยังไลบรารีและระบบคำนวณภายนอก[7][8] คู่มือนักพัฒนาระบุว่าเป้าหมายของไลบรารีไม่ใช่เพียงการรวบรวมฟังก์ชัน แต่เป็นการจัดการเข้าถึงขั้นตอนวิธีจำนวนมากอย่างเป็นระบบและสอดคล้องกับความหมายของวัตถุทางคณิตศาสตร์[7]
ส่วนติดต่อกับซอฟต์แวร์อื่นมีทั้งการเชื่อมกับไลบรารีภาษาซีหรือซีพลัสพลัสโดยตรง และการสื่อสารกับโปรแกรมล่ามคำสั่งผ่านกระบวนการภายนอก[8] เอกสารอ้างอิงของ SageMath ระบุว่า GAP, PARI, Singular และ Maxima รวมมากับ SageMath ขณะที่ระบบที่ไม่เสรีบางชนิด เช่น Magma, Maple และ Mathematica อาจเรียกใช้ผ่านส่วนติดต่อได้เมื่อผู้ใช้ติดตั้งระบบเหล่านั้นแยกต่างหาก[8]
SageMath ใช้ไวยากรณ์ที่ใกล้เคียงกับภาษาไพทอน แต่มีขั้นตอนแปลงคำสั่งล่วงหน้าเพื่อให้รูปแบบบางอย่างเหมาะกับการเขียนคณิตศาสตร์มากขึ้น[2] ระบบรองรับไซทอนสำหรับส่วนที่ต้องการประสิทธิภาพสูงหรือจำเป็นต้องเชื่อมต่อกับโค้ดภาษาซี[2] ผู้ใช้สามารถทำงานผ่านบรรทัดคำสั่งหรือสมุดบันทึก Jupyter ซึ่งรวมโค้ด ข้อความ สูตรคณิตศาสตร์ และผลลัพธ์เชิงกราฟิกไว้ในเอกสารเดียว[2]
ความสามารถ
[แก้]SageMath รองรับทั้งการคำนวณเชิงสัญลักษณ์และการคำนวณเชิงตัวเลข[5][4] ความสามารถเชิงสัญลักษณ์ครอบคลุมการจัดรูปนิพจน์ การแก้สมการ แคลคูลัส และการทำงานกับโครงสร้างพีชคณิต ส่วนการคำนวณเชิงตัวเลขอาศัยไลบรารี เช่น NumPy, SciPy, BLAS และ LAPACK[3][4] ระบบยังมีมอดูลสำหรับทฤษฎีจำนวน เรขาคณิตเชิงพีชคณิต ทฤษฎีกลุ่ม คอมบินาทอริกส์ ทฤษฎีกราฟ สถิติ และการสร้างกราฟสองมิติหรือสามมิติ[3][5]
ตัวอย่างหนึ่งของวัตถุระดับสูงใน SageMath คือเส้นโค้งเชิงวงรี ซึ่งระบบสามารถสร้างจากสมการหรือป้ายกำกับฐานข้อมูล แล้วคำนวณจุดและสมบัติทางเลขคณิตของเส้นโค้งนั้นได้[9] ตัวอย่างต่อไปนี้สร้างเส้นโค้งเชิงวงรีเหนือจำนวนตรรกยะและหาดิสคริมิแนนต์กับค่าคงตัวเจ[9]
E = EllipticCurve([0, 0, 0, -1, 0])
E.discriminant()
E.j_invariant()
ตัวแปร `E` ในตัวอย่างเป็นวัตถุเส้นโค้งเชิงวงรี ไม่ใช่เพียงนิพจน์ข้อความ จึงสามารถเรียกเมทอดที่นิยามสำหรับวัตถุทางคณิตศาสตร์ชนิดนี้โดยตรง[7][9]
ซอฟต์แวร์ที่รวมและเชื่อมต่อ
[แก้]SageMath ใช้แพ็กเกจเฉพาะทางต่างกันตามชนิดของงานคำนวณ[3][8] ตัวอย่างองค์ประกอบสำคัญมีดังนี้
| สาขาหรือหน้าที่ | ซอฟต์แวร์ตัวอย่าง | แหล่งอ้างอิง |
|---|---|---|
| ทฤษฎีกลุ่มและคอมบินาทอริกส์ | GAP | [10] |
| การคำนวณเชิงสัญลักษณ์ | Maxima, SymPy | [3] |
| ทฤษฎีจำนวนและเลขคณิตหลายความแม่นยำ | PARI/GP, FLINT | [3][8] |
| พหุนามและพีชคณิตสับเปลี่ยน | Singular | [8] |
| การคำนวณเชิงตัวเลข | NumPy, SciPy | [3] |
| กราฟิก | Matplotlib | [3] |
ตารางนี้เป็นเพียงตัวอย่างขององค์ประกอบหลัก ไม่ใช่รายการแพ็กเกจทั้งหมดของ SageMath[3]
การพัฒนาและการเผยแพร่
[แก้]SageMath พัฒนาเป็นโครงการโอเพนซอร์ส และซอร์สโค้ดหลักเผยแพร่ผ่านคลัง GitHub ของโครงการ[11] คู่มือนักพัฒนาอธิบายกระบวนการรายงานข้อผิดพลาด แก้ไขโค้ด เพิ่มฟังก์ชัน เขียนเอกสาร และส่งการเปลี่ยนแปลงเข้าสู่คลังหลัก[12]
ซอฟต์แวร์เผยแพร่ภายใต้สัญญาอนุญาตสาธารณะทั่วไปของกนู ซึ่งอนุญาตให้ใช้ ศึกษา แก้ไข และเผยแพร่ซอร์สโค้ดต่อภายใต้เงื่อนไขของสัญญาอนุญาต[3] คู่มือติดตั้งของโครงการอธิบายการติดตั้งบนลินุกซ์ การติดตั้งผ่าน conda-forge และทางเลือกสำหรับใช้งานผ่านบริการคลาวด์[13]
การยอมรับ
[แก้]บทวิจารณ์ของเดนนีใน ค.ศ. 2013 กล่าวถึง Sage ในฐานะระบบที่รวมเครื่องมือคณิตศาสตร์หลายชนิดและให้ผู้ใช้เขียนคำสั่งด้วยรูปแบบที่สอดคล้องกัน[5] บทวิจารณ์หนังสือของจอห์น บี. ลิตเทิล วาง SageMath ไว้ในพัฒนาการของระบบพีชคณิตคอมพิวเตอร์และอภิปรายทั้งขอบเขตของระบบกับแนวทางการรวมซอฟต์แวร์เฉพาะทาง[4] การได้รับรางวัล เจงกส์ ไพรส์ในปี ค.ศ. 2013 เป็นการยอมรับผลงานด้านวิศวกรรมซอฟต์แวร์ที่ประยุกต์กับพีชคณิตคอมพิวเตอร์ของสไตน์และโครงการ Sage[6]
ดูเพิ่ม
[แก้]อ้างอิง
[แก้]- 1 2 3 4 Stein, William; Joyner, David (2005). "SAGE: System for Algebra and Geometry Experimentation". ACM SIGSAM Bulletin. 39 (2): 61–64. doi:10.1145/1101884.1101889.
- 1 2 3 4 "Sage Tutorial". SageMath Documentation. SageMath. สืบค้นเมื่อ 11 July 2026.
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 "SageMath—Open-Source Mathematical Software System". SageMath. สืบค้นเมื่อ 11 July 2026.
- 1 2 3 4 5 6 7 Little, John B. (2020). "Computational Mathematics with SageMath, by Paul Zimmermann et al". Bulletin of the American Mathematical Society. 57 (3): 515–521. doi:10.1090/bull/1690.
- 1 2 3 4 5 6 Denny, J. K. (2013). "SAGE: Open Source Mathematics Software System". The College Mathematics Journal. 44 (2): 149–155. doi:10.4169/college.math.j.44.2.149.
- 1 2 "2013 Richard D. Jenks Memorial Prize Award". ACM SIGSAM. Association for Computing Machinery. สืบค้นเมื่อ 11 July 2026.
- 1 2 3 "General Conventions". SageMath Developer Guide. SageMath. สืบค้นเมื่อ 11 July 2026.
- 1 2 3 4 5 6 "Interpreter Interfaces". SageMath Reference Manual. SageMath. สืบค้นเมื่อ 11 July 2026.
- 1 2 3 "Elliptic Curves". SageMath Reference Manual. SageMath. สืบค้นเมื่อ 11 July 2026.
- ↑ "Interface to GAP". SageMath Reference Manual. SageMath. สืบค้นเมื่อ 11 July 2026.
- ↑ "SageMath source repository". GitHub. SageMath. สืบค้นเมื่อ 11 July 2026.
- ↑ "SageMath Developer Guide". SageMath. สืบค้นเมื่อ 11 July 2026.
- ↑ "Sage Installation Guide". SageMath. สืบค้นเมื่อ 11 July 2026.
แหล่งข้อมูลอื่น
[แก้]- เว็บไซต์ทางการ
- บทเรียน SageMath (ในภาษาอังกฤษ)
- คู่มืออ้างอิง SageMath (ในภาษาอังกฤษ)