Sayısal: Aşağıdaki ODE'yi nasıl yeniden düzenleyebilirim?


9

Bu soru, bir sorunun sayısal olarak nasıl ele alınacağıyla ilgilidir.

Küçük bir projede Janus ve Epimetheus'un ortak hareketini simüle etmek istedim. Bu temelde üç beden problemidir. Satürn'ün başlangıç ​​noktasında sabitlenmesini seçiyorumr1 ve r2sırasıyla janus ve epimetheus'un yer vektörleri olabilir. Etki Janus ve Epimetheus birbirine çok yakın olduklarında ortaya çıktığından, daha iyi bir çözünürlük için göreceli koordinatlar seçtim, yanir=r1r2 ve R=r1+r2. Şimdi aşağıdaki hareket denklemlerini alıyorum:

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

burada ayların kütlelerine karşılık gelir, Satürn kütlesidir ve yerçekimi sabiti. Bu sorunu sayısal olarak çözmeye çalıştığımda sorun ortaya çıkıyor. Tamamen farklı büyüklükteki değerlerle uğraşmak gerekir, yani ve . Ve , , 0 ila 150.000 arasındaki bölgelerdedir.miMGMe28mie17rR

Dürüst olmak gerekirse, bu tür sayısal sorunları tartışmak için bir yer forum olup olmadığından emin değilim.

Daha fazla bilgi:

Matlab'da kod yazılmıştır ve sonucu elde etmek için standart bir ODE çözücü kullanıyorum. Bununla birlikte, bu adım bozulur, çünkü basamak hassasiyeti makine adımı altında küçültülemez. (Bunu şaşırtıcı bulmuyorum çünkü daha önce bahsedilen büyüklük sıralarıyla uğraşmak gerekiyor).


2
Bu simülasyonu SI birimlerinde mi çalıştırıyorsunuz? En azından, birkaç büyüklük ortadan kaldırabilmeniz için her şeyi bir miktar ile bölmelisiniz . Gm2

Merhaba, ben, ama hala çalışmıyor ... Daha önce olduğu gibi aynı sorunlar ortaya çıkıyor. :(

Kütle biriminizi ayın kütlelerinden birine ve uzunluk / zaman biriminizi 1 olarak ayarlamak için ayarlamanız gerekir. İyi yazarsanız hiçbir şey 1/100'den küçük olamaz. Tezgah üstü çözücüye gerek yoktur. Bunu kendiniz yapmak için kod yazın, burada stepsize kontrol edin. Bu tür potansiyellerle kademeli olarak arızalar, çözücünün yakınsamaya kadar kademeli boyutu azaltmaya çalışacağı çarpışmalarda ortaya çıkabilir ve çarpışmada yakınsama olmaz. Yörüngelerin eşdoğrusal olmadığından emin olmanız gerekir, bu yüzden simülasyonu görüntülemeniz gerekir. Olduğu gibi bir cevap alamazsınız.
Ron Maimon

1
Lütfen başlığında kısaltmalar kullanmaktan kaçının. DGL = Diferansiyelgleichung?

Hangi standart ODE çözücüsünü kullanıyorsunuz?
Geoff Oxberry

Yanıtlar:


2

Mevcut yaklaşımınız sayısal istikrarı bozar; aslında çözünürlüğü muhtemelen bu şekilde kaybedersiniz.

Her uydu için Kepler değişkenlerini ve uydunun konumunu, hızını ve başlangıç ​​noktasını içeren düzlem açısını koordinat olarak alın. Uydular arasında etkileşimin olmadığı diferansiyel denklemler önemsiz derecede basittir ve sadece etkileşim biraz karmaşık hale gelir. Uydular uzaktaysa etkileşim çok küçük olduğundan, ortaya çıkan dinamikler sayısal olarak kararlı olmalıdır.



0

Simülasyonunuzda üç adımınız varsa:

  1. Janus - Satürn kuvvetini hesaplayarak Janus pozisyonunu güncelleyin.
  2. Epimetheus - Satürn kuvvetini hesaplayarak Epimetheus konumunu güncelleyin.
  3. Janus - Epimetheus kuvvetini hesaplayarak Janus ve Epimetheus pozisyonunu güncelleyin.

# 3 için daha ince zaman hızları kullanmak mümkündür.

Bunun yardımcı olup olmayacağından emin değilim. Asıl sorun, ayın - ay ve ay - Satürn davasında kuvvetin büyüklüğünün farklı olması, ancak uyduların yakın olması dışında mı?

Alternatif:

  1. Eğer aylar kapanırsa, yaklaşık bir ay hesaplayın - kütle vektör merkezlerini kullanarak Satürn kuvveti ve her iki pozisyonu da aynı vektörle güncelleyin.
  2. birbirinden uzaklarsa, ayrı olarak güncelleyin.
  3. eskisi gibi.

İyi şanslar!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.