Metode numerik untuk ODE rs diskontinyu

15

apa metode canggih untuk solusi numerik ODE dengan sisi kanan terputus-putus? Saya sebagian besar tertarik sedikit demi sedikit fungsi sisi kanan, misalnya tanda.

Saya mencoba memecahkan persamaan dari tipe berikut:

x˙=vv˙={(|Fexternal||Fgesekan|)tanda(Fluar):|Fluar|<|Fgesekan|0:jika tidak
Andrey Shevlyakov
sumber
Hai @AndreyShevlyakov dan selamat datang di Scicomp! Apakah ada kelas ODE tertentu yang Anda minati?
Paul
Hai Paul! Ya, saya saat ini mencoba menerapkan semacam model gesekan stick-slip.
Andrey Shevlyakov
Bisakah Anda memasukkan persamaan yang ingin Anda pecahkan dalam pertanyaan Anda? Ini akan membantu mempersempit metode tertentu yang berlaku untuk masalah Anda.
Paul
Saya telah menambahkan contoh ke posting
Andrey Shevlyakov
1
Ketika saya bekerja pada ACSL, itu termasuk root-finder, jadi Anda bisa membuatnya mencari waktu ketika kecepatan sama dengan nol, dan kemudian mulai baru dari titik itu dengan rhs baru.
Mike Dunlavey

Jawaban:

13

Lihat buku baru David Stewart (2011) tentang topik ini, Dinamika dengan Ketimpangan: Dampak dan Kendala Keras . Masalah gesekan Coulomb disebutkan beberapa kali dalam bab analisis.

Bab 8 dikhususkan untuk metode numerik untuk ODE dan DAE yang tidak mulus. Ini sebagian besar menganjurkan metode Runge-Kutta sepenuhnya implisit dengan perlakuan khusus ketidakmampuan. Catatan Bagian 8.4.4 yang menunjukkan bahwa jika Anda tidak secara akurat menemukan titik-titik ketidaklancaran, semua metode menurunkan ke urutan pertama akurasi , oleh karena itu Euler implisit (dengan modifikasi untuk non- moothness) populer dalam praktiknya. Selain itu, solusi dari masalah dengan ketidaksetaraan terbatas dimensi umumnya tidak piecewise halus, oleh karena teori hanya menyediakan O ( h 1 / 2 ) konvergensi, meskipun dalam prakteknya, O ( h )HAI(h)HAI(h1/2)HAI(h) sering diamati.

Jed Brown
sumber
Terima kasih banyak! Apakah Anda tahu jika ada implementasi yang tersedia di suatu tempat?
Andrey Shevlyakov
Bukan yang saya tahu, tetapi implementasi skema sederhana seharusnya tidak terlalu sulit jika Anda memiliki solver untuk ketidaksetaraan variasi statis.
Jed Brown
2

Seperti yang sudah ditunjukkan Mike Dunlavey dalam komentar, ini sering dilakukan dengan menggunakan apa yang disebut fungsi zero-crossing , yaitu fungsig(t,x(t))R salib itu dari >0 untuk <0 (atau sebaliknya) ketika RHS memiliki diskontinuitas.

Misalnya jika Anda memiliki massa bergerak dengan blok maka jarak antara massa dan blok dapat digunakan sebagai fungsi zero-crossing.

Banyak pemecah ODE (mis. SUNDIALS CVODE) secara otomatis memeriksa apakah ada fungsi zero-crossing yang mengubah tandanya selama langkah terakhir kali. Jika demikian, maka metode pencarian root digunakan untuk menentukan lokasi yang tepat dari root. Pemecah kemudian dapat dimulai kembali pada posisi tertentu. Ini dapat dilakukan secara otomatis oleh solver itu sendiri atau secara manual oleh kode panggilan.

Florian Brucker
sumber
Untuk tujuan pencarian: orang juga dapat berbicara tentang "lokasi acara"; Hairer / Nørsett / Wanner memiliki diskusi yang bagus tentang ini.
JM