แพคเกจซอฟต์แวร์สัญลักษณ์สำหรับการแสดงออกของเมทริกซ์?


36

เรารู้ว่านั้นสมมาตรและเป็นบวกแน่นอน เรารู้ว่าเป็นมุมฉาก:BAB

คำถาม:สมมาตรและเป็นบวกแน่นอน? คำตอบ: ใช่BAB

คำถาม: คอมพิวเตอร์บอกเราได้ไหม คำตอบ: อาจเป็นไปได้

มีระบบพีชคณิตเชิงสัญลักษณ์ (เช่น Mathematica) ที่จัดการและเผยแพร่ข้อเท็จจริงเกี่ยวกับเมทริกซ์หรือไม่?

แก้ไข: เพื่อความชัดเจนฉันถามคำถามนี้เกี่ยวกับเมทริกซ์ที่นิยามไว้อย่างเป็นนามธรรม คือฉันไม่มีรายการที่ชัดเจนสำหรับและฉันเพิ่งรู้ว่าพวกเขาทั้งเมทริกซ์และมี attribues เฉพาะเช่น symetric บวกแน่นอน ฯลฯ ...BAB


5
สิ่งที่ฉันขาดหายไปคือซอฟต์แวร์ที่ใช้เมทริกซ์ฝึกอบรมเชิงสัญลักษณ์ (เช่นไม่ใช่อาร์เรย์) ฉันต้องการพูดคุยเกี่ยวกับเมทริกซ์สมมาตรโดยไม่ต้องกังวลเกี่ยวกับรายการ C
JM

6
มีโครงการไม่กี่โครงการที่ทำสิ่งนี้ ฉันคุ้นเคยกับการใช้งานใน SymPy มันเป็นรถเข็น แต่ถูกสร้างขึ้นอย่างช้าๆ
MRocklin

4
ฟังดูเหมือนทฤษฎีพิสูจน์อัตโนมัติ เคล็ดลับคือการรวมชุดสัจพจน์ที่เพียงพอในเครื่องยนต์ของคุณเพื่อให้สามารถอนุมานได้อย่างมีประสิทธิภาพโดยการใช้เหตุผลอัตโนมัติ (คิดว่า PROLOG) ถ้าฉันจะออกแบบสิ่งนี้คุณสมบัติที่คุณอ้างถึงข้างต้นนั้นเป็นสิ่งที่ฉันเข้ารหัสในความเป็นจริงหรือเป็นที่รู้จักมากกว่าความพยายาม ในทางตรงกันข้ามมีศาสตราจารย์เปาโลเบียนตินีซีที่มหาวิทยาลัย RWTH Aachen ในวิทยานิพนธ์ของเขาเขาพูดเกี่ยวกับการมาของอัลกอริทึมพีชคณิตเชิงเส้นโดยอัตโนมัติ เขาใช้ Mathematica ในลักษณะที่เป็นสัญลักษณ์ aices.rwth-aachen.de:8080/~pauldj
Lagerbaer

1
ฉันรู้สิ่งที่เปาโลและห้องสมุด FLAME ฉันไม่คิดว่าจะทำได้
Matt Knepley

2
ฉันยอมรับว่าระบบพีชคณิตของคอมพิวเตอร์สำหรับเมทริกซ์นั้นยอดเยี่ยม แต่ดูเหมือนจะหายไป ฉันได้รับรางวัลเพื่อเพิ่มโอกาสในการได้รับคำตอบ
จดจำ

คำตอบ:


27

แก้ไข: นี่คือ SymPy

$ isympy
In [1]: A = MatrixSymbol('A', n, n)
In [2]: B = MatrixSymbol('B', n, n)
In [3]: context = Q.symmetric(A) & Q.positive_definite(A) & Q.orthogonal(B)
In [4]: ask(Q.symmetric(B*A*B.T) & Q.positive_definite(B*A*B.T), context)
Out[4]: True

คำตอบเก่ากว่าที่แสดงงานอื่น ๆ

ดังนั้นหลังจากที่ตรวจสอบเรื่องนี้สักพักนี่คือสิ่งที่ฉันได้พบ

คำตอบปัจจุบันสำหรับคำถามเฉพาะของฉันคือ "ไม่ไม่มีระบบปัจจุบันที่สามารถตอบคำถามนี้ได้" อย่างไรก็ตามมีบางสิ่งที่ดูเหมือนว่าจะเข้ามาใกล้

ครั้งแรกที่แมตต์ Knepley และ Lagerbaer ทั้งชี้ไปที่การทำงานของดีเอโก้ Fabregat และเปาโล Bientinesi งานนี้แสดงให้เห็นถึงความสำคัญที่อาจเกิดขึ้นและความเป็นไปได้ของปัญหานี้ มันเป็นการอ่านที่ดี น่าเสียดายที่ฉันไม่แน่ใจว่าระบบของเขาทำงานอย่างไรหรือมีความสามารถ (ถ้าใครรู้เรื่องข้อมูลสาธารณะอื่น ๆ ในหัวข้อนี้จะแจ้งให้ฉันทราบ)

ประการที่สองมีห้องสมุดพีชคณิตเทนเซอร์ที่เขียนขึ้นสำหรับ Mathematica ที่เรียกว่าxActซึ่งจัดการกับสมมาตรและสัญลักษณ์ดังกล่าว มันทำบางสิ่งได้ดีมาก แต่ไม่ได้ปรับให้เหมาะกับกรณีพิเศษของพีชคณิตเชิงเส้น

ประการที่สามกฎเหล่านี้ถูกเขียนอย่างเป็นทางการในห้องสมุดสองแห่งสำหรับCoqซึ่งเป็นผู้ช่วยพิสูจน์ทฤษฎีบทอัตโนมัติ (Google ค้นหาพีชคณิตเชิงเส้น / เมทริกซ์ coq เพื่อค้นหาบางประการ) นี่เป็นระบบที่ทรงพลังซึ่งน่าเสียดายที่มนุษย์ต้องมีปฏิสัมพันธ์

หลังจากพูดคุยกับบางคนที่รู้จักทฤษฎีบทพวกเขาแนะนำให้มองการเขียนโปรแกรมแบบลอจิก (เช่น Prolog ซึ่ง Lagerbaer แนะนำด้วย) สำหรับเรื่องแบบนี้ สำหรับความรู้ของฉันนี้ยังไม่ได้ทำ - ฉันอาจเล่นกับมันในอนาคต

ปรับปรุง: ฉันได้ดำเนินการนี้โดยใช้ระบบม้อด รหัสของฉันถูกโฮสต์บน Github


1
เมื่อฉันพบว่าไม่มีระบบที่ดีสัญชาตญาณแรกของฉันคือการเขียนโปรแกรมอารัมภบท :)
Mem

1
ฉันเพิ่มลิงค์ที่ด้านล่างของโปรเจ็กต์ด้านข้างของฉันที่จัดการกับปัญหานี้
MRocklin

4

การคำนวณเมทริกซ์เชิงสัญลักษณ์บางอย่าง (เช่นการเสร็จสิ้นการบล็อกเมทริกซ์) สามารถทำได้ด้วยแพ็คเกจ NCAlgebra http://www.math.ucsd.edu/~ncalg/ (ซึ่งทำงานภายใต้ mathematica)

Bergman http://servus.math.su.se/bergman/เป็นแพ็คเกจใน Lisp ที่มีความสามารถคล้ายกัน

เอกสารที่เกี่ยวข้องบางอย่าง:
http://math.ucsd.edu/~helton/osiris/COMPALG2000/ohRevisIJC.pdf
http://math.ucsd.edu/~thesis/thesis/dkronewitter/dkronewitter/dkronewitter/pkronewitter.pdf
http: // www tandfonline.com/doi/abs/10.1080/00207170600882346


3

ฉันคิดว่าCASระบบส่วนใหญ่สามารถแสดงสิ่งนี้สำหรับ2x2และ3x3เมทริกซ์เนื่องจากโครงสร้างสัญลักษณ์ orthonormalเช่นเมทริกซ์การหมุน ในท้ายที่สุดคุณจะต้องแยกย่อยผลลัพธ์เพื่อหาว่าเป็นบวกแน่นอนหรือไม่ การแสดงความสมมาตรนั้นง่ายกว่าB

จากนั้นคำถามก็จะกลายเป็นNเมทริกซ์เชิงมิติ บางทีคุณอาจคิดแบบอุปนัยซึ่งN-1 x N-1ถือว่าเป็นจริงแล้วสร้างเมทริกซ์บล็อกใหม่ที่มีขนาดโดยรวมN x Nเพื่อพิสูจน์ว่าเป็นบวกแน่นอนและสมมาตร

ดังนั้นคำถามสุดท้ายที่ซอฟท์แวร์นั้นเหมาะกับงาน (ถ้ามี) ประสบการณ์ของฉันก็อยู่กับMATLAB/MuPadและDerive(ยังใช้งานได้) และทั้งคู่ก็ไม่ได้จัดการเวกเตอร์และเมทริกซ์ได้ดีมาก MATLABแยกทุกอย่างลงในส่วนประกอบและDeriveสามารถประกาศได้Non-scalarsแต่ไม่ได้ใช้กฎการทำให้เข้าใจง่ายใด ๆ กับพวกเขา

ฉันหวังว่าการโพสต์นี้จะให้ข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับ "หลุม" ประเภทนี้และวิธีเติมให้เต็ม สำหรับฉันฉันต้องการซอฟต์แวร์ที่สามารถช่วยฉันลดความรู้สึกของการแสดงออกหลายจุดและครอสโปรดัคต์ของเวกเตอร์พร้อมกับเมทริกซ์การหมุนใช้ตัวตนที่รู้จักกันดีเช่น:a×(b×c)=(ab)c(ac)b


2

เป็นเวลานานแล้วที่ฉันใช้แพคเกจเหล่านี้ครั้งล่าสุด แต่ฉันคิดว่าคุณสามารถทำได้ในภาษาเช่น Mathematica ผ่านการใช้การยืนยัน บางอย่างเช่น Assert [A, Symmetric] บอก Mathematica ว่า A เป็นเมทริกซ์สมมาตรและอื่น ๆ ฉันไม่สามารถเข้าถึงทั้งสองอย่างได้ในขณะนี้ดังนั้นนี่คือสิ่งที่จะต้องตรวจสอบ


1
ฉันคิดว่าคุณหมายถึงคำสั่ง Mathematica แทนAssuming จะใช้สมมติฐานเหล่านี้เมื่อทำให้การรวมหรือการแสดงออกง่ายขึ้น แต่เอกสารไม่ชัดเจนว่าคุณสมบัติของเมทริกซ์นั้นมีการแพร่กระจายหรือไม่ ฉันเดาว่าคุณสมบัติดังกล่าวไม่ได้ผ่านการคำนวณเชิงสัญลักษณ์ AssertAssuming
Geoff Oxberry

นั่นอาจเป็นจริง เช่นเดียวกับที่ฉันพูดนี่คือมหายุคที่ผ่านมา (ย้อนกลับไปในสมัยบัณฑิตวิทยาลัยของฉัน) แต่ฉันจำได้ว่าสามารถทำสิ่งนี้ครั้งเดียว (บางทีอาจเป็นกับ MuPad ซึ่งถูกนำไปใช้ใน Scientific WorkPlace) แต่ฉันไม่สามารถเข้าถึง SWP เพื่อตรวจสอบได้อีกต่อไป (เฉพาะ Windows และฉันไม่มีโปรแกรมจำลองบนกล่องของฉัน)
aeismail

MuPAD เป็นส่วนหนึ่งของ Matlab แล้ว ตามเอกสารอธิบายการใช้สมมติฐานมีความคล้ายคลึงกับของ Mathematica
Geoff Oxberry

MuPAD สามารถจัดการกับเมทริกซ์ขนาดคงที่เท่านั้นและไม่ได้ใช้สมมติฐานโดยพลการเช่นความชัดเจนเชิงบวก นอกจากนี้มันไม่สามารถตอบคำถามของความชัดเจนเชิงบวกของ BAB 'ถามเดิม
Memming

@Memming: ยุติธรรมเพียงพอ ดังที่ฉันได้กล่าวว่าหน่วยความจำของ MuPAD ของฉันล้าสมัยอย่างมากเนื่องจากฉันใช้โปรแกรมล่าสุดเป็นประจำประมาณปี 2549 (เมื่อฉันเปลี่ยนจากพีซีเป็น Mac)
aeismail

2

Maple 15 ไม่สามารถทำได้ มันไม่มีคุณสมบัติ "Orthogonal" สำหรับเมทริกซ์ (แม้ว่ามันจะมี Symmetric และ PositiveDefinite)


1
อัปเดตเป็น Maple 16 -> ไม่มีคุณสมบัติ "Orthogonal"
GertVdE

1

ใน Mathematica อย่างน้อยคุณสามารถตรวจสอบคุณสมบัติเหล่านี้สำหรับการฝึกอบรมเฉพาะ ตัวอย่างเช่นเมทริกซ์Aตามที่คุณอธิบาย:

In[1]:= A = {{2.0,-1.0,0.0},{-1.0,2.0,-1.0},{0.0,-1.0,2.0}};
        {SymmetricMatrixQ[A],PositiveDefiniteMatrixQ[A]}
Out[2]= {True,True}

สำหรับเมทริกซ์B:

In[3]:= B = {{0, -0.80, -0.60}, {0.80, -0.36, 0.48}, {0.60, 0.48, -0.64}};
        Transpose[B] == Inverse[B]
Out[4]= True

แล้ว:

In[5]:= c = B.A.Transpose[B];
        {SymmetricMatrixQ[c],PositiveDefiniteMatrixQ[c]}
Out[6]= {True,True}

เมทริกซ์เชิงคณิตศาสตร์และเอกสารพีชคณิตเชิงเส้น


7
มันเป็นความเข้าใจของฉันว่าเพรดิเคตข้างต้นกำลังตรวจสอบคุณสมบัติของเมทริกซ์ที่กำหนดแทนที่จะเป็นสัญลักษณ์การเผยแพร่คุณสมบัติเหล่านี้เมื่อแมตต์ถามหาข้างต้น
Matt Knepley

อ่าใช่ ขอโทษสำหรับเรื่องนั้น. ฉันเข้าใจผิด.
ลินช์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.