phương pháp multigrid để giải quyết PDE


15

Tôi cần giải thích đơn giản về Phương pháp Multigrid hoặc một số tài liệu về điều này.

Tôi quen thuộc với các phương pháp lặp bao gồm BiCGStab, CG, GS, Jacobi và điều kiện tiên quyết, nhưng tôi là người mới bắt đầu với phương pháp multigrid.

Ai đó có thể giải thích điều này một cách chi tiết hoặc ít nhất là cung cấp mã giả hoặc mã nguồn rõ ràng, ngay cả với tài liệu tốt cho những người mới bắt đầu? Cảm ơn!

Câu trả lời:


15

Ý tưởng chính đằng sau multigrid là phép chiếu. Tôi cố gắng nghĩ về nó như sau:

Giả sử tôi muốn giải quyết PDE với độ chính xác cao, vì vậy tôi tiến hành phân biệt miền (giả sử sử dụng phương pháp sai phân hữu hạn) trên một lưới rất tốt với rất nhiều điểm. Cuối cùng, tôi thiết lập hệ phương trình của mình và tôi sẵn sàng giải nó. Tôi thử sử dụng bộ giải lặp yêu thích của mình (jacobi, gauss seidel, gradient liên hợp, v.v ...). Tôi tiến hành chờ hơn một ngày và nhận ra máy tính của mình vẫn đang cố gắng tính toán câu trả lời !!!

Lý do tại sao các phương pháp lặp này không hoạt động nhanh là vì (thông thường) khi bạn thiết lập một hệ phương trình lớn như thế này, chính ma trận có giá trị riêng rất gần với 1. Tại sao điều này lại quan trọng? Bởi vì tốc độ hội tụ của nhiều phương pháp lặp có liên quan nghịch đảo đến giá trị riêng lớn nhất (xem liên kết của Christian Clason với các slide Hướng dẫn Multigrid của Brigg, phần 1, trang 27). Vì vậy, giá trị riêng lớn nhất càng gần 1, phương pháp lặp càng chậm. (Lưu ý: đây là sự đơn giản hóa mọi thứ một chút, nhưng nó giúp thúc đẩy nhu cầu về multigrid).

Rõ ràng, luôn luôn nhanh hơn để giải quyết vấn đề nếu có ít ẩn số hơn (tức là trên một lưới thô có ít điểm lưới hơn). Nhưng quan trọng hơn, giải pháp (hoặc giải pháp gần đúng) trên lưới thô hơn là điểm khởi đầu tốt để giải quyết vấn đề trên lưới mịn hơn. Đây là ý tưởng chính đằng sau hầu hết (nếu không phải tất cả) các phương thức multigrid. Tại sao điều này là trường hợp? Theo trực giác, nó có ý nghĩa, nhưng có một cách nghiêm ngặt về mặt toán học để biện minh cho điều này.

Chúng ta hãy xem các chế độ phạm lỗi của lỗi trong một phương pháp lặp (đối với các đối số vì lợi ích, giả sử jacobi hoặc gauss seidel) được áp dụng cho vấn đề lưới mịn ban đầu. Chúng ta sẽ thấy rằng trong vài lần lặp đầu tiên, hầu hết các lỗi tần số cao (dao động cao) đã được loại bỏ! Điều này thật tuyệt, nhưng có lỗi tần số thấp (ít dao động) vẫn còn và không biến mất nhanh chóng. Trong thực tế, đó là lỗi tần số thấp ngăn cản một phương pháp lặp tiêu chuẩn hội tụ nhanh chóng.

khi chúng ta giải quyết vấn đề trên lưới thô hơn (giả sử, bằng phương pháp lặp như jacobi hoặc gauss-seidel), về cơ bản chúng ta có thể loại bỏ các lỗi tần số thấp hơn nhanh hơn (ví dụ như trong số lần lặp ít hơn) so với trên lưới tốt . Vì vậy, nếu chúng ta giải quyết vấn đề của lưới thô, chúng ta có một giải pháp có lỗi tần số thấp hơn đã được giảm đáng kể. Do đó, nó sẽ hữu ích như một điểm khởi đầu cho một phương pháp lặp trên lưới tốt hơn.

Mặc dù có các phương thức đa biến khác nhau, hầu hết chúng hoạt động theo một số biến thể sau:

  1. Bắt đầu với vấn đề lưới điện tốt
  2. Dự án lên một lưới thô (còn được gọi là hạn chế )
  3. Xấp xỉ giải pháp trên lưới thô (sử dụng một số bộ giải khác)
  4. Chiếu giải pháp lưới thô lên lưới mịn hơn (còn gọi là kéo dài )
  5. Sử dụng phép chiếu từ 4. như một phỏng đoán ban đầu, giải quyết vấn đề lưới mịn bằng phương pháp lặp.

Đối với tôi, phần khó nhất của phương pháp multigrid là các hình chiếu giữa các lưới. Các hướng dẫn Briggs được đề xuất bởi @ChristianClason xử lý chủ đề này tốt hơn nhiều so với tôi có thể.


Cảm ơn bạn đã trả lời chi tiết! Bây giờ tôi có một số kiến ​​thức cơ bản về phương pháp multigrdi. Bây giờ tôi có câu hỏi cụ thể về các quá trình hạn chế và kéo dài. Tôi đọc rằng một số Ma trận hạn chế R và Ma trận nội suy M và các công thức như A2 = RAI được sử dụng để thực hiện các phép chiếu giữa các lưới. Nhưng tôi không hiểu làm thế nào để xây dựng ma trận R và tôi..Có ý tưởng nào về việc này không?
Nurlan

Hãy xem các slide 45-57 của Briggs multigrid guide (phần 1) mà ChristianClason đã đăng. Ở đó, Briggs mô tả quá trình cho Phương pháp đa hình học. Đó là lời giải thích đơn giản nhất mà tôi có thể tìm thấy. Nếu bạn có thêm câu hỏi về nó, vui lòng gửi câu hỏi mới! :)
Paul

15

Trang web này có thể không phải là nơi tốt để yêu cầu giải thích chi tiết bằng mã giả (như đã nêu trong Câu hỏi thường gặp , "Nếu bạn có thể tưởng tượng toàn bộ cuốn sách trả lời câu hỏi của mình, bạn sẽ hỏi quá nhiều."), Vì vậy bạn có thể muốn để bắt đầu với một trong những cuốn sách cổ điển về chủ đề này (được liệt kê dưới đây) và quay lại với những câu hỏi cụ thể về các chi tiết cụ thể mà bạn gặp khó khăn.


2
Briggs thực sự tốt!
vanCompute

5

Một cổ điển khác:

  • Wesseling, Giới thiệu về Phương pháp Multigrid, John Wiley & Sons, 1992.

Mã ví dụ có thể được tìm thấy tại MGNet

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.