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-48
lỗ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.