Що означає "симплектичний" стосовно чисельних інтеграторів, і чи використовує їх замість SciPy?


25

У цьому коментарі я написав:

... інтегратор SciPy за замовчуванням, для якого я припускаю, що він використовує лише симплектичні методи.

в якому я замислююся про SciPy odeint, який використовує або "не жорсткий (метод Адамса)", або "жорсткий (BDF) метод". За даними джерела :

def odeint(func, y0, t, args=(), Dfun=None, col_deriv=0, full_output=0,
           ml=None, mu=None, rtol=None, atol=None, tcrit=None, h0=0.0,
           hmax=0.0, hmin=0.0, ixpr=0, mxstep=0, mxhnil=0, mxordn=12,
           mxords=5, printmessg=0):
    """
    Integrate a system of ordinary differential equations.

    Solve a system of ordinary differential equations using lsoda from the
    FORTRAN library odepack.

    Solves the initial value problem for stiff or non-stiff systems
    of first order ode-s::
        dy/dt = func(y, t0, ...)
    where y can be a vector.
    """

Ось приклад, коли я поширюю орбіту супутника навколо Землі протягом трьох місяців, щоб показати, що він переробляється так, як очікувалося.

Я вважаю, що несимплектичні інтегратори мають небажану властивість: вони, як правило, не заощаджують енергію (або інші величини) і тому небажані, наприклад, в орбітальній механіці. Але я не зовсім впевнений, що саме робить симплектичний інтегратор симплектичним.

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

І чи є моя підозра, що odeintвикористовують лише симплектичні інтегратори?


4
Як сильне правило, слід сподіватися, що інтегратор чорного поля є симплектичним, якщо він вимагає від вас розділити рівняння рівняння та імпульсу.
оригімбо

@origimbo Дякую Це так, і схоже odeint, це Python wrappoer для досить старих, встановлених і добре посилаються вихідних кодів (відредагований питання, посилання ODEPACK та LSODA), хоча я, звичайно, допускаю використання його в режимі чорної скриньки. Мій зв'язаний приклад показує, що вектор стану 6D складається з трьох положень і трьох швидкостей.
uhoh

11
Інтегратори ODE в ODEPACK та LSODA не є симплектичними інтеграторами.
Брайан Борчерс

2
Ось відпрацьований приклад порівняння двох дуже простих вирішувачів: Ейлера та Симплектичного Ойлера: idontgetoutmuch.wordpress.com/2013/08/06/… .
idontgetoutmuch

2
Книга Хайрера, Норшета і Ваннера дає хороше пояснення симплектичних методів. Погляньте на малюнку 16.1 , зокрема, і цифри тут .
JM

Відповіді:


47

Дозвольте почати з виправлень. Ні, odeintнемає симплектичних інтеграторів. Ні, симплектична інтеграція не означає збереження енергії.

Що означає симплектик і коли його слід використовувати?

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

O(Δtn)n з істинної траєкторії. Потім виникає лінійний дрейф через чисельну похибку цієї траєкторії в часі. Звичайні інтегратори, як правило, мають квадратичний (або більше) дрейф, і не мають жодних хороших глобальних гарантій щодо цього фазового просторового шляху (просто локального).

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

введіть тут опис зображення

Це було вирішено за допомогою симплектичного інтегратора 6-го порядку від Kahan та Li з DifferentialEquations.jl . Видно, що енергія не є точно збереженою, але її зміна залежить від того, наскільки віддалений збурений колектор розв'язку від справжнього колектора. Але оскільки числове рішення саме по собі розташоване на симплектичному колекторі, воно, як правило, майже точно періодичне (з деяким лінійним числовим дрейфом, який ви можете бачити), що робить це дуже добре для довгострокової інтеграції. Якщо ви зробите те саме з RK4, ви можете отримати катастрофу:

введіть тут опис зображення

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

Це підкреслює справжню причину вибору симплектичних інтеграторів: симплектичні інтегратори добре підходять для тривалих інтеграцій щодо проблем, що мають симплектичну властивість (Гамільтонові системи) . Тож давайте пройдемося через кілька речей. Зауважте, що вам не завжди потрібні симплектичні інтегратори навіть із симплектичною проблемою. У цьому випадку адаптивний метод Runge-Kutta 5-го порядку може зробити непоганий. Ось Tsit5:

введіть тут опис зображення

Зауважте дві речі. По-перше, він отримує досить хорошу точність, що ви не можете побачити фактичний дрейф у графіці фазового простору. Однак з правого боку ви бачите, що є цей дрейф енергії, і тому, якщо ви робите досить довгу інтеграцію, цей метод не буде робити так само, як метод рішення з періодичними властивостями. Але це викликає питання, як це оцінює ефективність порівняно з просто інтегруванням надзвичайно точно? Ну, це трохи менш певно. У DiffEqBenchmarks.jl ви можете знайти деякі орієнтири, які досліджують це питання. Наприклад, цей зошитрозглядає енергетичну помилку проти часу виконання в системі рівнянь Гамільтонова з чотириразової моделі Босона і показує, що якщо ви хочете по-справжньому високої точності, то навіть для досить тривалих часів інтеграції ефективніше просто використовувати RK високого порядку або Runge-Kutta Nystrom ( RKN) метод. Це має сенс, тому що для задоволення симплектичної властивості інтегратори відмовляються від певної ефективності, і в значній мірі доводиться фіксувати крок часу (є деякі дослідження, які просуваються до останнього, але це не дуже далеко).

Окрім того, зауважте від обох цих зошитів, що ви також можете просто взяти стандартний метод і спроектувати його назад у колектор рішення кожного кроку (або кожні кілька кроків). Саме так роблять приклади, що використовують зворотний виклик DifferentialEquations.jl ManifoldProjection . Ви бачите, що закони про збереження гарантій підтримуються, але із додатковими витратами на вирішення неявної системи кожен крок. Ви також можете використовувати повністю неявні вирішувачі ODE або матриці сингулярних мас для додавання рівнянь збереження, але кінцевим результатом є те, що ці методи є більш обчислювально-затратними як компроміс.

Отже, підсумовуючи, клас проблем, за якими потрібно досягти симплектичного інтегратора, - це такі проблеми, які мають рішення на симплектичному колекторі (Гамільтонові системи), куди ви не хочете вкладати обчислювальні ресурси, щоб мати дуже точну (толерантність <1e-12) рішення та не потребує точної енергії / тощо. збереження. Це підкреслює, що мова йде про властивості довготривалої інтеграції, тому не слід просто стикатися з усіма ними вольно-неволі, як це пропонує деякі літератури. Але вони все ще є дуже важливим інструментом у багатьох сферах на зразок астрофізики, де у вас є тривалий час інтеграції, які потрібно вирішувати досить швидко, не маючи абсурдної точності.

Де я можу знайти симплектичні інтегратори? Які існують симплектичні інтегратори?

Зазвичай існує два класи симплектичних інтеграторів. Існують симплектичні інтегратори Runge-Kutta (це ті, що показані у наведених вище прикладах), і є неявні методи Runge-Kutta, які мають симплектичну властивість. Як згадує @origimbo, симплектичні інтегратори Runge-Kutta вимагають надати їм розподілену структуру, щоб вони могли окремо обробляти положення та імпульси. Однак, всупереч коментарю, неявні методи Runge-Kutta є симплектичними, не вимагаючи цього, а натомість потребують вирішення нелінійної системи. Це не так вже й погано, тому що якщо система не є жорсткою, цю нелінійну систему можна вирішити за допомогою функціональної ітерації або прискорення Андерсона, але симплектичні методи RK все ж, мабуть, віддадуть перевагу ефективності (вона '

Зважаючи на це , odeint не має методів жодної з цих сімей , тому це не гарний вибір, якщо ви шукаєте симплектичних інтеграторів. У місті Фортран на сайті Хайрера є невеликий набір, який ви можете використовувати . Математика має кілька вбудованих . Розв'язувачі ODE GSL мають неявні точкові інтегратори RK Гаусса, які IIRC є симплектичними, але це лише єдина причина використовувати методи GSL.

Але найбільш повний набір симплектичних інтеграторів можна знайти в DifferentialEquations.jl в Джулії (нагадаємо, це було використано для зошитів вище). Перелік доступних симплектичних методів Рунге-Кутти знаходиться на цій сторінці, і ви помітите, що неявний метод середини також є симплектичним (неявний метод Рупе-Кутта-Трапеція вважається "майже симплектичним", оскільки він оборотний). Він не тільки має найбільший набір методів, але і є відкритим кодом (ви можете побачити код та його тести мовою високого рівня) та має безліч орієнтирів . Хороший вступний зошит для його використання для вирішення фізичних проблем - це зошит з підручниками. Але, звичайно, рекомендується почати з пакетом через перший підручник з ODE .

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


10
З цією відповіддю я, здається, потрапив у джекпот Stack Exchange! Це ідеальна відповідь для мене, оскільки я розумію деякі з них одразу і ті частини, які не залишають мене в тривозі читати далі. Я дуже вдячний за час, який ви витратили на ретельне джерело цієї відповіді, а також включення інших корисних та повчальних посилань.
uhoh

Перш ніж розбиратися в математичних деталях, ми могли б приблизно сказати, що симплектичний означає збереження об'єму , чи не так?
Мігель

2
FTR, тому що адаптивна Runge-Kutta 5-го порядку працює набагато краще, ніж RK4, в тому, що вона має більш високий порядок, а в тому, що вона вибирає більш відповідні розміри кроків. Причина, по якій RK4 працює настільки погано, головним чином, що розмір кроку не надто високий у перигей; той самий вирішувач з розміром половини кроку дав би набагато краще рішення. (Просто, це витратить багато часу на вирішення орбіти тонко навколо апогея, де це взагалі не потрібно.)
Ліворуч близько

1
відмінна експозиція. Як побічне запитання: ОП починається з посилання на Python - чи рекомендовані навчальні програми / пакети Python уздовж рядків зв'язаних прикладів Julia?
Quetzalcoatl

1
Єдиний пакет Python, про який я знаю для таких типів інтеграторів, - diffqpy , де він не зафіксований у README, але ви можете отримати доступ до всіх цих самих методів і переписати це в Python, використовуючи цей пакет.
Кріс Ракаукас

14

pqH(p,q)

dqdt=+Hp
dpdt=Hq.
H
p(t),q(t)=ϕt(p(t0),q(t0))
dpdqpqє одновимірними, ви можете подумати про це так, що говорять про те, що область всередині закритих кривих фазового простору зберігається. Це забезпечує всі види приємних властивостей стійкості, оскільки «кулі» траєкторій повинні залишатися «близько» один до одного.

З точки зору чисельності, симплектичний інтегратор діє таким же чином, також зберігаючи цю область / дві форми. У свою чергу це означає, що існує збережений "чисельний гамільтоніан" (який може бути [читати "не є] таким самим). Зауважте, що стабільність не така, як точність, тому більшість переваг симплектичних методів виникають при інтеграції дуже довго (наприклад, ваш метод може швидко розміщувати супутник на неправильній стороні Землі, при цьому ніколи не дозволяючи йому розпадатися на це).


Дякую за це! Зараз я буду використовувати слова, які перевищують рівень оплати. n-кулі траєкторій піддаються більшій небезпеці, коли вони знаходяться поруч з біфуркаціями, такими як у моделях із 3-х тіл. пор. Doedel та ін. 2007, Міжнар. J. Біфуркація і хаос, v 17, вип. 8 (2007) 2625–2677 Як я це зробив? Також ieec.cat/hosted/web-libpoint/papers/…
uhoh

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

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

22

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