คำถามติดแท็ก linear-algebra

คำถามเกี่ยวกับอัลกอริทึม / การคำนวณเชิงพีชคณิตเชิงเส้นรวมถึงการแก้ปัญหาของระบบเชิงเส้นปัญหากำลังสองน้อยที่สุด eigenproblems และเรื่องอื่น ๆ

4
จะจัดลำดับตัวแปรใหม่เพื่อสร้างเมทริกซ์แบนด์แบนด์วิดท์ขั้นต่ำได้อย่างไร
ฉันกำลังพยายามแก้สมการปัวซอง 2D ด้วยความแตกต่างอัน จำกัด ในกระบวนการฉันได้รับเมทริกซ์กระจัดกระจายที่มีเพียงตัวแปรในแต่ละสมการ ตัวอย่างเช่นถ้าตัวแปรเป็นUดังนั้นการแยกย่อยจะทำให้:555UยูU Ui−1,j+Ui+1,j−4Ui,j+Ui,j−1+Ui,j+1=fi,jUi−1,j+Ui+1,j−4Ui,j+Ui,j−1+Ui,j+1=fi,jU_{i-1,j} + U_{i+1,j} -4U_{i,j} + U_{i,j-1} + U_{i,j+1} = f_{i,j} ฉันรู้ว่าฉันสามารถแก้ปัญหาระบบนี้ได้โดยวิธีการวนซ้ำ แต่ความคิดนั้นเกิดขึ้นกับฉันว่าถ้าฉันสั่งตัวแปรอย่างเหมาะสมฉันอาจสามารถได้รับเมทริกซ์แถบสีซึ่งสามารถแก้ไขได้ด้วยวิธีโดยตรง (เช่นการกำจัดแบบเกาส์ w / o pivoting) เป็นไปได้ไหม มีกลยุทธ์ใดบ้างสำหรับการทำเช่นนี้กับคนอื่น ๆ ระบบที่กระจายน้อยลงหรือไม่?



6
สเปกตรัมโดยประมาณของเมทริกซ์ขนาดใหญ่
ฉันต้องการคำนวณสเปกตรัม ( ค่าลักษณะเฉพาะทั้งหมด ) ของเมทริกซ์กระจัดกระจายขนาดใหญ่ (หลายแสนแถว) นี่มันยาก. ฉันยินดีที่จะชำระสำหรับการประมาณ มีวิธีการประมาณการทำเช่นนี้? ในขณะที่ฉันหวังว่าจะได้คำตอบทั่วไปสำหรับคำถามนี้ฉันก็จะพึงพอใจกับคำตอบในกรณีเฉพาะดังต่อไปนี้ เมทริกซ์ของฉันคือLaplacian ปกติของกราฟขนาดใหญ่ ค่าลักษณะเฉพาะจะอยู่ระหว่าง 0 ถึง 2 โดยมีกลุ่มใหญ่เป็นกลุ่มประมาณ 1

2
PETSc สำหรับ Dense Matrices มีประโยชน์อย่างไร
ทุกที่ที่ฉันเห็น PETSc tutorial / เอกสาร ฯลฯ บอกว่ามันมีประโยชน์สำหรับพีชคณิตเชิงเส้นและมักจะระบุว่าระบบจะได้ประโยชน์ สิ่งที่เกี่ยวกับเมทริกซ์หนาแน่น? ผมกังวลเกี่ยวกับการแก้x = Bสำหรับหนาแน่นA x = bAx=ขAx=bAAA ฉันเขียนโค้ดของตัวเองสำหรับ CG และ QMR ใน Fortran สร้างพื้นฐานคือการฉีกออกจากกันรหัสเทียมและเพิ่มการปฏิบัติหน่ายเป็นไปได้ ( ddot, dnrmและdgemv) ที่มีการปรับตัวเองเล็ก ๆ น้อย ๆ สิ่งนี้จะเปรียบเทียบกับ PETSc ได้อย่างไร ฉันรู้ว่าคำตอบที่ดีที่สุดสำหรับฉันที่จะลองด้วยตัวเอง แต่ด้วยเหตุผลของเวลาและอื่น ๆ นั่นเป็นไปไม่ได้ ความช่วยเหลือใด ๆ ที่ชื่นชมมาก

3
ทำไมตัวแก้แบบขนานของฉันจึงช้ากว่าตัวแก้ไขแบบลำดับของฉัน
ฉันกำลังเล่นกับPETScและสังเกตว่าเมื่อฉันรันโปรแกรมด้วยกระบวนการมากกว่าหนึ่งผ่านMPIดูเหมือนว่าจะทำงานช้าลง ! ฉันจะตรวจสอบเพื่อดูว่าเกิดอะไรขึ้น?

2
เหตุใดนักวิทยาศาสตร์การคำนวณจึงจำเป็นต้องใช้ std :: complex เวอร์ชันของตนเอง?
ไลบรารี C ++ ที่เป็นที่รู้จักมากขึ้นในด้านวิทยาศาสตร์การคำนวณเช่นEigen , Trilinosและdeal.IIใช้วัตถุไลบรารีส่วนหัวเทมเพลต C ++ มาตรฐานstd::complex<>เพื่อแทนจำนวนจุดลอยตัวที่ซับซ้อน ในคำตอบของ Jack Poulson สำหรับคำถามเกี่ยวกับ Constructor เริ่มต้นเขาชี้ให้เห็นว่าเขามีการนำไปใช้std::complexในElementalของตนเองด้วยเหตุผลหลายประการ อะไรคือเหตุผลเหล่านั้น อะไรคือข้อดีและข้อเสียของวิธีนี้?

4
พิจารณาอย่างรวดเร็วว่าเมทริกซ์หนาแน่นหรือไม่นั้นอยู่ในระดับต่ำ
ในโครงการซอฟต์แวร์ที่ฉันกำลังดำเนินการการคำนวณบางอย่างง่ายขึ้นอย่างมากสำหรับเมทริกซ์ระดับต่ำที่หนาแน่น อินสแตนซ์ปัญหาบางอย่างเกี่ยวข้องกับเมทริกซ์อันดับต่ำหนาแน่น แต่พวกเขามอบให้ฉันเต็มแทนที่จะเป็นปัจจัยดังนั้นฉันจะต้องตรวจสอบอันดับและปัจจัยเมทริกซ์ถ้าฉันต้องการใช้ประโยชน์จากโครงสร้างระดับต่ำ . โดยทั่วไปแล้วเมทริกซ์ในคำถามจะเต็มหรือเกือบจะหนาแน่นเกือบสมบูรณ์โดยมี n ตั้งแต่หนึ่งร้อยถึงไม่กี่พัน หากเมทริกซ์มีอันดับต่ำ (พูดน้อยกว่า 5 ถึง 10) การคำนวณ SVD และใช้รูปแบบการแยกตัวประกอบอันดับต่ำนั้นคุ้มค่ากับความพยายาม อย่างไรก็ตามหากเมทริกซ์ไม่ได้อยู่ในอันดับต่ำความพยายามก็จะสูญเปล่า ดังนั้นฉันต้องการค้นหาวิธีที่รวดเร็วและเชื่อถือได้อย่างสมเหตุสมผลในการพิจารณาว่าอันดับอยู่ในระดับต่ำหรือไม่ก่อนที่จะลงทุนในการแยกตัวประกอบ SVD แบบเต็ม หาก ณ จุดใด ๆ เห็นได้ชัดว่าอันดับอยู่เหนือทางลัดกระบวนการสามารถหยุดได้ทันที หากโพรซีเดอร์แจ้งว่าเมทริกซ์อยู่ในระดับต่ำเมื่อไม่ผิดนี่ไม่ใช่ปัญหาใหญ่เพราะฉันยังคงทำ SVD แบบเต็มเพื่อยืนยันอันดับต่ำและค้นหาการแยกตัวประกอบต่ำ ตัวเลือกที่ฉันถือว่ามีอันดับที่เปิดเผย LU หรือ QR ตัวประกอบตามด้วย SVD แบบเต็มเป็นเช็ค มีวิธีอื่นที่ฉันควรพิจารณาอีกหรือไม่

2
คำนวณค่าลักษณะเฉพาะทั้งหมดของเมทริกซ์ adjacency ที่ใหญ่และเบาบางมาก
ฉันมีสองกราฟที่มีเกือบ n ~ 100,000 โหนดแต่ละ ในกราฟทั้งสองแต่ละโหนดเชื่อมต่อกับ 3 โหนดอื่น ๆ ดังนั้นเมทริกซ์ adjacency จึงสมมาตรและเบาบางมาก ส่วนที่ยากคือฉันต้องการทั้งหมดค่าลักษณะเฉพาะของเมทริกซ์ adjacency แต่ไม่ใช่ค่าลักษณะเฉพาะ เพื่อความถูกต้องนี่จะเป็นครั้งหนึ่งในชีวิตของฉัน (เท่าที่ฉันสามารถเห็นได้อย่างน้อย!) ดังนั้นฉันต้องการได้รับค่าลักษณะเฉพาะทั้งหมดและไม่รังเกียจที่จะรอพวกเขาสักสองสามวัน ฉันลองscipyล้อมรอบARPACKแต่มันใช้เวลานานเกินไป ฉันพบห้องสมุดหลายแห่ง แต่พวกเขาก็ทำงานได้ดีที่สุดในการหาค่าย่อยที่มีค่ามากที่สุด / เล็กที่สุด มีห้องสมุดใดบ้างที่ใช้ได้กับเมทริกซ์กระจัดกระจายแบบสมมาตรที่มีการนำไปใช้แบบขนานเพื่อให้ได้ค่าลักษณะเฉพาะทั้งหมดหรือไม่

1
Multigrid ของ Krylov เร่งความเร็วอย่างไรโดยใช้ MG เป็นตัวกระตุ้นล่วงหน้า?
Multigrid (MG) อาจใช้เพื่อแก้ระบบเชิงเส้นโดยสร้างการเดาเริ่มต้นx 0และทำซ้ำสิ่งต่อไปนี้สำหรับi = 0 , 1 ..จนกระทั่งการบรรจบกัน:A x = bAx=bAx=bx0x0x_0i = 0 , 1 ..i=0,1..i=0,1.. คำนวณส่วนที่เหลือRผม= b - A xผมri=b−Axir_i = b-Ax_i สมัครรอบ multigrid ที่จะได้รับประมาณที่อีฉัน = RฉันΔ xผม≈ eผมΔxi≈ei\Delta x_i \approx e_iอีผม= rผมAei=riAe_i = r_i อัปเดตxฉัน+ 1← xผม+ Δ xผมxi+1←xi+Δxix_{i+1} \gets x_i + \Delta x_i วงจร multigrid เป็นลำดับของเรียบแก้ไขข้อ …

2
“ เทคนิคปัจจัยร่วม” ในการแปลงเมทริกซ์มีความสำคัญในทางปฏิบัติหรือไม่?
ชื่อเป็นคำถาม เทคนิคนี้เกี่ยวข้องกับการใช้ "เมทริกซ์ของแฟคเตอร์" หรือ "adjugate เมทริกซ์" และให้สูตรที่ชัดเจนสำหรับส่วนประกอบของค่าผกผันของเมทริกซ์จตุรัส มันไม่ใช่เรื่องง่ายที่จะทำด้วยมือสำหรับเมทริกซ์ที่มีขนาดใหญ่กว่าการพูดที่3×33×33\times 3 3 สำหรับn×nn×nn\times nเมทริกซ์จะต้องมีการคำนวณปัจจัยของเมทริกซ์ของตัวเองและการคำนวณn2n2n^2ปัจจัยของ(n−1)×(n−1)(n−1)×(n−1)(n-1)\times(n-1)การฝึกอบรม ดังนั้นฉันเดาว่ามันไม่ได้มีประโยชน์สำหรับแอปพลิเคชัน แต่ฉันต้องการการยืนยัน ฉันไม่ได้ถามเกี่ยวกับความสำคัญทางทฤษฎีของเทคนิคในการพิสูจน์ทฤษฎีบทเกี่ยวกับเมทริกซ์

1
วิธีเฉพาะสำหรับปัญหาค่าลักษณะเฉพาะทั่วไปที่ซับซ้อนแบบสมมาตร
ฉันต้องแก้ปัญหาค่าลักษณะเฉพาะทั่วไปโดยที่AและBมีทั้งสามด้าน, Bเป็นสมมาตรบวกแน่นอนและจริง แต่Aเป็นสมมาตรเชิงซ้อนเท่านั้น (ไม่ใช่ชัดเจนหรือ Hermitian) นอกจากนี้ฉันต้องการ eigendecomposition เต็ม ขณะนี้ฉันเพิ่งเรียกอีเจนซอลเวอร์ทั่วไปของLapack แต่ฉันสงสัยว่ามีวิธีที่ดีกว่าสำหรับปัญหาที่มีโครงสร้างสูงนี้โดยเฉพาะหรือไม่ โดยเฉพาะอย่างยิ่งการมีโค้ดที่ใช้ได้อย่างอิสระ (C ++) จะดีที่สุดAx=λBxAx=λBxAx = \lambda BxAAABBBBBBAAAZGGEV

3
SVD สำหรับการหาค่าลักษณะเฉพาะที่ใหญ่ที่สุดของเมทริกซ์ 50x50 - ฉันต้องเสียเวลาอย่างมากหรือไม่?
ฉันมีโปรแกรมที่คำนวณค่าลักษณะเฉพาะที่ใหญ่ที่สุดของเมทริกซ์ 50x50 ที่สมมาตรจริงหลายตัวด้วยการสลายตัวแบบเอกฐานกับพวกมันทั้งหมด SVD เป็นคอขวดในโปรแกรม มีอัลกอริทึมที่เร็วกว่ามากในการค้นหาค่าลักษณะเฉพาะที่ใหญ่ที่สุดหรือการเพิ่มประสิทธิภาพส่วนนี้จะไม่ให้ผลตอบแทนจากการลงทุนมากหรือไม่?

3
ทำความเข้าใจว่า Numpy ทำ SVD อย่างไร
ฉันใช้วิธีที่ต่างกันในการคำนวณทั้งอันดับของเมทริกซ์และคำตอบของระบบเมทริกซ์ของสมการ ฉันเจอฟังก์ชัน linalg.svd เมื่อเปรียบเทียบกับความพยายามของฉันในการแก้ไขระบบด้วยการกำจัดแบบเกาส์เซียนดูเหมือนว่าจะเร็วขึ้นและแม่นยำยิ่งขึ้น ฉันพยายามเข้าใจว่ามันเป็นไปได้อย่างไร เท่าที่ฉันรู้ฟังก์ชั่น linalg.svd ใช้อัลกอริทึม QR เพื่อคำนวณค่าลักษณะเฉพาะของเมทริกซ์ของฉัน ฉันรู้ว่ามันใช้งานได้อย่างไรในทางคณิตศาสตร์ แต่ฉันไม่รู้ว่า Numpy สามารถจัดการได้อย่างรวดเร็วและไม่สูญเสียความแม่นยำมากนัก ดังนั้นคำถามของฉัน: ฟังก์ชั่น numpy.svd ทำงานอย่างไรและโดยเฉพาะเจาะจงมากขึ้นมันทำงานได้อย่างรวดเร็วและแม่นยำอย่างไร (เทียบกับการกำจัดแบบเกาส์เซียน)

2
การกำหนดเงื่อนไข krylov ด้วยวิธี krylov อื่น
ในวิธีเช่น gmres หรือ bicgstab มันน่าดึงดูดใจที่จะใช้อีกวิธี krylov เป็น preconditioner หลังจากทั้งหมดพวกเขาจะใช้งานง่ายในวิธีที่ปราศจากเมทริกซ์และในสภาพแวดล้อมแบบคู่ขนาน ตัวอย่างเช่นหนึ่ง coul ใช้การวนซ้ำสองครั้ง (สมมติว่า ~ 5) ของ bigcstab ที่ไม่มีเงื่อนไขในฐานะ precontioner สำหรับ gmres หรือการรวมกันของวิธี krylov อื่น ๆ ฉันไม่พบการอ้างอิงถึงวิธีการดังกล่าวในครอกดังนั้นฉันคาดหวังว่านี่เป็นเพราะมันไม่ได้มีประสิทธิภาพมาก ฉันต้องการที่จะเข้าใจว่าทำไมมันไม่มีประสิทธิภาพ มีกรณีที่เป็นตัวเลือกที่ดีหรือไม่? ในการวิจัยของฉันฉันสนใจเกี่ยวกับวิธีการแก้ปัญหาของรูปไข่ 3 มิติในสภาพแวดล้อมแบบขนาน (mpi)

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