Saya hanya ingin tahu mengapa metode tingkat tinggi (yaitu lebih dari 4) metode Runge-Kutta hampir tidak pernah dibahas / dipekerjakan (setidaknya setahu saya). Saya mengerti ini membutuhkan waktu komputasi yang lebih besar per langkah (misalnya RK14 dengan langkah tertanam urutan ke-12 ), tetapi apakah ada kelemahan lain dari menggunakan metode Runge-Kutta tingkat tinggi (misalnya masalah stabilitas)? Ketika diterapkan pada persamaan dengan solusi berosilasi tinggi pada skala waktu ekstrem, bukankah metode tingkat tinggi seperti itu biasanya lebih disukai?
ode
runge-kutta
Mathews24
sumber
sumber
Jawaban:
Ada ribuan makalah dan ratusan kode di luar sana menggunakan metode Runge-Kutta urutan kelima atau lebih tinggi. Perhatikan bahwa integrator eksplisit yang paling umum digunakan di MATLAB adalah ODE45, yang memajukan solusi menggunakan metode Runge-Kutta orde 5.
Contoh metode Runge-Kutta orde tinggi yang banyak digunakan
The kertas Dormand & Pangeran memberikan metode-5-order memiliki lebih dari 1700 kutipan menurut Google Scholar . Kebanyakan dari mereka adalah makalah yang menggunakan metode mereka untuk memecahkan beberapa masalah. Makalah metode Cash-Karp memiliki lebih dari 400 kutipan . Mungkin metode pesanan yang paling banyak digunakan di atas 5 adalah metode urutan ke-8 Prince-Dormand yang memiliki lebih dari 400 kutipan di Google Cendekia . Saya bisa memberikan banyak contoh lain; dan perlu diingat bahwa banyak (jika tidak sebagian besar) orang yang menggunakan metode ini tidak pernah mengutip makalah.
Perhatikan juga bahwa ekstrapolasi tingkat tinggi dan metode koreksi yang ditangguhkan adalah metode Runge-Kutta .
Metode tingkat tinggi dan kesalahan pembulatan
Jika akurasi Anda dibatasi oleh kesalahan pembulatan maka Anda harus menggunakan metode tingkat tinggi . Ini karena metode tingkat tinggi memerlukan lebih sedikit langkah (dan lebih sedikit evaluasi fungsi, meskipun ada lebih banyak evaluasi per langkah), sehingga mereka melakukan lebih sedikit kesalahan pembulatan. Anda dapat dengan mudah memverifikasi ini sendiri dengan eksperimen sederhana; ini adalah masalah pekerjaan rumah yang baik untuk kursus pertama dalam analisis numerik.
Metode urutan kesepuluh sangat berguna dalam aritmatika presisi ganda. Sebaliknya, jika yang kita miliki hanyalah metode Euler, maka kesalahan pembulatan akan menjadi masalah besar dan kita akan membutuhkan angka floating point berpresisi tinggi untuk banyak masalah di mana solver tingkat tinggi baik-baik saja.
Metode pesanan tinggi bisa sama stabil
Metode tingkat tinggi dalam mekanika langit
Anda bertanya
Anda benar sekali! Contoh utama dari ini adalah mekanika selestial. Saya bukan ahli di bidang itu. Tetapi makalah ini , misalnya, membandingkan metode untuk mekanika selestial dan bahkan tidak menganggap urutan lebih rendah dari 5. Ia menyimpulkan bahwa metode urutan 11 atau 12 sering paling efisien (dengan metode Prince-Dormand urutan 8 juga sering sangat efisien).
sumber
Selama Anda menggunakan aritmatika floating point presisi ganda standar, metode pesanan sangat tinggi tidak diperlukan untuk mendapatkan solusi dengan akurasi tinggi dalam sejumlah langkah yang masuk akal. Dalam praktiknya saya menemukan bahwa keakuratan solusi biasanya terbatas pada kesalahan relatif 1.0e-16 oleh representasi floating point presisi ganda daripada jumlah / panjang langkah-langkah yang diambil dengan RKF45.
Jika Anda beralih ke beberapa skema aritmatika floating point presisi lebih tinggi dari dua, maka menggunakan metode urutan 10 mungkin bernilai sementara.
sumber
Hanya untuk menambah jawaban sempurna Brian Borcher, banyak aplikasi kehidupan nyata mengakui ODE atau DAE yang sangat kaku. Secara intuitif, masalah-masalah ini mengalami perubahan yang tidak mulus, tiba-tiba berubah seiring waktu, jadi dimodelkan lebih baik dengan menggunakan polinomial tingkat rendah yang tersebar dengan halus pada ukuran langkah pendek, berbeda dengan polinomial tingkat tinggi yang direntangkan pada ukuran langkah yang panjang. Juga, stabilitas sering mengharuskan penggunaan metode implisit , di mana hukuman komputasi metode orde tinggi jauh lebih curam.
Lebih ketat, metode tingkat tinggi kurang stabil daripada metode tingkat rendah untuk masalah kaku. Kami memiliki misalnya, hambatan Dahlquist untuk metode multistep linier.
Pernyataan serupa (tapi jauh lebih rumit) dapat dibuat untuk kestabilan L dalam rumus RK. Dalam semua kasus, peningkatan urutan seringkali tidak selalu menghasilkan solusi yang lebih akurat. Berikut ini adalah kutipan dari makalah 1974 seminalis Prothero dan Robinson:
Untuk perawatan yang lebih teliti dari topik ini, lihat teks klasik oleh Hairer & Wanner, "Memecahkan persamaan diferensial biasa II: Kaku dan Diferensial - Masalah Aljabar", 1991.
Dalam praktiknya, persamaan kaku hampir selalu diselesaikan dengan menggunakan aturan trapesium atau rumus TR-BDF2 (fungsi ode23t dan ode23tb di MATLAB). Keduanya adalah metode orde dua implisit. Tentu saja, di mana stabilitas bukan masalah (yaitu dalam persamaan nonstiff) kita bebas memilih dari sejumlah opsi; RK45 adalah pilihan paling umum.
sumber
Pengaturan Benchmark
Dalam perangkat lunak Julia, DifferentialEquations.jl, kami menerapkan banyak metode tingkat tinggi, termasuk metode Feagin. Anda dapat melihatnya di daftar metode kami , dan kemudian ada banyak metode lain yang dapat Anda gunakan sebagai tableaus yang disediakan . Karena semua metode ini disatukan, Anda dapat dengan mudah membandingkannya. Anda dapat melihat tolok ukur yang saya miliki online di sini , dan melihat bahwa sangat mudah untuk membandingkan berbagai algoritma. Jadi, jika Anda ingin mengambil beberapa menit untuk menjalankan benchmark, lakukan. Berikut ringkasan dari apa yang keluar.
Pertama, penting untuk dicatat bahwa, jika Anda melihat masing-masing tolok ukur, Anda akan melihat bahwa kami
DP5
(Dormand-Prince Order 5) danDP8
metode kami lebih cepat daripada kode Hairer Fortran (dopri5
dandop853
), dan implementasi ini dioptimalkan dengan sangat baik . Ini menunjukkan bahwa sebagaimana dicatat di utas lain , penggunaan metode Dormand-Prince yang berlebihan adalah karena metode tersebut sudah ditulis, bukan karena mereka masih yang terbaik. Jadi perbandingan nyata antara implementasi yang paling optimal adalah antara metode Tsitorous, metode Verner, dan metode Feagin dari DifferentialEquations.jl.Hasil
Secara umum, metode pesanan yang lebih tinggi dari 7 memiliki biaya komputasi tambahan yang biasanya tidak melebihi pesanan, mengingat toleransi yang dipilih. Salah satu alasannya adalah bahwa pilihan koefisien untuk metode pesanan lebih rendah lebih dioptimalkan (mereka memiliki "koefisien kesalahan pemangkasan prinsip" kecil, yang lebih penting ketika Anda tidak kecil secara asimptopik). Anda dapat melihat bahwa dalam banyak masalah seperti di sini metode Verner Efficient 6 dan 7 bekerja sangat baik, tetapi metode seperti Verner Efficient 8 dapat memiliki kemiringan yang lebih rendah. Ini karena "keuntungan" dari tatanan yang lebih tinggi bertambah dengan toleransi yang lebih rendah, sehingga selalu ada toleransi di mana metode tatanan yang lebih tinggi akan lebih efisien.
Namun, pertanyaannya kemudian, seberapa rendah? Dalam implementasi yang dioptimalkan dengan baik, itu menjadi sangat rendah karena dua alasan. Alasan pertama adalah karena metode urutan rendah menerapkan sesuatu yang disebut FSAL (pertama sama dengan yang terakhir). Properti ini berarti bahwa metode urutan rendah menggunakan kembali evaluasi fungsi dari langkah sebelumnya di langkah berikutnya, dan dengan demikian secara efektif memiliki satu evaluasi fungsi yang kurang. Jika ini digunakan dengan benar, maka sesuatu seperti metode urutan ke-5 (Tsitorous atau Dormand-Prince) sebenarnya mengambil 5 evaluasi fungsi daripada 6 yang disarankan oleh tablo. Ini juga berlaku untuk metode Verner 6.
Alasan lainnya adalah karena interpolasi. Salah satu alasan untuk menggunakan metode pesanan sangat tinggi adalah untuk mengambil langkah lebih sedikit dan hanya menginterpolasi nilai perantara. Namun, untuk mendapatkan nilai perantara, fungsi interpolasi mungkin memerlukan lebih banyak evaluasi fungsi daripada yang digunakan untuk mengambil langkah. Jika Anda melihat metode Verner, diperlukan 8 evaluasi fungsi tambahan untuk metode Order 8 untuk mendapatkan interpolant Order 8. Banyak kali metode pesanan rendah memberikan interpolasi "gratis", misalnya, sebagian besar metode pesanan 5 memiliki interpolasi pesanan keempat gratis (tanpa evaluasi fungsi tambahan). Jadi ini berarti bahwa jika Anda memerlukan nilai perantara (yang Anda perlukan untuk plot yang bagus jika Anda menggunakan metode pesanan tinggi), ada beberapa biaya tambahan tersembunyi. Faktor dalam fakta bahwa nilai-nilai yang diinterpolasi ini sangat penting untuk penanganan kejadian dan penyelesaian persamaan diferensial keterlambatan dan Anda melihat mengapa faktor biaya interpolasi tambahan masuk.
Jadi Bagaimana Dengan Metode Feagin?
Jadi, Anda akan melihat bahwa metode Feagin secara mencurigakan hilang dari tolok ukur. Mereka baik-baik saja, tes konvergensi bekerja pada angka presisi yang berubah-ubah, dll., Tetapi untuk benar-benar membuatnya bekerja dengan baik, Anda perlu meminta toleransi yang sangat rendah. Sebagai contoh, saya menemukan dalam tolok ukur yang tidak dipublikasikan bahwa
Feagin14
kinerjanya lebih baikVern9
(urutan ke-9 Verner Efficient Method) pada toleransi seperti1e-30
. Untuk aplikasi dengan dinamika kacau (seperti pada Pleides atau masalah astrofisika 3-tubuh), Anda mungkin menginginkan jumlah akurasi ini karena ketergantungan yang sensitif (kesalahan dalam sistem kacau bertambah cepat). Namun, kebanyakan orang mungkin menghitung dengan angka floating point presisi ganda, dan saya belum menemukan patokan di mana mereka mengungguli dalam domain toleransi ini.Selain itu, tidak ada interpolant untuk mengikuti metode Feagin. Jadi apa yang saya lakukan adalah hanya menempatkan interpolasi Hermite urutan ketiga pada mereka sehingga ada satu (dan itu bekerja dengan sangat baik). Namun, jika tidak ada fungsi interpolasi standar, Anda dapat melakukan metode Hermite rekursif (gunakan interpolasi ini untuk mendapatkan titik tengah, kemudian lakukan interpolasi urutan ke-5, dll.) Untuk mendapatkan interpolasi urutan tinggi, tetapi ini sangat mahal dan hasilnya interpolasi tidak harus memiliki istilah kesalahan pemangkasan prinsip yang rendah (jadi bagus jika
dt
benar-benar kecil, yang merupakan kebalikan dari kasus yang kita inginkan!). Jadi jika Anda membutuhkan interpolasi yang benar-benar bagus untuk mencocokkan keakuratan Anda, Anda harus setidaknya kembali ke sesuatu sepertiVern9
.Catatan Tentang Ekstrapolasi
Perhatikan bahwa metode ekstrapolasi hanyalah algoritma untuk menghasilkan metode Runge-Kutta pesanan acak. Namun, untuk pesanan mereka, mereka mengambil lebih banyak langkah daripada yang diperlukan dan memiliki koefisien kesalahan pemangkasan prinsip tinggi, sehingga mereka tidak seefisien metode RK yang dioptimalkan dengan baik pada pesanan tertentu. Tetapi mengingat analisis sebelumnya, ini berarti bahwa ada domain dengan toleransi sangat rendah di mana metode ini akan melakukan lebih baik daripada metode RK "dikenal". Tapi di setiap benchmark yang saya jalankan, sepertinya saya belum mendapatkan yang terendah.
Catatan Tentang Stabilitas
Pilihannya benar-benar tidak ada hubungannya dengan masalah stabilitas. Bahkan, jika Anda pergi melalui tableaus DifferentialEquations.jl (Anda bisa hanya
plot(tab)
untuk daerah stabilitas) Anda akan melihat bahwa sebagian besar metode memiliki daerah stabilitas yang mencurigakan serupa. Ini sebenarnya pilihan. Biasanya ketika mendapatkan metode, penulis biasanya melakukan hal berikut:Kenapa kondisi terakhir? Yah, karena metode itu cenderung selalu stabil dengan cara pilihan langkah-langkah adaptif yang dikontrol PI dilakukan, jadi itu bar yang bagus untuk wilayah stabilitas "cukup baik". Jadi bukan kebetulan kalau daerah stabilitas cenderung sama.
Kesimpulan
Ada pengorbanan dalam setiap pilihan metode. Metode RK urutan tertinggi tidak seefisien pada toleransi yang lebih rendah baik karena lebih sulit untuk mengoptimalkan pilihan koefisien, dan karena jumlah fungsi mengevaluasi senyawa (dan tumbuh lebih cepat ketika interpolasi terlibat). Namun, jika toleransi menjadi cukup rendah mereka menang, tetapi toleransi yang diperlukan bisa jauh di bawah aplikasi "standar" (yaitu benar-benar hanya berlaku untuk sistem yang kacau).
sumber