Xây dựng các phương pháp Runge Kutta rõ ràng theo thứ tự 9 trở lên


9

Một số sách cũ tôi từng thấy nói rằng số lượng giai đoạn tối thiểu của phương pháp Runge-Kutta rõ ràng của một đơn đặt hàng được xác định là không xác định đối với các đơn hàng . Điều này có còn đúng không?9

Có thư viện nào để tự động làm việc với các phương pháp Runge-Kutta có thứ tự cao?


Bạn có ý nghĩa gì khi "tự động làm việc với"?
David Ketcheson

@DavidKetcheson Tạo các hệ số và kiểm tra các thuộc tính của chúng. Tôi hoàn toàn không thể tưởng tượng rằng ai đó sẽ rút ra một phương pháp bậc cao hoàn toàn bằng tay, với bao nhiêu điều kiện và biến số.
Kirill

Tôi không biết bất kỳ phần mềm nào để tạo ra các hệ số như vậy. Tôi đã thấy các phương pháp RK bậc cao trực tuyến, chẳng hạn như các phương pháp , được phát triển bởi Terry Feagin. Bài viết mô tả quá trình lấy các hệ số cho đơn hàng 10 có ở đây . Có vẻ như phương pháp tự động sẽ không dễ thực hiện và tôi nghi ngờ chúng tồn tại. (Như một lưu ý phụ, tôi chưa bao giờ thấy RK của đơn hàng 9, luôn luôn (7) 8 hoặc (8) 10. Không chắc RK9 tồn tại!)
Etienne Pellegrini

(7) 8, (8) 9, (8) 10, (10) 12 và (12) 14 đều có các triển khai trong differrntialEquations.jl . Bạn có thể thử sau đó ra một loạt các vấn đề. Tôi sẽ đưa ra đánh giá chi tiết một chút.
Chris Rackauckas

Lưu ý rằng thứ tự trên 8 thường không hữu ích trong độ chính xác của dấu phẩy động. Các phương pháp Verner thực sự tốt, nhưng chỉ có tối đa 6 là dễ dàng để FSAL. Feagin không có nội suy.
Chris Rackauckas

Câu trả lời:


14

Giới hạn

Điều đó vẫn đúng. Trong cuốn sách của Butcher , trang 196, nó viết như sau: Trong một bài viết năm 1985, Butcher đã chỉ ra rằng bạn cần 11 giai đoạn để có được đơn hàng 8 , và điều này thật sắc nét. Đối với đơn hàng 10, Hairer đã tạo ra một nhóm các phương pháp 17 giai đoạn , nhưng không biết liệu người ta có thể làm tốt hơn không. Thông tin tương tự được đưa ra trong Phần II.5 của Hairer, Norsett, & Wanner vol. Tôi . Tham chiếu thứ hai cũng trải qua một số kỹ thuật để phát triển các cặp thứ tự cao (lên đến thứ tự 8).

Có một giới hạn trên về số lượng giai đoạn tối thiểu cần thiết cho bất kỳ đơn hàng nào, vì bạn có thể xây dựng chúng bằng cách ngoại suy. Điều này đã được biết đến trong một thời gian rất dài; xem bài báo gần đây của tôi để được giải thích. Tuy nhiên, ràng buộc này là bậc hai theo thứ tự và chắc chắn là khá bi quan. Phần mềm gật đầu được thảo luận dưới đây có thể tạo ra các hệ số chính xác cho các phương pháp này và cả cho các phương pháp hiệu chỉnh hoãn lại (là các phương pháp Runge-Kutta) theo bất kỳ thứ tự nào.

Tôi tin rằng @Etienne đã đúng khi nói rằng các phương pháp bậc cao nhất đã được xây dựng bằng tay là do Terry Feagin. Về nhận xét khác của ông, bài viết này chứa một số cặp 9 (8):

JH Verner, các cặp Runge-Kutta rõ ràng theo thứ tự cao với thứ tự giai đoạn thấp, Toán học số ứng dụng, Tập 22, Số 1 Câu3, Tháng 11 năm 1996, Trang 345-357

Np

p | N
-----
1 | 1
2 | 2
3 | 4
4 | 8
5 | 17
6 | 37
7 | 85
8 | 200
9 | 486
10| 1205
11| 3047
12| 7813
13| 20300
14| 53264

Phần mềm

Đối với các phương thức đặt hàng rất cao, số lượng và độ phức tạp của các điều kiện đặt hàng trở nên không thể xử lý bằng tay. Một số gói biểu tượng (Mathicala, ít nhất) có khả năng tạo điều kiện đặt hàng Runge-Kutta. Có thể có một số gói khác ngoài đó, nhưng tôi biết những điều sau đây (cả hai gói tôi đã viết):

  • gật đầu : một gói Python có thể tạo các biểu thức và mã biểu tượng cho các điều kiện đặt hàng theo thứ tự tùy ý. Nó cũng bao gồm mã Python để kiểm tra các điều kiện đó, hệ số lỗi tính toán, v.v.
  • RK-Opt : Một gói MATLAB, trong số nhiều thứ khác, có thể tìm thấy các phương pháp Runge-Kutta có thứ tự cao với các hệ số được tối ưu hóa cho một vài mục đích khác nhau. Hiện tại nó không thể xử lý RK rõ ràng ở bậc 9 (nó tăng lên bậc 8 đối với các phương thức bậc một, bậc mười đối với các phương thức có bậc bậc cao hơn). Nếu đó là điều bạn quan tâm, tôi có thể thêm các điều kiện thứ 9 (và cao hơn) khá dễ dàng.

Một lưu ý thú vị khác về các điều kiện đặt hàng, trở nên quan trọng ở các đơn hàng cao như vậy, đó là có hai cách để lấy chúng và chúng cung cấp cho bạn các điều kiện khác nhau (nhưng tương đương với nhau): một là do Butcher, cách khác là do Albrecht .


5

Câu trả lời của @ DavidKetcheson đạt được những điểm lớn: bạn luôn có thể xây dựng các phương pháp có thứ tự đủ cao bằng phép ngoại suy, đó là một ràng buộc rất bi quan và bạn luôn có thể làm tốt hơn rất nhiều, tất cả các phương pháp tốt đều được lấy bằng tay (với sự trợ giúp của một số máy tính công cụ đại số), không có giới hạn thấp hơn được biết đến, và các phương pháp bậc cao nhất là do Feagin. Đưa ra một số ý kiến, tôi muốn làm tròn câu trả lời bằng một cuộc thảo luận về các điều cấm kỵ hiện đại trong lĩnh vực này.

Nếu bạn muốn có một bản tóm tắt về tablea RK, bạn có thể tìm thấy một trong mã Julia này . Trích dẫn cho bài báo mà họ đến từ trong tài liệu cho các nhà xây dựng tableau. Tài liệu dành cho nhà phát triển cho DifentialEquations.jl liệt kê tất cả các tableaus này là có sẵn để sử dụng và bạn có thể thấy ở đây tất cả đều được thử nghiệm bằng cách sử dụng bộ tích hợp liên tục Travis và AppVeyor để đảm bảo rằng không chỉ các điều kiện đặt hàng được thỏa mãn, mà chúng còn thực sự đạt được sự hội tụ được yêu cầu (kiểm tra xác minh). Từ những điều này, bạn có thể thấy rằng có:

  • 5 thứ tự 9 phương pháp
  • 6 thứ tự 10 phương pháp
  • 2 thứ tự 12 phương pháp
  • Phương pháp 1 đơn hàng 14

(mà tôi có thể tìm thấy đã được xuất bản). Một lần nữa, tất cả bắt nguồn bằng tay.

Các thử nghiệm hội tụ cho thấy rằng một số dẫn xuất không được thực hiện với độ chính xác đủ cao để hoạt động cho các số lớn hơn 64 bit (chúng được nhận xét như thế này ). Vì vậy, đó là một cách giải quyết thú vị cần lưu ý: ở các đơn hàng cao này, bạn thường chỉ nhận được các hệ số "có lỗi x" thỏa mãn các điều kiện đặt hàng, nhưng khi sử dụng số học chính xác tùy ý, bạn thực sự có thể phát hiện các giới hạn này. Vì vậy, độ chính xác mà bạn thực hiện các hệ số có vấn đề, và bạn nên chọn nó để bao gồm độ chính xác mà bạn muốn kiểm tra (/ sử dụng, tất nhiên).

Nếu bạn muốn có một loạt các ô ổn định, bạn chỉ có thể plot(tableau)sử dụng công thức Plots.jl. Có thể tìm thấy một bộ ghi chú tốt có rất nhiều ghi chú này trên trang web của Peter Stone (đi bên dưới và nhấp vào để nói thứ tự 10 đề án và bạn sẽ nhận được một loạt các tệp PDF). Khi phát triển DifentialEquations.jl, tôi đã tạo ra tập hợp các tableaus để giải quyết chúng một cách có hệ thống về các vấn đề kiểm tra / xem xét các chỉ số phân tích để xem cái nào nên được đưa vào thư viện chính. Tôi đã thực hiện một số ghi chú nhanh ở đây . Như bạn có thể thấy từ các thuật toán có trong thư viện chính, những cái mà tôi thấy đáng giá là các phương pháp Verner và Feagin. Phương thức thứ tự Verner 9 là phương thức bậc cao nhất với nội suy khớp với thứ tự. Đó là điều cần nhận ra: các phương thức Feagin không có nội suy phù hợp (mặc dù bạn có thể bootstrap Hermite, nhưng điều đó thực sự không hiệu quả).

Vì tất cả chúng đều được triển khai với các triển khai rất hiệu quả, bạn có thể tự mình chơi xung quanh chúng và xem các tính năng khác nhau thực sự quan trọng đến mức nào. Đây là một máy tính xách tay Jupyter hiển thị các phương thức Feagin đang sử dụng . Lưu ý rằng cốt truyện hội tụ thực sự sẽ có 1e-48lỗi. Các phương pháp bậc cao chỉ hiệu quả hơn các phương pháp bậc thấp hơn khi bạn thực sự cần một dung sai rất rất thấp. Bạn có thể tìm thấy một số điểm chuẩn sử dụng một số trong số chúng tại DiffEqBenchmark.jl , mặc dù khi chúng được sử dụng, đó thường là phương pháp Verner thứ 9 và thường cho thấy rằng điểm chuẩn không nằm trong chế độ mà thứ tự cao này có hiệu quả.

Vì vậy, nếu bạn muốn chơi xung quanh và làm việc với một số phương thức bậc cao, RK-Opt là thứ tôi tìm thấy là một công cụ tốt để lấy một số (như @DavidKetcheson đã đề cập), và differentialEquations.jl có tất cả các phương thức được xuất bản (tôi nghĩ vậy? ) được triển khai để bạn có thể dễ dàng kiểm tra / điểm chuẩn so với chúng. Tuy nhiên, trừ khi bạn tìm thấy một giả định có thể bỏ, từ các thử nghiệm của tôi, tôi không thể tìm thấy thứ gì đó đánh bại các phương pháp Verner (đơn hàng 6-9) và Feagin (đơn hàng 10+). YMMV, và tôi muốn thấy nhiều nghiên cứu hơn về vấn đề này.

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.