ข้ามไปเนื้อหา

SageMath

จากวิกิพีเดีย สารานุกรมเสรี
SageMath
ผู้ออกแบบวิลเลียม สไตน์
นักพัฒนาโครงการ SageMath
วันที่เปิดตัว24 กุมภาพันธ์ 2005; 21 ปีก่อน (2005-02-24)[1]
ที่เก็บข้อมูลgithub.com/sagemath/sage
ภาษาที่เขียนไพทอน, ไซทอน[2]
ประเภทระบบพีชคณิตคอมพิวเตอร์
สัญญาอนุญาตสัญญาอนุญาตสาธารณะทั่วไปของกนู[3]
เว็บไซต์www.sagemath.org

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. 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.
  2. 1 2 3 4 "Sage Tutorial". SageMath Documentation. SageMath. สืบค้นเมื่อ 11 July 2026.
  3. 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.
  4. 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.
  5. 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.
  6. 1 2 "2013 Richard D. Jenks Memorial Prize Award". ACM SIGSAM. Association for Computing Machinery. สืบค้นเมื่อ 11 July 2026.
  7. 1 2 3 "General Conventions". SageMath Developer Guide. SageMath. สืบค้นเมื่อ 11 July 2026.
  8. 1 2 3 4 5 6 "Interpreter Interfaces". SageMath Reference Manual. SageMath. สืบค้นเมื่อ 11 July 2026.
  9. 1 2 3 "Elliptic Curves". SageMath Reference Manual. SageMath. สืบค้นเมื่อ 11 July 2026.
  10. "Interface to GAP". SageMath Reference Manual. SageMath. สืบค้นเมื่อ 11 July 2026.
  11. "SageMath source repository". GitHub. SageMath. สืบค้นเมื่อ 11 July 2026.
  12. "SageMath Developer Guide". SageMath. สืบค้นเมื่อ 11 July 2026.
  13. "Sage Installation Guide". SageMath. สืบค้นเมื่อ 11 July 2026.

แหล่งข้อมูลอื่น

[แก้]