Tôi nên sử dụng hướng dẫn nào khi tìm kiếm các phương pháp tiền điều kiện tốt cho một vấn đề cụ thể?


19

Đối với giải pháp của các hệ tuyến tính lớn sử dụng các phương pháp lặp, thường được quan tâm để đưa ra điều kiện tiên quyết, ví dụ giải quyết thay vì , trong đó ở đây được sử dụng cho tiền điều kiện bên trái của hệ thống. Thông thường, chúng ta nên có và cung cấp cơ sở cho (nhiều hơn) giải pháp hiệu quả hoặc giảm tài nguyên tính toán (ví dụ: lưu trữ bộ nhớ) so với giải pháp của hệ thống ban đầu ( tức là khi ). Tuy nhiên, chúng ta nên sử dụng hướng dẫn nào để chọn điều kiện tiên quyết? Làm thế nào để các nhà quảng cáo làm điều này cho vấn đề cụ thể của họ?Mộtx= =bM-1(Mộtx= =b)MM-1Một-1M= =Một


1
Ngay cả đối với một loại phương trình cụ thể, điều này sẽ đòi hỏi một câu trả lời rất dài và chi tiết ...
Jack Poulson

Nên có thể đề xuất các chiến lược heuristic cho cách lựa chọn tiền điều kiện. Ví dụ, đưa ra một vấn đề, những người đi trước làm gì trong thực tế để thử và tìm một điều kiện tiên quyết tốt? Chỉ cần bắt đầu với một điều kiện tiên quyết đường chéo cơ bản dựa trên trích xuất đường chéo từ ? hoặc là? Một
Allan P. Engsig-Karup

4
Tôi sẽ truy cập kênh @MattKnepley và nói rằng hành động thích hợp là thực hiện tìm kiếm tài liệu. Nếu thất bại, hãy thử tất cả các tùy chọn có sẵn dễ dàng trên một vấn đề khá lớn. Nếu thất bại, hãy suy nghĩ sâu sắc về vật lý và làm thế nào bạn có thể đưa ra một giải pháp gần đúng cho vấn đề với giá rẻ, và sử dụng nó như là điều kiện tiên quyết.
Jack Poulson

@JackPoulson: Vì câu hỏi này nằm trong một tĩnh mạch tương tự với bộ giải hệ thống tuyến tính thưa thớt nào được sử dụng? Làm thế nào để chọn một bộ giải tuyến tính có thể mở rộng , có vẻ như về chủ đề đối với tôi (mặc dù rộng). Vì nhận xét của bạn về cơ bản là một câu trả lời, bạn có thể vui lòng chuyển đổi nó thành một câu trả lời không?
Geoff Oxberry

Tôi đã bắt đầu trả tiền cho câu hỏi này, nhưng tôi cũng muốn thấy nhiều câu hỏi hơn trong tĩnh mạch này có thể được đặt ra tốt hơn hoặc bị hạn chế trong một loại vấn đề cụ thể.
Aron Ahmadia

Câu trả lời:


17

Ban đầu tôi không muốn đưa ra câu trả lời vì điều này xứng đáng được điều trị rất lâu và hy vọng người khác vẫn sẽ đưa ra. Tuy nhiên, tôi chắc chắn có thể đưa ra một cái nhìn tổng quan rất ngắn gọn về phương pháp được đề xuất:

  1. Thực hiện tìm kiếm tài liệu kỹ lưỡng .
  2. Nếu thất bại, hãy thử mọi điều kiện tiên quyết có ý nghĩa rằng bạn có thể chạm tay vào. MATLAB, PETSc và Trilinos là những môi trường tốt cho việc này.
  3. Nếu thất bại, bạn nên suy nghĩ cẩn thận về vật lý của vấn đề của bạn và xem liệu có thể đưa ra giải pháp gần đúng giá rẻ hay không, thậm chí có thể là một phiên bản thay đổi một chút của vấn đề của bạn.

Ví dụ về 3 là các phiên bản Laplacian của Helmholtz, và công trình gần đây của Jinchao Xu về tiền điều khiển toán tử biharmonic với Laplacian.


Cảm ơn! Phần còn lại của bình luận này đáp ứng giới hạn ký tự tối thiểu.
Geoff Oxberry 2/212

14

Những người khác đã nhận xét về vấn đề tiền điều kiện mà tôi sẽ gọi là ma trận "nguyên khối", ví dụ như dạng rời rạc của phương trình vô hướng như phương trình Laplace, phương trình Helmholtz hoặc, nếu bạn muốn khái quát hóa nó, giá trị véc tơ phương trình đàn hồi. Đối với những điều này, rõ ràng là multigrid (đại số hoặc hình học) là người chiến thắng nếu phương trình là elip, và đối với các phương trình khác thì nó không rõ ràng lắm - nhưng một cái gì đó như SSOR thường hoạt động khá tốt (đối với một số ý nghĩa của "hợp lý").

Đối với tôi, sự mặc khải lớn là những gì cần làm đối với các vấn đề không phải là nguyên khối, ví dụ cho toán tử Stokes Khi tôi bắt đầu với phân tích số khoảng 15 năm trước, tôi nghĩ mọi người có hy vọng rằng các kỹ thuật tương tự có thể được áp dụng cho các ma trận như trên và hướng nghiên cứu là thử trực tiếp multigrid hoặc sử dụng khái quát hóa SSOR (sử dụng " điểm làm mịn "như Vanka) và các phương pháp tương tự. Nhưng điều này đã phai mờ vì nó không hoạt động tốt.

(MộtBBT0).

Cái đã đến để thay thế cái này là cái ban đầu được gọi là "điều kiện tiên quyết dựa trên vật lý" và sau đó đơn giản là (và có thể chính xác hơn) là "điều kiện tiên quyết khối" như của Silvester và Wathen. Chúng thường dựa trên việc loại bỏ khối hoặc bổ sung Schur và ý tưởng là xây dựng một điều kiện tiên quyết theo cách mà người ta có thể sử dụng lại các điều kiện tiên quyết cho các khối riêng lẻ được biết là hoạt động tốt. Ví dụ, trong trường hợp phương trình Stokes, tiền thân Silvester / Wathen sử dụng ma trận đó

(MộtB0BTMột-1B)-1
khi được sử dụng như một điều kiện tiên quyết với GMRES sẽ dẫn đến sự hội tụ trong chính xác hai lần lặp. Vì nó là hình tam giác, việc đảo ngược cũng đơn giản hơn nhiều, nhưng chúng ta vẫn có vấn đề phải làm gì với các khối đường chéo và có một cách sử dụng xấp xỉ: trong đó dấu ngã có nghĩa là thay thế nghịch đảo chính xác bằng một xấp xỉ. Điều này thường đơn giản hơn nhiều: vì khối A là toán tử elip, ~ A - 1
(Một-1~B0(BTMột-1B)-1~)
MộtMột-1~được xác định gần đúng bởi một chu kỳ V đa biến, chẳng hạn, và hóa ra ở đây, gần đúng bởi một ILU của ma trận khối.(BTMột-1B)-1~

Ý tưởng làm việc với các khối riêng biệt bao gồm ma trận và sử dụng lại các điều kiện tiên quyết trên các khối riêng lẻ đã được chứng minh là rất mạnh mẽ và đã thay đổi hoàn toàn cách chúng ta nghĩ về các hệ phương trình tiền điều kiện ngày nay. Tất nhiên, điều này có liên quan bởi vì hầu hết các vấn đề thực tế, trên thực tế, là các hệ phương trình.


1
Man, yeah, tôi rất muốn tiền thưởng! ;-)
Wolfgang Bangerth

Trong đoạn thứ hai của bạn: "Nhưng điều này đã phai mờ vì nó không hoạt động tốt." Bạn có thể đưa ra một số trực giác về lý do tại sao nó không hoạt động tốt? Có những trường hợp mà nó có thể làm việc?
Andrew T. Barker

Lý do tại sao multigrid trực tiếp áp dụng cho toàn bộ hệ thống đã được chứng minh là rất thành công là vì nhu cầu mượt mà hơn để bảo tồn các tính chất cấu trúc của phương trình, và điều đó không cần thiết để đạt được. Ví dụ, nếu bạn muốn áp dụng multigrid cho các phương trình Stokes, bạn phải có một mượt mà hơn với một vectơ tự do phân kỳ cung cấp cho bạn một vectơ tự do phân kỳ. Có những bộ làm mịn như vậy cho Stokes, nhưng nó không cần thiết để xây dựng và nó thường lấy đi chất lượng như một bộ giải / mượt hơn. Việc bảo quản tài sản trở nên khó khăn hơn nhiều trong các trường hợp tự chủ hơn.
Wolfgang Bangerth

Đối với việc khái quát hóa những thứ như Jacobi / SSOR / etc cho các hệ thống: hầu hết các phương thức này yêu cầu các mục nhập chéo của ma trận là khác không. Đó rõ ràng không phải là trường hợp của Stokes. Vì vậy, phương pháp đơn giản tiếp theo là không nhìn vào các hàng ma trận riêng lẻ mà là các khối hàng, ví dụ: tất cả các hàng cho DoF được liên kết với một đỉnh đơn. Chúng được gọi là "điểm làm mịn" (điểm như ở đỉnh) và chúng hoạt động ở mức độ, nhưng chúng bị suy giảm hiệu suất tương tự như Jacobi / SSOR khi vấn đề trở nên lớn. Để tránh điều đó, một điều kiện tiên quyết cần trao đổi thông tin toàn cầu như đa sắc.
Wolfgang Bangerth

Multigrid nổi tiếng là không hiệu quả trong việc giải Helmholtz bởi vì, chủ yếu là do các chế độ dao động năng lượng thấp rất khó để làm mịn hoặc thể hiện trong một không gian thô. Đã có một số nghiên cứu về đa tia tia, nhưng công thức này rất kỹ thuật và nó không phải là một phương pháp trưởng thành vào thời điểm này. Lưu ý rằng các hệ thống không đối xứng cũng có thể được giải quyết bằng cách sử dụng loại phân tách khối này. Tùy thuộc vào sự lựa chọn của các biến, (ví dụ nguyên thủy so với bảo thủ), một sự thay đổi cơ sở có thể được yêu cầu bên trong tiền điều kiện để phơi bày cấu trúc bị chặn.
Jed Brown

13

Jack đã đưa ra một quy trình tốt để tìm một điều kiện tiên quyết. Tôi sẽ thử một địa chỉ cho câu hỏi, "Điều gì tạo nên một điều kiện tiên quyết tốt?". Định nghĩa hoạt động là:

Mộtx= =bM-1Một-1

tuy nhiên điều này không cung cấp cho chúng tôi bất kỳ cái nhìn sâu sắc nào trong việc thiết kế một điều kiện tiên quyết. Hầu hết các điều kiện tiên quyết dựa trên thao tác của phổ toán tử. Nhìn chung, các phương thức Krylov hội tụ nhanh hơn khi các giá trị riêng được nhóm lại, xem Lặp lại ma trận hoặc Hàm Merom định hình và Đại số tuyến tính . Đôi khi chúng ta có thể chứng minh một kết quả tiền điều kiện chỉ là một vài giá trị riêng, ví dụ: Lưu ý về điều kiện tiên quyết cho các hệ thống tuyến tính không xác định .

Một chiến lược chung được minh họa bởi Multigrid. Các điều kiện tiên quyết thư giãn (ở đây làm mịn) như SOR loại bỏ các thành phần tần số cao trong lỗi. Khi phần dư được chiếu lên lưới thô, các thành phần lỗi tần số thấp hơn trở thành tần số cao hơn và một lần nữa có thể bị SOR tấn công. Chiến lược cơ bản này làm cơ sở cho các phiên bản phức tạp hơn của MG, chẳng hạn như AMG. Lưu ý rằng ở dưới cùng, bộ giải phải giải quyết chính xác các tần số thấp nhất trong lỗi.

Một chiến lược khác liên quan đến việc giải phương trình trong các không gian con nhỏ, đó chính xác là những gì người giải Krylov đang làm. Ở dạng đơn giản nhất, đây là phương pháp Kaczmarz hoặc Phương pháp cộng gộp Schwarz . Chủ nghĩa lý thuyết tiên tiến ở đây, Phân tích miền , tập trung vào xấp xỉ phổ của lỗi trên giao diện, vì các miền được giả sử được giải quyết khá chính xác.

Một


cảm ơn bạn đã trả lời Bất kỳ kinh nghiệm nào liên quan đến việc chúng ta nên đi bao xa để thực sự chứng minh rằng điều kiện tiên quyết hoạt động cho các hệ thống lớn - và có thể làm thế nào điều này có thể hoặc nên được thực hiện trong thực tế. Theo kinh nghiệm của tôi, đối với nhiều hệ thống, chúng ta phải dựa vào trực giác, heuristic, v.v.
Allan P. Engsig-Karup

Tôi nghĩ rằng trực giác đang đi quá xa. Những gì tôi thấy trong thực tế là một bằng chứng cho một hệ thống đơn giản. Sau đó, một đối số rằng một số sửa đổi sẽ không nhạy cảm với một tham số hoặc một loại biến thể nhất định. Sau đó, các thí nghiệm bằng số cho thấy nó hoạt động ngay cả bên ngoài mô hình biến thể này.
Matt Knepley
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.