วิธี multigrid เพื่อแก้ปัญหา PDE


15

ฉันต้องการคำอธิบายง่ายๆของ Multigrid Method หรือวรรณกรรมบางอย่างเกี่ยวกับเรื่องนี้

ฉันคุ้นเคยกับวิธีการวนซ้ำรวมถึง BiCGStab, CG, GS, Jacobi และการปรับเงื่อนไขล่วงหน้า แต่ฉันเป็นผู้เริ่มต้นด้วยวิธีการแบบหลายจุด

บางคนสามารถอธิบายรายละเอียดนี้หรืออย่างน้อยก็ให้รหัสเทียมหรือซอร์สโค้ดอย่างชัดเจนแม้จะมีวรรณกรรมที่ดีสำหรับผู้เริ่มต้น ขอบคุณ!

คำตอบ:


15

แนวคิดหลักที่อยู่เบื้องหลัง Multigrid คือการฉายภาพ ฉันลองคิดดูดังนี้

สมมติว่าฉันต้องการแก้ปัญหา PDE ด้วยความแม่นยำจำนวนมากดังนั้นฉันจึงทำการแยกโดเมน (สมมติว่าใช้วิธี จำกัด ผลต่าง) บนกริดที่มีจำนวนมากและจุดมากมาย ในที่สุดฉันตั้งค่าระบบสมการของฉันและฉันพร้อมที่จะแก้ปัญหา ฉันลองใช้ตัวแก้ซ้ำที่ชื่นชอบ (จาโคบี sea เกาส์การไล่ระดับสีคอนจูเกต ฯลฯ ) ฉันรอมากกว่าหนึ่งวันและรู้ว่าคอมพิวเตอร์ของฉันยังคงพยายามคำนวณคำตอบ !!!

สาเหตุที่วิธีการวนซ้ำเหล่านี้ไม่ทำงานอย่างรวดเร็วเป็นเพราะ (โดยทั่วไป) เมื่อคุณตั้งค่าระบบสมการขนาดใหญ่เช่นนี้เมทริกซ์เองมีค่าลักษณะเฉพาะมากถึง 1 เหตุใดเรื่องนี้จึงเป็นเช่นนั้น เนื่องจากอัตราการลู่เข้าของวิธีการวนซ้ำหลายครั้งนั้นสัมพันธ์กับค่าลักษณะเฉพาะที่ใหญ่ที่สุด (ดูลิงค์ของ Christian Clason ไปยัง Slides Multigrid Tutorial Slug ของ Brigg, ตอนที่ 1, หน้า 27) ดังนั้นยิ่งค่าลักษณะเฉพาะที่ใหญ่ที่สุดคือ 1 ยิ่งวิธีการวนซ้ำช้าลง (หมายเหตุ: สิ่งนี้กำลังทำให้สิ่งต่าง ๆ มีความซับซ้อน แต่ช่วยกระตุ้นความต้องการหลายระดับ)

เห็นได้ชัดว่ามันเร็วกว่าเสมอในการแก้ปัญหาหากมีสิ่งแปลกปลอมน้อยลง (เช่นบนกริดหยาบที่มีกริดพอยท์น้อยลง) แต่ที่สำคัญกว่านั้นวิธีแก้ปัญหา (หรือวิธีแก้ปัญหาโดยประมาณ) บนกริด coarser เป็นจุดเริ่มต้นที่ดีในการแก้ปัญหาบนกริดที่ดีกว่า นี่เป็นแนวคิดหลักที่อยู่เบื้องหลังเมธอด multigrid ส่วนใหญ่ (ถ้าไม่ใช่ทั้งหมด) ทำไมเป็นกรณีนี้ โดยสังหรณ์ใจมันสมเหตุสมผล แต่มีวิธีการทางคณิตศาสตร์อย่างเข้มงวดในการให้เหตุผลนี้

ลองดูที่โหมดฟูริเยร์ของข้อผิดพลาดในวิธีการวนซ้ำ (เพื่อประโยชน์ในการโต้แย้งสมมติว่า Jacobi หรือ Gauss seidel) นำไปใช้กับปัญหากริดเดิม เราจะเห็นว่าภายในการทำซ้ำสองสามครั้งแรกข้อผิดพลาดความถี่สูง (ความผันผวนสูง) ส่วนใหญ่จะถูกลบออก! นี่เป็นสิ่งที่ดี แต่มีข้อผิดพลาดความถี่ต่ำ (สั่นน้อยลง) ที่ยังคงอยู่และไม่หายไปอย่างรวดเร็ว ในความเป็นจริงมันเป็นข้อผิดพลาดความถี่ต่ำที่ป้องกันไม่ให้วิธีการวนซ้ำมาตรฐานมาบรรจบกันอย่างรวดเร็ว

เมื่อเราแก้ปัญหาบนตารางหยาบ (สมมติว่าโดยวิธีการที่กล่าวย้ำเช่น Jacobi หรือเกาส์-Seidel) เราเป็นหลักสามารถลบข้อผิดพลาดความถี่ต่ำมากขึ้นอย่างรวดเร็ว (เช่นในการทำซ้ำน้อยกว่า) ในตารางที่ดี ดังนั้นหากเราแก้ปัญหาของกริดหยาบเรามีทางออกที่ข้อผิดพลาดความถี่ต่ำได้ลดลงอย่างมีนัยสำคัญ ดังนั้นมันจะมีประโยชน์เป็นจุดเริ่มต้นสำหรับวิธีการวนซ้ำบนกริดปลีกย่อย

ในขณะที่มีวิธีหลาย multigrid ที่แตกต่างกันส่วนใหญ่ทำงานโดยการเปลี่ยนแปลงบางอย่างต่อไปนี้:

  1. เริ่มต้นด้วยปัญหากริดที่ดี
  2. โครงการบนกริดหยาบ (หรือที่เรียกว่าข้อ จำกัด )
  3. ประมาณวิธีแก้ปัญหาบนกริดหยาบ (ใช้ตัวแก้อื่น ๆ )
  4. ฉายโซลูชันกริดแบบหยาบบนกริดปลีกย่อย (หรือที่เรียกว่าการยืด )
  5. ใช้การฉายภาพจาก 4. เป็นการคาดเดาเริ่มต้นแก้ปัญหากริดที่ละเอียดด้วยวิธีการวนซ้ำ

สำหรับฉันส่วนที่ยากที่สุดของวิธี multigrid คือการประมาณระหว่างกริด บทเรียนที่ Briggs แนะนำโดย @ChristianClason จัดการเรื่องนี้ได้ดีกว่าที่ฉันทำได้


ขอบคุณสำหรับคำตอบโดยละเอียด! ตอนนี้ฉันมีความรู้พื้นฐานเกี่ยวกับวิธีการ multigrdi ตอนนี้ฉันมีคำถามเฉพาะเกี่ยวกับกระบวนการ จำกัด และการยืดออก ฉันอ่านว่า Restriction matrix R และ Interpolation Matrix M และสูตรอย่าง A2 = RAI เคยทำโปรเจคต์ระหว่างกริด แต่ฉันไม่เข้าใจวิธีการสร้างเมทริกซ์ R และฉันมีความคิดเกี่ยวกับสิ่งนี้หรือไม่?
Nurlan

ดูสไลด์ 45-57 ของ Briggs multigrid tutorial (ตอนที่ 1) ที่ ChristianClason โพสต์ ที่นั่นบริกส์อธิบายกระบวนการสำหรับเรขาคณิตหลายจุดวิธี นั่นเป็นคำอธิบายที่ง่ายที่สุดที่ฉันสามารถหาได้ หากคุณมีคำถามเพิ่มเติมเกี่ยวกับมันโปรดโพสต์คำถามใหม่! :)
เปาโล

15

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

  • Briggs, Multigrid Tutorial , SIAM, 2000 (คุณสามารถดาวน์โหลดสไลด์ที่นี่และที่นี่ ) นี่เป็นแหล่งข้อมูลทั่วไปที่ให้คำแนะนำอย่างอ่อนโยนเกี่ยวกับหลักการของ multigrid ซึ่งส่วนใหญ่สำหรับปัญหารูปไข่

  • แบรนด์ Multigrid Techniques , ฉบับปรับปรุง, SIAM 2011 , (หรือดาวน์โหลด pdf ) นี่คือการพัฒนาที่ยอดเยี่ยมของปรัชญาแบบ multigrid และการสร้างแบบจำลองแบบหลายหน้าจอและเป็นโอกาสที่ดีในการเปลี่ยนวิธีคิดของคุณเกี่ยวกับนักแก้ปัญหาโดยปริยาย เว็บไซต์ Achi แบรนด์ของมีการอ้างอิงอื่น ๆ อีกมากมายรวมทั้งตัวเขา 2,000 รีวิวของ Multiscale วิทยาศาสตร์การคำนวณ

  • Trottenberg, Oosterlee และ Schueller, Multigrid , Academic Press, 2001สิ่งนี้มีตัวอย่างการทำงานมากกว่า Brandt รวมถึงการทดลองและรายละเอียดเกี่ยวกับวิธีการเฉพาะโดยเฉพาะอย่างยิ่งในบริบทของพลศาสตร์ของไหล

  • Hackbusch, Multigrid Method and Applications , Springer, 1985 นี่เป็นทฤษฎีการลู่เข้าอย่างเข้มงวดรวมถึง "multigrid ของชนิดที่สอง" สำหรับผู้ประกอบการที่สมบูรณ์ของ Fredholm


2
Briggs ดีจริงๆ!
vanCompute

5

คลาสสิกอื่น:

  • Wesseling, คำแนะนำเกี่ยวกับวิธีการหลายระดับ, John Wiley & Sons, 1992

รหัสตัวอย่างสามารถพบได้ที่MGNet

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