เอกสารประกอบ |
---|
https://msolve.lip6.fr/
msolve
เป็นไลบรารี C แบบโอเพ่นซอร์สที่ใช้อัลกอริธึมพีชคณิตคอมพิวเตอร์สำหรับการแก้ระบบพหุนาม (พร้อมสัมประสิทธิ์ตรรกยะหรือสัมประสิทธิ์ในฟิลด์เฉพาะ)
ในปัจจุบัน ด้วย msolve
คุณสามารถแก้ระบบพหุนามหลายตัวแปรได้โดยทั่วไป ซึ่งรวมถึง:
มีบทช่วยสอนที่นี่
ฟังก์ชันบางอย่างของ msolve มีอยู่แล้วในระบบพีชคณิตคอมพิวเตอร์ Oscar และ SageMath ดูด้านล่างสำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้
ดูไฟล์ติดตั้ง
ข้อมูลเพิ่มเติมมีให้ในบทช่วยสอน (ดู https://msolve.lip6.fr)
ไฟล์อินพุต msolve
จะต้องมีรูปแบบต่อไปนี้:
บรรทัดที่ 1 : ตัวแปรเป็นรายการที่คั่นด้วยเครื่องหมายจุลภาค เช่น x1,x2,x3,x4,y1,y2
บรรทัดที่ 2 : ลักษณะฟิลด์ เช่น 0
บรรทัดต่อไปนี้ : การสร้างพหุนามทั้งหมดยกเว้นอันสุดท้ายจำเป็นต้องสิ้นสุดด้วย ,
เช่น
x1,x2,x3,x4,y1,y2
101
x1+x2+x3+x4,
2*y1-145*y2
พหุนามอาจเป็นหลายบรรทัด ,
เป็นตัวคั่น
ค่าสัมประสิทธิ์สามารถมีเหตุผลโดยใช้ /
เช่น -2/3*x2*y1^2+...
คำสั่งพื้นฐานบางคำสั่งมีดังนี้:
./msolve -f in.ms -o out.ms
จะ:
msolve
จะแยกผลเฉลยจริงออกมาmsolve
จะคำนวณพาราเมตริกของโซลูชัน ข้อมูลเอาต์พุตทั้งหมดจะแสดงในไฟล์ out.ms
แฟล็ก -v
ช่วยให้คุณควบคุมการใช้คำฟุ่มเฟือย โดยให้ข้อมูลเชิงลึกเกี่ยวกับสิ่งที่ msolve
กำลังทำอยู่ ลองสิ่งนี้
./msolve -v 2 -f in.ms -o out.ms
msolve
คำนวณฐาน Groebner เมื่อฟิลด์ฐานเป็นฟิลด์ของจำนวนตรรกยะหรือฟิลด์เฉพาะ (ลักษณะควรน้อยกว่า 2^31)
คำสั่งต่อไปนี้
./msolve -g 1 -f in.ms -o out.ms
จะคำนวณ monomials ชั้นนำของพื้นฐาน Groebner ที่ลดลงของอุดมคติที่สร้างขึ้นโดยระบบอินพุตใน in.ms
สำหรับสิ่งที่เรียกว่าการจัดลำดับพจนานุกรมแบบย้อนกลับอย่างให้คะแนน วิธีนี้ช่วยให้คุณสามารถอนุมานมิติของโซลูชันที่ตั้งค่าเป็นพหุนามอินพุต (ในการปิดพีชคณิตของฟิลด์ฐาน) รวมถึงระดับของอุดมคติที่สร้างขึ้น
การใช้แฟล็ก -g 2
ดังต่อไปนี้
./msolve -g 2 -f in.ms -o out.ms
จะส่งกลับค่าพื้นฐาน Groebner ที่ลดลงสำหรับการจัดลำดับพจนานุกรมแบบย้อนกลับแบบให้คะแนน
msolve
ยังช่วยให้คุณดำเนินการคำนวณฐาน Groebner โดยใช้ ลำดับ monomial การกำจัดแบบบล็อกเดียว ด้วยแฟล็ก -e
คำสั่งต่อไปนี้
./msolve -e 1 -g 2 -f in.ms -o out.ms
จะดำเนินการคำนวณพื้นฐานของ Groebner โดยกำจัดตัวแปรแรก โดยทั่วไปแล้ว การใช้ -ek
จะกำจัดตัวแปร k
ตัวแรกออกไป
เมื่อระบบพหุนามอินพุตมีค่าสัมประสิทธิ์เหตุผลและเมื่อ มีคำตอบที่ซับซ้อนจำนวนจำกัด ตามค่า เริ่มต้น msolve
จะคำนวณคำตอบที่แท้จริงของระบบอินพุต สิ่งเหล่านั้นถูกเข้ารหัสด้วยกล่องแยกสำหรับพิกัดทั้งหมดไปยังโซลูชันจริงทั้งหมด
ตัวอย่างเช่นในไฟล์อินพุต in.ms
ดังนี้
x, y
0
x^2+y^2-4,
x*y-1
การเรียก ./msolve -f in.ms -o out.ms
จะแสดงในไฟล์ out.ms
ผลลัพธ์ต่อไปนี้
[0, [1,
[[[-41011514734338452707966945920 / 2^96, -41011514734338452707966945917 / 2^96], [-153057056683910732545430822374 / 2^96, -153057056683910732545430822373 / 2^96]],
[[-612228226735642930181723289497 / 2^98, -612228226735642930181723289492 / 2^98], [-164046058937353810831867783675 / 2^98, -164046058937353810831867783674 / 2^98]],
[[612228226735642930181723289492 / 2^98, 612228226735642930181723289497 / 2^98], [164046058937353810831867783674 / 2^98, 164046058937353810831867783675 / 2^98]],
[[41011514734338452707966945917 / 2^96, 41011514734338452707966945920 / 2^96], [153057056683910732545430822373 / 2^96, 153057056683910732545430822374 / 2^96]]]
]]:
ซึ่งเป็นกล่องแยก 4 กล่องของราก 4 ตัวที่แน่นอนซึ่งมีการประมาณตัวเลขคือ (-0.5176380902, -1.931851653)
, (-1.931851653, -0.5176380902)
, (1.931851653, 0.5176380902)
และ (0.5176380902, 1.931851653)
.
ส่วนประกอบหลายอย่างของ msolve
ถูกขนานผ่านมัลติเธรด กำลังพิมพ์
./msolve -t 4 -f in.ms -o out.ms
บอกให้ msolve
ใช้ 4 เธรด มีการใช้มัลติเธรดใน msolve
msolve
ในการแก้พีชคณิต AlgebraicSolving เป็นแพ็คเกจ Julia ที่รวม msolve
และมอบฟังก์ชันการทำงานเพิ่มเติมบางอย่าง เช่น การคำนวณโซลูชันเชิงเหตุผล ดูที่นี่สำหรับข้อมูลและเอกสารเพิ่มเติม
msolve
ในออสการ์ msolve
ใช้ใน Oscar เพื่อ แก้ ระบบพหุนามด้วยสัมประสิทธิ์ตรรกยะ
มันจะตรวจสอบว่าระบบอินพุตมีวิธีแก้ปัญหาที่ซับซ้อนจำนวนจำกัดหรือไม่ ซึ่งในกรณีนี้ ระบบจะส่งเอาท์พุตพาราเมตริกเชิงเหตุผลของชุดโซลูชันตลอดจนวิธีแก้ปัญหาที่แท้จริงให้กับระบบอินพุต (ดูบทช่วยสอนของ msolve
ที่นี่)
คุณสามารถดูสิ่งนี้และเอกสารประกอบของ Oscar
นี่คือวิธีที่คุณสามารถใช้มันได้
julia> R,(x1,x2,x3) = PolynomialRing(QQ, ["x1","x2","x3"])
(Multivariate Polynomial Ring in x1, x2, x3 over Rational Field, fmpq_mpoly[x1, x2, x3])
julia> I = ideal(R, [x1+2*x2+2*x3-1, x1^2+2*x2^2+2*x3^2-x1, 2*x1*x2+2*x2*x3-x2])
ideal(x1 + 2*x2 + 2*x3 - 1, x1^2 - x1 + 2*x2^2 + 2*x3^2, 2*x1*x2 + 2*x2*x3 - x2)
julia> real_solutions(I)
((84*x^4 - 40*x^3 + x^2 + x, 336*x^3 - 120*x^2 + 2*x + 1, PolyElem[-184*x^3 + 80*x^2 - 4*x - 1, -36*x^3 + 18*x^2 - 2*x], fmpz[-1, -1]), Vector{fmpq}[[744483363399261433351//1180591620717411303424, 372241681699630716673//1180591620717411303424, -154187553040555781639//1180591620717411303424], [1, 0, 0], [71793683196126133110381699745//316912650057057350374175801344, 71793683196126133110381699745//633825300114114700748351602688, 173325283664805084153412401855//633825300114114700748351602688], [196765270119568550571//590295810358705651712, 1//590295810358705651712, 196765270119568550571//590295810358705651712]])
msolve
ใน SageMath เมื่อคุณติดตั้ง msolve
แล้ว SageMath จะใช้ฟังก์ชันนี้เมื่อคุณเรียกใช้ฟังก์ชัน Variety
สำหรับการแก้ระบบพหุนามด้วยค่าสัมประสิทธิ์จริง
คุณสามารถดูได้ที่นี่และที่นี่
เราขอขอบคุณ Marc Mezzarobba ที่ริเริ่มการใช้ msolve
ใน SageMath และทีมพัฒนาทั้งหมดของ SageMath โดยเฉพาะผู้ที่เกี่ยวข้องกับตั๋วนี้
msolve
หากคุณใช้ msolve
ในการเตรียมรายงาน เราขอขอบคุณที่คุณอ้างอิงดังนี้:
msolve: A Library for Solving Polynomial Systems,
J. Berthomieu, C. Eder, M. Safey El Din, Proceedings of the
46th International Symposium on Symbolic and Algebraic Computation (ISSAC),
pp. 51-58, ACM, 2021.
หรือหากคุณใช้รายการ BibTeX:
@inproceedings{msolve,
TITLE = {{msolve: A Library for Solving Polynomial Systems}},
AUTHOR = {Berthomieu, J{'e}r{'e}my and Eder, Christian and {Safey El Din}, Mohab},
BOOKTITLE = {{2021 International Symposium on Symbolic and Algebraic Computation}},
ADDRESS = {Saint Petersburg, Russia},
SERIES = {46th International Symposium on Symbolic and Algebraic Computation},
PAGES = {51--58},
PUBLISHER = {{ACM}},
YEAR = {2021},
MONTH = Jul,
DOI = {10.1145/3452143.3465545},
PDF = {https://hal.sorbonne-universite.fr/hal-03191666v2/file/main.pdf},
HAL_ID = {hal-03191666},
HAL_VERSION = {v2},
}
สามารถดาวน์โหลดกระดาษได้ที่นี่
การพัฒนา msolve
ได้รับการสนับสนุนจาก Forschungsinitiative Rheinland-Pfalz