Numerik: Bagaimana cara saya melakukan renormalisasi ODE berikut

9

Pertanyaan ini lebih lanjut tentang cara mengatasi masalah secara numerik.

Dalam sebuah proyek kecil saya ingin mensimulasikan gerakan coorbital Janus dan Epimetheus. Ini pada dasarnya adalah masalah tiga tubuh. Saya memilih Saturnus untuk diperbaiki pada titik asal, misalkan r1 dan r2 menjadi vektor lokasi janus dan epimetheus, masing-masing. Karena efeknya terjadi ketika Janus dan Epimetheus sangat berdekatan, saya memilih koordinat relatif untuk resolusi yang lebih baik, yaitu r=r1r2 dan R=r1+r2 . Sekarang saya mendapatkan persamaan gerak berikut:

d2dt2(Rr)=G(m2±m1)RR34MG(r+R(r+R)3rR(rR)3)

di mana sesuai dengan massa bulan, M adalah massa Saturnus dan G adalah konstanta gravitasi. Masalah muncul ketika saya mencoba menyelesaikan ini secara numerik. Kita harus berurusan dengan nilai-nilai dengan magnitudo yang sama sekali berbeda, yaitu M \ sim e ^ {28} dan m_i \ sim e ^ {17} . Dan r , R berada di wilayah 0 hingga 150.000. M G M e 28 m ie 17 r RmiMGMe28mie17rR

Sejujurnya saya tidak yakin apakah ini adalah forum tempat untuk membahas masalah angka tersebut.

Informasi Lebih Lanjut:

Kode ditulis dalam Matlab dan saya menggunakan pemecah ODE standar untuk mendapatkan hasilnya. Namun ini mogok karena ukuran langkah tidak dapat dikurangi di bawah presisi mesin. (Saya menemukan ini tidak mengherankan karena kita harus berurusan dengan urutan besarnya yang telah disebutkan).

GertVdE
sumber
2
Apakah Anda menjalankan simulasi ini dalam satuan SI? Minimal, Anda harus membagi semuanya melalui beberapa faktor , sehingga Anda dapat menghilangkan beberapa urutan besarnya. Gm2
Hai, saya ini, tetapi masih tidak berfungsi ... Masalah yang sama terjadi seperti sebelumnya. :(
Anda harus mengatur satuan massa Anda ke salah satu massa bulan, dan satuan panjang / waktu Anda untuk mengatur segalanya menjadi 1. Tidak ada yang lebih kecil dari 1/100 jika Anda menulisnya dengan baik. Tidak perlu seorang pemecah over-the-counter. Tulis kode untuk melakukan ini sendiri, di mana Anda mengontrol stepsize. Kerusakan dalam stepsize dengan tipe-tipe potensial ini dapat terjadi pada tabrakan, di mana pemecah akan mencoba mengurangi stepsize sampai konvergensi, dan pada collision tidak ada konvergensi. Anda perlu memastikan bahwa orbitnya tidak collinear, jadi Anda perlu melihat simulasi. Anda tidak bisa mendapatkan jawaban apa pun.
Ron Maimon
1
Harap hindari singkatan dalam judul. DGL = Differentialgleichung?
Apa pemecah ODE standar yang Anda gunakan?
Geoff Oxberry

Jawaban:

2

Pendekatan Anda saat ini merusak stabilitas numerik; sebenarnya Anda mungkin kehilangan resolusi dengan cara ini.

Ambillah sebagai koordinat untuk setiap satelit, variabel Kepler dan sudut pesawat yang berisi posisi satelit, kecepatan, dan asal. Persamaan diferensial dengan tidak adanya interaksi antara satelit kemudian sederhana, dan hanya interaksi menjadi agak rumit. Karena interaksinya kecil jika satelit berada jauh, dinamika yang dihasilkan harus stabil secara numerik.

Arnold Neumaier
sumber
2

Alih-alih menggunakan pemecah ODE "klasik" (kaku), Anda dapat menggunakan algoritma khusus untuk integrasi numerik geometris. Lihat misalnya buku ini dan kode-kode GNI yang dapat Anda temukan di situs web Ernst Hairer .

GertVdE
sumber
0

Bagaimana jika Anda memiliki tiga langkah dalam simulasi Anda:

  1. memperbarui posisi Janus dengan menghitung kekuatan Janus - Saturnus.
  2. memperbarui posisi Epimetheus dengan menghitung kekuatan Epimetheus - Saturnus.
  3. memperbarui posisi Janus dan Epimetheus dengan menghitung kekuatan Janus - Epimetheus.

Mungkin menggunakan timesteps yang lebih baik untuk # 3.

Saya tidak yakin apakah ini akan membantu. Saya kira masalah sebenarnya adalah bahwa besarnya gaya berbeda di bulan - bulan dan bulan - kasus Saturnus, kecuali jika bulan dekat?

Kalau tidak:

  1. jika bulan tertutup, hitung perkiraan bulan - gaya Saturnus menggunakan pusat vektor massa dan perbarui kedua posisi dengan vektor yang sama.
  2. jika mereka berjauhan, perbarui secara terpisah.
  3. seperti sebelumnya.

Semoga berhasil!


sumber