อัลกอริทึม * full * multigrid ทำงานอย่างไร


12

ดังนั้นฉันจึงเข้าใจ (หรืออย่างน้อยฉันเชื่อว่าฉันทำ) วิธี V-cycle ทำงาน ฉันได้เขียนใน Matlab รุ่น 1-D รุ่นเวียนรอบของ V-cycle อย่างไรก็ตามเมื่อฉันรันโค้ดสำหรับ FMG โซลูชันของฉันไม่ได้มาบรรจบกัน ฉันเชื่อว่าปัญหาของฉันอยู่ที่การเข้าใจส่วน FMG ที่แท้จริง สิ่งที่ฉันรู้ในขณะนี้คือ:

  1. ก่อนการแก้ไข FMG ฉันได้ผ่อนคลายวิธีแก้ปัญหาของu
  2. แก้ไขทั้งข้อผิดพลาดและ (?)u
  3. ดำเนินการ v-cycle 2 กริดส่งผ่านข้อผิดพลาดไปยัง v-cycle (?)
  4. คลายข้อผิดพลาด (บนตารางที่หยาบที่สุดอันดับ 2)
  5. สอดแทรกและข้อผิดพลาดu
  6. อัพเดต โดยการเพิ่มข้อผิดพลาดเข้าไปu
  7. เรียกใช้ v-cycle จากนั้นทำซ้ำจากขั้นตอนที่ 4

ฉันไม่แน่ใจเกี่ยวกับการสั่งซื้อ แต่ฉันก็อาจผิดเกี่ยวกับสิ่งที่ฉันแก้ไขและส่งผ่านไปยังวงจรของฉัน หากฉันขาดอะไรจากอัลกอริทึมโปรดแจ้งให้เราทราบ

คำตอบ:


11

คุณคิดว่าเกิดข้อผิดพลาดขึ้นตรงไหน (และคุณวัดข้อผิดพลาดได้อย่างไร)

uuhIHhuHIhH=IhH

rh=Ahuhbh

u~HI^hHu~hA

AHuH=IhHbhbH+AHI^hHu~hIhHAhu~hτhH

bHτhHuhAHI^hHuh=bH+τhHuhu~h+IHh(uHI^hHu~h)


ข้อผิดพลาดถูกคำนวณเมื่อฉันคำนวณส่วนที่เหลือจากการดำเนินการจากตารางที่ดีที่สุดไปยัง coarsest มันประมาณค่าเริ่มต้นต่อตารางเป็นศูนย์ซึ่งมันจะผ่อนคลายด้วยวิธีการวนซ้ำ
AlanH

ข้อผิดพลาด (จากการเดาเริ่มต้นที่วิธีแก้ปัญหา) มีบทบาทในเรื่องทั้งหมดนี้อย่างไร
AlanH

1
uhIHhuH

ในรูปแบบการแก้ไขสองกริดของ Briggs กล่าวถึงการแก้ไขข้อผิดพลาดจากกริดหยาบถึงละเอียด เพื่อไม่ให้เกิดเสียงดื้อรั้น แต่นี่แตกต่างจากสิ่งที่คุณอธิบายหรือไม่?
AlanH

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