Числові дані: Як перенормувати наступні ODE


9

Це питання детальніше про те, як чисельно вирішити проблему.

У невеликому проекті я хотів імітувати коорбітальний рух Януса та Епіметея. Це в основному три проблеми з тілом. Я вибираю Сатурн, щоб він був зафіксований у походженняr1 і r2бути векторами розташування януса та епіметею відповідно. Оскільки ефект виникає тоді, коли Янус та Епіметей знаходяться дуже близько один від одного, я вибрав відносні координати для кращого дозволу, тобтоr=r1-r2 і R=r1+r2. Тепер я отримую такі рівняння руху:

г2гт2(Rr)=-Г(м2±м1)RR3-4МГ(r+R(r+R)3r-R(r-R)3)

де відповідає масам лун, M - маса Сатурна, G - гравітаційна константа. Проблема виникає, коли я намагаюся вирішити це чисельно. Треба мати справу зі значеннями абсолютно різних величин, тобто M \ sim e ^ {28} і m_i \ sim e ^ {17} . І r , R знаходяться в регіонах від 0 до 150 000.мiМГМе28мiе17rR

Якщо чесно, я не впевнений, що це місце для обговорення таких числових проблем.

Більше інформації:

Код написаний в Matlab, і я використовую стандартний вирішувач ODE для отримання результату. Однак це руйнується, оскільки розмір кроку не може бути зменшений за допомогою машинної точності. (Я вважаю, що це не дивно, оскільки доводиться мати справу з уже згаданими порядками).


2
Ви проводите це моделювання в одиницях СІ? Як мінімум, слід розділити все на деякий коефіцієнт Гм2 , щоб ви могли усунути кілька порядків.

Привіт, я це, але все ще не працює ... Ті ж проблеми трапляються, як і раніше. :(

Ви повинні встановити свою одиницю маси до однієї з маси Місяця, а одиниці довжини / часу, щоб встановити речі на 1. Нічого не повинно бути менше 1/100, якщо ви це добре запишете. Немає потреби у вирішенні без рецепта. Напишіть код, щоб зробити це самостійно, де ви керуєте кроком. Поломки в ступінчастості з цими типами потенціалів можуть статися при зіткненнях, де вирішувач намагатиметься зменшити ступінь зменшення до конвергенції, а при зіткненні немає конвергенції. Вам потрібно переконатися, що орбіти не колінеарні, тому вам потрібно переглянути моделювання. Ви не можете отримати відповідь, як є.
Рон Меймон

1
Будь ласка, уникайте скорочень у назві. DGL = Differentialgleichung?

Який стандартний вирішувач ODE ви використовуєте?
Джефф Оксберрі

Відповіді:


2

Ваш поточний підхід руйнує чисельну стабільність; адже ви, мабуть, таким чином втрачаєте дозвіл.

Візьміть за координати для кожного супутника його змінні Кеплера та кут площини, що містить положення супутника, швидкість та початок. Диференціальні рівняння за відсутності взаємодії між супутниками тоді тривіально прості, і лише взаємодія стає дещо ускладненою. Оскільки взаємодія є крихітною, якщо супутники далекі, отримана динаміка повинна бути чисельно стабільною.


2

Замість використання "класичного" (жорсткого) ODE-рішення, ви можете використовувати спеціалізовані алгоритми для геометричної чисельної інтеграції. Дивіться, наприклад, цю книгу та коди ВНД, які ви можете знайти на веб-сайті Ернста Хайрера .


0

Як щодо того, якщо у вас є три етапи моделювання:

  1. оновити позицію Януса шляхом обчислення сили Янус - Сатурн.
  2. оновити положення Епіметей шляхом обчислення сили Епіметей - Сатурн.
  3. оновити положення Януса та Епіметея шляхом обчислення сили Янус - Епіметей.

Можливо, використовуючи більш точні часові кроки для №3.

Я не впевнений, чи допоможе це. Я припускаю, що справжня проблема полягає в тому, що величина сили різняться у випадку Місяць - Місяць та Місяць - Сатурн, за винятком випадків, коли місяці близькі?

Як варіант:

  1. якщо місяці закриваються, обчисліть приблизну луну - силу Сатурна, використовуючи їх центр векторного маси та оновлюйте обидві позиції одним і тим же вектором.
  2. якщо вони далеко один від одного, оновіть їх окремо.
  3. як і раніше.

Удачі!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.