Оглавление
Л 07   Л 08   Л 09   Л 10   Л 11   Л 12   Л 13

Лекция 10.
Численные методы интегрирования
дифференциальных уравнений.
Метод Эйлера

Пусть нам известна входная динамическая последовательность X (входной сигнал) и модель (способ преобразования входного сигнала в выходной сигнал). Рассматривается задача определения выходного сигнала y(t) (см. рис. 10.1).

[ Рис. 10.1. Структурная модель динамической системы с одним входом и одним выходом ]
Рис. 10.1. Структурная модель динамической системы
с одним входом и одним выходом

Модель динамической системы может быть представлена дифференциальным уравнением. Основное уравнение динамики:

y' = f(x(t), y(t), t).

Известны начальные условия в нулевой момент времени t0: y(t0), x(t0). Чтобы определить выходной сигнал, заметим, что по определению производной:

[ Формула 01 ]

Нам известно положение системы в точке «1», требуется определить положение системы в точке «2». Точки отделены друг от друга расстоянием Δt (рис. 10.2). То есть расчет поведения системы производится по шагам. Из точки «1» мы скачком (дискретно) переходим в точку «2», расстояние между точками по оси t называется шагом расчета Δt.

[ Рис. 10.2. Иллюстрация расчета будущего состояния системы методом Эйлера на одном шаге ]
Рис. 10.2. Иллюстрация расчета будущего состояния системы
методом Эйлера на одном шаге

Тогда:

[ Формула 02 ]

или

[ Формула 03 ]

Последняя формула называется формулой Эйлера.

Очевидно, чтобы узнать состояние системы в будущем y(t + Δt), надо к настоящему состоянию системы y(t) прибавить изменение Δy, прошедшее за время Δt.

будущее = настоящее + изменение
будущее = настоящее + скорость · шаг

Рассмотрим еще раз это важное соотношение, выведя его из геометрических соображений (рис. 10.3).

[ Рис. 10.3. Геометрическая иллюстрация метода Эйлера ]
Рис. 10.3. Геометрическая иллюстрация метода Эйлера

Пусть A — точка, в которой состояние системы известно. Это «настоящее» состояние системы.

В точке A к траектории движения системы проведем касательную. Касательная — это производная функции f(x(t), y(t), t) по переменной t. Производную в точке всегда легко вычислить, достаточно подставить известные переменные (в момент «Настоящее» они известны) в формулу y' = f(x(t), y(t), t).

Заметим, что, по определению, производная связана с углом наклона касательной: y' = tg(α), значит, угол α легко вычислить (α = arctg(y' )) и провести касательную.

Проведем касательную до пересечения с линией t + Δt. Момент t + Δt соответствует «будущему» состоянию системы. Проведем линию параллельно оси t от точки A до пересечения с линией t + Δt. Линии образуют прямоугольный треугольник ABC, один катет которого равен Δt (известен). Известен также угол α. Тогда второй катет в прямоугольном треугольнике ABC равен: a = Δt · tg(α). Теперь легко вычислить ординату точки B. Она состоит из двух отрезков — y(t) и a. Ордината символизирует положение системы в точке y(t + Δt). То есть y(t + Δt) = y(t) + a или далее y(t + Δt) = y(t) + Δt · tg(α) или, подставляя дальше, имеем: y(t + Δt) = y(t) + Δt · y' и, наконец, y(t + Δt) = y(t) + Δt · f(x(t), y(t), t). Снова мы получили формулу Эйлера (из геометрических соображений).

Эта формула может дать точные результаты только при очень малых Δt (говорят при Δt –> 0). При Δt≠0 формула дает расхождение между истинным значением y и расчетным, равное ε, поэтому в ней должен стоять знак приближенного равенства, либо она должна быть записана так:

y(t + Δt) = y(t) + Δt · f(x(t), y(t), t) + ε.

И в самом деле. Взгляните еще раз на рис. 10.3. Будем мысленно сдвигать линию t + Δt влево (фактически, будем приближать значение Δt к нулю). Как нетрудно видеть, расстояние BB* = ε, — то есть ошибка! — будет сокращаться. В пределе (при Δt –> 0) значение ошибки ε будет равно нулю.

Итак, заменяя реальную кривую прямой (касательной) на отрезке Δt, мы вносим в решение ошибку, попадая в результате не в точку «2» (см. рис. 10.2), а рядом, в точку «3». Очевидно, что этот численный метод на каждом шаге имеет погрешность расчета ε.

Из рисунка видно, что чем меньше взять величину Δt, тем меньше будет ошибка расчета ε. То есть для расчета поведения системы на сколько-нибудь продолжительном отрезке времени (например, от t0 до tk), чтобы уменьшить ошибку на каждом шаге, шаги Δt делают по возможности малыми. Для достижения точки tk отрезок (tk – t0) делится на отрезки длиной Δt; таким образом, всего получится N = (tk – t0)/Δt шагов. В результате расчета придется формулу Эйлера применить для каждого шага, то есть N раз. Но следует иметь в виду, что ошибки εi на каждом i-ом шаге (в простейшем случае) складываются, а общая ошибка быстро накапливается (см. рис. 10.4). И в этом состоит существенный недостаток данного метода. Хотя с помощью этого метода можно получить (в численном виде) решение любого дифференциального уравнения (в том числе и неразрешимого аналитически). Уменьшая шаг, мы получаем более точные решения, но при этом не следует забывать, что увеличение числа шагов ведет к вычислительным затратам и снижению быстродействия. Кроме того, при большом числе итераций в расчет вносится другая существенная погрешность из-за ограниченной точности вычислительных машин и ошибок округления.

[ Рис. 10.4. Нарастание суммарной ошибки в методе Эйлера на ряде шагов ]
Рис. 10.4. Нарастание суммарной ошибки в методе Эйлера на ряде шагов

Задача 1. Дано дифференциальное уравнение y' = 2ty. Задано начальное положение системы: y(0) = 1. Требуется найти y(t), то есть поведение системы на интервале времени t от 0 до 1.

Аналитический способ решения задачи 1

y' = 2ty.

Методом разделения переменных найдем:

y'/y = 2t

[ Формула 04 ]

Будем интегрировать от 0 до ti, тогда согласно правилам интегрирования имеем:

[ Формула 05 ]

[ Формула 06 ]

[ Формула 07 ]

[ Формула 08 ]

Полученное аналитическое решение характеризуется тем, что оно является абсолютно точным, но если уравнение окажется сколько-нибудь сложным, то решение не будет найдено вовсе. Аналитический путь решения не универсален.

Численный способ решения задачи 1

Численный способ решения предполагает, что расчет будет вестись по формуле Эйлера на ряде последовательных шагов. На каждом шаге решение имеет свою ошибку (см. рис. 10.2), поскольку на каждом шаге кривая заменяется прямым отрезком.

При алгоритмической реализации расчет реализуется циклом, в котором изменяется t (счетчик t) и y:

t := t + Δt
y := y + 2 · t · y · Δt

Блок-схема при реализации метода на компьютере показана на рис. 10.5.

[ Рис. 10.5. Блок-схема реализации метода Эйлера ]
Рис. 10.5. Блок-схема реализации метода Эйлера

В реализации Стратум запись будет выглядеть так (наличие символа «~» при t):

t := t + Δt
y := y + 2 · ~t · y · Δt

Будем искать значение y рассмотренного ранее примера в численном виде на промежутке от T = 0 до T = 1. Возьмем число шагов n = 10, тогда шаг приращения Δt составит: Δt = (1 – 0)/n = (1 – 0)/10 = 0.1.

Таблица 10.1.
Численный расчет уравнения методом Эйлера
и сравнение результата с точным решением на каждом шаге
i ti yi = yi – 1 + y'i – 1 · Δt y'i = 2ti · yi Δyi = y'i · Δt yi + 1 = yi + Δyi yточн. = exp(ti2)
0 0.0 1 0 0 1 1
1 0.1 1 0.2 0.02 1.02 1.0101
2 0.2 1.02 0.408 0.0408 1.0608 1.0408
3 0.3 1.061 0.636 0.0636 1.1246 1.0942
4 0.4 1.124 0.900 0.0900 1.2140 1.1735
5 0.5 1.214 1.214 0.1214 1.3354 1.2840
6 0.6 1.336 1.603 0.1603 1.4963 1.4333
7 0.7 1.496 2.095 0.2095 1.7055 1.6323
8 0.8 1.706 2.729 0.2729 1.9789 1.8965
9 0.9 1.979 3.561 0.3561 2.3351 2.2479
10 1.0 2.335 4.669 0.4669 2.8019 2.7183

Обратите внимание на то, что рассчитанное численно значение (yi + 1) отличается от точного (yточн.), и погрешность (разница столбцов yi + 1 и yточн.) в процессе расчета нарастает подобно тому, как было показано на рис. 10.4.

Теперь подсчитаем относительную погрешность σ для расчетного значения y(1), полученного численно, в сравнении с теоретическим точным yтеор. по следующей формуле:

σ = (1 – yрасч./yтеор.) · 100%

и сравним σ при различных значениях Δt.

Если будем менять значение шага Δt, например, уменьшать шаг, то относительная погрешность расчета тоже будет уменьшаться. Вот что получится при вычислении значения y(1) с разными значениями шага (см. табл. 10.2).

Таблица 10.2.
Зависимость погрешности
расчета от размера шага Δt
Δt yрасч.(1) yтеор.(1) σ
1/10 2.3346 2.7183 14%
1/20 2.5107 2.7183 8%
1/100 2.6738 2.7183 2%

Как видим, с уменьшением шага приращения Δt уменьшается величина относительной погрешности, а значит, повышается точность расчета.

Обратите внимание, что изменение шага в 10 раз (с 1/10 до 1/100) ведет к изменению величины ошибки примерно тоже в 10 раз (с 14% до 2%). При изменении шага в 100 раз ошибка примерно уменьшится тоже в 100 раз. Иными словами размер шага и ошибка для метода Эйлера связаны линейно. Хотите уменьшить в 10 раз ошибку — уменьшайте в 10 раз шаг и увеличивайте соответственно в 10 раз количество вычислений. Этот факт в математике принято обозначать символом ε = Ot), а метод Эйлера называют методом первого порядка точности.

Поскольку в методе Эйлера ошибка достаточно велика и от шага к шагу накапливается, а точность пропорциональна количеству вычислений, то метод Эйлера обычно применяют для грубых расчетов, для оценки поведения системы в принципе. Для точных количественных расчетов применяют более точные методы.


Примечания

  1. Каждый численный метод обладает точностью, поскольку результат отличается от теоретического. Точность метода зависит от величины шага. Различные методы имеют различную точность. Порядок зависимости точности от величины шага обозначают как O(h). У метода Эйлера первый порядок точности, зависимость ошибки от величины шага линейна.
  2. Если при уменьшении шага предел yn стремится к значению yтеор., то говорят, что метод обладает сходимостью. Исследователей интересует скорость сходимости метода.
  3. Метод должен быть устойчив. Устойчивость связана с некоторой критической величиной шага. При проявлении неустойчивости наблюдается полное искажение качественной картины расчета, «разболтка» результата.
  4. При выборе метода рекомендуется сначала добиться устойчивости, а внутри области устойчивости — сходимости результата. Устойчивость обеспечивает качественную картину. Сходимость обеспечивает количественный результат (см. также рис. 10.10).

Изложенное в пп. 1-4 поясним на примере.

Пример. Пусть

[ Формула 09 ]

Качественно это уравнения описывают процесс теплообмена между двумя телами, температуры которых в некоторый момент времени обозначим как A и B. Вообще A и B — переменные, меняющиеся во времени t. Найти поведение системы означает, что надо найти, как будут меняться температуры A(t) и B(t).

Интуитивно ясно, что при начальной разнице температур A = 8 и B = 5 температуры тел постепенно со временем должны выровняться, так как более горячее тело будет отдавать энергию более холодному, и его температура будет уменьшаться, а более холодное тело будет принимать энергию от более горячего, и его температура будет увеличиваться. Процесс теплообмена закончится (то есть изменения прекратятся) тогда, когда температуры двух тел станут одинаковыми.

Проведем несколько расчетов поведения A(t) и B(t) с разной величиной шага Δt.

Будем брать различную величину шага Δt и находить соответствующие значения A и B во времени по следующим формулам Эйлера:

Aнов. = Aпред. + (Bпред. – Aпред.) · Δt,
Bнов. = Bпред. + (Aпред. – Bпред.) · Δt.

Расчет при Δt = 2 (табл. 10.3).

Таблица 10.3.
Изменение температур
тел при численном
расчете с шагом 2

шага
t A B
0 0 8 5
1 2 2 11
2 4 20 –7

Наблюдается явление «разболтки» (см. рис. 10.6). Неустойчивое решение. Из физических соображений очевидно, что так вести себя два тела в процессе теплообмена не могут.

[ Рис. 10.6. Система ведет себя качественно неверно. Решение неустойчиво ]
Рис. 10.6. Система ведет себя качественно
неверно. Решение неустойчиво

Расчет при Δt = 1 (табл. 10.4).

Таблица 10.4.
Изменение температур
тел при численном
расчете с шагом 1

шага
t A B
0 0 8 5
1 1 5 8
2 2 8 5

Наблюдается поведение решения системы на границе устойчивости (см. рис. 10.7).

[ Рис. 10.7. Система ведет себя качественно неверно. Решение находится на грани устойчивости ]
Рис. 10.7. Система ведет себя качественно
неверно. Решение находится на грани устойчивости

Расчет при Δt = 0.5 (табл. 10.5).

Таблица 10.5.
Изменение температур
тел при численном
расчете с шагом 0.5

шага
t A B
0 0 8 5
1 0.5 6.5 6.5
2 1.0 6.5 6.5

Решение устойчиво, соответствует правильной качественной картине (см. рис. 10.8). Температуры тел постепенно сближаются, становятся со временем одинаковыми. Но решение пока имеет большую погрешность.

[ Рис. 10.8. Система ведет себя качественно правильно. Решение (поведение системы) имеет большую погрешность ]
Рис. 10.8. Система ведет себя качественно правильно.
Решение (поведение системы) имеет большую погрешность

Расчет при Δt = 0.1 (табл. 10.6).

Таблица 10.6.
Изменение температур
тел при численном
расчете с шагом 0.1

шага
t A B
0 0 8 5
1 0.1 7.7 5.3
2 0.2 7.46 5.54
3 0.3 7.27 5.73
4 0.4 7.12 5.88
5 0.5 7.00 6.00

Решение устойчиво. Решение более точно (см. рис. 10.9).

[ Рис. 10.9. Система ведет себя качественно верно. Количественно решение более точно ]
Рис. 10.9. Система ведет себя качественно верно.
Количественно решение более точно

Роль изменения величины шага иллюстрирует рис. 10.10.

[ Рис. 10.10. Связь величины шага расчета с устойчивостью метода и его точностью (на примере) ]
Рис. 10.10. Связь величины шага расчета с устойчивостью метода и его точностью (на примере)

[ ] Лекция 09. Оценка качества модели Лекция 11. Построение модели динамической… [ ]
Л 07   Л 08   Л 09   Л 10   Л 11   Л 12   Л 13