ฉันจะประมาณจำนวนเงื่อนไขของเมทริกซ์ sparse ขนาดใหญ่โดยใช้ PETSc ได้อย่างไร


คำตอบ:


11

สำหรับเมทริกซ์ขนาดเล็กสามารถคำนวณจำนวนเงื่อนไขได้อย่างน่าเชื่อถือโดยใช้การสลายตัวของค่าเอกฐาน ทำกับเมทริกซ์และทำงานด้วยKSPSolve()-pc_type svd -pc_svd_monitor

สำหรับเมทริกซ์ที่ใหญ่กว่าคุณสามารถประมาณหมายเลขเงื่อนไขโดยใช้วิธี Krylov ตัวอย่างเช่นการคำนวณซ้ำของ Arnoldi ดำเนินการโดย GMRES คำนวณการสลายตัวของ Hessenberg เพิ่มขึ้น ค่าเอกฐานสุดขั้วและค่าลักษณะเฉพาะของเมทริกซ์ Hessenberg นั้นเป็นการประมาณที่ดีสำหรับค่าเมทริกซ์ดั้งเดิม หากต้องการให้ค่าประมาณค่าลักษณะเฉพาะของ PETSc ทำงานด้วย

-ksp_monitor_singular_value -ksp_type gmres -ksp_gmres_restart 1000 -pc_type none

ตัวเลือกเหล่านี้บอกว่าจะประมาณค่าเอกฐานสุดขั้วในการทำซ้ำ Krylov แต่ละครั้ง GMRES ใช้เพื่อคำนวณพื้นที่ Krylov (คุณสามารถใช้ CG) ด้วยการรีสตาร์ทครั้งใหญ่ เมื่อรีสตาร์ท GMRES จะทิ้งพื้นที่ Krylov ปัจจุบันดังนั้นความคืบหน้าทั้งหมดเกี่ยวกับการประเมินค่าเอกพจน์จะหายไปในการรีสตาร์ท ตัวเลือกสุดท้าย-pc_type noneบอกว่าจะทำซ้ำนี้ในเมทริกซ์ที่ไม่มีเงื่อนไข ตามค่าเริ่มต้นจะใช้ตัวดำเนินการที่กำหนดเงื่อนไขไว้ล่วงหน้า (หรือ ) ดังนั้นคุณจะได้รับการประมาณการสำหรับตัวดำเนินการที่กำหนดเงื่อนไขไว้ล่วงหน้าP-1AAP-1

โดยทั่วไปจะมีความถูกต้องสำหรับค่าเอกพจน์ที่ใหญ่ที่สุด แต่อาจประเมินค่าที่มีค่าเอกพจน์น้อยที่สุดเว้นแต่ว่าวิธีการได้แปรสภาพ ถ้าคุณมีแก้สำหรับเมทริกซ์ (เช่นใช้KSPSolve()) แล้วคุณสามารถประมาณมูลค่าเอกพจน์ที่เล็กที่สุดของโดยใช้ขั้นตอนเดียวกันนำไปใช้กับ1}AA-1

ใช้SLEPcหากคุณต้องการประมาณการที่แม่นยำยิ่งขึ้นของค่าเอกพจน์ที่น้อยที่สุด (และสำหรับปัญหาค่าลักษณะเฉพาะและค่าเอกพจน์อื่น ๆ ทั้งหมด)

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