Могу ли я использовать явную схему временного шага для численного определения жесткости ODE?

10

У меня есть ODE:

U'знак равно-1000U+sяN(T)
U(0)знак равно-11000001

Я знаю, что этот конкретный ODE жесток, аналитически. Я также знаю, что если мы используем явный (прямой) шаговый метод времени (Эйлер, Рунге-Кутта, Адамс и т. Д.), Метод должен возвращать очень большие ошибки, если шаг по времени слишком велик. Итак, у меня есть два вопроса:

  1. Так обычно определяются жесткие ОДУ, когда аналитическое выражение для термина ошибки не доступно или не выводится?

  2. В общем, когда ODE жесткое, как определить «достаточно маленький» временной шаг?

Пол
источник
Существуют стандартные методы определения жесткости с использованием явных методов. Я размещаю этот комментарий здесь, потому что может быть трудно найти мой более подробный ответ далеко ниже.
Дэвид Кетчон

Ответы:

6

Чтобы ответить на ваши вопросы:

  1. Насколько я знаю, на практике, если для явных методов требуются чрезвычайно малые временные шаги относительно вашей временной шкалы интереса (см. Ответы на этот вопрос о том, что значит для ODE быть жестким ), чтобы получить точные результаты, то для В любом случае, ваша проблема жесткая. Чтобы определить требования к размеру шага, положитесь на одну из множества библиотек, написанных экспертами (одним из примеров является пакет MATLAB, также SUNDIALS, VODE, DASPK, DASSL, LSODE и т. Д.), Которые имеют адаптивную эвристику шагового времени. Руководство SUNDIALS объясняет правила принятия решений, которые они используют, чтобы определить размер временных шагов, которые выполняет пакет, чтобы дать вам пример правил, которые используются на практике.

  2. Опять же, на практике я бы использовал библиотеку с адаптивным шагом по времени, потому что это более эффективно. Однако, если вы сами кодировали метод, используя фиксированные размеры шагов, если вы заметили большие колебания или ваше решение «взорвалось», то вы бы заподозрили, что ваш временной шаг был слишком большим, и сократили бы его. Повторяйте до тех пор, пока не получите разумное численное решение. В учебниках, таких как Ашер, Петцольд, Хайрер и Ваннер, есть хорошие примеры этого явления.

Джефф Оксберри
источник
9

Лучший способ взглянуть на это состоит в том, что для сложной задачи любое стабильное явное вычисление приводит к ошибке, которая намного меньше, чем требуемая погрешность .

Существует много хороших методов автоматического определения жесткости с использованием явных схем, особенно встроенных пар Рунге-Кутта. Смотрите, например:

Во втором примере Фалейчика, когда размер шага уменьшается, можно увидеть резкое резкое уменьшение погрешности до уровней, намного ниже типичного требуемого допуска при пересечении стабильного порога временного шага. Таким образом, хороший оценщик ошибок действительно показал бы жесткость проблемы. В первой задаче ошибка, полученная при стабильном размере шага, будет находиться в диапазоне типичного требуемого допуска, что указывает на нежесткость.

Вследствие этого следует отметить, что любая проблема становится негибкой, если требуется достаточно строгий допуск на ошибку.

Дэвид Кетчесон
источник
2
Это были документы, на которые я собирался сослаться, прежде чем увидел твой ответ. +1, конечно. :) Позвольте мне также добавить это , это и, наконец, это . Это определенно хорошо изученная проблема ...
JM
9

1. Можем ли мы численно определить жесткость, просто применяя явные методы?

  • [0,10]τ=1 τ

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

    τ=0.1введите описание изображения здесь

    τзнак равно0,1[0,10]

    Итак, проблема жесткая? Ответ НЕТ ! Небольшой размер шага здесь необходим для правильного воспроизведения колебаний решения .

    Y'(T)знак равно-2созπT,Y(0)знак равно1.

  • τзнак равно1

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

    τзнак равно0,1

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

    τзнак равно0,1[0,10]

    Эта проблема жесткая? ДА ! Мы сделали очень маленькие шаги, чтобы воспроизвести решение, которое меняется очень медленно. Это иррационально! Величина временного шага здесь ограничена свойствами устойчивости явного Эйлера .

    Эта проблема

    Y'(T)знак равно-2Y(T)+грехT/2,Y(0)знак равно1.


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


2. Как определить максимальный размер шага, который позволяет интегрировать жесткую задачу с явным методом?

Если вы используете какой-то явный решатель черного ящика с автоматическим пошаговым управлением, вам ничего не нужно делать: программа адаптирует требуемый размер шага адаптивно.

[Λ,0]Λзнак равно-1000

[-2,0]τΛτ

τ2|Λ|,

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

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

faleichik
источник
Как упоминалось в некоторых работах Дэвида, с которыми связан Дэвид, степенной метод определения доминантных собственных значений (соответственно измененный) является обычным выбором для якобианских детекторов жесткости.
JM