การแก้ระบบเชิงเส้นด้วยเมทริกซ์อาร์กิวเมนต์


10

เราทุกคนคุ้นเคยกับวิธีการคำนวณมากมายเพื่อแก้ปัญหาระบบเชิงเส้นมาตรฐาน

Ax=b.
อย่างไรก็ตามฉันอยากรู้ว่ามีวิธีการคำนวณ "มาตรฐาน" ใด ๆ สำหรับการแก้ปัญหาระบบเชิงเส้นทั่วไป (จำกัด ขนาด) ของแบบฟอร์ม

LA=B,
ที่พูดเป็นเมทริกซ์เป็นเมทริกซ์และเป็นผู้ประกอบการเชิงเส้นการการฝึกอบรมเพื่อเมทริกซ์ซึ่งไม่ได้เกี่ยวข้องกับการ vectorizing เมทริกซ์คือการแปลงทุกอย่างให้เป็นรูปแบบมาตรฐาน m 1 × n 1 B m 2 × n 2 L m 1 × n 1 m 2 × n 2Am1×n1Bm2×n2Lm1×n1m2×n2Ax=b

เหตุผลที่ฉันถามคือฉันต้องแก้สมการต่อไปนี้สำหรับ :u

(R* * * *R+λผม)ยู=
โดยที่คือการแปลงเรดอน 2d, adjoint ของมันและทั้งและเป็นอาร์เรย์ 2d (ภาพ) มันเป็นไปได้ที่จะทำให้เวกเตอร์สมการนี้เป็นจริง แต่มันเป็นความเจ็บปวดโดยเฉพาะถ้าเราไปที่ 3DR u fRR* * * *ยู

โดยทั่วไปแล้วอาร์เรย์อย่างไร ตัวอย่างเช่นการแก้ไขโดยที่และเป็นอาร์เรย์ 3 มิติ (ฉันจะต้องดำเนินการนี้ด้วยการแปลงเรดอนในบางจุดเช่นกัน)L A = B A BnDLA=BAB

ขอบคุณล่วงหน้าและโปรดส่งฉันออกไปที่ StackExchange อื่นหากคุณรู้สึกว่าต้องการ


1
คุณอาจสามารถสร้างเครื่องมือที่มีประสิทธิภาพหลายระดับก่อนหน้านี้แล้วใช้การไล่ระดับสีแบบคอนจูเกต ฉันมีปัญหาที่คล้ายกันซึ่งค่อนข้างมีประสิทธิภาพและขนานกันมาก หากคุณต้องการวิธีการโดยตรงให้พิจารณาลดรูปแบบ schur ในบทความนี้เกี่ยวกับสมการ Lyapunov: cs.cornell.edu/cv/ResearchPDF/Hessenberg.Schur.Method.pdf
Nick Alger

ยอดเยี่ยมขอบคุณสำหรับการอ้างอิง! ฉันเพิ่งได้ CG เพื่อทำงานอย่างมีประสิทธิภาพดังนั้นฉันจึงมีความสุข
icurays1

คำตอบ:


9

ใช่คุณได้รับมันถูกต้องและมันจะทำงานได้ดีเมื่อคุณอัพเกรดเป็น 3-D ส่วนที่ง่ายที่สุดจริง ๆ คือผลิตภัณฑ์ด้านใน - แค่ทำผลิตภัณฑ์ดอทมาตรฐานกับเวกเตอร์ไม่ได้ควบคุม เนื่องจากมีแนวโน้มว่าคุณจะมีข้อมูลที่จัดเก็บอย่างต่อเนื่องคุณจึงสามารถดำเนินการนี้ได้ทันที สิ่งนี้สามารถใช้งานได้กับปริภูมิเวกเตอร์ที่ซับซ้อน - เพียงแค่ถือว่าค่าที่ซับซ้อนเป็นคู่ของค่าจริง เพราะสำหรับการกำกับดูแลกิจการที่คุณต้องการจริงสินค้าภายในY , x เรื่อง ( Y H x )RnY,xเรื่อง(YHx)

สิ่งหนึ่งที่คุณต้องระวังเมื่อใช้ CG (หรือวิธีการวนซ้ำที่คล้ายกัน) กับตัวดำเนินการเชิงเส้นทั่วไปคือการนำadjointของตัวดำเนินการเชิงเส้นมาใช้อย่างถูกต้อง นั่นคือคนที่มักจะได้รับที่ถูกต้อง แต่ทำผิดพลาดการดำเนินZ = F * ( Y )Y=F(x)Z=F* * * *(Y)

ผมขอแนะนำให้ดำเนินการทดสอบอย่างง่ายที่ใช้ประโยชน์จากตัวตนต่อไปนี้: สำหรับการใด ๆ ที่สอดคล้องและy ที่ , Y , F ( x ) = F * ( Y ) , x ดังนั้นสิ่งที่คุณทำคือการสร้างค่าสุ่มของxและyเรียกใช้พวกเขาผ่านการดำเนินการไปข้างหน้าและ adjoint ตามลำดับและคำนวณทั้งสองผลิตภัณฑ์ด้านบน ตรวจสอบให้แน่ใจว่าตรงกับความแม่นยำที่สมเหตุสมผลและทำซ้ำสองสามครั้งxY

Y,F(x)=F* * * *(Y),x.
xY

แก้ไข: คุณจะทำอย่างไรถ้าผู้ดำเนินการเชิงเส้นของคุณควรจะสมมาตร? คุณต้องตรวจสอบความสมมาตรนั้นด้วย ดังนั้นการใช้การทดสอบเดียวกันเพียงแค่สังเกตว่า --- ใช้การดำเนินการเดียวกันกับxและy ที่ แน่นอนว่า OP มีทั้งโอเปอเรเตอร์และอสมมาตรเพื่อจัดการกับ ...F=F* * * *xY


ขอบคุณ @ChristianClason! ฉันรู้จากประสบการณ์ว่าข้อผิดพลาดที่น่าผิดหวังในการคำนวณ adjoint นั้นเป็นอย่างไร :) ในแพ็คเกจ TFOCS ของเราเราใช้linop_test.mกิจวัตรประจำวันด้วยเหตุนี้ แพ็คเกจนั้นยังสนับสนุนเมทริกซ์, อาร์เรย์และผลิตภัณฑ์คาร์ทีเซียนในปริภูมิเวกเตอร์
Michael Grant

3

เนื่องจากระบบของฉันมีความสมมาตรและเป็นบวกแน่นอน (เนื่องจากตัวดำเนินการเชิงเส้นของฉันเขียนเป็น ) การไล่ระดับสีแบบคอนจูเกตสามารถปรับเปลี่ยนเพื่อแก้สมการชนิดนี้ซ้ำได้ การปรับเปลี่ยนเพียงมาเมื่อคำนวณผลิตภัณฑ์ภายใน - เช่นการคำนวณสินค้าภายในทั่วไปในลักษณะเช่น CG R T k R kหรือพีทีkพี k ในเวอร์ชั่นที่แก้ไขเราใช้ผลิตภัณฑ์ด้านในของ Frobenius ซึ่งสามารถคำนวณได้โดยรวมรายการของ Hadamard (จุดตามจุด) เข้าด้วยกัน กล่าวคือR* * * *R+λผมRkTRkพีkTAพีk

A,B=Σผม,JAผมJBผมJ

ฉันสงสัยว่าสิ่งนี้จะผ่านไปได้ดีเมื่อฉันอัพเกรดเป็น 3D อาร์เรย์แม้ว่าฉันยังไม่เห็นผลิตภัณฑ์ด้านในของ Frobenius ที่กำหนดไว้ในอาร์เรย์ 3 มิติ (ฉันจะทำงานภายใต้สมมติฐานที่ว่า

ฉันจะยังคงสนใจวิธีการทั่วไปมากขึ้นถ้าใครรู้เรื่องใด ๆ !

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