Làm thế nào để thiết lập rằng một phương pháp lặp cho các hệ thống tuyến tính lớn được hội tụ trong thực tế?


11

Trong khoa học tính toán, chúng ta thường gặp các hệ thống tuyến tính lớn mà chúng ta bắt buộc phải giải quyết bằng một số phương tiện (hiệu quả), ví dụ bằng phương pháp trực tiếp hoặc lặp lại. Nếu chúng ta tập trung vào cái sau, làm thế nào chúng ta có thể thiết lập rằng một phương pháp lặp để giải một hệ thống tuyến tính lớn được hội tụ trong thực tế?

Rõ ràng là chúng ta có thể thực hiện phân tích thử nghiệm và phân tích lỗi (xem Tại sao bộ giải tuyến tính lặp của tôi không hội tụ? ) Và dựa vào các phương pháp lặp đảm bảo hội tụ bằng các bằng chứng hoặc có cơ sở trải nghiệm âm thanh (ví dụ: phương pháp không gian con Krylov như CG và GMRES cho các hệ đối xứng và không đối xứng tương ứng).

Nhưng, những gì có thể được thực hiện để thiết lập sự hội tụ trong thực tế? và những gì được thực hiện?


1
Câu hỏi tuyệt vời! Khi bạn nói 'thiết lập sự hội tụ', bạn có nghĩa là 'thiết lập rằng giải pháp đang hội tụ' hoặc 'thiết lập sự hội tụ đó sẽ xảy ra'? Tôi biết, ví dụ, đối tượng PETSc KSP có một vài kỹ thuật mặc định để kiểm tra sự hội tụ (định mức lỗi đang giảm, số lần lặp tối đa). Đây có phải là loại câu trả lời bạn đang tìm kiếm?
Aron Ahmadia

@aron: Tôi nghĩ sẽ rất thú vị khi thấy câu trả lời giải quyết cả hai vấn đề.
Allan P. Engsig-Karup

Câu trả lời:


6

Đối với nhiều phương trình vi phân từng phần phát sinh trong tự nhiên, đặc biệt là với các phi tuyến hoặc dị hướng mạnh, việc lựa chọn một điều kiện tiên quyết thích hợp có thể có ảnh hưởng lớn đến việc phương pháp lặp có hội tụ nhanh, chậm hay không. Ví dụ về các vấn đề được biết là có các điều kiện tiên quyết nhanh và hiệu quả bao gồm các phương trình vi phân từng phần elip mạnh, trong đó phương pháp multigrid thường đạt được sự hội tụ nhanh. Có một số bài kiểm tra người ta có thể sử dụng để đánh giá sự hội tụ; Ở đây tôi sẽ sử dụng chức năng từ PETSc làm ví dụ, vì nó được cho là thư viện lâu đời nhất và trưởng thành nhất để giải quyết lặp lại các hệ thống thưa thớt của phương trình tuyến tính (và phi tuyến).

PETSc sử dụng một đối tượng được gọi là KSPMonitor để theo dõi tiến trình của bộ giải lặp và quyết định xem bộ giải có hội tụ hoặc chuyển hướng hay không. Màn hình sử dụng bốn tiêu chí khác nhau để quyết định có dừng lại hay không. Thông tin chi tiết về cuộc thảo luận ở đây có thể được tìm thấy trong trang man cho KSPGetConvergedReason () .

x

Ax=b

x^r^
  1. (P1(Axb))

    r^=P1(Ax^b)
  2. (AP1Px=b)

    r^=Ax^b

Tiêu chuẩn hội tụ

  1. atol
    r^atol
  2. Dung sai tương đối - Tiêu chí dung sai tương đối được thỏa mãn khi định mức của phần dư nhỏ hơn định mức của phía bên tay phải bởi một hệ số của hằng số được xác định trước :rtol
    r^rtolb
  3. Các tiêu chí khác - Giải pháp lặp cũng có thể hội tụ do phát hiện độ dài bước nhỏ hoặc độ cong âm.

Tiêu chí phân kỳ

  1. Số lần lặp tối đa - Số lần lặp mà người giải có thể thực hiện được giới hạn bởi số lần lặp tối đa. Nếu không có tiêu chí nào khác được đáp ứng khi đạt được số lần lặp tối đa, màn hình sẽ trả về khi được chuyển hướng.

  2. NaN dư - Nếu tại bất kỳ thời điểm nào, phần dư đánh giá thành NaN, bộ giải trả về khi được phân kỳ.

  3. Phân kỳ của chỉ tiêu dư Màn hình trả về dưới dạng phân kỳ nếu tại bất kỳ thời điểm nào, chỉ tiêu của phần dư lớn hơn định mức của phía bên phải bởi một hệ số của hằng số được xác định trước : dtol

    r^dtolb
  4. Phân tích bộ giải Phương pháp Krylov có thể báo hiệu sự phân kỳ nếu phát hiện ra ma trận đơn hoặc tiền điều kiện.

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.