การแก้ระบบเชิงเส้นหนาแน่นขนาดใหญ่?


11

มีความหวังในการแก้ระบบเชิงเส้นต่อไปนี้อย่างมีประสิทธิภาพด้วยวิธีการวนซ้ำหรือไม่?

ARn×n,xRn,Rnกับ n>106

Ax=

กับ

A=(Δ-K)โดยที่Δเป็นเมทริกซ์เบาบางมากที่มีเส้นทแยงมุมสองสามอันเกิดจาก discretization ของ Laplace Operator บนเส้นทแยงมุมหลักมี-6และมีเส้นทแยงมุมอื่นอีก6เส้นที่มี1เส้น

Kเป็นเมทริกซ์เต็มรูปแบบRn×nที่ประกอบไปด้วย

การแก้ทำงานได้ดีกับวิธีการวนซ้ำเช่น Gauss-Seidel เพราะมันเป็นเมทริกซ์ที่โดดเด่นแบบทแยงมุม ฉันสงสัยว่าปัญหาA = ( Δ - K )นั้นเป็นไปไม่ได้ที่จะแก้ปัญหาอย่างมีประสิทธิภาพสำหรับnจำนวนมากแต่มีกลอุบายใดที่จะแก้ไขได้โดยใช้โครงสร้างของK ?A=ΔA=(Δ-K)nK

แก้ไข: จะทำอะไรเช่น

// แก้ปัญหาสำหรับ x k + 1ด้วย Gauss-SeidelΔxk+1=+Kxkxk+1

ลู่เข้าหาทางออกที่ถูกต้อง? ฉันอ่านว่าวิธีการแยกดังกล่าวมาบรรจบกันถ้าโดยที่ρเป็นบรรทัดฐานของสเปกตรัม ฉันคำนวณค่าลักษณะเฉพาะด้วยตนเองของΔ - 1 Kสำหรับค่าขนาดเล็กที่แตกต่างกันของnและพวกมันทั้งหมดเป็นศูนย์ยกเว้นค่าที่มีค่าลบสูงมาก (ประมาณ ~ 500 สำหรับn = 256 ) ดังนั้นฉันเดาว่าจะไม่ทำงานρ(Δ-1K)<1ρΔ-1Knn=256

แก้ไข: ข้อมูลเพิ่มเติมเกี่ยวกับΔ :

เป็นสมมาตรและเป็นลบที่ชัดเจนและโดดเด่นในแนวทแยงมุมΔRn×n

มันถูกสร้างขึ้นด้วยวิธีดังต่อไปนี้ใน matlab

n=W*H*D;

e=ones(W*H*D,1);

d=[e,e,e,-6*e,e,e,e];

delta=spdiags(d, [-W*H, -W, -1, 0, 1, W, W*H], n, n);


คุณสามารถให้ข้อมูลเพิ่มเติมเกี่ยวกับได้ไหม สมมาตร? แน่นอนกึ่งแน่นอนไม่ชัดเจน? Δ
Stefano M

คือสมมาตรและลบแน่นอน Δ
โน้น

ไม่Woodbury เมทริกซ์เอกลักษณ์ช่วยให้คุณตั้งแต่ K ต่ำอันดับ?
Aron Ahmadia

คำตอบ:


14

มีสองตัวเลือกซึ่งถ้าคุณใช้โครงสร้างข้อมูลที่เหมาะสมสามารถแก้ปัญหาด้วยบนแล็ปท็อปและ n 10 12ในซูเปอร์คอมพิวเตอร์ โปรดทราบว่าเพื่อประสิทธิภาพที่คุณควรใช้ multigrid ที่จะแก้ปัญหาด้วยΔ ค่าใช้จ่ายในกรณีที่ทั้งสองจะเป็นปัจจัยที่มีขนาดเล็กมีราคาแพงกว่าเพียงแค่การแก้กับΔ ทั้งสองวิธีมีความเท่าเทียมกันผ่านทางอาร์กิวเมนต์เสริม Schur แต่ฉันอธิบายแยกต่างหากเพราะการใช้งานนั้นแตกต่างกันn>106n1012ΔΔ

  • ใช้ระบบเป้น

M=(ΔอีอีT1)

โดยที่คือเวกเตอร์คอลัมน์ที่ประกอบด้วยค่าทั้งหมดและแก้ไขระบบอี

M(xY)=(0)

ใช้ตัวแก้ซ้ำหรือโดยตรง

  • ใช้วิธี Krylov และใช้เมทริกซ์เป็นΔ - e e T (เช่นเมทริกซ์กระจัดกระจายบวกการแก้ไขอันดับ 1 ใช้ preconditioner ที่มีอยู่ของคุณP -AΔ-อีอีTหรือโดยเฉพาะอย่างยิ่งถ้าคุณต้องการที่จะใช้โดยตรงแก้ด้วยΔอัปเดตด้วยสูตรเชอร์แมนมอร์ริสันP-1Δ-1Δ

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