Метод Эйлера - Euler method
В математика и вычислительная наука, то Метод Эйлера (также называемый прямой метод Эйлера) является первым порядком числовой процедура решения обыкновенные дифференциальные уравнения (ODE) с заданным Первоначальный значение. Это самый простой явный метод за численное интегрирование обыкновенных дифференциальных уравнений и это самый простой Метод Рунге – Кутты. Метод Эйлера назван в честь Леонард Эйлер, который лечил это в своей книге Institutionum Calculi Integratedis (опубликовано 1768–1870 гг.).[1]
Метод Эйлера - это метод первого порядка, что означает, что локальная ошибка (ошибка на шаг) пропорциональна квадрату размера шага, а глобальная ошибка (ошибка в данный момент времени) пропорциональна размеру шага. Метод Эйлера часто служит основой для построения более сложных методов, например, метод предиктора – корректора.
Неформальное геометрическое описание
Рассмотрим задачу вычисления формы неизвестной кривой, которая начинается в данной точке и удовлетворяет данному дифференциальному уравнению. Здесь дифференциальное уравнение можно представить как формулу, по которой склон из касательная линия к кривой можно вычислить в любой точке кривой, после того как положение этой точки будет вычислено.
Идея состоит в том, что, хотя кривая изначально неизвестна, ее начальная точка, которую мы обозначим известен (см. картинку вверху справа). Тогда из дифференциального уравнения наклон к кривой при можно вычислить, а значит, и касательную.
Сделайте небольшой шаг по касательной до точки На этом небольшом шаге наклон не слишком сильно меняется, поэтому будет близко к кривой. Если мы сделаем вид, что все еще на кривой, те же рассуждения, что и для точки выше можно использовать. После нескольких шагов ломаная кривая вычисляется. В общем, эта кривая не отклоняется слишком далеко от исходной неизвестной кривой, и ошибку между двумя кривыми можно сделать небольшой, если размер шага достаточно мал и интервал вычислений конечен:[2]
Выберите значение для размера каждого шага и установить . Теперь один шаг метода Эйлера от к является:[3]
Значение является приближением решения ОДУ в момент времени : . Метод Эйлера явный, т.е. решение является явной функцией за .
Хотя метод Эйлера интегрирует ОДУ первого порядка, любое ОДУ порядка N можно представить в виде системы ОДУ первого порядка: для обработки уравнения
- ,
введем вспомогательные переменные и получим эквивалентное уравнение:
Это система первого порядка по переменной и может быть обработана методом Эйлера или, фактически, любой другой схемой для систем первого порядка.[4]
Пример
Учитывая проблему начального значения
мы хотели бы использовать метод Эйлера для аппроксимации .[5]
Используя размер шага равный 1 (час = 1)
Метод Эйлера
поэтому сначала мы должны вычислить . В этом простом дифференциальном уравнении функция определяется . У нас есть
Выполнив вышеуказанный шаг, мы нашли наклон линии, касательной к кривой решения в точке . Напомним, что наклон определяется как изменение делится на изменение , или же .
Следующим шагом будет умножение указанного выше значения на размер шага. , который мы здесь принимаем равным единице:
Поскольку размер шага - это изменение , когда мы умножаем размер шага и наклон касательной, мы получаем изменение ценить. Затем это значение добавляется к начальному value, чтобы получить следующее значение, которое будет использоваться для вычислений.
Вышеуказанные шаги следует повторить, чтобы найти , и .
Из-за повторяющегося характера этого алгоритма может быть полезно организовать вычисления в виде диаграммы, как показано ниже, чтобы избежать ошибок.
0 1 0 1 1 1 2 1 2 1 2 1 2 4 2 4 2 4 1 4 8 3 8 3 8 1 8 16
Вывод этого вычисления заключается в том, что . Точное решение дифференциального уравнения есть , так . Хотя приближение метода Эйлера в данном конкретном случае было не очень точным, в частности, из-за большого размера шага значения , его поведение качественно правильное, как видно из рисунка.
Пример кода MATLAB
Чисто; clc; Закрыть('все');y0 = 1;t0 = 0;час = 1; % попытка: h = 0,01tn = 4; % равно: t0 + h * n, где n - количество шагов[т, у] = Эйлер(t0, y0, час, tn);участок(т, у, 'b');% точное решение (y = e ^ t):тт = (t0:0.001:tn);гг = exp(тт);держать('на');участок(тт, гг, 'р');держать('выключенный');легенда('Эйлер', 'Точный');функция [t, y] = Эйлер (t0, y0, h, tn) fprintf('% 10s% 10s% 10s% 15s n', 'я', 'yi', 'ти', 'ф (йи, ти)'); fprintf('% 10d% + 10.2f% + 10.2f% + 15.2f n', 0, y0, t0, ж(y0, t0)); т = (t0:час:tn)'; у = нули(размер(т)); у(1) = y0; за i = 1: 1: длина (t) - 1 у(я + 1) = у(я) + час * ж(у(я), т(я)); fprintf('% 10d% + 10.2f% + 10.2f% + 15.2f n', я, у(я + 1), т(я + 1), ж(у(я + 1), т(я + 1))); конецконец% в этом случае f (y, t) = f (y)функцияdydt =ж(у, т)dydt = у;конец% ВЫХОД:% i yi ti f (yi, ti)% 0 +1.00 +0.00 +1.00% 1 +2.00 +1.00 +2.00% 2 +4.00 +2.00 +4.00% 3 +8.00 +3.00 +8.00% 4 +16.00 +4.00 +16.00% ПРИМЕЧАНИЕ: Код также выводит сравнительный график
Пример кода R
Ниже приведен код примера в Язык программирования R.
# ============# РЕШЕНИЕ# y '= y, где y' = f (t, y)# тогда:ж <- функция(ти,у) у# НАЧАЛЬНЫЕ ЗНАЧЕНИЯ:t0 <- 0y0 <- 1час <- 1tn <- 4# Метод Эйлера: определение функцииЭйлер <- функция(t0, y0, час, tn, dy.dt) { # dy.dt: производная функция # t последовательность: тт <- seq(t0, tn, к=час) # таблица с количеством строк, равным tt элементов: таблица <- data.frame(ти=тт) таблица$йи <- y0 # Инициализирует yi с y0 таблица$Dy.dt [1] <- dy.dt(таблица$ти [1],y0) # производная за (я в 2:Nrow(таблица)) { таблица$yi [i] <- таблица$йи [я-1] + час*таблица$Dy.dt [i-1] # Для следующей итерации: таблица$Dy.dt [i] <- dy.dt(таблица$ти [я],таблица$yi [i]) } возвращаться(таблица)}# Метод Эйлера: применение функциир <- Эйлер(t0, y0, час, tn, ж)rownames(р) <- 0:(Nrow(р)-1) # совпадать с индексом n# Точное решение для этого случая: y = exp (t)# добавлен как дополнительный столбец к rр$у <- exp(р$ти)# ТАБЛИЦА с результатами:Распечатать(р)участок(р$ти, р$у, тип="л", Col="красный", lwd=2)линии(р$ти, р$йи, Col="синий", lwd=2)сетка(Col="чернить")легенда("верх", легенда = c("Точный", «Эйлер»), lwd=2, Col = c("красный", "синий"))# ВЫХОД:## ti yi Dy.dt y# 0 0 1 1 1.000000# 1 1 2 2 2.718282# 2 2 4 4 7.389056# 3 3 8 8 20.085537# 4 4 16 16 54.598150# ПРИМЕЧАНИЕ: Код также выводит график сравнения
Использование других размеров шага
Как было предложено во введении, метод Эйлера более точен, если размер шага меньше. В таблице ниже показан результат с разными размерами шага. Верхняя строка соответствует примеру из предыдущего раздела, а вторая строка проиллюстрирована на рисунке.
размер шага результат метода Эйлера ошибка 1 16.00 38.60 0.25 35.53 19.07 0.1 45.26 9.34 0.05 49.56 5.04 0.025 51.98 2.62 0.0125 53.26 1.34
Ошибка, записанная в последнем столбце таблицы, представляет собой разницу между точным решением при и приближение Эйлера. В нижней части таблицы размер шага составляет половину размера шага в предыдущей строке, а ошибка также составляет примерно половину ошибки в предыдущей строке. Это говорит о том, что ошибка примерно пропорциональна размеру шага, по крайней мере, для довольно малых значений размера шага. В целом это верно и для других уравнений; см. раздел Глобальная ошибка усечения Больше подробностей.
Другие методы, такие как метод средней точки также показано на рисунках, ведут себя более благоприятно: глобальная ошибка метода средней точки примерно пропорциональна квадрат размера шага. По этой причине метод Эйлера называется методом первого порядка, а метод средней точки - методом второго порядка.
Мы можем экстраполировать из приведенной выше таблицы, что размер шага, необходимый для получения ответа, верного с точностью до трех десятичных знаков, составляет приблизительно 0,00001, что означает, что нам нужно 400 000 шагов. Такое большое количество шагов влечет за собой большие вычислительные затраты. По этой причине люди обычно используют альтернативные методы более высокого порядка, такие как Методы Рунге – Кутты или же линейные многоступенчатые методы, особенно если требуется высокая точность.[6]
Вывод
Метод Эйлера можно получить разными способами. Во-первых, это геометрическое описание выше.
Другая возможность - рассмотреть Расширение Тейлора функции вокруг :
Дифференциальное уравнение утверждает, что . Если его подставить в разложение Тейлора и игнорировать квадратичные члены и члены более высокого порядка, возникает метод Эйлера.[7] Разложение Тейлора используется ниже для анализа ошибки, допущенной методом Эйлера, и его можно расширить для получения Методы Рунге – Кутты.
Близко родственный вывод - замена форвардного конечная разница формула для производной,
в дифференциальном уравнении . Опять же, это дает метод Эйлера.[8] Аналогичное вычисление приводит к метод средней точки и обратный метод Эйлера.
Наконец, можно проинтегрировать дифференциальное уравнение из к и применить основная теорема исчисления получить:
Теперь аппроксимируем интеграл левой метод прямоугольника (только с одним прямоугольником):
Комбинируя оба уравнения, мы снова получаем метод Эйлера.[9] Эту мысль можно продолжить, чтобы прийти к различным линейные многоступенчатые методы.
Ошибка локального усечения
В локальная ошибка усечения метода Эйлера - это ошибка, сделанная за один шаг. Это разница между численным решением после одного шага, , а точное решение в момент времени . Численное решение дается формулой
Для точного решения воспользуемся разложением Тейлора, упомянутым в разделе Вывод над:
Локальная ошибка усечения (LTE), вносимая методом Эйлера, определяется разницей между этими уравнениями:
Этот результат действителен, если имеет ограниченную третью производную.[10]
Это показывает, что для небольших , локальная ошибка усечения примерно пропорциональна . Это делает метод Эйлера менее точным (для малых ), чем другие методы высшего порядка, такие как Методы Рунге-Кутты и линейные многоступенчатые методы, для которого локальная ошибка усечения пропорциональна большей степени размера шага.
Несколько иную формулировку локальной ошибки усечения можно получить, используя форму Лагранжа для остаточного члена в Теорема Тейлора. Если имеет непрерывную вторую производную, то существует такой, что
В приведенных выше выражениях для ошибки вторая производная неизвестного точного решения можно заменить выражением, содержащим правую часть дифференциального уравнения. Действительно, из уравнения который
Глобальная ошибка усечения
В глобальная ошибка усечения ошибка в фиксированное время , после сколь угодно большого количества шагов, которые необходимо предпринять методам, чтобы достичь этого времени из начального момента. Глобальная ошибка усечения - это совокупный эффект локальных ошибок усечения, совершаемых на каждом этапе.[13] Количество ступеней легко определяется как , что пропорционально , а ошибка, совершаемая на каждом шаге, пропорциональна (см. предыдущий раздел). Таким образом, следует ожидать, что глобальная ошибка усечения будет пропорциональна .[14]
Это интуитивное рассуждение можно уточнить. Если решение имеет ограниченную вторую производную и является Липшицева непрерывная во втором аргументе, то глобальная ошибка усечения (GTE) ограничена
куда является верхней границей второй производной от на заданном интервале и постоянная Липшица .[15]
Точная форма этой границы не имеет большого практического значения, так как в большинстве случаев оценка значительно переоценивает фактическую ошибку, допущенную методом Эйлера.[16] Важно то, что он показывает, что глобальная ошибка усечения (приблизительно) пропорциональна . По этой причине метод Эйлера называется методом первого порядка.[17]
Численная стабильность
Метод Эйлера также можно численно неустойчивый, особенно для жесткие уравнения, что означает, что численное решение становится очень большим для уравнений, в которых нет точного решения. Это можно проиллюстрировать с помощью линейного уравнения
Точное решение , которая спадает до нуля при . Однако если применить к этому уравнению метод Эйлера с размером шага , то численное решение качественно неверно: оно колеблется и растет (см. рисунок). Вот что значит быть нестабильным. Если используется меньший размер шага, например , то численное решение действительно затухает до нуля.
Если применить метод Эйлера к линейному уравнению , то численное решение неустойчиво, если произведение находится за пределами региона
показано справа. Эта область называется (линейной) регион стабильности.[18] В этом примере равно −2,3, поэтому, если тогда которое находится вне области устойчивости, и поэтому численное решение неустойчиво.
Это ограничение, наряду с медленной сходимостью ошибки с час- означает, что метод Эйлера используется нечасто, за исключением простого примера численного интегрирования.
Ошибки округления
Обсуждение до сих пор игнорировало последствия ошибка округления. В ногу п метода Эйлера ошибка округления примерно равна величине εуп где ε - машина эпсилон. Предполагая, что все ошибки округления примерно одинакового размера, объединенная ошибка округления в N шаги примерно Nεу0 если все ошибки указывают в одном направлении. Поскольку количество шагов обратно пропорционально размеру шага час, полная ошибка округления пропорциональна ε / час. В действительности, однако, крайне маловероятно, что все ошибки округления указывают в одном направлении. Если вместо этого предполагается, что ошибки округления являются независимыми случайными величинами, то ожидаемая общая ошибка округления пропорциональна .[19]
Таким образом, для чрезвычайно малых значений размера шага ошибка усечения будет небольшой, но эффект ошибки округления может быть большим. Большей части эффекта ошибки округления можно легко избежать, если компенсированное суммирование используется в формуле метода Эйлера.[20]
Модификации и расширения
Простая модификация метода Эйлера, которая устраняет проблемы устойчивости, отмеченные в предыдущем разделе, - это обратный метод Эйлера:
Он отличается от (стандартного или прямого) метода Эйлера тем, что функция оценивается в конечной точке шага, а не в начальной точке. Обратный метод Эйлера - это неявный метод, что означает, что формула обратного метода Эйлера имеет с обеих сторон, поэтому при применении обратного метода Эйлера мы должны решить уравнение. Это удорожает реализацию.
Другие модификации метода Эйлера, способствующие устойчивости, дают экспоненциальный метод Эйлера или полунеявный метод Эйлера.
Более сложные методы позволяют достичь более высокого порядка (и большей точности). Одна из возможностей - использовать больше оценок функций. Это иллюстрируется метод средней точки о котором уже упоминалось в этой статье:
- .
Это приводит к семье Методы Рунге – Кутты.
Другая возможность - использовать больше прошлых значений, как показано двухэтапным методом Адамса – Башфорта:
Это приводит к семье линейные многоступенчатые методы. Существуют и другие модификации, в которых используются методы сжатия данных для минимизации использования памяти.[21]
В популярной культуре
В фильме Скрытые фигуры, Кэтрин Гобл прибегает к методу Эйлера при расчете повторного входа космонавта Джон Гленн с околоземной орбиты.[22]
Смотрите также
- Метод Кранка – Николсона
- Градиентный спуск аналогично использует конечные шаги, чтобы найти минимум функций
- Список методов Рунге-Кутта
- Линейный многоступенчатый метод
- Численное интегрирование (для вычисления определенных интегралов)
- Численные методы решения обыкновенных дифференциальных уравнений
Примечания
- ^ Мясник 2003, п. 45; Хайрер, Норсетт и Ваннер, 1993 г., п. 35 год
- ^ Аткинсон 1989, п. 342; Мясник 2003, п. 60
- ^ Мясник 2003, п. 45; Хайрер, Норсетт и Ваннер, 1993 г., п. 36
- ^ Мясник 2003, п. 3; Хайрер, Норсетт и Ваннер, 1993 г., п. 2
- ^ Смотрите также Аткинсон 1989, п. 344
- ^ Хайрер, Норсетт и Ваннер, 1993 г., п. 40
- ^ Аткинсон 1989, п. 342; Хайрер, Норсетт и Ваннер, 1993 г., п. 36
- ^ Аткинсон 1989, п. 342
- ^ Аткинсон 1989, п. 343
- ^ Мясник 2003, п. 60
- ^ Аткинсон 1989, п. 342
- ^ Stoer & Bulirsch, 2002 г., п. 474
- ^ Аткинсон 1989, п. 344
- ^ Мясник 2003, п. 49
- ^ Аткинсон 1989, п. 346; Лакоба 2012, уравнение (1.16)
- ^ Изерлес 1996, п. 7
- ^ Мясник 2003, п. 63
- ^ Мясник 2003, п. 70; Изерлес 1996, п. 57
- ^ Мясник 2003, стр. 74–75
- ^ Мясник 2003, стр. 75–78
- ^ Unni, M. P .; Chandra, M. G .; Кумар, А. А. (март 2017 г.). «Сокращение памяти для численного решения дифференциальных уравнений с использованием сжатия». 13-й Международный коллоквиум IEEE по приложениям обработки сигналов (CSPA), 2017 г.: 79–84. Дои:10.1109 / CSPA.2017.8064928. ISBN 978-1-5090-1184-1. S2CID 13082456.
- ^ Хан, Амина. «Познакомьтесь с математиком« Скрытых фигур », который помог отправить американцев в космос». Лос-Анджелес Таймс. Получено 12 февраля 2017.
Рекомендации
- Аткинсон, Кендалл А. (1989). Введение в численный анализ (2-е изд.). Нью-Йорк: Джон Уайли и сыновья. ISBN 978-0-471-50023-0.
- Ascher, Uri M .; Петцольд, Линда Р. (1998). Компьютерные методы решения обыкновенных дифференциальных и дифференциально-алгебраических уравнений. Филадельфия: Общество промышленной и прикладной математики. ISBN 978-0-89871-412-8.
- Мясник, Джон С. (2003). Численные методы решения обыкновенных дифференциальных уравнений.. Нью-Йорк: Джон Уайли и сыновья. ISBN 978-0-471-96758-3.
- Хайрер, Эрнст; Норсетт, Сиверт Пол; Ваннер, Герхард (1993). Решение обыкновенных дифференциальных уравнений I: нежесткие задачи. Берлин, Нью-Йорк: Springer-Verlag. ISBN 978-3-540-56670-0.
- Изерлес, Арье (1996). Первый курс численного анализа дифференциальных уравнений. Издательство Кембриджского университета. ISBN 978-0-521-55655-2.
- Стоер, Йозеф; Булирш, Роланд (2002). Введение в численный анализ (3-е изд.). Берлин, Нью-Йорк: Springer-Verlag. ISBN 978-0-387-95452-3.
- Лакоба, Тарас И. (2012), Простой метод Эйлера и его модификации (PDF) (Конспект лекций для MATH334), Университет Вермонта, получено 29 февраля 2012
- Унни, М. П. (2017). «Сокращение памяти для численного решения дифференциальных уравнений с использованием сжатия». 13-й Международный коллоквиум по обработке сигналов и ее приложениям (CSPA), 2017 г.. IEEE CSPA. С. 79–84. Дои:10.1109 / CSPA.2017.8064928. ISBN 978-1-5090-1184-1. S2CID 13082456.
внешняя ссылка
- СМИ, связанные с Метод Эйлера в Wikimedia Commons
- Реализации метода Эйлера на разных языках к Код Розетты
- «Метод Эйлера», Энциклопедия математики, EMS Press, 2001 [1994]