Thiết lập điểm chuẩn
Trong phần mềm Julia differentialEquations.jl, chúng tôi đã triển khai nhiều phương thức bậc cao hơn, bao gồm các phương thức Feagin. Bạn có thể thấy nó trong danh sách các phương thức của chúng tôi , và sau đó có hàng tấn phương pháp khác mà bạn có thể sử dụng như các tableaus được cung cấp . Bởi vì tất cả các phương pháp này được đặt cùng nhau, bạn có thể dễ dàng điểm chuẩn giữa chúng. Bạn có thể thấy các điểm chuẩn tôi có trực tuyến tại đây và thấy rằng rất đơn giản để điểm chuẩn nhiều thuật toán khác nhau. Vì vậy, nếu bạn muốn dành một vài phút để chạy các điểm chuẩn, hãy thực hiện nó. Đây là một bản tóm tắt về những gì đi ra.
Trước hết, điều quan trọng cần lưu ý là, nếu bạn nhìn vào từng điểm chuẩn, bạn sẽ thấy rằng DP5
(Phương thức Dormand-Prince Order 5) của chúng tôi DP8
nhanh hơn mã Hairer Fortran ( dopri5
và dop853
), và vì vậy những triển khai này được tối ưu hóa rất tốt . Những điều này cho thấy như đã lưu ý trong một chủ đề khác, việc sử dụng quá mức các phương thức Dormand-Prince là vì các phương thức đã được viết chứ không phải vì chúng vẫn là tốt nhất. Vì vậy, so sánh thực tế giữa các triển khai được tối ưu hóa nhất là giữa các phương thức Tsitorous, phương thức Verner và phương thức Feagin từ DifentialEquations.jl.
Kết quả
Nói chung, các phương pháp của một đơn hàng cao hơn 7 có thêm chi phí tính toán thường không vượt trội so với đơn hàng, với các dung sai được chọn. Một lý do cho điều này là các lựa chọn hệ số cho các phương pháp bậc thấp hơn được tối ưu hóa hơn (chúng có "hệ số lỗi cắt ngắn nguyên tắc" nhỏ, điều này quan trọng hơn khi bạn không nhỏ bất thường). Bạn có thể thấy rằng trong nhiều vấn đề như ở đây, các phương pháp Verner E triệt 6 và 7 làm rất tốt, nhưng các phương pháp như Verner E triệt 8 có thể có độ dốc thấp hơn. Điều này là do "lợi ích" của bậc cao hơn được gộp với dung sai thấp hơn, do đó luôn có một dung sai trong đó các phương pháp bậc cao hơn sẽ hiệu quả hơn.
Tuy nhiên, câu hỏi là sau đó, thấp như thế nào? Trong một triển khai được tối ưu hóa tốt, điều đó trở nên khá thấp vì hai lý do. Lý do đầu tiên là bởi vì các phương thức bậc thấp hơn thực hiện một cái gì đó gọi là FSAL (đầu tiên giống như cuối cùng). Thuộc tính này có nghĩa là các phương thức bậc thấp hơn sử dụng lại đánh giá hàm từ bước trước trong bước tiếp theo và do đó có hiệu quả đánh giá một hàm ít hơn. Nếu điều này được sử dụng đúng cách, thì một cái gì đó như phương pháp thứ 5 (Tsitorous hoặc Dormand-Prince) thực sự đang thực hiện 5 đánh giá chức năng thay vì 6 mà các tableaus sẽ đề xuất. Điều này cũng đúng với phương pháp Verner 6.
Lý do khác là do nội suy. Một lý do để sử dụng một phương pháp thứ tự rất cao là thực hiện ít bước hơn và chỉ đơn giản là nội suy các giá trị trung gian. Tuy nhiên, để có được các giá trị trung gian, hàm nội suy có thể cần nhiều đánh giá hàm hơn mức được sử dụng để thực hiện bước này. Nếu bạn nhìn vào các phương pháp Verner, phải mất 8 đánh giá chức năng bổ sung cho phương thức Đơn hàng 8 để có được nội suy Đơn hàng 8. Nhiều lần các phương thức bậc thấp cung cấp một phép nội suy "miễn phí", ví dụ như hầu hết các phương thức bậc 5 có phép nội suy bậc 4 miễn phí (không có các đánh giá hàm bổ sung). Vì vậy, điều này có nghĩa là nếu bạn cần các giá trị trung gian (mà bạn sẽ cần cho một cốt truyện tốt nếu bạn đang sử dụng một phương pháp bậc cao), có một số chi phí ẩn thêm. Yếu tố trong thực tế là các giá trị nội suy này thực sự quan trọng để xử lý sự kiện và giải các phương trình vi phân trễ và bạn thấy tại sao các yếu tố chi phí nội suy thêm vào.
Vậy còn phương pháp Feagin thì sao?
Vì vậy, bạn sẽ thấy rằng các phương thức Feagin bị nghi ngờ bị thiếu trong các điểm chuẩn. Chúng đều ổn, các phép thử hội tụ hoạt động trên các số chính xác tùy ý, v.v., nhưng để thực sự làm cho chúng hoạt động tốt, bạn cần phải yêu cầu một số dung sai thấp khá vô lý. Ví dụ, tôi đã tìm thấy trong các điểm chuẩn chưa được công bố rằng các phương pháp Feagin14
vượt trội hơn Vern9
(Phương pháp hiệu quả Verner thứ 9) ở mức dung sai như thế nào 1e-30
. Đối với các ứng dụng có động lực hỗn loạn (như trong các vấn đề vật lý thiên văn 3 mặt), bạn có thể muốn mức độ chính xác này do sự phụ thuộc nhạy cảm (lỗi trong các hệ thống hỗn hợp nhanh). Tuy nhiên, hầu hết mọi người có lẽ đang tính toán với các số dấu phẩy động có độ chính xác kép và tôi không tìm thấy điểm chuẩn nào vượt trội trong lĩnh vực khoan dung này.
Ngoài ra, không có nội suy để đi cùng với các phương thức Feagin. Vì vậy, những gì tôi làm chỉ đơn giản là đặt một phép nội suy Hermite bậc ba lên chúng để chúng tồn tại (và nó hoạt động tốt một cách đáng ngạc nhiên). Tuy nhiên, nếu không có hàm nội suy tiêu chuẩn, bạn có thể thực hiện phương pháp Hermite đệ quy (sử dụng phép nội suy này để lấy điểm giữa, sau đó thực hiện phép nội suy bậc 5, v.v.) để có được phép nội suy bậc cao, nhưng điều này rất tốn kém và kết quả là phép nội suy không nhất thiết phải có một thuật ngữ lỗi cắt ngắn nguyên tắc thấp (vì vậy nó chỉ tốt khi dt
thực sự nhỏ, điều này hoàn toàn ngược lại với trường hợp chúng ta muốn!). Vì vậy, nếu bạn cần một phép nội suy thực sự tốt để phù hợp với độ chính xác của mình, ít nhất bạn cần quay lại một cái gì đó như thế nào Vern9
.
Lưu ý về phép ngoại suy
Lưu ý rằng các phương pháp ngoại suy đơn giản là các thuật toán để tạo các phương thức Runge-Kutta theo thứ tự tùy ý. Tuy nhiên, đối với đơn hàng của họ, họ thực hiện nhiều bước hơn mức cần thiết và có hệ số lỗi cắt ngắn theo nguyên tắc cao, và do đó chúng không hiệu quả như phương pháp RK được tối ưu hóa tốt theo một trật tự nhất định. Nhưng theo phân tích trước đó, điều này có nghĩa là có một miền có dung sai cực kỳ thấp, trong đó các phương thức này sẽ làm tốt hơn các phương pháp RK "đã biết". Nhưng trong mọi tiêu chuẩn tôi đã chạy, có vẻ như tôi chưa đạt được mức thấp như vậy.
Lưu ý về sự ổn định
Sự lựa chọn thực sự không có gì để làm với các vấn đề ổn định. Trong thực tế, nếu bạn đi qua tableaus differentialEquations.jl (bạn chỉ có thể plot(tab)
cho các vùng ổn định), bạn sẽ thấy rằng hầu hết các phương thức đều có các vùng ổn định tương tự đáng ngờ. Đây thực sự là một sự lựa chọn. Thông thường khi lấy các phương thức, tác giả thường làm như sau:
- Tìm các hệ số sai số nguyên tắc thấp nhất (nghĩa là các hệ số cho các điều khoản thứ tự tiếp theo)
- Tùy thuộc vào các ràng buộc đặt hàng
- Và làm cho vùng ổn định gần với phương pháp của Dormand-Prince Order 5.
Tại sao điều kiện cuối cùng? Chà, bởi vì phương pháp đó có xu hướng luôn ổn định với cách thức lựa chọn các bước thích ứng được điều khiển bởi PI được thực hiện, do đó, đây là một thanh tốt cho các vùng ổn định "đủ tốt". Vì vậy, không phải ngẫu nhiên mà các khu vực ổn định đều có xu hướng giống nhau.
Phần kết luận
Có sự đánh đổi trong mọi lựa chọn phương pháp. Các phương pháp RK bậc cao đơn giản là không hiệu quả ở cả dung sai thấp hơn bởi vì khó tối ưu hóa sự lựa chọn các hệ số và bởi vì số lượng các hợp chất đánh giá chức năng (và thậm chí còn tăng nhanh hơn khi có nội suy). Tuy nhiên, nếu dung sai đủ thấp, họ sẽ thắng, nhưng dung sai được yêu cầu có thể thấp hơn nhiều so với các ứng dụng "tiêu chuẩn" (nghĩa là chỉ thực sự áp dụng cho các hệ thống hỗn loạn).