Saya memiliki ODE:
u ( 0 ) = - 1
Saya tahu bahwa ODE khusus ini kaku, analitis. Saya juga tahu bahwa jika kita menggunakan metode loncatan waktu (maju) yang eksplisit (Euler, Runge-Kutta, Adams, dll.), Metode tersebut akan menghasilkan kesalahan yang sangat besar jika langkah waktu terlalu besar. Jadi, saya punya dua pertanyaan:
Apakah ini cara ODE kaku ditentukan, secara umum, ketika ekspresi analitik untuk istilah kesalahan tidak tersedia atau tidak dapat diturunkan?
Secara umum, ketika ODE kaku, bagaimana cara menentukan timestep "cukup kecil"?
Jawaban:
Untuk menjawab pertanyaan Anda:
Sejauh yang saya tahu, dalam praktiknya, jika metode eksplisit membutuhkan langkah waktu yang sangat kecil relatif terhadap skala waktu minat Anda (lihat jawaban atas pertanyaan ini tentang apa artinya ODE menjadi kaku ) untuk menghasilkan hasil yang akurat, maka untuk semua maksud dan tujuan, masalah Anda kaku. Untuk menentukan persyaratan ukuran langkah, bergantung pada salah satu dari banyak perpustakaan di luar sana yang ditulis oleh para ahli (paket MATLAB adalah salah satu contoh, juga SUNDIALS, VODE, DASPK, DASSL, LSODE, dll.), Yang memiliki heuristik loncatan waktu adaptif. Manual SUNDIALS menjelaskan aturan keputusan yang mereka gunakan untuk menentukan ukuran langkah waktu yang diambil paket, untuk memberi Anda contoh aturan yang digunakan dalam praktik.
Sekali lagi, saya akan menggunakan perpustakaan dengan waktu adaptif melangkah dalam praktek, karena lebih efisien untuk melakukannya. Namun, jika Anda mengkodekan metode sendiri, menggunakan ukuran langkah tetap, jika Anda melihat osilasi besar, atau solusi Anda "meledak", maka Anda akan curiga bahwa langkah waktu Anda terlalu besar, dan menguranginya. Ulangi sampai Anda mendapatkan solusi numerik yang berperilaku cukup baik. Buku pelajaran seperti Ascher dan Petzold dan Hairer dan Wanner memiliki contoh-contoh bagus tentang fenomena ini.
sumber
Cara yang lebih baik untuk melihatnya adalah bahwa untuk masalah yang kaku, setiap perhitungan eksplisit yang stabil mengarah ke kesalahan yang jauh lebih kecil dari toleransi kesalahan yang diperlukan .
Ada banyak metode yang baik untuk secara otomatis mendeteksi kekakuan menggunakan skema eksplisit, terutama pasangan Runge-Kutta yang tertanam. Lihat misalnya:
Dalam contoh kedua faleichik, ketika ukuran langkah dikurangi, orang akan melihat penurunan dramatis yang tiba-tiba pada tingkat ke bawah jauh di bawah toleransi yang diinginkan khas sebagai ambang batas waktu yang stabil dilintasi. Jadi penduga kesalahan yang baik memang akan mengungkapkan kekakuan masalah. Dalam masalah pertama, kesalahan yang diperoleh dengan ukuran langkah yang stabil akan berada dalam kisaran toleransi yang diinginkan, yang menunjukkan ketidak-kekakuan.
Catat sebagai konsekuensi bahwa masalah menjadi tidak kaku jika diperlukan toleransi kesalahan yang cukup ketat.
sumber
1. Bisakah kita secara numerik mendeteksi kekakuan hanya dengan menerapkan metode eksplisit?
Jadi, apakah masalahnya kaku? Jawabannya adalah TIDAK ! Langkah kecil di sini diperlukan untuk mereproduksi osilasi solusi dengan benar .
Apakah masalah ini kaku? Ya ! Kami telah membuat langkah sangat kecil untuk mereproduksi solusi yang berubah sangat lambat. Ini tidak masuk akal! Besarnya langkah waktu di sini dibatasi oleh sifat stabilitas Euler eksplisit .
Masalahnya adalah
Kesimpulan: informasi tentang timesteps dan kesalahan yang sesuai tidak cukup untuk mendeteksi kekakuan. Anda juga harus melihat solusi yang diperoleh. Jika bervariasi perlahan-lahan dan ukurannya sangat kecil, masalahnya kemungkinan besar akan kaku. Jika solusinya berosilasi dengan cepat dan Anda memercayai teknik estimasi kesalahan Anda maka masalah ini tidak kaku.
2. Bagaimana menentukan stepsize maksimum yang memungkinkan untuk mengintegrasikan masalah kaku dengan metode eksplisit?
Jika Anda menggunakan beberapa pemecah eksplisit kotak hitam dengan kontrol langkah otomatis, maka Anda tidak perlu melakukan apa pun: perangkat lunak akan mengambil langkah yang diperlukan secara adaptif.
Tentu saja analisis semacam itu sebagian besar berlaku untuk masalah linier dengan spektrum yang diketahui. Untuk masalah yang lebih praktis, kita harus mengandalkan metode numerik deteksi kekakuan (lihat referensi dan komentar dalam jawaban lain).
sumber