Чи можу я використовувати явну схему крокового часу для визначення чисельності, чи ODE жорсткий?


10

У мене ODE:

у'=-1000у+сiн(т)
у(0)=-11000001

Я знаю, що цей конкретний ODE жорсткий, аналітичний. Я також знаю, що якщо ми будемо використовувати явний (вперед) метод крокового часу (Ейлер, Рунге-Кутта, Адамс тощо), метод повинен повертати дуже великі помилки, якщо крок часу занадто великий. Отже, у мене є два питання:

  1. Це, як визначаються жорсткі ODE, взагалі, коли аналітичний вираз для терміна помилки не є доступним або виведеним?

  2. Як правило, коли ODE є жорстким, як я можу визначити "досить малий" часовий крок?


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

Відповіді:


6

Щоб відповісти на ваші запитання:

  1. Наскільки мені відомо, на практиці, якщо явні методи вимагають надзвичайно малих часових кроків щодо вашої часової шкали інтересів (див. Відповіді на це питання про те, що означає для ODE бути жорстким ), щоб отримати точні результати, то для у всіх намірах і цілях, ваша проблема жорстка. Щоб визначити вимоги до розміру кроку, покладайтесь на одну з багатьох бібліотек, написаних експертами (набір MATLAB - один із прикладів, також SUNDIALS, VODE, DASPK, DASSL, LSODE тощо), які мають адаптивну евристику крокового часу. У посібнику SUNDIALS пояснюються правила прийняття рішень, які вони використовують для визначення розміру часових кроків, необхідних для того, щоб навести приклад правил, які використовуються на практиці.

  2. Знову ж таки, я б використовував бібліотеку з адаптивним кроком часу на практиці, оскільки це ефективніше робити. Однак, якщо ви кодували метод самостійно, використовуючи фіксовані розміри кроків, якщо ви помітили великі коливання або ваше рішення "підірвало", то ви підозрюєте, що ваш крок часу занадто великий, і зменшите його. Повторюйте, поки не отримаєте розумно добре сприйняте числове рішення. У таких підручниках, як Ашер і Петцольд, Хайер і Ваннер, є хороші приклади цього явища.


9

Кращий спосіб розібратися в тому, що для жорсткої проблеми будь-який стабільний явний розрахунок призводить до помилки, значно меншої, ніж потрібна допущена помилка .

Існує багато хороших методів автоматичного виявлення жорсткості за допомогою явних схем, особливо вбудованих пар Runge-Kutta. Див. Наприклад:

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

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


2
Це були документи, з якими я збирався зв’язатись, перш ніж побачити вашу відповідь. +1, звичайно. :) Дозвольте також додати це , це , і нарешті це . Це, безумовно, добре вивчена проблема ...
JM

9

1. Чи можемо ми чисельно виявити жорсткість лише застосовуючи явні методи?

  • [0,10]τ=1 τ

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

    τ=0,1введіть тут опис зображення

    τ=0,1[0,10]

    Отже, чи проблема жорстка? Відповідь НІ ! Тут потрібні невеликі крокові розміри, щоб правильно відтворити коливання розчину .

    у'(т)=-2cosπт,у(0)=1.

  • τ=1

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

    τ=0,1

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

    τ=0,1[0,10]

    Чи ця проблема жорстка? ТАК ! Ми зробили дуже малі кроки, щоб відтворити рішення, яке змінюється дуже повільно. Це нераціонально! Величина тимчасового кроку тут обмежена властивостями стійкості явного Ейлера .

    Ця проблема є

    у'(т)=-2у(т)+гріхт/2,у(0)=1.


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


2. Як визначити максимальний розмір кроків, який дозволяє інтегрувати жорстку задачу з явним методом?

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

[Λ,0]Λ=-1000

[-2,0]τΛτ

τ2|Λ|.

τ1|Λ|,
1/|Λ|<τ2/|Λ|

Звичайно, такий аналіз в основному застосовний для лінійних задач із відомим спектром. Для більш практичних проблем нам слід покластися на чисельні методи виявлення жорсткості (див. Посилання та коментарі в інших відповідях).


Як уже згадувалося в деяких працях, з якими Девід пов'язується, метод живлення для знаходження домінантних власних значень (відповідним чином модифікований) є звичайним вибором для детекторів жорсткості на основі Якобі.
JM
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.